Wave propagation of information through grid. Every iteration information goes through one layer of cells. Templated on information that is transferred. More...
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 polyMesh & | mesh () 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 polyMesh & | mesh_ |
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< label > | changedFaces_ |
List of changed faces. More... | |
PackedBoolList | changedCell_ |
Has cell changed. More... | |
DynamicList< label > | changedCells_ |
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... | |
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.
Definition at line 76 of file FaceCellWave.H.
FaceCellWave | ( | const polyMesh & | mesh, |
UList< Type > & | allFaceInfo, | ||
UList< Type > & | allCellInfo, | ||
TrackingData & | td = defaultTrackingData_ |
||
) |
Definition at line 614 of file FaceCellWave.C.
References FaceCellWave< Type, TrackingData >::allCellInfo(), FaceCellWave< Type, TrackingData >::allFaceInfo(), Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, FaceCellWave< Type, TrackingData >::mesh_, primitiveMesh::nCells(), primitiveMesh::nFaces(), and UList< T >::size().
FaceCellWave | ( | const polyMesh & | mesh, |
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.
for these faces. Iterates until nothing changes or maxIter reached. (maxIter can be 0)
Definition at line 655 of file FaceCellWave.C.
References FaceCellWave< Type, TrackingData >::allCellInfo(), FaceCellWave< Type, TrackingData >::allFaceInfo(), FaceCellWave< Type, TrackingData >::changedCells_, FaceCellWave< Type, TrackingData >::changedFaces_, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, FaceCellWave< Type, TrackingData >::iterate(), FaceCellWave< Type, TrackingData >::mesh_, primitiveMesh::nCells(), primitiveMesh::nFaces(), FaceCellWave< Type, TrackingData >::setFaceInfo(), UList< T >::size(), and List< T >::size().
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_ |
||
) |
Construct from mesh and explicitly connected boundary faces.
and list of changed faces with the Type for these faces. Iterates until nothing changes or maxIter reached. (maxIter can be 0)
Definition at line 715 of file FaceCellWave.C.
References FaceCellWave< Type, TrackingData >::allCellInfo(), FaceCellWave< Type, TrackingData >::allFaceInfo(), FaceCellWave< Type, TrackingData >::changedCells_, FaceCellWave< Type, TrackingData >::changedFaces_, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, FaceCellWave< Type, TrackingData >::iterate(), FaceCellWave< Type, TrackingData >::mesh_, primitiveMesh::nCells(), primitiveMesh::nFaces(), FaceCellWave< Type, TrackingData >::setFaceInfo(), UList< T >::size(), and List< T >::size().
|
delete |
Disallow default bitwise copy construction.
|
inlinevirtual |
Destructor.
Definition at line 287 of file FaceCellWave.H.
|
protected |
Updates cellInfo with information from neighbour. Updates all.
statistics.
Definition at line 53 of file FaceCellWave.C.
References cellInfo::updateCell(), and cellInfo::valid().
|
protected |
Updates faceInfo with information from neighbour. Updates all.
statistics.
Definition at line 102 of file FaceCellWave.C.
|
protected |
Updates faceInfo with information from same face. Updates all.
statistics.
Definition at line 151 of file FaceCellWave.C.
|
protected |
Debugging: check info on both sides of cyclic.
Definition at line 198 of file FaceCellWave.C.
References cyclicPolyPatch::nbrPatch().
|
protected |
|
protected |
Merge received patch data into global data.
Definition at line 289 of file FaceCellWave.C.
References polyPatch::start().
|
protected |
Extract info for single patch only.
Definition at line 323 of file FaceCellWave.C.
|
protected |
Transform across an interface. Implementation referred to Type.
Definition at line 355 of file FaceCellWave.C.
|
protected |
Merge data from across processor boundaries.
Definition at line 372 of file FaceCellWave.C.
References Foam::endl(), PstreamBuffers::finishedSends(), forAll, patchIdentifier::name(), processorPolyPatch::neighbProcNo(), patchi, Foam::Pout, globalMeshData::processorPatches(), List< T >::size(), processorPolyPatch::transform(), and Foam::transform().
|
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().
|
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.
|
inlinestatic |
Access to tolerance.
Definition at line 228 of file FaceCellWave.H.
References FaceCellWave< Type, TrackingData >::propagationTol_.
Referenced by hexRef8::consistentSlowRefinement2().
|
inlinestatic |
Change tolerance.
Definition at line 234 of file FaceCellWave.H.
References FaceCellWave< Type, TrackingData >::propagationTol_.
|
inline |
Access allFaceInfo.
Definition at line 296 of file FaceCellWave.H.
References FaceCellWave< Type, TrackingData >::allFaceInfo_.
Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave().
|
inline |
Access allCellInfo.
Definition at line 302 of file FaceCellWave.H.
References FaceCellWave< Type, TrackingData >::allCellInfo_.
Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave().
|
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().
|
inline |
Additional data to be passed into container.
Definition at line 314 of file FaceCellWave.H.
References FaceCellWave< Type, TrackingData >::td_.
|
inline |
Access mesh.
Definition at line 320 of file FaceCellWave.H.
References FaceCellWave< Type, TrackingData >::mesh_.
Foam::label getUnsetCells |
Get number of unvisited cells, i.e. cells that were not (yet)
reached from walking across mesh. This can happen from
Definition at line 778 of file FaceCellWave.C.
Referenced by structuredRenumber::renumber().
Foam::label getUnsetFaces |
Get number of unvisited faces.
Definition at line 785 of file FaceCellWave.C.
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().
|
virtual |
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().
|
virtual |
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().
|
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().
|
delete |
Disallow default bitwise assignment.
|
staticprotected |
...
Definition at line 85 of file FaceCellWave.H.
|
staticprotected |
...
Definition at line 88 of file FaceCellWave.H.
Referenced by FaceCellWave< Type, TrackingData >::propagationTol(), and FaceCellWave< Type, TrackingData >::setPropagationTol().
|
protected |
Reference to mesh.
Definition at line 94 of file FaceCellWave.H.
Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave(), and FaceCellWave< Type, TrackingData >::mesh().
|
protected |
Optional boundary faces that information should travel through.
Definition at line 97 of file FaceCellWave.H.
|
protected |
Information for all faces.
Definition at line 100 of file FaceCellWave.H.
Referenced by FaceCellWave< Type, TrackingData >::allFaceInfo().
|
protected |
Information for all cells.
Definition at line 103 of file FaceCellWave.H.
Referenced by FaceCellWave< Type, TrackingData >::allCellInfo().
|
protected |
Additional data to be passed into container.
Definition at line 106 of file FaceCellWave.H.
Referenced by FaceCellWave< Type, TrackingData >::data().
|
protected |
Has face changed.
Definition at line 109 of file FaceCellWave.H.
|
protected |
List of changed faces.
Definition at line 112 of file FaceCellWave.H.
Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave().
|
protected |
Has cell changed.
Definition at line 115 of file FaceCellWave.H.
|
protected |
Definition at line 118 of file FaceCellWave.H.
Referenced by FaceCellWave< Type, TrackingData >::FaceCellWave().
|
protected |
Contains cyclics.
Definition at line 121 of file FaceCellWave.H.
|
protected |
Number of evaluations.
Definition at line 124 of file FaceCellWave.H.
|
protected |
Number of unvisited cells.
Definition at line 127 of file FaceCellWave.H.
|
protected |
Number of unvisited faces.
Definition at line 130 of file FaceCellWave.H.
|
static |
Default tracking data to go with default template argument.
Definition at line 222 of file FaceCellWave.H.