Go to the documentation of this file.
44 Info <<
"Checking for non-mappable cells" <<
endl;
52 const label start = boundaries[patchI].patchStart();
53 const label end = start + boundaries[patchI].patchSize();
55 for(
label faceI=start;faceI<end;++faceI)
57 ++nBoundaryFaces[owner[faceI]];
63 if( nBoundaryFaces[cI] > 1 )
75 Info <<
"Found " << nBadCells <<
" non-mappable cells" <<
endl;
76 Info <<
"Finished checking for non-mappable cells" <<
endl;
81 Info <<
"Checking for non-mappable faces" <<
endl;
92 const label start = boundaries[patchI].patchStart();
93 const label end = start + boundaries[patchI].patchSize();
95 for(
label faceI=start;faceI<end;++faceI)
97 const face&
f = faces[faceI];
99 boundaryVertex[
f[pI]] =
true;
114 for(
label faceI=0;faceI<nIntFaces;++faceI)
116 const face&
f = faces[faceI];
120 if( boundaryVertex[
f[pI]] )
126 (bPos.
size() == 2) &&
128 (bPos[1] != (bPos[0] + 1)) &&
129 !((bPos[0] == 0) && (bPos[1] == (
f.size() - 1)))
135 decomposeFace[faceI] =
true;
147 forAll(procBoundaries, patchI)
149 const label start = procBoundaries[patchI].patchStart();
150 const label end = start + procBoundaries[patchI].patchSize();
152 boolList decProcFace(procBoundaries[patchI].patchSize(),
false);
154 for(
label faceI=start;faceI<end;++faceI)
156 const face&
f = faces[faceI];
160 if( boundaryVertex[
f[pI]] )
166 (bPos.
size() == 2) &&
168 (bPos[1] != (bPos[0] + 1)) &&
169 !((bPos[0] == 0) && (bPos[1] == (
f.size() - 1)))
175 decProcFace[faceI-start] =
true;
176 decomposeFace[faceI] =
true;
185 procBoundaries[patchI].neiProcNo(),
186 decProcFace.byteSize()
188 toOtherProc << decProcFace;
191 forAll(procBoundaries, patchI)
197 procBoundaries[patchI].neiProcNo()
199 fromOtherProc >> decOtherProc;
201 const label start = procBoundaries[patchI].patchStart();
202 forAll(decOtherProc, faceI)
203 if( decOtherProc[faceI] )
205 decomposeFace[start+faceI] =
true;
213 Info <<
"Found " << nBadFaces <<
" non-mappable faces" <<
endl;
221 Info <<
"Finished checking non-mappable faces" <<
endl;
const labelList & neighbour() const
const labelList & owner() const
owner and neighbour cells for faces
#define forAll(list, i)
Loop across all elements in list.
Output inter-processor communications stream.
Template functions to aid in the implementation of demand driven data.
static bool & parRun()
Is this a parallel run?
Ostream & endl(Ostream &os)
Add newline and flush stream.
const pointFieldPMG & points() const
access to points
const faceListPMG & faces() const
access to faces
label nInternalFaces() const
return number of internal faces
void reduce(const List< UPstream::commsStruct > &comms, T &Value, const BinaryOp &bop, const int tag, const label comm)
void checkNonMappableFaces()
check and fix non-mappable faces
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
const cellListPMG & cells() const
access to cells
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
label size() const
return the number of used elements
void checkNonMappableCells()
check and fix non-mappable cells
void decomposeMeshFaces(const boolList &decomposeFace)
decompose selected faces into triangles using midnode subdivision
label size() const
return the number of used elements
const PtrList< boundaryPatch > & boundaries() const
ordinary boundaries
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
const PtrList< processorBoundaryPatch > & procBoundaries() const
inter-processor boundaries
Input inter-processor communications stream.
A face is a list of labels corresponding to mesh vertices.
label size() const
return the number of used elements
void append(const T &e)
Append an element at the end of the list.