Loading...
Searching...
No Matches
geometricElementTransformPointSmoother Class Reference

Geometric Element Transformation Method (GETMe) point smoother. Points are moved in a direction normal to the face of the dual element. This tends to orthogonalise elements. This method can "push" as well as "pull". More...

#include <geometricElementTransformPointSmoother.H>

Inheritance diagram for geometricElementTransformPointSmoother:
Collaboration diagram for geometricElementTransformPointSmoother:

Public Member Functions

 TypeName ("geometricElementTransform")
 Runtime type information.
 geometricElementTransformPointSmoother (const polyMesh &mesh, const dictionary &dict)
 Construct from a dictionary and a mesh.
virtual ~geometricElementTransformPointSmoother ()=default
 Destructor.
virtual void calculate (const labelList &facesToMove, const pointField &oldPoints, const pointField &currentPoints, const pointField &faceCentres, const vectorField &faceAreas, const pointField &cellCentres, const scalarField &cellVolumes, vectorField &pointDisplacement) const
 Calculate the point displacements.
Public Member Functions inherited from pointSmoother
 TypeName ("pointSmoother")
 Runtime type information.
 declareRunTimeSelectionTable (autoPtr, pointSmoother, dictionary,(const polyMesh &mesh, const dictionary &dict),(mesh, dict))
 pointSmoother (const polyMesh &mesh, const dictionary &)
 Construct from a dictionary and a point displacement field.
virtual ~pointSmoother ()=default
 Destructor.
const polyMeshmesh () const noexcept
 Access the mesh.
void update (const labelList &facesToMove, const pointField &oldPoints, const pointField &currentPoints, 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.
void update (const labelList &facesToMove, const pointField &oldPoints, const pointField &currentPoints, const polyMeshGeometry &meshGeometry, pointVectorField &pointDisplacement, const bool correctBCs=true) const
 Update the point displacements and apply constraints.
virtual void calculate (const labelList &facesToMove, const pointField &oldPoints, const pointField &currentPoints, const polyMeshGeometry &meshGeometry, vectorField &pointDisplacement) const
 Update the point displacements.
virtual tmp< scalarFieldfaceQuality (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?
virtual tmp< scalarFieldcellQuality (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. Move to motionSolver level?

Static Public Member Functions

static tmp< scalarFieldcellQuality (const polyMesh &mesh, const pointField &currentPoints)
Static Public Member Functions inherited from pointSmoother
static autoPtr< pointSmoother > New (const word &pointSmootherType, const polyMesh &mesh, const dictionary &dict)
 Construct given type.
static autoPtr< pointSmoother > New (const polyMesh &mesh, const dictionary &dict)
 Construct with type looked up from dictionary.

Additional Inherited Members

Protected Member Functions inherited from pointSmoother
bool isInternalOrProcessorFace (const label faceI) const
 Test if the given face is internal or on a processor boundary.
bitSet pointsToMove (const labelList &facesToMove, const bool moveInternalFaces) const
 Get list of the points to be moved.
template<class weightType>
void reset (const labelList &facesToMove, Field< weightType > &weights, vectorField &pointDisplacement, const bool resetInternalFaces=true) const
 Reset the relevant weights and displacements to zero.
template<class weightType>
void average (const labelList &facesToMove, Field< weightType > &weights, vectorField &pointDisplacement) const
 Average the displacements using the weights provided.

Detailed Description

Geometric Element Transformation Method (GETMe) point smoother. Points are moved in a direction normal to the face of the dual element. This tends to orthogonalise elements. This method can "push" as well as "pull".

The original references for this method only formulate it for a limited variety of specific polyhedra. This version is written for arbitrary polyhedra, and most closely follows the following reference:

    "Fast smoothing of mixed volume meshes based on the effective geometric
    element transformation method"
    Dimitris Vartziotis, Joachim Wipper,
    Comput. Methods Appl. Mech. Engrg. 201-204 (2012) 65-81

This implementation does not include the various specific measures employed in the referred article to improve the quality of types of irregular polyhedra. It also does not use the same quality criteria as these are only suitable for cell vertices with exactly three connecting edges.

Source files

Definition at line 69 of file geometricElementTransformPointSmoother.H.

Constructor & Destructor Documentation

◆ geometricElementTransformPointSmoother()

geometricElementTransformPointSmoother ( const polyMesh & mesh,
const dictionary & dict )

Construct from a dictionary and a mesh.

Definition at line 104 of file geometricElementTransformPointSmoother.C.

References dict, and pointSmoother::mesh().

Here is the call graph for this function:

◆ ~geometricElementTransformPointSmoother()

virtual ~geometricElementTransformPointSmoother ( )
virtualdefault

Destructor.

References pointSmoother::mesh().

Here is the call graph for this function:

Member Function Documentation

◆ TypeName()

TypeName ( "geometricElementTransform" )

Runtime type information.

References dict, and pointSmoother::mesh().

Here is the call graph for this function:

◆ calculate()

void calculate ( const labelList & facesToMove,
const pointField & oldPoints,
const pointField & currentPoints,
const pointField & faceCentres,
const vectorField & faceAreas,
const pointField & cellCentres,
const scalarField & cellVolumes,
vectorField & pointDisplacement ) const
virtual

◆ cellQuality()

Foam::tmp< Foam::scalarField > cellQuality ( const polyMesh & mesh,
const pointField & currentPoints )
static

The documentation for this class was generated from the following files: