X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHOMARD%2FHomardDriver.cxx;h=5c702f924f0b19b4cb5f8c56774f0028a77455d6;hb=refs%2Ftags%2FV9_9_0rc2;hp=b24af8e93232379bcd6da31505c517eaa7c380d7;hpb=633ecb2c6133ab4f266d218ff13da5e46310c90f;p=modules%2Fhomard.git diff --git a/src/HOMARD/HomardDriver.cxx b/src/HOMARD/HomardDriver.cxx index b24af8e9..5c702f92 100644 --- a/src/HOMARD/HomardDriver.cxx +++ b/src/HOMARD/HomardDriver.cxx @@ -1,11 +1,11 @@ -// HOMARD HOMARD : implementaion of HOMARD idl descriptions +// HOMARD HOMARD : implementation of HOMARD idl descriptions // -// Copyright (C) 2011-2012 CEA/DEN, EDF R&D +// Copyright (C) 2011-2022 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. +// 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 @@ -19,13 +19,17 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include +// Pilote l'ecriture du fichier de configuration pour lancer l'execution de HOMARD + +#include +#ifndef WIN32 #include +#endif #include +#include "HomardDriver.hxx" #include "Utils_SALOME_Exception.hxx" #include "utilities.h" -#include "HomardDriver.hxx" //============================================================================= //============================================================================= @@ -34,56 +38,60 @@ HomardDriver::HomardDriver(const std::string siter, const std::string siterp1): _NomFichierConf( "" ), _NomFichierDonn( "" ), _siter( "" ), _siterp1( "" ), _Texte( "" ), _bLu( false ) { + MESSAGE("siter = "< _HOMARD_Exec ="<<_HOMARD_Exec) ; // _siter = siter ; _siterp1 = siterp1 ; } - //============================================================================= //============================================================================= HomardDriver::~HomardDriver() { } - //=============================================================================== -void HomardDriver::TexteInit( const std::string DirCompute, const std::string LogFile ) +// A. Generalites +//=============================================================================== +void HomardDriver::TexteInit( const std::string DirCompute, const std::string LogFile, const std::string Langue ) { MESSAGE("TexteInit, DirCompute ="<= 11 and ZoneType <= 13 ) { ZoneTypeHOMARD = 1 ; } - else if ( ZoneType >= 31 and ZoneType <= 33 ) { ZoneTypeHOMARD = 3 ; } - else if ( ZoneType >= 61 and ZoneType <= 63 ) { ZoneTypeHOMARD = 6 ; } + if ( ZoneType >= 11 && ZoneType <= 13 ) { ZoneTypeHOMARD = 1 ; } + else if ( ZoneType >= 31 && ZoneType <= 33 ) { ZoneTypeHOMARD = 3 ; } + else if ( ZoneType >= 61 && ZoneType <= 63 ) { ZoneTypeHOMARD = 6 ; } else { ZoneTypeHOMARD = ZoneType ; } // if ( TypeUse < 0 ) { ZoneTypeHOMARD = -ZoneTypeHOMARD ; } // std::stringstream saux1 ; saux1 << NumeZone ; - saux2 = saux1.str() ; - saux = "#\n# Zone numero " + saux2 + "\n" ; + saux = "#\n# Zone numero " + saux1.str() + "\n" ; // { std::stringstream saux1 ; saux1 << NumeZone << " " << ZoneTypeHOMARD ; - saux2 = saux1.str() ; - saux += "ZoRaType " + saux2 + "\n" ; + saux += "ZoRaType " + saux1.str() + "\n" ; } // // Cas du rectangle @@ -257,23 +291,19 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 saux += "#Rectangle\n" ; { std::stringstream saux1 ; saux1 << NumeZone << " " << x0 ; - saux2 = saux1.str() ; - saux += "ZoRaXmin " + saux2 + "\n" ; + saux += "ZoRaXmin " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x1 ; - saux2 = saux1.str() ; - saux += "ZoRaXmax " + saux2 + "\n" ; + saux += "ZoRaXmax " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x2 ; - saux2 = saux1.str() ; - saux += "ZoRaYmin " + saux2 + "\n" ; + saux += "ZoRaYmin " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x3 ; - saux2 = saux1.str() ; - saux += "ZoRaYmax " + saux2 + "\n" ; + saux += "ZoRaYmax " + saux1.str() + "\n" ; } } // @@ -283,23 +313,19 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 saux += "#Rectangle\n" ; { std::stringstream saux1 ; saux1 << NumeZone << " " << x2 ; - saux2 = saux1.str() ; - saux += "ZoRaXmin " + saux2 + "\n" ; + saux += "ZoRaXmin " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x3 ; - saux2 = saux1.str() ; - saux += "ZoRaXmax " + saux2 + "\n" ; + saux += "ZoRaXmax " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x4 ; - saux2 = saux1.str() ; - saux += "ZoRaYmin " + saux2 + "\n" ; + saux += "ZoRaYmin " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x5 ; - saux2 = saux1.str() ; - saux += "ZoRaYmax " + saux2 + "\n" ; + saux += "ZoRaYmax " + saux1.str() + "\n" ; } } // @@ -309,23 +335,19 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 saux += "#Rectangle\n" ; { std::stringstream saux1 ; saux1 << NumeZone << " " << x0 ; - saux2 = saux1.str() ; - saux += "ZoRaXmin " + saux2 + "\n" ; + saux += "ZoRaXmin " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x1 ; - saux2 = saux1.str() ; - saux += "ZoRaXmax " + saux2 + "\n" ; + saux += "ZoRaXmax " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x4 ; - saux2 = saux1.str() ; - saux += "ZoRaYmin " + saux2 + "\n" ; + saux += "ZoRaYmin " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x5 ; - saux2 = saux1.str() ; - saux += "ZoRaYmax " + saux2 + "\n" ; + saux += "ZoRaYmax " + saux1.str() + "\n" ; } } // @@ -336,50 +358,42 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 saux += "# Boite\n" ; { std::stringstream saux1 ; saux1 << NumeZone << " " << x0 ; - saux2 = saux1.str() ; - saux += "ZoRaXmin " + saux2 + "\n" ; + saux += "ZoRaXmin " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x1 ; - saux2 = saux1.str() ; - saux += "ZoRaXmax " + saux2 + "\n" ; + saux += "ZoRaXmax " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x2 ; - saux2 = saux1.str() ; - saux += "ZoRaYmin " + saux2 + "\n" ; + saux += "ZoRaYmin " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x3 ; - saux2 = saux1.str() ; - saux += "ZoRaYmax " + saux2 + "\n" ; + saux += "ZoRaYmax " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x4 ; - saux2 = saux1.str() ; - saux += "ZoRaZmin " + saux2 + "\n" ; + saux += "ZoRaZmin " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x5 ; - saux2 = saux1.str() ; - saux += "ZoRaZmax " + saux2 + "\n" ; + saux += "ZoRaZmax " + saux1.str() + "\n" ; } } // // Cas du disque // - else if ( ZoneType == 31 or ZoneType == 61 ) + else if ( ZoneType == 31 || ZoneType == 61 ) { saux += "# Sphere\n" ; { std::stringstream saux1 ; saux1 << NumeZone << " " << x0 ; - saux2 = saux1.str() ; - saux += "ZoRaXCen " + saux2 + "\n" ; + saux += "ZoRaXCen " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x1 ; - saux2 = saux1.str() ; - saux += "ZoRaYCen " + saux2 + "\n" ; + saux += "ZoRaYCen " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x6 ; @@ -390,22 +404,19 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 if ( ZoneType == 61 ) { std::stringstream saux1 ; saux1 << NumeZone << " " << x8 ; - saux2 = saux1.str() ; - saux += "ZoRaRayI " + saux2 + "\n" ; + saux += "ZoRaRayI " + saux1.str() + "\n" ; } } - else if ( ZoneType == 32 or ZoneType == 62 ) + else if ( ZoneType == 32 || ZoneType == 62 ) { saux += "# Sphere\n" ; { std::stringstream saux1 ; saux1 << NumeZone << " " << x1 ; - saux2 = saux1.str() ; - saux += "ZoRaXCen " + saux2 + "\n" ; + saux += "ZoRaXCen " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x2 ; - saux2 = saux1.str() ; - saux += "ZoRaYCen " + saux2 + "\n" ; + saux += "ZoRaYCen " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x6 ; @@ -416,22 +427,19 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 if ( ZoneType == 62 ) { std::stringstream saux1 ; saux1 << NumeZone << " " << x8 ; - saux2 = saux1.str() ; - saux += "ZoRaRayI " + saux2 + "\n" ; + saux += "ZoRaRayI " + saux1.str() + "\n" ; } } - else if ( ZoneType == 33 or ZoneType == 63 ) + else if ( ZoneType == 33 || ZoneType == 63 ) { saux += "# Sphere\n" ; { std::stringstream saux1 ; saux1 << NumeZone << " " << x0 ; - saux2 = saux1.str() ; - saux += "ZoRaXCen " + saux2 + "\n" ; + saux += "ZoRaXCen " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x2 ; - saux2 = saux1.str() ; - saux += "ZoRaYCen " + saux2 + "\n" ; + saux += "ZoRaYCen " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x6 ; @@ -442,8 +450,7 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 if ( ZoneType == 63 ) { std::stringstream saux1 ; saux1 << NumeZone << " " << x8 ; - saux2 = saux1.str() ; - saux += "ZoRaRayI " + saux2 + "\n" ; + saux += "ZoRaRayI " + saux1.str() + "\n" ; } } // @@ -454,61 +461,51 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 saux += "# Sphere\n" ; { std::stringstream saux1 ; saux1 << NumeZone << " " << x0 ; - saux2 = saux1.str() ; - saux += "ZoRaXCen " + saux2 + "\n" ; + saux += "ZoRaXCen " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x1 ; - saux2 = saux1.str() ; - saux += "ZoRaYCen " + saux2 + "\n" ; + saux += "ZoRaYCen " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x2 ; - saux2 = saux1.str() ; - saux += "ZoRaZCen " + saux2 + "\n" ; + saux += "ZoRaZCen " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x3 ; - saux2 = saux1.str() ; - saux += "ZoRaRayo " + saux2 + "\n" ; + saux += "ZoRaRayo " + saux1.str() + "\n" ; } } // // Cas du cylindre ou du tuyau // - else if ( ZoneType == 5 or ZoneType == 7 ) + else if ( ZoneType == 5 || ZoneType == 7 ) { if ( ZoneType == 5 ) { saux += "# Cylindre\n" ; } else { saux += "# Tuyau\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x0 ; - saux2 = saux1.str() ; - saux += "ZoRaXBas " + saux2 + "\n" ; + saux += "ZoRaXBas " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x1 ; - saux2 = saux1.str() ; - saux += "ZoRaYBas " + saux2 + "\n" ; + saux += "ZoRaYBas " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x2 ; - saux2 = saux1.str() ; - saux += "ZoRaZBas " + saux2 + "\n" ; + saux += "ZoRaZBas " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x3 ; - saux2 = saux1.str() ; - saux += "ZoRaXAxe " + saux2 + "\n" ; + saux += "ZoRaXAxe " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x4 ; - saux2 = saux1.str() ; - saux += "ZoRaYAxe " + saux2 + "\n" ; + saux += "ZoRaYAxe " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x5 ; - saux2 = saux1.str() ; - saux += "ZoRaZAxe " + saux2 + "\n" ; + saux += "ZoRaZAxe " + saux1.str() + "\n" ; } { std::stringstream saux1 ; saux1 << NumeZone << " " << x6 ; @@ -518,14 +515,12 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 } { std::stringstream saux1 ; saux1 << NumeZone << " " << x7 ; - saux2 = saux1.str() ; - saux += "ZoRaHaut " + saux2 + "\n" ; + saux += "ZoRaHaut " + saux1.str() + "\n" ; } if ( ZoneType == 7 ) { std::stringstream saux1 ; saux1 << NumeZone << " " << x8 ; - saux2 = saux1.str() ; - saux += "ZoRaRayI " + saux2 + "\n" ; + saux += "ZoRaRayI " + saux1.str() + "\n" ; } } // @@ -533,7 +528,6 @@ void HomardDriver::TexteZone( int NumeZone, int ZoneType, int TypeUse, double x0 // // MESSAGE("A la fin de HomardDriver::TexteZone, _Texte ="<<_Texte); } - //=============================================================================== void HomardDriver::TexteField( const std::string FieldName, const std::string FieldFile, int TimeStep, int Rank, int TypeThR, double ThreshR, int TypeThC, double ThreshC, @@ -561,6 +555,7 @@ void HomardDriver::TexteField( const std::string FieldName, const std::string Fi saux2 = saux1.str() ; _Texte += "CCNumPTI " + saux2 + "\n" ; } + if ( Rank >= 0 ) { std::stringstream saux1 ; saux1 << Rank ; @@ -582,8 +577,7 @@ void HomardDriver::TexteField( const std::string FieldName, const std::string Fi { std::stringstream saux1 ; saux1 << ThreshR ; - saux2 = saux1.str() ; - _Texte += "Seuil" + saux + " " + saux2 + "\n" ; + _Texte += "Seuil" + saux + " " + saux1.str() + "\n" ; } // saux = " " ; @@ -599,8 +593,7 @@ void HomardDriver::TexteField( const std::string FieldName, const std::string Fi { std::stringstream saux1 ; saux1 << ThreshC ; - saux2 = saux1.str() ; - _Texte += "Seuil" + saux + " " + saux2 + "\n" ; + _Texte += "Seuil" + saux + " " + saux1.str() + "\n" ; } // saux = " " ; @@ -619,13 +612,12 @@ void HomardDriver::TexteField( const std::string FieldName, const std::string Fi if ( UsCmpI == 1 ) { saux = "INFINI" ; } if ( UsCmpI == 2 ) - { saux = "V_RELATIVE" ; } + { saux = "RELATIF" ; } if ( saux != " " ) { _Texte += "CCUsCmpI " + saux + "\n" ; } } - //=============================================================================== void HomardDriver::TexteGroup( const std::string GroupName ) { @@ -635,6 +627,8 @@ void HomardDriver::TexteGroup( const std::string GroupName ) // } //=============================================================================== +// D. Les frontieres +//=============================================================================== void HomardDriver::TexteBoundaryOption( int BoundaryOption ) { MESSAGE("TexteBoundaryOption, BoundaryOption = "<0 si pas de precision) +// Rank : numero d'ordre retenu +// +void HomardDriver::TexteFieldInterpNameType( int NumeChamp, const std::string FieldName, const std::string TypeInterp, int TimeStep, int Rank) { - MESSAGE("TexteFieldInterpName, NumeChamp = "< 0 ) @@ -955,8 +992,7 @@ void HomardDriver::TexteAdvanced( int Pyram, int NivMax, double DiamMin, int Ada _Texte += "# Diametre minimal\n" ; { std::stringstream saux1 ; saux1 << DiamMin ; - std::string saux2 = saux1.str() ; - _Texte += "DiametMi " + saux2 + "\n" ; + _Texte += "DiametMi " + saux1.str() + "\n" ; } } if ( AdapInit != 0 ) @@ -968,32 +1004,67 @@ void HomardDriver::TexteAdvanced( int Pyram, int NivMax, double DiamMin, int Ada _Texte += " des regions sans indicateur\n" ; { std::stringstream saux1 ; saux1 << AdapInit ; - std::string saux2 = saux1.str() ; - _Texte += "AdapInit " + saux2 + "\n" ; + _Texte += "AdapInit " + saux1.str() + "\n" ; } } - if ( LevelOutput != 0 ) + if ( ExtraOutput % 2 == 0 ) { _Texte += "# Sortie des niveaux de raffinement\n" ; _Texte += "NCNiveau NIVEAU\n" ; } + if ( ExtraOutput % 3 == 0 ) + { + _Texte += "# Sortie des qualités des mailles\n" ; + _Texte += "NCQualit QUAL\n" ; + } + if ( ExtraOutput % 5 == 0 ) + { + _Texte += "# Sortie des diamètres des mailles\n" ; + _Texte += "NCDiamet DIAM\n" ; + } + if ( ExtraOutput % 7 == 0 ) + { + _Texte += "# Sortie des parents des mailles\n" ; + _Texte += "NCParent PARENT\n" ; + } + if ( ExtraOutput % 11 == 0 ) + { + _Texte += "# Volumes voisins par recollement\n" ; + _Texte += "NCVoisRc Voisin-Recollement\n" ; + } } +//=============================================================================== +// G. Les messages +//=============================================================================== +void HomardDriver::TexteInfoCompute( int MessInfo ) +{ + MESSAGE("TexteAdvanced, MessInfo ="<