// FICHIER : Enum_GrandeurGlobale.cp // This file is part of the Herezh++ application. // // The finite element software Herezh++ is dedicated to the field // of mechanics for large transformations of solid structures. // It is developed by Gérard Rio (APP: IDDN.FR.010.0106078.000.R.P.2006.035.20600) // INSTITUT DE RECHERCHE DUPUY DE LÔME (IRDL) . // // Herezh++ is distributed under GPL 3 license ou ultérieure. // // Copyright (C) 1997-2022 Université Bretagne Sud (France) // AUTHOR : Gérard Rio // E-MAIL : gerardrio56@free.fr // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, // or (at your option) any later version. // // This program 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 General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // For more information, please consult: . #include "Enum_GrandeurGlobale.h" # include using namespace std; //introduces namespace std #include #include "Sortie.h" //#ifdef SYSTEM_MAC_OS_X // #include // a priori ce n'est pas portable //#el #if defined SYSTEM_MAC_OS_CARBON #include // a priori ce n'est pas portable #else #include // pour le flot en memoire centrale #endif #include string Nom_GrandeurGlobale(const Enum_GrandeurGlobale id_GrandeurGlobale) // Retourne le nom du type correspondant a l'identificateur // de type enumere id_GrandeurGlobale { string result; switch (id_GrandeurGlobale) { case ENERGIE_CINETIQUE : result="energie_cinetique"; break; case ENERGIE_INTERNE : result="energie_interne"; break; case ENERGIE_EXTERNE : result="energie_externe"; break; case ENERGIE_BILAN : result="energie_bilan"; break; case QUANTITE_MOUVEMENT : result="quantite_mouvement"; break; case PUISSANCE_ACCELERATION : result="puissance_acceleration"; break; case PUISSANCE_INTERNE : result="puissance_interne"; break; case PUISSANCE_EXTERNE : result="puissance_externe"; break; case PUISSANCE_BILAN : result="puissance_bilan"; break; case ENERGIE_ELASTIQUE : result="energie_elastique"; break; case ENERGIE_PLASTIQUE : result="energie_plastique"; break; case ENERGIE_VISQUEUSE : result="energie_visqueuse"; break; case ENERGIE_HOURGLASS_ : result="energie_hourglass"; break; case ENERGIE_PENALISATION : result="energie_penalisation"; break; case ENERGIE_FROT_ELAST: result="energie_frot_elast"; break; case ENERGIE_FROT_PLAST : result="energie_frot_plast"; break; case ENERGIE_FROT_VISQ : result="energie_frot_visq"; break; case ENERGIE_VISCO_NUMERIQUE : result="energie_visco_numerique"; break; case ENERGIE_BULK_VISCOSITY : result="energie_bulk_viscosity"; break; case PUISSANCE_BULK_VISCOSITY : result="puissance_bulk_viscosity"; break; case VOLUME_TOTAL_MATIERE : result="volume_total_matiere"; break; case ENERGIE_STABILISATION_MEMB_BIEL : result="energie_stabilisation_membrane_biel"; break; case VOL_TOTAL2D_AVEC_PLAN_YZ : result="vol_total2D_avec_plan_yz"; break; case VOL_TOTAL2D_AVEC_PLAN_XZ : result="vol_total2D_avec_plan_xz"; break; case VOL_TOTAL2D_AVEC_PLAN_XY : result="vol_total2D_avec_plan_xy"; break; case NORME_CONVERGENCE : result="norme_de_convergence"; break; case COMPTEUR_ITERATION_ALGO_GLOBAL : result="compteur_iteration_algo_global"; break; case MAXPUISSEXT : result="maxpuissext"; break; case MAXPUISSINT : result="maxpuissint"; break; case MAXREACTION : result="maxreaction"; break; case MAXRESIDUGLOBAL : result="maxresiduglobal"; break; case MAXdeltaX : result="maxdeltax"; break; case MAXvarDeltaX : result="maxvardeltax"; break; case MAXvarDdl : result="maxvarddl"; break; case COMPTEUR_INCREMENT_CHARGE_ALGO_GLOBAL : result="compteur_increment_charge_algo_global"; break; case AMOR_CINET_VISQUEUX : result="amor_cinet_visqueux"; break; case TEMPS_COURANT : result="temps_courant"; break; case ALGO_GLOBAL_ACTUEL : result="algo_global_actuel"; break; default : cout << "\nErreur : valeur incorrecte du type Enum_GrandeurGlobale !\n"; cout << "Nom_GrandeurGlobale(Enum_GrandeurGlobale ) \n"; Sortie(1); }; return result; }; Enum_GrandeurGlobale Id_nom_GrandeurGlobale (const string& nom_GrandeurGlobale) // Retourne la variable de type enumere associe au nom // nom_GrandeurGlobale { Enum_GrandeurGlobale result; if ( nom_GrandeurGlobale == "energie_cinetique" ) result=ENERGIE_CINETIQUE; else if ( nom_GrandeurGlobale == "energie_interne" ) result=ENERGIE_INTERNE; else if ( nom_GrandeurGlobale == "energie_externe" ) result=ENERGIE_EXTERNE; else if ( nom_GrandeurGlobale == "energie_bilan" ) result=ENERGIE_BILAN; else if ( nom_GrandeurGlobale == "quantite_mouvement" ) result=QUANTITE_MOUVEMENT; else if ( nom_GrandeurGlobale == "puissance_acceleration" ) result=PUISSANCE_ACCELERATION; else if ( nom_GrandeurGlobale == "puissance_interne" ) result=PUISSANCE_INTERNE; else if ( nom_GrandeurGlobale == "puissance_externe" ) result=PUISSANCE_EXTERNE; else if ( nom_GrandeurGlobale == "puissance_bilan" ) result=PUISSANCE_BILAN; else if ( nom_GrandeurGlobale == "energie_elastique" ) result=ENERGIE_ELASTIQUE; else if ( nom_GrandeurGlobale == "energie_plastique" ) result=ENERGIE_PLASTIQUE; else if ( nom_GrandeurGlobale == "energie_visqueuse" ) result=ENERGIE_VISQUEUSE; else if ( nom_GrandeurGlobale == "energie_hourglass" ) result=ENERGIE_HOURGLASS_; else if ( nom_GrandeurGlobale == "energie_penalisation" ) result=ENERGIE_PENALISATION; else if ( nom_GrandeurGlobale == "energie_frot_elast" ) result=ENERGIE_FROT_ELAST; else if ( nom_GrandeurGlobale == "energie_frot_plast" ) result=ENERGIE_FROT_PLAST; else if ( nom_GrandeurGlobale == "energie_frot_visq" ) result=ENERGIE_FROT_VISQ; else if ( nom_GrandeurGlobale == "energie_visco_numerique" ) result=ENERGIE_VISCO_NUMERIQUE; else if ( nom_GrandeurGlobale == "energie_bulk_viscosity" ) result=ENERGIE_BULK_VISCOSITY; else if ( nom_GrandeurGlobale == "puissance_bulk_viscosity" ) result=PUISSANCE_BULK_VISCOSITY; else if ( nom_GrandeurGlobale == "volume_total_matiere" ) result=VOLUME_TOTAL_MATIERE; else if ( nom_GrandeurGlobale == "energie_stabilisation_membrane_biel" ) result=ENERGIE_STABILISATION_MEMB_BIEL; else if ( nom_GrandeurGlobale == "vol_total2D_avec_plan_yz" ) result=VOL_TOTAL2D_AVEC_PLAN_YZ; else if ( nom_GrandeurGlobale == "vol_total2D_avec_plan_xz" ) result=VOL_TOTAL2D_AVEC_PLAN_XZ; else if ( nom_GrandeurGlobale == "vol_total2D_avec_plan_xy" ) result=VOL_TOTAL2D_AVEC_PLAN_XY; else if ( nom_GrandeurGlobale == "norme_de_convergence" ) result=NORME_CONVERGENCE; else if ( nom_GrandeurGlobale == "compteur_iteration_algo_global" ) result=COMPTEUR_ITERATION_ALGO_GLOBAL; else if ( nom_GrandeurGlobale == "maxpuissext" ) result=MAXPUISSEXT; else if ( nom_GrandeurGlobale == "maxpuissint" ) result=MAXPUISSINT; else if ( nom_GrandeurGlobale == "maxreaction" ) result=MAXREACTION; else if ( nom_GrandeurGlobale == "maxresiduglobal" ) result=MAXRESIDUGLOBAL; else if ( nom_GrandeurGlobale == "maxdeltax" ) result=MAXdeltaX; else if ( nom_GrandeurGlobale == "maxvardeltax" ) result=MAXvarDeltaX; else if ( nom_GrandeurGlobale == "maxvarddl" ) result=MAXvarDdl; else if ( nom_GrandeurGlobale == "compteur_increment_charge_algo_global" ) result=COMPTEUR_INCREMENT_CHARGE_ALGO_GLOBAL; else if ( nom_GrandeurGlobale == "amor_cinet_visqueux" ) result=AMOR_CINET_VISQUEUX; else if ( nom_GrandeurGlobale == "temps_courant" ) result=TEMPS_COURANT; else if ( nom_GrandeurGlobale == "algo_global_actuel" ) result=ALGO_GLOBAL_ACTUEL; else { cout << "\nErreur : nom de grandeur globale inconnu !\n"; cout << "Id_nom_GrandeurGlobale(string ) \n"; Sortie(1); }; return result; }; // test si le string est une grandeur globale bool EstUneGrandeurGlobale(const string& nom_GrandeurGlobale) { bool result=false; if ( nom_GrandeurGlobale == "energie_cinetique" ) result=true; else if ( nom_GrandeurGlobale == "energie_interne" ) result=true; else if ( nom_GrandeurGlobale == "energie_externe" ) result=true; else if ( nom_GrandeurGlobale == "energie_bilan" ) result=true; else if ( nom_GrandeurGlobale == "quantite_mouvement" ) result=true; else if ( nom_GrandeurGlobale == "puissance_acceleration" ) result=true; else if ( nom_GrandeurGlobale == "puissance_interne" ) result=true; else if ( nom_GrandeurGlobale == "puissance_externe" ) result=true; else if ( nom_GrandeurGlobale == "puissance_bilan" ) result=true; else if ( nom_GrandeurGlobale == "energie_elastique" ) result=true; else if ( nom_GrandeurGlobale == "energie_plastique" ) result=true; else if ( nom_GrandeurGlobale == "energie_visqueuse" ) result=true; else if ( nom_GrandeurGlobale == "energie_hourglass" ) result=true; else if ( nom_GrandeurGlobale == "energie_penalisation" ) result=true; else if ( nom_GrandeurGlobale == "energie_frot_elast" ) result=true; else if ( nom_GrandeurGlobale == "energie_frot_plast" ) result=true; else if ( nom_GrandeurGlobale == "energie_frot_visq" ) result=true; else if ( nom_GrandeurGlobale == "energie_visco_numerique" ) result=true; else if ( nom_GrandeurGlobale == "energie_bulk_viscosity" ) result=true; else if ( nom_GrandeurGlobale == "puissance_bulk_viscosity" ) result=true; else if ( nom_GrandeurGlobale == "volume_total_matiere" ) result=true; else if ( nom_GrandeurGlobale == "energie_stabilisation_membrane_biel" ) result=true; else if ( nom_GrandeurGlobale == "vol_total2D_avec_plan_yz" ) result=true; else if ( nom_GrandeurGlobale == "vol_total2D_avec_plan_xz" ) result=true; else if ( nom_GrandeurGlobale == "vol_total2D_avec_plan_xy" ) result=true; else if ( nom_GrandeurGlobale == "norme_de_convergence" ) result=true; else if ( nom_GrandeurGlobale == "compteur_iteration_algo_global" ) result=true; else if ( nom_GrandeurGlobale == "maxpuissext" ) result=true; else if ( nom_GrandeurGlobale == "maxpuissint" ) result=true; else if ( nom_GrandeurGlobale == "maxreaction" ) result=true; else if ( nom_GrandeurGlobale == "maxresiduglobal" ) result=true; else if ( nom_GrandeurGlobale == "maxdeltax" ) result=true; else if ( nom_GrandeurGlobale == "maxvardeltax" ) result=true; else if ( nom_GrandeurGlobale == "maxvarddl" ) result=true; else if ( nom_GrandeurGlobale == "compteur_increment_charge_algo_global" ) result=true; else if ( nom_GrandeurGlobale == "amor_cinet_visqueux" ) result=true; else if ( nom_GrandeurGlobale == "temps_courant" ) result=true; else if ( nom_GrandeurGlobale == "algo_global_actuel" ) result=true; return result; }; // surcharge de la lecture istream & operator >> (istream & entree, Enum_GrandeurGlobale & result) { string nom_GrandeurGlobale; entree >> nom_GrandeurGlobale; result = Id_nom_GrandeurGlobale ( nom_GrandeurGlobale); return entree; }; // surcharge de l'operator d'ecriture ostream & operator << (ostream & sort, const Enum_GrandeurGlobale& a) { // on ecrit la forme caractère sort << Nom_GrandeurGlobale(a) << " "; return sort; };