* PAS_MODL PROCEDUR MB234859 25/02/21 21:18:06 12167
************************************************************************
* Cette procedure initialise ou met a jour les indices relatifs aux
* modeles de la table WTABLE de PASAPAS, ainsi que les caracteristiques
* associees.
*
* Pour plus de details, voir la notice.
*
************************************************************************
WTAB = TPASA1.'WTABLE' ;
*
'
SI'
('
NON'
(('
EXIS' WTAB 'MODELE'
) '
ET'
('
EXIS' WTAB 'CARACTERISTIQUES'
))); '
ERRE' '
***** Il manque le MODELE
ou les CARACTERISTIQUES
dans Wtable'
;'FINSI' ;
*
* Modele global :
mod0 = WTAB.'MODELE' ;
* Le modele a-t-il ete actualise
'
SI'
('
EXIS' WTAB 'MODELE_COURANT'
) ; 'SI' ('EGA' mod0 (WTAB.'MODELE_COURANT')) ;
'FINSI' ;
'FINSI' ;
WTAB.'MODELE_COURANT' = mod0 ;
* Caracteristiques :
mat0 = WTAB.'CARACTERISTIQUES' ;
*mess '***** Appel a PAS_MODL ' ;
*-----------------------------------------------------------------------
* Indices pour TRANSNON/TRANSLIN/DUPONT2
*-----------------------------------------------------------------------
WTAB.'THE1'
= '
EXIS' mod0 '
FORM' 'THERMIQUE'
;WTAB.'THM1'
= '
EXIS' mod0 '
FORM' 'THERMOHYDRIQUE'
;WTAB.'FOR_DIFF'
= '
EXIS' mod0 '
FORM' 'DIFFUSION'
;WTAB.'FOR_METALLU'
= '
EXIS' mod0 '
FORM' 'METALLURGIE'
;WTAB.'FOR_PHASE'
= '
EXIS' mod0 '
FORM' 'CHANGEMENT_PHASE'
;WTAB.'FOR_THER' = WTAB.'THE1' 'OU' WTAB.'THM1' ;
*
'SI' (WTAB.'FOR_THER' 'OU' WTAB.'FOR_DIFF' 'OU' WTAB.'FOR_METALLU' 'OU' WTAB.'FOR_PHASE') ;
'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' ;
'FINSI' ;
*
'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' ;
*
'SI' WTAB.'FOR_DIFF' ;
WTAB.'MOD_DIF'
='
EXTR' mod0 '
FORM' 'DIFFUSION'
; WTAB.'MAT_DIF'
='
REDU' mat0 WTAB.'MOD_DIF'
; WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ;
WTAB.'MOD_THE' = WTAB.'MOD_THE' 'ET' WTAB.'MOD_DIF' ;
WTAB.'MAT_THE' = WTAB.'MAT_THE' 'ET' WTAB.'MAT_DIF' ;
'FINSI' ;
*
WTAB.'CONVECTION'
= 'EXISTE' mod0 '
MATE' 'CONVECTION'
; 'SI' WTAB.'CONVECTION' ;
WTAB.'MOD_CON'
= '
EXTR' mod0 '
MATE' 'CONVECTION'
; WTAB.'MAT_CON'
= '
REDU' mat0 WTAB.'MOD_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'
; 'FINSI';
*
WTAB.'CONDUCTION'
= 'EXISTE' mod0 '
MATE' 'CONDUCTION'
; 'SI' WTAB.'CONDUCTION' ;
WTAB.'MOD_COND'
= '
EXTR' mod0 '
MATE' 'CONDUCTION'
; WTAB.'MAT_COND'
= '
REDU' mat0 WTAB.'MOD_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'
; '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) :
'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' ;
'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 ;
WTAB.'MOD_PHA' = MOPAR ;
WTAB.'MAT_PHA'
='
REDU' mat0 MOPAR
; 'FINS';
WTAB.'MOD_THE' = WTAB.'MOD_THE' 'ET' MOPHA ;
WTAB.'MAT_THE' = WTAB.'MAT_THE' 'ET' MAPHA ;
WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' MOPHA ;
'FINSI';
WTAB.'MAT_TOT'
= '
REDU' mat0 WTAB.'MOD_TOT'
;
'FINSI' ;
*-----------------------------------------------------------------------
* Indices pour UNPAS
*-----------------------------------------------------------------------
WTAB.'MEC1'
= '
EXIS' mod0 '
FORM' 'MECANIQUE'
;WTAB.'POR1'
= '
EXIS' mod0 '
FORM' 'POREUX'
;WTAB.'FCHA'
= '
EXIS' mod0 '
FORM' 'CHARGEMENT'
;WTAB.'FLIA'
= '
EXIS' mod0 '
FORM' 'LIAISON'
;WTAB.'CONTACT'
= '
EXIS' mod0 '
FORM' 'CONTACT'
;WTAB.'FOR_MECA' = WTAB.'MEC1' 'OU' WTAB.'POR1' 'OU' WTAB.'FCHA' ;
*
'SI' (WTAB.'FOR_MECA' 'OU' WTAB.'FLIA' 'OU' WTAB.'CONTACT') ;
*
WTAB.'MOD_SPE'
= '
VIDE' 'MMODEL'
; WTAB.'MO_TOT'
= '
VIDE' 'MMODEL'
;*
'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';
WTAB.'MO_TOT' = WTAB.'MO_TOT' 'ET' WTAB.'MOD_MEC' ;
'FINSI';
*
'SI' WTAB.'POR1' ;
WTAB.'MOD_POR'
= '
EXTR' mod0 '
FORM' 'POREUX'
; WTAB.'MAT_POR'
= '
REDU' mat0 WTAB.'MOD_POR'
; WTAB.'MO_TOT' = WTAB.'MO_TOT' 'ET' WTAB.'MOD_POR' ;
'FINSI';
*
* Initialisation des comportements d'apres le modele
'
SI'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'PLASTIQUE'
); WTAB.'PLASTIQUE' = VRAI;
WTAB.'IPLAVI' = VRAI;
'FINSI';
'
SI'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'PLASTIQUE_ENDOM'
); WTAB.'PLASTIQUE' = VRAI;
WTAB.'ENDOMMAGEMENT' = VRAI;
WTAB.'IPLAVI' = VRAI;
MODZ
= '
EXTR' WTAB.'MO_TOT' '
MATE' 'PLASTIQUE_ENDOM'
; WTAB.'MOD_SPE' = WTAB.'MOD_SPE' 'ET' MODZ ;
'FINSI';
'
SI'
(('EXISTE' WTAB.'MO_TOT' '
MATE' 'VISCOPLASTIQUE'
) '
OU'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'FLUAGE'
)); WTAB.'VISCOPLASTIQUE' = VRAI;
WTAB.'IPLAVI' = VRAI;
'FINSI';
'
SI'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'VISCODOMMAGE'
); WTAB.'VISCODOMMAGE' = VRAI;
WTAB.'IPLAVI' = VRAI;
MODZ
= '
EXTR' WTAB.'MO_TOT' '
MATE' 'VISCODOMMAGE'
; WTAB.'MOD_SPE' = WTAB.'MOD_SPE' 'ET' MODZ ;
'FINSI';
'
SI'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'ENDOMMAGEABLE'
); WTAB.'ENDOMMAGEMENT' = VRAI;
WTAB.'IPLAVI' = VRAI;
MODZ
= '
EXTR' WTAB.'MO_TOT' '
MATE' 'ENDOMMAGEABLE'
; WTAB.'MOD_SPE' = WTAB.'MOD_SPE' 'ET' MODZ ;
'FINSI';
'
SI'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'ENDOMMAGEMENT'
) ; WTAB.'ENDOMMAGEMENT' = VRAI;
WTAB.'IPLAVI' = VRAI;
'FINSI';
'
SI'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'NON_LINEAIRE'
) ; WTAB.'NON_LINEAIRE' = VRAI;
WTAB.'IPLAVI' = VRAI;
WTAB.'UTILISATEUR'
= 'EXISTE' WTAB.'MO_TOT' '
MATE' 'UTILISATEUR'
; 'FINSI';
'
SI'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'VISCO_EXTERNE'
) ; WTAB.'VISCO_EXTERNE' = VRAI;
WTAB.'IPLAVI' = VRAI;
'FINSI';
'
SI'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'CERAMIQUE'
); WTAB.'CERAMIQUE' = VRAI;
WTAB.'IPLAVI' = VRAI;
'FINSI';
'
SI'
(('EXISTE' WTAB.'MO_TOT' '
MATE' 'MODAL'
) '
OU'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'STATIQUE'
)); WTAB.'MODAL' = VRAI;
WTAB.'IPLAVI' = VRAI;
'FINSI';
'
SI'
('EXISTE' WTAB.'MO_TOT' '
MATE' 'IMPEDANCE'
); WTAB.'IMPEDANCE' = VRAI;
WTAB.'IPLAVI' = VRAI;
'FINSI';
*
WTAB.'MO_VARI'
= '
DIFF' WTAB.'MO_TOT' WTAB.'MOD_SPE'
;*
* Creation, si besoin, du chargement de flux neutronique pour le modele mistral
'
SI'
('
EXIS' WTAB.'MO_TOT' '
MATE' 'MISTRAL'
); 'SI' ('NON' ('EXISTE' (WTAB.'CHARGEMENT') 'FI ')) ;
MAI_TOT
= '
EXTR' WTAB.'MO_TOT' 'MAIL'
; FIZER
= '
MANU' '
CHPO' MAI_TOT
1 'FI '
0. 'NATURE' 'DIFFUS'
; WTAB.'CHARGEMENT'
= WTAB.'CHARGEMENT' '
ET'
('
CHAR' 'FI' FIZER
'FINSI';
'FINSI';
* Creation, si besoin, du chargement de densite de fissions pour gatt_monerie & uo2
'
SI'
(('
EXIS' WTAB.'MO_TOT' '
MATE' 'UO2'
) '
OU'
('
EXIS' WTAB.'MO_TOT' '
MATE' 'GATT_MONERIE'
) ) ; 'SI' ('NON' ('EXISTE' (WTAB.'CHARGEMENT') 'DFIS')) ;
MAI_TOT
= '
EXTR' WTAB.'MO_TOT' 'MAIL'
; DFISZER
= '
MANU' '
CHPO' MAI_TOT
1 'DFIS'
0. 'NATURE' 'DIFFUS'
; WTAB.'CHARGEMENT'
= WTAB.'CHARGEMENT' '
ET'
('
CHAR' 'DFIS' DFISZER
'FINSI';
'FINSI';
*
* Non LOCale
lognlmo
= '
EXIS' mod0 'NON_LOCAL' 'MOYE'
; lognlsb
= '
EXIS' mod0 'NON_LOCAL' 'SB '
; lognlhe
= '
EXIS' mod0 'NON_LOCAL' 'HELM'
; WTAB.'
NLOC'
= lognlmo '
OU' lognlsb '
OU' lognlhe
;
* Verifier qu'il n'y a qu'un seul type de formulation non locale
'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' mod0 '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' 'STRESSES' MOD_SB CHM_L
; TAIL1
= CHM_L
** (1.
/ ('
VALE' '
DIME'
)) ; FTCH
= '
EXCO' mat0 'SBFT' 'SBFT'
; FTCH
= '
CHAN' 'STRESSES' MOD_SB FTCH
; MALVIA = TAIL1 '+' FTCH ;
WTAB.'NLOC_SB_REGU'
= '
CHAN' MALVIA '
TYPE' 'VARIABLES INTERNES'
; 'FINSI' ;
'FINSI' ;
*
'SI' WTAB.'FCHA' ;
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'
; WTAB.'MAT_PRE' = MATZ ;
'FINSI' ;
'FINSI' ;
WTAB.'MO_VARI' = WTAB.'MO_VARI' 'ET' WTAB.'MOD_CHA' ;
'FINSI' ;
* Formulation LIAISON
'SI' WTAB.'FLIA' ;
WTAB.'MOD_LIA'
= '
EXTR' mod0 '
FORM' 'LIAISON'
; WTAB.'MAT_LIA'
= '
REDU' mat0 WTAB.'MOD_LIA'
; WTAB.'MO_TOT' = WTAB.'MO_TOT' 'ET' WTAB.'MOD_LIA' ;
WTAB.'MO_VARI' = WTAB.'MO_VARI' 'ET' WTAB.'MOD_LIA' ;
'FINSI' ;
*
* Formulation CONTACT :
'SI' WTAB.'CONTACT' ;
WTAB.'MODCONTA'
= '
EXTR' mod0 '
FORM' 'CONTACT'
; MATCONTA
= '
REDU' mat0 WTAB.'MODCONTA'
; '
SI'
('
NEG'
('
DIME' LSTCOMP
) 0) ; WTAB.'MATCONTA' = MATCONTA ;
* A t-on la composante ADHE?
WTAB.'ADHERENCE'
= '
EXIS' LSTCOMP 'ADHE'
; 'FINSI' ;
WTAB.'FROCOUL'
= '
EXIS' WTAB.'MODCONTA' '
MATE' 'COULOMB'
; WTAB.'FROCABL'
= '
EXIS' WTAB.'MODCONTA' '
MATE' 'FROCABLE'
; WTAB.'CAFROTTE' = WTAB.'FROCOUL' 'OU' WTAB.'FROCABL' ;
'FINSI';
*
* Informations pour COMP
WTAB.'LPAR0'
= '
EXTR' WTAB.'MO_TOT' '
PARA'
; WTAB.'PARA_EXTE'
= ('
NEG'
('
DIME' WTAB.'LPAR0'
) 0) ;*
WTAB.'MA_TOT'
= '
REDU' mat0 WTAB.'MO_TOT'
; WTAB.'LDEVA'
= '
EXTR' WTAB.'MA_TOT' 'DEVA'
; LDEVA_DI
= '
DIME' WTAB.'LDEVA'
; WTAB.'MATVAR' = ('NEG' LDEVA_DI 0) ;
'SI' WTAB.'MATVAR' ;
'SI' ('NON' (('EGA' LDEVA_DI 1) 'ET'
('
EGA'
('
EXTR' WTAB.'LDEVA'
1) 'ALPH'
) )); WTAB.'RECARI'= VRAI;
'FINSI';
'SI' WTAB.'FREQUENTIEL' ; WTAB.'MATVAR'= FAUX; 'FINSI';
'FINSI';
*
* Uniquement initialisation, sinon indice gere par UNPAS
'
SI'
('
NON'
('
EXIS' WTAB 'MO_TOT_PREC'
)) ; WTAB.'MO_TOT_PREC' = WTAB.'MO_TOT' ;
'FINSI' ;
*
'FINSI';
*
* Formulation NAVIER_STOKES
WTAB.'NVSTNL'
= ('EXISTE' mod0 '
FORM' 'NAVIER_STOKES'
)'SI' WTAB. 'NVSTNL' ;
WTAB.'MAT_NSL'
= '
REDU' mat0 WTAB . 'MOD_NSL'
;'FINSI' ;
*
'FINP' TPASA1 ;