isoSurface Class Reference

Marching tet iso surface algorithm with filtering to remove unnecessary topology. More...

Inheritance diagram for isoSurface:
Collaboration diagram for isoSurface:

Public Types

enum  filterType { none, partial, full, clean }
 
- Public Types inherited from MeshedSurface< face >
typedef face FaceType
 Face type used. More...
 
- Public Types inherited from PrimitivePatch< FaceList, PointField >
enum  surfaceTopo { MANIFOLD, OPEN, ILLEGAL }
 Enumeration defining the surface type. Used in check routines. More...
 
typedef FaceList FaceListType
 
typedef std::remove_reference< FaceList >::type::value_type FaceType
 
typedef PointField PointFieldType
 
typedef std::remove_reference< PointField >::type::value_type PointType
 

Public Member Functions

 TypeName ("isoSurface")
 Runtime type information. More...
 
 isoSurface (const polyMesh &mesh, const scalarField &cellValues, const scalarField &pointValues, const scalar iso, const filterType filter)
 Construct from dictionary. More...
 
const labelListmeshCells () const
 For every face original cell in mesh. More...
 
const labelListpointToFace () const
 For every point originating face (pyramid) in mesh. More...
 
const edgeListpointToVerts () const
 Per point: originating mesh vertex/cc. See encoding above. More...
 
template<class Type >
tmp< Field< Type > > interpolate (const Field< Type > &cCoords, const Field< Type > &pCoords) const
 Interpolates cCoords,pCoords. More...
 
template<class Type >
Foam::tmp< Foam::Field< Type > > interpolate (const Field< Type > &cellCoords, const Field< Type > &pointCoords) const
 
- Public Member Functions inherited from MeshedSurface< face >
 MeshedSurface ()
 Construct null. More...
 
 MeshedSurface (pointField &&, List< face > &&, surfZoneList &&)
 Construct by transferring components (points, faces, zones). More...
 
 MeshedSurface (pointField &&, List< face > &&, const labelUList &zoneSizes=labelUList(), const UList< word > &zoneNames=UList< word >())
 Construct by transferring components (points, faces). More...
 
 MeshedSurface (const MeshedSurface &)
 Copy constructor. More...
 
 MeshedSurface (const UnsortedMeshedSurface< face > &)
 Construct from a UnsortedMeshedSurface. More...
 
 MeshedSurface (const polyBoundaryMesh &, const bool globalPoints=false)
 Construct from a boundary mesh with local points/faces. More...
 
 MeshedSurface (const surfMesh &)
 Construct from a surfMesh. More...
 
 MeshedSurface (UnsortedMeshedSurface< face > &&)
 Construct by transferring the contents from a UnsortedMeshedSurface. More...
 
 MeshedSurface (MeshedSurface< face > &&)
 Construct by transferring the contents from a MeshedSurface. More...
 
 MeshedSurface (const fileName &)
 Construct from file name (uses extension to determine type) More...
 
 MeshedSurface (const fileName &, const word &ext)
 Construct from file name (uses extension to determine type) More...
 
 MeshedSurface (const Time &, const word &surfName="")
 Construct from database. More...
 
 MeshedSurface (const MeshedSurface< face > &surf)
 
 ClassName ("MeshedSurface")
 Runtime type information. More...
 
bool isTri ()
 Specialisation for holding triangulated information. More...
 
 declareRunTimeSelectionTable (autoPtr, MeshedSurface, fileExtension,(const fileName &name),(name))
 
virtual ~MeshedSurface ()
 Destructor. More...
 
 declareMemberFunctionSelectionTable (void, UnsortedMeshedSurface, write, fileExtension,(const fileName &name, const MeshedSurface< face > &surf),(name, surf))
 
virtual void write (const fileName &name) const
 Generic write routine. Chooses writer based on extension. More...
 
void write (const Time &, const word &surfName="") const
 Write to database. More...
 
label size () const
 The surface size is the number of faces. More...
 
const List< face > & faces () const
 Return const access to the faces. More...
 
const List< surfZone > & surfZones () const
 Const access to the surface zones. More...
 
virtual void addZones (const UList< surfZone > &, const bool cullEmpty=false)
 Add surface zones. More...
 
virtual void addZones (const labelUList &sizes, const UList< word > &names, const bool cullEmpty=false)
 Add surface zones. More...
 
virtual void addZones (const labelUList &sizes, const bool cullEmpty=false)
 Add surface zones. More...
 
virtual void removeZones ()
 Remove surface zones. More...
 
virtual void clear ()
 Clear all storage. More...
 
virtual void movePoints (const pointField &)
 Move points. More...
 
virtual void scalePoints (const scalar)
 Scale points. A non-positive factor is ignored. More...
 
virtual void reset (pointField &&points, List< face > &&faces, surfZoneList &&zones)
 Reset primitive data (points, faces and zones) More...
 
virtual void reset (List< point > &&points, List< face > &&faces, surfZoneList &&zones)
 Reset primitive data (points, faces and zones) More...
 
virtual void cleanup (const bool verbose)
 Remove invalid faces. More...
 
virtual bool stitchFaces (const scalar tol=small, const bool verbose=false)
 
virtual bool checkFaces (const bool verbose=false)
 
virtual label triangulate ()
 Triangulate in-place, returning the number of triangles added. More...
 
virtual label triangulate (List< label > &faceMap)
 Triangulate in-place, returning the number of triangles added. More...
 
label triangulate ()
 Specialisation for holding triangulated information. More...
 
label triangulate (List< label > &faceMap)
 Specialisation for holding triangulated information. More...
 
MeshedSurface subsetMesh (const labelHashSet &include, labelList &pointMap, labelList &faceMap) const
 Return new surface. More...
 
MeshedSurface subsetMesh (const labelHashSet &include) const
 Return new surface. More...
 
void transfer (MeshedSurface< face > &)
 Transfer the contents of the argument and annul the argument. More...
 
void transfer (UnsortedMeshedSurface< face > &)
 Transfer the contents of the argument and annul the argument. More...
 
bool read (const fileName &, const word &ext)
 Read from file. Chooses reader based on explicit extension. More...
 
virtual bool read (const fileName &)
 Read from file. Chooses reader based on detected extension. More...
 
void writeStats (Ostream &os) const
 
void operator= (const MeshedSurface< face > &)
 
 operator MeshedSurfaceProxy< face > () const
 Conversion operator to MeshedSurfaceProxy. More...
 
- Public Member Functions inherited from PrimitivePatch< FaceList, PointField >
 PrimitivePatch (const FaceList &faces, const Field< PointType > &points)
 Construct from components. More...
 
 PrimitivePatch (FaceList &&faces, Field< PointType > &&points)
 Move constructor from components. More...
 
 PrimitivePatch (FaceList &faces, Field< PointType > &points, const bool reuse)
 Construct from components, reuse storage. More...
 
 PrimitivePatch (const PrimitivePatch< FaceList, PointField > &)
 Copy constructor. More...
 
 PrimitivePatch (PrimitivePatch< FaceList, PointField > &&)
 Move constructor. More...
 
autoPtr< PrimitivePatch< FaceList, PointField > > clone () const
 Construct and return a clone. More...
 
 ~PrimitivePatch ()
 Destructor. More...
 
const Field< PointType > & points () const
 Return reference to global points. More...
 
label nPoints () const
 Return number of points supporting patch faces. More...
 
label nEdges () const
 Return number of edges in patch. More...
 
const edgeListedges () const
 Return list of edges, address into LOCAL point list. More...
 
label nInternalEdges () const
 Number of internal edges. More...
 
bool isInternalEdge (const label edgeI) const
 Is internal edge? More...
 
const labelListboundaryPoints () const
 Return list of boundary points,. More...
 
const labelListListfaceFaces () const
 Return face-face addressing. More...
 
const labelListListedgeFaces () const
 Return edge-face addressing. More...
 
const labelListListfaceEdges () const
 Return face-edge addressing. More...
 
const labelListListpointEdges () const
 Return point-edge addressing. More...
 
const labelListListpointFaces () const
 Return point-face addressing. More...
 
const List< FaceType > & localFaces () const
 Return patch faces addressing into local point list. More...
 
const labelListmeshPoints () const
 Return labelList of mesh points in patch. They are constructed. More...
 
const Map< label > & meshPointMap () const
 Mesh point map. Given the global point index find its. More...
 
const Field< PointType > & localPoints () const
 Return pointField of points in patch. More...
 
const labelListlocalPointOrder () const
 Return orders the local points for most efficient search. More...
 
label whichPoint (const label gp) const
 Given a global point index, return the local point index. More...
 
label whichEdge (const edge &) const
 Given an edge in local point labels, return its. More...
 
labelList meshEdges (const edgeList &allEdges, const labelListList &cellEdges, const labelList &faceCells) const
 Return labels of patch edges in the global edge list using. More...
 
labelList meshEdges (const edgeList &allEdges, const labelListList &pointEdges) const
 Return labels of patch edges in the global edge list using. More...
 
const Field< PointType > & faceCentres () const
 Return face centres for patch. More...
 
const Field< PointType > & faceAreas () const
 Return face areas for patch. More...
 
const Field< PointType > & faceNormals () const
 Return face normals for patch. More...
 
const Field< PointType > & pointNormals () const
 Return point normals for patch. More...
 
template<class ToPatch >
List< objectHitprojectPoints (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm=intersection::algorithm::fullRay, const intersection::direction=intersection::direction::vector) const
 Project vertices of patch onto another patch. More...
 
template<class ToPatch >
List< objectHitprojectFaceCentres (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm=intersection::algorithm::fullRay, const intersection::direction=intersection::direction::vector) const
 Project vertices of patch onto another patch. More...
 
const labelListListedgeLoops () const
 Return list of closed loops of boundary vertices. More...
 
surfaceTopo surfaceType () const
 Calculate surface type formed by patch. More...
 
bool checkTopology (const bool report=false, labelHashSet *setPtr=nullptr) const
 Check surface formed by patch for manifoldness (see above). More...
 
bool checkPointManifold (const bool report=false, labelHashSet *setPtr=nullptr) const
 Checks primitivePatch for faces sharing point but not edge. More...
 
void clearOut ()
 
void clearGeom ()
 
void clearTopology ()
 
void clearPatchMeshAddr ()
 
void operator= (const PrimitivePatch< FaceList, PointField > &)
 Assignment operator. More...
 
void operator= (PrimitivePatch< FaceList, PointField > &&)
 Move assignment operator. More...
 
template<class ToPatch >
Foam::List< Foam::objectHitprojectPoints (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm alg, const intersection::direction dir) const
 
template<class ToPatch >
Foam::List< Foam::objectHitprojectFaceCentres (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm alg, const intersection::direction dir) const
 
- Public Member Functions inherited from surfaceFormatsCore
 surfaceFormatsCore ()
 Construct null. More...
 
virtual ~surfaceFormatsCore ()
 Destructor. More...
 

Static Public Attributes

static const NamedEnum< filterType, 4 > filterTypeNames_
 
- Static Public Attributes inherited from surfaceFormatsCore
static word nativeExt
 The file extension corresponding to 'native' surface format. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from MeshedSurface< face >
static bool isTri ()
 Face storage only handles triangulated faces. More...
 
static bool canRead (const fileName &, const bool verbose=false)
 Can we read this file format? More...
 
static bool canReadType (const word &ext, const bool verbose=false)
 Can we read this file format? More...
 
static bool canWriteType (const word &ext, const bool verbose=false)
 Can we write this file format? More...
 
static wordHashSet readTypes ()
 
static wordHashSet writeTypes ()
 
static autoPtr< MeshedSurfaceNew (const fileName &, const word &ext)
 Select constructed from filename (explicit extension) More...
 
static autoPtr< MeshedSurfaceNew (const fileName &)
 Select constructed from filename (implicit extension) More...
 
static void write (const fileName &, const MeshedSurface< face > &)
 Write to file. More...
 
- Static Public Member Functions inherited from surfaceFormatsCore
static bool checkSupport (const wordHashSet &available, const word &ext, const bool verbose, const word &functionName)
 
static fileName localMeshFileName (const word &surfName="")
 Return the local file name (within time directory) More...
 
static fileName findMeshInstance (const Time &, const word &surfName="")
 Find instance with surfName. More...
 
static fileName findMeshFile (const Time &, const word &surfName="")
 Find mesh file with surfName. More...
 
- Protected Member Functions inherited from MeshedSurface< face >
void transcribe (MeshedSurface< face > &)
 Transfer points/zones and transcribe face -> triFace. More...
 
void transcribe (MeshedSurface< face > &surf)
 
void transcribe (MeshedSurface< face > &surf)
 
void checkZones ()
 Basic sanity check on zones. More...
 
pointFieldstoredPoints ()
 Non-const access to global points. More...
 
List< face > & storedFaces ()
 Non-const access to the faces. More...
 
surfZoneListstoredZones ()
 Non-const access to the zones. More...
 
void sortFacesAndStore (List< face > &&unsortedFaces, List< label > &&zoneIds, const bool sorted)
 Sort faces by zones and store sorted faces. More...
 
virtual void remapFaces (const labelUList &faceMap)
 Set new zones from faceMap. More...
 
- Static Protected Member Functions inherited from surfaceFormatsCore
template<class Container >
static List< surfZoneoneZone (const Container &container, const word &name="zone0")
 Return a list with a single entry,. More...
 
static string getLineNoComment (IFstream &)
 Read non-comment line. More...
 

Detailed Description

Marching tet iso surface algorithm with filtering to remove unnecessary topology.

Three levels of filtering are possible:

  • none: Don't filter; the full intersection between the iso surface and the tetrahedral decomposition of the mesh is generated
  • partial: Remove points from vertex to cell-centre edges and merge triangles that form a contiguous cut through a single cell
  • full: As partial, but also remove points from face-diagonals and merge edges that originate from the same face
  • clean: As full, but also remove faces that were made non-manifold by the point filtering process. Note that this process is not entirely robust. The removal process can result in entire contiguous sections of the surface being removed. If small imperfections in the surface can be tolerated, then it is advised to use "full" filtering instead.
Source files

Definition at line 78 of file isoSurface.H.

Member Enumeration Documentation

◆ filterType

enum filterType
strong
Enumerator
none 
partial 
full 
clean 

Definition at line 84 of file isoSurface.H.

Constructor & Destructor Documentation

◆ isoSurface()

Member Function Documentation

◆ TypeName()

TypeName ( "isoSurface"  )

Runtime type information.

◆ meshCells()

const labelList& meshCells ( ) const
inline

For every face original cell in mesh.

Definition at line 255 of file isoSurface.H.

◆ pointToFace()

const labelList& pointToFace ( ) const
inline

For every point originating face (pyramid) in mesh.

Definition at line 261 of file isoSurface.H.

◆ pointToVerts()

const edgeList& pointToVerts ( ) const
inline

Per point: originating mesh vertex/cc. See encoding above.

Definition at line 267 of file isoSurface.H.

References isoSurface::interpolate().

Here is the call graph for this function:

◆ interpolate() [1/2]

tmp<Field<Type> > interpolate ( const Field< Type > &  cCoords,
const Field< Type > &  pCoords 
) const

Interpolates cCoords,pCoords.

Referenced by isoSurface::pointToVerts().

Here is the caller graph for this function:

◆ interpolate() [2/2]

Foam::tmp<Foam::Field<Type> > interpolate ( const Field< Type > &  cellCoords,
const Field< Type > &  pointCoords 
) const

Definition at line 31 of file isoSurfaceTemplates.C.

References fld(), forAll, Foam::mag(), tmp< T >::ref(), s(), and Foam::VSMALL.

Here is the call graph for this function:

Member Data Documentation

◆ filterTypeNames_

const Foam::NamedEnum< Foam::isoSurface::filterType, 4 > filterTypeNames_
static

Definition at line 92 of file isoSurface.H.

Referenced by NamedEnum< compressibleField, 8 >::names().


The documentation for this class was generated from the following files: