47 #ifndef FaceCellWave_H
48 #define FaceCellWave_H
76 template<
class Type,
class TrackingData =
int>
79 public FaceCellWaveName
141 const label neighbourFacei,
142 const Type& neighbourInfo,
152 const label neighbourCelli,
153 const Type& neighbourInfo,
163 const Type& neighbourInfo,
175 template<
class PatchType>
191 const label startFacei,
309 const TrackingData&
data()
const
Wave propagation of information through grid. Every iteration information goes through one layer of c...
UList< Type > & allCellInfo()
Access allCellInfo.
DynamicList< label > changedCells_
void handleExplicitConnections()
Merge data across explicitly provided local connections (usually.
UList< Type > & allCellInfo_
Information for all cells.
UList< Type > & allFaceInfo_
Information for all faces.
DynamicList< label > changedFaces_
List of changed faces.
void handleProcPatches()
Merge data from across processor boundaries.
const TrackingData & data() const
Additional data to be passed into container.
label nEvals_
Number of evaluations.
label getUnsetCells() const
Get number of unvisited cells, i.e. cells that were not (yet)
PackedBoolList changedCell_
Has cell changed.
static scalar propagationTol()
Access to tolerance.
virtual ~FaceCellWave()
Destructor.
void setFaceInfo(const labelList &changedFaces, const List< Type > &changedFacesInfo)
Set initial changed faces.
void operator=(const FaceCellWave &)=delete
Disallow default bitwise assignment.
static scalar propagationTol_
...
bool hasPatch() const
Has cyclic patch?
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.
TrackingData & td_
Additional data to be passed into container.
void mergeFaceInfo(const polyPatch &patch, const label nFaces, const labelList &, const List< Type > &)
Merge received patch data into global data.
static const scalar geomTol_
...
UList< Type > & allFaceInfo()
Access allFaceInfo.
label getUnsetFaces() const
Get number of unvisited faces.
void checkCyclic(const polyPatch &pPatch) const
Debugging: check info on both sides of cyclic.
static int defaultTrackingData_
Default tracking data to go with default template argument.
label nUnvisitedFaces_
Number of unvisited faces.
virtual label iterate(const label maxIter)
Iterate until no changes or maxIter reached. Returns actual.
void handleCyclicPatches()
Merge data from across cyclics.
bool updateCell(const label celli, const label neighbourFacei, const Type &neighbourInfo, const scalar tol, Type &cellInfo)
Updates cellInfo with information from neighbour. Updates all.
label nUnvisitedCells_
Number of unvisited cells.
const labelPairList explicitConnections_
Optional boundary faces that information should travel through.
label getChangedPatchFaces(const polyPatch &patch, const label startFacei, const label nFaces, labelList &changedPatchFaces, List< Type > &changedPatchFacesInfo) const
Extract info for single patch only.
virtual label faceToCell()
Propagate from face to cell. Returns total number of cells.
PackedBoolList changedFace_
Has face changed.
const polyMesh & mesh_
Reference to mesh.
bool updateFace(const label facei, const label neighbourCelli, const Type &neighbourInfo, const scalar tol, Type &faceInfo)
Updates faceInfo with information from neighbour. Updates all.
const polyMesh & mesh() const
Access mesh.
virtual label cellToFace()
Propagate from cell to face. Returns total number of faces.
FaceCellWave(const polyMesh &, UList< Type > &allFaceInfo, UList< Type > &allCellInfo, TrackingData &td=defaultTrackingData_)
static void setPropagationTol(const scalar tol)
Change tolerance.
const bool hasCyclicPatches_
Contains cyclics.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Holds information regarding type of cell. Used in inside/outside determination in cellClassification.
Mesh consisting of general polyhedral cells.
A patch is a list of labels that address the faces in the global face list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
TemplateName(FvFaceCellWave)
Forward declarations of the specialisations of Field<T> for scalar, vector and tensor.