FaceCellWave< Type, TrackingData > Class Template Reference

Wave propagation of information through grid. Every iteration information goes through one layer of cells. Templated on information that is transferred. More...

Inheritance diagram for FaceCellWave< Type, TrackingData >:
Collaboration diagram for FaceCellWave< Type, TrackingData >:

Public Member Functions

 FaceCellWave (const polyMesh &, UList< Type > &allFaceInfo, UList< Type > &allCellInfo, TrackingData &td=defaultTrackingData_)
 
 FaceCellWave (const polyMesh &, const labelList &initialChangedFaces, const List< Type > &changedFacesInfo, UList< Type > &allFaceInfo, UList< Type > &allCellInfo, const label maxIter, TrackingData &td=defaultTrackingData_)
 Construct from mesh and list of changed faces with the Type. More...
 
 FaceCellWave (const polyMesh &, const labelPairList &explicitConnections, const labelList &initialChangedFaces, const List< Type > &changedFacesInfo, UList< Type > &allFaceInfo, UList< Type > &allCellInfo, const label maxIter, TrackingData &td=defaultTrackingData_)
 Construct from mesh and explicitly connected boundary faces. More...
 
 FaceCellWave (const FaceCellWave &)=delete
 Disallow default bitwise copy construction. More...
 
virtual ~FaceCellWave ()
 Destructor. More...
 
UList< Type > & allFaceInfo ()
 Access allFaceInfo. More...
 
UList< Type > & allCellInfo ()
 Access allCellInfo. More...
 
const TrackingData & data () const
 Additional data to be passed into container. More...
 
TrackingData & data ()
 Additional data to be passed into container. More...
 
const polyMeshmesh () const
 Access mesh. More...
 
label getUnsetCells () const
 Get number of unvisited cells, i.e. cells that were not (yet) More...
 
label getUnsetFaces () const
 Get number of unvisited faces. More...
 
void setFaceInfo (const labelList &changedFaces, const List< Type > &changedFacesInfo)
 Set initial changed faces. More...
 
virtual label faceToCell ()
 Propagate from face to cell. Returns total number of cells. More...
 
virtual label cellToFace ()
 Propagate from cell to face. Returns total number of faces. More...
 
virtual label iterate (const label maxIter)
 Iterate until no changes or maxIter reached. Returns actual. More...
 
void operator= (const FaceCellWave &)=delete
 Disallow default bitwise assignment. More...
 

Static Public Member Functions

static scalar propagationTol ()
 Access to tolerance. More...
 
static void setPropagationTol (const scalar tol)
 Change tolerance. More...
 

Static Public Attributes

static int defaultTrackingData_ = -1
 Default tracking data to go with default template argument. More...
 

Protected Member Functions

bool updateCell (const label celli, const label neighbourFacei, const Type &neighbourInfo, const scalar tol, Type &cellInfo)
 Updates cellInfo with information from neighbour. Updates all. More...
 
bool updateFace (const label facei, const label neighbourCelli, const Type &neighbourInfo, const scalar tol, Type &faceInfo)
 Updates faceInfo with information from neighbour. Updates all. More...
 
bool updateFace (const label facei, const Type &neighbourInfo, const scalar tol, Type &faceInfo)
 Updates faceInfo with information from same face. Updates all. More...
 
void checkCyclic (const polyPatch &pPatch) const
 Debugging: check info on both sides of cyclic. More...
 
template<class PatchType >
bool hasPatch () const
 Has cyclic patch? More...
 
void mergeFaceInfo (const polyPatch &patch, const label nFaces, const labelList &, const List< Type > &)
 Merge received patch data into global data. More...
 
label getChangedPatchFaces (const polyPatch &patch, const label startFacei, const label nFaces, labelList &changedPatchFaces, List< Type > &changedPatchFacesInfo) const
 Extract info for single patch only. More...
 
void transform (const polyPatch &patch, const label nFaces, const labelList &faceLabels, const transformer &transform, List< Type > &faceInfo)
 Transform across an interface. Implementation referred to Type. More...
 
void handleProcPatches ()
 Merge data from across processor boundaries. More...
 
void handleCyclicPatches ()
 Merge data from across cyclics. More...
 
void handleExplicitConnections ()
 Merge data across explicitly provided local connections (usually. More...
 

Protected Attributes

const polyMeshmesh_
 Reference to mesh. More...
 
const labelPairList explicitConnections_
 Optional boundary faces that information should travel through. More...
 
UList< Type > & allFaceInfo_
 Information for all faces. More...
 
UList< Type > & allCellInfo_
 Information for all cells. More...
 
TrackingData & td_
 Additional data to be passed into container. More...
 
PackedBoolList changedFace_
 Has face changed. More...
 
DynamicList< labelchangedFaces_
 List of changed faces. More...
 
PackedBoolList changedCell_
 Has cell changed. More...
 
DynamicList< labelchangedCells_
 
const bool hasCyclicPatches_
 Contains cyclics. More...
 
label nEvals_
 Number of evaluations. More...
 
label nUnvisitedCells_
 Number of unvisited cells. More...
 
label nUnvisitedFaces_
 Number of unvisited faces. More...
 

Static Protected Attributes

static const scalar geomTol_ = 1e-6
 ... More...
 
static scalar propagationTol_ = 0.01
 ... More...
 

Detailed Description

template<class Type, class TrackingData = int>
class Foam::FaceCellWave< Type, TrackingData >

Wave propagation of information through grid. Every iteration information goes through one layer of cells. Templated on information that is transferred.

Handles parallel and cyclics and non-parallel cyclics.

Note: whether to propagate depends on the return value of Type::update which returns true (i.e. propagate) if the value changes by more than a certain tolerance. This tolerance can be very strict for normal face-cell and parallel cyclics (we use a value of 0.01 just to limit propagation of small changes) but for non-parallel cyclics this tolerance can be critical and if chosen too small can lead to non-convergence.

Source files

Definition at line 76 of file FaceCellWave.H.

Constructor & Destructor Documentation

◆ FaceCellWave() [1/4]

◆ FaceCellWave() [2/4]

FaceCellWave ( const polyMesh mesh,
const labelList initialChangedFaces,
const List< Type > &  changedFacesInfo,
UList< Type > &  allFaceInfo,
UList< Type > &  allCellInfo,
const label  maxIter,
TrackingData &  td = defaultTrackingData_ 
)

◆ FaceCellWave() [3/4]

FaceCellWave ( const polyMesh mesh,
const labelPairList explicitConnections,
const labelList initialChangedFaces,
const List< Type > &  changedFacesInfo,
UList< Type > &  allFaceInfo,
UList< Type > &  allCellInfo,
const label  maxIter,
TrackingData &  td = defaultTrackingData_ 
)

◆ FaceCellWave() [4/4]

FaceCellWave ( const FaceCellWave< Type, TrackingData > &  )
delete

Disallow default bitwise copy construction.

◆ ~FaceCellWave()

virtual ~FaceCellWave ( )
inlinevirtual

Destructor.

Definition at line 287 of file FaceCellWave.H.

Member Function Documentation

◆ updateCell()

bool updateCell ( const label  celli,
const label  neighbourFacei,
const Type &  neighbourInfo,
const scalar  tol,
Type &  cellInfo 
)
protected

Updates cellInfo with information from neighbour. Updates all.

statistics.

Definition at line 53 of file FaceCellWave.C.

References cellInfo::updateCell(), and cellInfo::valid().

Here is the call graph for this function:

◆ updateFace() [1/2]

bool updateFace ( const label  facei,
const label  neighbourCelli,
const Type &  neighbourInfo,
const scalar  tol,
Type &  faceInfo 
)
protected

Updates faceInfo with information from neighbour. Updates all.

statistics.

Definition at line 102 of file FaceCellWave.C.

◆ updateFace() [2/2]

bool updateFace ( const label  facei,
const Type &  neighbourInfo,
const scalar  tol,
Type &  faceInfo 
)
protected

Updates faceInfo with information from same face. Updates all.

statistics.

Definition at line 151 of file FaceCellWave.C.

◆ checkCyclic()

void checkCyclic ( const polyPatch pPatch) const
protected

Debugging: check info on both sides of cyclic.

Definition at line 198 of file FaceCellWave.C.

References cyclicPolyPatch::nbrPatch().

Here is the call graph for this function:

◆ hasPatch()

bool hasPatch
protected

Has cyclic patch?

Definition at line 245 of file FaceCellWave.C.

References forAll, and patchi.

◆ mergeFaceInfo()

void mergeFaceInfo ( const polyPatch patch,
const label  nFaces,
const labelList changedFaces,
const List< Type > &  changedFacesInfo 
)
protected

Merge received patch data into global data.

Definition at line 289 of file FaceCellWave.C.

References polyPatch::start().

Here is the call graph for this function:

◆ getChangedPatchFaces()

Foam::label getChangedPatchFaces ( const polyPatch patch,
const label  startFacei,
const label  nFaces,
labelList changedPatchFaces,
List< Type > &  changedPatchFacesInfo 
) const
protected

Extract info for single patch only.

Definition at line 323 of file FaceCellWave.C.

◆ transform()

void transform ( const polyPatch patch,
const label  nFaces,
const labelList faceLabels,
const transformer transform,
List< Type > &  faceInfo 
)
protected

Transform across an interface. Implementation referred to Type.

Definition at line 355 of file FaceCellWave.C.

◆ handleProcPatches()

void handleProcPatches
protected

◆ handleCyclicPatches()

void handleCyclicPatches
protected

Merge data from across cyclics.

Definition at line 474 of file FaceCellWave.C.

References polyPatch::boundaryMesh(), Foam::endl(), forAll, patchIdentifier::name(), cyclicPolyPatch::nbrPatch(), patchi, Foam::Pout, cyclicPolyPatch::transform(), and Foam::transform().

Here is the call graph for this function:

◆ handleExplicitConnections()

void handleExplicitConnections
protected

Merge data across explicitly provided local connections (usually.

baffles)

Definition at line 539 of file FaceCellWave.C.

References DynamicList< T, SizeInc, SizeMult, SizeDiv >::append(), and forAll.

Here is the call graph for this function:

◆ propagationTol()

static scalar propagationTol ( )
inlinestatic

Access to tolerance.

Definition at line 228 of file FaceCellWave.H.

References FaceCellWave< Type, TrackingData >::propagationTol_.

Referenced by hexRef8::consistentSlowRefinement2().

Here is the caller graph for this function:

◆ setPropagationTol()

static void setPropagationTol ( const scalar  tol)
inlinestatic

Change tolerance.

Definition at line 234 of file FaceCellWave.H.

References FaceCellWave< Type, TrackingData >::propagationTol_.

◆ allFaceInfo()

UList<Type>& allFaceInfo ( )
inline

Access allFaceInfo.

Definition at line 296 of file FaceCellWave.H.

References FaceCellWave< Type, TrackingData >::allFaceInfo_.

Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave().

Here is the caller graph for this function:

◆ allCellInfo()

UList<Type>& allCellInfo ( )
inline

Access allCellInfo.

Definition at line 302 of file FaceCellWave.H.

References FaceCellWave< Type, TrackingData >::allCellInfo_.

Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave().

Here is the caller graph for this function:

◆ data() [1/2]

const TrackingData& data ( ) const
inline

Additional data to be passed into container.

Definition at line 308 of file FaceCellWave.H.

References FaceCellWave< Type, TrackingData >::td_.

Referenced by structuredDecomp::decompose(), decompositionMethod::decompose(), mappedExtrudedPatchBase::patchFaceAreas(), and wallLayerCells::wallLayerCells().

Here is the caller graph for this function:

◆ data() [2/2]

TrackingData& data ( )
inline

Additional data to be passed into container.

Definition at line 314 of file FaceCellWave.H.

References FaceCellWave< Type, TrackingData >::td_.

◆ mesh()

const polyMesh& mesh ( ) const
inline

Access mesh.

Definition at line 320 of file FaceCellWave.H.

References FaceCellWave< Type, TrackingData >::mesh_.

◆ getUnsetCells()

Foam::label getUnsetCells

Get number of unvisited cells, i.e. cells that were not (yet)

reached from walking across mesh. This can happen from

  • not enough iterations done
  • a disconnected mesh
  • a mesh without walls in it

Definition at line 778 of file FaceCellWave.C.

Referenced by structuredRenumber::renumber().

Here is the caller graph for this function:

◆ getUnsetFaces()

Foam::label getUnsetFaces

Get number of unvisited faces.

Definition at line 785 of file FaceCellWave.C.

◆ setFaceInfo()

void setFaceInfo ( const labelList changedFaces,
const List< Type > &  changedFacesInfo 
)

Set initial changed faces.

Definition at line 259 of file FaceCellWave.C.

References forAll.

Referenced by hexRef8::consistentSlowRefinement(), FaceCellWave< Type, TrackingData >::FaceCellWave(), and mappedExtrudedPatchBase::patchFaceAreas().

Here is the caller graph for this function:

◆ faceToCell()

Propagate from face to cell. Returns total number of cells.

(over all processors) changed.

Reimplemented in OppositeFaceCellWave< Type, TrackingData >.

Definition at line 792 of file FaceCellWave.C.

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

Here is the call graph for this function:

◆ cellToFace()

Propagate from cell to face. Returns total number of faces.

(over all processors) changed. (Faces on processorpatches are counted double)

Reimplemented in OppositeFaceCellWave< Type, TrackingData >.

Definition at line 873 of file FaceCellWave.C.

References Foam::abort(), cells, Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAll, UPstream::parRun(), Foam::Pout, and Foam::reduce().

Here is the call graph for this function:

◆ iterate()

Foam::label iterate ( const label  maxIter)
virtual

Iterate until no changes or maxIter reached. Returns actual.

number of iterations.

Definition at line 951 of file FaceCellWave.C.

References Foam::endl(), Foam::Info, Foam::nl, and UPstream::parRun().

Referenced by hexRef8::consistentSlowRefinement(), FaceCellWave< Type, TrackingData >::FaceCellWave(), mappedExtrudedPatchBase::patchFaceAreas(), structuredRenumber::renumber(), and wallLayerCells::wallLayerCells().

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

◆ operator=()

void operator= ( const FaceCellWave< Type, TrackingData > &  )
delete

Disallow default bitwise assignment.

Member Data Documentation

◆ geomTol_

const Foam::scalar geomTol_ = 1e-6
staticprotected

...

Definition at line 85 of file FaceCellWave.H.

◆ propagationTol_

Foam::scalar propagationTol_ = 0.01
staticprotected

◆ mesh_

const polyMesh& mesh_
protected

Reference to mesh.

Definition at line 94 of file FaceCellWave.H.

Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave(), and FaceCellWave< Type, TrackingData >::mesh().

◆ explicitConnections_

const labelPairList explicitConnections_
protected

Optional boundary faces that information should travel through.

Definition at line 97 of file FaceCellWave.H.

◆ allFaceInfo_

UList<Type>& allFaceInfo_
protected

Information for all faces.

Definition at line 100 of file FaceCellWave.H.

Referenced by FaceCellWave< Type, TrackingData >::allFaceInfo().

◆ allCellInfo_

UList<Type>& allCellInfo_
protected

Information for all cells.

Definition at line 103 of file FaceCellWave.H.

Referenced by FaceCellWave< Type, TrackingData >::allCellInfo().

◆ td_

TrackingData& td_
protected

Additional data to be passed into container.

Definition at line 106 of file FaceCellWave.H.

Referenced by FaceCellWave< Type, TrackingData >::data().

◆ changedFace_

PackedBoolList changedFace_
protected

Has face changed.

Definition at line 109 of file FaceCellWave.H.

◆ changedFaces_

DynamicList<label> changedFaces_
protected

List of changed faces.

Definition at line 112 of file FaceCellWave.H.

Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave().

◆ changedCell_

PackedBoolList changedCell_
protected

Has cell changed.

Definition at line 115 of file FaceCellWave.H.

◆ changedCells_

DynamicList<label> changedCells_
protected

Definition at line 118 of file FaceCellWave.H.

Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave().

◆ hasCyclicPatches_

const bool hasCyclicPatches_
protected

Contains cyclics.

Definition at line 121 of file FaceCellWave.H.

◆ nEvals_

label nEvals_
protected

Number of evaluations.

Definition at line 124 of file FaceCellWave.H.

◆ nUnvisitedCells_

label nUnvisitedCells_
protected

Number of unvisited cells.

Definition at line 127 of file FaceCellWave.H.

◆ nUnvisitedFaces_

label nUnvisitedFaces_
protected

Number of unvisited faces.

Definition at line 130 of file FaceCellWave.H.

◆ defaultTrackingData_

int defaultTrackingData_ = -1
static

Default tracking data to go with default template argument.

Definition at line 222 of file FaceCellWave.H.


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