#include <StdMeshers_Quadrangle_2D.hxx>

Classes

struct  ForcedPoint
 

Public Member Functions

FaceQuadStruct::Ptr CheckAnd2Dcompute (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape, const bool CreateQuadratic)
 
virtual bool CheckHypothesis (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape, Hypothesis_Status &aStatus)
 Check hypothesis definition to mesh a shape. More...
 
FaceQuadStruct::Ptr CheckNbEdges (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape, const bool considerMesh=false)
 
virtual bool Compute (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape)
 Computes mesh on a shape. More...
 
virtual bool Evaluate (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape, MapShapeNbElems &aResMap)
 
 StdMeshers_Quadrangle_2D (int hypId, int studyId, SMESH_Gen *gen)
 
virtual ~StdMeshers_Quadrangle_2D ()
 
- Public Member Functions inherited from SMESH_2D_Algo
virtual bool FixInternalNodes (const SMESH_ProxyMesh &mesh, const TopoDS_Face &face)
 Method in which an algorithm generating a structured mesh fixes positions of in-face nodes after there movement due to insertion of viscous layers. More...
 
int NumberOfPoints (SMESH_Mesh &aMesh, const TopoDS_Wire &W)
 
int NumberOfWires (const TopoDS_Shape &S)
 
 SMESH_2D_Algo (int hypId, int studyId, SMESH_Gen *gen)
 
 SMESH_2D_Algo (int hypId, int studyId, SMESH_Gen *gen)
 
virtual ~SMESH_2D_Algo ()
 
- Public Member Functions inherited from SMESH_Algo
virtual void CancelCompute ()
 Sets _computeCanceled to true. It's usage depends on implementation of a particular mesher. More...
 
virtual bool Compute (SMESH_Mesh &aMesh, SMESH_MesherHelper *aHelper)
 Computes mesh without geometry. More...
 
const std::list< const SMESHDS_Hypothesis * > & GetAppliedHypothesis (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape, const bool ignoreAuxiliary=true) const
 Returns a list of compatible hypotheses assigned to a shape in a mesh. More...
 
const SMESH_HypoFilterGetCompatibleHypoFilter (const bool ignoreAuxiliary) const
 Returns the filter recognizing only compatible hypotheses. More...
 
const std::vector< std::string > & GetCompatibleHypothesis ()
 Returns all types of compatible hypotheses. More...
 
SMESH_ComputeErrorPtr GetComputeError () const
 return compute error More...
 
const FeaturesGetFeatures () const
 
virtual double GetProgress () const
 If possible, returns progress of computation [0.,1.]. More...
 
double GetProgressByTic () const
 Return compute progress by nb of calls of this method. More...
 
virtual const std::list< const SMESHDS_Hypothesis * > & GetUsedHypothesis (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape, const bool ignoreAuxiliary=true) const
 Returns a list of compatible hypotheses used to mesh a shape. More...
 
void InitComputeError ()
 initialize compute error etc. before call of Compute() More...
 
virtual std::istream & LoadFrom (std::istream &load)
 Loads nothing from a stream. More...
 
bool NeedDiscreteBoundary () const
 
bool NeedLowerHyps (int dim) const
 
bool NeedShape () const
 
int NumberOfPoints (SMESH_Mesh &aMesh, const TopoDS_Wire &W)
 
bool OnlyUnaryInput () const
 
virtual std::ostream & SaveTo (std::ostream &save)
 Saves nothing in a stream. More...
 
virtual void SetEventListener (SMESH_subMesh *subMesh)
 Sets event listener to submeshes if necessary. More...
 
virtual bool SetParametersByDefaults (const TDefaults &dflts, const SMESH_Mesh *theMesh=0)
 Initialize my parameter values by default parameters. More...
 
virtual bool SetParametersByMesh (const SMESH_Mesh *theMesh, const TopoDS_Shape &theShape)
 Just return false as the algorithm does not hold parameters values. More...
 
 SMESH_Algo (int hypId, int studyId, SMESH_Gen *gen)
 Creates algorithm. More...
 
std::vector< SMESH_subMesh * > & SubMeshesToCompute ()
 
virtual void SubmeshRestored (SMESH_subMesh *subMesh)
 Allow algo to do something after persistent restoration. More...
 
bool SupportSubmeshes () const
 
virtual ~ SMESH_Algo ()
 Destructor. More...
 
- Public Member Functions inherited from SMESH_Hypothesis
void ClearParameters ()
 
virtual bool DataDependOnParams () const
 The returned value is used by NotifySubMeshesHypothesisModification() to decide to call subMesh->AlgoStateEngine( MODIF_HYP, hyp ) or not if subMesh is ready to be computed (algo+hyp==OK) but not yet computed. True result is reasonable for example if EventListeners depend on parameters of hypothesis. More...
 
virtual int GetDim () const
 
SMESH_GenGetGen () const
 
char * GetLastParameters () const
 
virtual const char * GetLibName () const
 
SMESH_MeshGetMeshByPersistentID (int id)
 Find a mesh with given persistent ID. More...
 
char * GetParameters () const
 
virtual int GetShapeType () const
 
int GetStudyId () const
 
virtual bool IsAuxiliary () const
 Return true if me is an auxiliary hypothesis. More...
 
virtual void NotifySubMeshesHypothesisModification ()
 
void SetLastParameters (const char *theParameters)
 
void SetLibName (const char *theLibName)
 
void SetParameters (const char *theParameters)
 
 SMESH_Hypothesis (int hypId, int studyId, SMESH_Gen *gen)
 
virtual ~SMESH_Hypothesis ()
 
- Public Member Functions inherited from SMESHDS_Hypothesis
int GetID () const
 
const char * GetName () const
 
int GetType () const
 
bool IsSameName (const SMESHDS_Hypothesis &other) const
 Compare types of hypotheses. More...
 
bool operator!= (const SMESHDS_Hypothesis &other) const
 
virtual bool operator== (const SMESHDS_Hypothesis &other) const
 
 SMESHDS_Hypothesis (int hypId)
 
virtual ~SMESHDS_Hypothesis ()
 

Static Public Member Functions

static bool IsApplicable (const TopoDS_Shape &aShape, bool toCheckAll)
 Return true if the algorithm can mesh this shape. More...
 
- Static Public Member Functions inherited from SMESH_Algo
static GeomAbs_Shape Continuity (TopoDS_Edge E1, TopoDS_Edge E2)
 Return continuity of two edges. More...
 
static double EdgeLength (const TopoDS_Edge &E)
 Compute length of an edge. More...
 
static const FeaturesGetFeatures (const std::string &algoType)
 Returns a structure describing algorithm features. More...
 
static EMeshError GetMeshError (SMESH_subMesh *subMesh)
 Finds topological errors of a sub-mesh. More...
 
static bool GetNodeParamOnEdge (const SMESHDS_Mesh *theMesh, const TopoDS_Edge &theEdge, std::vector< double > &theParams)
 Fill vector of node parameters on geometrical edge, including vertex nodes. More...
 
static bool GetSortedNodesOnEdge (const SMESHDS_Mesh *theMesh, const TopoDS_Edge &theEdge, const bool ignoreMediumNodes, std::map< double, const SMDS_MeshNode * > &theNodes, const SMDSAbs_ElementType typeToCheck=SMDSAbs_All)
 Fill map of node parameter on geometrical edge to node it-self. More...
 
static bool IsContinuous (const TopoDS_Edge &E1, const TopoDS_Edge &E2)
 Return true if an edge can be considered as a continuation of another. More...
 
static bool isDegenerated (const TopoDS_Edge &E)
 Return true if an edge has no 3D curve. More...
 
static bool IsStraight (const TopoDS_Edge &E, const bool degenResult=false)
 Return true if an edge can be considered straight. More...
 
static const SMDS_MeshNodeVertexNode (const TopoDS_Vertex &V, const SMESH_Mesh *mesh)
 Return the node built on a vertex. A node moved to other geometry by MergeNodes() is also returned. More...
 
static const SMDS_MeshNodeVertexNode (const TopoDS_Vertex &V, const SMESHDS_Mesh *meshDS)
 Return the node built on a vertex. More...
 
static const SMDS_MeshNodeVertexNode (const TopoDS_Vertex &V, const SMESHDS_SubMesh *edgeSM, const SMESH_Mesh *mesh, const bool checkV=true)
 Return the node built on a vertex. A node moved to other geometry by MergeNodes() is also returned. More...
 
- Static Public Member Functions inherited from SMESH_Hypothesis
static bool IsStatusFatal (Hypothesis_Status theStatus)
 

Protected Types

typedef std::map< StdMeshers_FaceSidePtr, std::vector< FaceQuadStruct::Ptr > > TQuadsBySide
 

Protected Member Functions

bool addEnforcedNodes ()
 Splits quads by adding points of enforced nodes and create nodes on the sides shared by quads. More...
 
bool check ()
 Checks validity of generated faces. More...
 
bool checkNbEdgesForEvaluate (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape, MapShapeNbElems &aResMap, std::vector< int > &aNbNodes, bool &IsQuadratic)
 
bool computeQuadDominant (SMESH_Mesh &aMesh, const TopoDS_Face &aFace)
 Compute quadrangles and possibly triangles on all quads of myQuadList. More...
 
bool computeQuadDominant (SMESH_Mesh &aMesh, const TopoDS_Face &aFace, FaceQuadStruct::Ptr quad)
 Compute quadrangles and possibly triangles. More...
 
bool computeQuadPref (SMESH_Mesh &aMesh, const TopoDS_Face &aFace, FaceQuadStruct::Ptr quad)
 
bool computeReduced (SMESH_Mesh &aMesh, const TopoDS_Face &aFace, FaceQuadStruct::Ptr quad)
 
bool computeTriangles (SMESH_Mesh &aMesh, const TopoDS_Face &aFace, FaceQuadStruct::Ptr quad)
 Compute quadrangles and triangles on the quad. More...
 
bool evaluateQuadPref (SMESH_Mesh &aMesh, const TopoDS_Shape &aShape, std::vector< int > &aNbNodes, MapShapeNbElems &aResMap, bool isQuadratic)
 
int getCorners (const TopoDS_Face &theFace, SMESH_Mesh &theMesh, std::list< TopoDS_Edge > &theWire, std::vector< TopoDS_Vertex > &theVertices, int &theNbDegenEdges, const bool considerMesh)
 
bool getEnforcedUV ()
 Fills myForcedPnts. More...
 
bool setNormalizedGrid (FaceQuadStruct::Ptr quad)
 
void shiftQuad (FaceQuadStruct::Ptr &quad, const int num)
 
void smooth (FaceQuadStruct::Ptr quad)
 Perform smoothing of 2D elements on a FACE with ignored degenerated EDGE. More...
 
int splitQuad (FaceQuadStruct::Ptr quad, int i, int j)
 Splits a quad at I or J. Returns an index of a new side in the new quad. More...
 
void splitQuadFace (SMESHDS_Mesh *theMeshDS, const int theFaceID, const SMDS_MeshNode *theNode1, const SMDS_MeshNode *theNode2, const SMDS_MeshNode *theNode3, const SMDS_MeshNode *theNode4)
 
void updateDegenUV (FaceQuadStruct::Ptr quad)
 Set UV of nodes on degenerated VERTEXes in the middle of degenerated EDGE. More...
 
void updateSideUV (FaceQuadStruct::Side &side, int iForced, const TQuadsBySide &quads, int *iNext=NULL)
 Updates UV of a side after moving its node. More...
 
- Protected Member Functions inherited from SMESH_Algo
void addBadInputElement (const SMDS_MeshElement *elem)
 store a bad input element preventing computation, which may be a temporary one i.e. not residing the mesh, then it will be deleted by InitComputeError() More...
 
void addBadInputElements (const SMESHDS_SubMesh *sm, const bool addNodes=false)
 
bool error (const SMESH_Comment &comment="")
 store COMPERR_ALGO_FAILED error and comment and then return false More...
 
bool error (int error, const SMESH_Comment &comment="")
 store error and comment and then return ( error == COMPERR_OK ) More...
 
bool error (SMESH_ComputeErrorPtr error)
 store error and return error->IsOK() More...
 

Protected Attributes

bool myCheckOri
 
std::vector< ForcedPointmyForcedPnts
 
SMESH_MesherHelpermyHelper
 
bool myNeedSmooth
 
const StdMeshers_QuadrangleParamsmyParams
 
SMESH_ProxyMesh::Ptr myProxyMesh
 
std::list< FaceQuadStruct::PtrmyQuadList
 
bool myQuadranglePreference
 
StdMeshers_QuadType myQuadType
 
bool myTrianglePreference
 
int myTriaVertexID
 

Additional Inherited Members

- Public Types inherited from SMESH_Algo
enum  EMeshError { MEr_OK = 0 , MEr_HOLES , MEr_BAD_ORI , MEr_EMPTY }
 
- Public Types inherited from SMESH_Hypothesis
enum  Hypothesis_Status {
  HYP_OK = 0 , HYP_MISSING , HYP_CONCURENT , HYP_BAD_PARAMETER ,
  HYP_HIDDEN_ALGO , HYP_HIDING_ALGO , HYP_UNKNOWN_FATAL , HYP_INCOMPATIBLE ,
  HYP_NOTCONFORM , HYP_ALREADY_EXIST , HYP_BAD_DIM , HYP_BAD_SUBSHAPE ,
  HYP_BAD_GEOMETRY , HYP_NEED_SHAPE , HYP_INCOMPAT_HYPS
}
 
- Public Types inherited from SMESHDS_Hypothesis
enum  hypothesis_type {
  PARAM_ALGO , ALGO_0D , ALGO_1D , ALGO_2D ,
  ALGO_3D
}
 

Member Typedef Documentation

◆ TQuadsBySide

typedef std::map< StdMeshers_FaceSidePtr, std::vector< FaceQuadStruct::Ptr > > StdMeshers_Quadrangle_2D::TQuadsBySide
protected

Constructor & Destructor Documentation

◆ StdMeshers_Quadrangle_2D()

StdMeshers_Quadrangle_2D::StdMeshers_Quadrangle_2D ( int  hypId,
int  studyId,
SMESH_Gen gen 
)

◆ ~StdMeshers_Quadrangle_2D()

StdMeshers_Quadrangle_2D::~StdMeshers_Quadrangle_2D ( )
virtual

Member Function Documentation

◆ addEnforcedNodes()

◆ check()

◆ CheckAnd2Dcompute()

FaceQuadStruct::Ptr StdMeshers_Quadrangle_2D::CheckAnd2Dcompute ( SMESH_Mesh aMesh,
const TopoDS_Shape &  aShape,
const bool  CreateQuadratic 
)

CheckAnd2Dcompute

References CheckNbEdges(), and setNormalizedGrid().

◆ CheckHypothesis()

bool StdMeshers_Quadrangle_2D::CheckHypothesis ( SMESH_Mesh aMesh,
const TopoDS_Shape &  aShape,
Hypothesis_Status aStatus 
)
virtual

Check hypothesis definition to mesh a shape.

Parameters
aMesh- the mesh
aShape- the shape
aStatus- check result
Return values
bool- true if hypothesis is well defined

Textual description of a problem can be stored in _comment field.

Implements SMESH_Algo.

Reimplemented in StdMeshers_QuadFromMedialAxis_1D2D.

References StdMeshers_ViscousLayers2D::CheckHypothesis(), SMESH_Algo::error(), SMESHDS_Hypothesis::GetName(), StdMeshers_QuadrangleParams::GetQuadType(), StdMeshers_QuadrangleParams::GetTriaVertex(), SMESH_Algo::GetUsedHypothesis(), SMESH_Hypothesis::HYP_OK, myHelper, myParams, myQuadList, myQuadranglePreference, myQuadType, myTrianglePreference, and myTriaVertexID.

◆ CheckNbEdges()

◆ checkNbEdgesForEvaluate()

bool StdMeshers_Quadrangle_2D::checkNbEdgesForEvaluate ( SMESH_Mesh aMesh,
const TopoDS_Shape &  aShape,
MapShapeNbElems &  aResMap,
std::vector< int > &  aNbNodes,
bool IsQuadratic 
)
protected

◆ Compute()

bool StdMeshers_Quadrangle_2D::Compute ( SMESH_Mesh aMesh,
const TopoDS_Shape &  aShape 
)
virtual

Computes mesh on a shape.

Parameters
aMesh- the mesh
aShape- the shape
Return values
bool- is a success

Algorithms that !NeedDiscreteBoundary() || !OnlyUnaryInput() are to set SMESH_ComputeError returned by SMESH_submesh::GetComputeError() to report problematic sub-shapes

Implements SMESH_Algo.

Reimplemented in StdMeshers_QuadFromMedialAxis_1D2D.

References check(), CheckNbEdges(), StdMeshers_ViscousLayers2D::Compute(), computeQuadDominant(), computeQuadPref(), computeReduced(), computeTriangles(), SMESH_Algo::error(), getEnforcedUV(), SMESH_Mesh::GetSubMesh(), SMESH_MesherHelper::IsQuadraticSubMesh(), myCheckOri, myHelper, myNeedSmooth, myProxyMesh, myQuadList, myQuadranglePreference, myQuadType, SMESH_MesherHelper::SetElementsOnShape(), smooth(), and updateDegenUV().

◆ computeQuadDominant() [1/2]

bool StdMeshers_Quadrangle_2D::computeQuadDominant ( SMESH_Mesh aMesh,
const TopoDS_Face &  aFace 
)
protected

Compute quadrangles and possibly triangles on all quads of myQuadList.

References addEnforcedNodes(), and myQuadList.

Referenced by Compute(), computeQuadPref(), and computeTriangles().

◆ computeQuadDominant() [2/2]

◆ computeQuadPref()

◆ computeReduced()

bool StdMeshers_Quadrangle_2D::computeReduced ( SMESH_Mesh aMesh,
const TopoDS_Face &  aFace,
FaceQuadStruct::Ptr  quad 
)
protected

◆ computeTriangles()

bool StdMeshers_Quadrangle_2D::computeTriangles ( SMESH_Mesh aMesh,
const TopoDS_Face &  aFace,
FaceQuadStruct::Ptr  quad 
)
protected

Compute quadrangles and triangles on the quad.

References computeQuadDominant(), myQuadList, setNormalizedGrid(), and splitQuad().

Referenced by Compute().

◆ Evaluate()

bool StdMeshers_Quadrangle_2D::Evaluate ( SMESH_Mesh aMesh,
const TopoDS_Shape &  aFace,
MapShapeNbElems &  aResMap 
)
virtual

◆ evaluateQuadPref()

bool StdMeshers_Quadrangle_2D::evaluateQuadPref ( SMESH_Mesh aMesh,
const TopoDS_Shape &  aShape,
std::vector< int > &  aNbNodes,
MapShapeNbElems &  aResMap,
bool  IsQuadratic 
)
protected

Evaluate only quandrangle faces

References SMESH_Mesh::GetSubMesh(), and myQuadType.

Referenced by Evaluate().

◆ getCorners()

int StdMeshers_Quadrangle_2D::getCorners ( const TopoDS_Face &  theFace,
SMESH_Mesh theMesh,
std::list< TopoDS_Edge > &  theWire,
std::vector< TopoDS_Vertex > &  theVertices,
int &  theNbDegenEdges,
const bool  considerMesh 
)
protected

References SMESH_Algo::isDegenerated().

Referenced by CheckNbEdges().

◆ getEnforcedUV()

◆ IsApplicable()

bool StdMeshers_Quadrangle_2D::IsApplicable ( const TopoDS_Shape &  aShape,
bool  toCheckAll 
)
static

Return true if the algorithm can mesh this shape.

Parameters
[in]aShape- shape to check
[in]toCheckAll- if true, this check returns OK if all shapes are OK, else, returns OK if at least one shape is OK

References SMESH_MesherHelper::Count(), and SMESH_Algo::isDegenerated().

◆ setNormalizedGrid()

◆ shiftQuad()

void StdMeshers_Quadrangle_2D::shiftQuad ( FaceQuadStruct::Ptr quad,
const int  num 
)
protected

References myQuadList.

Referenced by computeQuadPref(), and computeReduced().

◆ smooth()

◆ splitQuad()

int StdMeshers_Quadrangle_2D::splitQuad ( FaceQuadStruct::Ptr  quad,
int  i,
int  j 
)
protected

Splits a quad at I or J. Returns an index of a new side in the new quad.

References FaceQuadStruct::Side::AddContact(), myQuadList, FaceQuadStruct::name, StdMeshers_FaceSide::New(), FaceQuadStruct::side, and FaceQuadStruct::Side::ToSideIndex().

Referenced by addEnforcedNodes(), and computeTriangles().

◆ splitQuadFace()

void StdMeshers_Quadrangle_2D::splitQuadFace ( SMESHDS_Mesh theMeshDS,
const int  theFaceID,
const SMDS_MeshNode theNode1,
const SMDS_MeshNode theNode2,
const SMDS_MeshNode theNode3,
const SMDS_MeshNode theNode4 
)
protected

Split quadrangle in to 2 triangles by smallest diagonal

References SMESH_MesherHelper::AddFace(), and myHelper.

Referenced by computeQuadDominant().

◆ updateDegenUV()

void StdMeshers_Quadrangle_2D::updateDegenUV ( FaceQuadStruct::Ptr  quad)
protected

Set UV of nodes on degenerated VERTEXes in the middle of degenerated EDGE.

WARNING: this method must be called AFTER retrieving UVPtStruct's from quad

References SMESH_MesherHelper::IsDegenShape(), myHelper, myNeedSmooth, StdMeshers_FaceSide::New(), uvPtStruct::u, and uvPtStruct::v.

Referenced by Compute().

◆ updateSideUV()

void StdMeshers_Quadrangle_2D::updateSideUV ( FaceQuadStruct::Side side,
int  iForced,
const TQuadsBySide quads,
int *  iNext = NULL 
)
protected

Member Data Documentation

◆ myCheckOri

bool StdMeshers_Quadrangle_2D::myCheckOri
protected

Referenced by check(), and Compute().

◆ myForcedPnts

std::vector< ForcedPoint > StdMeshers_Quadrangle_2D::myForcedPnts
protected

◆ myHelper

◆ myNeedSmooth

bool StdMeshers_Quadrangle_2D::myNeedSmooth
protected

◆ myParams

const StdMeshers_QuadrangleParams* StdMeshers_Quadrangle_2D::myParams
protected

Referenced by CheckHypothesis(), and getEnforcedUV().

◆ myProxyMesh

SMESH_ProxyMesh::Ptr StdMeshers_Quadrangle_2D::myProxyMesh
protected

Referenced by CheckNbEdges(), and Compute().

◆ myQuadList

◆ myQuadranglePreference

bool StdMeshers_Quadrangle_2D::myQuadranglePreference
protected

Referenced by CheckHypothesis(), Compute(), and Evaluate().

◆ myQuadType

StdMeshers_QuadType StdMeshers_Quadrangle_2D::myQuadType
protected

◆ myTrianglePreference

bool StdMeshers_Quadrangle_2D::myTrianglePreference
protected

◆ myTriaVertexID

int StdMeshers_Quadrangle_2D::myTriaVertexID
protected

The documentation for this class was generated from the following files:
  • Sources/FreeCAD/src/3rdParty/salomesmesh/inc/StdMeshers_Quadrangle_2D.hxx
  • Sources/FreeCAD/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp