Salome HOME
Improve interface
[modules/smesh.git] / src / SMESH_I / SMESH_Homard_i.hxx
1 // Copyright (C) 2011-2021  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #ifndef _SMESH_HOMARD_I_HXX_
21 #define _SMESH_HOMARD_I_HXX_
22
23 #include <SALOMEconfig.h>
24 #include CORBA_SERVER_HEADER(SMESH_Homard)
25 #include CORBA_CLIENT_HEADER(SALOMEDS)
26 #include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
27 #include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
28 #include CORBA_CLIENT_HEADER(SMESH_Gen)
29 #include CORBA_CLIENT_HEADER(SMESH_Mesh)
30
31 #include "SMESH.hxx"
32 #include "SMESH_Homard.hxx"
33 //#include "FrontTrack.hxx"
34 #include "SALOME_Component_i.hxx"
35 #include "SALOME_NamingService.hxx"
36 #include "Utils_CorbaException.hxx"
37
38 #include <map>
39 #include <set>
40 #include <string>
41 #include <vector>
42
43 namespace SMESHHOMARD_I
44 {
45
46 class SMESH_I_EXPORT HOMARD_Boundary_i : public virtual SALOME::GenericObj_i,
47                                          public virtual POA_SMESHHOMARD::HOMARD_Boundary
48 {
49 public:
50   HOMARD_Boundary_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
51   HOMARD_Boundary_i();
52
53   virtual ~HOMARD_Boundary_i();
54
55   // Generalites
56   void                   SetName(const char* Name);
57   char*                  GetName();
58
59   char*                  GetDumpPython();
60
61   // Caracteristiques
62   void                   SetType(CORBA::Long Type);
63   CORBA::Long            GetType();
64
65   void                   SetMeshName(const char* MeshName);
66   char*                  GetMeshName();
67
68   void                   SetDataFile(const char* DataFile);
69   char*                  GetDataFile();
70
71   void                   SetCylinder(double Xcentre, double Ycentre, double ZCentre,
72                                       double Xaxe, double Yaxe, double Zaxe,
73                                       double rayon);
74   void                   SetSphere(double Xcentre, double Ycentre, double ZCentre,
75                                     double rayon);
76   void                   SetConeR(double Xcentre1, double Ycentre1, double Zcentre1, double Rayon1,
77                                    double Xcentre2, double Ycentre2, double Zcentre2, double Rayon2);
78   void                   SetConeA(double Xaxe, double Yaxe, double Zaxe, double Angle,
79                                    double Xcentre, double Ycentre, double ZCentre);
80   void                   SetTorus(double Xcentre, double Ycentre, double ZCentre,
81                                       double Xaxe, double Yaxe, double Zaxe,
82                                       double rayonRev, double rayonPri);
83
84   SMESHHOMARD::double_array*  GetCoords();
85
86   void                   SetLimit(double Xincr, double Yincr, double Zincr);
87   SMESHHOMARD::double_array*  GetLimit();
88
89   void                   AddGroup(const char* Group);
90   void                   SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
91   SMESHHOMARD::ListGroupType* GetGroups();
92
93   // Liens avec les autres structures
94   void  SetCaseCreation(const char* NomCaseCreation);
95   char* GetCaseCreation();
96
97
98 private:
99   SMESHHOMARDImpl::HOMARD_Boundary* myHomardBoundary;
100   SMESHHOMARD::HOMARD_Gen_var _gen_i;
101 };
102
103 class SMESH_I_EXPORT HOMARD_Cas_i : public virtual SALOME::GenericObj_i,
104                                     public virtual POA_SMESHHOMARD::HOMARD_Cas
105 {
106 public:
107   HOMARD_Cas_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
108   HOMARD_Cas_i();
109
110   virtual ~HOMARD_Cas_i();
111
112   char* GetName();
113   char* GetDumpPython();
114
115   // Caracteristiques
116   void  SetDirName(const char* NomDir);
117   char* GetDirName();
118
119   void                  SetBoundingBox(const SMESHHOMARD::extrema& LesExtremes);
120   SMESHHOMARD::extrema* GetBoundingBox();
121
122   void AddGroup(const char* Group);
123   void SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
124   SMESHHOMARD::ListGroupType* GetGroups();
125
126   void AddBoundary(const char* Boundary);
127   void AddBoundaryGroup(const char* Boundary, const char* Group);
128   SMESHHOMARD::ListBoundaryGroupType* GetBoundaryGroup();
129   void SupprBoundaryGroup();
130
131   void AddIteration(const char* NomIteration);
132
133 private:
134   SMESHHOMARDImpl::HOMARD_Cas* myHomardCas;
135   SMESHHOMARD::HOMARD_Gen_var _gen_i;
136 };
137
138 class SMESH_I_EXPORT HOMARD_Iteration_i : public virtual SALOME::GenericObj_i,
139                                           public virtual POA_SMESHHOMARD::HOMARD_Iteration
140 {
141 public:
142   HOMARD_Iteration_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
143   HOMARD_Iteration_i();
144
145   virtual ~HOMARD_Iteration_i();
146
147   // Generalites
148   void                   SetName(const char* Name);
149   char*                  GetName();
150
151   // Caracteristiques
152   void                   SetDirNameLoc(const char* NomDir);
153   char*                  GetDirNameLoc();
154
155   char*                  GetDirName();
156
157   void                   SetNumber(CORBA::Long NumIter);
158   CORBA::Long            GetNumber();
159
160   void                   SetState(CORBA::Long etat);
161   CORBA::Long            GetState();
162
163   void                   SetMeshName(const char* NomMesh);
164   char*                  GetMeshName();
165
166   void                   SetMeshFile(const char* MeshFile);
167   char*                  GetMeshFile();
168
169   void                   SetLogFile(const char* LogFile);
170   char*                  GetLogFile();
171
172   void                   SetFileInfo(const char* FileInfo);
173   char*                  GetFileInfo();
174
175   // Liens avec les autres iterations
176   void                   LinkNextIteration(const char* NomIteration);
177   void                   UnLinkNextIteration(const char* NomIteration);
178
179   // Liens avec les autres structures
180   void                   SetCaseName(const char* NomCas);
181   char*                  GetCaseName();
182
183   // Drivers
184   void                   SetInfoCompute(CORBA::Long MessInfo);
185   CORBA::Long            GetInfoCompute();
186
187 private:
188   SMESHHOMARDImpl::HOMARD_Iteration* myHomardIteration;
189   SMESHHOMARD::HOMARD_Gen_var _gen_i;
190 };
191
192 class SMESH_I_EXPORT HOMARD_Gen_i : public virtual SALOME::GenericObj_i,
193                                     public virtual POA_SMESHHOMARD::HOMARD_Gen
194 {
195 public:
196   HOMARD_Gen_i();
197   virtual ~HOMARD_Gen_i();
198
199   // Les creations
200   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundary (const char* nomBoundary,
201                                                    CORBA::Long typeBoundary);
202   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCAO (const char* nomBoundary,
203                                                       const char* DataFile);
204   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryDi (const char* nomBoundary,
205                                                      const char* MeshName, const char* DataFile);
206   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCylinder
207     (const char* nomBoundary,
208      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
209      CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
210      CORBA::Double Rayon);
211   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundarySphere
212     (const char* nomBoundary,
213      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
214      CORBA::Double Rayon);
215   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeR
216     (const char* nomBoundary,
217      CORBA::Double Xcentre1, CORBA::Double Ycentre1, CORBA::Double Zcentre1,
218      CORBA::Double Rayon1,
219      CORBA::Double Xcentre2, CORBA::Double Ycentre2, CORBA::Double Zcentre2,
220      CORBA::Double Rayon2);
221   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeA
222     (const char* nomBoundary,
223      CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
224      CORBA::Double Angle,
225      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre);
226   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryTorus
227     (const char* nomBoundary,
228      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
229      CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
230      CORBA::Double RayonRev, CORBA::Double RayonPri);
231
232   SMESHHOMARD::HOMARD_Cas_ptr CreateCaseOnMesh (const char* MeshName,
233                                                 SMESH::SMESH_Mesh_ptr smeshMesh,
234                                                 const char* theWorkingDir);
235   SMESHHOMARD::HOMARD_Cas_ptr CreateCase (const char* MeshName,
236                                           const char* FileName,
237                                           const char* theWorkingDir);
238
239   SMESHHOMARD::HOMARD_Iteration_ptr CreateIteration();
240
241   // Les informations
242   SMESHHOMARD::HOMARD_Boundary_ptr  GetBoundary  (const char* nomBoundary);
243   SMESHHOMARD::HOMARD_Cas_ptr       GetCase      ();
244   SMESHHOMARD::HOMARD_Iteration_ptr GetIteration (CORBA::Long numIter);
245
246   SMESHHOMARD::listeBoundarys* GetAllBoundarysName();
247
248   void InvalideBoundary(const char* nomBoundary);
249
250   CORBA::Long DeleteBoundary(const char* nomBoundary);
251   CORBA::Long DeleteCase();
252   CORBA::Long DeleteIteration(int numIter);
253
254   void AddBoundaryGroup(const char* Boundary, const char* Group);
255
256   void AssociateCaseIter(int numIter, const char* labelIter);
257   char* CreateDirNameIter(const char* nomrep, CORBA::Long num);
258
259   CORBA::Long Compute();
260   CORBA::Long ComputeAdap(SMESHHOMARDImpl::HomardDriver* myDriver);
261   CORBA::Long ComputeCAO();
262   CORBA::Long ComputeCAObis();
263   char* ComputeDirManagement();
264   char* ComputeDirPaManagement();
265   int   DriverTexteBoundary(SMESHHOMARDImpl::HomardDriver* myDriver);
266
267   void PublishResultInSmesh(const char* NomFich, CORBA::Long Option);
268   void DeleteResultInSmesh(std::string NomFich, std::string MeshName);
269
270   void PythonDump();
271
272   // Preferences
273   void SetConfType (CORBA::Long theConfType);
274   void SetKeepMedOUT (bool theKeepMedOUT);
275   void SetPublishMeshOUT (bool thePublishMeshOUT);
276   void SetMeshNameOUT (const char* theMeshNameOUT);
277   void SetMeshFileOUT (const char* theMeshFileOUT);
278
279   void SetVerboseLevel (CORBA::Long theVerboseLevel);
280   void SetKeepWorkingFiles(bool theKeepWorkingFiles);
281   void SetLogInFile(bool theLogInFile);
282   void SetLogFile (const char* theLogFile);
283   void SetRemoveLogOnSuccess(bool theRemoveLogOnSuccess);
284
285 private:
286   SMESHHOMARD::HOMARD_Boundary_ptr  newBoundary();
287   SMESHHOMARD::HOMARD_Cas_ptr       newCase();
288   SMESHHOMARD::HOMARD_Iteration_ptr newIteration();
289   void CleanCase();
290
291 private:
292   SMESHHOMARDImpl::HOMARD_Gen* myHomard;
293   std::map<std::string, SMESHHOMARD::HOMARD_Boundary_var> _mesBoundarys;
294   SMESHHOMARD::HOMARD_Iteration_var  myIteration0;
295   SMESHHOMARD::HOMARD_Iteration_var  myIteration1;
296   SMESHHOMARD::HOMARD_Cas_var        myCase;
297
298   // Preferences
299   int  _ConfType; // Le type de conformite ou non conformite
300   bool _KeepMedOUT;
301   bool _PublishMeshOUT;
302   bool _KeepWorkingFiles;
303   bool _LogInFile;
304   bool _RemoveLogOnSuccess;
305   int         _VerboseLevel;
306   std::string _MeshNameOUT;
307   std::string _MeshFileOUT;
308   std::string _LogFile;
309
310   // Input data type
311   bool _CaseOnMedFile;
312   SMESH::SMESH_Mesh_var _SmeshMesh;
313   std::string _TmpMeshFile;
314 };
315
316 SMESH_I_EXPORT std::vector<double>   GetBoundingBoxInMedFile(const char * aFile);
317 SMESH_I_EXPORT std::set<std::string> GetListeGroupesInMedFile(const char * aFile);
318
319 }; // namespace SMESHHOMARD_I
320
321 #endif