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_Mesh & | getMesh () 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... | |
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.
NETGENPlugin_Internals::NETGENPlugin_Internals | ( | SMESH_Mesh & | mesh, |
const TopoDS_Shape & | shape, | ||
bool | is3D | ||
) |
Find "internal" sub-shapes.
References SMESH_MesherHelper::GetAncestors(), SMESH_subMesh::GetId(), SMESH_subMesh::IsEmpty(), isInternalShape(), SMESH_MesherHelper::NbAncestors(), and SMESHDS_Mesh::ShapeToIndex().
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().
Referenced by NETGENPlugin_Mesher::AddIntVerticesInFaces().
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().
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().
SMESH_Mesh & NETGENPlugin_Internals::getMesh | ( | ) | const |
Return SMESH.
Referenced by NETGENPlugin_Mesher::AddIntVerticesInFaces(), NETGENPlugin_Mesher::AddIntVerticesInSolids(), and NETGENPlugin_Mesher::FixIntFaces().
Referenced by NETGENPlugin_Mesher::AddIntVerticesInSolids(), and NETGENPlugin_Mesher::Compute().
bool NETGENPlugin_Internals::hasInternalEdges | ( | ) | const |
Referenced by NETGENPlugin_Mesher::Compute(), and getInternalEdges().
bool NETGENPlugin_Internals::hasInternalFaces | ( | ) | const |
Referenced by NETGENPlugin_Mesher::Compute(), and getInternalFaces().
bool NETGENPlugin_Internals::hasInternalVertexInFace | ( | ) | const |
Referenced by NETGENPlugin_Mesher::Compute().
bool NETGENPlugin_Internals::hasInternalVertexInSolid | ( | ) | const |
Referenced by NETGENPlugin_Mesher::Compute(), and NETGENPlugin_NETGEN_3D::Compute().
Referenced by 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().