Herezh_dev/herezh_pp/Enumeration/Enum_TypeQuelconque.h

194 lines
10 KiB
C++
Executable file

/*! \file Enum_TypeQuelconque.h
\brief Définition de l'enuméré pour repérer un type quelconque
*/
// FICHIER : Enum_TypeQuelconque.h
// 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) <https://www.irdl.fr/>.
//
// Herezh++ is distributed under GPL 3 license ou ultérieure.
//
// Copyright (C) 1997-2021 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 <https://www.gnu.org/licenses/>.
//
// For more information, please consult: <https://herezh.irdl.fr/>.
// Afin de realiser un gain en place memoire, les noms des types de grandeurs sont
// stockes a l'aide d'un type enumere. Les fonctions NomTypeQuelconque et Id_nomTypeQuelconque rendent
// possible le lien entre les noms des geometries et les identificateurs
// de type enumere correspondants.
#ifndef ENUMTYPEQUELCONQUE_H
#define ENUMTYPEQUELCONQUE_H
#include <iostream>
using namespace std;
#include <map>
#include "ParaGlob.h"
#include "EnumTypeGrandeur.h"
#include "Enum_dure.h"
#include "Tableau_T.h"
/// @addtogroup Group_types_enumeres
/// @{
/// Définition de l'enuméré pour repérer un type quelconque
enum EnumTypeQuelconque { RIEN_TYPEQUELCONQUE = 1, SIGMA_BARRE_BH_T
,CONTRAINTE_INDIVIDUELLE_A_CHAQUE_LOI_A_T
,CONTRAINTE_INDIVIDUELLE_A_CHAQUE_LOI_A_T_SANS_PROPORTION
,CONTRAINTE_COURANTE,DEFORMATION_COURANTE,VITESSE_DEFORMATION_COURANTE
,ALMANSI,GREEN_LAGRANGE,LOGARITHMIQUE,DELTA_DEF
,ALMANSI_TOTAL,GREEN_LAGRANGE_TOTAL,LOGARITHMIQUE_TOTALE
,DEF_PRINCIPALES,SIGMA_PRINCIPALES,VIT_PRINCIPALES,DEF_DUALE_MISES,DEF_DUALE_MISES_MAXI
,CONTRAINTE_MISES,CONTRAINTE_MISES_T,CONTRAINTE_TRESCA,CONTRAINTE_TRESCA_T
,ERREUR_Q,DEF_PLASTIQUE_CUMULEE
,ERREUR_SIG_RELATIVE
,TEMPERATURE_LOI_THERMO_PHYSIQUE, PRESSION_LOI_THERMO_PHYSIQUE
,TEMPERATURE_TRANSITION, VOLUME_SPECIFIQUE
,FLUXD, GRADT, DGRADT,DELTAGRADT
,COEFF_DILATATION_LINEAIRE, CONDUCTIVITE, CAPACITE_CALORIFIQUE
,MODULE_COMPRESSIBILITE,MODULE_CISAILLEMENT,COEFF_COMPRESSIBILITE
,MODULE_COMPRESSIBILITE_TOTAL,MODULE_CISAILLEMENT_TOTAL
,E_YOUNG,NU_YOUNG,MU_VISCO,MU_VISCO_SPHERIQUE
,MODULE_TANGENT_1D,COMPRESSIBILITE_TANGENTE
,NB_INVERSION,HYPER_CENTRE_HYSTERESIS,SIGMA_REF,Q_SIG_HYST_Oi_A_R,Q_SIG_HYST_R_A_T
,Q_DELTA_SIG_HYST,COS_ALPHA_HYSTERESIS,COS3PHI_SIG_HYSTERESIS,COS3PHI_DELTA_SIG_HYSTERESIS
,FCT_AIDE
,NB_ITER_TOTAL_RESIDU,NB_INCRE_TOTAL_RESIDU,NB_APPEL_FCT,NB_STEP,ERREUR_RK
,PRESSION_HYST_REF,PRESSION_HYST,PRESSION_HYST_REF_M1,PRESSION_HYST_T
,UN_DDL_ENUM_ETENDUE,ENERGIE_ELASTIQUE_INDIVIDUELLE_A_CHAQUE_LOI_A_T
,ENERGIE_PLASTIQUE_INDIVIDUELLE_A_CHAQUE_LOI_A_T
,ENERGIE_VISQUEUSE_INDIVIDUELLE_A_CHAQUE_LOI_A_T
,PROPORTION_LOI_MELANGE, FONC_PONDERATION
,POSITION_GEOMETRIQUE,POSITION_GEOMETRIQUE_t,POSITION_GEOMETRIQUE_t0
,CRISTALINITE
,VOLUME_ELEMENT,VOLUME_PTI,EPAISSEUR_MOY_INITIALE, EPAISSEUR_MOY_FINALE
,SECTION_MOY_INITIALE, SECTION_MOY_FINALE
,EPAISSEUR_INITIALE, EPAISSEUR_FINALE,SECTION_INITIALE, SECTION_FINALE
,VOL_ELEM_AVEC_PLAN_REF,INTEG_SUR_VOLUME,INTEG_SUR_VOLUME_ET_TEMPS
,STATISTIQUE,STATISTIQUE_ET_TEMPS
,ENERGIE_HOURGLASS,PUISSANCE_BULK,ENERGIE_BULK,ENERGIE_STABMEMB_BIEL,FORCE_STABMEMB_BIEL
,TENSEUR_COURBURE, COURBURES_PRINCIPALES, DIRECTIONS_PRINC_COURBURE
,DIRECTIONS_PRINC_SIGMA,DIRECTIONS_PRINC_DEF,DIRECTIONS_PRINC_D
,REPERE_LOCAL_ORTHO, REPERE_LOCAL_H, REPERE_LOCAL_B
,REPERE_D_ANISOTROPIE,EPS_TRANSPORTEE_ANISO,SIGMA_DANS_ANISO
,DELTA_EPS_TRANSPORTEE_ANISO,DELTA_SIGMA_DANS_ANISO
,PARA_ORTHO
,SPHERIQUE_EPS,Q_EPS,COS3PHI_EPS,SPHERIQUE_SIG,Q_SIG,COS3PHI_SIG
,SPHERIQUE_DEPS,V_vol,Q_DEPS,COS3PHI_DEPS,POTENTIEL,FCT_POTENTIEL_ND
,INVAR_B1,INVAR_B2,INVAR_B3,INVAR_J1,INVAR_J2,INVAR_J3
,DEF_EQUIVALENTE,DEF_EPAISSEUR,D_EPAISSEUR,DEF_LARGEUR,D_LARGEUR
,DEF_MECANIQUE,DEF_ASSO_LOI,DEF_P_DANS_V_A
,SIG_EPAISSEUR,SIG_LARGEUR
,FORCE_GENE_EXT,FORCE_GENE_INT,FORCE_GENE_TOT,RESIDU_GLOBAL
,FORCE_GENE_EXT_t,FORCE_GENE_INT_t
,VECT_PRESSION,PRESSION_SCALAIRE,VECT_FORCE_VOLUM
,VECT_DIR_FIXE,VECT_SURF_SUIV,VECT_HYDRODYNA_Fn,VECT_HYDRODYNA_Ft,VECT_HYDRODYNA_T
,VECT_LINE,VECT_LINE_SUIV,VECT_REAC,VECT_REAC_N
,NN_11,NN_22,NN_33,NN_12,NN_13,NN_23,MM_11,MM_22,MM_33,MM_12,MM_13,MM_23
,DIRECTION_PLI,DIRECTION_PLI_NORMEE,INDIC_CAL_PLIS
,NN_SURF,NN_SURF_t,NN_SURF_t0
,NOEUD_PROJECTILE_EN_CONTACT,NOEUD_FACETTE_EN_CONTACT
,GLISSEMENT_CONTACT,PENETRATION_CONTACT
,GLISSEMENT_CONTACT_T,PENETRATION_CONTACT_T
,FORCE_CONTACT,FORCE_CONTACT_T,CONTACT_NB_PENET
,CONTACT_NB_DECOL,CONTACT_CAS_SOLIDE
,CONTACT_ENERG_PENAL,CONTACT_COLLANT,NUM_ZONE_CONTACT
,CONTACT_ENERG_GLISSE_ELAS,CONTACT_ENERG_GLISSE_PLAS,CONTACT_ENERG_GLISSE_VISQ
,CONTACT_PENALISATION_N,CONTACT_PENALISATION_T
,NORMALE_CONTACT
,TEMPS_CPU_USER,TEMPS_CPU_LOI_COMP,TEMPS_CPU_METRIQUE
,GENERIQUE_UNE_GRANDEUR_GLOBALE
,GENERIQUE_UNE_CONSTANTE_GLOB_INT_UTILISATEUR
,GENERIQUE_UNE_CONSTANTE_GLOB_DOUBLE_UTILISATEUR
,GENERIQUE_UNE_VARIABLE_GLOB_DOUBLE_UTILISATEUR_0
,GENERIQUE_UNE_VARIABLE_GLOB_DOUBLE_UTILISATEUR_T
,GENERIQUE_UNE_VARIABLE_GLOB_DOUBLE_UTILISATEUR_TDT
,DEPLACEMENT, VITESSE
,DELTA_XI,XI_ITER_0,MASSE_RELAX_DYN
,COMP_TORSEUR_REACTION
,NUM_NOEUD,NUM_MAIL_NOEUD,NUM_ELEMENT,NUM_MAIL_ELEM,NUM_PTI
,NUM_FACE,NUM_ARETE
};
/// @} // end of group
//------****-----
// en fonction des ajouts voir pour mettre à jour éventuellement
// EnumTypeQuelconque Equi_Enum_ddl_en_enu_quelconque(Enum_ddl a);
//------****-----
/// @addtogroup Group_types_enumeres
/// @{
/// def de la map qui fait la liaison entre les string et les énumérés
class ClassPourEnumTypeQuelconque
{ public:
// def de la map qui fait la liaison entre les string et les énumérés
static map < string, EnumTypeQuelconque , std::less < string> > map_EnumTypeQuelconque;
// def de la grandeur statique qui permet de remplir la map
static ClassPourEnumTypeQuelconque remplir_map;
// le constructeur qui rempli effectivement la map
ClassPourEnumTypeQuelconque();
// indique le type d'expression de la grandeur
static Tableau < int > tt_GLOB; // = 1 indique si la grandeur est naturellement exprimé dans le repère globale
// = 0 indique que la grandeur est dans le repère naturelle (ou une combinaison)
// indique à quel temps la grandeur est calculée
static Tableau < Enum_dure > tt_TQ_temps;
// nombre de grandeur énumérée existante
static int NombreEnumTypeQuelconque() {return tt_GLOB.Taille();};
};
/// @} // end of group
// Retourne le nom du type de grandeur a partir de son identificateur de
// type enumere id_TypeQuelconque correspondant
string NomTypeQuelconque (EnumTypeQuelconque id_TypeQuelconque);
// idem mais en version courte (sur quelques caractères)
string NomTypeQuelconque_court (EnumTypeQuelconque id_TypeQuelconque);
// nom générique, lorsqu'il s'agit de composantes
string NomGeneriqueTypeQuelconque(EnumTypeQuelconque id_TypeQuelconque);
// indique si le string correspond à un type quelconque reconnu ou non
bool Existe_typeQuelconque(const string& nom);
// Retourne l'identificateur de type enumere associe au nom du type de grandeur
// nom_TypeQuelconque
EnumTypeQuelconque Id_nomTypeQuelconque (const char* nom_TypeQuelconque);
EnumTypeQuelconque Id_nomTypeQuelconque (const string& nom_TypeQuelconque);
// Retourne le type de grandeur associée au type quelconque
EnumTypeGrandeur Type_de_grandeur_associee(EnumTypeQuelconque typa);
// retourne le temps auquel la grandeur est définie
Enum_dure EnumTypeQuelconqueTemps(EnumTypeQuelconque typa);
// retour du type d'expression de la grandeur
// = 1 indique si la grandeur est naturellement exprimé dans le repère globale
// = 0 indique que la grandeur est dans le repère naturelle (ou une combinaison)
int EnumTypeQuelconqueGlobale(EnumTypeQuelconque typa);
// surcharge de l'operator de lecture
istream & operator >> (istream & entree, EnumTypeQuelconque& a);
// surcharge de l'operator d'ecriture
ostream & operator << (ostream & sort, const EnumTypeQuelconque& a);
#endif