Loading...
Searching...
No Matches
meshRefinement Class Reference

Helper class which maintains intersections of (changing) mesh with (static) surfaces. More...

#include <meshRefinement.H>

Collaboration diagram for meshRefinement:

Public Types

enum  MeshType { CASTELLATED , CASTELLATEDBUFFERLAYER , CASTELLATEDBUFFERLAYER2 }
 Enumeration for how to operate. More...
enum  debugType {
  MESH = (1 << 0) , OBJINTERSECTIONS = (1 << 1) , FEATURESEEDS = (1 << 2) , ATTRACTION = (1 << 3) ,
  LAYERINFO = (1 << 4)
}
 Enumeration for what to debug. Used as a bit-pattern. More...
enum  writeType {
  WRITEMESH = (1 << 0) , NOWRITEREFINEMENT = (1 << 1) , WRITELEVELS = (1 << 2) , WRITELAYERSETS = (1 << 3) ,
  WRITELAYERFIELDS = (1 << 4)
}
 Enumeration for what to write. Used as a bit-pattern. More...
enum  mapType { MASTERONLY = 1 , KEEPALL = 2 , REMOVE = 4 }
 Enumeration for how userdata is to be mapped upon refinement. More...
enum  FaceMergeType { NONE , GEOMETRIC , IGNOREPATCH }
 Enumeration for what to do with co-planar patch faces on a single. More...

Public Member Functions

 ClassName ("meshRefinement")
 Runtime type information.
 meshRefinement (fvMesh &mesh, const scalar mergeDistance, const bool overwrite, const refinementSurfaces &, const refinementFeatures &, const shellSurfaces &, const shellSurfaces &, const labelUList &checkFaces, const MeshType meshType, const bool dryRun)
 Construct from components.
const fvMeshmesh () const
 Reference to mesh.
fvMeshmesh ()
scalar mergeDistance () const
bool overwrite () const
 Overwrite the mesh?
const wordoldInstance () const
 (points)instance of mesh upon construction
const refinementSurfacessurfaces () const
 Reference to surface search engines.
const refinementFeaturesfeatures () const
 Reference to feature edge mesh.
const shellSurfacesshells () const
 Reference to refinement shells (regions).
const shellSurfaceslimitShells () const
 Reference to limit shells (regions).
const hexRef8meshCutter () const
 Reference to meshcutting engine.
MeshType meshType () const
 Mode of meshing.
const labelListsurfaceIndex () const
 Per start-end edge the index of the surface hit.
labelListsurfaceIndex ()
const Map< label > & faceToCoupledPatch () const
 For faces originating from processor faces store the original.
const List< Tuple2< mapType, labelList > > & userFaceData () const
 Additional face data that is maintained across.
List< Tuple2< mapType, labelList > > & userFaceData ()
label countHits () const
 Count number of intersections (local).
autoPtr< mapDistributePolyMeshbalance (const bool keepZoneFaces, const bool keepBaffles, const labelList &singleProcPoints, const scalarField &cellWeights, decompositionMethod &decomposer, fvMeshDistribute &distributor)
 Redecompose according to cell count.
labelList intersectedFaces () const
 Get faces with intersection.
labelList intersectedPoints () const
 Get points on surfaces with intersection and boundary faces.
bool isGap (const scalar, const vector &, const vector &, const vector &, const vector &) const
 Is local topology a small gap?
bool isNormalGap (const scalar planarCos, const label level0, const vector &point0, const vector &normal0, const label level1, const vector &point1, const vector &normal1) const
 Is local topology a small gap normal to the test vector.
labelList refineCandidates (const pointField &keepPoints, const scalar curvature, const scalar planarAngle, const bool featureRefinement, const bool featureDistanceRefinement, const bool internalRefinement, const bool surfaceRefinement, const bool curvatureRefinement, const bool smallFeatureRefinement, const bool gapRefinement, const bool bigGapRefinement, const bool spreadGapSize, const label maxGlobalCells, const label maxLocalCells) const
 Calculate list of cells to refine.
void markOutsideFaces (const labelList &cellLevel, const labelList &neiLevel, const labelList &refineCell, bitSet &isOutsideFace) const
 Mark faces on interface between set and rest.
label countFaceDirs (const bitSet &isOutsideFace, const label celli) const
 Count number of faces on cell that are in set.
void growSet (const labelList &neiLevel, const bitSet &isOutsideFace, labelList &refineCell, label &nRefine) const
 Add one layer of cells to set.
autoPtr< mapPolyMeshremoveGapCells (const scalar planarAngle, const labelList &minSurfaceLevel, const labelList &globalToMasterPatch, const label growIter)
 Detect gapRefinement cells and remove them.
void selectIntersectedFaces (const labelList &surfaces, boolList &isBlockedFace) const
 Faces currently on boundary or intersected by surface.
labelList detectLeakCells (const boolList &isBlockedFace, const labelList &leakFaces, const labelList &seedCells) const
 Return list of cells to block by walking from the seedCells.
autoPtr< mapPolyMeshremoveLeakCells (const labelList &globalToMasterPatch, const labelList &globalToSlavePatch, const pointField &locationsInMesh, const pointField &locationsOutsideMesh, const labelList &selectedSurfaces)
 Remove minimum amount of cells to break any leak from.
autoPtr< mapPolyMeshblockLeakFaces (const labelList &globalToMasterPatch, const labelList &globalToSlavePatch, const pointField &locationsInMesh, const wordList &zonesInMesh, const pointField &locationsOutsideMesh, const labelList &selectedSurfaces)
 Baffle faces to break any leak from inside to outside.
autoPtr< mapPolyMeshrefine (const labelList &cellsToRefine)
 Refine some cells.
autoPtr< mapDistributePolyMeshbalance (const string &msg, decompositionMethod &decomposer, fvMeshDistribute &distributor, labelList &cellsToRefine, const scalar maxLoadUnbalance, const label maxCellUnbalance)
 Balance the mesh.
autoPtr< mapDistributePolyMeshrefineAndBalance (const string &msg, decompositionMethod &decomposer, fvMeshDistribute &distributor, const labelList &cellsToRefine, const scalar maxLoadUnbalance, const label maxCellUnbalance)
 Refine some cells and rebalance.
autoPtr< mapDistributePolyMeshbalanceAndRefine (const string &msg, decompositionMethod &decomposer, fvMeshDistribute &distributor, const labelList &cellsToRefine, const scalar maxLoadUnbalance, const label maxCellUnbalance)
 Balance before refining some cells.
labelList directionalRefineCandidates (const label maxGlobalCells, const label maxLocalCells, const labelList &currentLevel, const direction dir) const
 Calculate list of cells to directionally refine.
autoPtr< mapPolyMeshdirectionalRefine (const string &msg, const direction cmpt, const labelList &cellsToRefine)
 Directionally refine in direction cmpt.
void baffleAndSplitMesh (const bool handleSnapProblems, const snapParameters &snapParams, const bool useTopologicalSnapDetection, const bool removeEdgeConnectedCells, const scalarField &perpendicularAngle, const label nErodeCellZones, const dictionary &motionDict, Time &runTime, const labelList &globalToMasterPatch, const labelList &globalToSlavePatch, const pointField &locationsInMesh, const wordList &regionsInMesh, const pointField &locationsOutsideMesh, const bool exitIfLeakPath, const refPtr< coordSetWriter > &leakPathFormatter, refPtr< surfaceWriter > &surfFormatter)
 Split off unreachable areas of mesh.
void mergeFreeStandingBaffles (const bool samePatch, const snapParameters &snapParams, const bool useTopologicalSnapDetection, const bool removeEdgeConnectedCells, const scalarField &perpendicularAngle, const scalar planarAngle, const dictionary &motionDict, Time &runTime, const labelList &globalToMasterPatch, const labelList &globalToSlavePatch, const pointField &locationsInMesh, const pointField &locationsOutsideMesh)
 Merge free-standing baffles.
autoPtr< mapPolyMeshsplitMesh (const label nBufferLayers, const label nErodeCellZones, const labelList &globalToMasterPatch, const labelList &globalToSlavePatch, const pointField &locationsInMesh, const wordList &regionsInMesh, const pointField &locationsOutsideMesh, const bool exitIfLeakPath, const refPtr< coordSetWriter > &leakPathFormatter, refPtr< surfaceWriter > &surfFormatter)
 Split off (with optional buffer layers) unreachable areas.
autoPtr< mapPolyMeshremoveLimitShells (const label nBufferLayers, const label nErodeCellZones, const labelList &globalToMasterPatch, const labelList &globalToSlavePatch, const pointField &locationsInMesh, const wordList &regionsInMesh, const pointField &locationsOutsideMesh)
 Remove cells from limitRegions if level -1.
autoPtr< mapPolyMeshdupNonManifoldPoints (const localPointRegion &)
 Find boundary points that connect to more than one cell.
autoPtr< mapPolyMeshdupNonManifoldPoints ()
 Find boundary points that connect to more than one cell.
autoPtr< mapPolyMeshdupNonManifoldBoundaryPoints ()
 Find boundary points that are on faceZones of type boundary.
autoPtr< mapPolyMeshmergePoints (const labelList &pointToDuplicate)
 Merge duplicate points.
autoPtr< mapPolyMeshcreateBaffles (const labelList &ownPatch, const labelList &neiPatch)
 Create baffle for every internal face where ownPatch != -1.
labelList getZones (const List< surfaceZonesInfo::faceZoneType > &fzTypes) const
 Get zones of given type.
void getZoneFaces (const labelList &zoneIDs, labelList &faceZoneID, labelList &ownPatch, labelList &neiPatch, labelList &nBaffles) const
 Get per-face information (faceZone, master/slave patch).
autoPtr< mapPolyMeshcreateZoneBaffles (const labelList &zoneIDs, List< labelPair > &baffles, labelList &originatingFaceZone)
 Create baffles for faces on faceZones. Return created baffles.
autoPtr< mapPolyMeshmergeBaffles (const List< labelPair > &, const Map< label > &faceToPatch)
 Merge baffles. Gets pairs of faces and boundary faces to move.
autoPtr< mapPolyMeshmergeZoneBaffles (const bool doInternalZones, const bool doBaffleZones)
 Merge all baffles on faceZones.
autoPtr< mapPolyMeshzonify (const bool allowFreeStandingZoneFaces, const label nErodeCellZones, const pointField &locationsInMesh, const wordList &regionsInMesh, const pointField &locationsOutsideMesh, const bool exitIfLeakPath, const refPtr< coordSetWriter > &leakPathFormatter, refPtr< surfaceWriter > &surfFormatter, wordPairHashTable &zonesToFaceZone)
 Put faces/cells into zones according to surface specification.
label addMeshedPatch (const word &name, const dictionary &)
 Add patch originating from meshing. Update meshedPatches_.
labelList meshedPatches () const
 Get patchIDs for patches added in addMeshedPatch.
label addFaceZone (const word &fzName, const word &masterPatch, const word &slavePatch, const surfaceZonesInfo::faceZoneType &fzType)
 Add/lookup faceZone and update information. Return index of.
bool getFaceZoneInfo (const word &fzName, label &masterPatchID, label &slavePatchID, surfaceZonesInfo::faceZoneType &fzType) const
 Lookup faceZone information. Return false if no information.
label addPointZone (const word &name)
 Add pointZone if does not exist. Return index of zone.
labelList countEdgeFaces (const uindirectPrimitivePatch &pp) const
 Count number of faces per patch edge. Parallel consistent.
void selectSeparatedCoupledFaces (boolList &) const
 Select coupled faces that are not collocated.
void updateIntersections (const labelUList &changedFaces)
 Find any intersection of surface. Store in surfaceIndex_.
void nearestIntersection (const labelList &surfacesToTest, const labelList &testFaces, labelList &surface1, List< pointIndexHit > &hit1, labelList &region1, labelList &surface2, List< pointIndexHit > &hit2, labelList &region2) const
 Calculate nearest intersection for selected mesh faces.
autoPtr< mapPolyMeshdoRemoveCells (const labelList &cellsToRemove, const labelList &exposedFaces, const labelList &exposedPatchIDs, removeCells &cellRemover)
 Remove cells. Put exposedFaces into exposedPatchIDs.
autoPtr< mapPolyMeshsplitMeshRegions (const labelList &globalToMasterPatch, const labelList &globalToSlavePatch, const pointField &locationsInMesh, const pointField &locationsOutsideMesh, const bool exitIfLeakPath, const refPtr< coordSetWriter > &leakPathFormatter)
 Split mesh. Keep part containing point. Return empty map if.
void doSplitFaces (const labelList &splitFaces, const labelPairList &splits, const labelPairList &splitPatches, polyTopoChange &meshMod) const
 Split faces into two.
label splitFacesUndo (const labelList &splitFaces, const labelPairList &splits, const labelPairList &splitPatches, const dictionary &motionDict, labelList &duplicateFace, List< labelPair > &baffles)
 Split faces along diagonal. Maintain mesh quality. Return.
void distribute (const mapDistributePolyMesh &)
 Update local numbering for mesh redistribution.
void updateMesh (const mapPolyMesh &, const labelList &changedFaces)
 Update for external change to mesh. changedFaces are in new mesh.
void storeData (const labelList &pointsToStore, const labelList &facesToStore, const labelList &cellsToStore)
 Signal points/face/cells for which to store data.
void updateMesh (const mapPolyMesh &, const labelList &changedFaces, const Map< label > &pointsToRestore, const Map< label > &facesToRestore, const Map< label > &cellsToRestore)
 Update local numbering + undo.
label mergePatchFaces (const scalar minCos, const scalar concaveCos, const label mergeSize, const labelList &patchIDs, const meshRefinement::FaceMergeType mergeType)
 Merge coplanar faces if sets are of size mergeSize.
label mergePatchFacesUndo (const scalar minCos, const scalar concaveCos, const labelList &patchIDs, const dictionary &motionDict, const labelList &preserveFaces, const meshRefinement::FaceMergeType mergeType)
 Merge coplanar faces. preserveFaces is != -1 for faces.
autoPtr< mapPolyMeshdoRemovePoints (removePoints &pointRemover, const boolList &pointCanBeDeleted)
autoPtr< mapPolyMeshdoRestorePoints (removePoints &pointRemover, const labelList &facesToRestore)
labelList collectFaces (const labelList &candidateFaces, const labelHashSet &set) const
labelList growFaceCellFace (const labelUList &set) const
labelList growFaceCellFace (const labelHashSet &set) const
label mergeEdgesUndo (const scalar minCos, const dictionary &motionDict)
 Merge edges, maintain mesh quality. Return global number.
void checkData ()
 Debugging: check that all faces still obey start()>end().
template<class T>
void testSyncBoundaryFaceList (const scalar mergeDistance, const string &, const UList< T > &, const UList< T > &) const
 Compare two lists over all boundary faces.
void printMeshInfo (const bool debug, const string &msg, const bool printCellLevel) const
 Print some mesh stats.
word timeName () const
 Replacement for Time::timeName() that returns oldInstance (if overwrite_).
void setInstance (const fileName &)
 Set instance of all local IOobjects.
bool write () const
 Write mesh and all data.
void dumpRefinementLevel () const
 Write refinement level as volScalarFields for postprocessing.
void dumpIntersections (const fileName &prefix) const
 Debug: Write intersection information to OBJ format.
void write (const debugType debugFlags, const writeType writeFlags, const fileName &) const
 Do any one of above IO functions.

Static Public Member Functions

static autoPtr< indirectPrimitivePatchmakePatch (const polyMesh &, const labelList &)
 Create patch from set of patches.
static tmp< pointVectorFieldmakeDisplacementField (const pointMesh &pMesh, const labelList &adaptPatchIDs)
 Helper function to make a pointVectorField with correct.
static void checkCoupledFaceZones (const polyMesh &)
 Helper function: check that face zones are synced.
static void calculateEdgeWeights (const polyMesh &mesh, const bitSet &isMasterEdge, const labelList &meshPoints, const edgeList &edges, scalarField &edgeWeights, scalarField &invSumWeight)
 Helper: calculate edge weights (1/length).
template<class Type>
static void weightedSum (const polyMesh &mesh, const bitSet &isMasterEdge, const labelList &meshPoints, const edgeList &edges, const scalarField &edgeWeights, const Field< Type > &data, Field< Type > &sum)
 Helper: weighted sum (over all subset of mesh points) by.
static List< labelPairsubsetBaffles (const polyMesh &mesh, const labelList &zoneIDs, const List< labelPair > &baffles)
 Subset baffles according to zones.
static void mapBaffles (const polyMesh &mesh, const labelList &faceMap, List< labelPair > &baffles)
 Map baffles after layer addition. Gets new-to-old face map.
static label appendPatch (fvMesh &, const label insertPatchi, const word &, const dictionary &)
 Helper:append patch to end of mesh.
static label addPatch (fvMesh &, const word &name, const dictionary &)
 Helper:add patch to mesh. Update all registered fields.
static label findCell (const polyMesh &, const vector &perturbVec, const point &p)
 Find cell point is in. Uses optional perturbation to re-test.
static label findRegion (const polyMesh &, const labelList &cellRegion, const vector &perturbVec, const point &p)
 Find region point is in. Uses optional perturbation to re-test.
static label findRegions (const polyMesh &, const vector &perturbVec, const pointField &locationsInMesh, const pointField &locationsOutsideMesh, const label nRegions, labelList &cellRegion, const boolList &blockedFace, const bool exitIfLeakPath, const refPtr< coordSetWriter > &leakPathFormatter)
 Find regions points are in.
static void splitFace (const face &f, const labelPair &split, face &f0, face &f1)
 Helper: split face into:
template<class T>
static void updateList (const labelList &newToOld, const T &nullValue, List< T > &elems)
 Helper: reorder list according to map.
static void testSyncPointList (const string &msg, const polyMesh &mesh, const List< scalar > &fld)
static void testSyncPointList (const string &msg, const polyMesh &mesh, const List< point > &fld)
template<class T>
static void collectAndPrint (const UList< point > &points, const UList< T > &data)
 Print list according to (collected and) sorted coordinate.
static bitSet getMasterPoints (const polyMesh &mesh, const labelList &meshPoints)
 Determine master point for subset of points. If coupled.
static bitSet getMasterEdges (const polyMesh &mesh, const labelList &meshEdges)
 Determine master edge for subset of edges. If coupled.
static void removeFiles (const polyMesh &)
 Helper: remove all relevant files from mesh instance.
template<class T>
static T gAverage (const bitSet &isMasterElem, const UList< T > &values)
 Helper: calculate average.
static writeType writeLevel ()
 Get/set write level.
static void writeLevel (const writeType)
template<class EnumContainer>
static int readFlags (const EnumContainer &namedEnum, const wordList &words)
 Helper: convert wordList into bit pattern using provided Enum.
template<class Type>
static Type get (const dictionary &dict, const word &keyword, const bool noExit, enum keyType::option matchOpt=keyType::REGEX, const Type &deflt=Zero)
 Wrapper around dictionary::get which does not exit.
static FOAM_NO_DANGLING_REFERENCE const dictionarysubDict (const dictionary &dict, const word &keyword, const bool noExit, enum keyType::option matchOpt=keyType::REGEX)
 Wrapper around dictionary::subDict which does not exit.
static ITstreamlookup (const dictionary &dict, const word &keyword, const bool noExit, enum keyType::option matchOpt=keyType::REGEX)
 Wrapper around dictionary::lookup which does not exit.

Static Public Attributes

static const Enum< MeshTypeMeshTypeNames
static const Enum< debugTypedebugTypeNames
static const Enum< writeTypewriteTypeNames

Detailed Description

Helper class which maintains intersections of (changing) mesh with (static) surfaces.

Maintains

  • per face any intersections of the cc-cc segment with any of the surfaces
Source files

Definition at line 83 of file meshRefinement.H.

Member Enumeration Documentation

◆ MeshType

enum MeshType

Enumeration for how to operate.

Enumerator
CASTELLATED 
CASTELLATEDBUFFERLAYER 
CASTELLATEDBUFFERLAYER2 

Definition at line 92 of file meshRefinement.H.

◆ debugType

enum debugType

Enumeration for what to debug. Used as a bit-pattern.

Enumerator
MESH 
OBJINTERSECTIONS 
FEATURESEEDS 
ATTRACTION 
LAYERINFO 

Definition at line 106 of file meshRefinement.H.

◆ writeType

enum writeType

Enumeration for what to write. Used as a bit-pattern.

Enumerator
WRITEMESH 
NOWRITEREFINEMENT 
WRITELEVELS 
WRITELAYERSETS 
WRITELAYERFIELDS 

Definition at line 128 of file meshRefinement.H.

◆ mapType

enum mapType

Enumeration for how userdata is to be mapped upon refinement.

Enumerator
MASTERONLY 

maintain master only

KEEPALL 

have slaves (upon refinement) from master

REMOVE 

set value to -1 any face that was refined

Definition at line 142 of file meshRefinement.H.

◆ FaceMergeType

Enumeration for what to do with co-planar patch faces on a single.

cell

Enumerator
NONE 
GEOMETRIC 
IGNOREPATCH 

Definition at line 154 of file meshRefinement.H.

Constructor & Destructor Documentation

◆ meshRefinement()

meshRefinement ( fvMesh & mesh,
const scalar mergeDistance,
const bool overwrite,
const refinementSurfaces & surfaces,
const refinementFeatures & features,
const shellSurfaces & shells,
const shellSurfaces & limitShells,
const labelUList & checkFaces,
const MeshType meshType,
const bool dryRun )

Construct from components.

Definition at line 1725 of file meshRefinement.C.

References features(), limitShells(), mergeDistance(), mesh(), meshType(), overwrite(), shells(), surfaces(), and updateIntersections().

Here is the call graph for this function:

Member Function Documentation

◆ ClassName()

ClassName ( "meshRefinement" )

Runtime type information.

References mergeDistance(), mesh(), meshType(), and overwrite().

Here is the call graph for this function:

◆ mesh() [1/2]

◆ mesh() [2/2]

fvMesh & mesh ( )
inline

Definition at line 1249 of file meshRefinement.H.

◆ mergeDistance()

scalar mergeDistance ( ) const
inline

Definition at line 1254 of file meshRefinement.H.

Referenced by ClassName(), isGap(), isNormalGap(), snappyLayerDriver::mapFaceZonePoints(), meshRefinement(), and removeLeakCells().

Here is the caller graph for this function:

◆ overwrite()

bool overwrite ( ) const
inline

Overwrite the mesh?

Definition at line 1262 of file meshRefinement.H.

Referenced by ClassName(), and meshRefinement().

Here is the caller graph for this function:

◆ oldInstance()

const word & oldInstance ( ) const
inline

(points)instance of mesh upon construction

Definition at line 1270 of file meshRefinement.H.

◆ surfaces()

const refinementSurfaces & surfaces ( ) const
inline

Reference to surface search engines.

Definition at line 1278 of file meshRefinement.H.

Referenced by snappySnapDriver::calcNearestSurface(), and meshRefinement().

Here is the caller graph for this function:

◆ features()

const refinementFeatures & features ( ) const
inline

Reference to feature edge mesh.

Definition at line 1286 of file meshRefinement.H.

Referenced by meshRefinement().

Here is the caller graph for this function:

◆ shells()

const shellSurfaces & shells ( ) const
inline

Reference to refinement shells (regions).

Definition at line 1294 of file meshRefinement.H.

Referenced by meshRefinement().

Here is the caller graph for this function:

◆ limitShells()

const shellSurfaces & limitShells ( ) const
inline

Reference to limit shells (regions).

Definition at line 1302 of file meshRefinement.H.

Referenced by meshRefinement().

Here is the caller graph for this function:

◆ meshCutter()

const hexRef8 & meshCutter ( ) const
inline

Reference to meshcutting engine.

Definition at line 1310 of file meshRefinement.H.

◆ meshType()

MeshType meshType ( ) const
inline

Mode of meshing.

Definition at line 1318 of file meshRefinement.H.

Referenced by ClassName(), and meshRefinement().

Here is the caller graph for this function:

◆ surfaceIndex() [1/2]

const Foam::labelList & surfaceIndex ( ) const

Per start-end edge the index of the surface hit.

Definition at line 1777 of file meshRefinement.C.

References Foam::identity().

Referenced by checkData(), countHits(), intersectedFaces(), intersectedPoints(), and write().

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

◆ surfaceIndex() [2/2]

Foam::labelList & surfaceIndex ( )

Definition at line 1790 of file meshRefinement.C.

References Foam::identity(), and updateIntersections().

Here is the call graph for this function:

◆ faceToCoupledPatch()

const Map< label > & faceToCoupledPatch ( ) const
inline

For faces originating from processor faces store the original.

patch

Definition at line 1335 of file meshRefinement.H.

◆ userFaceData() [1/2]

const List< Tuple2< mapType, labelList > > & userFaceData ( ) const
inline

Additional face data that is maintained across.

topo changes. Every entry is a list over all faces. Bit of a hack. Additional flag to say whether to maintain master only (false) or increase set to account for face-from-face.

Definition at line 1347 of file meshRefinement.H.

◆ userFaceData() [2/2]

List< Tuple2< mapType, labelList > > & userFaceData ( )
inline

Definition at line 1352 of file meshRefinement.H.

◆ countHits()

Foam::label countHits ( ) const

Count number of intersections (local).

Definition at line 1800 of file meshRefinement.C.

References forAll, syncTools::getMasterFaces(), surfaceIndex(), and bitSet::test().

Referenced by baffleAndSplitMesh(), and updateIntersections().

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

◆ balance() [1/2]

Foam::autoPtr< Foam::mapDistributePolyMesh > balance ( const bool keepZoneFaces,
const bool keepBaffles,
const labelList & singleProcPoints,
const scalarField & cellWeights,
decompositionMethod & decomposer,
fvMeshDistribute & distributor )

Redecompose according to cell count.

keepZoneFaces : find all faceZones from zoned surfaces and keep owner and neighbour together keepBaffles : find all baffles and keep them together singleProcPoints : all faces using point are kept together

Definition at line 1820 of file meshRefinement.C.

References fvMeshDistribute::countCells(), coupled, decompositionMethod::decompose(), fvMeshDistribute::distribute(), distribute(), Foam::endl(), localPointRegion::findDuplicateFacePairs(), Pair< T >::first(), forAll, Foam::Info, Pstream::listReduce(), zoneIdentifier::name(), UPstream::parRun(), pbm, Foam::Pout, Foam::reduce(), Foam::returnReduce(), Foam::returnReduceOr(), Pair< T >::second(), selectSeparatedCoupledFaces(), decompositionMethod::setConstraints(), setInstance(), List< T >::setSize(), UList< T >::size(), syncTools::syncFaceList(), timeName, and WarningInFunction.

Referenced by balance(), balanceAndRefine(), and refineAndBalance().

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

◆ intersectedFaces()

Foam::labelList intersectedFaces ( ) const

Get faces with intersection.

Definition at line 2105 of file meshRefinement.C.

References forAll, and surfaceIndex().

Referenced by dumpIntersections().

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

◆ intersectedPoints()

Foam::labelList intersectedPoints ( ) const

Get points on surfaces with intersection and boundary faces.

Definition at line 2133 of file meshRefinement.C.

References forAll, bitSet::set(), bitSet::sortedToc(), surfaceIndex(), and syncTools::syncPointList().

Here is the call graph for this function:

◆ makePatch()

Foam::autoPtr< Foam::indirectPrimitivePatch > makePatch ( const polyMesh & mesh,
const labelList & patchIDs )
static

Create patch from set of patches.

Definition at line 2176 of file meshRefinement.C.

References forAll, mesh(), autoPtr< T >::New(), patches, patchIDs, and pp().

Referenced by snappyLayerDriver::addLayers(), snappyLayerDriver::addLayersSinglePass(), snappySnapDriver::doSnap(), snappyLayerDriver::dupFaceZonePoints(), and snappySnapDriver::repatchToSurface().

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

◆ makeDisplacementField()

Foam::tmp< Foam::pointVectorField > makeDisplacementField ( const pointMesh & pMesh,
const labelList & adaptPatchIDs )
static

Helper function to make a pointVectorField with correct.

bcs for mesh movement:

  • adaptPatchIDs : fixedValue
  • processor : calculated (so free to move)
  • cyclic/wedge/symmetry : slip
  • other : slip

Definition at line 2218 of file meshRefinement.C.

References IOobjectOption::AUTO_WRITE, pointMesh::boundary(), Foam::dimLength, forAll, Foam::isA(), mesh(), tmp< T >::New(), IOobjectOption::NO_READ, UPtrList< T >::size(), and Foam::Zero.

Referenced by snappySnapDriver::doSnap().

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

◆ checkCoupledFaceZones()

void checkCoupledFaceZones ( const polyMesh & mesh)
static

◆ calculateEdgeWeights()

void calculateEdgeWeights ( const polyMesh & mesh,
const bitSet & isMasterEdge,
const labelList & meshPoints,
const edgeList & edges,
scalarField & edgeWeights,
scalarField & invSumWeight )
static

Helper: calculate edge weights (1/length).

Definition at line 2360 of file meshRefinement.C.

References e, forAll, Foam::mag(), Foam::max(), mesh(), pts, List< T >::setSize(), PackedList< Width >::size(), UList< T >::size(), and Foam::weightedSum().

Referenced by fieldSmoother::minSmoothField(), fieldSmoother::smoothLambdaMuDisplacement(), fieldSmoother::smoothNormals(), and fieldSmoother::smoothPatchNormals().

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

◆ weightedSum()

template<class Type>
void weightedSum ( const polyMesh & mesh,
const bitSet & isMasterEdge,
const labelList & meshPoints,
const edgeList & edges,
const scalarField & edgeWeights,
const Field< Type > & data,
Field< Type > & sum )
static

Helper: weighted sum (over all subset of mesh points) by.

summing contribution from (master) edges

Definition at line 240 of file meshRefinementTemplates.C.

References Foam::abort(), e, Foam::FatalError, FatalErrorInFunction, forAll, mesh(), PackedList< Width >::size(), UList< T >::size(), Foam::sum(), syncTools::syncPointList(), bitSet::test(), and Foam::Zero.

Referenced by fieldSmoother::minSmoothField(), fieldSmoother::smoothLambdaMuDisplacement(), fieldSmoother::smoothNormals(), and fieldSmoother::smoothPatchNormals().

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

◆ isGap()

bool isGap ( const scalar planarCos,
const vector & point0,
const vector & normal0,
const vector & point1,
const vector & normal1 ) const

Is local topology a small gap?

Hits differ and angles are oppositeish and

hits have a normal distance

Definition at line 1742 of file meshRefinementRefine.C.

References Foam::mag(), mergeDistance(), Foam::Zero, and VectorSpace< Form, Cmpt, Ncmpts >::zero.

Here is the call graph for this function:

◆ isNormalGap()

bool isNormalGap ( const scalar planarCos,
const label level0,
const vector & point0,
const vector & normal0,
const label level1,
const vector & point1,
const vector & normal1 ) const

Is local topology a small gap normal to the test vector.

Hits differ and angles are oppositeish and

hits have a normal distance

Definition at line 1792 of file meshRefinementRefine.C.

References Foam::cos(), Foam::degToRad(), Foam::mag(), mergeDistance(), Foam::Zero, and VectorSpace< Form, Cmpt, Ncmpts >::zero.

Here is the call graph for this function:

◆ refineCandidates()

Foam::labelList refineCandidates ( const pointField & keepPoints,
const scalar curvature,
const scalar planarAngle,
const bool featureRefinement,
const bool featureDistanceRefinement,
const bool internalRefinement,
const bool surfaceRefinement,
const bool curvatureRefinement,
const bool smallFeatureRefinement,
const bool gapRefinement,
const bool bigGapRefinement,
const bool spreadGapSize,
const label maxGlobalCells,
const label maxLocalCells ) const

Calculate list of cells to refine.

Disable refinement shortcut. nAllowRefine is per processor limit.

Definition at line 2238 of file meshRefinementRefine.C.

References Foam::cos(), Foam::degToRad(), Foam::endl(), forAll, Foam::Info, Foam::labelMax, Foam::max(), UPstream::nProcs(), List< T >::setSize(), and UList< T >::size().

Here is the call graph for this function:

◆ markOutsideFaces()

void markOutsideFaces ( const labelList & cellLevel,
const labelList & neiLevel,
const labelList & refineCell,
bitSet & isOutsideFace ) const

Mark faces on interface between set and rest.

(and same cell level)

Definition at line 170 of file meshRefinementBlock.C.

References forAll, bitSet::set(), PackedList< Width >::setSize(), syncTools::swapBoundaryCellList(), and Foam::Zero.

Referenced by removeGapCells().

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

◆ countFaceDirs()

Foam::label countFaceDirs ( const bitSet & isOutsideFace,
const label celli ) const

Count number of faces on cell that are in set.

Definition at line 228 of file meshRefinementBlock.C.

References forAll, Foam::magSqr(), n, Foam::sqr(), and VectorSpace< Form, Cmpt, Ncmpts >::uniform().

Referenced by growSet(), and removeGapCells().

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

◆ growSet()

void growSet ( const labelList & neiLevel,
const bitSet & isOutsideFace,
labelList & refineCell,
label & nRefine ) const

Add one layer of cells to set.

Definition at line 279 of file meshRefinementBlock.C.

References cells, countFaceDirs(), and forAll.

Referenced by removeGapCells().

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

◆ removeGapCells()

Foam::autoPtr< Foam::mapPolyMesh > removeGapCells ( const scalar planarAngle,
const labelList & minSurfaceLevel,
const labelList & globalToMasterPatch,
const label growIter )

◆ selectIntersectedFaces()

void selectIntersectedFaces ( const labelList & surfaces,
boolList & isBlockedFace ) const

Faces currently on boundary or intersected by surface.

Definition at line 1205 of file meshRefinementBlock.C.

References forAll, isBlockedFace(), and selectSeparatedCoupledFaces().

Referenced by blockLeakFaces().

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

◆ detectLeakCells()

labelList detectLeakCells ( const boolList & isBlockedFace,
const labelList & leakFaces,
const labelList & seedCells ) const

Return list of cells to block by walking from the seedCells.

until reaching a leak face

References isBlockedFace().

Here is the call graph for this function:

◆ removeLeakCells()

autoPtr< mapPolyMesh > removeLeakCells ( const labelList & globalToMasterPatch,
const labelList & globalToSlavePatch,
const pointField & locationsInMesh,
const pointField & locationsOutsideMesh,
const labelList & selectedSurfaces )

Remove minimum amount of cells to break any leak from.

inside to outside

References dict, f(), Foam::faceMap(), fld(), FOAM_NO_DANGLING_REFERENCE, mergeDistance(), mesh(), Foam::name(), p, patchIDs, points, pp(), keyType::REGEX, runTime, split(), Foam::T(), Foam::Zero, and zoneIDs.

Here is the call graph for this function:

◆ blockLeakFaces()

◆ refine()

Foam::autoPtr< Foam::mapPolyMesh > refine ( const labelList & cellsToRefine)

Refine some cells.

Definition at line 2570 of file meshRefinementRefine.C.

References polyTopoChange::changeMesh(), mapPolyMesh::hasMotionPoints(), mapPolyMesh::preMotionPoints(), timeName, and updateMesh().

Referenced by balanceAndRefine(), and refineAndBalance().

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

◆ balance() [2/2]

Foam::autoPtr< Foam::mapDistributePolyMesh > balance ( const string & msg,
decompositionMethod & decomposer,
fvMeshDistribute & distributor,
labelList & cellsToRefine,
const scalar maxLoadUnbalance,
const label maxCellUnbalance )

◆ refineAndBalance()

Foam::autoPtr< Foam::mapDistributePolyMesh > refineAndBalance ( const string & msg,
decompositionMethod & decomposer,
fvMeshDistribute & distributor,
const labelList & cellsToRefine,
const scalar maxLoadUnbalance,
const label maxCellUnbalance )

Refine some cells and rebalance.

Definition at line 2735 of file meshRefinementRefine.C.

References balance(), Foam::checkData(), Foam::endl(), Foam::Info, MESH, Foam::Pout, printMeshInfo(), refine(), timeName(), timeName, write(), writeLevel(), and WRITEMESH.

Here is the call graph for this function:

◆ balanceAndRefine()

Foam::autoPtr< Foam::mapDistributePolyMesh > balanceAndRefine ( const string & msg,
decompositionMethod & decomposer,
fvMeshDistribute & distributor,
const labelList & cellsToRefine,
const scalar maxLoadUnbalance,
const label maxCellUnbalance )

Balance before refining some cells.

Definition at line 2793 of file meshRefinementRefine.C.

References balance(), Foam::checkData(), Foam::endl(), Foam::Info, MESH, Foam::Pout, printMeshInfo(), refine(), timeName(), timeName, write(), writeLevel(), and WRITEMESH.

Here is the call graph for this function:

◆ directionalRefineCandidates()

Foam::labelList directionalRefineCandidates ( const label maxGlobalCells,
const label maxLocalCells,
const labelList & currentLevel,
const direction dir ) const

Calculate list of cells to directionally refine.

Definition at line 2888 of file meshRefinementRefine.C.

References Foam::endl(), forAll, Foam::Info, Foam::labelMax, UPstream::nProcs(), Foam::Pout, and List< T >::setSize().

Here is the call graph for this function:

◆ directionalRefine()

Foam::autoPtr< Foam::mapPolyMesh > directionalRefine ( const string & msg,
const direction cmpt,
const labelList & cellsToRefine )

Directionally refine in direction cmpt.

Definition at line 2988 of file meshRefinementRefine.C.

References polyTopoChange::changeMesh(), forAll, meshCutter::setRefinement(), UList< T >::size(), timeName, meshCutter::updateMesh(), updateMesh(), and Foam::Zero.

Here is the call graph for this function:

◆ baffleAndSplitMesh()

void baffleAndSplitMesh ( const bool handleSnapProblems,
const snapParameters & snapParams,
const bool useTopologicalSnapDetection,
const bool removeEdgeConnectedCells,
const scalarField & perpendicularAngle,
const label nErodeCellZones,
const dictionary & motionDict,
Time & runTime,
const labelList & globalToMasterPatch,
const labelList & globalToSlavePatch,
const pointField & locationsInMesh,
const wordList & regionsInMesh,
const pointField & locationsOutsideMesh,
const bool exitIfLeakPath,
const refPtr< coordSetWriter > & leakPathFormatter,
refPtr< surfaceWriter > & surfFormatter )

Split off unreachable areas of mesh.

Definition at line 4635 of file meshRefinementBaffles.C.

References Foam::checkData(), countHits(), createBaffles(), Foam::endl(), Foam::Info, MESH, Foam::nl, Foam::Pout, printMeshInfo(), Foam::returnReduce(), runTime, List< T >::setSize(), splitMeshRegions(), timeName(), timeName, write(), writeLevel(), and WRITEMESH.

Here is the call graph for this function:

◆ mergeFreeStandingBaffles()

void mergeFreeStandingBaffles ( const bool samePatch,
const snapParameters & snapParams,
const bool useTopologicalSnapDetection,
const bool removeEdgeConnectedCells,
const scalarField & perpendicularAngle,
const scalar planarAngle,
const dictionary & motionDict,
Time & runTime,
const labelList & globalToMasterPatch,
const labelList & globalToSlavePatch,
const pointField & locationsInMesh,
const pointField & locationsOutsideMesh )

Merge free-standing baffles.

Definition at line 4831 of file meshRefinementBaffles.C.

References Foam::checkData(), Foam::endl(), localPointRegion::findDuplicateFacePairs(), Foam::Info, mergeBaffles(), Foam::nl, Foam::returnReduce(), runTime, UList< T >::size(), and splitMeshRegions().

Here is the call graph for this function:

◆ splitMesh()

Foam::autoPtr< Foam::mapPolyMesh > splitMesh ( const label nBufferLayers,
const label nErodeCellZones,
const labelList & globalToMasterPatch,
const labelList & globalToSlavePatch,
const pointField & locationsInMesh,
const wordList & regionsInMesh,
const pointField & locationsOutsideMesh,
const bool exitIfLeakPath,
const refPtr< coordSetWriter > & leakPathFormatter,
refPtr< surfaceWriter > & surfFormatter )

Split off (with optional buffer layers) unreachable areas.

of mesh. Does not introduce baffles.

Definition at line 4927 of file meshRefinementBaffles.C.

References findRegions(), forAll, regionSplit::nRegions(), syncTools::syncFaceList(), and VectorSpace< Form, Cmpt, Ncmpts >::uniform().

Here is the call graph for this function:

◆ removeLimitShells()

Foam::autoPtr< Foam::mapPolyMesh > removeLimitShells ( const label nBufferLayers,
const label nErodeCellZones,
const labelList & globalToMasterPatch,
const labelList & globalToSlavePatch,
const pointField & locationsInMesh,
const wordList & regionsInMesh,
const pointField & locationsOutsideMesh )

Remove cells from limitRegions if level -1.

Definition at line 5484 of file meshRefinementBaffles.C.

References Foam::endl(), forAll, MESH, Foam::Pout, timeName(), timeName, write(), writeLevel(), WRITEMESH, and Foam::Zero.

Here is the call graph for this function:

◆ dupNonManifoldPoints() [1/2]

Foam::autoPtr< Foam::mapPolyMesh > dupNonManifoldPoints ( const localPointRegion & regionSide)

Find boundary points that connect to more than one cell.

region and split them.

Definition at line 5574 of file meshRefinementBaffles.C.

References polyTopoChange::changeMesh(), Foam::endl(), mapPolyMesh::hasMotionPoints(), Foam::Info, mapPolyMesh::preMotionPoints(), Foam::returnReduce(), duplicatePoints::setRefinement(), timeName, and updateMesh().

Referenced by snappyLayerDriver::dupFaceZonePoints(), dupNonManifoldBoundaryPoints(), and dupNonManifoldPoints().

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

◆ dupNonManifoldPoints() [2/2]

Foam::autoPtr< Foam::mapPolyMesh > dupNonManifoldPoints ( )

Find boundary points that connect to more than one cell.

region and split them.

Definition at line 5638 of file meshRefinementBaffles.C.

References dupNonManifoldPoints().

Here is the call graph for this function:

◆ dupNonManifoldBoundaryPoints()

Foam::autoPtr< Foam::mapPolyMesh > dupNonManifoldBoundaryPoints ( )

Find boundary points that are on faceZones of type boundary.

and duplicate them

Definition at line 5721 of file meshRefinementBaffles.C.

References surfaceZonesInfo::BAFFLE, surfaceZonesInfo::BOUNDARY, dupNonManifoldPoints(), Foam::endl(), f(), surfaceZonesInfo::faceZoneTypeNames, forAll, getZones(), Foam::Info, surfaceZonesInfo::INTERNAL, Foam::max(), n, Foam::returnReduce(), and syncTools::syncPointList().

Here is the call graph for this function:

◆ mergePoints()

◆ createBaffles()

Foam::autoPtr< Foam::mapPolyMesh > createBaffles ( const labelList & ownPatch,
const labelList & neiPatch )

Create baffle for every internal face where ownPatch != -1.

External faces get repatched according to ownPatch (neiPatch should be -1 for these)

Redo the intersections on the newly create baffle faces. Note that

this changes also the cell centre positions.

Definition at line 484 of file meshRefinementBaffles.C.

References Foam::abort(), polyTopoChange::changeMesh(), Foam::endl(), Foam::faceMap(), mapPolyMesh::faceMap(), Foam::FatalError, FatalErrorInFunction, forAll, mapPolyMesh::hasMotionPoints(), HashSet< Key, Hash >::insert(), pbm, pp(), mapPolyMesh::preMotionPoints(), Foam::refCast(), Foam::returnReduceOr(), mapPolyMesh::reverseFaceMap(), UList< T >::size(), faceSet::sync(), syncTools::syncFaceList(), timeName, HashTable< T, Key, Hash >::toc(), and updateMesh().

Referenced by baffleAndSplitMesh(), blockLeakFaces(), and createZoneBaffles().

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

◆ getZones()

Foam::labelList getZones ( const List< surfaceZonesInfo::faceZoneType > & fzTypes) const

Get zones of given type.

Definition at line 666 of file meshRefinementBaffles.C.

References forAll, UList< T >::found(), getFaceZoneInfo(), zoneIdentifier::name(), UPtrList< T >::size(), and zoneIDs.

Referenced by dupNonManifoldBoundaryPoints(), and mergeZoneBaffles().

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

◆ subsetBaffles()

Foam::List< Foam::labelPair > subsetBaffles ( const polyMesh & mesh,
const labelList & zoneIDs,
const List< labelPair > & baffles )
static

Subset baffles according to zones.

Definition at line 693 of file meshRefinementBaffles.C.

References DynamicList< T, SizeMin >::append(), forAll, mesh(), p, UList< T >::size(), and zoneIDs.

Referenced by snappyLayerDriver::addLayers(), snappySnapDriver::doSnap(), snappyLayerDriver::dupFaceZonePoints(), and mergeZoneBaffles().

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

◆ mapBaffles()

void mapBaffles ( const polyMesh & mesh,
const labelList & faceMap,
List< labelPair > & baffles )
static

Map baffles after layer addition. Gets new-to-old face map.

Definition at line 726 of file meshRefinementBaffles.C.

References DynamicList< T, SizeMin >::append(), Foam::faceMap(), forAll, mesh(), p, and UList< T >::size().

Referenced by snappySnapDriver::doSnap().

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

◆ getZoneFaces()

void getZoneFaces ( const labelList & zoneIDs,
labelList & faceZoneID,
labelList & ownPatch,
labelList & neiPatch,
labelList & nBaffles ) const

Get per-face information (faceZone, master/slave patch).

Get per face whether it is internal or coupled

Definition at line 769 of file meshRefinementBaffles.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, faceZone::flipMap(), forAll, syncTools::getInternalOrCoupledFaces(), zoneIdentifier::name(), List< T >::setSize(), Foam::Zero, and zoneIDs.

Referenced by createZoneBaffles().

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

◆ createZoneBaffles()

Foam::autoPtr< Foam::mapPolyMesh > createZoneBaffles ( const labelList & zoneIDs,
List< labelPair > & baffles,
labelList & originatingFaceZone )

◆ mergeBaffles()

◆ mergeZoneBaffles()

Foam::autoPtr< Foam::mapPolyMesh > mergeZoneBaffles ( const bool doInternalZones,
const bool doBaffleZones )

◆ zonify()

Foam::autoPtr< Foam::mapPolyMesh > zonify ( const bool allowFreeStandingZoneFaces,
const label nErodeCellZones,
const pointField & locationsInMesh,
const wordList & regionsInMesh,
const pointField & locationsOutsideMesh,
const bool exitIfLeakPath,
const refPtr< coordSetWriter > & leakPathFormatter,
refPtr< surfaceWriter > & surfFormatter,
wordPairHashTable & zonesToFaceZone )

◆ appendPatch()

Foam::label appendPatch ( fvMesh & mesh,
const label insertPatchi,
const word & patchName,
const dictionary & patchDict )
static

Helper:append patch to end of mesh.

Definition at line 2416 of file meshRefinement.C.

References fvPatchFieldBase::calculatedType(), fvsPatchFieldBase::calculatedType(), mesh(), fvPatch::New(), polyPatch::New(), PtrList< T >::push_back(), and UPtrList< T >::size().

Referenced by addPatch(), and snappyLayerDriver::determineSidePatches().

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

◆ addPatch()

Foam::label addPatch ( fvMesh & mesh,
const word & name,
const dictionary & patchInfo )
static

Helper:add patch to mesh. Update all registered fields.

Used by addMeshedPatch to add patches originating from surfaces.

Definition at line 2512 of file meshRefinement.C.

References appendPatch(), polyBoundaryMesh::findPatchID(), forAll, Foam::isA(), mesh(), pp(), polyBoundaryMesh::reorder(), UPtrList< T >::reorder(), dictionary::set(), and UPtrList< T >::size().

Referenced by addMeshedPatch().

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

◆ addMeshedPatch()

Foam::label addMeshedPatch ( const word & name,
const dictionary & patchInfo )

Add patch originating from meshing. Update meshedPatches_.

Definition at line 2590 of file meshRefinement.C.

References addPatch(), and Foam::name().

Referenced by snappyRefineDriver::addFaceZones().

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

◆ meshedPatches()

Foam::labelList meshedPatches ( ) const

Get patchIDs for patches added in addMeshedPatch.

Definition at line 2641 of file meshRefinement.C.

References polyPatch::constraintType(), Foam::endl(), forAll, patches, patchIDs, Foam::type(), and WarningInFunction.

Here is the call graph for this function:

◆ addFaceZone()

Foam::label addFaceZone ( const word & fzName,
const word & masterPatch,
const word & slavePatch,
const surfaceZonesInfo::faceZoneType & fzType )

Add/lookup faceZone and update information. Return index of.

faceZone

Definition at line 2667 of file meshRefinement.C.

References surfaceZonesInfo::addFaceZone().

Referenced by snappyRefineDriver::addFaceZones().

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

◆ getFaceZoneInfo()

bool getFaceZoneInfo ( const word & fzName,
label & masterPatchID,
label & slavePatchID,
surfaceZonesInfo::faceZoneType & fzType ) const

Lookup faceZone information. Return false if no information.

for faceZone

Definition at line 2691 of file meshRefinement.C.

References pbm.

Referenced by createZoneBaffles(), snappyLayerDriver::dupFaceZonePoints(), and getZones().

Here is the caller graph for this function:

◆ addPointZone()

Foam::label addPointZone ( const word & name)

Add pointZone if does not exist. Return index of zone.

Definition at line 2720 of file meshRefinement.C.

References ZoneMesh< ZoneType, MeshType >::clearAddressing(), PtrList< T >::emplace_back(), ZoneMesh< ZoneType, MeshType >::findZoneID(), Foam::name(), and UPtrList< T >::size().

Referenced by blockLeakFaces().

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

◆ countEdgeFaces()

Foam::labelList countEdgeFaces ( const uindirectPrimitivePatch & pp) const

Count number of faces per patch edge. Parallel consistent.

Definition at line 2757 of file meshRefinement.C.

References mapDistributeBase::constructSize(), globalMeshData::coupledPatch(), forAll, globalMeshData::globalEdgeSlaves(), globalMeshData::globalEdgeSlavesMap(), globalMeshData::globalEdgeTransformedSlaves(), PatchTools::matchEdges(), UPstream::parRun(), pp(), UList< T >::size(), globalMeshData::syncData(), and Foam::Zero.

Referenced by blockLeakFaces().

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

◆ selectSeparatedCoupledFaces()

void selectSeparatedCoupledFaces ( boolList & selected) const

Select coupled faces that are not collocated.

Definition at line 2742 of file meshRefinement.C.

References Foam::isA(), and pp().

Referenced by balance(), selectIntersectedFaces(), and splitMeshRegions().

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

◆ updateIntersections()

void updateIntersections ( const labelUList & changedFaces)

Find any intersection of surface. Store in surfaceIndex_.

Definition at line 360 of file meshRefinement.C.

References bitSet::count(), countHits(), Foam::endl(), forAll, syncTools::getMasterFaces(), Foam::Info, Foam::nl, Foam::reduce(), Foam::returnReduce(), setInstance(), UList< T >::size(), syncTools::syncFaceList(), and bitSet::test().

Referenced by meshRefinement(), surfaceIndex(), and updateMesh().

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

◆ nearestIntersection()

void nearestIntersection ( const labelList & surfacesToTest,
const labelList & testFaces,
labelList & surface1,
List< pointIndexHit > & hit1,
labelList & region1,
labelList & surface2,
List< pointIndexHit > & hit2,
labelList & region2 ) const

Calculate nearest intersection for selected mesh faces.

Definition at line 667 of file meshRefinement.C.

References UList< T >::size().

Here is the call graph for this function:

◆ doRemoveCells()

Foam::autoPtr< Foam::mapPolyMesh > doRemoveCells ( const labelList & cellsToRemove,
const labelList & exposedFaces,
const labelList & exposedPatchIDs,
removeCells & cellRemover )

Remove cells. Put exposedFaces into exposedPatchIDs.

Definition at line 1127 of file meshRefinement.C.

References polyTopoChange::changeMesh(), mapPolyMesh::hasMotionPoints(), mapPolyMesh::preMotionPoints(), Foam::renumber(), mapPolyMesh::reverseFaceMap(), setInstance(), removeCells::setRefinement(), timeName, updateMesh(), and removeCells::updateMesh().

Referenced by removeGapCells(), and splitMeshRegions().

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

◆ findCell()

Foam::label findCell ( const polyMesh & mesh,
const vector & perturbVec,
const point & p )
static

Find cell point is in. Uses optional perturbation to re-test.

Returns -1 on processors that do not have the cell.

Definition at line 2814 of file meshRefinement.C.

References findCellMode(), mesh(), p, and Foam::returnReduceAnd().

Referenced by blockLeakFaces().

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

◆ findRegion()

Foam::label findRegion ( const polyMesh & mesh,
const labelList & cellRegion,
const vector & perturbVec,
const point & p )
static

Find region point is in. Uses optional perturbation to re-test.

Definition at line 2835 of file meshRefinement.C.

References findCellMode(), mesh(), p, and Foam::reduce().

Referenced by blockLeakFaces(), and findRegions().

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

◆ findRegions()

Foam::label findRegions ( const polyMesh & mesh,
const vector & perturbVec,
const pointField & locationsInMesh,
const pointField & locationsOutsideMesh,
const label nRegions,
labelList & cellRegion,
const boolList & blockedFace,
const bool exitIfLeakPath,
const refPtr< coordSetWriter > & leakPathFormatter )
static

Find regions points are in.

Returns
number of cells to be removed

Definition at line 3022 of file meshRefinement.C.

References refPtr< T >::constCast(), Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, UList< T >::find(), findRegion(), forAll, Foam::Info, mesh(), bitSet::set(), UList< T >::size(), bitSet::test(), and WarningInFunction.

Referenced by splitMesh(), and splitMeshRegions().

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

◆ splitMeshRegions()

Foam::autoPtr< Foam::mapPolyMesh > splitMeshRegions ( const labelList & globalToMasterPatch,
const labelList & globalToSlavePatch,
const pointField & locationsInMesh,
const pointField & locationsOutsideMesh,
const bool exitIfLeakPath,
const refPtr< coordSetWriter > & leakPathFormatter )

Split mesh. Keep part containing point. Return empty map if.

no cells removed.

Definition at line 3139 of file meshRefinement.C.

References DynamicList< T, SizeMin >::append(), doRemoveCells(), Foam::endl(), findRegions(), forAll, removeCells::getExposedFaces(), Foam::Info, regionSplit::nRegions(), Foam::returnReduce(), selectSeparatedCoupledFaces(), List< T >::setSize(), DynamicList< T, SizeMin >::shrink(), UList< T >::size(), VectorSpace< Form, Cmpt, Ncmpts >::uniform(), and WarningInFunction.

Referenced by baffleAndSplitMesh(), and mergeFreeStandingBaffles().

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

◆ splitFace()

void splitFace ( const face & f,
const labelPair & split,
face & f0,
face & f1 )
static

Helper: split face into:

  • f0 : split[0] to split[1]
  • f1 : split[1] to split[0]

Definition at line 1191 of file meshRefinement.C.

References Foam::exit(), f(), Foam::FatalError, FatalErrorInFunction, forAll, List< T >::resize_nocopy(), UList< T >::size(), and split().

Referenced by doSplitFaces().

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

◆ doSplitFaces()

void doSplitFaces ( const labelList & splitFaces,
const labelPairList & splits,
const labelPairList & splitPatches,
polyTopoChange & meshMod ) const

Split faces into two.

Definition at line 1234 of file meshRefinement.C.

References polyTopoChange::addFace(), Foam::endl(), f(), faceZone::flipMap(), forAll, polyTopoChange::modifyFace(), Foam::Pout, split(), splitFace(), and faceZone::whichFace().

Referenced by splitFacesUndo().

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

◆ splitFacesUndo()

◆ distribute()

void distribute ( const mapDistributePolyMesh & map)

Update local numbering for mesh redistribution.

Definition at line 3248 of file meshRefinement.C.

References autoPtr< T >::clear(), mapDistributePolyMesh::distributeFaceData(), e, treeBoundBox::extend(), Foam::faceMap(), forAll, meshBb(), and rndGen.

Referenced by balance().

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

◆ updateMesh() [1/2]

void updateMesh ( const mapPolyMesh & map,
const labelList & changedFaces )

Update for external change to mesh. changedFaces are in new mesh.

face labels.

Definition at line 3310 of file meshRefinement.C.

References updateMesh().

Referenced by createBaffles(), directionalRefine(), doRemoveCells(), doRemovePoints(), doRestorePoints(), dupNonManifoldPoints(), mergeBaffles(), mergePatchFaces(), mergePatchFacesUndo(), mergePoints(), refine(), splitFacesUndo(), updateMesh(), and zonify().

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

◆ updateList()

template<class T>
void updateList ( const labelList & newToOld,
const T & nullValue,
List< T > & elems )
static

Helper: reorder list according to map.

Definition at line 30 of file meshRefinementTemplates.C.

References forAll, UList< T >::size(), Foam::T(), and List< T >::transfer().

Referenced by snappyLayerDriver::addLayers(), snappyLayerDriver::addLayersSinglePass(), splitFacesUndo(), and updateMesh().

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

◆ storeData()

void storeData ( const labelList & pointsToStore,
const labelList & facesToStore,
const labelList & cellsToStore )

Signal points/face/cells for which to store data.

Definition at line 3322 of file meshRefinement.C.

Referenced by mergePatchFacesUndo().

Here is the caller graph for this function:

◆ updateMesh() [2/2]

void updateMesh ( const mapPolyMesh & map,
const labelList & changedFaces,
const Map< label > & pointsToRestore,
const Map< label > & facesToRestore,
const Map< label > & cellsToRestore )

Update local numbering + undo.

Data to restore given as new pointlabel + stored pointlabel (i.e. what was in pointsToStore)

Definition at line 3339 of file meshRefinement.C.

References mapPolyMesh::faceMap(), forAll, forAllConstIters, HashTable< T, Key, Hash >::insert(), KEEPALL, MASTERONLY, mapPolyMesh::reverseFaceMap(), UList< T >::size(), List< T >::transfer(), updateIntersections(), and updateList().

Here is the call graph for this function:

◆ mergePatchFaces()

Foam::label mergePatchFaces ( const scalar minCos,
const scalar concaveCos,
const label mergeSize,
const labelList & patchIDs,
const meshRefinement::FaceMergeType mergeType )

◆ mergePatchFacesUndo()

◆ doRemovePoints()

◆ doRestorePoints()

◆ collectFaces()

Foam::labelList collectFaces ( const labelList & candidateFaces,
const labelHashSet & set ) const

Definition at line 770 of file meshRefinementMerge.C.

References Foam::findIndices(), and syncTools::syncFaceList().

Referenced by mergeEdgesUndo().

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

◆ growFaceCellFace() [1/2]

Foam::labelList growFaceCellFace ( const labelUList & set) const

Definition at line 833 of file meshRefinementMerge.C.

References Foam::findIndices(), Foam::markGrowFaceCellFace(), and syncTools::syncFaceList().

Referenced by doRemovePoints(), doRestorePoints(), mergeEdgesUndo(), mergePatchFaces(), mergePatchFacesUndo(), and splitFacesUndo().

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

◆ growFaceCellFace() [2/2]

Foam::labelList growFaceCellFace ( const labelHashSet & set) const

Definition at line 856 of file meshRefinementMerge.C.

References Foam::findIndices(), Foam::markGrowFaceCellFace(), and syncTools::syncFaceList().

Here is the call graph for this function:

◆ mergeEdgesUndo()

Foam::label mergeEdgesUndo ( const scalar minCos,
const dictionary & motionDict )

◆ checkData()

void checkData ( )

Debugging: check that all faces still obey start()>end().

Definition at line 913 of file meshRefinement.C.

References Foam::endl(), localPointRegion::findDuplicateFaces(), forAll, Foam::identity(), Foam::Pout, UList< T >::size(), surfaceIndex(), syncTools::swapBoundaryFaceList(), syncTools::syncBoundaryFacePositions(), testSyncBoundaryFaceList(), and WarningInFunction.

Here is the call graph for this function:

◆ testSyncPointList() [1/2]

void testSyncPointList ( const string & msg,
const polyMesh & mesh,
const List< scalar > & fld )
static

Definition at line 819 of file meshRefinement.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, fld(), forAll, Foam::mag(), mesh(), Foam::nl, Foam::Pout, and syncTools::syncPointList().

Here is the call graph for this function:

◆ testSyncPointList() [2/2]

void testSyncPointList ( const string & msg,
const polyMesh & mesh,
const List< point > & fld )
static

◆ testSyncBoundaryFaceList()

template<class T>
void testSyncBoundaryFaceList ( const scalar mergeDistance,
const string & msg,
const UList< T > & faceData,
const UList< T > & syncedFaceData ) const

Compare two lists over all boundary faces.

Definition at line 97 of file meshRefinementTemplates.C.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::mag(), patches, pp(), UList< T >::size(), and Foam::T().

Referenced by checkData().

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

◆ collectAndPrint()

template<class T>
void collectAndPrint ( const UList< point > & points,
const UList< T > & data )
static

Print list according to (collected and) sorted coordinate.

Definition at line 154 of file meshRefinementTemplates.C.

References Foam::endl(), Foam::Info, Foam::mag(), points, and Foam::sortedOrder().

Here is the call graph for this function:

◆ getMasterPoints()

Foam::bitSet getMasterPoints ( const polyMesh & mesh,
const labelList & meshPoints )
static

Determine master point for subset of points. If coupled.

chooses only one

Definition at line 3485 of file meshRefinement.C.

References forAll, Foam::identity(), Foam::labelMax, mesh(), UPstream::myProcNo(), bitSet::set(), UList< T >::size(), and syncTools::syncPointList().

Referenced by snappySnapDriver::calcNearestSurface(), snappySnapDriver::detectNearSurfaces(), and displacementMotionSolverMeshMover::move().

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

◆ getMasterEdges()

Foam::bitSet getMasterEdges ( const polyMesh & mesh,
const labelList & meshEdges )
static

Determine master edge for subset of edges. If coupled.

chooses only one

Definition at line 3522 of file meshRefinement.C.

References forAll, Foam::identity(), Foam::labelMax, mesh(), UPstream::myProcNo(), globalIndex::range(), bitSet::set(), UList< T >::size(), syncTools::syncEdgeList(), and globalIndex::toGlobal().

Referenced by displacementMotionSolverMeshMover::move().

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

◆ printMeshInfo()

void printMeshInfo ( const bool debug,
const string & msg,
const bool printCellLevel ) const

◆ timeName()

Foam::word timeName ( ) const

Replacement for Time::timeName() that returns oldInstance (if overwrite_).

Definition at line 3631 of file meshRefinement.C.

Referenced by baffleAndSplitMesh(), balance(), balanceAndRefine(), blockLeakFaces(), snappyLayerDriver::dupFaceZonePoints(), mergePatchFaces(), snappySnapDriver::preSmoothPatch(), refineAndBalance(), and removeLimitShells().

Here is the caller graph for this function:

◆ setInstance()

void setInstance ( const fileName & inst)

Set instance of all local IOobjects.

Definition at line 1120 of file meshRefinement.C.

Referenced by balance(), doRemoveCells(), splitFacesUndo(), and updateIntersections().

Here is the caller graph for this function:

◆ write() [1/2]

bool write ( ) const

Write mesh and all data.

Definition at line 3450 of file meshRefinement.C.

References forAll, and s().

Referenced by snappyLayerDriver::dupFaceZonePoints(), and snappySnapDriver::preSmoothPatch().

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

◆ dumpRefinementLevel()

void dumpRefinementLevel ( ) const

Write refinement level as volScalarFields for postprocessing.

Definition at line 3642 of file meshRefinement.C.

References Foam::dimless, forAll, MeshObject< polyMesh, UpdateableMeshObject, pointMesh >::New(), IOobjectOption::NO_READ, IOobjectOption::NO_REGISTER, IOobjectOption::NO_WRITE, regIOobject::write(), Foam::Zero, and fvPatchFieldBase::zeroGradientType().

Referenced by write().

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

◆ dumpIntersections()

void dumpIntersections ( const fileName & prefix) const

Debug: Write intersection information to OBJ format.

Definition at line 3704 of file meshRefinement.C.

References Foam::endl(), forAll, intersectedFaces(), OFstream::name(), Foam::nl, Foam::Pout, UList< T >::size(), and Foam::meshTools::writeOBJ().

Referenced by write().

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

◆ write() [2/2]

void write ( const debugType debugFlags,
const writeType writeFlags,
const fileName & prefix ) const

Do any one of above IO functions.

Definition at line 3772 of file meshRefinement.C.

References dumpIntersections(), dumpRefinementLevel(), NOWRITEREFINEMENT, OBJINTERSECTIONS, surfaceIndex(), write(), WRITELEVELS, and WRITEMESH.

Here is the call graph for this function:

◆ removeFiles()

void removeFiles ( const polyMesh & mesh)
static

Helper: remove all relevant files from mesh instance.

Definition at line 3805 of file meshRefinement.C.

References DebugVar, Foam::exists(), io, mesh(), polyMesh::meshSubDir, hexRef8::removeFiles(), and Foam::rm().

Here is the call graph for this function:

◆ gAverage()

template<class T>
T gAverage ( const bitSet & isMasterElem,
const UList< T > & values )
static

◆ writeLevel() [1/2]

◆ writeLevel() [2/2]

void writeLevel ( const writeType flags)
static

Definition at line 3835 of file meshRefinement.C.

◆ readFlags()

template<class EnumContainer>
int readFlags ( const EnumContainer & namedEnum,
const wordList & words )
static

Helper: convert wordList into bit pattern using provided Enum.

Definition at line 222 of file meshRefinementTemplates.C.

◆ get()

template<class Type>
Type get ( const dictionary & dict,
const word & keyword,
const bool noExit,
enum keyType::option matchOpt = keyType::REGEX,
const Type & deflt = Zero )
static

Wrapper around dictionary::get which does not exit.

Definition at line 299 of file meshRefinementTemplates.C.

References dict, FatalIOErrorInFunction, IOobjectOption::MUST_READ, Foam::nl, and IOobjectOption::READ_IF_PRESENT.

Referenced by displacementMotionSolverMeshMover::move(), and refinementSurfaces::refinementSurfaces().

Here is the caller graph for this function:

◆ subDict()

const Foam::dictionary & subDict ( const dictionary & dict,
const word & keyword,
const bool noExit,
enum keyType::option matchOpt = keyType::REGEX )
static

Wrapper around dictionary::subDict which does not exit.

Definition at line 3853 of file meshRefinement.C.

References dict, Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, Foam::nl, and dictionary::null.

Here is the call graph for this function:

◆ lookup()

Foam::ITstream & lookup ( const dictionary & dict,
const word & keyword,
const bool noExit,
enum keyType::option matchOpt = keyType::REGEX )
static

Wrapper around dictionary::lookup which does not exit.

Definition at line 3885 of file meshRefinement.C.

References dict, ITstream::empty_stream(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, Foam::nl, and entry::stream().

Here is the call graph for this function:

Member Data Documentation

◆ MeshTypeNames

const Foam::Enum< Foam::meshRefinement::MeshType > MeshTypeNames
static

Definition at line 100 of file meshRefinement.H.

◆ debugTypeNames

const Foam::Enum< Foam::meshRefinement::debugType > debugTypeNames
static

Definition at line 115 of file meshRefinement.H.

◆ writeTypeNames

const Foam::Enum< Foam::meshRefinement::writeType > writeTypeNames
static

Definition at line 137 of file meshRefinement.H.


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