polyTopoChange Class Reference

Direct mesh changes based on v1.3 polyTopoChange syntax. More...

Public Member Functions

 ClassName ("polyTopoChange")
 Runtime type information. More...
 
 polyTopoChange (const label nPatches, const bool strict=true)
 Construct without mesh. Either specify nPatches or use. More...
 
 polyTopoChange (const polyMesh &mesh, const bool strict=true)
 Construct from mesh. Adds all points/face/cells from mesh. More...
 
const DynamicList< point > & points () const
 Points. Shrunk after constructing mesh (or calling of compact()) More...
 
const DynamicList< face > & faces () const
 
const DynamicList< label > & region () const
 
const DynamicList< label > & faceOwner () const
 
const DynamicList< label > & faceNeighbour () const
 
bool pointRemoved (const label pointi) const
 Is point removed? More...
 
bool faceRemoved (const label facei) const
 Is face removed? More...
 
bool cellRemoved (const label celli) const
 Is cell removed? More...
 
void clear ()
 Clear all storage. More...
 
void setCapacity (const label nPoints, const label nFaces, const label nCells)
 Explicitly pre-size the dynamic storage for expected mesh. More...
 
label addPoint (const point &, const label masterPointID, const bool inCell)
 Add point and return new point index. More...
 
void modifyPoint (const label, const point &, const bool inCell)
 Modify coordinate. More...
 
void removePoint (const label, const label)
 Remove point / merge points. More...
 
label addFace (const face &f, const label own, const label nei, const label masterFaceID, const bool flipFaceFlux, const label patchID)
 Add face to cells and return new face index. More...
 
void modifyFace (const face &f, const label facei, const label own, const label nei, const bool flipFaceFlux, const label patchID)
 Modify vertices or cell of face. More...
 
void removeFace (const label, const label)
 Remove face / merge faces. More...
 
label addCell (const label masterCellID)
 Add cell and return new cell index. More...
 
void removeCell (const label, const label)
 Remove cell / merge cells. More...
 
void setNumPatches (const label nPatches)
 Explicitly set the number of patches if construct-without-mesh. More...
 
autoPtr< polyTopoChangeMapchangeMesh (polyMesh &mesh, const bool syncParallel=true, const bool orderCells=false, const bool orderPoints=false)
 Inplace changes mesh without change of patches. More...
 
autoPtr< polyTopoChangeMapmakeMesh (autoPtr< fvMesh > &newMesh, const IOobject &io, const polyMesh &mesh, const bool syncParallel=true, const bool orderCells=false, const bool orderPoints=false)
 Create new mesh with old mesh patches. More...
 

Detailed Description

Direct mesh changes based on v1.3 polyTopoChange syntax.

Instead of recording changes and executing them all in one go (as did v1.3 polyTopoChange) this class actually holds the current points/faces/cells and does the change immediately. It can be asked to compress out all unused points/faces/cells and renumber everything to be consistent.

Note:

  • polyTopoChange can be copied.
  • adding a face using non-existing cells causes all intermediate cells to be added. So always first add cells/points and then faces. (or set strict checking)
  • strict checking:
    • any added/modified face can only use already existing vertices
    • any added face can only use already existing cells
    • no item can be removed more than once.
  • removed cell: cell set to 0 faces.
  • removed face: face set to 0 vertices.
  • removed point: coordinate set to vector::max (vGreat,vGreat,vGreat). Note that this might give problems if this value is used already. To see if point is equal to above value we don't use == (which might give problems with roundoff error) but instead compare the individual component with >.
  • coupled patches: the reorderCoupledFaces routine (borrowed from the couplePatches utility) reorders coupled patch faces and uses the cyclicPolyPatch,processorPolyPatch functionality.
Source files

Definition at line 97 of file polyTopoChange.H.

Constructor & Destructor Documentation

◆ polyTopoChange() [1/2]

polyTopoChange ( const label  nPatches,
const bool  strict = true 
)

Construct without mesh. Either specify nPatches or use.

setNumPatches before trying to make a mesh (makeMesh, changeMesh)

Definition at line 1525 of file polyTopoChange.C.

◆ polyTopoChange() [2/2]

Member Function Documentation

◆ ClassName()

ClassName ( "polyTopoChange"  )

Runtime type information.

◆ points()

const DynamicList<point>& points ( ) const
inline

Points. Shrunk after constructing mesh (or calling of compact())

Definition at line 369 of file polyTopoChange.H.

Referenced by polyTopoChange::polyTopoChange(), addPatchCellLayer::setRefinement(), and duplicatePoints::setRefinement().

Here is the caller graph for this function:

◆ faces()

const DynamicList<face>& faces ( ) const
inline

Definition at line 374 of file polyTopoChange.H.

Referenced by polyTopoChange::polyTopoChange().

Here is the caller graph for this function:

◆ region()

const DynamicList<label>& region ( ) const
inline

Definition at line 379 of file polyTopoChange.H.

◆ faceOwner()

const DynamicList<label>& faceOwner ( ) const
inline

Definition at line 384 of file polyTopoChange.H.

Referenced by polyTopoChange::polyTopoChange().

Here is the caller graph for this function:

◆ faceNeighbour()

const DynamicList<label>& faceNeighbour ( ) const
inline

Definition at line 389 of file polyTopoChange.H.

Referenced by polyTopoChange::polyTopoChange().

Here is the caller graph for this function:

◆ pointRemoved()

bool pointRemoved ( const label  pointi) const
inline

Is point removed?

Definition at line 30 of file polyTopoChangeI.H.

References VectorSpace< Form, Cmpt, Ncmpts >::max, Vector< Cmpt >::x(), Vector< Cmpt >::y(), and Vector< Cmpt >::z().

Here is the call graph for this function:

◆ faceRemoved()

bool faceRemoved ( const label  facei) const
inline

Is face removed?

Definition at line 41 of file polyTopoChangeI.H.

◆ cellRemoved()

bool cellRemoved ( const label  celli) const
inline

Is cell removed?

Definition at line 47 of file polyTopoChangeI.H.

◆ clear()

void clear ( )

Clear all storage.

Definition at line 1677 of file polyTopoChange.C.

◆ setCapacity()

void setCapacity ( const label  nPoints,
const label  nFaces,
const label  nCells 
)

Explicitly pre-size the dynamic storage for expected mesh.

size for if construct-without-mesh

Definition at line 1699 of file polyTopoChange.C.

References nPoints.

◆ addPoint()

Foam::label addPoint ( const point pt,
const label  masterPointID,
const bool  inCell 
)

Add point and return new point index.

Notes:

  • masterPointID can be < 0 (appended points)
  • inCell = false: add retired point (to end of point list)

Definition at line 1723 of file polyTopoChange.C.

Referenced by polyTopoChange::polyTopoChange(), meshCutter::setRefinement(), addPatchCellLayer::setRefinement(), hexRef8::setRefinement(), duplicatePoints::setRefinement(), createShellMesh::setRefinement(), removePoints::setUnrefinement(), and combineFaces::setUnrefinement().

Here is the caller graph for this function:

◆ modifyPoint()

void modifyPoint ( const label  pointi,
const point pt,
const bool  inCell 
)

Modify coordinate.

Notes:

  • inCell = false: add retired point (to end of point list)

Definition at line 1745 of file polyTopoChange.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, and FatalErrorInFunction.

Referenced by edgeCollapser::setRefinement().

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

◆ removePoint()

void removePoint ( const label  pointi,
const label  mergePointi 
)

Remove point / merge points.

Definition at line 1780 of file polyTopoChange.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, VectorSpace< Form, Cmpt, Ncmpts >::max, and Foam::nl.

Referenced by removePoints::setRefinement(), removeCells::setRefinement(), combineFaces::setRefinement(), and edgeCollapser::setRefinement().

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

◆ addFace()

Foam::label addFace ( const face f,
const label  own,
const label  nei,
const label  masterFaceID,
const bool  flipFaceFlux,
const label  patchID 
)

Add face to cells and return new face index.

own, nei <0 >=0 : add inactive face (to end of face list)

Definition at line 1828 of file polyTopoChange.C.

References f().

Referenced by polyTopoChange::polyTopoChange(), meshCutter::setRefinement(), addPatchCellLayer::setRefinement(), createShellMesh::setRefinement(), combineFaces::setUnrefinement(), and meshRefinement::splitFaces().

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

◆ modifyFace()

void modifyFace ( const face f,
const label  facei,
const label  own,
const label  nei,
const bool  flipFaceFlux,
const label  patchID 
)

Modify vertices or cell of face.

Definition at line 1872 of file polyTopoChange.C.

References f().

Referenced by meshRefinement::mergeBaffles(), Foam::polyMeshUnMergeCyclics(), addPatchCellLayer::setRefinement(), removeCells::setRefinement(), combineFaces::setRefinement(), edgeCollapser::setRefinement(), duplicatePoints::setRefinement(), combineFaces::setUnrefinement(), and meshRefinement::splitFaces().

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

◆ removeFace()

void removeFace ( const label  facei,
const label  mergeFacei 
)

Remove face / merge faces.

Definition at line 1897 of file polyTopoChange.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, and FatalErrorInFunction.

Referenced by meshRefinement::mergeBaffles(), removeCells::setRefinement(), combineFaces::setRefinement(), and edgeCollapser::setRefinement().

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

◆ addCell()

Foam::label addCell ( const label  masterCellID)

Add cell and return new cell index.

Definition at line 1936 of file polyTopoChange.C.

Referenced by polyTopoChange::polyTopoChange(), meshCutter::setRefinement(), addPatchCellLayer::setRefinement(), hexRef8::setRefinement(), and createShellMesh::setRefinement().

Here is the caller graph for this function:

◆ removeCell()

void removeCell ( const label  celli,
const label  mergeCelli 
)

Remove cell / merge cells.

Definition at line 1946 of file polyTopoChange.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, and FatalErrorInFunction.

Referenced by removeCells::setRefinement(), and edgeCollapser::setRefinement().

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

◆ setNumPatches()

void setNumPatches ( const label  nPatches)
inline

Explicitly set the number of patches if construct-without-mesh.

used

Definition at line 53 of file polyTopoChangeI.H.

References nPatches.

◆ changeMesh()

Foam::autoPtr< Foam::polyTopoChangeMap > changeMesh ( polyMesh mesh,
const bool  syncParallel = true,
const bool  orderCells = false,
const bool  orderPoints = false 
)

Inplace changes mesh without change of patches.

Adapts patch start/end and by default does parallel matching. Clears all data. Returns map. orderCells : whether to order the cells (see bandCompression.H) orderPoints : whether to order the points into internal first followed by boundary points. This is not fully consistent with upper-triangular ordering of points and edges so is only done when explicitly asked for.

Definition at line 1976 of file polyTopoChange.C.

References polyMesh::boundaryMesh(), primitiveMesh::cellVolumes(), Foam::endl(), primitiveMesh::nCells(), primitiveMesh::nFaces(), Foam::nl, primitiveMesh::nPoints(), Foam::Pout, polyMesh::resetPrimitives(), and UPtrList< T >::size().

Referenced by snappyLayerDriver::addLayers(), meshRefinement::createBaffles(), meshRefinement::doRemovePoints(), meshRefinement::doRestorePoints(), meshRefinement::dupNonManifoldPoints(), meshRefinement::mergeBaffles(), meshRefinement::mergePatchFacesUndo(), Foam::polyMeshUnMergeCyclics(), meshRefinement::refine(), refinementIterator::setRefinement(), meshRefinement::splitFaces(), and meshRefinement::zonify().

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

◆ makeMesh()

Foam::autoPtr< Foam::polyTopoChangeMap > makeMesh ( autoPtr< fvMesh > &  newMesh,
const IOobject io,
const polyMesh mesh,
const bool  syncParallel = true,
const bool  orderCells = false,
const bool  orderPoints = false 
)

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