47#ifndef medialAxisMeshMover_H
48#define medialAxisMeshMover_H
60template <
class DataType>
67class medialAxisMeshMover
69 public externalDisplacementMeshMover
132 static bool unmarkExtrusion
134 const label patchPointi,
140 void syncPatchDisplacement
148 void handleFeatureAngleLayerTerminations
151 const bitSet& isMasterPoint,
161 void findIsolatedRegions
163 const scalar minCosLayerTermination,
164 const bool detectExtrusionIsland,
165 const bitSet& isMasterPoint,
166 const bitSet& isMasterEdge,
177 void calculateDisplacement
189 const label nAllowableErrors,
194 medialAxisMeshMover(
const medialAxisMeshMover&) =
delete;
197 void operator=(
const medialAxisMeshMover&) =
delete;
231 const label nAllowableErrors,
Info<< nl;Info<< "Write faMesh in vtk format:"<< nl;{ vtk::uindirectPatchWriter writer(aMesh.patch(), fileName(aMesh.time().globalPath()/vtkBaseFileName));writer.writeGeometry();globalIndex procAddr(aMesh.nFaces());labelList cellIDs;if(UPstream::master()) { cellIDs.resize(procAddr.totalSize());for(const labelRange &range :procAddr.ranges()) { auto slice=cellIDs.slice(range);slice=identity(range);} } writer.beginCellData(4);writer.writeProcIDs();writer.write("cellID", cellIDs);writer.write("area", aMesh.S().field());writer.write("normal", aMesh.faceAreaNormals());writer.beginPointData(1);writer.write("normal", aMesh.pointAreaNormals());Info<< " "<< writer.output().name()<< nl;}{ vtk::lineWriter writer(aMesh.points(), aMesh.edges(), fileName(aMesh.time().globalPath()/(vtkBaseFileName+"-edges")));writer.writeGeometry();writer.beginCellData(4);writer.writeProcIDs();{ Field< scalar > fld(faMeshTools::flattenEdgeField(aMesh.magLe(), true))
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Variant of pointEdgePoint with some transported additional data. Templated on the transported data ty...
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
pointVectorField & pointDisplacement()
Return reference to the point motion displacement field.
Utility functions for mesh motion solvers.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Given a displacement moves the mesh by scaling the displacement back until there are no more mesh err...
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
List< word > wordList
List of word.
GeometricField< scalar, pointPatchField, pointMesh > pointScalarField
List< label > labelList
A List of labels.
GeometricField< vector, pointPatchField, pointMesh > pointVectorField
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
vectorField pointField
pointField is a vectorField.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.