Salome HOME
Merge branch 'V9_9_BR'
[modules/smesh.git] / src / SMESH_I / SMESH_Homard_i.hxx
1 // Copyright (C) 2011-2022  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 private:
94   SMESHHOMARDImpl::HOMARD_Boundary* myHomardBoundary;
95   SMESHHOMARD::HOMARD_Gen_var _gen_i;
96 };
97
98 class SMESH_I_EXPORT HOMARD_Cas_i : public virtual SALOME::GenericObj_i,
99                                     public virtual POA_SMESHHOMARD::HOMARD_Cas
100 {
101 public:
102   HOMARD_Cas_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
103   HOMARD_Cas_i();
104
105   virtual ~HOMARD_Cas_i();
106
107   char* GetDumpPython();
108
109   // Caracteristiques
110   void  SetDirName(const char* NomDir);
111   char* GetDirName();
112
113   void                  SetBoundingBox(const SMESHHOMARD::extrema& LesExtremes);
114   SMESHHOMARD::extrema* GetBoundingBox();
115
116   void AddGroup(const char* Group);
117   void SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
118   SMESHHOMARD::ListGroupType* GetGroups();
119
120   void AddBoundary(const char* Boundary);
121   void AddBoundaryGroup(const char* Boundary, const char* Group);
122   SMESHHOMARD::ListBoundaryGroupType* GetBoundaryGroup();
123   void SupprBoundaryGroup();
124
125   void AddIteration(const char* NomIteration);
126
127 private:
128   SMESHHOMARDImpl::HOMARD_Cas* myHomardCas;
129   SMESHHOMARD::HOMARD_Gen_var _gen_i;
130 };
131
132 class SMESH_I_EXPORT HOMARD_Iteration_i
133 {
134 public:
135   HOMARD_Iteration_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
136   HOMARD_Iteration_i();
137
138   virtual ~HOMARD_Iteration_i();
139
140   // Generalites
141   void                   SetName(const char* Name);
142   char*                  GetName();
143
144   // Caracteristiques
145   void                   SetDirNameLoc(const char* NomDir);
146   char*                  GetDirNameLoc();
147
148   char*                  GetDirName();
149
150   void                   SetNumber(CORBA::Long NumIter);
151   CORBA::Long            GetNumber();
152
153   void                   SetState(CORBA::Long etat);
154   CORBA::Long            GetState();
155
156   void                   SetMeshName(const char* NomMesh);
157   char*                  GetMeshName();
158
159   void                   SetMeshFile(const char* MeshFile);
160   char*                  GetMeshFile();
161
162   void                   SetLogFile(const char* LogFile);
163   char*                  GetLogFile();
164
165   void                   SetFileInfo(const char* FileInfo);
166   char*                  GetFileInfo();
167
168   // Liens avec les autres structures
169   void                   SetCaseName(const char* NomCas);
170   char*                  GetCaseName();
171
172   // Drivers
173   void                   SetInfoCompute(CORBA::Long MessInfo);
174   CORBA::Long            GetInfoCompute();
175
176 private:
177   SMESHHOMARDImpl::HOMARD_Iteration* myHomardIteration;
178   SMESHHOMARD::HOMARD_Gen_var _gen_i;
179 };
180
181 class SMESH_I_EXPORT HOMARD_Gen_i : public virtual SALOME::GenericObj_i,
182                                     public virtual POA_SMESHHOMARD::HOMARD_Gen
183 {
184 public:
185   HOMARD_Gen_i();
186   virtual ~HOMARD_Gen_i();
187
188   // Les creations
189   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundary (const char* nomBoundary,
190                                                    CORBA::Long typeBoundary);
191   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCAO (const char* nomBoundary,
192                                                       const char* DataFile);
193   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryDi (const char* nomBoundary,
194                                                      const char* MeshName, const char* DataFile);
195   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCylinder
196     (const char* nomBoundary,
197      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
198      CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
199      CORBA::Double Rayon);
200   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundarySphere
201     (const char* nomBoundary,
202      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
203      CORBA::Double Rayon);
204   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeR
205     (const char* nomBoundary,
206      CORBA::Double Xcentre1, CORBA::Double Ycentre1, CORBA::Double Zcentre1,
207      CORBA::Double Rayon1,
208      CORBA::Double Xcentre2, CORBA::Double Ycentre2, CORBA::Double Zcentre2,
209      CORBA::Double Rayon2);
210   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeA
211     (const char* nomBoundary,
212      CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
213      CORBA::Double Angle,
214      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre);
215   SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryTorus
216     (const char* nomBoundary,
217      CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
218      CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
219      CORBA::Double RayonRev, CORBA::Double RayonPri);
220
221   SMESHHOMARD::HOMARD_Cas_ptr CreateCaseOnMesh (const char* MeshName,
222                                                 SMESH::SMESH_Mesh_ptr smeshMesh,
223                                                 const char* theWorkingDir);
224   SMESHHOMARD::HOMARD_Cas_ptr CreateCase (const char* MeshName,
225                                           const char* FileName,
226                                           const char* theWorkingDir);
227
228   HOMARD_Iteration_i* CreateIteration();
229
230   // Les informations
231   SMESHHOMARD::HOMARD_Boundary_ptr  GetBoundary  (const char* nomBoundary);
232   SMESHHOMARD::HOMARD_Cas_ptr       GetCase      ();
233   HOMARD_Iteration_i* GetIteration (CORBA::Long numIter);
234
235   SMESHHOMARD::listeBoundarys* GetAllBoundarysName();
236
237   void InvalideBoundary(const char* nomBoundary);
238
239   CORBA::Long DeleteBoundary(const char* nomBoundary);
240   void        DeleteCase();
241   CORBA::Long DeleteIteration(int numIter);
242
243   void AddBoundary(const char* Boundary);
244   void AddBoundaryGroup(const char* Boundary, const char* Group);
245
246   void AssociateCaseIter(int numIter, const char* labelIter);
247   char* CreateDirNameIter(const char* nomrep, CORBA::Long num);
248
249   CORBA::Long Compute();
250   CORBA::Long ComputeAdap(SMESHHOMARDImpl::HomardDriver* myDriver);
251   CORBA::Long ComputeCAO();
252   CORBA::Long ComputeCAObis();
253   char* ComputeDirManagement();
254   char* ComputeDirPaManagement();
255   int   DriverTexteBoundary(SMESHHOMARDImpl::HomardDriver* myDriver);
256
257   void PublishResultInSmesh(const char* NomFich);
258   void DeleteResultInSmesh(std::string NomFich, std::string MeshName);
259
260   void PythonDump();
261
262   // Preferences
263   void SetConfType (CORBA::Long theConfType);
264   void SetKeepMedOUT (bool theKeepMedOUT);
265   void SetPublishMeshOUT (bool thePublishMeshOUT);
266   void SetMeshNameOUT (const char* theMeshNameOUT);
267   void SetMeshFileOUT (const char* theMeshFileOUT);
268
269   void SetVerboseLevel (CORBA::Long theVerboseLevel);
270   void SetKeepWorkingFiles(bool theKeepWorkingFiles);
271   void SetLogInFile(bool theLogInFile);
272   void SetLogFile (const char* theLogFile);
273   void SetRemoveLogOnSuccess(bool theRemoveLogOnSuccess);
274
275 private:
276   SMESHHOMARD::HOMARD_Boundary_ptr newBoundary();
277   SMESHHOMARD::HOMARD_Cas_ptr      newCase();
278   HOMARD_Iteration_i*              newIteration();
279
280 private:
281   SMESHHOMARDImpl::HOMARD_Gen* myHomard;
282   HOMARD_Iteration_i*          myIteration0;
283   HOMARD_Iteration_i*          myIteration1;
284   SMESHHOMARD::HOMARD_Cas_var  myCase;
285   std::map<std::string, SMESHHOMARD::HOMARD_Boundary_var> _mesBoundarys;
286
287   // Preferences
288   int  _ConfType; // Le type de conformite ou non conformite
289   bool _KeepMedOUT;
290   bool _PublishMeshOUT;
291   bool _KeepWorkingFiles;
292   bool _LogInFile;
293   bool _RemoveLogOnSuccess;
294   int         _VerboseLevel;
295   std::string _MeshNameOUT;
296   std::string _MeshFileOUT;
297   std::string _LogFile;
298
299   // Input data type
300   bool _CaseOnMedFile;
301   SMESH::SMESH_Mesh_var _SmeshMesh;
302   std::string _TmpMeshFile;
303 };
304
305 SMESH_I_EXPORT std::vector<double>   GetBoundingBoxInMedFile(const char * aFile);
306 SMESH_I_EXPORT std::set<std::string> GetListeGroupesInMedFile(const char * aFile);
307
308 }; // namespace SMESHHOMARD_I
309
310 #endif