52 if (!isA<emptyPolyPatch>(
pp))
54 nNonEmpty +=
pp.size();
62 if (!isA<emptyPolyPatch>(
pp))
64 label facei =
pp.start();
68 nonEmptyFaces[nNonEmpty++] = facei++;
96 nCoupled +=
pp.size();
106 label facei =
pp.start();
110 coupledFaces[nCoupled++] = facei++;
131 isValidBFace.
setSize(meshRef_.nBoundaryFaces());
137 if (
pp.coupled() || isA<emptyPolyPatch>(
pp))
139 label bFacei =
pp.start() - meshRef_.nInternalFaces();
142 isValidBFace[bFacei++] =
false;
157 for (
const label celli : cCells)
159 if (celli != globalI)
165 for (
const label celli : pGlobals)
167 if (celli != globalI)
173 cCells.setSize(
set.size()+1);
175 cCells[
n++] = globalI;
177 for (
const label seti :
set)
186 const label exclude0,
187 const label exclude1,
193 const labelList& own = meshRef_.faceOwner();
194 const labelList& nei = meshRef_.faceNeighbour();
198 const label globalOwn = globalNumbering().toGlobal(own[facei]);
199 if (globalOwn != exclude0 && globalOwn != exclude1)
201 globals.insert(globalOwn);
204 if (meshRef_.isInternalFace(facei))
206 const label globalNei = globalNumbering().toGlobal(nei[facei]);
207 if (globalNei != exclude0 && globalNei != exclude1)
209 globals.insert(globalNei);
214 const label bFacei = facei - meshRef_.nInternalFaces();
216 if (isValidBFace[bFacei])
218 label globalI = globalNumbering().toGlobal
224 if (globalI != exclude0 && globalI != exclude1)
226 globals.insert(globalI);
252 return globals.toc();
263 globalNumbering_(meshRef_.nCells() + meshRef_.nBoundaryFaces())
void validBoundaryFaces(boolList &isValidBFace) const
Valid boundary faces (not empty and not coupled)
static void merge(const label globalI, const labelList &pGlobals, labelList &cCells)
Merge two lists and guarantee globalI is first.
zoneCellStencils(const zoneCellStencils &)=delete
No copy construct.
void insertFaceCells(const label exclude0, const label exclude1, const boolList &nonEmptyFace, const labelList &faceLabels, labelHashSet &globals) const
Collect cell neighbours of faces in global numbering.
labelList calcFaceCells(const boolList &nonEmptyFace, const labelList &faceLabels, labelHashSet &globals) const
Collect cell neighbours of faces in global numbering.
autoPtr< indirectPrimitivePatch > nonEmptyFacesPatch() const
Return patch of all coupled faces.
bool insert(const Key &key)
Insert a new entry, not overwriting existing entries.
labelList faceLabels(nFaceLabels)
virtual const pointField & points() const
Return raw points.
#define forAll(list, i)
Loop across all elements in list.
const fvMesh & meshRef_
const reference to fvMesh
HashSet< label, Hash< label > > labelHashSet
A HashSet of labels, uses label hasher.
void setSize(const label n)
Alias for resize()
void clear()
Clear the list, i.e. set size to zero.
const polyBoundaryMesh & boundaryMesh() const noexcept
Return boundary mesh.
autoPtr< indirectPrimitivePatch > allCoupledFacesPatch() const
Return patch of all coupled faces.
virtual const faceList & faces() const
Return raw faces.
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO...
defineTypeNameAndDebug(combustionModel, 0)
Mesh data needed to do the Finite Volume discretisation.
const polyBoundaryMesh & patches
base class for cell stencil in a narrow band
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
List< label > labelList
A List of labels.
static autoPtr< T > New(Args &&... args)
Construct autoPtr with forwarding arguments.
A patch is a list of labels that address the faces in the global face list.
List< bool > boolList
A List of bools.
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())