39 #ifndef Foam_pointSmoother_H 40 #define Foam_pointSmoother_H 88 const bool moveInternalFaces
92 template <
class weightType>
98 const bool resetInternalFaces =
true 102 template <
class weightType>
139 const word& pointSmootherType,
175 const bool correctBCs =
true 186 const bool correctBCs =
true
const vectorField & faceAreas() const
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Abstract base class for point smoothing methods. Handles parallel communication via reset and average...
const vectorField & cellCentres() const
virtual void calculate(const labelList &facesToMove, const pointField &oldPoints, const pointField ¤tPoints, const pointField &faceCentres, const vectorField &faceAreas, const pointField &cellCentres, const scalarField &cellVolumes, vectorField &pointDisplacement) const =0
Calculate the point displacement.
bitSet pointsToMove(const labelList &facesToMove, const bool moveInternalFaces) const
Get list of the points to be moved.
virtual ~pointSmoother()=default
Destructor.
const polyMesh & mesh() const noexcept
Access the mesh.
Generic templated field type.
A class for handling words, derived from Foam::string.
static autoPtr< pointSmoother > New(const word &pointSmootherType, const polyMesh &mesh, const dictionary &dict)
Construct given type.
declareRunTimeSelectionTable(autoPtr, pointSmoother, dictionary,(const polyMesh &mesh, const dictionary &dict),(mesh, dict))
void update(const labelList &facesToMove, const pointField &oldPoints, const pointField ¤tPoints, const pointField &faceCentres, const vectorField &faceAreas, const pointField &cellCentres, const scalarField &cellVolumes, pointVectorField &pointDisplacement, const bool correctBCs=true) const
Update the point displacements and apply constraints.
Updateable mesh geometry and checking routines.
TypeName("pointSmoother")
Runtime type information.
const scalarField & cellVolumes() const
const vectorField & faceCentres() const
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
bool isInternalOrProcessorFace(const label faceI) const
Test if the given face is internal or on a processor boundary.
void reset(const labelList &facesToMove, Field< weightType > &weights, vectorField &pointDisplacement, const bool resetInternalFaces=true) const
Reset the relevant weights and displacements to zero.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Mesh consisting of general polyhedral cells.
Macros to ease declaration of run-time selection tables.
void average(const labelList &facesToMove, Field< weightType > &weights, vectorField &pointDisplacement) const
Average the displacements using the weights provided.
A class for managing temporary objects.
virtual tmp< scalarField > cellQuality(const pointField &points, const pointField &faceCentres, const vectorField &faceAreas, const pointField &cellCentres, const scalarField &cellVolumes) const
Check element quality: 1 = best, 0 = invalid. Topology from mesh, point locations supplied...
virtual tmp< scalarField > faceQuality(const pointField &points, const pointField &faceCentres, const vectorField &faceAreas, const pointField &cellCentres, const scalarField &cellVolumes) const
Check element quality: 1 = best, 0 = invalid. (also negative?) Topology from mesh, point locations supplied. Move to motionSolver level?