193 lines
10 KiB
C++
193 lines
10 KiB
C++
/*! \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-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 <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,PARA_LOI_FAVIER,PARA_LOI_TYPE_MOONEY
|
|
,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,N_FRONT,N_FRONT_t,N_FRONT_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
|