38#include "surfaceInterpolate.H"
64Foam::dynamicMotionSolverFvMeshAMI::dynamicMotionSolverFvMeshAMI
91 bool changeRequired =
false;
98 changeRequired = cycAmiPtr->createAMIFaces() || changeRequired;
106 cycAcmiPtr->cyclicAMIPolyPatch::createAMIFaces()
120Foam::dynamicMotionSolverFvMeshAMI::dynamicMotionSolverFvMeshAMI
136 std::move(allNeighbour),
163 Info<<
"1 --- patch:" << fvp.patch().name()
164 <<
" area:" <<
gSum(fvp.magSf()) <<
endl;
169 pointField newPoints(motionPtr_->curPoints());
174 bool changeRequired =
false;
180 <<
"pre-topology change: patch " <<
pp.name()
185 changeRequired =
pp.changeTopology() || changeRequired;
193 polyTopo.movePoints(newPoints);
202 pp.setTopology(polyTopo);
237 if (map().hasMotionPoints())
239 movePoints(map().preMotionPoints());
251 Uptr->correctBoundaryConditions();
266 Info<<
"2 --- patch:" << fvp.patch().name()
267 <<
" area:" <<
gSum(fvp.magSf()) <<
endl;
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
const polyBoundaryMesh & pbm
void correctBoundaryConditions()
Correct boundary field.
Defines the attributes of an object for which implicit objectRegistry management is supported,...
label size() const noexcept
The number of elements in the list.
const Field< point_type > & faceAreas() const
Return face area vectors for patch.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Addressing for all faces on surface of mesh. Can either be read from polyMesh or from triSurface....
Abstract base class for geometry and/or topology changing fvMesh.
virtual bool init(const bool doInit)
Initialise all non-demand-driven data.
static autoPtr< dynamicFvMesh > New(const IOobject &io)
Select, construct and return the dynamicFvMesh.
The dynamicMotionSolverFvMeshAMI.
virtual bool init(const bool doInit)
Initialise all non-demand-driven data.
virtual bool update()
Update the mesh for both mesh motion and topology change.
const motionSolver & motion() const
Return the motionSolver.
virtual bool movePoints()
Avoid masking surfaceInterpolation method.
virtual void updateMesh(const mapPolyMesh &mpm)
Update mesh corresponding to the given map.
virtual void movePoints(const pointField &)
Move points, returns volumes swept by faces in motion.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Virtual base class for mesh motion solver.
static autoPtr< motionSolver > New(const polyMesh &)
Select constructed from polyMesh.
Type * getObjectPtr(const word &name, const bool recursive=false) const
Return non-const pointer to the object of the given Type, using a const-cast to have it behave like a...
A polyBoundaryMesh is a polyPatch list with registered IO, a reference to the associated polyMesh,...
label nNonProcessor() const
The number of patches before the first processor patch.
virtual const faceList & faces() const
Return raw faces.
bool moving() const noexcept
Is mesh moving.
bool topoChanging() const noexcept
Is mesh topology changing.
virtual const pointField & points() const
Return raw points.
A patch is a list of labels that address the faces in the global face list.
Direct mesh changes based on v1.3 polyTopoChange syntax.
void movePoints(const pointField &newPoints)
Move all points. Incompatible with other topology changes.
autoPtr< mapPolyMesh > changeMesh(polyMesh &mesh, const labelUList &patchMap, const bool inflate, const bool syncParallel=true, const bool orderCells=false, const bool orderPoints=false)
Inplace changes mesh without change of patches.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
#define DebugInfo
Report an information message using Foam::Info.
Namespace for handling debugging switches.
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
GeometricField< vector, fvsPatchField, surfaceMesh > surfaceVectorField
bool returnReduceOr(const bool value, const int communicator=UPstream::worldComm)
Perform logical (or) MPI Allreduce on a copy. Uses UPstream::reduceOr.
Type gSum(const FieldField< Field, Type > &f)
GeometricField< vector, fvPatchField, volMesh > volVectorField
List< label > labelList
A List of labels.
messageStream Info
Information stream (stdout output on master, null elsewhere).
List< face > faceList
List of faces.
T returnReduce(const T &value, BinaryOp bop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm)
Perform reduction on a copy, using specified binary operation.
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)
vectorField pointField
pointField is a vectorField.