Version: 9.16.0
SMESH_ProxyMesh Class Reference

Container of xD mesh elements substituting other ones in the input mesh of an (x+1)D algorithm. More...

#include <SMESH_ProxyMesh.hxx>

Inheritance diagram for SMESH_ProxyMesh:

Data Structures

class  SubMesh
 Proxy sub-mesh. More...
 

Public Types

typedef boost::shared_ptr< SMESH_ProxyMeshPtr
 
typedef std::map< const SMDS_MeshNode *, const SMDS_MeshNode *, TIDCompareTN2NMap
 

Public Member Functions

 SMESH_ProxyMesh ()
 Constructor; mesh must be set by a descendant class. More...
 
 SMESH_ProxyMesh (std::vector< SMESH_ProxyMesh::Ptr > &components)
 Make a proxy mesh from components. More...
 
 SMESH_ProxyMesh (const SMESH_Mesh &mesh)
 Constructor. More...
 
virtual ~SMESH_ProxyMesh ()
 Destructor deletes proxy submeshes and tmp elements. More...
 
const SMESHDS_SubMeshGetSubMesh (const TopoDS_Shape &shape) const
 Returns the submesh of a shape; it can be a proxy sub-mesh. More...
 
const SMESHDS_SubMeshGetSubMesh (const int shapeID) const
 Return a sub-mesh by a shape ID; it can be a proxy sub-mesh. More...
 
const SubMeshGetProxySubMesh (const TopoDS_Shape &shape) const
 Returns the proxy sub-mesh of a shape; it can be NULL. More...
 
const SMDS_MeshNodeGetProxyNode (const SMDS_MeshNode *node) const
 Returns the proxy node of a node; the input node is returned if no proxy exists. More...
 
int NbProxySubMeshes () const
 Returns number of proxy sub-meshes. More...
 
SMDS_ElemIteratorPtr GetFaces () const
 Returns iterator on all faces of the mesh taking into account substitutions To be used in case of mesh without shape. More...
 
SMDS_ElemIteratorPtr GetFaces (const TopoDS_Shape &face) const
 Returns iterator on all faces on the shape taking into account substitutions. More...
 
smIdType NbFaces () const
 Return total nb of faces taking into account substitutions. More...
 
bool IsTemporary (const SMDS_MeshElement *elem) const
 Return true if the element is a temporary one. More...
 
SMDS_ElemIteratorPtr GetInverseElementIterator (const SMDS_MeshNode *node, SMDSAbs_ElementType type) const
 Return iterator on inverse elements of a node that may be a proxy one. More...
 
SMESH_MeshGetMesh () const
 
SMESHDS_MeshGetMeshDS () const
 Returns mesh DS. More...
 

Static Public Member Functions

static bool HasPrismsOnTwoSides (SMESHDS_SubMesh *faceSM)
 Check if a FACE has prisms on its both sides. More...
 

Protected Member Functions

void setMesh (const SMESH_Mesh &mesh)
 Set mesh. More...
 
int shapeIndex (const TopoDS_Shape &shape) const
 Returns index of a shape. More...
 
virtual SubMeshnewSubmesh (int index=0) const
 Create a SubMesh. More...
 
SubMeshfindProxySubMesh (int shapeIndex=0) const
 Returns a proxy sub-mesh. More...
 
SubMeshgetProxySubMesh (int shapeIndex)
 Returns a proxy sub-mesh; it is created if not yet exists. More...
 
SubMeshgetProxySubMesh (const TopoDS_Shape &shape=TopoDS_Shape())
 Returns a proxy sub-mesh; it is created if not yet exists. More...
 
bool takeProxySubMesh (const TopoDS_Shape &shape, SMESH_ProxyMesh *proxyMesh)
 Move proxy sub-mesh from other proxy mesh to this, returns true if sub-mesh found. More...
 
void takeTmpElemsInMesh (SMESH_ProxyMesh *proxyMesh)
 Move tmp elements residing the _mesh from other proxy mesh to this. More...
 
void removeTmpElement (const SMDS_MeshElement *elem)
 Removes tmp elements from the _mesh. More...
 
void storeTmpElement (const SMDS_MeshElement *elem)
 Stores tmp element residing the _mesh. More...
 
void setNode2Node (const SMDS_MeshNode *srcNode, const SMDS_MeshNode *proxyNode, const SubMesh *subMesh)
 Set node-node correspondence. More...
 

Protected Attributes

std::vector< SMDSAbs_EntityType_allowedTypes
 

Private Types

typedef NCollection_DataMap< const SMDS_MeshNode *, std::vector< const SMDS_MeshElement * >, SMESH_HasherTNodeElemVecMap
 

Private Attributes

const SMESH_Mesh_mesh
 
std::vector< SubMesh * > _subMeshes
 
std::set< const SMDS_MeshElement * > _elemsInMesh
 
TNodeElemVecMap _inverseElements
 
SubMesh_subContainer
 

Detailed Description

Container of xD mesh elements substituting other ones in the input mesh of an (x+1)D algorithm.

Member Typedef Documentation

◆ Ptr

typedef boost::shared_ptr<SMESH_ProxyMesh> SMESH_ProxyMesh::Ptr

◆ TN2NMap

typedef std::map<const SMDS_MeshNode*, const SMDS_MeshNode*, TIDCompare > SMESH_ProxyMesh::TN2NMap

◆ TNodeElemVecMap

typedef NCollection_DataMap< const SMDS_MeshNode*, std::vector< const SMDS_MeshElement* >, SMESH_Hasher > SMESH_ProxyMesh::TNodeElemVecMap
private

Constructor & Destructor Documentation

◆ SMESH_ProxyMesh() [1/3]

SMESH_ProxyMesh::SMESH_ProxyMesh ( )

Constructor; mesh must be set by a descendant class.

◆ SMESH_ProxyMesh() [2/3]

SMESH_ProxyMesh::SMESH_ProxyMesh ( std::vector< SMESH_ProxyMesh::Ptr > &  components)

Make a proxy mesh from components.

Components become empty

References _allowedTypes, _mesh, _subMeshes, setMesh(), and takeTmpElemsInMesh().

◆ SMESH_ProxyMesh() [3/3]

SMESH_ProxyMesh::SMESH_ProxyMesh ( const SMESH_Mesh mesh)

Constructor.

◆ ~SMESH_ProxyMesh()

SMESH_ProxyMesh::~SMESH_ProxyMesh ( )
virtual

Destructor deletes proxy submeshes and tmp elements.

References _elemsInMesh, _subContainer, _subMeshes, GetMeshDS(), and SMESHDS_Mesh::RemoveFreeElement().

Member Function Documentation

◆ findProxySubMesh()

SMESH_ProxyMesh::SubMesh * SMESH_ProxyMesh::findProxySubMesh ( int  shapeIndex = 0) const
protected

◆ GetFaces() [1/2]

◆ GetFaces() [2/2]

SMDS_ElemIteratorPtr SMESH_ProxyMesh::GetFaces ( const TopoDS_Shape &  face) const

Returns iterator on all faces on the shape taking into account substitutions.

References _mesh, _subContainer, SMESHDS_SubMesh::AddSubMesh(), GetSubMesh(), SMESH_Mesh::HasShapeToMesh(), and SMESHDS_SubMesh::RemoveAllSubmeshes().

◆ GetInverseElementIterator()

SMDS_ElemIteratorPtr SMESH_ProxyMesh::GetInverseElementIterator ( const SMDS_MeshNode node,
SMDSAbs_ElementType  type 
) const

Return iterator on inverse elements of a node that may be a proxy one.

References _inverseElements, _subMeshes, SMDS_MeshNode::GetInverseElementIterator(), NbProxySubMeshes(), and SMDS_MeshElement::nodeIterator().

◆ GetMesh()

◆ GetMeshDS()

◆ GetProxyNode()

const SMDS_MeshNode * SMESH_ProxyMesh::GetProxyNode ( const SMDS_MeshNode node) const

◆ GetProxySubMesh()

const SMESH_ProxyMesh::SubMesh * SMESH_ProxyMesh::GetProxySubMesh ( const TopoDS_Shape &  shape) const

Returns the proxy sub-mesh of a shape; it can be NULL.

References _subMeshes, and shapeIndex().

Referenced by VISCOUS_3D::_ViscousBuilder::makeGroupOfLE(), and VISCOUS_3D::_ViscousBuilder::MakeN2NMap().

◆ getProxySubMesh() [1/2]

SMESH_ProxyMesh::SubMesh * SMESH_ProxyMesh::getProxySubMesh ( const TopoDS_Shape &  shape = TopoDS_Shape())
protected

Returns a proxy sub-mesh; it is created if not yet exists.

References getProxySubMesh(), and shapeIndex().

◆ getProxySubMesh() [2/2]

SMESH_ProxyMesh::SubMesh * SMESH_ProxyMesh::getProxySubMesh ( int  shapeIndex)
protected

◆ GetSubMesh() [1/2]

const SMESHDS_SubMesh * SMESH_ProxyMesh::GetSubMesh ( const int  shapeID) const

Return a sub-mesh by a shape ID; it can be a proxy sub-mesh.

References _subMeshes, GetMeshDS(), and SMESHDS_Mesh::MeshElements().

◆ GetSubMesh() [2/2]

const SMESHDS_SubMesh * SMESH_ProxyMesh::GetSubMesh ( const TopoDS_Shape &  shape) const

◆ HasPrismsOnTwoSides()

bool SMESH_ProxyMesh::HasPrismsOnTwoSides ( SMESHDS_SubMesh smFace)
static

Check if a FACE has prisms on its both sides.

Parameters
[in]smFace- sub-mesh of the FACE. NOT a proxy sub-mesh!
Returns
bool - true if there are prisms on the two sides

References SMDS_MeshElement::begin_nodes(), SMDS_MeshElement::end_nodes(), SMESHDS_SubMesh::GetElements(), SMDS_Mesh::GetElementsByNodes(), SMDS_MeshElement::NbCornerNodes(), SMESHDS_SubMesh::NbElements(), and SMDSAbs_Volume.

Referenced by StdMeshers_QuadToTriaAdaptor::Compute().

◆ IsTemporary()

bool SMESH_ProxyMesh::IsTemporary ( const SMDS_MeshElement elem) const

Return true if the element is a temporary one.

References _elemsInMesh, and SMDS_MeshElement::GetID().

Referenced by _QuadFaceGrid::LoadGrid(), and SMESH_MesherHelper::LoadNodeColumns().

◆ NbFaces()

smIdType SMESH_ProxyMesh::NbFaces ( ) const

◆ NbProxySubMeshes()

int SMESH_ProxyMesh::NbProxySubMeshes ( ) const

Returns number of proxy sub-meshes.

References _subMeshes.

Referenced by GetInverseElementIterator().

◆ newSubmesh()

SMESH_ProxyMesh::SubMesh * SMESH_ProxyMesh::newSubmesh ( int  index = 0) const
protectedvirtual

Create a SubMesh.

Parameters
[ino]index - shape index
Returns
SubMesh* - new SubMesh

Reimplemented in VISCOUS_2D::_ProxyMeshOfFace.

References GetMeshDS().

Referenced by getProxySubMesh().

◆ removeTmpElement()

◆ setMesh()

void SMESH_ProxyMesh::setMesh ( const SMESH_Mesh mesh)
protected

◆ setNode2Node()

void SMESH_ProxyMesh::setNode2Node ( const SMDS_MeshNode srcNode,
const SMDS_MeshNode proxyNode,
const SubMesh subMesh 
)
protected

Set node-node correspondence.

References SMESH_ProxyMesh::SubMesh::_n2n.

Referenced by VISCOUS_3D::_MeshOfSolid::setNode2Node().

◆ shapeIndex()

int SMESH_ProxyMesh::shapeIndex ( const TopoDS_Shape &  shape) const
protected

◆ storeTmpElement()

void SMESH_ProxyMesh::storeTmpElement ( const SMDS_MeshElement elem)
protected

Stores tmp element residing the _mesh.

References _elemsInMesh.

Referenced by StdMeshers_QuadToTriaAdaptor::Compute().

◆ takeProxySubMesh()

bool SMESH_ProxyMesh::takeProxySubMesh ( const TopoDS_Shape &  shape,
SMESH_ProxyMesh proxyMesh 
)
protected

Move proxy sub-mesh from other proxy mesh to this, returns true if sub-mesh found.

References _mesh, _subMeshes, findProxySubMesh(), and shapeIndex().

Referenced by StdMeshers_QuadToTriaAdaptor::Compute().

◆ takeTmpElemsInMesh()

void SMESH_ProxyMesh::takeTmpElemsInMesh ( SMESH_ProxyMesh proxyMesh)
protected

Move tmp elements residing the _mesh from other proxy mesh to this.

References _elemsInMesh.

Referenced by StdMeshers_QuadToTriaAdaptor::Compute(), and SMESH_ProxyMesh().

Field Documentation

◆ _allowedTypes

std::vector< SMDSAbs_EntityType> SMESH_ProxyMesh::_allowedTypes
protected

◆ _elemsInMesh

std::set< const SMDS_MeshElement* > SMESH_ProxyMesh::_elemsInMesh
private

◆ _inverseElements

TNodeElemVecMap SMESH_ProxyMesh::_inverseElements
private

◆ _mesh

◆ _subContainer

SubMesh* SMESH_ProxyMesh::_subContainer
mutableprivate

Referenced by GetFaces(), setMesh(), and ~SMESH_ProxyMesh().

◆ _subMeshes