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