Salome HOME
Reduce code
[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        SetConfType(CORBA::Long ConfType);
120   CORBA::Long GetConfType();
121
122   void                  SetBoundingBox(const SMESHHOMARD::extrema& LesExtremes);
123   SMESHHOMARD::extrema* GetBoundingBox();
124
125   void AddGroup(const char* Group);
126   void SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
127   SMESHHOMARD::ListGroupType* GetGroups();
128
129   void AddBoundary(const char* Boundary);
130   void AddBoundaryGroup(const char* Boundary, const char* Group);
131   SMESHHOMARD::ListBoundaryGroupType* GetBoundaryGroup();
132   void SupprBoundaryGroup();
133
134   void AddIteration(const char* NomIteration);
135
136 private:
137   SMESHHOMARDImpl::HOMARD_Cas* myHomardCas;
138   SMESHHOMARD::HOMARD_Gen_var _gen_i;
139 };
140
141 class SMESH_I_EXPORT HOMARD_Iteration_i : public virtual SALOME::GenericObj_i,
142                                           public virtual POA_SMESHHOMARD::HOMARD_Iteration
143 {
144 public:
145   HOMARD_Iteration_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
146   HOMARD_Iteration_i();
147
148   virtual ~HOMARD_Iteration_i();
149
150   // Generalites
151   void                   SetName(const char* Name);
152   char*                  GetName();
153
154   // Caracteristiques
155   void                   SetDirNameLoc(const char* NomDir);
156   char*                  GetDirNameLoc();
157
158   char*                  GetDirName();
159
160   void                   SetNumber(CORBA::Long NumIter);
161   CORBA::Long            GetNumber();
162
163   void                   SetState(CORBA::Long etat);
164   CORBA::Long            GetState();
165
166   void                   SetMeshName(const char* NomMesh);
167   char*                  GetMeshName();
168
169   void                   SetMeshFile(const char* MeshFile);
170   char*                  GetMeshFile();
171
172   void                   SetLogFile(const char* LogFile);
173   char*                  GetLogFile();
174
175   void                   SetFileInfo(const char* FileInfo);
176   char*                  GetFileInfo();
177
178   // Liens avec les autres iterations
179   void                   LinkNextIteration(const char* NomIteration);
180   void                   UnLinkNextIteration(const char* NomIteration);
181
182   // Liens avec les autres structures
183   void                   SetCaseName(const char* NomCas);
184   char*                  GetCaseName();
185
186   // Drivers
187   void                   SetInfoCompute(CORBA::Long MessInfo);
188   CORBA::Long            GetInfoCompute();
189
190 private:
191   SMESHHOMARDImpl::HOMARD_Iteration* myHomardIteration;
192   SMESHHOMARD::HOMARD_Gen_var _gen_i;
193 };
194
195 class SMESH_I_EXPORT HOMARD_Gen_i : public virtual SALOME::GenericObj_i,
196                                     public virtual POA_SMESHHOMARD::HOMARD_Gen
197 {
198 public:
199   HOMARD_Gen_i();
200   virtual ~HOMARD_Gen_i();
201
202   // Les creations
203   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundary (const char* nomBoundary,
204                                                    CORBA::Long typeBoundary);
205   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCAO (const char* nomBoundary,
206                                                       const char* DataFile);
207   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryDi (const char* nomBoundary,
208                                                      const char* MeshName, const char* DataFile);
209   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCylinder
210     (const char* nomBoundary,
211      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
212      CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
213      CORBA::Double Rayon);
214   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundarySphere
215     (const char* nomBoundary,
216      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
217      CORBA::Double Rayon);
218   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeR
219     (const char* nomBoundary,
220      CORBA::Double Xcentre1, CORBA::Double Ycentre1, CORBA::Double Zcentre1,
221      CORBA::Double Rayon1,
222      CORBA::Double Xcentre2, CORBA::Double Ycentre2, CORBA::Double Zcentre2,
223      CORBA::Double Rayon2);
224   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeA
225     (const char* nomBoundary,
226      CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
227      CORBA::Double Angle,
228      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre);
229   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryTorus
230     (const char* nomBoundary,
231      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
232      CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
233      CORBA::Double RayonRev, CORBA::Double RayonPri);
234
235   SMESHHOMARD::HOMARD_Cas_ptr CreateCaseOnMesh (const char* MeshName,
236                                                 SMESH::SMESH_Mesh_ptr smeshMesh,
237                                                 const char* theWorkingDir);
238   SMESHHOMARD::HOMARD_Cas_ptr CreateCase (const char* MeshName,
239                                           const char* FileName,
240                                           const char* theWorkingDir);
241
242   SMESHHOMARD::HOMARD_Iteration_ptr CreateIteration();
243
244   // Les informations
245   SMESHHOMARD::HOMARD_Boundary_ptr  GetBoundary  (const char* nomBoundary);
246   SMESHHOMARD::HOMARD_Cas_ptr       GetCase      ();
247   SMESHHOMARD::HOMARD_Iteration_ptr GetIteration (CORBA::Long numIter);
248
249   SMESHHOMARD::listeBoundarys* GetAllBoundarysName();
250
251   void InvalideBoundary(const char* nomBoundary);
252
253   CORBA::Long DeleteBoundary(const char* nomBoundary);
254   CORBA::Long DeleteCase();
255   CORBA::Long DeleteIteration(int numIter);
256
257   void AssociateCaseIter(int numIter, const char* labelIter);
258   char* CreateDirNameIter(const char* nomrep, CORBA::Long num);
259
260   CORBA::Long Compute();
261   CORBA::Long ComputeAdap(SMESHHOMARDImpl::HomardDriver* myDriver);
262   CORBA::Long ComputeCAO();
263   CORBA::Long ComputeCAObis();
264   char* ComputeDirManagement();
265   char* ComputeDirPaManagement();
266   int   DriverTexteBoundary(SMESHHOMARDImpl::HomardDriver* myDriver);
267
268   void PublishResultInSmesh(const char* NomFich, CORBA::Long Option);
269   void DeleteResultInSmesh(std::string NomFich, std::string MeshName);
270
271   void PythonDump();
272
273   // Preferences
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   bool _KeepMedOUT;
300   bool _PublishMeshOUT;
301   bool _KeepWorkingFiles;
302   bool _LogInFile;
303   bool _RemoveLogOnSuccess;
304   int         _VerboseLevel;
305   std::string _MeshNameOUT;
306   std::string _MeshFileOUT;
307   std::string _LogFile;
308
309   // Input data type
310   bool _CaseOnMedFile;
311   SMESH::SMESH_Mesh_var _SmeshMesh;
312   std::string _TmpMeshFile;
313 };
314
315 SMESH_I_EXPORT std::vector<double>   GetBoundingBoxInMedFile(const char * aFile);
316 SMESH_I_EXPORT std::set<std::string> GetListeGroupesInMedFile(const char * aFile);
317
318 }; // namespace SMESHHOMARD_I
319
320 #endif