Salome HOME
dc631bda6079e545e1c9f4a773615af2058700c7
[modules/smesh.git] / src / SMESH / SMESH_MEFISTO_2D.hxx
1 //=============================================================================
2 // File      : SMESH_MEFISTO_2D.hxx
3 // Created   : sam mai 18 08:10:50 CEST 2002
4 // Author    : Paul RASCLE, EDF
5 // Project   : SALOME
6 // Copyright : EDF 2002
7 // $Header$
8 //=============================================================================
9
10 #ifndef _SMESH_MEFISTO_2D_HXX_
11 #define _SMESH_MEFISTO_2D_HXX_
12
13 #include "SMESH_2D_Algo.hxx"
14 #include "SMESH_MaxElementArea.hxx"
15 #include "SMESH_LengthFromEdges.hxx"
16 #include "Rn.h"
17
18 #include <TopoDS_Face.hxx>
19
20 #include <map>
21
22 class SMESH_MEFISTO_2D:
23   public SMESH_2D_Algo
24 {
25 public:
26   SMESH_MEFISTO_2D(int hypId, int studyId, SMESH_Gen* gen);
27   virtual ~SMESH_MEFISTO_2D();
28
29   virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
30                                const TopoDS_Shape& aShape);
31
32   virtual bool Compute(SMESH_Mesh& aMesh,
33                        const TopoDS_Shape& aShape);
34
35   double ComputeEdgeElementLength(SMESH_Mesh& aMesh,
36                                   const TopoDS_Shape& aShape);
37
38   void LoadPoints(SMESH_Mesh& aMesh,
39                   const TopoDS_Face& F, 
40                   const TopoDS_Wire& W,
41                   R2* uvslf, 
42                   int& m,
43                   map<int,int>& mefistoToDS);
44
45   void ComputeScaleOnFace(SMESH_Mesh& aMesh,
46                           const TopoDS_Face& aFace,
47                           double& scalex,
48                           double& scaley);
49
50   void StoreResult (SMESH_Mesh& aMesh,
51                     Z nbst, R2* uvst, Z nbt, Z* nust, 
52                     const TopoDS_Face& F, bool faceIsForward,
53                     map<int,int>& mefistoToDS);
54                                           
55   ostream & SaveTo(ostream & save);
56   istream & LoadFrom(istream & load);
57   friend ostream & operator << (ostream & save, SMESH_MEFISTO_2D & hyp);
58   friend istream & operator >> (istream & load, SMESH_MEFISTO_2D & hyp);
59
60 protected:
61   double _edgeLength;
62   double _maxElementArea;
63   SMESH_MaxElementArea* _hypMaxElementArea;
64   SMESH_LengthFromEdges* _hypLengthFromEdges;
65 };
66
67 #endif