46 label nGlobalInsert = 0;
72 label elem = listA[i];
74 if (elem != global0 && elem != global1)
91 result[resultI++] = global0;
95 result[resultI++] = global1;
102 label elem = listB[i];
104 if (elem != global0 && elem != global1)
106 result[resultI++] = elem;
114 label elem = listA[i];
116 if (elem != global0 && elem != global1)
120 result[resultI++] = elem;
125 if (resultI != result.
size())
143 for (
const label celli : cCells)
145 if (celli != globalI)
151 for (
const label celli : pGlobals)
153 if (celli != globalI)
161 cCells[
n++] = globalI;
163 for (
const label seti : set)
174 isValidBFace.
setSize(
mesh().nBoundaryFaces(),
true);
178 if (pp.coupled() || isA<emptyPolyPatch>(pp))
183 isValidBFace[bFacei++] =
false;
201 nCoupled += pp.
size();
211 label facei = pp.start();
215 coupledFaces[nCoupled++] = facei++;
234 const label exclude0,
235 const label exclude1,
246 label facei = faceLabels[i];
248 label globalOwn = globalNumbering().toGlobal(own[facei]);
249 if (globalOwn != exclude0 && globalOwn != exclude1)
251 globals.
insert(globalOwn);
254 if (
mesh().isInternalFace(facei))
256 label globalNei = globalNumbering().toGlobal(nei[facei]);
257 if (globalNei != exclude0 && globalNei != exclude1)
259 globals.
insert(globalNei);
266 if (isValidBFace[bFacei])
268 label globalI = globalNumbering().toGlobal
274 if (globalI != exclude0 && globalI != exclude1)
302 return globals.
toc();
311 globalNumbering_(mesh_.nCells()+mesh_.nBoundaryFaces())
bool insert(const Key &key)
Insert a new entry, not overwriting existing entries.
List< Key > toc() const
The table of contents (the keys) in unsorted order.
void clear()
Clear all entries from table.
A List with indirect addressing.
void transfer(List< T > &list)
void setSize(const label n)
Alias for resize()
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
void size(const label n)
Older name for setAddressableSize.
label size() const noexcept
The number of elements in the list.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
baseclass for extended cell centred addressing. Contains per cell a list of neighbouring cells and/or...
autoPtr< indirectPrimitivePatch > allCoupledFacesPatch() const
Return patch of all coupled faces.
void validBoundaryFaces(boolList &isValidBFace) const
Valid boundary faces (not empty and not coupled)
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.
virtual bool merge() const
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO.
Mesh consisting of general polyhedral cells.
virtual const labelList & faceOwner() const
Return face owner.
const polyBoundaryMesh & boundaryMesh() const
Return boundary mesh.
virtual const labelList & faceNeighbour() const
Return face neighbour.
A patch is a list of labels that address the faces in the global face list.
label nInternalFaces() const noexcept
Number of internal faces.
const polyBoundaryMesh & patches
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
void sort(UList< T > &list)
Sort the list.
errorManip< error > abort(error &err)
label findSortedIndex(const ListType &input, typename ListType::const_reference val, const label start=0)
#define forAll(list, i)
Loop across all elements in list.