* PAS_INIT PROCEDUR MB234859 24/09/11 21:15:03 12008 ************************************************************************ * 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'; 'SI' inouv ; PRECED.'CONTINUATION' = 'TABLE'; 'FINSI'; conti = PRECED.'CONTINUATION'; ************************************************************************ * Initialisations de l'instant de calcul ************************************************************************ 'SI' inouv ; TEMP0 = PRECED.'TEMPS'. NSOR; 'SINON'; TEMP0 = conti.'TEMPS'; 'FINSI'; 'SINON'; NSOR = 0; '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'; WTAB.'NSOR' = NSOR; conti.'TEMPS' = TEMP0 ; ************************************************************************ * Initialisation indices 'MODELES' de la table de sortie ************************************************************************ 'SI' WTAB.'CHAR_MODE' ; * Indices MODELES de la table de sortie : 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'; 'FIN' BMO ; 'SINO' ; 'FINS' ; PRECED.'TEMPERATURES' = 'TABLE'; PRECED.'TEMPERATURES'. 0 = TH_COUR; 'FINSI'; * * - Initialisation des reactions 'SI' WTAB.'CHAR_BLOT' ; 'SINON' ; BLOTHER = WTAB.'BLOCAGES_THERMIQUES' ; 'FINSI' ; 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' ; PRECED.'TEMPERATURES_APPORT' = TABLE ; 'REPE' BTAPP1 NBT1 ; IBT1 = &BTAPP1 - 1 ; PRECED.'TEMPERATURES_APPORT' . IBT1 = PRECED.'TEMPERATURES' . IBT1 ; '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 'DETRUIRE' DDDD; PRECED.'DEPLACEMENTS' = 'TABLE'; PRECED.'DEPLACEMENTS'. 0 = DEP_COUR; 'FINSI'; conti.'DEPLACEMENTS' = PRECED.'DEPLACEMENTS'. NSOR; * * - Initialisation des contraintes PRECED.'CONTRAINTES' = 'TABLE'; PRECED.'CONTRAINTES'. 0 = SIG_COUR; 'SINON'; SIG_COUR = PRECED.'CONTRAINTES'. NSOR ; 'SI' WTAB.'GRANDS_DEPLACEMENTS' ; 'FINSI'; 'FINSI'; conti.'CONTRAINTES' = SIG_COUR ; * * - Initialisation des vitesses 'SI' (WTAB.'DYNAMIQUE' 'OU' ('EXISTE' WTAB 'MOD_LIA')); 'SI' ('NON' ('EXISTE' PRECED 'VITESSES')) ; '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')) ; 'DETRUIRE' DDDD; PRECED.'ACCELERATIONS' = 'TABLE'; PRECED.'ACCELERATIONS'. 0 = ACC_COUR; 'FINSI'; conti.'ACCELERATIONS' = PRECED.'ACCELERATIONS'. NSOR; 'FINSI'; * * - Initialisation des reactions 'SI' WTAB.'CHAR_BLOM' ; 'SINON' ; BLOMECA = WTAB.'BLOCAGES_MECANIQUES' ; 'FINSI' ; PRECED.'REACTIONS' = 'TABLE' ; PRECED.'REACTIONS' . 0 = REA_COUR; 'FINSI'; conti.'REACTIONS' = PRECED.'REACTIONS'. NSOR; * 'SI' WTAB.'IPLAVI'; * * - Initialisation des variables internes 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 ; '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' ; 'FINSI'; 'SINON'; 'SI' inouv ; '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; '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' PRECED.'TRACKING' ; PRECED.'PROOTS' = 'TABLE'; PRECED.'PROOTS'. 0 = 0.; 'FINSI'; * 'SI' inouv; conti.'PROOTS' = PRECED.'PROOTS'.NSOR;'FINS'; PRECED.'EROOTS' = 'TABLE'; PRECED.'EROOTS'. 0 = 0.; 'FINSI'; * 'SI' inouv; conti.'PROOTS' = PRECED.'PROOTS'.NSOR;'FINS'; PRECED.'NROOTS' = 0; 'FINSI'; * 'SI' inouv; conti.'EROOTS' = PRECED.'EROOTS'.NSOR;'FINS'; PRECED.'TABISO' = 'TABLE'; PRECED.'TABISO'. 0 = 0.; 'FINSI'; * 'SI' inouv; conti.'TABISO' = PRECED.'TABISO'.NSOR;'FINS'; PRECED.'RESTH' = 'TABLE'; PRECED.'RESTH'. 0 = 0.; 'FINSI'; * 'SI' inouv; conti.'RESTH' = PRECED.'RESTH'.NSOR;'FINS'; PRECED.'ISOTEST' = 'TABLE'; PRECED.'ISOTEST'. 0 = 0.; 'FINSI'; * 'SI' inouv; conti.'ISOTEST' = PRECED.'ISOTEST'.NSOR;'FINS'; PRECED.'ISOTOT' = 'TABLE'; PRECED.'ISOTOT'. 0 = 0.; 'FINSI'; * 'SI' inouv; conti.'ISOTOT' = PRECED.'ISOTOT'.NSOR;'FINS'; PRECED.'MESH_ISO' = 'TABLE'; PRECED.'MESH_ISO'. 0 = 0.; 'FINSI'; * 'SI' inouv; conti.'MESH_ISO' = PRECED.'MESH_ISO'.NSOR;'FINS'; PRECED.'MESH' = 'TABLE'; PRECED.'MESH'. 0 = 0.; 'FINSI'; * 'SI' inouv; conti.'MESH' = PRECED.'MESH'.NSOR;'FINS'; 'FINSI'; 'FINSI'; 'FINSI'; * * - Initialisation pour le non-local HELM 'SI' ('EGA' WTAB.'NON_LOCAL' 'HELM'); WTAB.'HELMHOLTZ' = 'TABLE' ; WTAB.'HELMHOLTZ' . 'N_VARI_NL'= NHELM ; * liste des parametres variables WTAB.'HELMHOLTZ' . 'NLOC_COVA'= DDVA ; 'REPE' BH NHELM ; WTAB.'HELMHOLTZ'. &BH = 'TABLE' ; * mess chaih1; WTAB.'HELMHOLTZ'. &BH. 'NOM' = LEMO ; WTAB.'HELMHOLTZ'. &BH. 'CTE' = FAUX ; 'SINON' ; WTAB.'HELMHOLTZ'. &BH. 'CTE' = VRAI ; 'FINSI' ; 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'; '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'; 'SINON'; WTAB.'TET1' = CONTI.'TEMPERATURES' ; 'FINSI'; * * On prend la temperature de reference dans le MATERIAU ISZ = 1 ; MOSZI = TSZ . ISZ ; TREF = TREF + TREFI ; 'FIN' BMO ; ISZ = ISZ + 2 ; 'FIN' BSZ ; 'SINO'; '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) ************************************************************************ WTAB.'GE0_DEB' = WTAB.'FOR0'; 'SI' WTAB.'FOR_MECA' ; 'SI'(WTAB.'GRANDS_DEPLACEMENTS' 'OU' WTAB.'FEFP_FORMULATION'); 'FINS'; 'FORM' WTAB.'FOR0' ; 'FINS'; ************************************************************************ * Initialisations pour la MECANIQUE DES FLUIDES ************************************************************************ 'SI' WTAB.'NVSTNL' ; 'SI' ('NON' ('EXISTE' PRECED 'VITESSES_FLUIDE')) ; '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 * Valeurs par defaut : ZERO pour toutes les phases sauf la premiere : 1.D0 CHMET0 = CHMET0 + (CMP1 + 1.D0); PRECED.'PROPORTIONS_PHASES' = 'TABLE' ; PRECED.'PROPORTIONS_PHASES'. 0 = CHMET0; 'FINS' ; conti.'PROPORTIONS_PHASES' = PRECED.'PROPORTIONS_PHASES'. NSOR ; 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 PRECED.'CONCENTRATIONS' = 'TABLE' ; PRECED.'CONCENTRATIONS'. 0 = CHCO0 ; 'FINS' ; CONTI.'CONCENTRATIONS' = PRECED.'CONCENTRATIONS'. NSOR ; * * - Initialisation des reactions 'SI' WTAB.'CHAR_BLOD' ; 'SINON' ; BLODIFF = WTAB.'BLOCAGES_DIFFUSIONS' ; 'FINSI' ; 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'; * 'ERRE' CHAI1 ; 'FINS'; 'SI' ( 'EXISTE' PRECED 'PROPORTIONS_PHASE') ; 'SINON'; * On met un etat qui a du sens physique pour la proportion de phases * Boucle sur les modeles CHANGEMENT_PHASE MODEi = TABPHA.((&SURi-1)*2 + 1) ; * On regarde dans le CHARGEMENT si la PRIMALE existe CHPHA0= CHPHAi 'ET' CHPHA0; 'ITER' SURi ; 'FINS'; 'FINS'; * On regarde dans les indices connus de la TABLE PRECED CHPRIM = TH_COUR; CHPHA0= CHPHAi 'ET' CHPHA0; 'ITER' SURi ; 'FINS'; 'FINS'; CHPRIM = CHCO0; 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 CHPHA0= CHPHAi 'ET' CHPHA0; 'FIN' SURi; PRECED.'PROPORTIONS_PHASE' = 'TABLE' ; PRECED.'PROPORTIONS_PHASE'. 0 = CHPHA0; 'FINSI'; conti.'PROPORTIONS_PHASE' = CHPHA0; 'FINSI'; * 'SI' WTAB.'SOLUBILITE'; 'FINSI'; * PRECED.'ESTIMATION' = 'COPIER' conti; 'FINP';
© Cast3M 2003 - Tous droits réservés.
Mentions légales