Go to the documentation of this file.
39 if (
mesh.isInternalFace(faceI))
44 if (includedCell[own] && includedCell[nei])
78 forAll(includedCell, cellI)
81 if (includedCell[cellI])
87 label faceI = cFaces[i];
89 if (!faceIsCut[faceI])
93 faceIsCut[faceI] =
true;
96 if (isInternalFace(
mesh, includedCell, faceI))
105 Pout<<
"Subset consists of " << nFaces <<
" faces out of " <<
mesh.nFaces()
106 <<
" of which " << nInternalFaces <<
" are internal" <<
endl;
143 faceMap_[triI] = faceI;
165 const label internalFacesPatch,
167 const bool faceCentreDecomposition
180 label nFaces, nInternalFaces;
196 if (faceCentreDecomposition)
200 if (faceIsCut[faceI])
202 nTotTri += faces[faceI].
size();
210 if (faceIsCut[faceI])
212 nTotTri += faces[faceI].nTriangles(
points);
216 Pout<<
"nTotTri : " << nTotTri <<
endl;
223 if (faceCentreDecomposition)
239 faceMap_.setSize(nTotTri);
243 if (faceCentreDecomposition)
251 if (faceIsCut[faceI] && isInternalFace(
mesh, includedCell, faceI))
257 const face&
f = faces[faceI];
261 faceMap_[triI] = faceI;
274 nInternalFaces_ = triI;
280 if (faceIsCut[faceI] && !isInternalFace(
mesh, includedCell, faceI))
289 patchI = internalFacesPatch;
306 patchI =
patches.whichPatch(faceI);
313 const face&
f = faces[faceI];
319 faceMap_[triI] = faceI;
335 faceMap_[triI] = faceI;
358 if (faceIsCut[faceI] && isInternalFace(
mesh, includedCell, faceI))
366 if (faceTris.empty())
369 <<
"Could not find triangulation for face " << faceI
370 <<
" vertices " << faces[faceI] <<
" coords "
389 nInternalFaces_ = triI;
395 if (faceIsCut[faceI] && !isInternalFace(
mesh, includedCell, faceI))
404 patchI = internalFacesPatch;
421 patchI =
patches.whichPatch(faceI);
429 if (faceTris.empty())
432 <<
"Could not find triangulation for face " << faceI
433 <<
" vertices " << faces[faceI] <<
" coords "
456 faceMap_.setSize(triI);
458 Pout<<
"nInternalFaces_:" << nInternalFaces_ <<
endl;
466 surfPatches[patchI] =
469 patches[patchI].physicalType(),
476 if (faceCentreDecomposition)
479 triSurface globalSurf(triangles, surfPatches, newPoints);
482 triSurface::operator=
498 triSurface::operator=
virtual const pointField & points() const
Return raw points.
#define forAll(list, i)
Loop across all elements in list.
const Field< PointType > & localPoints() const
Return pointField of points in patch.
The geometricSurfacePatch is like patchIdentifier but for surfaces. Holds type, name and index.
const polyBoundaryMesh & boundaryMesh() const
Return boundary mesh.
Ostream & endl(Ostream &os)
Add newline and flush stream.
Mesh consisting of general polyhedral cells.
static bool isInternalFace(const primitiveMesh &, const boolList &includedCell, const label faceI)
Is face internal to the subset.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Pre-declare SubField and related Field type.
Triangulated surface description with patch information.
virtual const labelList & faceOwner() const
Return face owner.
A List with indirect addressing.
void insertTriangles(const triFaceList &, const label faceI, const label regionI, const bool reverse, List< labelledTri > &triangles, label &triI)
Add triangulation of face to triangles. Optionally reverse.
Triangulation of faces. Handles concave polygons as well (inefficiently)
void setSize(const label)
Reset size of List.
virtual const faceList & faces() const
Return raw faces.
A triangular face using a FixedList of labels corresponding to mesh vertices.
label region() const
Return region label.
static void getFaces(const primitiveMesh &, const boolList &includedCell, boolList &faceIsCut, label &nFaces, label &nInternalFaces)
Find boundary faces of subset.
prefixOSstream Pout(cout, "Pout")
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
bool isInternalFace(const label faceIndex) const
Return true if given face label is internal to the mesh.
const vectorField & faceCentres() const
Triangle with additional region number.
const List< Face > & localFaces() const
Return patch faces addressing into local point list.
A face is a list of labels corresponding to mesh vertices.
void size(const label)
Override size to be inconsistent with allocated storage.
#define WarningInFunction
Report a warning using Foam::Warning.
word name(const complex &)
Return a string representation of a complex.
void reverse(UList< T > &, const label n)
meshTriangulation()
Construct null.
Cell-face mesh analysis engine.