Adds two meshes without using any polyMesh morphing. More...
#include <dynamicMesh/polyMeshAdder.H>
Adds two meshes without using any polyMesh morphing.
Gets faces to couple as faceCoupleInfo which is list of faces on both meshes. Returns map from last mesh addition.
Definition at line 60 of file polyMeshAdder.H.
Static Public Member Functions | |
static autoPtr< polyMesh > | add (const IOobject &io, const polyMesh &mesh0, const polyMesh &mesh1, const faceCoupleInfo &coupleInfo, autoPtr< mapAddedPolyMesh > &mapPtr) |
Add two polyMeshes. Returns new polyMesh and map construct.
| |
static autoPtr< mapAddedPolyMesh > | add (polyMesh &mesh0, const polyMesh &mesh1, const faceCoupleInfo &coupleInfo, const bool validBoundary=true) |
Inplace add mesh to polyMesh. Returns map construct.
| |
static Map< label > | findSharedPoints (const polyMesh &, const scalar mergeTol) |
Find topologically&geometrically shared points.
| |
static void | mergePoints (const polyMesh &, const Map< label > &pointToMaster, polyTopoChange &meshMod) |
Helper: Merge points.
|
Foam::autoPtr< Foam::polyMesh > add | ( | const IOobject & | io, |
const polyMesh & | mesh0, | ||
const polyMesh & | mesh1, | ||
const faceCoupleInfo & | coupleInfo, | ||
autoPtr< mapAddedPolyMesh > & | mapPtr | ||
) | [static]
|
Add two polyMeshes. Returns new polyMesh and map construct.
Definition at line 1262 of file polyMeshAdder.C.
References polyMesh::addPatches(), polyMesh::boundaryMesh(), faceCoupleInfo::cutFaces(), Foam::identity(), primitiveMesh::nCells(), primitiveMesh::nFaces(), primitiveMesh::nInternalFaces(), primitiveMesh::nPoints(), autoPtr< T >::reset(), PtrList< T >::size(), and Foam::xferMove().
Referenced by fvMeshAdder::add().
Foam::autoPtr< Foam::mapAddedPolyMesh > add | ( | polyMesh & | mesh0, |
const polyMesh & | mesh1, | ||
const faceCoupleInfo & | coupleInfo, | ||
const bool | validBoundary = true
|
||
) | [static]
|
Inplace add mesh to polyMesh. Returns map construct.
Definition at line 1481 of file polyMeshAdder.C.
References polyMesh::boundaryMesh(), polyMesh::cellZones(), ZoneMesh< ZoneType, MeshType >::clear(), polyMesh::faceZones(), forAll, Foam::identity(), primitiveMesh::nCells(), primitiveMesh::nFaces(), primitiveMesh::nPoints(), polyMesh::pointZones(), polyMesh::resetMotion(), polyMesh::resetPrimitives(), PtrList< T >::setSize(), PtrList< T >::size(), and Foam::xferMove().
Find topologically&geometrically shared points.
returns Map from point to master point (all in mesh point labels) for any sets of points that need to be merged.
Old: geometric merging. Causes problems for two close shared points.
labelList sharedToMerged; pointField mergedPoints; bool hasMerged = Foam::mergePoints ( pointField ( mesh.points(), sharedPointLabels ), mergeDist, false, sharedToMerged, mergedPoints );
Find out which sets of points get merged and create a map from mesh point to unique point.
Map<label> pointToMaster(10*sharedToMerged.size());
if (hasMerged) { labelListList mergeSets ( invertOneToMany ( sharedToMerged.size(), sharedToMerged ) );
label nMergeSets = 0;
forAll(mergeSets, setI) { const labelList& mergeSet = mergeSets[setI];
if (mergeSet.size() > 1) { Take as master the shared point with the lowest mesh point label. (rather arbitrarily - could use max or any other one of the points)
nMergeSets++;
label masterI = labelMax;
forAll(mergeSet, i) { label sharedI = mergeSet[i];
masterI = min(masterI, sharedPointLabels[sharedI]); }
forAll(mergeSet, i) { label sharedI = mergeSet[i];
pointToMaster.insert(sharedPointLabels[sharedI], masterI); } } }
if (debug) { Pout<< "polyMeshAdder : merging:" << pointToMaster.size() << " into " << nMergeSets << " sets." << endl; } }
Definition at line 1785 of file polyMeshAdder.C.
References Foam::abort(), HashTable< T, label, Hash< label > >::end(), Foam::endl(), Foam::FatalError, FatalErrorIn, HashTable< T, Key, Hash >::find(), Foam::findIndex(), forAll, forAllConstIter, polyMesh::globalData(), HashTable< T, Key, Hash >::insert(), Foam::invertOneToMany(), Foam::mergePoints(), Foam::min(), polyMesh::points(), List< T >::setSize(), globalMeshData::sharedPointAddr(), globalMeshData::sharedPointLabels(), and List< T >::size().
void mergePoints | ( | const polyMesh & | mesh, |
const Map< label > & | pointToMaster, | ||
polyTopoChange & | meshMod | ||
) | [static]
|
Helper: Merge points.
Removes all points that don't map to themselves
Definition at line 2001 of file polyMeshAdder.C.
References polyMesh::boundaryMesh(), HashTable< T, Key, Hash >::end(), f(), polyMesh::faceNeighbour(), polyMesh::faceOwner(), polyMesh::faces(), polyMesh::faceZones(), HashTable< T, Key, Hash >::find(), faceZone::flipMap(), forAll, polyMesh::points(), polyTopoChange::removePoint(), polyTopoChange::setAction(), faceZone::whichFace(), polyBoundaryMesh::whichPatch(), and ZoneMesh< ZoneType, MeshType >::whichZone().