$$$$ PAS_MODL * PAS_MODL PROCEDUR MB234859 24/02/20 21:15:03 11843 DEBPROC PAS_MODL TPASA1*'TABLE' ; * *----------------------- Objet de la procedure ------------------------* * * Initialise ou met a jour les indices relatifs aux modeles de * la table WTABLE de PASAPAS, ainsi que les caracteristiques * associees (MAT_...). * * Pour plus de details, voir la notice. * *--------------------------- Initialisations --------------------------* wtab = TPASA1.'WTABLE' ; * Modele global : si (exis wtab 'MODELE') ; mod0 = wtab.modele ; sino ; erreur ' ***** Il manque le MODELE dans Wtable' ; quit PAS_MODL ; fins ; * Indice modele_courant : si (exis wtab 'MODELE_COURANT') ; si (ega mod0 (wtab.modele_courant)) ; quit PAS_MODL ; sino ; wtab.modele_courant = mod0 ; fins ; sino ; wtab.modele_courant = mod0 ; fins ; * Caracteristiques : si (exis wtab 'CARACTERISTIQUES') ; mat0 = wtab.caracteristiques ; sino ; erreur ' ***** Il manque les CARACTERISTIQUES dans Wtable' ; quit PAS_MODL ; fins ; *mess '***** Appel a PAS_MODL ' ; *------------------------ Indices pour TRANSNON -----------------------* * Formulation THERMIQUE & THERMOHYDRIQUE : WTAB.'THE1' = 'EXIS' mod0 'FORM' 'THERMIQUE' ; WTAB.'THM1' = 'EXIS' mod0 'FORM' 'THERMOHYDRIQUE' ; * FOR_THER = VRAI : on doit resoudre de la thermique/THM WTAB.'FOR_THER' = WTAB.'THE1' 'OU' WTAB.'THM1' ; 'SI' WTAB.'THE1' ; WTAB.'MOD_THE' = 'EXTR' mod0 'FORM' 'THERMIQUE'; WTAB.'MAT_THE' = 'REDU' mat0 WTAB.'MOD_THE'; WTAB.'MOD_T' = WTAB.'MOD_THE' ; WTAB.'MAT_T' = WTAB.'MAT_THE' ; 'SI' WTAB.'THM1' ; WTAB.'MOD_THM' = 'EXTR' mod0 'FORM' 'THERMOHYDRIQUE' ; WTAB.'MAT_THM' = 'REDU' mat0 WTAB.'MOD_THM'; WTAB.'MOD_T' = WTAB.'MOD_T' 'ET' WTAB.'MOD_THM' ; WTAB.'MAT_T' = WTAB.'MAT_T' 'ET' WTAB.'MAT_THM' ; 'FINSI' ; WTAB.'MOD_TOT' = WTAB.'MOD_T' ; WTAB.'MAT_TOT' = WTAB.'MAT_T' ; WTAB.'CONVECTION' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'CONVECTION' ; 'SI' WTAB.'CONVECTION' ; WTAB.'MOD_CON' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'CONVECTION'; WTAB.'MAT_CON' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_CON'; 'FINSI'; WTAB.'RAYO' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'RAYONNEMENT' ; 'SI' WTAB.'RAYO' ; WTAB.'MOD_RAY' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'RAYONNEMENT'; WTAB.'MAT_RAY' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_RAY'; 'FINSI'; WTAB.'CONDUCTION' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'CONDUCTION' ; 'SI' WTAB.'CONDUCTION' ; WTAB.'MOD_COND' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'CONDUCTION'; WTAB.'MAT_COND' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_COND'; 'FINSI'; WTAB.'SOURCE_Q' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'SOURCE' ; 'SI' WTAB.'SOURCE_Q' ; WTAB.'MOD_SOQ' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'SOURCE'; WTAB.'MAT_SOQ' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_SOQ'; 'FINSI'; 'SINON' ; 'SI' WTAB.'THM1' ; WTAB.'MOD_THM' = 'EXTR' mod0 'FORM' 'THERMOHYDRIQUE'; WTAB.'MAT_THM' = 'REDU' mat0 WTAB.'MOD_THM'; WTAB.'MOD_T' = WTAB.'MOD_THM' ; WTAB.'MAT_T' = WTAB.'MAT_THM' ; WTAB.'MOD_TOT' = WTAB.'MOD_T' ; WTAB.'MAT_TOT' = WTAB.'MAT_T' ; WTAB.'CONVECTION' = 'EXISTE' mod0 'MATE' 'CONVECTION' ; 'SI' WTAB.'CONVECTION' ; WTAB.'MOD_CON' = 'EXTR' mod0 'MATE' 'CONVECTION'; WTAB.'MAT_CON' = 'REDU' mat0 WTAB.'MOD_CON'; WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_CON'; WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_CON'; 'FINSI'; WTAB.'RAYO' = 'EXISTE' mod0 'MATE' 'RAYONNEMENT' ; 'SI' WTAB.'RAYO' ; WTAB.'MOD_RAY' = 'EXTR' mod0 'MATE' 'RAYONNEMENT'; WTAB.'MAT_RAY' = 'REDU' mat0 WTAB.'MOD_RAY'; WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_RAY'; WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_RAY'; 'FINSI'; WTAB.'CONVECTION' = 'EXISTE' mod0 'MATE' 'CONDUCTION' ; 'SI' WTAB.'CONVECTION' ; WTAB.'MOD_COND' = 'EXTR' mod0 'MATE' 'CONDUCTION'; WTAB.'MAT_COND' = 'REDU' mat0 WTAB.'MOD_COND'; WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_COND'; WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_COND'; 'FINSI'; WTAB.'SOURCE_Q' = 'EXISTE' mod0 'MATE' 'SOURCE' ; 'SI' WTAB.'SOURCE_Q' ; WTAB.'MOD_SOQ' = 'EXTR' mod0 'MATE' 'SOURCE'; WTAB.'MAT_SOQ' = 'REDU' mat0 WTAB.'MOD_SOQ'; WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_SOQ'; WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_SOQ'; 'FINSI'; 'FINSI'; 'FINSI'; * Formulation DIFFUSION : * On ajoute la formulation diffusion a la thermique pour TRANSNON : WTAB.'FOR_DIFF' = 'EXIS' mod0 'FORM' 'DIFFUSION' ; 'SI' WTAB.'FOR_DIFF' ; WTAB.'MOD_DIF' ='EXTR' mod0 'FORM' 'DIFFUSION' ; WTAB.'MAT_DIF' ='REDU' mat0 WTAB.'MOD_DIF' ; 'SI' WTAB.'THE1' ; WTAB.'MOD_THE' = WTAB.'MOD_THE' 'ET' WTAB.'MOD_DIF' ; WTAB.'MAT_THE' = WTAB.'MAT_THE' 'ET' WTAB.'MAT_DIF' ; WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ; WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_DIF' ; 'SINON' ; WTAB.'MOD_THE' = WTAB.'MOD_DIF' ; WTAB.'MAT_THE' = WTAB.'MAT_DIF' ; 'SI' WTAB.'THM1' ; WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ; WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_DIF' ; 'SINON' ; WTAB.'MOD_TOT' = WTAB.'MOD_DIF' ; WTAB.'MAT_TOT' = WTAB.'MAT_DIF' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; WTAB.'ADVECTION' = 'EXISTE' mod0 'MATE' 'ADVECTION' ; 'SI' WTAB.'ADVECTION' ; WTAB.'MOD_ADV' = 'EXTR' mod0 'MATE' 'ADVECTION'; WTAB.'MAT_ADV' = 'REDU' mat0 WTAB.'MOD_ADV'; 'FINSI'; * Formulation Metallurgie (T.L. en juin 2018) : WTAB.'FOR_METALLU' = 'EXIS' mod0 'FORM' 'METALLURGIE' ; 'SI' WTAB.'FOR_METALLU' ; WTAB.'MOD_MET' ='EXTR' mod0 'FORM' 'METALLURGIE'; WTAB.'MAT_MET' ='REDU' mat0 WTAB.'MOD_MET' ; WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_MET' ; WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_MET' ; 'FINS'; * Formulation CHANGEMENT_PHASE (CB215821 2019) : WTAB.'PHASE' = FAUX ; WTAB.'SOLUBILITE' = FAUX ; 'SI' ('EXIS' mod0 'FORM' 'CHANGEMENT_PHASE'); MOPHA='EXTR' mod0 'FORM' 'CHANGEMENT_PHASE' ; MAPHA='REDU' mat0 MOPHA ; 'SI' ('EXIS' MOPHA 'MATE' 'SOLUBILITE'); * Cas 'SOLUBILITE' WTAB.'SOLUBILITE' = VRAI ; MOSOL='EXTR' MOPHA 'MATE' 'SOLUBILITE' ; WTAB.'MOD_SOL' = MOSOL ; WTAB.'MAT_SOL' ='REDU' mat0 MOSOL ; 'SINO'; * Cas 'PARFAIT' WTAB.'PHASE' = VRAI ; MOPAR = 'EXTR' MOPHA 'MATE' 'PARFAIT' ; WTAB.'MOD_PHA' = MOPAR ; WTAB.'MAT_PHA' ='REDU' mat0 MOPAR ; 'FINS'; 'SI' ('EGA' ('TYPE' WTAB.'MOD_THE') 'MMODEL'); WTAB.'MOD_THE' = WTAB.'MOD_THE' 'ET' MOPHA ; WTAB.'MAT_THE' = WTAB.'MAT_THE' 'ET' MAPHA ; 'SINO'; WTAB.'MOD_THE' = MOPHA ; WTAB.'MAT_THE' = MAPHA ; 'FINS'; WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' MOPHA ; WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' MAPHA ; 'FINSI'; *------------------------- Indices pour UNPAS -------------------------* * Formulation MECANIQUE : WTAB.'MEC1' = 'EXISTE' mod0 'FORM' 'MECANIQUE' ; 'SI' WTAB.'MEC1' ; WTAB.'MOD_MEC' = 'EXTR' mod0 'FORM' 'MECANIQUE'; WTAB.'MAT_MEC' = 'REDU' mat0 WTAB.'MOD_MEC'; 'SI' ('EXISTE' mod0 'FORM' 'MELANGE'); 'SI' ('EXISTE' mod0 'MATE' 'PARALLELE'); MOPAL1 = 'EXTR' mod0 'MATE' 'PARALLELE' ; 'SI' ('EXISTE' MOPAL1 'FORM' 'MECANIQUE'); MAPAL1 = 'REDU' 'STRI' mat0 MOPAL1 ; WTAB.'MOD_MEC' = MOPAL1 'ET' WTAB.'MOD_MEC' ; WTAB.'MAT_MEC' = MAPAL1 'ET' WTAB.'MAT_MEC' ; 'FINSI' ; 'FINSI' ; 'FINSI'; 'FINSI'; * Formulation CONTACT : WTAB.'CONTACT' = 'EXIS' mod0 'FORM' 'CONTACT' ; 'SI' WTAB.'CONTACT' ; WTAB.'MODCONTA' = 'EXTR' mod0 'FORM' 'CONTACT'; MATCONTA = 'REDU' mat0 WTAB.'MODCONTA' ; NBCOMP = 'EXTR' MATCONTA 'COMP' ; 'SI' ('NEG' ('DIME' NBCOMP) 0) ; WTAB.'MATCONTA' = MATCONTA ; * A t-on la composante ADHE? WTAB.'ADHERENCE' = 'EXIS' ('EXTR' MATCONTA 'COMP') 'ADHE' ; 'FINSI' ; WTAB.'FROCOUL' = 'EXIS' WTAB.'MODCONTA' 'MATE' 'COULOMB' ; WTAB.'FROCABL' = 'EXIS' WTAB.'MODCONTA' 'MATE' 'FROCABLE' ; WTAB.'CAFROTTE' = WTAB.'FROCOUL' 'OU' WTAB.'FROCABL' ; 'FINSI'; * Formulation POREUX : WTAB.'POR1' = 'EXISTE' mod0 'FORM' 'POREUX' ; 'SI' WTAB.'POR1' ; WTAB.'MOD_POR' = 'EXTR' mod0 'FORM' 'POREUX'; WTAB.'MAT_POR' = 'REDU' mat0 WTAB.'MOD_POR'; 'FINSI'; * Formulation CHARGEMENT : 'SI' ('EXIS' mod0 'FORM' 'CHARGEMENT') ; WTAB.'MOD_CHA' = 'EXTR' mod0 'FORM' 'CHARGEMENT' ; WTAB.'MAT_CHA' = 'REDU' mat0 WTAB.'MOD_CHA' ; 'SI' ('EXIS' WTAB.'MOD_CHA' 'MATE' 'PRESSION') ; WTAB.'MOD_PRE' = 'EXTR' (WTAB.'MOD_CHA') 'COMP' 'PRESSION' ; * A t-on un MATE associe? MATZ = 'REDU' mat0 WTAB.'MOD_PRE' ; 'SI' ('NEG' ('DIME' ('EXTR' MATZ 'COMP')) 0) ; WTAB.'MAT_PRE' = MATZ ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * Formulation LIAISON : 'SI' ('EXISTE' mod0 'FORM' 'LIAISON'); WTAB.'MOD_LIA' = 'EXTR' mod0 'FORM' 'LIAISON' ; WTAB.'MAT_LIA' = 'REDU' mat0 WTAB.'MOD_LIA' ; 'FINSI' ; * Formulation NAVIER_STOKES WTAB.'NVSTNL' = ('EXISTE' mod0 'FORM' 'NAVIER_STOKES') 'ET' ('EXISTE' mod0 'MATE' 'NLIN') ; 'SI' WTAB. 'NVSTNL' ; WTAB.'MOD_NSL' = 'EXTR' mod0 'MATE' 'NLIN' ; WTAB.'MAT_NSL' = 'REDU' mat0 WTAB . 'MOD_NSL' ; 'FINSI' ; * FOR_MECA = VRAI : on doit resoudre de la MECANIQUE WTAB . 'FOR_MECA' = (WTAB.'MEC1') 'OU' (WTAB.'POR1') 'OU' ('EXIS' WTAB 'MOD_CHA') ; 'SI' (WTAB.'FOR_MECA') ; 'SI' (WTAB.'MEC1' 'ET' WTAB.'POR1') ; MO_TOT = WTAB.'MOD_MEC' 'ET' WTAB.'MOD_POR'; 'SINON'; 'SI' WTAB.'MEC1'; MO_TOT = WTAB.'MOD_MEC'; 'FINSI'; 'SI' WTAB.'POR1'; MO_TOT = WTAB.'MOD_POR'; 'FINSI'; 'FINSI'; 'SI' ('EXISTE' WTAB 'MOD_LIA') ; MO_TOT = MO_TOT 'ET' WTAB.'MOD_LIA'; 'FINSI' ; WTAB.'MO_TOT' = MO_TOT ; WTAB.'MOD_REF' = MO_TOT ; WTAB.'MA_TOT' = 'REDU' mat0 MO_TOT ; * Uniquement initialisation, sinon indice gere par UNPAS 'SI' ('NON' ('EXIS' WTAB 'MO_TOT_PREC')) ; WTAB.'MO_TOT_PREC' = MO_TOT ; 'FINSI' ; * Non-LOCal : * On verifie que l'on a bien un seul type de formulation non locale lognlmo = 'EXIS' MO_TOT 'NON_LOCAL' 'MOYE' ; lognlsb = 'EXIS' MO_TOT 'NON_LOCAL' 'SB ' ; lognlhe = 'EXIS' MO_TOT 'NON_LOCAL' 'HELM' ; WTAB.'NLOC' = lognlmo 'OU' lognlsb 'OU' lognlhe ; 'SI' WTAB.'NLOC' ; 'SI' ((lognlmo 'ET' lognlsb) 'OU' (lognlsb 'ET' lognlhe) 'OU' (lognlhe 'ET' lognlmo)) ; 'ERREUR' 'On ne peut pas avoir deux formulations non locales differentes' ; 'FINSI' ; * Cas 'MOYE' 'SI' lognlmo ; WTAB.'NON_LOCAL' = 'MOT' 'MOYE' ; 'FINSI' ; * Cas 'SB' 'SI' lognlsb ; WTAB.'NON_LOCAL' = 'MOT' 'SB' ; 'FINSI' ; * Cas 'HELM' 'SI' lognlhe ; WTAB.'NON_LOCAL' = 'MOT' 'HELM' ; 'FINSI' ; WTAB.'NLOC_MODL' = 'EXTR' MO_TOT 'NON_LOCAL' WTAB.'NON_LOCAL' ; 'SI' lognlsb ; MOD_SB = WTAB.'NLOC_MODL' ; CHM_1 = 'MANU' 'CHML' MOD_SB 'LONG' 1.0 'STRESSES' 'TYPE' 'CARACTERISTIQUES' ; CHM_L = 'INTG' 'ELEM' MOD_SB CHM_1 'LONG' ; CHM_L = 'CHAN' 'COMP' 'LONG' CHM_L ; CHM_L = 'CHAN' 'STRESSES' MOD_SB CHM_L ; TAIL1 = CHM_L ** (1. / ('VALE' 'DIME')) ; FTCH = 'EXCO' WTAB.'MA_TOT' 'SBFT' 'SBFT' ; FTCH = 'CHAN' 'STRESSES' MOD_SB FTCH ; MALVIA = TAIL1 '+' FTCH ; WTAB.'NLOC_SB_REGU' = 'CHAN' MALVIA 'TYPE' 'VARIABLES INTERNES' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINP' TPASA1 ;