45 if (
mesh().isInternalFace(faceI))
56 faceI -
mesh().nInternalFaces()
71 const bool moveInternalFaces
76 for (
const label facei : facesToMove)
78 if (moveInternalFaces || !isInternalOrProcessorFace(facei))
80 marker.set(
mesh().faces()[facei]);
88 orEqOp<unsigned int>(),
98 Foam::pointSmoother::pointSmoother
108 if (isA<processorPolyPatch>(
pp))
110 processorPatchIDs_.
insert(
pp.index());
121 const word& pointSmootherType,
126 Info<<
"Selecting pointSmoother type " << pointSmootherType <<
endl;
128 auto* ctorPtr = dictionaryConstructorTable(pointSmootherType);
137 *dictionaryConstructorTablePtr_
170 const bool correctBCs
183 pointDisplacement.
ref()
221 tmp<scalarField> tortho
257 const auto& faceOrtho = tfaceOrtho();
261 auto& ortho = tortho.ref();
268 auto& o = ortho[own[facei]];
269 o =
min(o, faceOrtho[facei]);
273 auto& o = ortho[nei[facei]];
274 o =
min(o, faceOrtho[facei]);
errorManipArg< error, int > exit(error &err, const int errNo=1)
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...
virtual const labelList & faceNeighbour() const
Return face neighbour.
static FOAM_NO_DANGLING_REFERENCE const pointConstraints & New(const pointMesh &mesh, Args &&... args)
Get existing or create MeshObject registered with typeName.
void constrainDisplacement(pointVectorField &displacement, const bool overrideValue=false) const
Apply boundary conditions (single-patch constraints),.
Ostream & endl(Ostream &os)
Add newline and flush stream.
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.
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.
bool insert(const Key &key)
Insert a new entry, not overwriting existing entries.
bitSet pointsToMove(const labelList &facesToMove, const bool moveInternalFaces) const
Get list of the points to be moved.
#define forAll(list, i)
Loop across all elements in list.
vectorField pointField
pointField is a vectorField.
const polyMesh & mesh() const noexcept
Access the mesh.
const polyBoundaryMesh & boundaryMesh() const noexcept
Return boundary mesh.
A class for handling words, derived from Foam::string.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
static autoPtr< pointSmoother > New(const word &pointSmootherType, const polyMesh &mesh, const dictionary &dict)
Construct given type.
virtual const labelList & faceOwner() const
Return face owner.
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.
static tmp< T > New(Args &&... args)
Construct tmp with forwarding arguments.
label nInternalFaces() const noexcept
Number of internal faces.
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
defineRunTimeSelectionTable(reactionRateFlameArea, dictionary)
defineTypeNameAndDebug(combustionModel, 0)
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.
messageStream Info
Information stream (stdout output on master, null elsewhere)
Internal & ref(const bool updateAccessTime=true)
Same as internalFieldRef()
Field< vector > vectorField
Specialisation of Field<T> for vector.
Mesh consisting of general polyhedral cells.
List< label > labelList
A List of labels.
A class for managing temporary objects.
#define FatalIOErrorInLookup(ios, lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalIOError.
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...
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
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?
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...