Version: 8.3.0
StdMeshers_ViscousLayers.cxx File Reference
#include "StdMeshers_ViscousLayers.hxx"
#include "SMDS_EdgePosition.hxx"
#include "SMDS_FaceOfNodes.hxx"
#include "SMDS_FacePosition.hxx"
#include "SMDS_MeshNode.hxx"
#include "SMDS_SetIterator.hxx"
#include "SMESHDS_Group.hxx"
#include "SMESHDS_Hypothesis.hxx"
#include "SMESHDS_Mesh.hxx"
#include "SMESH_Algo.hxx"
#include "SMESH_ComputeError.hxx"
#include "SMESH_ControlsDef.hxx"
#include "SMESH_Gen.hxx"
#include "SMESH_Group.hxx"
#include "SMESH_HypoFilter.hxx"
#include "SMESH_Mesh.hxx"
#include "SMESH_MeshAlgos.hxx"
#include "SMESH_MesherHelper.hxx"
#include "SMESH_ProxyMesh.hxx"
#include "SMESH_subMesh.hxx"
#include "SMESH_subMeshEventListener.hxx"
#include "StdMeshers_FaceSide.hxx"
#include "StdMeshers_ViscousLayers2D.hxx"
#include <Adaptor3d_HSurface.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <BRepAdaptor_Curve2d.hxx>
#include <BRepAdaptor_Surface.hxx>
#include <BRepLProp_SLProps.hxx>
#include <BRepOffsetAPI_MakeOffsetShape.hxx>
#include <BRep_Tool.hxx>
#include <Bnd_B2d.hxx>
#include <Bnd_B3d.hxx>
#include <ElCLib.hxx>
#include <GCPnts_AbscissaPoint.hxx>
#include <GCPnts_TangentialDeflection.hxx>
#include <Geom2d_Circle.hxx>
#include <Geom2d_Line.hxx>
#include <Geom2d_TrimmedCurve.hxx>
#include <GeomAdaptor_Curve.hxx>
#include <GeomLib.hxx>
#include <Geom_Circle.hxx>
#include <Geom_Curve.hxx>
#include <Geom_Line.hxx>
#include <Geom_TrimmedCurve.hxx>
#include <Precision.hxx>
#include <Standard_ErrorHandler.hxx>
#include <Standard_Failure.hxx>
#include <TColStd_Array1OfReal.hxx>
#include <TopExp.hxx>
#include <TopExp_Explorer.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_MapIteratorOfMapOfShape.hxx>
#include <TopTools_MapOfShape.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Vertex.hxx>
#include <gp_Ax1.hxx>
#include <gp_Cone.hxx>
#include <gp_Sphere.hxx>
#include <gp_Vec.hxx>
#include <gp_XY.hxx>
#include <cmath>
#include <limits>
#include <list>
#include <queue>
#include <string>

Data Structures

struct  VISCOUS_3D::_MeshOfSolid
 SMESH_ProxyMesh computed by _ViscousBuilder for a SOLID. More...
 
class  VISCOUS_3D::_ShrinkShapeListener
 Listener of events of 3D sub-meshes computed with viscous layers. More...
 
class  VISCOUS_3D::_ViscousListener
 Listener of events of 3D sub-meshes computed with viscous layers. More...
 
struct  VISCOUS_3D::_Simplex
 Simplex (triangle or tetrahedron) based on 1 (tria) or 2 (tet) nodes of _LayerEdge and 2 nodes of the mesh surface beening smoothed. More...
 
struct  VISCOUS_3D::_Curvature
 Structure used to take into account surface curvature while smoothing. More...
 
struct  VISCOUS_3D::_LayerEdge
 Edge normal to surface, connecting a node on solid surface (_nodes[0]) and a node of the most internal layer (_nodes.back()) More...
 
struct  VISCOUS_3D::_LayerEdgeCmp
 
struct  VISCOUS_3D::_halfPlane
 A 2D half plane used by _LayerEdge::smoothNefPolygon() More...
 
struct  VISCOUS_3D::_2NearEdges
 Structure used to smooth a _LayerEdge based on an EDGE. More...
 
struct  VISCOUS_3D::AverageHyp
 Layers parameters got by averaging several hypotheses. More...
 
struct  VISCOUS_3D::_EdgesOnShape
 _LayerEdge's on a shape and other shape data More...
 
struct  VISCOUS_3D::_ConvexFace
 Convex FACE whose radius of curvature is less than the thickness of layers. More...
 
struct  VISCOUS_3D::_CollisionEdges
 Structure holding _LayerEdge's based on EDGEs that will collide at inflation up to the full thickness. More...
 
struct  VISCOUS_3D::_SolidData
 Data of a SOLID. More...
 
struct  VISCOUS_3D::_OffsetPlane
 Offset plane used in getNormalByOffset() More...
 
struct  VISCOUS_3D::_CentralCurveOnEdge
 Container of centers of curvature at nodes on an EDGE bounding _ConvexFace. More...
 
struct  VISCOUS_3D::_SmoothNode
 Data of node on a shrinked FACE. More...
 
class  VISCOUS_3D::_ViscousBuilder
 Builder of viscous layers. More...
 
class  VISCOUS_3D::_Shrinker1D
 Shrinker of nodes on the EDGE. More...
 
struct  VISCOUS_3D::_Smoother1D
 Smoother of _LayerEdge's on EDGE. More...
 
struct  VISCOUS_3D::_Smoother1D::OffPnt
 
struct  VISCOUS_3D::_TmpMeshFace
 Class of temporary mesh face. More...
 
struct  VISCOUS_3D::_TmpMeshFaceOnEdge
 Class of temporary mesh face storing _LayerEdge it's based on. More...
 
struct  VISCOUS_3D::_NodeCoordHelper
 Retriever of node coordinates either directly or from a surface by node UV. More...
 
struct  VISCOUS_3D::PyDump
 

Namespaces

namespace  VISCOUS_3D
 

Macros

#define INCREMENTAL_SMOOTH
 
#define BLOCK_INFLATION
 
#define OLD_NEF_POLYGON
 
#define dumpFunction(f)   f
 
#define dumpMove(n)
 
#define dumpMoveComm(n, txt)
 
#define dumpCmd(txt)
 
#define dumpFunctionEnd()
 
#define dumpChangeNodes(f)   { if(f) {} }
 
#define debugMsg(txt)   {}
 

Typedefs

typedef int VISCOUS_3D::TGeomID
 
typedef map< const
SMDS_MeshNode *, _LayerEdge
*, TIDCompare
VISCOUS_3D::TNode2Edge
 

Enumerations

enum  VISCOUS_3D::UIndex { VISCOUS_3D::U_TGT = 1, VISCOUS_3D::U_SRC, VISCOUS_3D::LEN_TGT }
 

Functions

bool VISCOUS_3D::needSmoothing (double cosin, double tgtThick, double elemSize)
 
double VISCOUS_3D::getSmoothingThickness (double cosin, double elemSize)
 
void VISCOUS_3D::ToClearSubWithMain (SMESH_subMesh *sub, const TopoDS_Shape &main)
 sets a sub-mesh event listener to clear sub-meshes of sub-shapes of the main shape when sub-mesh of the main shape is cleared, for example to clear sub-meshes of FACEs when sub-mesh of a SOLID is cleared More...
 
bool VISCOUS_3D::isLessAngle (const gp_Vec &v1, const gp_Vec &v2, const double cos)
 Check angle between vectors. More...
 
gp_XYZ VISCOUS_3D::getEdgeDir (const TopoDS_Edge &E, const TopoDS_Vertex &fromV)
 
gp_XYZ VISCOUS_3D::getEdgeDir (const TopoDS_Edge &E, const SMDS_MeshNode *atNode, SMESH_MesherHelper &helper)
 
gp_XYZ VISCOUS_3D::getFaceDir (const TopoDS_Face &F, const TopoDS_Vertex &fromV, const SMDS_MeshNode *node, SMESH_MesherHelper &helper, bool &ok, double *cosin=0)
 
gp_XYZ VISCOUS_3D::getFaceDir (const TopoDS_Face &F, const TopoDS_Edge &fromE, const SMDS_MeshNode *node, SMESH_MesherHelper &helper, bool &ok)
 
bool VISCOUS_3D::getConcaveVertices (const TopoDS_Face &F, SMESH_MesherHelper &helper, set< TGeomID > *vertices=0)
 Finds concave VERTEXes of a FACE. More...
 
bool VISCOUS_3D::isConcave (const TopoDS_Face &F, SMESH_MesherHelper &helper, set< TGeomID > *vertices=0)
 Returns true if a FACE is bound by a concave EDGE. More...
 
bool VISCOUS_3D::getDistFromEdge (const SMDS_MeshElement *face, const SMDS_MeshNode *nodeOnEdge, double &faceSize)
 Computes mimimal distance of face in-FACE nodes from an EDGE. More...
 
bool VISCOUS_3D::getRovolutionAxis (const Adaptor3d_Surface &surface, gp_Dir &axis)
 Return direction of axis or revolution of a surface. More...
 
 Handle (Geom_Curve) _Smoother1D
 Return a curve of the EDGE to be used for smoothing and arrange _LayerEdge's to be in a consequent order. More...
 

Variables

const double VISCOUS_3D::theMinSmoothCosin = 0.1
 
const double VISCOUS_3D::theSmoothThickToElemSizeRatio = 0.3
 
const double VISCOUS_3D::theMinSmoothTriaAngle = 30
 
const double VISCOUS_3D::theMinSmoothQuadAngle = 45
 
const double VISCOUS_3D::theThickToIntersection = 1.5
 

Macro Definition Documentation

#define BLOCK_INFLATION
#define dumpChangeNodes (   f)    { if(f) {} }
#define INCREMENTAL_SMOOTH
#define OLD_NEF_POLYGON

Function Documentation

Handle ( Geom_Curve  )

Return a curve of the EDGE to be used for smoothing and arrange _LayerEdge's to be in a consequent order.

References SMESH::DownCast(), Face, SMESHDS_SubMesh::GetNodes(), Handle(), and SMESH_Algo::IsStraight().