Go to the documentation of this file.
54 # ifdef DEBUGDecompose
67 if( decomposeCell[cellI] )
83 label neiFace = edgeFaces[fEdges[feI]][0];
85 neiFace = edgeFaces[fEdges[feI]][1];
87 if( neiFaces.
found(neiFace) )
89 decomposeFace[
cells[cellI][fI]] =
true;
106 forAll(procBoundaries, patchI)
108 const label start = procBoundaries[patchI].patchStart();
109 boolList decFace(procBoundaries[patchI].patchSize(),
false);
112 for(
label i=0;i<size;++i)
114 if( decomposeFace[start+i] )
121 procBoundaries[patchI].neiProcNo(),
125 toOtherProc << decFace;
129 forAll(procBoundaries, patchI)
136 procBoundaries[patchI].neiProcNo()
139 fromOtherProc >> decFace;
141 const label start = procBoundaries[patchI].patchStart();
145 decomposeFace[start+i] =
true;
159 if( decomposeCell[cI] )
180 # ifdef DEBUGDecompose
187 # ifdef DEBUGDecompose
194 Info <<
"Adding new cells " <<
endl;
197 Info <<
"Reordering bnd faces" <<
endl;
200 Info <<
"Finding bnd faces" <<
endl;
213 # ifdef DEBUGDecompose
214 Info <<
"Finding cell for boundary face " << bf <<
endl;
217 if( bf == faces[pointFaces(bf[0], pfI)] )
222 "void decomposeCells::addNewCells()"
223 ) <<
"Face " << bf <<
" does not exist in the mesh"
229 const label fLabel = pointFaces(bf[0], pfI);
232 # ifdef DEBUGDecompose
233 Info <<
"Boundary face " << bf <<
" is in cell "
234 << owner[fLabel]] <<
endl;
237 newBoundaryOwners.
append(owner[fLabel]);
255 forAll(boundaries, patchI)
256 boundaries[patchI].patchType() =
patchTypes_[patchI];
const labelList & owner() const
owner and neighbour cells for faces
const polyMeshGenAddressing & addressingData() const
addressing which may be needed
void append(const T &e)
Append an element at the end of the list.
VRWGraphList facesOfNewCells_
void decomposeMesh(const boolList &)
perform decomposition of selected cell into pyramids
#define forAll(list, i)
Loop across all elements in list.
Output inter-processor communications stream.
VRWGraph newBoundaryFaces_
Template functions to aid in the implementation of demand driven data.
A List obtained as a section of another List.
static bool & parRun()
Is this a parallel run?
const labelList & boundaryFacePatches() const
patch label for each boundary face
void replaceBoundary(const wordList &patchNames, const VRWGraph &boundaryFaces, const labelLongList &faceOwners, const labelLongList &facePatches)
replace the boundary with new boundary faces
Ostream & endl(Ostream &os)
Add newline and flush stream.
label faceIsInPatch(const label faceLabel) const
return patch label for the given face label
void removeDecomposedCells(const boolList &decomposeCell)
const faceListPMG & faces() const
access to faces
PtrList< boundaryPatch > & boundariesAccess()
access to boundary data
const VRWGraph & pointFaces() const
polyMeshGen & mesh_
reference to the mesh
const faceList::subList & boundaryFaces() const
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
void reorderBoundaryFaces()
wordList patchNames_
new boundary faces
void storeBoundaryFaces(const boolList &decomposeCell)
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...
#define forAllRow(graph, rowI, index)
void removeUnusedVertices()
remove unused vertices
label sizeOfRow(const label rowI) const
Returns the number of elements in the given row.
void decomposeCellIntoPyramids(const label cellI)
bool found(const Key &) const
Return true if hashedEntry is found in table.
errorManip< error > abort(error &err)
void decomposeMeshFaces(const boolList &decomposeFace)
decompose selected faces into triangles using midnode subdivision
void clear()
Clear the graph.
void findAddressingForCell(const label cellI, DynList< label, 32 > &vrt, DynList< edge, 64 > &edges, DynList< DynList< label, 8 > > &faceEdges, DynList< DynList< label, 2 >, 64 > &edgeFaces) const
create addressing needed to decompose the cell
label size() const
return the number of used elements
void appendList(const ListType &l)
Append a list as a row at the end of the graph.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
bool insert(const Key &key)
Insert a new entry.
void checkFaceConnections(const boolList &decomposeCell)
const PtrList< processorBoundaryPatch > & procBoundaries() const
inter-processor boundaries
void clearAll()
clear out all allocated data
void addCells(const LongList< faceList > &cellFaces)
add cells (vertices must be added)
void createPointsAndCellFaces(const boolList &decomposeCell)
labelLongList newBoundaryPatches_
Input inter-processor communications stream.
#define FatalErrorIn(functionName)
Report an error message using Foam::FatalError.
A face is a list of labels corresponding to mesh vertices.
void size(const label)
Override size to be inconsistent with allocated storage.
label size() const
return the number of used elements
void removeCells(const boolList &removeCell, const bool removeProcFaces=true)
remove cells