All to do with snapping to surface. More...
Public Member Functions | |
ClassName ("snappySnapDriver") | |
Runtime type information. More... | |
snappySnapDriver (meshRefinement &meshRefiner, const labelList &globalToMasterPatch, const labelList &globalToSlavePatch) | |
Construct from components. More... | |
snappySnapDriver (const snappySnapDriver &)=delete | |
Disallow default bitwise copy construction. More... | |
autoPtr< mapPolyMesh > | mergeZoneBaffles (const List< labelPair > &) |
Merge baffles. More... | |
void | detectNearSurfaces (const scalar planarCos, const indirectPrimitivePatch &, const pointField &nearestPoint, const vectorField &nearestNormal, vectorField &disp) const |
Per patch point override displacement if in gap situation. More... | |
void | smoothDisplacement (const snapParameters &snapParams, motionSmoother &) const |
Smooth the displacement field to the internal. More... | |
bool | scaleMesh (const snapParameters &snapParams, const label nInitErrors, const List< labelPair > &baffles, motionSmoother &) |
Do the hard work: move the mesh according to displacement,. More... | |
autoPtr< mapPolyMesh > | repatchToSurface (const snapParameters &snapParams, const labelList &adaptPatchIDs, const labelList &preserveFaces) |
Repatch faces according to surface nearest the face centre. More... | |
void | doSnap (const dictionary &snapDict, const dictionary &motionDict, const scalar featureCos, const scalar planarAngle, const snapParameters &snapParams) |
void | operator= (const snappySnapDriver &)=delete |
Disallow default bitwise assignment. More... | |
Static Public Member Functions | |
static scalarField | calcSnapDistance (const fvMesh &mesh, const snapParameters &snapParams, const indirectPrimitivePatch &) |
Calculate edge length per patch point. More... | |
static void | preSmoothPatch (const meshRefinement &meshRefiner, const snapParameters &snapParams, const label nInitErrors, const List< labelPair > &baffles, motionSmoother &) |
Smooth the mesh (patch and internal) to increase visibility. More... | |
static labelList | getZoneSurfacePoints (const fvMesh &mesh, const indirectPrimitivePatch &, const word &zoneName) |
Get points both on patch and facezone. More... | |
static tmp< pointField > | avgCellCentres (const fvMesh &mesh, const indirectPrimitivePatch &) |
Helper: calculate average cell centre per point. More... | |
static vectorField | calcNearestSurface (const meshRefinement &meshRefiner, const scalarField &snapDist, const indirectPrimitivePatch &, pointField &nearestPoint, vectorField &nearestNormal) |
Per patch point calculate point on nearest surface. Set as. More... | |
All to do with snapping to surface.
Definition at line 54 of file snappySnapDriver.H.
snappySnapDriver | ( | meshRefinement & | meshRefiner, |
const labelList & | globalToMasterPatch, | ||
const labelList & | globalToSlavePatch | ||
) |
Construct from components.
Definition at line 568 of file snappySnapDriver.C.
References snappySnapDriver::mergeZoneBaffles().
|
delete |
Disallow default bitwise copy construction.
ClassName | ( | "snappySnapDriver" | ) |
Runtime type information.
Foam::autoPtr< Foam::mapPolyMesh > mergeZoneBaffles | ( | const List< labelPair > & | baffles | ) |
Merge baffles.
Definition at line 583 of file snappySnapDriver.C.
References snappySnapDriver::calcSnapDistance(), Foam::endl(), surfaceZonesInfo::getNamedSurfaces(), Foam::Info, Foam::nl, Foam::returnReduce(), and List< T >::size().
Referenced by snappySnapDriver::snappySnapDriver().
|
static |
Calculate edge length per patch point.
Definition at line 612 of file snappySnapDriver.C.
References Foam::e, PrimitivePatch< FaceList, PointField >::edges(), forAll, PrimitivePatch< FaceList, PointField >::localPoints(), edge::mag(), Foam::max(), PrimitivePatch< FaceList, PointField >::meshPoints(), PrimitivePatch< FaceList, PointField >::pointEdges(), snappySnapDriver::preSmoothPatch(), List< T >::size(), snapParameters::snapTol(), and syncTools::syncPointList().
Referenced by snappySnapDriver::mergeZoneBaffles().
|
static |
Smooth the mesh (patch and internal) to increase visibility.
of surface points (on castellated mesh) w.r.t. surface.
Definition at line 652 of file snappySnapDriver.C.
References motionSmootherAlgo::correct(), cpuTime::cpuTimeIncrement(), Foam::endl(), forAll, snappySnapDriver::getZoneSurfacePoints(), Foam::Info, meshRefinement::MESH, meshRefinement::mesh(), primitiveMesh::nFaces(), Foam::nl, snapParameters::nSmoothPatch(), snapParameters::nSnap(), Time::path(), motionSmootherAlgo::scaleMesh(), motionSmootherAlgo::setDisplacement(), motionSmootherAlgo::setErrorReduction(), List< T >::setSize(), fvMesh::time(), meshRefinement::timeName(), meshRefinement::write(), meshRefinement::writeLevel(), and meshRefinement::WRITEMESH.
Referenced by snappySnapDriver::calcSnapDistance().
|
static |
Get points both on patch and facezone.
Definition at line 748 of file snappySnapDriver.C.
References snappySnapDriver::avgCellCentres(), HashTableCore::end(), Foam::exit(), polyMesh::faces(), polyMesh::faceZones(), Foam::FatalError, FatalErrorInFunction, HashTable< T, Key, Hash >::find(), Foam::findIndices(), ZoneMesh< ZoneType, MeshType >::findZoneID(), forAll, PrimitivePatch< FaceList, PointField >::meshPointMap(), and PrimitivePatch< FaceList, PointField >::nPoints().
Referenced by snappySnapDriver::preSmoothPatch().
|
static |
Helper: calculate average cell centre per point.
Definition at line 795 of file snappySnapDriver.C.
References primitiveMesh::cellCentres(), snappySnapDriver::detectNearSurfaces(), polyMesh::faceOwner(), forAll, PrimitivePatch< FaceList, PointField >::meshPoints(), PrimitivePatch< FaceList, PointField >::pointFaces(), tmp< T >::ref(), List< T >::size(), syncTools::syncPointList(), Foam::Zero, and VectorSpace< Vector< scalar >, scalar, 3 >::zero.
Referenced by snappySnapDriver::getZoneSurfacePoints().
void detectNearSurfaces | ( | const scalar | planarCos, |
const indirectPrimitivePatch & | pp, | ||
const pointField & | nearestPoint, | ||
const vectorField & | nearestNormal, | ||
vectorField & | disp | ||
) | const |
Per patch point override displacement if in gap situation.
Definition at line 851 of file snappySnapDriver.C.
References meshRefinement::ATTRACTION, snappySnapDriver::calcNearestSurface(), Foam::endl(), refinementSurfaces::findNearestIntersection(), forAll, meshRefinement::getMasterPoints(), surfaceZonesInfo::getNamedSurfaces(), surfaceZonesInfo::getUnnamedSurfaces(), Foam::Info, PrimitivePatch< FaceList, PointField >::localPoints(), PrimitivePatch< FaceList, PointField >::meshPoints(), PrimitivePatch< FaceList, PointField >::nPoints(), Time::path(), autoPtr< T >::reset(), Foam::returnReduce(), refinementSurfaces::surfaces(), refinementSurfaces::surfZones(), fvMesh::time(), and autoPtr< T >::valid().
Referenced by snappySnapDriver::avgCellCentres().
|
static |
Per patch point calculate point on nearest surface. Set as.
boundary conditions of motionSmoother displacement field. Return displacement of patch points.
Definition at line 1449 of file snappySnapDriver.C.
References cpuTime::cpuTimeIncrement(), Foam::endl(), refinementSurfaces::findNearest(), refinementSurfaces::findNearestRegion(), forAll, meshRefinement::gAverage(), meshRefinement::getMasterPoints(), surfaceZonesInfo::getNamedSurfaces(), surfaceZonesInfo::getUnnamedSurfaces(), Foam::gMax(), Foam::gMin(), Foam::Info, PrimitivePatch< FaceList, PointField >::localPoints(), Foam::mag(), meshRefinement::mesh(), PrimitivePatch< FaceList, PointField >::meshPoints(), Foam::min(), Foam::nl, Foam::Pout, Foam::returnReduce(), List< T >::size(), snappySnapDriver::smoothDisplacement(), Foam::sqr(), meshRefinement::surfaces(), refinementSurfaces::surfZones(), syncTools::syncPointList(), fvMesh::time(), WarningInFunction, and Foam::Zero.
Referenced by snappySnapDriver::detectNearSurfaces().
void smoothDisplacement | ( | const snapParameters & | snapParams, |
motionSmoother & | meshMover | ||
) | const |
Smooth the displacement field to the internal.
Definition at line 1701 of file snappySnapDriver.C.
References cpuTime::cpuTimeIncrement(), motionSmootherData::displacement(), Foam::endl(), Foam::Info, PrimitivePatch< FaceList, PointField >::localPoints(), Foam::mag(), meshRefinement::MESH, PrimitivePatch< FaceList, PointField >::meshPoints(), Foam::nl, snapParameters::nSmoothDispl(), motionSmootherAlgo::patch(), Time::path(), motionSmootherAlgo::pMesh(), snappySnapDriver::scaleMesh(), motionSmootherAlgo::smooth(), fvMesh::time(), Ostream::write(), meshRefinement::writeLevel(), and meshRefinement::WRITEMESH.
Referenced by snappySnapDriver::calcNearestSurface().
bool scaleMesh | ( | const snapParameters & | snapParams, |
const label | nInitErrors, | ||
const List< labelPair > & | baffles, | ||
motionSmoother & | meshMover | ||
) |
Do the hard work: move the mesh according to displacement,.
locally relax the displacement. Return true if ended up with correct mesh, false if not.
Definition at line 1770 of file snappySnapDriver.C.
References cpuTime::cpuTimeIncrement(), motionSmootherData::displacement(), Foam::endl(), Foam::identity(), Foam::Info, Foam::mag(), meshRefinement::MESH, primitiveMesh::nFaces(), Foam::nl, snapParameters::nSnap(), snappySnapDriver::repatchToSurface(), motionSmootherAlgo::scaleMesh(), motionSmootherAlgo::setErrorReduction(), fvMesh::time(), regIOobject::write(), and fvMesh::write().
Referenced by snappySnapDriver::smoothDisplacement().
Foam::autoPtr< Foam::mapPolyMesh > repatchToSurface | ( | const snapParameters & | snapParams, |
const labelList & | adaptPatchIDs, | ||
const labelList & | preserveFaces | ||
) |
Repatch faces according to surface nearest the face centre.
calculate face-wise nearest surface point
Definition at line 1831 of file snappySnapDriver.C.
References DynamicList< T, SizeInc, SizeMult, SizeDiv >::append(), face::area(), polyMesh::boundaryMesh(), DynamicList< T, SizeInc, SizeMult, SizeDiv >::clear(), cpuTime::cpuTimeIncrement(), snappySnapDriver::doSnap(), Foam::endl(), f1, primitiveMesh::faceCentres(), polyMesh::faceZones(), UList< T >::fcIndex(), refinementSurfaces::findNearestRegion(), forAll, surfaceZonesInfo::getNamedSurfaces(), surfaceZonesInfo::getUnnamedSurfaces(), refinementSurfaces::globalRegion(), Foam::Info, PrimitivePatch< FaceList, PointField >::localFaces(), PrimitivePatch< FaceList, PointField >::localPoints(), Foam::mag(), meshRefinement::makePatch(), Foam::max(), primitiveMesh::nFaces(), Foam::nl, patchi, PatchTools::pointNormals(), UList< T >::rcIndex(), Foam::returnReduce(), DynamicList< T, SizeInc, SizeMult, SizeDiv >::setCapacity(), List< T >::setSize(), List< T >::size(), Foam::sqr(), polyPatch::start(), refinementSurfaces::surfaces(), refinementSurfaces::surfZones(), and fvMesh::time().
Referenced by snappySnapDriver::scaleMesh().
void doSnap | ( | const dictionary & | snapDict, |
const dictionary & | motionDict, | ||
const scalar | featureCos, | ||
const scalar | planarAngle, | ||
const snapParameters & | snapParams | ||
) |
Only if in feature attraction mode:
Nearest feature
Definition at line 2095 of file snappySnapDriver.C.
References meshRefinement::ATTRACTION, surfaceZonesInfo::BAFFLE, surfaceZonesInfo::BOUNDARY, motionSmootherAlgo::checkMesh(), motionSmootherAlgo::correct(), Foam::cos(), cpuTime::cpuTimeIncrement(), Foam::degToRad(), snapParameters::detectNearSurfacesSnap(), motionSmootherData::displacement(), Foam::endl(), Foam::faceMap(), polyMesh::faces(), polyMesh::faceZones(), ZoneMesh< ZoneType, MeshType >::findZoneID(), Pair< Type >::first(), forAll, Foam::Info, PrimitivePatch< FaceList, PointField >::localPoints(), Foam::mag(), meshRefinement::makeDisplacementField(), meshRefinement::makePatch(), VectorSpace< Vector< scalar >, scalar, 3 >::max, meshRefinement::MESH, Foam::name(), refinementSurfaces::names(), MeshObject< polyMesh, PatchMeshObject, pointMesh >::New(), primitiveMesh::nFaces(), snapParameters::nFeatureSnap(), Foam::nl, PrimitivePatch< FaceList, PointField >::nPoints(), primitiveMesh::nPoints(), Time::path(), Foam::Pout, Foam::returnReduce(), Pair< Type >::second(), motionSmootherAlgo::setDisplacement(), List< T >::setSize(), refinementSurfaces::surfaces(), refinementSurfaces::surfZones(), syncTools::syncFaceList(), syncTools::syncPointList(), fvMesh::time(), FixedList< T, Size >::transfer(), meshRefinement::updateList(), autoPtr< T >::valid(), WarningInFunction, Ostream::write(), regIOobject::write(), meshRefinement::writeLevel(), meshRefinement::WRITEMESH, and Foam::Zero.
Referenced by snappySnapDriver::repatchToSurface().
|
delete |
Disallow default bitwise assignment.