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();
94 SMESHHOMARDImpl::HOMARD_Boundary* myHomardBoundary;
95 SMESHHOMARD::HOMARD_Gen_var _gen_i;
98 class SMESH_I_EXPORT HOMARD_Cas_i : public virtual SALOME::GenericObj_i,
99 public virtual POA_SMESHHOMARD::HOMARD_Cas
102 HOMARD_Cas_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
105 virtual ~HOMARD_Cas_i();
107 char* GetDumpPython();
110 void SetDirName(const char* NomDir);
113 void SetBoundingBox(const SMESHHOMARD::extrema& LesExtremes);
114 SMESHHOMARD::extrema* GetBoundingBox();
116 void AddGroup(const char* Group);
117 void SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
118 SMESHHOMARD::ListGroupType* GetGroups();
120 void AddBoundary(const char* Boundary);
121 void AddBoundaryGroup(const char* Boundary, const char* Group);
122 SMESHHOMARD::ListBoundaryGroupType* GetBoundaryGroup();
123 void SupprBoundaryGroup();
125 void AddIteration(const char* NomIteration);
128 SMESHHOMARDImpl::HOMARD_Cas* myHomardCas;
129 SMESHHOMARD::HOMARD_Gen_var _gen_i;
132 class SMESH_I_EXPORT HOMARD_Iteration_i
135 HOMARD_Iteration_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
136 HOMARD_Iteration_i();
138 virtual ~HOMARD_Iteration_i();
141 void SetName(const char* Name);
145 void SetDirNameLoc(const char* NomDir);
146 char* GetDirNameLoc();
150 void SetNumber(CORBA::Long NumIter);
151 CORBA::Long GetNumber();
153 void SetState(CORBA::Long etat);
154 CORBA::Long GetState();
156 void SetMeshName(const char* NomMesh);
159 void SetMeshFile(const char* MeshFile);
162 void SetLogFile(const char* LogFile);
165 void SetFileInfo(const char* FileInfo);
168 // Liens avec les autres structures
169 void SetCaseName(const char* NomCas);
173 void SetInfoCompute(CORBA::Long MessInfo);
174 CORBA::Long GetInfoCompute();
177 SMESHHOMARDImpl::HOMARD_Iteration* myHomardIteration;
178 SMESHHOMARD::HOMARD_Gen_var _gen_i;
181 class SMESH_I_EXPORT HOMARD_Gen_i : public virtual SALOME::GenericObj_i,
182 public virtual POA_SMESHHOMARD::HOMARD_Gen
186 virtual ~HOMARD_Gen_i();
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,
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);
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);
228 HOMARD_Iteration_i* CreateIteration();
231 SMESHHOMARD::HOMARD_Boundary_ptr GetBoundary (const char* nomBoundary);
232 SMESHHOMARD::HOMARD_Cas_ptr GetCase ();
233 HOMARD_Iteration_i* GetIteration (CORBA::Long numIter);
235 SMESHHOMARD::listeBoundarys* GetAllBoundarysName();
237 void InvalideBoundary(const char* nomBoundary);
239 CORBA::Long DeleteBoundary(const char* nomBoundary);
241 CORBA::Long DeleteIteration(int numIter);
243 void AddBoundary(const char* Boundary);
244 void AddBoundaryGroup(const char* Boundary, const char* Group);
246 void AssociateCaseIter(int numIter, const char* labelIter);
247 char* CreateDirNameIter(const char* nomrep, CORBA::Long num);
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);
257 void PublishResultInSmesh(const char* NomFich);
258 void DeleteResultInSmesh(std::string NomFich, std::string MeshName);
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);
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);
276 SMESHHOMARD::HOMARD_Boundary_ptr newBoundary();
277 SMESHHOMARD::HOMARD_Cas_ptr newCase();
278 HOMARD_Iteration_i* newIteration();
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;
288 int _ConfType; // Le type de conformite ou non conformite
290 bool _PublishMeshOUT;
291 bool _KeepWorkingFiles;
293 bool _RemoveLogOnSuccess;
295 std::string _MeshNameOUT;
296 std::string _MeshFileOUT;
297 std::string _LogFile;
301 SMESH::SMESH_Mesh_var _SmeshMesh;
302 std::string _TmpMeshFile;
305 SMESH_I_EXPORT std::vector<double> GetBoundingBoxInMedFile(const char * aFile);
306 SMESH_I_EXPORT std::set<std::string> GetListeGroupesInMedFile(const char * aFile);
308 }; // namespace SMESHHOMARD_I