X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_VolumeTool.hxx;h=19aaeadf48ff36915193874b9841c2c2f39aa9c9;hp=ca47830aca8201aed28cd5381413e60eab940097;hb=HEAD;hpb=b24a2d1b7692bdb21cf037b026e0273ba547cef4 diff --git a/src/SMDS/SMDS_VolumeTool.hxx b/src/SMDS/SMDS_VolumeTool.hxx index ca47830ac..56affdd48 100644 --- a/src/SMDS/SMDS_VolumeTool.hxx +++ b/src/SMDS/SMDS_VolumeTool.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -31,6 +31,8 @@ #include "SMESH_SMDS.hxx" +#include + class SMDS_MeshElement; class SMDS_MeshNode; class SMDS_MeshVolume; @@ -72,7 +74,7 @@ class SMDS_EXPORT SMDS_VolumeTool const SMDS_MeshVolume* Element() const; // return element - int ID() const; + smIdType ID() const; // return element ID bool IsPoly() const { return myPolyedre; } @@ -95,12 +97,15 @@ class SMDS_EXPORT SMDS_VolumeTool const SMDS_MeshNode** GetNodes() const { return (const SMDS_MeshNode**) &myVolumeNodes[0]; } // Return array of volume nodes - int NbNodes() const { return myVolumeNodes.size(); } - // Return array of volume nodes + int NbNodes() const { return (int) myVolumeNodes.size(); } + // Return number of volume nodes double GetSize() const; // Return element volume + double GetScaledJacobian() const; + // Return the scaled jacobian + bool GetBaryCenter (double & X, double & Y, double & Z) const; bool IsOut(double X, double Y, double Z, double tol) const; @@ -183,6 +188,12 @@ class SMDS_EXPORT SMDS_VolumeTool bool IsFreeFace( int faceIndex, const SMDS_MeshElement** otherVol=0 ) const; // Fast check that only one volume is built on nodes of a given face // otherVol returns another volume sharing the given facet + // Function works for conforming mesh. + + bool IsFreeFaceCheckAllNodes( int faceIndex, const SMDS_MeshElement** otherVol=0 ) const; + // Check that only one volume is built on nodes of a given face + // otherVol returns another volume sharing the given facet + // Function to be used on mesh with non conforming elements. The face shared between bool IsFreeFaceAdv( int faceIndex, const SMDS_MeshElement** otherVol=0 ) const; // Thorough check that all volumes built on the face nodes lays on one side @@ -194,6 +205,10 @@ class SMDS_EXPORT SMDS_VolumeTool bool GetFaceBaryCenter (int faceIndex, double & X, double & Y, double & Z) const; // Return barycenter of a face + bool AllFacesSameOriented() const; + // Check that all the faces of a polyhedron have the same orientation + // no differentiation between inward and outward orientation is made. + double GetFaceArea( int faceIndex ) const; // Return face area @@ -261,7 +276,7 @@ class SMDS_EXPORT SMDS_VolumeTool int myNbFaces; std::vector myVolumeNodes; std::vector< int > myPolyIndices; // of a myCurFace - std::vector< int > myPolyQuantities; + std::vector myPolyQuantities; std::vector< int > myPolyFacetOri; // -1-in, +1-out, 0-undef typedef std::pair Link;