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 SetBoundingBox(const SMESHHOMARD::extrema& LesExtremes);
120 SMESHHOMARD::extrema* GetBoundingBox();
122 void AddGroup(const char* Group);
123 void SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
124 SMESHHOMARD::ListGroupType* GetGroups();
126 void AddBoundary(const char* Boundary);
127 void AddBoundaryGroup(const char* Boundary, const char* Group);
128 SMESHHOMARD::ListBoundaryGroupType* GetBoundaryGroup();
129 void SupprBoundaryGroup();
131 void AddIteration(const char* NomIteration);
134 SMESHHOMARDImpl::HOMARD_Cas* myHomardCas;
135 SMESHHOMARD::HOMARD_Gen_var _gen_i;
138 class SMESH_I_EXPORT HOMARD_Iteration_i : public virtual SALOME::GenericObj_i,
139 public virtual POA_SMESHHOMARD::HOMARD_Iteration
142 HOMARD_Iteration_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
143 HOMARD_Iteration_i();
145 virtual ~HOMARD_Iteration_i();
148 void SetName(const char* Name);
152 void SetDirNameLoc(const char* NomDir);
153 char* GetDirNameLoc();
157 void SetNumber(CORBA::Long NumIter);
158 CORBA::Long GetNumber();
160 void SetState(CORBA::Long etat);
161 CORBA::Long GetState();
163 void SetMeshName(const char* NomMesh);
166 void SetMeshFile(const char* MeshFile);
169 void SetLogFile(const char* LogFile);
172 void SetFileInfo(const char* FileInfo);
175 // Liens avec les autres iterations
176 void LinkNextIteration(const char* NomIteration);
177 void UnLinkNextIteration(const char* NomIteration);
179 // Liens avec les autres structures
180 void SetCaseName(const char* NomCas);
184 void SetInfoCompute(CORBA::Long MessInfo);
185 CORBA::Long GetInfoCompute();
188 SMESHHOMARDImpl::HOMARD_Iteration* myHomardIteration;
189 SMESHHOMARD::HOMARD_Gen_var _gen_i;
192 class SMESH_I_EXPORT HOMARD_Gen_i : public virtual SALOME::GenericObj_i,
193 public virtual POA_SMESHHOMARD::HOMARD_Gen
197 virtual ~HOMARD_Gen_i();
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,
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);
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);
239 SMESHHOMARD::HOMARD_Iteration_ptr CreateIteration();
242 SMESHHOMARD::HOMARD_Boundary_ptr GetBoundary (const char* nomBoundary);
243 SMESHHOMARD::HOMARD_Cas_ptr GetCase ();
244 SMESHHOMARD::HOMARD_Iteration_ptr GetIteration (CORBA::Long numIter);
246 SMESHHOMARD::listeBoundarys* GetAllBoundarysName();
248 void InvalideBoundary(const char* nomBoundary);
250 CORBA::Long DeleteBoundary(const char* nomBoundary);
251 CORBA::Long DeleteCase();
252 CORBA::Long DeleteIteration(int numIter);
254 void AddBoundaryGroup(const char* Boundary, const char* Group);
256 void AssociateCaseIter(int numIter, const char* labelIter);
257 char* CreateDirNameIter(const char* nomrep, CORBA::Long num);
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);
267 void PublishResultInSmesh(const char* NomFich, CORBA::Long Option);
268 void DeleteResultInSmesh(std::string NomFich, std::string MeshName);
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);
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;
299 int _ConfType; // Le type de conformite ou non conformite
301 bool _PublishMeshOUT;
302 bool _KeepWorkingFiles;
304 bool _RemoveLogOnSuccess;
306 std::string _MeshNameOUT;
307 std::string _MeshFileOUT;
308 std::string _LogFile;
312 SMESH::SMESH_Mesh_var _SmeshMesh;
313 std::string _TmpMeshFile;
316 SMESH_I_EXPORT std::vector<double> GetBoundingBoxInMedFile(const char * aFile);
317 SMESH_I_EXPORT std::set<std::string> GetListeGroupesInMedFile(const char * aFile);
319 }; // namespace SMESHHOMARD_I