2023-06-17 00:28:19 +05:00
|
|
|
// Copyright (C) 2011-2023 CEA/DEN, EDF R&D
|
2021-12-01 21:12:39 +05:00
|
|
|
//
|
|
|
|
// 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
|