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>


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 ¤tPoints, 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 polyMesh & | mesh () const noexcept |
| Access the mesh. | |
| 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. | |
| void | update (const labelList &facesToMove, const pointField &oldPoints, const pointField ¤tPoints, 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 ¤tPoints, const polyMeshGeometry &meshGeometry, vectorField &pointDisplacement) const |
| Update the point displacements. | |
| 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? | |
| 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. Move to motionSolver level? | |
Static Public Member Functions | |
| static tmp< scalarField > | cellQuality (const polyMesh &mesh, const pointField ¤tPoints) |
| 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. | |
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.
Definition at line 69 of file geometricElementTransformPointSmoother.H.
| 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().

|
virtualdefault |
| TypeName | ( | "geometricElementTransform" | ) |
Runtime type information.
References dict, and pointSmoother::mesh().

|
virtual |
Calculate the point displacements.
Implements pointSmoother.
Definition at line 121 of file geometricElementTransformPointSmoother.C.
References Foam::average(), cellPointConnectivity::cellPointFaces(), cellPointConnectivity::cellPointPoints(), cells, cell::edges(), forAll, HashSet< Key, Hash >::insert(), pointSmoother::isInternalOrProcessorFace(), cell::labels(), Foam::mag(), Foam::max(), pointSmoother::mesh(), mesh, MeshObject< Mesh, MeshObjectType, Type >::New(), nPoints, pFaces, reset(), UList< T >::size(), Foam::sqrt(), and VectorSpace< Form, Cmpt, Ncmpts >::zero.

|
static |
Definition at line 446 of file geometricElementTransformPointSmoother.C.
References fld(), forAll, pointSmoother::mesh(), MeshObject< Mesh, MeshObjectType, Type >::New(), tmp< T >::New(), and tmp< T >::ref().
