Go to the documentation of this file.
30 #include "triSurface.H"
57 # pragma omp parallel for
85 # pragma omp parallel if( tets.size() > 1000 )
93 removeFace[faceI] =
false;
97 # pragma omp for schedule(dynamic, 20)
101 cells[elmtI].setSize(4);
103 const partTet& elmt = tets[elmtI];
105 label faceI = 4 * elmtI;
108 cells[elmtI][0] = faceI;
110 face& f0 = faces[faceI];
120 cells[elmtI][1] = faceI;
132 cells[elmtI][2] = faceI;
134 face& f2 = faces[faceI];
144 cells[elmtI][3] = faceI;
146 face& f3 = faces[faceI];
160 # pragma omp for schedule(dynamic, 20)
168 const face&
f = faces[
c[fI]];
169 const label pointI =
f[0];
175 if( pTets(pointI, ptI) >= cellI )
178 const cell& otherTet =
cells[pTets(pointI, ptI)];
185 if( otherTet[ofI] >=
c[fI] )
189 if(
f == faces[otherTet[ofI]] )
191 removeFace[
c[fI]] =
true;
192 c[fI] = otherTet[ofI];
206 if( !removeFace[faceI] )
209 faces[nFaces].
transfer(faces[faceI]);
211 newFaceLabel[faceI] = nFaces;
221 # pragma omp for schedule(dynamic, 40)
231 if( newFaceLabel[
c[fI]] != -1 )
232 newC.
append(newFaceLabel[
c[fI]]);
235 c.setSize(newC.
size());
251 tetCreator_(octree, meshDict),
264 Info <<
"Extracting tetMesh" <<
endl;
275 Info <<
"Mesh has :" <<
nl
280 Info <<
"Finished extracting tetMesh" <<
endl;
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
#define forAll(list, i)
Loop across all elements in list.
Template functions to aid in the implementation of demand driven data.
Ostream & endl(Ostream &os)
Add newline and flush stream.
const pointFieldPMG & points() const
access to points
label size() const
Size of the active part of the list.
const faceListPMG & faces() const
access to faces
PtrList< boundaryPatch > & boundariesAccess()
access to boundary data
PtrList< processorBoundaryPatch > & procBoundariesAccess()
access to processor boundary data
cellListPMG & cellsAccess()
access to cells
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()
const cellListPMG & cells() const
access to cells
void setSize(const label nElmts)
set the number of used elements
#define forAllRow(graph, rowI, index)
label size() const
return the number of used elements
void removeUnusedVertices()
remove unused vertices
pointFieldPMG & pointsAccess()
access to mesh points
const LongList< point > & tetPoints() const
Tet storage. Null constructable (unfortunately tetrahedron<point, point> is not)
void setSize(const label)
Reset size of List.
void reverseAddressing(const label nRows, const GraphType &origGraph)
label size() const
return the number of used elements
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
label size() const
Return the number of elements in the FixedList.
const dimensionedScalar c
Speed of light in a vacuum.
A face is a list of labels corresponding to mesh vertices.
faceListPMG & facesAccess()
access to mesh faces
label a() const
Return vertices.
A cell is defined as a list of faces with extra functionality.
void transfer(faceList &)
const LongList< partTet > & tets() const
label size() const
return the number of used elements
void append(const T &e)
Append an element at the end of the list.