$$$$ PAS_INIT * PAS_INIT PROCEDUR SP204843 26/04/14 21:15:02 12512 'DEBPROC' PAS_INIT PRECED*'TABLE' ; ************************************************************************ * Procedure qui renseigne les champs dans la table CONTINUATION. * et qui creee les tables ou seront sauves les resultats. * * Trois cas sont a distinguer : * - en cas d'un premier appel a PASAPAS, CONTINUATION n'existe pas * et elle est creee et completee de facon a contenir les champs * a l'instant TEMPS0 = 0. * - en cas de reprise d'un calcul, la procedure PAS_DEFA s'est chargee * de verifier que cet instant est bien present dans la liste des temps * calcules. Les champs resultats pour les instants posterieurs a cet * instant de reprise ont ete supprimes des tables de sauvegardes. * TEMPS0 = PRECED.'TEMPS'. NSOR et il faut renseigner CONTINUATION de * facon a ce qu'elle contienne les champs a cet instant. * - en cas de poursuite d'un calcul, on repart du dernier pas calcule. * La table CONTINUATION est redefinie dans le cas ou le modele * aurait change (cas de la fabrication additive ou des elements ont pu * etre ajoutes entre deux appels de PASAPAS). * * Entree : Table PRECED transmises a PASAPAS * Sortie : Aucune mais la table de PASAPAS contient desormais * - des tables pour stocker les resultats de calculs * - la table CONTINUATION qui contient les champs a TEMPS0 * - la table ESTIMATION qui contiendra les champs a TI ************************************************************************ WTAB = PRECED.'WTABLE'; TABSAUV = WTAB.'TABSAUV'; inouv = 'NON' ('EXIS' PRECED 'CONTINUATION') ; 'SI' inouv ; PRECED.'CONTINUATION' = 'TABLE'; 'FINSI'; conti = PRECED.'CONTINUATION'; ************************************************************************ * Initialisations de l'instant de calcul ************************************************************************ NSOR = WTAB.'NSOR' ; 'SI' ('EXIS' PRECED 'TEMPS') ; TEMP0 = PRECED.'TEMPS'. NSOR; 'SINON'; 'SI' WTAB.'FREQUENTIEL' ; 'REPETER' BTFRE ; TI = 'EXTRAIRE' WTAB.'TEMPS_CALCULES' &BTFRE ; 'SI' (TI '>' 0.D0) ; TEMP0 = TI ; 'QUITTER' BTFRE ; 'FINSI' ; 'FIN' BTFRE ; 'SINON' ; TEMP0 = 0.D0 ; 'FINSI' ; PRECED.'TEMPS' = 'TABLE'; PRECED.'TEMPS'. 0 = TEMP0 ; 'FINSI'; conti.'TEMPS' = TEMP0 ; ************************************************************************ * Initialisation indices 'MODELES' de la table de sortie ************************************************************************ 'SI' WTAB.'CHAR_MODE' ; * Indices MODELES de la table de sortie : 'SI' ('NON' ('EXIS' PRECED 'MODELES')) ; PRECED.'MODELES' = 'TABLE' ; PRECED.'MODELES' . 0 = WTAB.'MODELE' ; * PRECED.'MAILLAGES' = 'TABLE' ; * PRECED.'MAILLAGES' . 0 = 'EXTR' (PRECED.'MODELES' . 0) 'MAIL' ; 'FINSI' ; conti.'MODELES' = PRECED.'MODELES'. NSOR ; * conti.'MAILLAGES' = PRECED.'MAILLAGES' . NSOR ; 'FINSI' ; ************************************************************************ * Initialisations pour la THERMIQUE ************************************************************************ 'SI' WTAB.'FOR_THER'; * * - Initialisation de la temperature 'SI' ('EXISTE' PRECED 'TEMPERATURES'); TH_COUR = PRECED.'TEMPERATURES'. NSOR; 'SI' (NSOR '>EG' 2) ; WTAB.'TET0' = PRECED.'TEMPERATURES'. (NSOR - 2); 'FINSI'; 'SINON'; 'SI' ('EXIS' WTAB.'MAT_T' 'TINI') ; MOTSTEMP = 'EXTR' WTAB.'MOD_T' 'DEPL' ; DDDD = VIDE 'MCHAML' ; 'REPE' BMO ('DIME' MOTSTEMP) ; MOTEMPI = 'EXTR' MOTSTEMP &BMO ; DDDD = DDDD ET ('EXCO' WTAB.'MAT_T' 'TINI' MOTEMPI) ; 'FIN' BMO ; 'SINO' ; DDDD = 'ZERO' WTAB.'MOD_T' 'TEMPERAT' ; 'FINS' ; TH_COUR = 'CHANGER' 'CHPO' WTAB.'MOD_T' DDDD; PRECED.'TEMPERATURES' = 'TABLE'; PRECED.'TEMPERATURES'. 0 = TH_COUR; 'FINSI'; conti.'TEMPERATURES' = 'CHAN' 'ATTRIBUT' TH_COUR 'NATURE' 'DIFFUS'; * * - Initialisation des reactions 'SI' ('NON' ('EXIS' PRECED 'REACTIONS_THERMIQUES')) ; 'SI' WTAB.'CHAR_BLOT' ; BLOTHER = 'TIRE' WTAB.'BLOCAGES_THERMIQUES' 'BLOT' TEMP0 ; 'SINON' ; BLOTHER = WTAB.'BLOCAGES_THERMIQUES' ; 'FINSI' ; QTH_COUR = 'REAC' BLOTHER conti.'TEMPERATURES' ; PRECED.'REACTIONS_THERMIQUES' = 'TABLE' ; PRECED.'REACTIONS_THERMIQUES' . 0 = QTH_COUR ; 'FINS' ; conti.'REACTIONS_THERMIQUES' = PRECED.'REACTIONS_THERMIQUES'. NSOR ; * * Indice 'TEMPERATURES_APPORT' de la table de sortie : 'SI' WTAB.'CHAR_MODE' ; 'SI' ('NON' ('EXIS' PRECED 'TEMPERATURES_APPORT')) ; PRECED.'TEMPERATURES_APPORT' = TABLE ; NBT1 = 'DIME' PRECED.'TEMPERATURES' ; 'REPE' BTAPP1 NBT1 ; IBT1 = &BTAPP1 - 1 ; PRECED.'TEMPERATURES_APPORT' . IBT1 = PRECED.'TEMPERATURES' . IBT1 'EXCO' 'T' 'TAPP' ; 'FIN' BTAPP1 ; 'FINSI' ; conti.'TEMPERATURES_APPORT' = PRECED.'TEMPERATURES_APPORT'. NSOR ; 'FINSI' ; * 'FINS'; ************************************************************************ * Initialisations pour la MECANIQUE ************************************************************************ 'SI' WTAB.'FOR_MECA' ; MO_TOT = WTAB.'MO_TOT'; * * - Initialisation du deplacement 'SI' ('NON' ('EXIS' PRECED 'DEPLACEMENTS')); DDDD = 'ZERO' MO_TOT 'DEPLACEM'; DEP_COUR = 'CHANGER' 'CHPO' MO_TOT DDDD; 'DETRUIRE' DDDD; PRECED.'DEPLACEMENTS' = 'TABLE'; PRECED.'DEPLACEMENTS'. 0 = DEP_COUR; 'FINSI'; conti.'DEPLACEMENTS' = PRECED.'DEPLACEMENTS'. NSOR; * * - Initialisation des contraintes 'SI' ('NON' ('EXIS' PRECED 'CONTRAINTES')); SIG_COUR = 'ZERO' MO_TOT 'CONTRAIN'; PRECED.'CONTRAINTES' = 'TABLE'; PRECED.'CONTRAINTES'. 0 = SIG_COUR; 'SINON'; SIG_COUR = PRECED.'CONTRAINTES'. NSOR ; 'SI' WTAB.'GRANDS_DEPLACEMENTS' ; SIG_COUR = 'CONF' SIG_COUR MO_TOT ; 'FINSI'; 'FINSI'; conti.'CONTRAINTES' = SIG_COUR ; * * - Initialisation des vitesses 'SI' (WTAB.'DYNAMIQUE' 'OU' ('EXISTE' WTAB 'MOD_LIA')); 'SI' ('NON' ('EXISTE' PRECED 'VITESSES')) ; DDDD = 'ZERO' MO_TOT 'DEPLACEMENTS'; VIT_COUR = 'CHANGER' 'CHPO' MO_TOT DDDD; 'DETRUIRE' DDDD; PRECED.'VITESSES' = 'TABLE'; PRECED.'VITESSES'. 0 = VIT_COUR; 'FINSI'; conti.'VITESSES' = PRECED.'VITESSES'. NSOR; 'FINSI'; * * - Initialisation des accelerations 'SI' WTAB.'DYNAMIQUE'; 'SI' ('NON' ('EXISTE' PRECED 'ACCELERATIONS')) ; DDDD = 'ZERO' MO_TOT 'DEPLACEMENTS'; ACC_COUR = 'CHANGER' 'CHPO' MO_TOT DDDD; 'DETRUIRE' DDDD; PRECED.'ACCELERATIONS' = 'TABLE'; PRECED.'ACCELERATIONS'. 0 = ACC_COUR; 'FINSI'; conti.'ACCELERATIONS' = PRECED.'ACCELERATIONS'. NSOR; 'FINSI'; * * - Initialisation des reactions 'SI' ('NON' ('EXIS' PRECED 'REACTIONS')); 'SI' WTAB.'CHAR_BLOM' ; BLOMECA = 'TIRE' WTAB.'BLOCAGES_MECANIQUES' 'BLOM' TEMP0 ; 'SINON' ; BLOMECA = WTAB.'BLOCAGES_MECANIQUES' ; 'FINSI' ; REA_COUR = 'REAC' BLOMECA conti.'DEPLACEMENTS'; PRECED.'REACTIONS' = 'TABLE' ; PRECED.'REACTIONS' . 0 = REA_COUR; 'FINSI'; conti.'REACTIONS' = PRECED.'REACTIONS'. NSOR; * 'SI' WTAB.'IPLAVI'; * * - Initialisation des variables internes 'SI' ('NON' ('EXIS' PRECED 'VARIABLES_INTERNES')) ; VAR_COUR = 'ZERO' MO_TOT 'VARINTER'; PRECED.'VARIABLES_INTERNES' = 'TABLE'; PRECED.'VARIABLES_INTERNES'. 0 = VAR_COUR; 'FINSI'; conti.'VARIABLES_INTERNES' = PRECED.'VARIABLES_INTERNES'. NSOR ; * * - Initialisation des deformations inelastiques 'SI' ('EXISTE' PRECED 'DEFORMATIONS_INELASTIQUES'); DEI_COUR = PRECED.'DEFORMATIONS_INELASTIQUES' . NSOR; 'SINON'; 'SI' inouv ; DEI_COUR = 'ZERO' MO_TOT 'DEFINELA'; 'SI' ('EXIS' TABSAUV 'DEFIN'); 'SI' TABSAUV.'DEFIN'; PRECED.'DEFORMATIONS_INELASTIQUES' = 'TABLE'; PRECED.'DEFORMATIONS_INELASTIQUES'. 0 = DEI_COUR; 'FINSI'; 'FINSI'; 'SINON' ; DEI_COUR = conti.'DEFORMATIONS_INELASTIQUES' ; 'FINSI' ; 'FINSI'; conti.'DEFORMATIONS_INELASTIQUES' = DEI_COUR; * 'FINSI'; * * - Initialisation des deformations totales 'SI' ('EXISTE' PRECED 'DEFORMATIONS'); DEF_COUR = PRECED.'DEFORMATIONS'. NSOR ; 'SI' WTAB.'GRANDS_DEPLACEMENTS' ; DEF_COUR = 'CONF' DEF_COUR MO_TOT ; 'FINSI'; 'SINON'; 'SI' inouv ; DEF_COUR = 'ZERO' MO_TOT 'DEFORMATIONS'; 'SI' ('EXIS' TABSAUV 'DEFTO'); 'SI' TABSAUV.'DEFTO'; PRECED.'DEFORMATIONS' = 'TABLE'; PRECED.'DEFORMATIONS' . 0 = DEF_COUR; 'FINSI'; 'FINSI'; 'SINON' ; DEF_COUR = conti.'DEFORMATIONS' ; 'FINSI' ; 'FINSI'; conti.'DEFORMATIONS' = DEF_COUR; * * - Initialisation des deformations apport 'SI' ('EXISTE' PRECED 'DEFORMATIONS_APPORT'); DEF_APPO = PRECED.'DEFORMATIONS_APPORT'. NSOR ; 'SINON'; 'SI' inouv; DEF_APPO = 'ZERO' MO_TOT 'DEFORMATIONS'; 'SI' ('EXIS' TABSAUV 'DEFAP'); 'SI' TABSAUV.'DEFAP'; PRECED.'DEFORMATIONS_APPORT' = 'TABLE'; PRECED.'DEFORMATIONS_APPORT' . 0 = DEF_APPO; 'FINSI'; 'FINSI' ; 'SINON' ; DEF_APPO = conti.'DEFORMATIONS_APPORT' ; 'FINSI'; 'FINSI'; conti.'DEFORMATIONS_APPORT' = DEF_APPO; * - Initialisation pour un tracking 'SI' ('EXIS' WTAB.'MODELE' 'MATE' 'EFEM'); 'SI' ('EXIS' PRECED 'TRACKING'); 'SI' PRECED.'TRACKING' ; 'SI' ('NON' ('EXIS' PRECED 'PROOTS')); PRECED.'PROOTS' = 'TABLE'; PRECED.'PROOTS'. 0 = 0.; 'FINSI'; 'SI' ('NON' ('EXIS' PRECED 'EROOTS')); PRECED.'EROOTS' = 'TABLE'; PRECED.'EROOTS'. 0 = 0.; 'FINSI'; 'SI' ('NON' ('EXIS' PRECED 'NROOTS')); PRECED.'NROOTS' = 0; 'FINSI'; 'SI' ('NON' ('EXIS' PRECED 'TABISO')); PRECED.'TABISO' = 'TABLE'; PRECED.'TABISO'. 0 = 0.; 'FINSI'; 'SI' ('NON' ('EXIS' PRECED 'RESTH')); PRECED.'RESTH' = 'TABLE'; PRECED.'RESTH'. 0 = 0.; 'FINSI'; 'SI' ('NON' ('EXIS' PRECED 'ISOTEST')); PRECED.'ISOTEST' = 'TABLE'; PRECED.'ISOTEST'. 0 = 0.; 'FINSI'; 'SI' ('NON' ('EXIS' PRECED 'ISOTOT')); PRECED.'ISOTOT' = 'TABLE'; PRECED.'ISOTOT'. 0 = 0.; 'FINSI'; 'SI' ('NON' ('EXIS' PRECED 'MESH_ISO')); PRECED.'MESH_ISO' = 'TABLE'; PRECED.'MESH_ISO'. 0 = 0.; 'FINSI'; 'SI' ('NON' ('EXIS' PRECED 'MESH')); PRECED.'MESH' = 'TABLE'; PRECED.'MESH'. 0 = 0.; 'FINSI'; 'FINSI'; 'FINSI'; 'FINSI'; * * - Initialisation pour le non-local HELM 'SI' WTAB.'NLOC' ; 'SI' ('EGA' WTAB.'NON_LOCAL' 'HELM'); WTAB.'HELMHOLTZ' = 'TABLE' ; MOLVIA = 'EXTR' WTAB.'NLOC_MODL' 'NLOC' ; NHELM = 'DIME' MOLVIA ; WTAB.'HELMHOLTZ' . 'N_VARI_NL'= NHELM ; GEOHELM = 'EXTR' WTAB.'NLOC_MODL' 'MAIL' ; MAHELM = 'REDU' WTAB.'CARACTERISTIQUES' WTAB.'NLOC_MODL' ; * liste des parametres variables DDVA = 'EXTR' MAHELM 'COVA' ; WTAB.'HELMHOLTZ' . 'NLOC_COVA'= DDVA ; 'REPE' BH NHELM ; WTAB.'HELMHOLTZ'. &BH = 'TABLE' ; LEMO = 'EXTR' MOLVIA &BH ; chaih1=chai 'pas_init: Helmholtz pour :' LEMO; * mess chaih1; WTAB.'HELMHOLTZ'. &BH. 'NOM' = LEMO ; 'SI' ('EXIS' DDVA LEMO) ; WTAB.'HELMHOLTZ'. &BH. 'CTE' = FAUX ; 'SINON' ; WTAB.'HELMHOLTZ'. &BH. 'CTE' = VRAI ; 'FINSI' ; LEMOD = 'MODE' GEOHELM 'THERMIQUE' 'ANISOTROPE' ; WTAB.'HELMHOLTZ'. &BH . 'H_MODELE' = LEMOD ; * non linearite par defaut des helmholtz (sellier ) WTAB.'HELMHOLTZ'. &BH . 'LINEAIRE' = FAUX ; 'FIN' BH ; 'FINSI'; 'FINSI'; * * En cas de chargement de deformations initialisation 'SI' WTAB.'CHAR_DEFI'; WTAB.'DEFOR1' = 'TIRE' WTAB.'CHARGEMENT' 'DEFI' TEMP0 ; 'FINSI'; * * En presence de THERMIQUE (CHARGEMENT ou FORMULATION) initialisation de TEMPERATURE_REFERENCE 'SI' WTAB.'ITHER' ; * * En cas de chargement thermique initialisation 'SI' WTAB.'CHAR_THE'; WTAB.'TET1' = 'TIRE' WTAB.'CHARGEMENT' 'T' TEMP0; 'SINON'; WTAB.'TET1' = conti.'TEMPERATURES' ; 'FINSI'; * * On prend la temperature de reference dans le MATERIAU 'SI' ('EXIS' WTAB.'MA_TOT' 'TREF'); TREF = 'ZERO' WTAB.'MO_TOT' 'TEMPERAT' ; TSZ = 'EXTR' WTAB.'MO_TOT' 'ZONE' ; ISZ = 1 ; 'REPE' BSZ (('DIME' TSZ) / 2) ; MOSZI = TSZ . ISZ ; MOTSTEMP = 'EXTR' MOSZI 'TEMP' ; 'REPE' BMO ('DIME' MOTSTEMP) ; MOTEMPI = 'EXTR' MOTSTEMP &BMO ; TREFI = 'CHAN' 'STRESSES' MOSZI ('EXCO' ('REDU' WTAB.'MA_TOT' MOSZI) 'TREF' MOTEMPI) ; TREF = TREF + TREFI ; 'FIN' BMO ; ISZ = ISZ + 2 ; 'FIN' BSZ ; WTAB.'TEMPERATURE_REFERENCE' = 'CHAN' 'TYPE' TREF 'TEMPERATURES' ; 'SINO'; ERREUR 77 'AVEC' ('MOT' 'TREF') ('MOT' 'de MATERIAU'); 'FINS'; * *** Desormais initialise dans PASAPAS, au meme endroit que ETREF *** 'SI' ('EGA' WTAB.'ETHER1' 'INCONNU'); *** On initialise les deformations thermiques a ZERO *** WTAB.'ETHER1' = 'ZERO' MO_TOT 'DEFORMATIONS' ; *** CB215821 : Pour une reprise propre, il faudrait mettre DEFORMATION_THERMIQUE dans conti *** 'FINS' ; 'FINS'; 'FINS'; ************************************************************************ * Initialisation des differentes configurations (reference, debut pas) ************************************************************************ 'SI' ('EGA' WTAB.'FOR0' 'INCONNU') ; WTAB.'FOR0' = 'FORM' ; 'FINSI' ; WTAB.'GE0_DEB' = WTAB.'FOR0'; 'SI' WTAB.'FOR_MECA' ; 'SI'(WTAB.'GRANDS_DEPLACEMENTS' 'OU' WTAB.'FEFP_FORMULATION'); WTAB.'GE0_DEB' = 'FORM' conti.'DEPLACEMENTS'; 'FINS'; 'FORM' WTAB.'FOR0' ; 'FINS'; ************************************************************************ * Initialisations pour la MECANIQUE DES FLUIDES ************************************************************************ 'SI' WTAB.'NVSTNL' ; 'SI' ('NON' ('EXISTE' PRECED 'VITESSES_FLUIDE')) ; DDDD = 'ZERO' WTAB.'MOD_NSL' 'DEPLACEMENTS' ; VFL_COUR = 'CHANGER' 'CHPO' WTAB.'MOD_NSL' DDDD ; 'DETRUIRE' DDDD ; PRECED.'VITESSES_FLUIDE' = 'TABLE' ; PRECED.'VITESSES_FLUIDE'. 0 = VFL_COUR ; 'FINSI' ; conti.'VITESSES_FLUIDE' = PRECED.'VITESSES_FLUIDE'. NSOR ; conti.'VITESSES_FLUIDE_0' = PRECED.'VITESSES_FLUIDE'. NSOR; 'FINSI' ; ************************************************************************ * Initialisations pour la METALLURGIE (T.L. en juin 2018) ************************************************************************ 'SI' WTAB.'FOR_METALLU' ; * * - Initialisation des proportions de phase 'SI' ('NON' ('EXIS' PRECED 'PROPORTIONS_PHASES')) ; * Valeurs par defaut : ZERO pour toutes les phases sauf la premiere : 1.D0 CHMET0 ='ZERO' WTAB.'MOD_MET' 'VARINTER'; LISCO ='EXTR' WTAB.'MOD_MET' 'VARI'; CMP1 ='EXCO' CHMET0 ('EXTR' LISCO 1) ('EXTR' LISCO 1); CHMET0 = CHMET0 + (CMP1 + 1.D0); PRECED.'PROPORTIONS_PHASES' = 'TABLE' ; PRECED.'PROPORTIONS_PHASES'. 0 = CHMET0; 'FINS' ; conti.'PROPORTIONS_PHASES' = PRECED.'PROPORTIONS_PHASES'. NSOR ; CHTPOI0 = ('ZERO' WTAB.'MOD_MET' 'TEMPERATURES') 'NOMC' 'TPOI' ; CHTPOI0 = 'CHAN' 'CHPO' WTAB.'MOD_MET' CHTPOI0 ; WTAB . 'T_POINT0' = CHTPOI0 ; * 'SI' ('EXIS' PRECED 'T_POINT') ; * TAB_TPOI = 'INDE' (PRECED.'T_POINT') ; * CHTPOI0 = PRECED.'T_POINT'.NSOR ; * 'SINO' ; * CHTPOI0 = ('ZERO' WTAB.'MOD_MET' 'TEMPERATURES') 'NOMC' 'TPOI' ; * CHTPOI0 = 'CHAN' 'CHPO' WTAB.'MOD_MET' CHTPOI0 ; * PRECED.'T_POINT' = 'TABLE' ; * PRECED.'T_POINT' . 0 = CHTPOI0 ; * 'FINS' ; * conti . 'T_POINT' = CHTPOI0 ; 'FINSI' ; ************************************************************************ * Initialisations pour la DIFFUSION ************************************************************************ 'SI' WTAB.'FOR_DIFF' ; * * - Initialisation des concentrations 'SI' ('NON' ('EXIS' PRECED 'CONCENTRATIONS')) ; CHCO0 = 'ZERO' WTAB. 'MOD_DIF' 'DEPLACEMENTS' ; CHCO0 = 'CHAN' 'CHPO' WTAB. 'MOD_DIF' CHCO0 ; CHCO0 = 'CHAN' 'ATTRIBUT' CHCO0 'NATURE' 'DIFFUS'; PRECED.'CONCENTRATIONS' = 'TABLE' ; PRECED.'CONCENTRATIONS'. 0 = CHCO0 ; 'FINS' ; conti.'CONCENTRATIONS' = PRECED.'CONCENTRATIONS'. NSOR ; * * - Initialisation des reactions 'SI' ('NON' ('EXIS' PRECED 'REACTIONS_DIFFUSIONS')) ; 'SI' WTAB.'CHAR_BLOD' ; BLODIFF = 'TIRE' WTAB.'BLOCAGES_DIFFUSIONS' 'BLOD' TEMP0 ; 'SINON' ; BLODIFF = WTAB.'BLOCAGES_DIFFUSIONS' ; 'FINSI' ; QDI_COUR = 'REAC' BLODIFF conti.'CONCENTRATIONS' ; PRECED.'REACTIONS_DIFFUSIONS' = 'TABLE' ; PRECED.'REACTIONS_DIFFUSIONS' . 0 = QDI_COUR ; 'FINS' ; conti.'REACTIONS_DIFFUSIONS' = PRECED.'REACTIONS_DIFFUSIONS'. NSOR ; 'FINS' ; ************************************************************************ * Initialisations pour le CHANGEMENT DE PHASE (CB@!%*@! 2019) *-----------Doit etre place en dernier car peut necessiter les autres *-----------champs ************************************************************************ 'SI' WTAB.'PHASE'; * MO_COVA ='EXTR' WTAB.'MAT_PHA' 'COVA'; 'SI' (('DIME' MO_COVA) > 0); CHAI1 ='CHAI' ' Le materiau du modele CHANGEMENT_PHASE ne peut pas varier'; 'ERRE' CHAI1 ; 'FINS'; 'SI' ( 'EXISTE' PRECED 'PROPORTIONS_PHASE') ; CHPHA0 ='REDU' WTAB.'MOD_PHA' PRECED.'PROPORTIONS_PHASE'.NSOR ; 'SINON'; * On met un etat qui a du sens physique pour la proportion de phases TABPHA ='EXTR' WTAB.'MOD_PHA' 'ZONE'; CHPHA0 ='VIDE' 'MCHAML'; 'REPE' SURi (('DIME' TABPHA) / 2); * Boucle sur les modeles CHANGEMENT_PHASE MODEi = TABPHA.((&SURi-1)*2 + 1) ; MATEi =('REDU' MODEi WTAB.'MAT_PHA' ) 'EXCO' 'PRIM'; LMOPRIM='EXTR' MODEi 'DEPL'; MOPRIM ='EXTR' LMOPRIM 1; 'SI' ('EXIS' WTAB.'CHARGEMENT' MOPRIM); * On regarde dans le CHARGEMENT si la PRIMALE existe CHPRIM ='TIRE' WTAB.'CHARGEMENT' MOPRIM TEMP0; 'SI' ('EXIS' ('EXTR' CHPRIM 'COMP') MOPRIM); CHPRIM='CHAN' 'CHAM' CHPRIM MODEi 'NOEUD'; CHPRIM= CHPRIM 'NOMC' 'PRIM'; CHPHAi=('MASQ' (MATEi-CHPRIM) 'EGINFE' 0.D0) 'NOMC' 'PPHA'; CHPHA0= CHPHAi 'ET' CHPHA0; 'ITER' SURi ; 'FINS'; 'FINS'; * On regarde dans les indices connus de la TABLE PRECED 'SI' ('EXIS' PRECED 'TEMPERATURES'); CHPRIM = TH_COUR; 'SI' ('EXIS' ('EXTR' CHPRIM 'COMP') MOPRIM); CHPRIM='CHAN' 'CHAM' CHPRIM MODEi 'NOEUD'; CHPRIM= CHPRIM 'NOMC' 'PRIM'; CHPHAi=('MASQ' (MATEi-CHPRIM) 'EGINFE' 0.D0) 'NOMC' 'PPHA'; CHPHA0= CHPHAi 'ET' CHPHA0; 'ITER' SURi ; 'FINS'; 'FINS'; 'SI' ('EXIS' PRECED 'CONCENTRATIONS'); CHPRIM = CHCO0; 'SI' ('EXIS' ('EXTR' CHPRIM 'COMP') MOPRIM); CHPRIM='CHAN' 'CHAM' CHPRIM MODEi 'NOEUD'; CHPRIM= CHPRIM 'NOMC' 'PRIM'; CHPHAi=('MASQ' (MATEi-CHPRIM) 'EGINFE' 0.D0) 'NOMC' 'PPHA'; CHPHA0= CHPHAi 'ET' CHPHA0; 'ITER' SURi ; 'FINS'; 'FINS'; * Si on arrive ici c'est qu'on n'a pas trouve le champ primal : on met zero CHPHAi='ZERO' MODEi 'VARINTER'; CHPHA0= CHPHAi 'ET' CHPHA0; 'FIN' SURi; PRECED.'PROPORTIONS_PHASE' = 'TABLE' ; PRECED.'PROPORTIONS_PHASE'. 0 = CHPHA0; 'FINSI'; conti.'PROPORTIONS_PHASE' = CHPHA0; WTAB.'BLO_PHASE' = 'PMAT' WTAB.'MOD_PHA' ; 'FINSI'; * 'SI' WTAB.'SOLUBILITE'; WTAB.'BLO_SOL' = 'PMAT' WTAB.'MOD_SOL' ; 'FINSI'; * PRECED.'ESTIMATION' = 'COPIER' conti; 'FINP';