Classes | Public Member Functions | Static Public Member Functions | List of all members
motionSmootherAlgo Class Reference

Given a displacement moves the mesh by scaling the displacement back until there are no more mesh errors. More...

Inheritance diagram for motionSmootherAlgo:
Inheritance graph
[legend]

Public Member Functions

 ClassName ("motionSmootherAlgo")
 
 motionSmootherAlgo (polyMesh &, pointMesh &, indirectPrimitivePatch &pp, pointVectorField &displacement, pointScalarField &scale, pointField &oldPoints, const labelList &adaptPatchIDs, const dictionary &paramDict, const bool dryRun=false)
 
 ~motionSmootherAlgo ()
 
const polyMeshmesh () const
 
const pointMeshpMesh () const
 
const indirectPrimitivePatchpatch () const
 
const labelListadaptPatchIDs () const
 
const dictionaryparamDict () const
 
pointVectorFieldpointDisplacement ()
 
const pointVectorFieldpointDisplacement () const
 
void correct ()
 
void setDisplacementPatchFields ()
 
void setDisplacement (pointField &patchDisp)
 
void correctBoundaryConditions (pointVectorField &) const
 
void modifyMotionPoints (pointField &newPoints) const
 
tmp< pointFieldcurPoints () const
 
scalar setErrorReduction (const scalar)
 
bool scaleMesh (labelList &checkFaces, const bool smoothMesh=true, const label nAllow=0)
 
bool scaleMesh (labelList &checkFaces, const List< labelPair > &baffles, const bool smoothMesh=true, const label nAllow=0)
 
bool scaleMesh (labelList &checkFaces, const List< labelPair > &baffles, const dictionary &paramDict, const dictionary &meshQualityDict, const bool smoothMesh=true, const label nAllow=0)
 
void movePoints ()
 
void updateMesh ()
 
template<class Type >
void smooth (const GeometricField< Type, pointPatchField, pointMesh > &fld, const scalarField &edgeWeight, GeometricField< Type, pointPatchField, pointMesh > &newFld) const
 
template<class Type >
Foam::tmp< Foam::GeometricField< Type, Foam::pointPatchField, Foam::pointMesh > > avg (const GeometricField< Type, pointPatchField, pointMesh > &fld, const scalarField &edgeWeight) const
 

Static Public Member Functions

static void setDisplacementPatchFields (const labelList &patchIDs, pointVectorField &pointDisplacement)
 
static void setDisplacement (const labelList &patchIDs, const indirectPrimitivePatch &pp, pointField &patchDisp, pointVectorField &displacement)
 
static bool checkMesh (const bool report, const polyMesh &mesh, const dictionary &dict, labelHashSet &wrongFaces, const bool dryRun=false)
 
static bool checkMesh (const bool report, const polyMesh &mesh, const dictionary &dict, const labelList &checkFaces, labelHashSet &wrongFaces, const bool dryRun=false)
 
static bool checkMesh (const bool report, const polyMesh &mesh, const dictionary &dict, const labelList &checkFaces, const List< labelPair > &baffles, labelHashSet &wrongFaces, const bool dryRun=false)
 
static bool checkMesh (const bool report, const dictionary &dict, const polyMeshGeometry &, const pointField &, const labelList &checkFaces, labelHashSet &wrongFaces, const bool dryRun=false)
 
static bool checkMesh (const bool report, const dictionary &dict, const polyMeshGeometry &, const pointField &, const labelList &checkFaces, const List< labelPair > &baffles, labelHashSet &wrongFaces, const bool dryRun=false)
 
template<class Type >
static Type get (const dictionary &dict, const word &keyword, const bool noExit, enum keyType::option matchOpt, const Type &defaultValue=Zero)
 

Detailed Description

Given a displacement moves the mesh by scaling the displacement back until there are no more mesh errors.

Holds displacement field (read upon construction since need boundary conditions) and scaling factor and optional patch number on which to scale back displacement.

E.g.

    // Construct iterative mesh mover.
    motionSmoother meshMover(mesh, labelList(1, patchi));

    // Set desired displacement:
    meshMover.displacement() = ..

    for (label iter = 0; iter < maxIter; iter++)
    {
        if (meshMover.scaleMesh(true))
        {
            Info<< "Successfully moved mesh" << endl;
            return true;
        }
    }
Note
  • Shared points (parallel): a processor can have points which are part of pp on another processor but have no pp itself (i.e. it has points and/or edges but no faces of pp). Hence we have to be careful when e.g. synchronising displacements that the value from the processor which has faces of pp get priority. This is currently handled in setDisplacement by resetting the internal displacement to zero on coupled points that are coupled to patch points before doing anything else. The combine operator used will give preference to non-zero values.
  • Various routines take baffles. These are sets of boundary faces that are treated as a single internal face. This is a hack used to apply movement to internal faces.
  • Mesh constraints are looked up from the supplied dictionary. (uses recursive lookup)
Source files

Definition at line 96 of file motionSmootherAlgo.H.

Constructor & Destructor Documentation

◆ motionSmootherAlgo()

motionSmootherAlgo ( polyMesh mesh,
pointMesh pMesh,
indirectPrimitivePatch pp,
pointVectorField displacement,
pointScalarField scale,
pointField oldPoints,
const labelList adaptPatchIDs,
const dictionary paramDict,
const bool  dryRun = false 
)

Definition at line 319 of file motionSmootherAlgo.C.

◆ ~motionSmootherAlgo()

Definition at line 348 of file motionSmootherAlgo.C.

Member Function Documentation

◆ ClassName()

ClassName ( "motionSmootherAlgo"  )

◆ mesh()

const Foam::polyMesh & mesh ( ) const

Definition at line 354 of file motionSmootherAlgo.C.

◆ pMesh()

const Foam::pointMesh & pMesh ( ) const

Definition at line 360 of file motionSmootherAlgo.C.

Referenced by snappySnapDriver::smoothDisplacement().

Here is the caller graph for this function:

◆ patch()

const Foam::indirectPrimitivePatch & patch ( ) const

Definition at line 366 of file motionSmootherAlgo.C.

Referenced by snappySnapDriver::smoothDisplacement().

Here is the caller graph for this function:

◆ adaptPatchIDs()

const Foam::labelList & adaptPatchIDs ( ) const

Definition at line 372 of file motionSmootherAlgo.C.

◆ paramDict()

const Foam::dictionary & paramDict ( ) const

Definition at line 378 of file motionSmootherAlgo.C.

◆ pointDisplacement() [1/2]

pointVectorField& pointDisplacement ( )
inline

Definition at line 335 of file motionSmootherAlgo.H.

Referenced by snappySnapDriver::preSmoothPatch().

Here is the caller graph for this function:

◆ pointDisplacement() [2/2]

const pointVectorField& pointDisplacement ( ) const
inline

Definition at line 341 of file motionSmootherAlgo.H.

◆ correct()

void correct ( )

Definition at line 384 of file motionSmootherAlgo.C.

Referenced by snappySnapDriver::doSnap(), and snappySnapDriver::preSmoothPatch().

Here is the caller graph for this function:

◆ setDisplacementPatchFields() [1/2]

void setDisplacementPatchFields ( const labelList patchIDs,
pointVectorField pointDisplacement 
)
static

◆ setDisplacementPatchFields() [2/2]

void setDisplacementPatchFields ( )

Definition at line 454 of file motionSmootherAlgo.C.

◆ setDisplacement() [1/2]

void setDisplacement ( const labelList patchIDs,
const indirectPrimitivePatch pp,
pointField patchDisp,
pointVectorField displacement 
)
static

◆ setDisplacement() [2/2]

void setDisplacement ( pointField patchDisp)

Definition at line 555 of file motionSmootherAlgo.C.

◆ correctBoundaryConditions()

void correctBoundaryConditions ( pointVectorField displacement) const

◆ modifyMotionPoints()

void modifyMotionPoints ( pointField newPoints) const

◆ curPoints()

Foam::tmp< Foam::pointField > curPoints ( ) const

◆ setErrorReduction()

Foam::scalar setErrorReduction ( const scalar  errorReduction)

Definition at line 691 of file motionSmootherAlgo.C.

Referenced by snappySnapDriver::preSmoothPatch(), and snappySnapDriver::scaleMesh().

Here is the caller graph for this function:

◆ scaleMesh() [1/3]

bool scaleMesh ( labelList checkFaces,
const bool  smoothMesh = true,
const label  nAllow = 0 
)

Definition at line 705 of file motionSmootherAlgo.C.

Referenced by snappySnapDriver::preSmoothPatch(), and snappySnapDriver::scaleMesh().

Here is the caller graph for this function:

◆ scaleMesh() [2/3]

bool scaleMesh ( labelList checkFaces,
const List< labelPair > &  baffles,
const bool  smoothMesh = true,
const label  nAllow = 0 
)

Definition at line 723 of file motionSmootherAlgo.C.

◆ scaleMesh() [3/3]

bool scaleMesh ( labelList checkFaces,
const List< labelPair > &  baffles,
const dictionary paramDict,
const dictionary meshQualityDict,
const bool  smoothMesh = true,
const label  nAllow = 0 
)

◆ movePoints()

void movePoints ( )

Definition at line 681 of file motionSmootherAlgo.C.

◆ updateMesh()

void updateMesh ( )

Definition at line 1026 of file motionSmootherAlgo.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, syncTools::getMasterEdges(), IOobject::name(), Foam::nl, and patches.

Here is the call graph for this function:

◆ checkMesh() [1/5]

bool checkMesh ( const bool  report,
const polyMesh mesh,
const dictionary dict,
labelHashSet wrongFaces,
const bool  dryRun = false 
)
static

Definition at line 455 of file motionSmootherAlgoCheck.C.

References dict, Foam::identity(), and mesh.

Referenced by snappyLayerDriver::doLayers(), snappySnapDriver::doSnap(), and meshRefinement::splitFacesUndo().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ checkMesh() [2/5]

bool checkMesh ( const bool  report,
const polyMesh mesh,
const dictionary dict,
const labelList checkFaces,
labelHashSet wrongFaces,
const bool  dryRun = false 
)
static

Definition at line 29 of file motionSmootherAlgoCheck.C.

References dict, and mesh.

◆ checkMesh() [3/5]

bool checkMesh ( const bool  report,
const polyMesh mesh,
const dictionary dict,
const labelList checkFaces,
const List< labelPair > &  baffles,
labelHashSet wrongFaces,
const bool  dryRun = false 
)
static

◆ checkMesh() [4/5]

bool checkMesh ( const bool  report,
const dictionary dict,
const polyMeshGeometry meshGeom,
const pointField points,
const labelList checkFaces,
labelHashSet wrongFaces,
const bool  dryRun = false 
)
static

Definition at line 475 of file motionSmootherAlgoCheck.C.

References dict, and points.

◆ checkMesh() [5/5]

bool checkMesh ( const bool  report,
const dictionary dict,
const polyMeshGeometry meshGeom,
const pointField points,
const labelList checkFaces,
const List< labelPair > &  baffles,
labelHashSet wrongFaces,
const bool  dryRun = false 
)
static

◆ smooth()

void smooth ( const GeometricField< Type, pointPatchField, pointMesh > &  fld,
const scalarField edgeWeight,
GeometricField< Type, pointPatchField, pointMesh > &  newFld 
) const

Definition at line 226 of file motionSmootherAlgoTemplates.C.

References pointConstraints::constrain(), fld, forAll, and MeshObject< pointMesh, UpdateableMeshObject, pointConstraints >::New().

Referenced by snappySnapDriver::smoothDisplacement().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get()

Type get ( const dictionary dict,
const word keyword,
const bool  noExit,
enum keyType::option  matchOpt,
const Type &  defaultValue = Zero 
)
static

Definition at line 288 of file motionSmootherAlgoTemplates.C.

References dict, Foam::endl(), Foam::FatalIOError, dictionary::name(), and dictionary::readEntry().

Here is the call graph for this function:

◆ avg()

Foam::tmp<Foam::GeometricField<Type, Foam::pointPatchField, Foam::pointMesh> > avg ( const GeometricField< Type, pointPatchField, pointMesh > &  fld,
const scalarField edgeWeight 
) const

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