0020832: EDF 1359 SMESH : Automatic meshing of boundary layers

Implement Compute() with the viscous layers
This commit is contained in:
eap 2011-01-18 12:16:09 +00:00
parent e201ae8a2a
commit 96063cdc0a
2 changed files with 352 additions and 935 deletions

File diff suppressed because it is too large Load Diff

View File

@ -32,39 +32,13 @@
#include "SMESH_StdMeshers.hxx" #include "SMESH_StdMeshers.hxx"
#include "SMESH_3D_Algo.hxx" #include "SMESH_3D_Algo.hxx"
#include "SMESH_Mesh.hxx"
#include "StdMeshers_Quadrangle_2D.hxx"
#include "Utils_SALOME_Exception.hxx" #include "Utils_SALOME_Exception.hxx"
#include "SMESH_MesherHelper.hxx"
class TopTools_IndexedMapOfShape; class StdMeshers_ViscousLayers;
class SMESH_MesherHelper;
typedef struct point3Dstruct class STDMESHERS_EXPORT StdMeshers_Hexa_3D : public SMESH_3D_Algo
{
const SMDS_MeshNode * node;
} Point3DStruct;
typedef double Pt3[3];
typedef struct conv2dstruct
{
double a1; // X = a1*x + b1*y + c1
double b1; // Y = a2*x + b2*y + c2
double c1; // a1, b1 a2, b2 in {-1,0,1}
double a2; // c1, c2 in {0,1}
double b2;
double c2;
int ia; // I = ia*i + ib*j + ic
int ib;
int ic;
int ja; // J = ja*i + jb*j + jc
int jb;
int jc;
} Conv2DStruct;
class STDMESHERS_EXPORT StdMeshers_Hexa_3D:
public SMESH_3D_Algo
{ {
public: public:
StdMeshers_Hexa_3D(int hypId, int studyId, SMESH_Gen* gen); StdMeshers_Hexa_3D(int hypId, int studyId, SMESH_Gen* gen);
@ -81,41 +55,9 @@ public:
virtual bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, virtual bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape,
MapShapeNbElems& aResMap); MapShapeNbElems& aResMap);
static TopoDS_Vertex OppositeVertex(const TopoDS_Vertex& aVertex,
const TopTools_IndexedMapOfShape& aQuads0Vertices,
FaceQuadStruct* aQuads[6]);
protected: protected:
TopoDS_Edge
EdgeNotInFace(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape,
const TopoDS_Face& aFace,
const TopoDS_Vertex& aVertex,
const TopTools_IndexedDataMapOfShapeListOfShape& MS);
int GetFaceIndex(SMESH_Mesh& aMesh, const StdMeshers_ViscousLayers* _viscousLayersHyp;
const TopoDS_Shape& aShape,
const std::vector<SMESH_subMesh*>& meshFaces,
const TopoDS_Vertex& V0,
const TopoDS_Vertex& V1,
const TopoDS_Vertex& V2,
const TopoDS_Vertex& V3);
void GetConv2DCoefs(const faceQuadStruct& quad,
const TopoDS_Shape& aShape,
const TopoDS_Vertex& V0,
const TopoDS_Vertex& V1,
const TopoDS_Vertex& V2,
const TopoDS_Vertex& V3,
Conv2DStruct& conv);
void GetPoint(Pt3 p,
int i, int j, int k,
int nbx, int nby, int nbz,
Point3DStruct *np,
const SMESHDS_Mesh* meshDS);
bool ClearAndReturn(FaceQuadStruct* theQuads[6], const bool res);
}; };
#endif #endif