Version: 8.3.0
StdMeshers_QuadToTriaAdaptor Class Reference

"Transforms" quadrilateral faces into triangular ones by creation of pyramids More...

#include <StdMeshers_QuadToTriaAdaptor.hxx>

Inheritance diagram for StdMeshers_QuadToTriaAdaptor:

Public Types

typedef boost::shared_ptr
< SMESH_ProxyMesh
Ptr
 
typedef std::map< const
SMDS_MeshNode *, const
SMDS_MeshNode *, TIDCompare
TN2NMap
 

Public Member Functions

 StdMeshers_QuadToTriaAdaptor ()
 Constructor. More...
 
 ~StdMeshers_QuadToTriaAdaptor ()
 Destructor. More...
 
bool Compute (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape, SMESH_ProxyMesh *aProxyMesh=0)
 
bool Compute (SMESH_Mesh &aMesh)
 Computes pyramids in mesh with no shape. More...
 
const TopoDS_Shape & GetShape () const
 
const SMESHDS_SubMeshGetSubMesh (const TopoDS_Shape &shape) const
 Returns the submesh of a shape; 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...
 
int 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...
 
SMESH_MeshGetMesh () const
 
SMESHDS_MeshGetMeshDS () const
 Returns mesh DS. More...
 

Protected Member Functions

int Preparation (const SMDS_MeshElement *face, TColgp_Array1OfPnt &PN, TColgp_Array1OfVec &VN, std::vector< const SMDS_MeshNode * > &FNodes, gp_Pnt &PC, gp_Vec &VNorm, const SMDS_MeshElement **volumes=0)
 Prepare data for the given face. More...
 
bool LimitHeight (gp_Pnt &Papex, const gp_Pnt &PC, const TColgp_Array1OfPnt &PN, const std::vector< const SMDS_MeshNode * > &FNodes, SMESH_Mesh &aMesh, const SMDS_MeshElement *NotCheckedFace, const bool UseApexRay, const TopoDS_Shape &Shape=TopoDS_Shape())
 Return allowed height of a pyramid. More...
 
bool Compute2ndPart (SMESH_Mesh &aMesh, const std::vector< const SMDS_MeshElement * > &pyramids)
 Update created pyramids and faces to avoid their intersection. More...
 
void MergePiramids (const SMDS_MeshElement *PrmI, const SMDS_MeshElement *PrmJ, std::set< const SMDS_MeshNode * > &nodesToMove)
 Merge the two pyramids (i.e. More...
 
void MergeAdjacent (const SMDS_MeshElement *PrmI, std::set< const SMDS_MeshNode * > &nodesToMove, const bool isRecursion=false)
 Merges adjacent pyramids. More...
 
void setMesh (const SMESH_Mesh &mesh)
 
int shapeIndex (const TopoDS_Shape &shape) const
 Returns index of a shape. More...
 
virtual SubMeshnewSubmesh (int index=0) const
 
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

TopoDS_Shape myShape
 
std::set< const
SMDS_MeshElement * > 
myRemovedTrias
 
std::list< const SMDS_MeshNode * > myDegNodes
 
const SMESH_ElementSearchermyElemSearcher
 
std::vector< SMDSAbs_EntityType_allowedTypes
 

Detailed Description

"Transforms" quadrilateral faces into triangular ones by creation of pyramids

Member Typedef Documentation

typedef boost::shared_ptr<SMESH_ProxyMesh> SMESH_ProxyMesh::Ptr
inherited
typedef std::map<const SMDS_MeshNode*, const SMDS_MeshNode*, TIDCompare > SMESH_ProxyMesh::TN2NMap
inherited

Constructor & Destructor Documentation

StdMeshers_QuadToTriaAdaptor::StdMeshers_QuadToTriaAdaptor ( )

Constructor.

StdMeshers_QuadToTriaAdaptor::~StdMeshers_QuadToTriaAdaptor ( )

Destructor.

References myElemSearcher.

Member Function Documentation

SMESH_ProxyMesh::SubMesh * SMESH_ProxyMesh::findProxySubMesh ( int  shapeIndex = 0) const
protectedinherited
SMDS_ElemIteratorPtr SMESH_ProxyMesh::GetFaces ( const TopoDS_Shape &  face) const
inherited
const SMESH_ProxyMesh::SubMesh * SMESH_ProxyMesh::GetProxySubMesh ( const TopoDS_Shape &  shape) const
inherited

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

References SMESH_ProxyMesh::_subMeshes, and SMESH_ProxyMesh::shapeIndex().

Referenced by VISCOUS_3D::_ViscousBuilder::MakeN2NMap().

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

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

References SMESH_ProxyMesh::_subMeshes, and SMESH_ProxyMesh::newSubmesh().

Referenced by Compute(), VISCOUS_3D::_MeshOfSolid::getFaceSubM(), and SMESH_ProxyMesh::getProxySubMesh().

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

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

References SMESH_ProxyMesh::getProxySubMesh(), and SMESH_ProxyMesh::shapeIndex().

const TopoDS_Shape& StdMeshers_QuadToTriaAdaptor::GetShape ( ) const
bool SMESH_ProxyMesh::IsTemporary ( const SMDS_MeshElement elem) const
inherited

Return true if the element is a temporary one.

References SMESH_ProxyMesh::_elemsInMesh, and SMDS_MeshElement::GetID().

Referenced by SMESH_MesherHelper::LoadNodeColumns().

bool StdMeshers_QuadToTriaAdaptor::LimitHeight ( gp_Pnt &  Papex,
const gp_Pnt &  PC,
const TColgp_Array1OfPnt &  PN,
const std::vector< const SMDS_MeshNode * > &  FNodes,
SMESH_Mesh aMesh,
const SMDS_MeshElement NotCheckedFace,
const bool  UseApexRay,
const TopoDS_Shape &  Shape = TopoDS_Shape() 
)
protected

Return allowed height of a pyramid.

Parameters
Papex- optimal pyramid apex
PC- gravity center of a quadrangle
PN- four nodes of the quadrangle
aMesh- mesh
NotCheckedFace- the quadrangle face
Shape- the shape being meshed
Return values
falseif mesh invalidity detected

References SMESH_MeshAlgos::GetElementSearcher(), SMDS_MeshElement::GetNode(), SMDS_MeshElement::GetNodeIndex(), HasIntersection(), HasIntersection3(), Max(), Min(), myElemSearcher, SMDS_MeshElement::NbCornerNodes(), and SMDSAbs_Face.

Referenced by Compute().

void StdMeshers_QuadToTriaAdaptor::MergeAdjacent ( const SMDS_MeshElement PrmI,
std::set< const SMDS_MeshNode * > &  nodesToMove,
const bool  isRecursion = false 
)
protected
void StdMeshers_QuadToTriaAdaptor::MergePiramids ( const SMDS_MeshElement PrmI,
const SMDS_MeshElement PrmJ,
std::set< const SMDS_MeshNode * > &  nodesToMove 
)
protected
int SMESH_ProxyMesh::NbProxySubMeshes ( ) const
inherited

Returns number of proxy sub-meshes.

References SMESH_ProxyMesh::_subMeshes.

virtual SubMesh* SMESH_ProxyMesh::newSubmesh ( int  index = 0) const
protectedvirtualinherited
int StdMeshers_QuadToTriaAdaptor::Preparation ( const SMDS_MeshElement face,
TColgp_Array1OfPnt &  PN,
TColgp_Array1OfVec &  VN,
std::vector< const SMDS_MeshNode * > &  FNodes,
gp_Pnt &  PC,
gp_Vec &  VNorm,
const SMDS_MeshElement **  volumes = 0 
)
protected

Prepare data for the given face.

Parameters
PN- coordinates of face nodes
VN- cross products of vectors (PC-PN(i)) ^ (PC-PN(i+1))
FNodes- face nodes
PC- gravity center of nodes
VNorm- face normal (sum of VN)
volumes- two volumes sharing the given face, the first is in VNorm direction
Return values
int- 0 if given face is not quad, 1 if given face is quad, 2 if given face is degenerate quad (two nodes are coincided)

References DEGEN_QUAD, SMDS_MeshElement::GetNode(), SMDS_MeshElement::GetNodeIndex(), myDegNodes, SMDS_MeshElement::NbCornerNodes(), SMDS_MeshElement::NbNodes(), SMDS_MeshElement::nodesIterator(), NOT_QUAD, QUAD, SMDSAbs_Volume, SMDS_MeshNode::X(), SMDS_MeshNode::Y(), and SMDS_MeshNode::Z().

Referenced by Compute().

void SMESH_ProxyMesh::removeTmpElement ( const SMDS_MeshElement elem)
protectedinherited
void SMESH_ProxyMesh::setMesh ( const SMESH_Mesh mesh)
protectedinherited
void SMESH_ProxyMesh::setNode2Node ( const SMDS_MeshNode srcNode,
const SMDS_MeshNode proxyNode,
const SubMesh subMesh 
)
protectedinherited

Set node-node correspondence.

References SMESH_ProxyMesh::SubMesh::_n2n.

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

void SMESH_ProxyMesh::storeTmpElement ( const SMDS_MeshElement elem)
protectedinherited

Stores tmp element residing the _mesh.

References SMESH_ProxyMesh::_elemsInMesh.

Referenced by Compute().

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

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

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

Referenced by Compute().

void SMESH_ProxyMesh::takeTmpElemsInMesh ( SMESH_ProxyMesh proxyMesh)
protectedinherited

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

References SMESH_ProxyMesh::_elemsInMesh.

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

Field Documentation

std::vector< SMDSAbs_EntityType> SMESH_ProxyMesh::_allowedTypes
protectedinherited
std::list< const SMDS_MeshNode* > StdMeshers_QuadToTriaAdaptor::myDegNodes
protected

Referenced by Compute2ndPart(), and Preparation().

const SMESH_ElementSearcher* StdMeshers_QuadToTriaAdaptor::myElemSearcher
protected
std::set<const SMDS_MeshElement*> StdMeshers_QuadToTriaAdaptor::myRemovedTrias
protected

Referenced by Compute2ndPart().

TopoDS_Shape StdMeshers_QuadToTriaAdaptor::myShape
protected

Referenced by Compute().