78template<
class Type,
class TrackingData =
int>
81 public FaceCellWaveName
153 const label neighbourFacei,
154 const Type& neighbourInfo,
164 const label neighbourCelli,
165 const Type& neighbourInfo,
175 const Type& neighbourInfo,
187 template<
class PatchType>
203 const label startFacei,
318 const bool handleCyclicAMI,
349 const TrackingData&
data()
const
376 void setFaceInfo(
const label facei,
const Type& faceInfo);
396 virtual label
iterate(
const label maxIter);
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
Wave propagation of information through grid. Every iteration information goes through one layer of c...
virtual ~FaceCellWave()=default
Destructor.
DynamicList< label > changedCells_
void handleExplicitConnections()
Merge data across explicitly provided local connections.
static void offset(const polyPatch &patch, const label off, const label nFaces, labelList &faces)
Offset face labels by constant value.
UList< Type > & allCellInfo_
Information for all cells.
UList< Type > & allFaceInfo_
Information for all faces.
static int dummyTrackData_
Default trackdata value to satisfy default template argument.
DynamicList< label > changedFaces_
List of changed faces.
void handleProcPatches()
Merge data from across processor boundaries.
void leaveDomain(const polyPatch &patch, const label nFaces, const labelUList &faceLabels, List< Type > &faceInfo) const
Handle leaving domain. Implementation referred to Type.
bitSet changedFace_
Has face changed.
const polyMesh & mesh() const
Access mesh.
label nEvals_
Number of evaluations.
DynamicList< taggedInfoType > changedBaffles_
static scalar propagationTol()
Access to tolerance.
FaceCellWave(const FaceCellWave &)=delete
No copy construct.
void operator=(const FaceCellWave &)=delete
No copy assignment.
label nUnvisitedCells() const
void mergeFaceInfo(const polyPatch &patch, const label nFaces, const labelUList &changedFaces, const List< Type > &changedFacesInfo)
Merge received patch data into global data.
static scalar propagationTol_
bool hasPatch() const
Has cyclic patch?
TrackingData & td_
Additional data to be passed into container.
static const scalar geomTol_
void handleAMICyclicPatches()
Merge data from across AMI cyclics.
void checkCyclic(const polyPatch &pPatch) const
Debugging: check info on both sides of cyclic.
void enterDomain(const polyPatch &patch, const label nFaces, const labelUList &faceLabels, List< Type > &faceInfo) const
Handle leaving domain. Implementation referred to Type.
virtual label iterate(const label maxIter)
Iterate until no changes or maxIter reached.
void handleCyclicPatches()
Merge data from across cyclics.
void transform(const tensorField &rotTensor, const label nFaces, List< Type > &faceInfo)
Apply transformation to Type.
void setFaceInfo(const label facei, const Type &faceInfo)
Set single initial changed face.
bool updateCell(const label celli, const label neighbourFacei, const Type &neighbourInfo, const scalar tol, Type &cellInfo)
Updates cellInfo with information from neighbour.
label nUnvisitedCells_
Number of unvisited cells/faces.
const labelPairList explicitConnections_
Optional boundary faces that information should travel through.
bitSet changedCell_
Has cell changed.
label getChangedPatchFaces(const polyPatch &patch, const label startFacei, const label nFaces, labelList &changedPatchFaces, List< Type > &changedPatchFacesInfo) const
Extract info for single patch only.
const bool hasCyclicAMIPatches_
Contains cyclicAMI.
virtual label faceToCell()
Propagate from face to cell.
UList< Type > & allCellInfo()
Access allCellInfo.
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.
std::pair< label, Type > taggedInfoType
Information tagged with a source or destination id.
virtual label cellToFace()
Propagate from cell to face.
UList< Type > & allFaceInfo()
Access allFaceInfo.
label nUnvisitedFaces() const
Get number of unvisited faces.
const TrackingData & data() const
Additional data to be passed into container.
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...
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
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.
#define TemplateName(TemplateNameString)
Add typeName information from argument TypeNameString to a.
const labelList nFaces(UPstream::listGatherValues< label >(aMesh.nFaces()))
Forward declarations of the specialisations of Field<T> for scalar, vector and tensor.