NETGENPlugin_Internals Class Reference

Container of info needed to solve problems with internal shapes. More...

#include <NETGENPlugin_Mesher.hxx>

Public Member Functions

void findBorderElements (std::set< const SMDS_MeshElement *, TIDCompare > &borderElems)
 Find mesh faces on non-internal geom faces sharing internal edge some nodes of which are to be doubled to make the second border of the "crack". More...
 
const std::map< int, int > & getEdgesAndVerticesWithFaces () const
 
const std::map< int, std::list< int > > & getFacesWithVertices () const
 
void getInternalEdges (TopTools_IndexedMapOfShape &fmap, TopTools_IndexedMapOfShape &emap, TopTools_IndexedMapOfShape &vmap, std::list< SMESH_subMesh * > smToPrecompute[])
 put internal shapes in maps and fill in submeshes to precompute More...
 
void getInternalFaces (TopTools_IndexedMapOfShape &fmap, TopTools_IndexedMapOfShape &emap, std::list< SMESH_subMesh * > &facesSM, std::list< SMESH_subMesh * > &boundarySM)
 return shapes and submeshes to be meshed and already meshed boundary submeshes More...
 
SMESH_MeshgetMesh () const
 Return SMESH. More...
 
const std::map< int, std::list< int > > & getSolidsWithVertices () const
 
bool hasInternalEdges () const
 
bool hasInternalFaces () const
 
bool hasInternalVertexInFace () const
 
bool hasInternalVertexInSolid () const
 
bool hasInternalVertexInSolid (int soID) const
 
bool isBorderFace (int faceID) const
 
bool isInternalEdge (int id) const
 
bool isInternalShape (int id) const
 
bool isShapeToPrecompute (const TopoDS_Shape &s)
 Return true if given shape is to be precomputed in order to be correctly added to netgen mesh. More...
 
 NETGENPlugin_Internals (SMESH_Mesh &mesh, const TopoDS_Shape &shape, bool is3D)
 Find "internal" sub-shapes. More...
 

Detailed Description

Container of info needed to solve problems with internal shapes.

Issue 0020676. It is made up as a class to be ready to extract from NETGEN and put in SMESH as soon as the same solution is needed somewhere else. The approach is to precompute internal edges in 2D and internal faces in 3D and put their mesh correctly (twice) into netgen mesh. In 2D, this class finds internal edges in faces and their vertices. In 3D, it additionally finds internal faces, their edges shared with other faces, and their vertices shared by several internal edges. Nodes built on the found shapes and mesh faces built on the found internal faces are to be doubled in netgen mesh to emulate a "crack"

For internal faces a more simple solution is found, which is just to duplicate mesh faces on internal geom faces without modeling a "real crack". For this reason findBorderElements() is no more used anywhere.

Constructor & Destructor Documentation

◆ NETGENPlugin_Internals()

NETGENPlugin_Internals::NETGENPlugin_Internals ( SMESH_Mesh mesh,
const TopoDS_Shape &  shape,
bool  is3D 
)

Member Function Documentation

◆ findBorderElements()

void NETGENPlugin_Internals::findBorderElements ( std::set< const SMDS_MeshElement *, TIDCompare > &  borderElems)

Find mesh faces on non-internal geom faces sharing internal edge some nodes of which are to be doubled to make the second border of the "crack".

< links of faces on internal geom face

< mesh faces on border geom faces

References SMESHDS_SubMesh::Contains(), SMESH_MesherHelper::GetAncestors(), SMDS_MeshNode::GetInverseElementIterator(), SMESHDS_SubMesh::GetNodes(), SMESH_subMesh::GetSubMeshDS(), SMESHDS_Mesh::IndexToShape(), isInternalShape(), SMESHDS_Mesh::MeshElements(), SMDS_MeshElement::NbCornerNodes(), SMESHDS_SubMesh::NbElements(), and SMESHDS_Mesh::ShapeToIndex().

◆ getEdgesAndVerticesWithFaces()

const std::map< int, int > & NETGENPlugin_Internals::getEdgesAndVerticesWithFaces ( ) const

◆ getFacesWithVertices()

const std::map< int, std::list< int > > & NETGENPlugin_Internals::getFacesWithVertices ( ) const

◆ getInternalEdges()

void NETGENPlugin_Internals::getInternalEdges ( TopTools_IndexedMapOfShape &  fmap,
TopTools_IndexedMapOfShape &  emap,
TopTools_IndexedMapOfShape &  vmap,
std::list< SMESH_subMesh * >  smToPrecompute[] 
)

put internal shapes in maps and fill in submeshes to precompute

References hasInternalEdges().

Referenced by NETGENPlugin_Mesher::Compute().

◆ getInternalFaces()

void NETGENPlugin_Internals::getInternalFaces ( TopTools_IndexedMapOfShape &  fmap,
TopTools_IndexedMapOfShape &  emap,
std::list< SMESH_subMesh * > &  facesSM,
std::list< SMESH_subMesh * > &  boundarySM 
)

return shapes and submeshes to be meshed and already meshed boundary submeshes

References SMESH_subMesh::getDependsOnIterator(), SMESH_subMesh::GetSubShape(), hasInternalFaces(), and SMESH_subMesh::IsEmpty().

◆ getMesh()

◆ getSolidsWithVertices()

const std::map< int, std::list< int > > & NETGENPlugin_Internals::getSolidsWithVertices ( ) const

◆ hasInternalEdges()

bool NETGENPlugin_Internals::hasInternalEdges ( ) const

◆ hasInternalFaces()

bool NETGENPlugin_Internals::hasInternalFaces ( ) const

◆ hasInternalVertexInFace()

bool NETGENPlugin_Internals::hasInternalVertexInFace ( ) const

◆ hasInternalVertexInSolid() [1/2]

bool NETGENPlugin_Internals::hasInternalVertexInSolid ( ) const

◆ hasInternalVertexInSolid() [2/2]

bool NETGENPlugin_Internals::hasInternalVertexInSolid ( int  soID) const

◆ isBorderFace()

bool NETGENPlugin_Internals::isBorderFace ( int  faceID) const

◆ isInternalEdge()

bool NETGENPlugin_Internals::isInternalEdge ( int  id) const

Referenced by isShapeToPrecompute().

◆ isInternalShape()

bool NETGENPlugin_Internals::isInternalShape ( int  id) const

◆ isShapeToPrecompute()

bool NETGENPlugin_Internals::isShapeToPrecompute ( const TopoDS_Shape &  s)

Return true if given shape is to be precomputed in order to be correctly added to netgen mesh.

References isInternalEdge().

Referenced by NETGENPlugin_Mesher::PrepareOCCgeometry().


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