54Foam::laplacianMotionSolver::laplacianMotionSolver
74 fixedValuePointPatchVectorField::
typeName
88 pointMotionU_.boundaryField().types()
92 coeffDict().
found(
"interpolation")
136 diffusivityPtr_->correct();
139 for (label iter = 0; iter < nIters_; ++iter)
141 Info<<
"Iteration " << iter <<
endl;
147 * diffusivityPtr_->operator()(),
149 "laplacian(diffusivity,cellMotionU)"
153 scalar residual =
mag(dEqn.solve().initialResidual());
156 fvMesh_.time().printExecutionTime(
Info);
159 if (residual < tolerance_)
161 Info<<
"\n***Reached mesh movement convergence limit at"
162 <<
" iteration " << iter <<
"***\n\n";
171 pointMotionU_.boundaryFieldRef().updateCoeffs();
172 auto& cellMotionUbf = cellMotionU_.boundaryFieldRef();
174 forAll(cellMotionU_.boundaryField(), pI)
200 diffusivityPtr_.reset(
nullptr);
204 coeffDict().
lookup(
"diffusivity")
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
Internal::FieldType & primitiveFieldRef(const bool updateAccessTime=true)
Return a reference to the internal field values.
const Internal::FieldType & primitiveField() const noexcept
Return a const-reference to the internal field values.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
@ READ_IF_PRESENT
Reading is optional [identical to LAZY_READ].
@ AUTO_WRITE
Automatically write from objectRegistry::writeObject().
Defines the attributes of an object for which implicit objectRegistry management is supported,...
const Time & time() const noexcept
Return Time associated with the objectRegistry.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
T get(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a T. FatalIOError if not found, or if the number of tokens is incorrect.
SolverPerformance< Type > solve(const dictionary &)
Solve returning the solution statistics.
Base class for fvMesh based motionSolvers.
const fvMesh & fvMesh_
The fvMesh to be moved.
fvMotionSolver(const polyMesh &)
Construct from polyMesh.
Similar to velocityLaplacian but iteratively solves the mesh displacement PDEs to account for non-ort...
volVectorField cellMotionU_
virtual tmp< pointField > curPoints() const
Return point location obtained from the current motion field.
autoPtr< motionDiffusivity > diffusivityPtr_
Diffusivity used to control the motion.
scalar tolerance_
Residual threshold.
label nIters_
Number of laplacian iterations per solution step.
void setBoundaryConditions()
Set boundary conditions of cellMotionU based on pointMotionU.
autoPtr< motionInterpolation > interpolationPtr_
Interpolation used to transfer cell displacement to the points.
pointVectorField pointMotionU_
virtual void movePoints(const pointField &)
Update local data for geometry changes.
virtual void updateMesh(const mapPolyMesh &)
Update the mesh corresponding to given map.
virtual void solve()
Solve for motion.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Abstract base class for cell-centre mesh motion diffusivity.
static autoPtr< motionDiffusivity > New(const fvMesh &mesh, Istream &mdData)
Select null constructed.
Base class for interpolation of cell displacement fields, generated by fvMotionSolvers,...
Virtual base class for mesh motion solver.
const polyMesh & mesh() const
Return reference to mesh.
static autoPtr< motionSolver > New(const polyMesh &)
Select constructed from polyMesh.
motionSolver(const polyMesh &mesh)
Construct from polyMesh.
virtual void twoDCorrectPoints(pointField &) const
const dictionary & coeffDict() const
Const access to the coefficients dictionary.
Mesh representing a set of points created from polyMesh.
Mesh consisting of general polyhedral cells.
virtual const pointField & points() const
Return raw points.
A patch is a list of labels that address the faces in the global face list.
Lookup type of boundary radiation properties.
A class for managing temporary objects.
T & ref() const
Return non-const reference to the contents of a non-null managed pointer.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Calculate the matrix for the laplacian of the field.
const std::string patch
OpenFOAM patch number as a std::string.
tmp< fvMatrix< Type > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
const dimensionSet dimViscosity
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
const dimensionSet dimless
Dimensionless.
messageStream Info
Information stream (stdout output on master, null elsewhere).
const word GlobalIOList< Tuple2< scalar, vector > >::typeName("scalarVectorTable")
Ostream & endl(Ostream &os)
Add newline and flush stream.
const Type * isA(const U &obj)
Attempt dynamic_cast to Type.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
fvMatrix< vector > fvVectorMatrix
static constexpr const zero Zero
Global zero (0).
vectorField pointField
pointField is a vectorField.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
fvPatchField< vector > fvPatchVectorField
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.
#define forAll(list, i)
Loop across all elements in list.