Public Member Functions | Private Member Functions | Private Attributes
refinementSurfaces Class Reference

Container for data on surfaces used for surface-driven refinement. Contains all the data about the level of refinement needed per surface. More...

Collaboration diagram for refinementSurfaces:
Collaboration graph
[legend]

Public Member Functions

 refinementSurfaces (const searchableSurfaces &allGeometry, const dictionary &, const label gapLevelIncrement)
 Construct from surfaces and dictionary. More...
 
 refinementSurfaces (const searchableSurfaces &allGeometry, const labelList &surfaces, const wordList &names, const PtrList< surfaceZonesInfo > &surfZones, const labelList &regionOffset, const labelList &minLevel, const labelList &maxLevel, const labelList &gapLevel, const scalarField &perpendicularAngle, PtrList< dictionary > &patchInfo)
 Construct from components. More...
 
const searchableSurfacesgeometry () const
 
const labelListsurfaces () const
 
const wordListnames () const
 Names of surfaces. More...
 
const PtrList< surfaceZonesInfo > & surfZones () const
 
const labelListregionOffset () const
 From local region number to global region number. More...
 
const labelListminLevel () const
 From global region number to refinement level. More...
 
const labelListmaxLevel () const
 From global region number to refinement level. More...
 
const labelListgapLevel () const
 From global region number to small gap refinement level. More...
 
const List< FixedList< label, 3 > > & extendedGapLevel () const
 From global region number to specification of gap and its. More...
 
const List< volumeType > & extendedGapMode () const
 From global region number to side of surface to detect. More...
 
const scalarFieldperpendicularAngle () const
 From global region number to perpendicular angle. More...
 
const PtrList< dictionary > & patchInfo () const
 From global region number to patch type. More...
 
label globalRegion (const label surfI, const label regionI) const
 From surface and region on surface to global region. More...
 
label minLevel (const label surfI, const label regionI) const
 Min level for surface and region on surface. More...
 
label maxLevel (const label surfI, const label regionI) const
 Max level for surface and region on surface. More...
 
label nRegions () const
 
labelList maxGapLevel () const
 Per surface the maximum extendedGapLevel over all its regions. More...
 
void setMinLevelFields (const shellSurfaces &shells)
 Calculate minLevelFields. More...
 
void findHigherIntersection (const shellSurfaces &shells, const pointField &start, const pointField &end, const labelList &currentLevel, labelList &surfaces, labelList &surfaceLevel) const
 Find intersection of edge. Return -1 or first surface. More...
 
void findAllHigherIntersections (const pointField &start, const pointField &end, const labelList &currentLevel, const labelList &globalRegionLevel, List< vectorList > &surfaceNormal, labelListList &surfaceLevel) const
 Find all intersections of edge. Unsorted order. More...
 
void findAllHigherIntersections (const pointField &start, const pointField &end, const labelList &currentLevel, const labelList &globalRegionLevel, List< pointList > &surfaceLocation, List< vectorList > &surfaceNormal, labelListList &surfaceLevel) const
 Find all intersections of edge. Unsorted order. More...
 
void findNearestIntersection (const labelList &surfacesToTest, const pointField &start, const pointField &end, labelList &surface1, List< pointIndexHit > &hit1, labelList &region1, labelList &surface2, List< pointIndexHit > &hit2, labelList &region2) const
 Find intersection nearest to the endpoints. surface1,2 are. More...
 
void findNearestIntersection (const labelList &surfacesToTest, const pointField &start, const pointField &end, labelList &surface1, List< pointIndexHit > &hit1, labelList &region1, vectorField &normal1, labelList &surface2, List< pointIndexHit > &hit2, labelList &region2, vectorField &normal2) const
 findNearestIntersection but also get normals More...
 
void findNearestIntersection (const pointField &start, const pointField &end, labelList &surfaces, vectorField &normal) const
 Find nearest (to start only) intersection of edge. More...
 
void findNearestIntersection (const pointField &start, const pointField &end, labelList &surfaces, List< pointIndexHit > &, vectorField &normal) const
 Find nearest (to start only) intersection of edge. More...
 
void findAnyIntersection (const pointField &start, const pointField &end, labelList &surfaces, List< pointIndexHit > &) const
 Used for debugging only: find intersection of edge. More...
 
void findNearest (const labelList &surfacesToTest, const pointField &samples, const scalarField &nearestDistSqr, labelList &surfaces, List< pointIndexHit > &) const
 Find nearest point on surfaces. More...
 
void findNearestRegion (const labelList &surfacesToTest, const pointField &samples, const scalarField &nearestDistSqr, labelList &hitSurface, labelList &hitRegion) const
 Find nearest point on surfaces. Return surface and region on. More...
 
void findNearestRegion (const labelList &surfacesToTest, const pointField &samples, const scalarField &nearestDistSqr, labelList &hitSurface, List< pointIndexHit > &hitInfo, labelList &hitRegion, vectorField &hitNormal) const
 Find nearest point on surfaces. Return surface, region and. More...
 
void findInside (const labelList &surfacesToTest, const pointField &pt, labelList &insideSurfaces) const
 Detect if a point is 'inside' (closed) surfaces. More...
 
void findNearest (const labelList &surfacesToTest, const labelListList &regions, const pointField &samples, const scalarField &nearestDistSqr, labelList &hitSurface, List< pointIndexHit > &hitInfo) const
 Find nearest point on selected regions of surfaces. More...
 
void findNearestRegion (const labelList &surfacesToTest, const labelListList &regions, const pointField &samples, const scalarField &nearestDistSqr, labelList &hitSurface, List< pointIndexHit > &hitInfo, labelList &hitRegion, vectorField &hitNormal) const
 Find nearest point on selected regions of surfaces. More...
 

Private Member Functions

labelList findHigherLevel (const searchableSurface &geom, const shellSurfaces &shells, const List< pointIndexHit > &intersectionInfo, const labelList &surfaceLevel) const
 Given intersection results with geom detect local shell refinement. More...
 
 refinementSurfaces (const refinementSurfaces &)
 Disallow default bitwise copy construct. More...
 
void operator= (const refinementSurfaces &)
 Disallow default bitwise assignment. More...
 

Private Attributes

const searchableSurfacesallGeometry_
 Reference to all geometry. More...
 
labelList surfaces_
 Indices of surfaces that are refinement ones. More...
 
wordList names_
 Surface name (word) More...
 
PtrList< surfaceZonesInfosurfZones_
 List of surface zone (face and cell zone) information. More...
 
labelList regionOffset_
 From local region number to global region number. More...
 
labelList minLevel_
 From global region number to refinement level. More...
 
labelList maxLevel_
 From global region number to refinement level. More...
 
labelList gapLevel_
 From global region number to small-gap level. More...
 
List< FixedList< label, 3 > > extendedGapLevel_
 From global region number to small-gap level specification. More...
 
List< volumeTypeextendedGapMode_
 From global region number to side of surface to detect. More...
 
scalarField perpendicularAngle_
 From global region number to perpendicular angle. More...
 
PtrList< dictionarypatchInfo_
 From global region number to patchType. More...
 

Detailed Description

Container for data on surfaces used for surface-driven refinement. Contains all the data about the level of refinement needed per surface.

Source files

Definition at line 60 of file refinementSurfaces.H.

Constructor & Destructor Documentation

◆ refinementSurfaces() [1/3]

refinementSurfaces ( const refinementSurfaces )
private

Disallow default bitwise copy construct.

◆ refinementSurfaces() [2/3]

refinementSurfaces ( const searchableSurfaces allGeometry,
const dictionary surfacesDict,
const label  gapLevelIncrement 
)

◆ refinementSurfaces() [3/3]

refinementSurfaces ( const searchableSurfaces allGeometry,
const labelList surfaces,
const wordList names,
const PtrList< surfaceZonesInfo > &  surfZones,
const labelList regionOffset,
const labelList minLevel,
const labelList maxLevel,
const labelList gapLevel,
const scalarField perpendicularAngle,
PtrList< dictionary > &  patchInfo 
)

Construct from components.

Definition at line 482 of file refinementSurfaces.C.

References forAll, and PtrList::set().

Here is the call graph for this function:

Member Function Documentation

◆ findHigherLevel()

Foam::labelList findHigherLevel ( const searchableSurface geom,
const shellSurfaces shells,
const List< pointIndexHit > &  intersectionInfo,
const labelList surfaceLevel 
) const
private

Given intersection results with geom detect local shell refinement.

level (possibly cached on triangles of geom)

Definition at line 39 of file refinementSurfaces.C.

References DynamicList::append(), shellSurfaces::findHigherLevel(), forAll, searchableSurface::getField(), Foam::max(), Foam::reduce(), Foam::returnReduce(), samples(), and List::size().

Here is the call graph for this function:

◆ operator=()

void operator= ( const refinementSurfaces )
private

Disallow default bitwise assignment.

◆ geometry()

const searchableSurfaces& geometry ( ) const
inline

Definition at line 152 of file refinementSurfaces.H.

References refinementSurfaces::allGeometry_.

Referenced by autoSnapDriver::calcNearestSurface().

Here is the caller graph for this function:

◆ surfaces()

const labelList& surfaces ( ) const
inline

◆ names()

const wordList& names ( ) const
inline

Names of surfaces.

Definition at line 163 of file refinementSurfaces.H.

References refinementSurfaces::names_.

Referenced by createRefinementSurfaces(), and main().

Here is the caller graph for this function:

◆ surfZones()

const PtrList<surfaceZonesInfo>& surfZones ( ) const
inline

◆ regionOffset()

const labelList& regionOffset ( ) const
inline

From local region number to global region number.

Definition at line 174 of file refinementSurfaces.H.

References refinementSurfaces::regionOffset_.

◆ minLevel() [1/2]

const labelList& minLevel ( ) const
inline

From global region number to refinement level.

Definition at line 180 of file refinementSurfaces.H.

References refinementSurfaces::minLevel_.

Referenced by createRefinementSurfaces().

Here is the caller graph for this function:

◆ maxLevel() [1/2]

const labelList& maxLevel ( ) const
inline

From global region number to refinement level.

Definition at line 186 of file refinementSurfaces.H.

References refinementSurfaces::maxLevel_.

Referenced by createRefinementSurfaces().

Here is the caller graph for this function:

◆ gapLevel()

const labelList& gapLevel ( ) const
inline

From global region number to small gap refinement level.

Definition at line 192 of file refinementSurfaces.H.

References refinementSurfaces::gapLevel_.

Referenced by createRefinementSurfaces().

Here is the caller graph for this function:

◆ extendedGapLevel()

const List<FixedList<label, 3> >& extendedGapLevel ( ) const
inline

From global region number to specification of gap and its.

refinement: 3 labels specifying

  • minimum wanted number of cells in the gap
  • minimum cell level when to start trying to detect gaps
  • maximum cell level to refine to (so do not detect gaps if cell >= maximum level)

Definition at line 203 of file refinementSurfaces.H.

◆ extendedGapMode()

const List<volumeType>& extendedGapMode ( ) const
inline

From global region number to side of surface to detect.

Definition at line 209 of file refinementSurfaces.H.

References refinementSurfaces::extendedGapMode_.

◆ perpendicularAngle()

const scalarField& perpendicularAngle ( ) const
inline

From global region number to perpendicular angle.

Definition at line 215 of file refinementSurfaces.H.

References refinementSurfaces::perpendicularAngle_.

◆ patchInfo()

const PtrList<dictionary>& patchInfo ( ) const
inline

From global region number to patch type.

Definition at line 221 of file refinementSurfaces.H.

References refinementSurfaces::patchInfo_.

Referenced by main().

Here is the caller graph for this function:

◆ globalRegion()

label globalRegion ( const label  surfI,
const label  regionI 
) const
inline

◆ minLevel() [2/2]

label minLevel ( const label  surfI,
const label  regionI 
) const
inline

Min level for surface and region on surface.

Definition at line 236 of file refinementSurfaces.H.

References refinementSurfaces::globalRegion(), and refinementSurfaces::minLevel_.

Here is the call graph for this function:

◆ maxLevel() [2/2]

label maxLevel ( const label  surfI,
const label  regionI 
) const
inline

Max level for surface and region on surface.

Definition at line 242 of file refinementSurfaces.H.

References refinementSurfaces::globalRegion(), and refinementSurfaces::maxLevel_.

Here is the call graph for this function:

◆ nRegions()

label nRegions ( ) const
inline

Definition at line 247 of file refinementSurfaces.H.

References refinementSurfaces::minLevel_, and List::size().

Referenced by main().

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

◆ maxGapLevel()

Foam::labelList maxGapLevel ( ) const

Per surface the maximum extendedGapLevel over all its regions.

Definition at line 573 of file refinementSurfaces.C.

References refinementSurfaces::allGeometry_, refinementSurfaces::extendedGapLevel_, forAll, refinementSurfaces::globalRegion(), Foam::max(), List::size(), and refinementSurfaces::surfaces_.

Here is the call graph for this function:

◆ setMinLevelFields()

void setMinLevelFields ( const shellSurfaces shells)

◆ findHigherIntersection()

void findHigherIntersection ( const shellSurfaces shells,
const pointField start,
const pointField end,
const labelList currentLevel,
labelList surfaces,
labelList surfaceLevel 
) const

Find intersection of edge. Return -1 or first surface.

with higher (than currentLevel) minlevel. Return surface number and level.

Definition at line 723 of file refinementSurfaces.C.

References searchableSurface::findLineAny(), forAll, searchableSurface::getRegion(), Foam::identity(), Foam::returnReduce(), List::setSize(), and List::size().

Referenced by meshRefinement::updateIntersections().

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

◆ findAllHigherIntersections() [1/2]

void findAllHigherIntersections ( const pointField start,
const pointField end,
const labelList currentLevel,
const labelList globalRegionLevel,
List< vectorList > &  surfaceNormal,
labelListList surfaceLevel 
) const

Find all intersections of edge. Unsorted order.

Definition at line 885 of file refinementSurfaces.C.

References List::clear(), forAll, n, List::setSize(), and List::size().

Here is the call graph for this function:

◆ findAllHigherIntersections() [2/2]

void findAllHigherIntersections ( const pointField start,
const pointField end,
const labelList currentLevel,
const labelList globalRegionLevel,
List< pointList > &  surfaceLocation,
List< vectorList > &  surfaceNormal,
labelListList surfaceLevel 
) const

Find all intersections of edge. Unsorted order.

Definition at line 973 of file refinementSurfaces.C.

References forAll, n, List::setSize(), and List::size().

Here is the call graph for this function:

◆ findNearestIntersection() [1/4]

void findNearestIntersection ( const labelList surfacesToTest,
const pointField start,
const pointField end,
labelList surface1,
List< pointIndexHit > &  hit1,
labelList region1,
labelList surface2,
List< pointIndexHit > &  hit2,
labelList region2 
) const

Find intersection nearest to the endpoints. surface1,2 are.

not indices into surfacesToTest but refinement surface indices. Returns surface, region on surface (so not global surface) and position on surface.

Definition at line 1063 of file refinementSurfaces.C.

References forAll, and List::setSize().

Referenced by autoSnapDriver::detectNearSurfaces().

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

◆ findNearestIntersection() [2/4]

void findNearestIntersection ( const labelList surfacesToTest,
const pointField start,
const pointField end,
labelList surface1,
List< pointIndexHit > &  hit1,
labelList region1,
vectorField normal1,
labelList surface2,
List< pointIndexHit > &  hit2,
labelList region2,
vectorField normal2 
) const

findNearestIntersection but also get normals

Definition at line 1193 of file refinementSurfaces.C.

References searchableSurface::findLine(), forAll, searchableSurface::getNormal(), searchableSurface::getRegion(), List::setSize(), and Vector< scalar >::zero.

Here is the call graph for this function:

◆ findNearestIntersection() [3/4]

void findNearestIntersection ( const pointField start,
const pointField end,
labelList surfaces,
vectorField normal 
) const

Find nearest (to start only) intersection of edge.

Definition at line 1316 of file refinementSurfaces.C.

References searchableSurface::findLine(), forAll, searchableSurface::getNormal(), List::setSize(), and Vector< scalar >::zero.

Here is the call graph for this function:

◆ findNearestIntersection() [4/4]

void findNearestIntersection ( const pointField start,
const pointField end,
labelList surfaces,
List< pointIndexHit > &  hitInfo1,
vectorField normal 
) const

Find nearest (to start only) intersection of edge.

Definition at line 1359 of file refinementSurfaces.C.

References searchableSurface::findLine(), forAll, searchableSurface::getNormal(), List::setSize(), and Vector< scalar >::zero.

Here is the call graph for this function:

◆ findAnyIntersection()

void findAnyIntersection ( const pointField start,
const pointField end,
labelList surfaces,
List< pointIndexHit > &  hitInfo 
) const

Used for debugging only: find intersection of edge.

Definition at line 1409 of file refinementSurfaces.C.

References searchableSurfacesQueries::findAnyIntersection().

Here is the call graph for this function:

◆ findNearest() [1/2]

void findNearest ( const labelList surfacesToTest,
const pointField samples,
const scalarField nearestDistSqr,
labelList surfaces,
List< pointIndexHit > &  hitInfo 
) const

Find nearest point on surfaces.

Definition at line 1430 of file refinementSurfaces.C.

References searchableSurfacesQueries::findNearest(), forAll, and samples().

Referenced by autoSnapDriver::calcNearestSurface().

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

◆ findNearestRegion() [1/3]

void findNearestRegion ( const labelList surfacesToTest,
const pointField samples,
const scalarField nearestDistSqr,
labelList hitSurface,
labelList hitRegion 
) const

Find nearest point on surfaces. Return surface and region on.

surface (so not global surface)

Definition at line 1463 of file refinementSurfaces.C.

References Foam::findIndices(), searchableSurfacesQueries::findNearest(), forAll, samples(), List::setSize(), and List::size().

Referenced by autoSnapDriver::calcNearestFace(), autoSnapDriver::calcNearestSurface(), and autoSnapDriver::repatchToSurface().

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

◆ findNearestRegion() [2/3]

void findNearestRegion ( const labelList surfacesToTest,
const pointField samples,
const scalarField nearestDistSqr,
labelList hitSurface,
List< pointIndexHit > &  hitInfo,
labelList hitRegion,
vectorField hitNormal 
) const

Find nearest point on surfaces. Return surface, region and.

normal on surface (so not global surface)

Definition at line 1526 of file refinementSurfaces.C.

References Foam::findIndices(), searchableSurfacesQueries::findNearest(), forAll, samples(), List::setSize(), List::size(), and Vector< scalar >::zero.

Here is the call graph for this function:

◆ findInside()

void findInside ( const labelList surfacesToTest,
const pointField pt,
labelList insideSurfaces 
) const

Detect if a point is 'inside' (closed) surfaces.

Returns -1 if not, returns first surface it is.

Definition at line 1647 of file refinementSurfaces.C.

References surfaceZonesInfo::areaSelectionAlgoNames, Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, volumeType::INSIDE, surfaceZonesInfo::INSIDE, geometryBase::name(), surfaceZonesInfo::OUTSIDE, volumeType::OUTSIDE, and List::setSize().

Here is the call graph for this function:

◆ findNearest() [2/2]

void findNearest ( const labelList surfacesToTest,
const labelListList regions,
const pointField samples,
const scalarField nearestDistSqr,
labelList hitSurface,
List< pointIndexHit > &  hitInfo 
) const

Find nearest point on selected regions of surfaces.

Definition at line 1710 of file refinementSurfaces.C.

References searchableSurfacesQueries::findNearest(), forAll, and samples().

Here is the call graph for this function:

◆ findNearestRegion() [3/3]

void findNearestRegion ( const labelList surfacesToTest,
const labelListList regions,
const pointField samples,
const scalarField nearestDistSqr,
labelList hitSurface,
List< pointIndexHit > &  hitInfo,
labelList hitRegion,
vectorField hitNormal 
) const

Find nearest point on selected regions of surfaces.

Definition at line 1747 of file refinementSurfaces.C.

References Foam::findIndices(), searchableSurfacesQueries::findNearest(), forAll, samples(), List::setSize(), List::size(), and Vector< scalar >::zero.

Here is the call graph for this function:

Field Documentation

◆ allGeometry_

const searchableSurfaces& allGeometry_
private

Reference to all geometry.

Definition at line 65 of file refinementSurfaces.H.

Referenced by refinementSurfaces::geometry(), and refinementSurfaces::maxGapLevel().

◆ surfaces_

labelList surfaces_
private

Indices of surfaces that are refinement ones.

Definition at line 68 of file refinementSurfaces.H.

Referenced by refinementSurfaces::maxGapLevel(), and refinementSurfaces::surfaces().

◆ names_

wordList names_
private

Surface name (word)

Definition at line 71 of file refinementSurfaces.H.

Referenced by refinementSurfaces::names().

◆ surfZones_

PtrList<surfaceZonesInfo> surfZones_
private

List of surface zone (face and cell zone) information.

Definition at line 74 of file refinementSurfaces.H.

Referenced by refinementSurfaces::surfZones().

◆ regionOffset_

labelList regionOffset_
private

From local region number to global region number.

Definition at line 77 of file refinementSurfaces.H.

Referenced by refinementSurfaces::globalRegion(), and refinementSurfaces::regionOffset().

◆ minLevel_

labelList minLevel_
private

From global region number to refinement level.

Definition at line 80 of file refinementSurfaces.H.

Referenced by refinementSurfaces::minLevel(), and refinementSurfaces::nRegions().

◆ maxLevel_

labelList maxLevel_
private

From global region number to refinement level.

Definition at line 83 of file refinementSurfaces.H.

Referenced by refinementSurfaces::maxLevel().

◆ gapLevel_

labelList gapLevel_
private

From global region number to small-gap level.

Definition at line 86 of file refinementSurfaces.H.

Referenced by refinementSurfaces::gapLevel().

◆ extendedGapLevel_

List<FixedList<label, 3> > extendedGapLevel_
private

From global region number to small-gap level specification.

Definition at line 89 of file refinementSurfaces.H.

Referenced by refinementSurfaces::maxGapLevel().

◆ extendedGapMode_

List<volumeType> extendedGapMode_
private

From global region number to side of surface to detect.

Definition at line 92 of file refinementSurfaces.H.

Referenced by refinementSurfaces::extendedGapMode().

◆ perpendicularAngle_

scalarField perpendicularAngle_
private

From global region number to perpendicular angle.

Definition at line 95 of file refinementSurfaces.H.

Referenced by refinementSurfaces::perpendicularAngle().

◆ patchInfo_

PtrList<dictionary> patchInfo_
private

From global region number to patchType.

Definition at line 98 of file refinementSurfaces.H.

Referenced by refinementSurfaces::patchInfo().


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