StdMeshers_PrismAsBlock Class Reference

Tool analyzing and giving access to a prism geometry treating it like a block, i.e. the four side faces are emulated by division/uniting of missing/excess faces. It also manage associations between block sub-shapes and a mesh. More...

#include <StdMeshers_Prism_3D.hxx>

Public Member Functions

void Clear ()
 Free allocated memory. More...
 
SMESH_ComputeErrorPtr GetError () const
 Return problem description. More...
 
bool GetLayersTransformation (std::vector< gp_Trsf > &trsf, const Prism_3D::TPrismTopo &prism) const
 Return transformations to get coordinates of nodes of each internal layer by nodes of the bottom. Layer is a set of nodes at a certain step from bottom to top. More...
 
const TNodeColumn * GetNodeColumn (const SMDS_MeshNode *node) const
 Return pointer to column of nodes. More...
 
const TParam2ColumnMap * GetParam2ColumnMap (const int baseEdgeID, bool &isReverse) const
 Return TParam2ColumnMap for a base edge. More...
 
bool HasNotQuadElemOnTop () const
 
bool Init (SMESH_MesherHelper *helper, const Prism_3D::TPrismTopo &prism)
 Initialization. More...
 
SMESH_MeshMesh () const
 Return pointer to mesh. More...
 
SMESHDS_MeshMeshDS () const
 Return pointer to mesh DS. More...
 
const TopoDS_Shape & Shape (const int shapeID) const
 Return a in-block shape. More...
 
int ShapeID (const TopoDS_Shape &shape) const
 Return in-block ID of a shape. More...
 
 StdMeshers_PrismAsBlock ()
 Constructor. Initialization is needed. More...
 
SMESH_subMeshSubMesh (const int shapeID) const
 Return submesh of a shape. More...
 
SMESHDS_SubMeshSubMeshDS (const int shapeID) const
 Return submesh DS of a shape. More...
 
int VerticalSize () const
 Return number of nodes on every vertical edge. More...
 
 ~StdMeshers_PrismAsBlock ()
 
- Public Member Functions inherited from SMESH_Block
bool ComputeParameters (const gp_Pnt &thePoint, gp_XYZ &theParams, const int theShapeID=ID_Shell, const gp_XYZ &theParamsHint=gp_XYZ(-1,-1,-1))
 
Standard_Boolean Derivatives (const math_Vector &X, math_Matrix &D)
 
double DistanceReached () const
 
bool EdgeParameters (const int theEdgeID, const double theU, gp_XYZ &theParams)
 
bool EdgePoint (const int theEdgeID, const gp_XYZ &theParams, gp_XYZ &thePoint) const
 
bool EdgeU (const int theEdgeID, const gp_XYZ &theParams, double &theU) const
 
bool FacePoint (const int theFaceID, const gp_XYZ &theParams, gp_XYZ &thePoint) const
 
bool FaceUV (const int theFaceID, const gp_XYZ &theParams, gp_XY &theUV) const
 
Standard_Integer GetStateNumber ()
 
double GetTolerance () const
 
bool IsToleranceReached () const
 
bool LoadBlockShapes (const TopoDS_Shell &theShell, const TopoDS_Vertex &theVertex000, const TopoDS_Vertex &theVertex001, TopTools_IndexedMapOfOrientedShape &theShapeIDMap)
 
bool LoadBlockShapes (const TopTools_IndexedMapOfOrientedShape &theShapeIDMap)
 Initialize block geometry with shapes from theShapeIDMap. More...
 
bool LoadFace (const TopoDS_Face &theFace, const int theFaceID, const TopTools_IndexedMapOfOrientedShape &theShapeIDMap)
 Load face geometry. More...
 
bool LoadMeshBlock (const SMDS_MeshVolume *theVolume, const int theNode000Index, const int theNode001Index, std::vector< const SMDS_MeshNode * > &theOrderedNodes)
 
Standard_Integer NbEquations () const
 
Standard_Integer NbVariables () const
 
void SetTolerance (const double tol)
 
bool ShellPoint (const gp_XYZ &theParams, gp_XYZ &thePoint) const
 
 SMESH_Block ()
 
Standard_Boolean Value (const math_Vector &X, math_Vector &F)
 
Standard_Boolean Values (const math_Vector &X, math_Vector &F, math_Matrix &D)
 
bool VertexParameters (const int theVertexID, gp_XYZ &theParams)
 
bool VertexPoint (const int theVertexID, gp_XYZ &thePoint) const
 

Static Public Member Functions

static bool IsForwardEdge (SMESHDS_Mesh *meshDS, const TParam2ColumnMap &columnsMap, const TopoDS_Edge &bottomEdge, const int sideFaceID)
 Check curve orientation of a bottom edge. More...
 
- Static Public Member Functions inherited from SMESH_Block
static std::ostream & DumpShapeID (const int theBlockShapeID, std::ostream &stream)
 
static bool FindBlockShapes (const TopoDS_Shell &theShell, const TopoDS_Vertex &theVertex000, const TopoDS_Vertex &theVertex001, TopTools_IndexedMapOfOrientedShape &theShapeIDMap)
 
static int GetCoordIndOnEdge (const int theEdgeID)
 
static void GetEdgeVertexIDs (const int edgeID, std::vector< int > &vertexVec)
 
static void GetFaceEdgesIDs (const int faceID, std::vector< int > &edgeVec)
 
static int GetOrderedEdges (const TopoDS_Face &theFace, std::list< TopoDS_Edge > &theEdges, std::list< int > &theNbEdgesInWires, TopoDS_Vertex theFirstVertex=TopoDS_Vertex(), const bool theShapeAnalysisAlgo=false)
 Return number of wires and a list of oredered edges. More...
 
static double * GetShapeCoef (const int theShapeID)
 
static int GetShapeIDByParams (const gp_XYZ &theParams)
 
static bool Insert (const TopoDS_Shape &theShape, const int theShapeID, TopTools_IndexedMapOfOrientedShape &theShapeIDMap)
 / Insert theShape into theShapeIDMap with theShapeID More...
 
static bool IsEdgeID (int theShapeID)
 
static bool IsFaceID (int theShapeID)
 
static bool IsForwardEdge (const TopoDS_Edge &theEdge, const TopTools_IndexedMapOfOrientedShape &theShapeIDMap)
 
static bool IsVertexID (int theShapeID)
 
static int NbEdges ()
 
static int NbFaces ()
 
static int NbSubShapes ()
 
static int NbVertices ()
 
static int ShapeIndex (int theShapeID)
 
static bool ShellPoint (const gp_XYZ &theParams, const std::vector< gp_XYZ > &thePointOnShape, gp_XYZ &thePoint)
 

Additional Inherited Members

- Public Types inherited from SMESH_Block
enum  TShapeID {
  ID_NONE = 0 , ID_V000 = 1 , ID_V100 , ID_V010 ,
  ID_V110 , ID_V001 , ID_V101 , ID_V011 ,
  ID_V111 , ID_Ex00 , ID_Ex10 , ID_Ex01 ,
  ID_Ex11 , ID_E0y0 , ID_E1y0 , ID_E0y1 ,
  ID_E1y1 , ID_E00z , ID_E10z , ID_E01z ,
  ID_E11z , ID_Fxy0 , ID_Fxy1 , ID_Fx0z ,
  ID_Fx1z , ID_F0yz , ID_F1yz , ID_Shell ,
  ID_FirstV = ID_V000 , ID_FirstE = ID_Ex00 , ID_FirstF = ID_Fxy0
}
 
- Protected Types inherited from SMESH_Block
enum  { SQUARE_DIST = 0 , DRV_1 , DRV_2 , DRV_3 }
 
typedef std::pair< gp_XYZ, gp_XYZ > TxyzPair
 
- Protected Member Functions inherited from SMESH_Block
bool computeParameters (const gp_Pnt &thePoint, gp_XYZ &theParams, const gp_XYZ &theParamsHint, int)
 
double distance () const
 
bool findUVAround (const gp_Pnt &thePoint, const gp_XY &theUV, const TFace &tface, gp_XYZ &theParams, int nbGetWorstLimit)
 Finds parameters corresponding to a given UV of a given face by searching around the starting solution. More...
 
bool findUVByHalfDivision (const gp_Pnt &thePoint, const gp_XY &theUV, const TFace &tface, gp_XYZ &theParams)
 Finds parameters corresponding to a given UV of a given face using half-division. More...
 
double funcValue (double sqDist) const
 
void init ()
 Call it after geometry initialisation. More...
 
void refineParametersOnFace (const gp_Pnt &thePoint, gp_XYZ &theParams, int theFaceID)
 Find more precise solution. More...
 
bool saveBetterSolution (const gp_XYZ &theNewParams, gp_XYZ &theParams, double sqDistance)
 Store a solution if it's better than a previous one. More...
 
- Protected Attributes inherited from SMESH_Block
TxyzPair my3x3x3GridNodes [1000]
 
TEdge myEdge [12]
 
TFace myFace [6]
 
int myFaceIndex
 
double myFaceParam
 
bool myGridComputed
 
int myNbIterations
 
gp_XYZ myParam
 
gp_XYZ myPnt [8]
 
gp_XYZ myPoint
 
bool mySquareFunc
 
double mySumDist
 
double myTolerance
 
double myValues [4]
 

Detailed Description

Tool analyzing and giving access to a prism geometry treating it like a block, i.e. the four side faces are emulated by division/uniting of missing/excess faces. It also manage associations between block sub-shapes and a mesh.

Constructor & Destructor Documentation

◆ StdMeshers_PrismAsBlock()

StdMeshers_PrismAsBlock::StdMeshers_PrismAsBlock ( )

Constructor. Initialization is needed.

◆ ~StdMeshers_PrismAsBlock()

StdMeshers_PrismAsBlock::~StdMeshers_PrismAsBlock ( )

References Clear().

Member Function Documentation

◆ Clear()

void StdMeshers_PrismAsBlock::Clear ( )

Free allocated memory.

Referenced by ~StdMeshers_PrismAsBlock().

◆ GetError()

SMESH_ComputeErrorPtr StdMeshers_PrismAsBlock::GetError ( ) const

Return problem description.

◆ GetLayersTransformation()

bool StdMeshers_PrismAsBlock::GetLayersTransformation ( std::vector< gp_Trsf > &  trsf,
const Prism_3D::TPrismTopo prism 
) const

Return transformations to get coordinates of nodes of each internal layer by nodes of the bottom. Layer is a set of nodes at a certain step from bottom to top.

References GetParam2ColumnMap(), SMESH_Algo::isDegenerated(), SMESH_subMesh::IsEmpty(), MeshDS(), Prism_3D::TPrismTopo::myBottomEdges, Prism_3D::TPrismTopo::myNbEdgesInWires, SubMesh(), and VerticalSize().

◆ GetNodeColumn()

const TNodeColumn * StdMeshers_PrismAsBlock::GetNodeColumn ( const SMDS_MeshNode node) const

Return pointer to column of nodes.

Parameters
node- bottom node from which the returned column goes up
Return values
constTNodeColumn* - the found column

References SMDS_MeshElement::getshapeId().

◆ GetParam2ColumnMap()

const TParam2ColumnMap * StdMeshers_PrismAsBlock::GetParam2ColumnMap ( const int  baseEdgeID,
bool isReverse 
) const

Return TParam2ColumnMap for a base edge.

Parameters
baseEdgeID- base edge SMESHDS Index
isReverse- columns in-block orientation
Return values
constTParam2ColumnMap* - map

Referenced by GetLayersTransformation().

◆ HasNotQuadElemOnTop()

bool StdMeshers_PrismAsBlock::HasNotQuadElemOnTop ( ) const

◆ Init()

◆ IsForwardEdge()

bool StdMeshers_PrismAsBlock::IsForwardEdge ( SMESHDS_Mesh meshDS,
const TParam2ColumnMap &  columnsMap,
const TopoDS_Edge &  bottomEdge,
const int  sideFaceID 
)
static

Check curve orientation of a bottom edge.

Parameters
meshDS- mesh DS
columnsMap- node columns map of side face
bottomEdge- the bottom edge
sideFaceID- side face in-block ID
Return values
bool- true if orientation coincides with in-block forward orientation
Parameters
meshDS- mesh DS
columnsMap- node columns map of side face
bottomEdge- the bottom edge
sideFaceID- side face in-block ID
Return values
bool- true if orientation coinside with in-block forward orientation

References SMESH_MesherHelper::GetSubShapeByNode(), SMESH_Block::ID_F0yz, SMESH_Block::ID_Fx1z, and SMESH_MesherHelper::IsClosedEdge().

Referenced by Init().

◆ Mesh()

SMESH_Mesh * StdMeshers_PrismAsBlock::Mesh ( ) const

Return pointer to mesh.

Return values
SMESH_Mesh- mesh

◆ MeshDS()

SMESHDS_Mesh * StdMeshers_PrismAsBlock::MeshDS ( ) const

Return pointer to mesh DS.

Return values
SMESHDS_Mesh- mesh DS

Referenced by GetLayersTransformation(), and Init().

◆ Shape()

const TopoDS_Shape & StdMeshers_PrismAsBlock::Shape ( const int  shapeID) const

Return a in-block shape.

Parameters
shapeID- shape given by in-block index
Return values
SMESHDS_SubMesh*- found submesh

◆ ShapeID()

int StdMeshers_PrismAsBlock::ShapeID ( const TopoDS_Shape &  shape) const

Return in-block ID of a shape.

Parameters
shape- block sub-shape
Return values
int- ID or zero if the shape has no ID

◆ SubMesh()

SMESH_subMesh * StdMeshers_PrismAsBlock::SubMesh ( const int  shapeID) const

Return submesh of a shape.

Parameters
shapeID- shape given by in-block index
Return values
SMESH_subMesh*- found submesh

Referenced by GetLayersTransformation().

◆ SubMeshDS()

SMESHDS_SubMesh * StdMeshers_PrismAsBlock::SubMeshDS ( const int  shapeID) const

Return submesh DS of a shape.

Parameters
shapeID- shape given by in-block index
Return values
SMESHDS_SubMesh*- found submesh DS

◆ VerticalSize()

int StdMeshers_PrismAsBlock::VerticalSize ( ) const

Return number of nodes on every vertical edge.

Return values
int- number of nodes including end nodes

Referenced by GetLayersTransformation().


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