motionSmoother Class Reference

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

Inheritance diagram for motionSmoother:
Collaboration diagram for motionSmoother:

Public Member Functions

 ClassName ("motionSmoother")
 
 motionSmoother (polyMesh &, pointMesh &, indirectPrimitivePatch &pp, const labelList &adaptPatchIDs, const dictionary &paramDict)
 Construct from mesh, patches to work on and smoothing parameters. More...
 
 motionSmoother (polyMesh &, indirectPrimitivePatch &pp, const labelList &adaptPatchIDs, const pointVectorField &, const dictionary &paramDict)
 Construct from mesh, patches to work on and smoothing parameters and. More...
 
- Public Member Functions inherited from motionSmootherData
 motionSmootherData (const pointMesh &)
 Construct read. More...
 
 motionSmootherData (const pointVectorField &)
 Construct from pointDisplacement. More...
 
pointVectorFielddisplacement ()
 Reference to displacement field. More...
 
const pointVectorFielddisplacement () const
 Reference to displacement field. More...
 
const pointScalarFieldscale () const
 Reference to scale field. More...
 
const pointFieldoldPoints () const
 Starting mesh position. More...
 
- Public Member Functions inherited from motionSmootherAlgo
 ClassName ("motionSmootherAlgo")
 
 motionSmootherAlgo (polyMesh &, pointMesh &, indirectPrimitivePatch &pp, pointVectorField &displacement, pointScalarField &scale, pointField &oldPoints, const labelList &adaptPatchIDs, const dictionary &paramDict)
 Construct from mesh, patches to work on and smoothing parameters. More...
 
 motionSmootherAlgo (const motionSmootherAlgo &)=delete
 Disallow default bitwise copy construction. More...
 
 ~motionSmootherAlgo ()
 Destructor. More...
 
const polyMeshmesh () const
 Reference to mesh. More...
 
const pointMeshpMesh () const
 Reference to pointMesh. More...
 
const indirectPrimitivePatchpatch () const
 Reference to patch. More...
 
const labelListadaptPatchIDs () const
 Patch labels that are being adapted. More...
 
const dictionaryparamDict () const
 
void correct ()
 Take over existing mesh position. More...
 
void setDisplacementPatchFields ()
 Set patch fields on displacement to be consistent with. More...
 
void setDisplacement (pointField &patchDisp)
 
void correctBoundaryConditions (pointVectorField &) const
 Special correctBoundaryConditions which evaluates fixedValue. More...
 
void modifyMotionPoints (pointField &newPoints) const
 Apply optional point constraint (2d correction) More...
 
tmp< pointFieldcurPoints () const
 Get the current points (oldPoints+scale*displacement) More...
 
scalar setErrorReduction (const scalar)
 Set the errorReduction (by how much to scale the displacement. More...
 
bool scaleMesh (const labelList &checkFaces, const bool smoothMesh=true, const label nAllow=0)
 Move mesh with given scale. Return true if mesh ok or has. More...
 
bool scaleMesh (const labelList &checkFaces, const List< labelPair > &baffles, const bool smoothMesh=true, const label nAllow=0)
 Move mesh (with baffles) with given scale. More...
 
bool scaleMesh (const labelList &checkFaces, const List< labelPair > &baffles, const dictionary &paramDict, const dictionary &meshQualityDict, const bool smoothMesh=true, const label nAllow=0)
 Move mesh with externally provided mesh constraints. More...
 
void movePoints ()
 Update for new mesh geometry. More...
 
void topoChange ()
 Update for new mesh topology. More...
 
template<class Type >
void smooth (const PointField< Type > &fld, const scalarField &edgeWeight, PointField< Type > &newFld) const
 Fully explicit smoothing of fields (not positions) More...
 
void operator= (const motionSmootherAlgo &)=delete
 Disallow default bitwise assignment. More...
 
template<class Type >
Foam::tmp< Foam::PointField< Type > > avg (const PointField< Type > &fld, const scalarField &edgeWeight) const
 

Additional Inherited Members

- Static Public Member Functions inherited from motionSmootherAlgo
static void setDisplacementPatchFields (const labelList &patchIDs, pointVectorField &pointDisplacement)
 Set patch fields on patchIDs to be consistent with. More...
 
static void setDisplacement (const labelList &patchIDs, const indirectPrimitivePatch &pp, pointField &patchDisp, pointVectorField &displacement)
 Set displacement field from displacement on patch points. More...
 
static bool checkMesh (const bool report, const polyMesh &mesh, const dictionary &dict, labelHashSet &wrongFaces)
 Check mesh with mesh settings in dict. Collects incorrect faces. More...
 
static bool checkMesh (const bool report, const polyMesh &mesh, const dictionary &dict, const labelList &checkFaces, labelHashSet &wrongFaces)
 Check (subset of mesh) with mesh settings in dict. More...
 
static bool checkMesh (const bool report, const polyMesh &mesh, const dictionary &dict, const labelList &checkFaces, const List< labelPair > &baffles, labelHashSet &wrongFaces)
 Check (subset of mesh including baffles) with mesh settings. More...
 
- Protected Attributes inherited from motionSmootherData
pointVectorField displacement_
 Displacement field. More...
 
pointScalarField scale_
 Scale factor for displacement. More...
 
pointField oldPoints_
 Starting mesh position. More...
 

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 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 89 of file motionSmoother.H.

Constructor & Destructor Documentation

◆ motionSmoother() [1/2]

motionSmoother ( polyMesh mesh,
pointMesh pMesh,
indirectPrimitivePatch pp,
const labelList adaptPatchIDs,
const dictionary paramDict 
)

Construct from mesh, patches to work on and smoothing parameters.

Reads displacement field (only boundary conditions used)

Definition at line 38 of file motionSmoother.C.

◆ motionSmoother() [2/2]

motionSmoother ( polyMesh mesh,
indirectPrimitivePatch pp,
const labelList adaptPatchIDs,
const pointVectorField displacement,
const dictionary paramDict 
)

Construct from mesh, patches to work on and smoothing parameters and.

displacementfield (only boundary conditions used)

Definition at line 62 of file motionSmoother.C.

Member Function Documentation

◆ ClassName()

ClassName ( "motionSmoother"  )

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