#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().