1 // Copyright (C) 2011-2021 CEA/DEN, EDF R&D
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.
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.
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
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #ifndef _SMESH_HOMARD_I_HXX_
21 #define _SMESH_HOMARD_I_HXX_
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)
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"
43 namespace SMESHHOMARD_I
46 class SMESH_I_EXPORT HOMARD_Boundary_i : public virtual SALOME::GenericObj_i,
47 public virtual POA_SMESHHOMARD::HOMARD_Boundary
50 HOMARD_Boundary_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
53 virtual ~HOMARD_Boundary_i();
56 void SetName(const char* Name);
59 char* GetDumpPython();
62 void SetType(CORBA::Long Type);
63 CORBA::Long GetType();
65 void SetMeshName(const char* MeshName);
68 void SetDataFile(const char* DataFile);
71 void SetCylinder(double Xcentre, double Ycentre, double ZCentre,
72 double Xaxe, double Yaxe, double Zaxe,
74 void SetSphere(double Xcentre, double Ycentre, double ZCentre,
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);
84 SMESHHOMARD::double_array* GetCoords();
86 void SetLimit(double Xincr, double Yincr, double Zincr);
87 SMESHHOMARD::double_array* GetLimit();
89 void AddGroup(const char* Group);
90 void SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
91 SMESHHOMARD::ListGroupType* GetGroups();
93 // Liens avec les autres structures
94 void SetCaseCreation(const char* NomCaseCreation);
95 char* GetCaseCreation();
99 SMESHHOMARDImpl::HOMARD_Boundary* myHomardBoundary;
100 SMESHHOMARD::HOMARD_Gen_var _gen_i;
103 class SMESH_I_EXPORT HOMARD_Cas_i : public virtual SALOME::GenericObj_i,
104 public virtual POA_SMESHHOMARD::HOMARD_Cas
107 HOMARD_Cas_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
110 virtual ~HOMARD_Cas_i();
113 char* GetDumpPython();
116 void SetDirName(const char* NomDir);
119 void SetConfType(CORBA::Long ConfType);
120 CORBA::Long GetConfType();
122 void SetBoundingBox(const SMESHHOMARD::extrema& LesExtremes);
123 SMESHHOMARD::extrema* GetBoundingBox();
125 void AddGroup(const char* Group);
126 void SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
127 SMESHHOMARD::ListGroupType* GetGroups();
129 void AddBoundary(const char* Boundary);
130 void AddBoundaryGroup(const char* Boundary, const char* Group);
131 SMESHHOMARD::ListBoundaryGroupType* GetBoundaryGroup();
132 void SupprBoundaryGroup();
134 void AddIteration(const char* NomIteration);
137 SMESHHOMARDImpl::HOMARD_Cas* myHomardCas;
138 SMESHHOMARD::HOMARD_Gen_var _gen_i;
141 class SMESH_I_EXPORT HOMARD_Iteration_i : public virtual SALOME::GenericObj_i,
142 public virtual POA_SMESHHOMARD::HOMARD_Iteration
145 HOMARD_Iteration_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
146 HOMARD_Iteration_i();
148 virtual ~HOMARD_Iteration_i();
151 void SetName(const char* Name);
155 void SetDirNameLoc(const char* NomDir);
156 char* GetDirNameLoc();
160 void SetNumber(CORBA::Long NumIter);
161 CORBA::Long GetNumber();
163 void SetState(CORBA::Long etat);
164 CORBA::Long GetState();
166 void SetMeshName(const char* NomMesh);
169 void SetMeshFile(const char* MeshFile);
172 void SetLogFile(const char* LogFile);
175 void SetFileInfo(const char* FileInfo);
178 // Liens avec les autres iterations
179 void LinkNextIteration(const char* NomIteration);
180 void UnLinkNextIteration(const char* NomIteration);
182 // Liens avec les autres structures
183 void SetCaseName(const char* NomCas);
187 void SetInfoCompute(CORBA::Long MessInfo);
188 CORBA::Long GetInfoCompute();
191 SMESHHOMARDImpl::HOMARD_Iteration* myHomardIteration;
192 SMESHHOMARD::HOMARD_Gen_var _gen_i;
195 class SMESH_I_EXPORT HOMARD_Gen_i : public virtual SALOME::GenericObj_i,
196 public virtual POA_SMESHHOMARD::HOMARD_Gen
200 virtual ~HOMARD_Gen_i();
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,
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);
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);
242 SMESHHOMARD::HOMARD_Iteration_ptr CreateIteration();
245 SMESHHOMARD::HOMARD_Boundary_ptr GetBoundary (const char* nomBoundary);
246 SMESHHOMARD::HOMARD_Cas_ptr GetCase ();
247 SMESHHOMARD::HOMARD_Iteration_ptr GetIteration (CORBA::Long numIter);
249 SMESHHOMARD::listeBoundarys* GetAllBoundarysName();
251 void InvalideBoundary(const char* nomBoundary);
253 CORBA::Long DeleteBoundary(const char* nomBoundary);
254 CORBA::Long DeleteCase();
255 CORBA::Long DeleteIteration(int numIter);
257 void AssociateCaseIter(int numIter, const char* labelIter);
258 char* CreateDirNameIter(const char* nomrep, CORBA::Long num);
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);
268 void PublishResultInSmesh(const char* NomFich, CORBA::Long Option);
269 void DeleteResultInSmesh(std::string NomFich, std::string MeshName);
274 void SetKeepMedOUT(bool theKeepMedOUT);
275 void SetPublishMeshOUT(bool thePublishMeshOUT);
276 void SetMeshNameOUT (const char* theMeshNameOUT);
277 void SetMeshFileOUT (const char* theMeshFileOUT);
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);
286 SMESHHOMARD::HOMARD_Boundary_ptr newBoundary();
287 SMESHHOMARD::HOMARD_Cas_ptr newCase();
288 SMESHHOMARD::HOMARD_Iteration_ptr newIteration();
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;
300 bool _PublishMeshOUT;
301 bool _KeepWorkingFiles;
303 bool _RemoveLogOnSuccess;
305 std::string _MeshNameOUT;
306 std::string _MeshFileOUT;
307 std::string _LogFile;
311 SMESH::SMESH_Mesh_var _SmeshMesh;
312 std::string _TmpMeshFile;
315 SMESH_I_EXPORT std::vector<double> GetBoundingBoxInMedFile(const char * aFile);
316 SMESH_I_EXPORT std::set<std::string> GetListeGroupesInMedFile(const char * aFile);
318 }; // namespace SMESHHOMARD_I