43 velocityDisplacementMotionSolver,
52 Foam::velocityDisplacementMotionSolver::pointDisplacementBoundaryTypes()
const 60 if (
isA<fixedValuePointPatchField<vector>>(pmUbf[patchI]))
72 Foam::velocityDisplacementMotionSolver::velocityDisplacementMotionSolver
79 displacementMotionSolverPtr_()
87 "pointVelocityDisplacement",
93 pointDisplacementBoundaryTypes()
98 displacementMotionSolverPtr_.reset
100 dynamic_cast<displacementMotionSolver*>
110 dict.name() +
"Coeffs",
135 return displacementMotionSolverPtr_->curPoints();
143 const scalar deltaT(
mesh().time().deltaTValue());
148 displacementMotionSolverPtr_->pointDisplacement()
152 mesh().
points() - displacementMotionSolverPtr_->points0()
156 pointMotionU().correctBoundaryConditions();
161 forAll(pointMotionU().boundaryField(), patchI)
165 pointMotionU().boundaryField()[patchI]
169 patchField.patchInternalField()*deltaT
170 + patchField.patchInternalField(displacementOld);
174 displacementMotionSolverPtr_->solve();
177 pointMotionU().primitiveFieldRef() =
178 (displacement.primitiveField() - displacementOld)/deltaT;
186 displacementMotionSolverPtr_->movePoints(
p);
197 displacementMotionSolverPtr_->updateMesh(mpm);
Virtual base class for velocity motion solver.
~velocityDisplacementMotionSolver()
Destructor.
virtual void updateMesh(const mapPolyMesh &)
Update local data for topology changes.
GeometricBoundaryField< vector, pointPatchField, pointMesh > Boundary
Type of boundary fields.
const dictionary & coeffDict() const
Const access to the coefficients dictionary.
virtual void movePoints(const pointField &)
Update geometry.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Macros for easy insertion into run-time selection tables.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
virtual const pointField & points() const
Return raw points.
#define forAll(list, i)
Loop across all elements in list.
static const char *const typeName
Typename for Field.
virtual tmp< pointField > curPoints() const
Return point location obtained from the current motion field.
static IOobject points0IO(const polyMesh &mesh)
Return IO object for points0.
const Time & time() const noexcept
Return time registry.
const Mesh & mesh() const noexcept
Return mesh.
static word timeName(const scalar t, const int precision=precision_)
Return a time name for the given scalar time value formatted with the given precision.
const word & constant() const noexcept
Return constant name.
defineTypeNameAndDebug(combustionModel, 0)
List< word > wordList
List of word.
pointField points0(pointIOField(IOobject("points", mesh.time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, IOobject::NO_REGISTER)))
virtual void solve()
Solve for motion.
Internal::FieldType & primitiveFieldRef(const bool updateAccessTime=true)
Return a reference to the internal field values.
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
static autoPtr< displacementMotionSolver > New(const word &solverTypeName, const polyMesh &, const IOdictionary &, const pointVectorField &pointDisplacement, const pointIOField &points0)
Select constructed from polyMesh, dictionary and components.
virtual void updateMesh(const mapPolyMesh &)
Update topology.
pointVectorField & pointMotionU()
Return reference to the point motion velocity field.
Mesh consisting of general polyhedral cells.
const Type * isA(const U &obj)
Attempt dynamic_cast to Type.
const polyMesh & mesh() const
Return reference to mesh.
A class for managing temporary objects.
virtual void movePoints(const pointField &)
Update local data for geometry changes.
Defines the attributes of an object for which implicit objectRegistry management is supported...
A primitive field of type <T> with automated input and output.
addToRunTimeSelectionTable(functionObject, pointHistory, dictionary)