64Foam::solidBodyDisplacementLaplacianFvMotionSolver::
65solidBodyDisplacementLaplacianFvMotionSolver
86 cellMotionBoundaryTypes<
vector>(pointDisplacement_.boundaryField())
88 pointLocation_(nullptr),
91 coeffDict().
found(
"interpolation")
101 coeffDict().
found(
"frozenPointsZone")
102 ? fvMesh_.pointZones().findZoneID
104 coeffDict().get<
word>(
"frozenPointsZone")
120 Info<<
"solidBodyDisplacementLaplacianFvMotionSolver:" <<
nl
121 <<
" diffusivity : " << diffusivityPtr_().type() <<
nl
122 <<
" frozenPoints zone : " << frozenPointsZone_ <<
endl;
139 Info<<
"solidBodyDisplacementLaplacianFvMotionSolver :"
140 <<
" Read pointVectorField "
142 <<
" to be used for boundary conditions on points."
144 <<
"Boundary conditions:"
145 << pointLocation_().boundaryField().types() <<
endl;
151Foam::solidBodyDisplacementLaplacianFvMotionSolver::
152solidBodyDisplacementLaplacianFvMotionSolver
175 cellMotionBoundaryTypes<
vector>(pointDisplacement_.boundaryField())
177 pointLocation_(nullptr),
180 coeffDict().
found(
"interpolation")
190 coeffDict().
found(
"frozenPointsZone")
191 ? fvMesh_.pointZones().findZoneID
193 coeffDict().get<
word>(
"frozenPointsZone")
209 Info<<
"solidBodyDisplacementLaplacianFvMotionSolver:" <<
nl
210 <<
" diffusivity : " << diffusivityPtr_().type() <<
nl
211 <<
" frozenPoints zone : " << frozenPointsZone_ <<
endl;
228 Info<<
"solidBodyDisplacementLaplacianFvMotionSolver :"
229 <<
" Read pointVectorField "
231 <<
" to be used for boundary conditions on points."
233 <<
"Boundary conditions:"
234 << pointLocation_().boundaryField().types() <<
endl;
252 if (!diffusivityPtr_)
257 coeffDict().
lookup(
"diffusivity")
261 return *diffusivityPtr_;
268 interpolationPtr_->interpolate
284 Info<<
"solidBodyDisplacementLaplacianFvMotionSolver : applying "
285 <<
" boundary conditions on " << pointLocation_().name()
286 <<
" to new point location."
290 pointLocation_().primitiveFieldRef() =
292 + pointDisplacement_.internalField();
294 pointLocation_().correctBoundaryConditions();
297 if (frozenPointsZone_ != -1)
299 const pointZone& pz = fvMesh_.pointZones()[frozenPointsZone_];
303 pointLocation_()[pz[i]] = newPoints[pz[i]];
315 newPoints + pointDisplacement_.primitiveField()
320 if (frozenPointsZone_ != -1)
322 const pointZone& pz = fvMesh_.pointZones()[frozenPointsZone_];
326 curPoints[pz[i]] = newPoints[pz[i]];
330 twoDCorrectPoints(curPoints);
341 movePoints(fvMesh_.points());
343 diffusivity().correct();
344 pointDisplacement_.boundaryFieldRef().updateCoeffs();
353 *diffusivity().
operator()(),
355 "laplacian(diffusivity,cellDisplacement)"
376 diffusivityPtr_.clear();
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
A primitive field of type <T> with automated input and output.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Defines the attributes of an object for which implicit objectRegistry management is supported,...
const word & name() const noexcept
Return the object name.
bool typeHeaderOk(const bool checkType=true, const bool search=true, const bool verbose=true)
Read header (uses typeFilePath to find file) and check its info.
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
static word timeName(const scalar t, const int precision=precision_)
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Virtual base class for displacement motion solver.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
SolverPerformance< Type > solveSegregatedOrCoupled(const dictionary &)
Solve segregated or coupled returning the solution statistics.
const dictionary & solverDict() const
Return the solver dictionary taking into account finalIteration.
const Time & time() const
Return the top-level database.
Base class for fvMesh based motionSolvers.
const fvMesh & fvMesh_
The fvMesh to be moved.
void constrain(fvMatrix< Type > &eqn)
Apply constraints to equation.
void correct(GeometricField< Type, fvPatchField, volMesh > &field)
Apply correction to field.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Abstract base class for cell-centre mesh motion diffusivity.
Base class for interpolation of cell displacement fields, generated by fvMotionSolvers,...
void updateMesh()
Update for new mesh topology.
Virtual base class for mesh motion solver.
Mesh consisting of general polyhedral cells.
Lookup type of boundary radiation properties.
Applies Laplacian displacement solving on top of a transformation of the initial points using a solid...
virtual tmp< pointField > curPoints() const
Return point location obtained from the current motion field.
~solidBodyDisplacementLaplacianFvMotionSolver()
Destructor.
motionDiffusivity & diffusivity()
Return reference to the diffusivity field.
virtual void solve()
Solve for motion.
Base class for defining solid-body motions.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Calculate the matrix for the laplacian of the field.
fvScalarMatrix TEqn(fvm::ddt(T)+fvm::div(phi, T) - fvm::laplacian(alphaEff, T)==radiation->ST(rhoCpRef, T)+fvOptions(T))
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, false)
tmp< fvMatrix< Type > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
const dimensionSet dimViscosity
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
messageStream Info
Information stream (stdout output on master, null elsewhere)
Ostream & endl(Ostream &os)
Add newline and flush stream.
static constexpr const zero Zero
Global zero (0)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
void transformPoints(vectorField &, const septernion &, const vectorField &)
Transform given vectorField of coordinates with the given septernion.
constexpr char nl
The newline '\n' character (0x0a)
#define forAll(list, i)
Loop across all elements in list.
pointField points0(pointIOField(IOobject("points", mesh.time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, false)))
conserve primitiveFieldRef()+