Salome HOME
bos #26453: SMESH: uniform refinement
[modules/smesh.git] / src / SMESH_I / SMESH_Homard_i.hxx
diff --git a/src/SMESH_I/SMESH_Homard_i.hxx b/src/SMESH_I/SMESH_Homard_i.hxx
new file mode 100644 (file)
index 0000000..0fbf2dc
--- /dev/null
@@ -0,0 +1,310 @@
+// Copyright (C) 2011-2021  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _SMESH_HOMARD_I_HXX_
+#define _SMESH_HOMARD_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Homard)
+#include CORBA_CLIENT_HEADER(SALOMEDS)
+#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
+#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
+#include CORBA_CLIENT_HEADER(SMESH_Gen)
+#include CORBA_CLIENT_HEADER(SMESH_Mesh)
+
+#include "SMESH.hxx"
+#include "SMESH_Homard.hxx"
+//#include "FrontTrack.hxx"
+#include "SALOME_Component_i.hxx"
+#include "SALOME_NamingService.hxx"
+#include "Utils_CorbaException.hxx"
+
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+
+namespace SMESHHOMARD_I
+{
+
+class SMESH_I_EXPORT HOMARD_Boundary_i : public virtual SALOME::GenericObj_i,
+                                         public virtual POA_SMESHHOMARD::HOMARD_Boundary
+{
+public:
+  HOMARD_Boundary_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
+  HOMARD_Boundary_i();
+
+  virtual ~HOMARD_Boundary_i();
+
+  // Generalites
+  void                   SetName(const char* Name);
+  char*                  GetName();
+
+  char*                  GetDumpPython();
+
+  // Caracteristiques
+  void                   SetType(CORBA::Long Type);
+  CORBA::Long            GetType();
+
+  void                   SetMeshName(const char* MeshName);
+  char*                  GetMeshName();
+
+  void                   SetDataFile(const char* DataFile);
+  char*                  GetDataFile();
+
+  void                   SetCylinder(double Xcentre, double Ycentre, double ZCentre,
+                                      double Xaxe, double Yaxe, double Zaxe,
+                                      double rayon);
+  void                   SetSphere(double Xcentre, double Ycentre, double ZCentre,
+                                    double rayon);
+  void                   SetConeR(double Xcentre1, double Ycentre1, double Zcentre1, double Rayon1,
+                                   double Xcentre2, double Ycentre2, double Zcentre2, double Rayon2);
+  void                   SetConeA(double Xaxe, double Yaxe, double Zaxe, double Angle,
+                                   double Xcentre, double Ycentre, double ZCentre);
+  void                   SetTorus(double Xcentre, double Ycentre, double ZCentre,
+                                      double Xaxe, double Yaxe, double Zaxe,
+                                      double rayonRev, double rayonPri);
+
+  SMESHHOMARD::double_array*  GetCoords();
+
+  void                   SetLimit(double Xincr, double Yincr, double Zincr);
+  SMESHHOMARD::double_array*  GetLimit();
+
+  void                   AddGroup(const char* Group);
+  void                   SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
+  SMESHHOMARD::ListGroupType* GetGroups();
+
+private:
+  SMESHHOMARDImpl::HOMARD_Boundary* myHomardBoundary;
+  SMESHHOMARD::HOMARD_Gen_var _gen_i;
+};
+
+class SMESH_I_EXPORT HOMARD_Cas_i : public virtual SALOME::GenericObj_i,
+                                    public virtual POA_SMESHHOMARD::HOMARD_Cas
+{
+public:
+  HOMARD_Cas_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
+  HOMARD_Cas_i();
+
+  virtual ~HOMARD_Cas_i();
+
+  char* GetDumpPython();
+
+  // Caracteristiques
+  void  SetDirName(const char* NomDir);
+  char* GetDirName();
+
+  void                  SetBoundingBox(const SMESHHOMARD::extrema& LesExtremes);
+  SMESHHOMARD::extrema* GetBoundingBox();
+
+  void AddGroup(const char* Group);
+  void SetGroups(const SMESHHOMARD::ListGroupType& ListGroup);
+  SMESHHOMARD::ListGroupType* GetGroups();
+
+  void AddBoundary(const char* Boundary);
+  void AddBoundaryGroup(const char* Boundary, const char* Group);
+  SMESHHOMARD::ListBoundaryGroupType* GetBoundaryGroup();
+  void SupprBoundaryGroup();
+
+  void AddIteration(const char* NomIteration);
+
+private:
+  SMESHHOMARDImpl::HOMARD_Cas* myHomardCas;
+  SMESHHOMARD::HOMARD_Gen_var _gen_i;
+};
+
+class SMESH_I_EXPORT HOMARD_Iteration_i
+{
+public:
+  HOMARD_Iteration_i(SMESHHOMARD::HOMARD_Gen_var gen_i);
+  HOMARD_Iteration_i();
+
+  virtual ~HOMARD_Iteration_i();
+
+  // Generalites
+  void                   SetName(const char* Name);
+  char*                  GetName();
+
+  // Caracteristiques
+  void                   SetDirNameLoc(const char* NomDir);
+  char*                  GetDirNameLoc();
+
+  char*                  GetDirName();
+
+  void                   SetNumber(CORBA::Long NumIter);
+  CORBA::Long            GetNumber();
+
+  void                   SetState(CORBA::Long etat);
+  CORBA::Long            GetState();
+
+  void                   SetMeshName(const char* NomMesh);
+  char*                  GetMeshName();
+
+  void                   SetMeshFile(const char* MeshFile);
+  char*                  GetMeshFile();
+
+  void                   SetLogFile(const char* LogFile);
+  char*                  GetLogFile();
+
+  void                   SetFileInfo(const char* FileInfo);
+  char*                  GetFileInfo();
+
+  // Liens avec les autres structures
+  void                   SetCaseName(const char* NomCas);
+  char*                  GetCaseName();
+
+  // Drivers
+  void                   SetInfoCompute(CORBA::Long MessInfo);
+  CORBA::Long            GetInfoCompute();
+
+private:
+  SMESHHOMARDImpl::HOMARD_Iteration* myHomardIteration;
+  SMESHHOMARD::HOMARD_Gen_var _gen_i;
+};
+
+class SMESH_I_EXPORT HOMARD_Gen_i : public virtual SALOME::GenericObj_i,
+                                    public virtual POA_SMESHHOMARD::HOMARD_Gen
+{
+public:
+  HOMARD_Gen_i();
+  virtual ~HOMARD_Gen_i();
+
+  // Les creations
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundary (const char* nomBoundary,
+                                                   CORBA::Long typeBoundary);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCAO (const char* nomBoundary,
+                                                      const char* DataFile);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryDi (const char* nomBoundary,
+                                                     const char* MeshName, const char* DataFile);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryCylinder
+    (const char* nomBoundary,
+     CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
+     CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
+     CORBA::Double Rayon);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundarySphere
+    (const char* nomBoundary,
+     CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
+     CORBA::Double Rayon);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeR
+    (const char* nomBoundary,
+     CORBA::Double Xcentre1, CORBA::Double Ycentre1, CORBA::Double Zcentre1,
+     CORBA::Double Rayon1,
+     CORBA::Double Xcentre2, CORBA::Double Ycentre2, CORBA::Double Zcentre2,
+     CORBA::Double Rayon2);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryConeA
+    (const char* nomBoundary,
+     CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
+     CORBA::Double Angle,
+     CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre);
+  SMESHHOMARD::HOMARD_Boundary_ptr CreateBoundaryTorus
+    (const char* nomBoundary,
+     CORBA::Double Xcentre, CORBA::Double Ycentre, CORBA::Double Zcentre,
+     CORBA::Double Xaxis, CORBA::Double Yaxis, CORBA::Double Zaxis,
+     CORBA::Double RayonRev, CORBA::Double RayonPri);
+
+  SMESHHOMARD::HOMARD_Cas_ptr CreateCaseOnMesh (const char* MeshName,
+                                                SMESH::SMESH_Mesh_ptr smeshMesh,
+                                                const char* theWorkingDir);
+  SMESHHOMARD::HOMARD_Cas_ptr CreateCase (const char* MeshName,
+                                          const char* FileName,
+                                          const char* theWorkingDir);
+
+  HOMARD_Iteration_i* CreateIteration();
+
+  // Les informations
+  SMESHHOMARD::HOMARD_Boundary_ptr  GetBoundary  (const char* nomBoundary);
+  SMESHHOMARD::HOMARD_Cas_ptr       GetCase      ();
+  HOMARD_Iteration_i* GetIteration (CORBA::Long numIter);
+
+  SMESHHOMARD::listeBoundarys* GetAllBoundarysName();
+
+  void InvalideBoundary(const char* nomBoundary);
+
+  CORBA::Long DeleteBoundary(const char* nomBoundary);
+  void        DeleteCase();
+  CORBA::Long DeleteIteration(int numIter);
+
+  void AddBoundary(const char* Boundary);
+  void AddBoundaryGroup(const char* Boundary, const char* Group);
+
+  void AssociateCaseIter(int numIter, const char* labelIter);
+  char* CreateDirNameIter(const char* nomrep, CORBA::Long num);
+
+  CORBA::Long Compute();
+  CORBA::Long ComputeAdap(SMESHHOMARDImpl::HomardDriver* myDriver);
+  CORBA::Long ComputeCAO();
+  CORBA::Long ComputeCAObis();
+  char* ComputeDirManagement();
+  char* ComputeDirPaManagement();
+  int   DriverTexteBoundary(SMESHHOMARDImpl::HomardDriver* myDriver);
+
+  void PublishResultInSmesh(const char* NomFich);
+  void DeleteResultInSmesh(std::string NomFich, std::string MeshName);
+
+  void PythonDump();
+
+  // Preferences
+  void SetConfType (CORBA::Long theConfType);
+  void SetKeepMedOUT (bool theKeepMedOUT);
+  void SetPublishMeshOUT (bool thePublishMeshOUT);
+  void SetMeshNameOUT (const char* theMeshNameOUT);
+  void SetMeshFileOUT (const char* theMeshFileOUT);
+
+  void SetVerboseLevel (CORBA::Long theVerboseLevel);
+  void SetKeepWorkingFiles(bool theKeepWorkingFiles);
+  void SetLogInFile(bool theLogInFile);
+  void SetLogFile (const char* theLogFile);
+  void SetRemoveLogOnSuccess(bool theRemoveLogOnSuccess);
+
+private:
+  SMESHHOMARD::HOMARD_Boundary_ptr newBoundary();
+  SMESHHOMARD::HOMARD_Cas_ptr      newCase();
+  HOMARD_Iteration_i*              newIteration();
+
+private:
+  SMESHHOMARDImpl::HOMARD_Gen* myHomard;
+  HOMARD_Iteration_i*          myIteration0;
+  HOMARD_Iteration_i*          myIteration1;
+  SMESHHOMARD::HOMARD_Cas_var  myCase;
+  std::map<std::string, SMESHHOMARD::HOMARD_Boundary_var> _mesBoundarys;
+
+  // Preferences
+  int  _ConfType; // Le type de conformite ou non conformite
+  bool _KeepMedOUT;
+  bool _PublishMeshOUT;
+  bool _KeepWorkingFiles;
+  bool _LogInFile;
+  bool _RemoveLogOnSuccess;
+  int         _VerboseLevel;
+  std::string _MeshNameOUT;
+  std::string _MeshFileOUT;
+  std::string _LogFile;
+
+  // Input data type
+  bool _CaseOnMedFile;
+  SMESH::SMESH_Mesh_var _SmeshMesh;
+  std::string _TmpMeshFile;
+};
+
+SMESH_I_EXPORT std::vector<double>   GetBoundingBoxInMedFile(const char * aFile);
+SMESH_I_EXPORT std::set<std::string> GetListeGroupesInMedFile(const char * aFile);
+
+}; // namespace SMESHHOMARD_I
+
+#endif