#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 | 
| #define BLOCK_INFLATION | 
| #define debugMsg | ( | txt | ) | {} | 
Referenced by VISCOUS_3D::_LayerEdge::CheckNeiborsOnBoundary(), VISCOUS_3D::_ConvexFace::CheckPrisms(), VISCOUS_3D::_EdgesOnShape::GetNormal(), VISCOUS_3D::_ViscousBuilder::inflate(), VISCOUS_3D::_ViscousBuilder::invalidateBadSmooth(), VISCOUS_3D::_ViscousBuilder::shrink(), VISCOUS_3D::_ViscousBuilder::smoothAndCheck(), VISCOUS_3D::_Smoother1D::smoothComplexEdge(), and VISCOUS_3D::_ViscousBuilder::updateNormalsOfConvexFaces().
| #define dumpChangeNodes | ( | f | ) | { if(f) {} } | 
Referenced by VISCOUS_3D::_ViscousBuilder::fixBadFaces(), and VISCOUS_3D::_ViscousBuilder::shrink().
| #define dumpCmd | ( | txt | ) | 
| #define dumpFunction | ( | f | ) | f | 
Referenced by VISCOUS_3D::_ViscousBuilder::fixBadFaces(), VISCOUS_3D::_ViscousBuilder::inflate(), VISCOUS_3D::_ViscousBuilder::invalidateBadSmooth(), VISCOUS_3D::_ViscousBuilder::makeGroupOfLE(), VISCOUS_3D::_ViscousBuilder::makeLayer(), VISCOUS_3D::_ViscousBuilder::putOnOffsetSurface(), VISCOUS_3D::_ViscousBuilder::shrink(), VISCOUS_3D::_ViscousBuilder::smoothAndCheck(), VISCOUS_3D::_ViscousBuilder::updateNormals(), and VISCOUS_3D::_ViscousBuilder::updateNormalsOfConvexFaces().
| #define dumpFunctionEnd | ( | ) | 
Referenced by VISCOUS_3D::_ViscousBuilder::fixBadFaces(), VISCOUS_3D::_ViscousBuilder::inflate(), VISCOUS_3D::_ViscousBuilder::invalidateBadSmooth(), VISCOUS_3D::_ViscousBuilder::makeGroupOfLE(), VISCOUS_3D::_ViscousBuilder::makeLayer(), VISCOUS_3D::_ViscousBuilder::putOnOffsetSurface(), VISCOUS_3D::_ViscousBuilder::shrink(), VISCOUS_3D::_ViscousBuilder::smoothAndCheck(), VISCOUS_3D::_ViscousBuilder::updateNormals(), and VISCOUS_3D::_ViscousBuilder::updateNormalsOfConvexFaces().
| #define dumpMove | ( | n | ) | 
Referenced by VISCOUS_3D::_LayerEdge::InvalidateStep(), VISCOUS_3D::_ViscousBuilder::makeLayer(), VISCOUS_3D::_ViscousBuilder::putOnOffsetSurface(), VISCOUS_3D::_ViscousBuilder::restoreNoShrink(), VISCOUS_3D::_LayerEdge::SetNewLength(), VISCOUS_3D::_LayerEdge::SetNewLength2d(), VISCOUS_3D::_ViscousBuilder::shrink(), VISCOUS_3D::_SmoothNode::Smooth(), VISCOUS_3D::_Smoother1D::smoothAnalyticEdge(), VISCOUS_3D::_Smoother1D::smoothComplexEdge(), and VISCOUS_3D::_LayerEdge::SmoothOnEdge().
| #define dumpMoveComm | ( | n, | |
| txt | |||
| ) | 
| #define INCREMENTAL_SMOOTH | 
| #define OLD_NEF_POLYGON | 
| 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().