50 #ifndef Foam_FaceCellWave_H 51 #define Foam_FaceCellWave_H 173 template<
class Type,
class TrackingData =
int>
220 const label neighbourFacei,
221 const Type& neighbourInfo,
231 const label neighbourCelli,
232 const Type& neighbourInfo,
242 const Type& neighbourInfo,
254 template<
class PatchType>
270 const label startFacei,
370 const bool handleCyclicAMI,
411 void setFaceInfo(
const label facei,
const Type& faceInfo);
417 const List<Type>& changedFacesInfo
431 virtual label
iterate(
const label maxIter);
void handleAMICyclicPatches()
Merge data from across AMI cyclics.
PstreamBuffers pBufs_
Buffers when updating processor patches.
const bool hasCyclicAMIPatches_
Contains cyclicAMI.
void handleExplicitConnections()
Merge data across explicitly provided local connections.
static int dummyTrackData_
Default trackData value (for default template argument)
void size(const label n)
Older name for setAddressableSize.
bitSet changedFace_
Track if face has changed.
ClassName("FaceCellWave")
Runtime type information.
UList< Type > & allFaceInfo_
Information for all faces.
label nUnvisitedFaces() const noexcept
Get number of unvisited faces.
virtual label iterate(const label maxIter)
Iterate until no changes or maxIter reached.
virtual label cellToFace()
Propagate from cell to face.
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...
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
DynamicList< taggedInfoType > changedBaffles_
Wave propagation of information through grid. Every iteration information goes through one layer of c...
label nUnvisitedCells_
Current count of unvisited cells.
const TrackingData & data() const noexcept
Additional data to be passed into container.
label nEvals_
Number of evaluations.
Holds information regarding type of cell. Used in inside/outside determination in cellClassification...
UList< Type > & allCellInfo_
Information for all cells.
labelList faceLabels(nFaceLabels)
void handleProcPatches()
Merge data from across processor boundaries.
static scalar propagationTol() noexcept
Access to propagation tolerance.
void operator=(const FaceCellWave &)=delete
No copy assignment.
UList< label > labelUList
A UList of labels.
void leaveDomain(const polyPatch &patch, const label nFaces, const labelUList &faceLabels, List< Type > &faceInfo) const
Handle leaving domain. Implementation referred to Type.
Forward declarations of the specialisations of Field<T> for scalar, vector and tensor.
bool hasPatch() const
Has cyclic patch?
FaceCellWaveBase(const polyMesh &mesh)
Construct with mesh reference and set initial sizes.
void transform(const tensorField &rotTensor, const label nFaces, List< Type > &faceInfo)
Apply transformation to Type.
virtual ~FaceCellWave()=default
Destructor.
const polyMesh & mesh() const noexcept
Return access to the mesh.
void mergeFaceInfo(const polyPatch &patch, const label nFaces, const labelUList &changedFaces, const List< Type > &changedFacesInfo)
Merge received patch data into global data.
bitSet changedCell_
Track if cell has changed.
bool updateFace(const label facei, const label neighbourCelli, const Type &neighbourInfo, const scalar tol, Type &faceInfo)
Updates faceInfo with information from neighbour.
bool updateCell(const label celli, const label neighbourFacei, const Type &neighbourInfo, const scalar tol, Type &cellInfo)
Updates cellInfo with information from neighbour.
static const scalar geomTol_
std::pair< label, Type > taggedInfoType
Information tagged with a source or destination id.
Buffers for inter-processor communications streams (UOPstream, UIPstream).
static scalar setPropagationTol(const scalar tol) noexcept
Change propagation tolerance, return previous value.
DynamicList< label > changedCells_
List of changed cells.
void enterDomain(const polyPatch &patch, const label nFaces, const labelUList &faceLabels, List< Type > &faceInfo) const
Handle leaving domain. Implementation referred to Type.
static scalar propagationTol_
label getChangedPatchFaces(const polyPatch &patch, const label startFacei, const label nFaces, labelList &changedPatchFaces, List< Type > &changedPatchFacesInfo) const
Extract info for single patch only.
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
const std::string patch
OpenFOAM patch number as a std::string.
DynamicList< label > changedFaces_
List of changed faces.
void checkCyclic(const polyPatch &pPatch) const
Debugging: check info on both sides of cyclic.
label nUnvisitedCells() const noexcept
Get number of unvisited cells, i.e. cells that were not (yet) reached from walking across mesh...
void handleCyclicPatches()
Merge data from across cyclics.
Mesh consisting of general polyhedral cells.
FaceCellWave(const FaceCellWave &)=delete
No copy construct.
A patch is a list of labels that address the faces in the global face list.
label nUnvisitedFaces_
Current count of unvisited faces.
const polyMesh & mesh_
Reference to mesh.
static void offset(const polyPatch &patch, const label off, const label nFaces, labelList &faces)
Offset face labels by constant value.
label nChangedFaces() const noexcept
Current number of changed faces.
UList< Type > & allCellInfo() noexcept
Access allCellInfo.
UList< Type > & allFaceInfo() noexcept
Access allFaceInfo.
void setFaceInfo(const label facei, const Type &faceInfo)
Set single initial changed face.
const labelPairList explicitConnections_
Optional boundary faces that information should travel through.
TrackingData & td_
Additional data to be passed into container.
virtual label faceToCell()
Propagate from face to cell.
label nChangedCells() const noexcept
Current number of changed cells.