Download pas_defa.procedur

Back to the list

   1 : * PAS_DEFA  PROCEDUR  PASCAL    14/01/27    21:15:00     7920           
   2 : DEBPROC PAS_DEFA PRECED*'TABLE';
   3 : *
   4 : *objet de la procedure :
   5 : * verifications coherences donnees.
   6 : * initialisations des valeurs par defaut des options de calcul
   7 : * initialisation des variables locales
   8 : *
   9 : * verifications de quelques arguments obligatoires
  10 : *
  11 : * existence modele verification et initialisation modeles particuliers
  12 : *
  13 : * affectation des valeurs par défaut des options dans WTAB
  14 : *
  15 : INOUV=VRAI;
  16 : 'SI' ('EXIS' PRECED 'REPRISE');
  17 :   'SI' (PRECED.'REPRISE' > 0.);
  18 :      PAS_REPR PRECED;
  19 :   'FINSI';
  20 : 'FINSI';
  21 : 'SI' ('EXIS' PRECED 'WTABLE');
  22 :   WTAB=PRECED.'WTABLE';WTAB.'NOUVEAU'=FAUX;INOUV=FAUX;
  23 : 'SINON';
  24 :   WTAB='TABLE';
  25 :   PRECED.'WTABLE'=WTAB;
  26 : 'FINSI';
  27 : 
  28 : ************************************************************************
  29 : ********************* CAS D UNE NOUVELLE WTAB **************************
  30 : ************************************************************************
  31 : 'SI' INOUV;
  32 :   'SI' (( 'EXISTE' PRECED 'GRANDES_ROTATIONS') 'OU'
  33 :       ('EXISTE' PRECED 'GRANDES_DEFORMATIONS' ));
  34 :         'MESS' 'ATTENTION LES DONNEES CONCERNANT LES GRANDES ROTATIONS';
  35 :         'MESS' ' ET GRANDES DEFORMATIONS ONT CHANGE.';
  36 :         'MESS' ' Voir le mot EPSILON des operateurs OPTION ou MODELE';
  37 :         'MESS' ' Arret de Cast3M';
  38 :         'ERREUR'   5 ;
  39 :   'FINSI';
  40 :   'SI' ( 'EXISTE' PRECED 'CONTACT' ) ;
  41 :      'MESS' ' ATTENTION :' ;
  42 :      'MESS' ' Les donnees concernant le CONTACT dans PASAPAS ont ete'
  43 :             ' modifiees :' ;
  44 :      'MESS' ' - L indice CONTACT de la table de PASAPAS n existe plus.';
  45 :      'MESS' ' - Il faut definir un MODELE de CONTACT.' ;
  46 :      'MESS' ' Arret de Cast3M' ;
  47 :      'ERREUR' 5 ;
  48 :   'FINSI';
  49 : * Advection presence d'un modele thermiquee advection
  50 :  WTAB.'ADVECTION'=FAUX;
  51 : * matrice d'amortissement en dynamique : pas_defa
  52 :   WTAB.'AMORTISSEMENT'='MOT' 'INCONNU';
  53 : * arret:  positionné  pour dire à pasapas de s'arreter: perso1
  54 :   WTAB.'ARRET'=FAUX;
  55 : * autocrit: valeur du critère à utiliser dans autopilo(option automatique)
  56 :   WTAB.'AUTOCRIT'= 0.005;
  57 : * autocoef: coefficient de pilotage
  58 :   WTAB.'AUTOCOEF'='MOT' 'INCONNU';
  59 : * autodeux=vrai si pilotage et pas premiere tentative : pasapas
  60 :   WTAB.'AUTODEUX'=FAUX;
  61 : * automatique =vrai si demande de pilotage automatique : pas_defa
  62 :   WTAB.'AUTOMATIQUE'= FAUX;
  63 : * autopas : nb maxi de tentative en pilotage automatique:pas_defa
  64 :   WTAB.'AUTOPAS'= 250;
  65 : * autoredu  : reduit le critère de pilotage : pasapas unpas
  66 :   WTAB.'AUTOREDU'=1.D0;
  67 : * autored1 : joue sur la strategie d'evolution de autoredu :pasapas unpas
  68 :   WTAB.'AUTORED1'='MOT' 'INCONNU';
  69 : * beton_ht   ( ne marche pas!)
  70 :   WTAB.'BETON_HT' = FAUX;
  71 : * blocages_mecaniques; matrices : pas_defa (ou pasapas si pas dans preced)
  72 :   WTAB.'BLOCAGES_MECANIQUES'='MOT' 'INCONNU';
  73 : * blocages_thermiques; matrices : pas_defa (ou jamais)
  74 :   WTAB.'BLOCAGES_THERMIQUES'='MOT' 'INCONNU';
  75 : * blocages_diffusions; matrices : pas_defa (ou jamais)
  76 :   WTAB.'BLOCAGES_DIFFUSIONS'='MOT' 'INCONNU';
  77 : * bou_meth : valeur par defaut du nombre de bouclage mecanique-thermique
  78 :   WTAB.'BOU_METH'=1;
  79 : * cafrotte logique pas_defa: veut dire il existe modele contact-frottement
  80 :   WTAB.'CAFROTTE' = FAUX ;
  81 : * cara stocke les caracteristiques reactualisées du dernier pas :pasapas
  82 :   WTAB.'CARA'='MOT' 'INCONNU';
  83 : * caracteristiques :
  84 :   WTAB.'CARACTERISTIQUES'= 'MOT' 'INCONNU';
  85 : * indice celsius
  86 :   WTAB.'CELSIUS'=FAUX;
  87 : * ceramique presence de modele ceramique pas_defa
  88 :   WTAB.'CERAMIQUE'=FAUX;
  89 : * chargement idem celui de preced ou creation d'un chargement farfelu
  90 :   WTAB.'CHARGEMENT'='MOT' 'INCONNU';
  91 : * chargement_i idem chargement  DFIS et FI si certain materiau pas_defa
  92 :   WTAB.'CHARGEMENT_I'='MOT' 'INCONNU';
  93 : * char_defi presence de chargement DEFI deformation initiale  pas_defa
  94 :   WTAB.'CHAR_DEFI'=FAUX;
  95 : * char_ther presence de chargement thermique pour la mecanique pas_defa
  96 :   WTAB.'CHAR_THE' = FAUX;
  97 : * clim matrice des blocagesmecaniques y compris contact et frottement pasapas
  98 :   WTAB.'CLIM'='MOT' 'INCONNU';
  99 : * conduction presence d'un modele de' conduction : pas_defa
 100 :   WTAB.'CONDUCTION'=FAUX;
 101 : * consolidation presence de consolidation via preced : pas_defa
 102 :   WTAB.'CONSOLIDATION'=FAUX;
 103 : * contact presence de contact automatique via preced : pas_defa
 104 :   WTAB.'CONTACT' = FAUX ;
 105 : * conv logique precisant si unpas a bien convergé  : unpas
 106 :   WTAB.'CONV'=VRAI;
 107 : * convergence_forcee logique demandant la convergence forcee : pas_defa
 108 :   WTAB.'CONVERGENCE_FORCEE' = VRAI;
 109 : * demande de convergence mecanique-thermique en cas de bouclage : pas_defa
 110 :   WTAB.'CONVERGENCE_MEC_THE'=FAUX;
 111 : * logique pour imposer au residu de decroitre de facon monotone : pas_defa
 112 :   WTAB.'CONVERGENCE_MONOTONE' = FAUX;
 113 : * convection presence d'un modele de convection : pas_defa
 114 :   WTAB.'CONVECTION' = FAUX;
 115 : * conv_thmec on a convergeé le bouclage mecanique-thermique  pasapas
 116 :   WTAB.'CONV_THMEC'=VRAI;
 117 : * couplage le calcul contient des modeles thermiques et des mecaniques pas_defa
 118 :   WTAB.'COUPLAGE' = FAUX;
 119 : * co1 champ de CONCENTRATION du pas precedent : pasapas
 120 :   WTAB.'CO1'=0;
 121 : * co2 champ de CONCENTRATION du pas courant : pasapas
 122 :   WTAB.'CO2'=0;
 123 : * cte_stefan_boltzmann valeur de la constante : pas_defa
 124 :   WTAB.'CTE_STEFAN_BOLTZMANN' = 5.673E-8 ;
 125 : * deja_calc_charther indique le dernier temps pour lequel on a calculé le
 126 : * chargement thermique dans charther : pas_defa et charther
 127 :   WTAB.'DEJA_CALC_CHARTHER'=0.d0;
 128 : * deltaiter sert au test de non convergence : pas_defa unpas
 129 :   WTAB.'DELTAITER'=10;
 130 : * dt: valeur du delta de temps entre le dernier pas et le pas en cours:pasapas
 131 :   WTAB.'DT'='MOT' 'INCONNU';
 132 : * dtprec : dt du pas precedent: pasapas
 133 :   WTAB.'DTPREC'='MOT' 'INCONNU';
 134 : * dt_init c'est le dt initiale sert au pilotage automatique : pasapas
 135 :   WTAB.'DT_INIT'=0.D0;
 136 : * dynamique calcul en dynamique :pas_defa
 137 :   WTAB.'DYNAMIQUE'=FAUX;
 138 : * endommagement il esiste un tel modele de comportement: pas_defa
 139 :   WTAB.'ENDOMMAGEMENT'=FAUX;
 140 : * ether1 stocke des deformations thermiques au temps precedent : pasapas
 141 :   WTAB.'ETHER1'='MOT' 'INCONNU';
 142 : * ether2 deformation d'origine thermique au temps en cours : pas_epth
 143 :   WTAB.'ETHER2'='MOT' 'INCONNU';
 144 : * etref partie du calcul des deformations thermiques : pas_epth
 145 :   WTAB.'ETREF'='MOT' 'INCONNU';
 146 : * fnonl permet forces de réequilibrage du pas precedent : unpas
 147 :   WTAB.'FNONL'='MOT' 'INCONNU';
 148 : * configuration finale  : pasapas unpas
 149 :   WTAB.'FOR'='MOT' 'INCONNU';
 150 : * configuration en debut de pas : pasapas
 151 :   WTAB.'FOR0'='FORM';
 152 : * FOR_DIFF le calcul inclus des modeles DIFFUSION:  pas_defa
 153 :   WTAB.'FOR_DIFF' = FAUX;
 154 : * utilisation de la frormulation fefp : pas_defa
 155 :   WTAB.'FEFP_FORMULATION' = FAUX;
 156 : * ffrot  seuil de force de frottement  : unpas
 157 :   WTAB.'FFROT'='MOT' 'INCONNU';
 158 : * frea1 partie constante du second membre  dynamique,consolidation: pasapas
 159 :   WTAB.'FREA1'='MOT' 'INCONNU';
 160 : * frequentiel calcul en frequentiel : pas_defa
 161 :   WTAB.'FREQUENTIEL'= FAUX;
 162 : * ftol desequilibre  tolere : pas_defa
 163 :   WTAB.'FTOL'='MOT' 'INCONNU';
 164 : * grands_deplacement  logique : pas_defa
 165 :   WTAB.'GRANDS_DEPLACEMENTS' = FAUX;
 166 : * ifrocoul : logique  il existe du frottement de coulomb : pas_defa
 167 :   WTAB.'IFROCOUL'=FAUX;
 168 : * increment de charge du pas precedent : unpas
 169 :   WTAB.'INCREMENT'='MOT' 'INCONNU';
 170 : * logique le pas precedent à ete initialisé par le temps : unpas
 171 :   WTAB.'INITEMPS'= FAUX;
 172 : * logique pour autoriser l'Initialisation a partir du pas precedent : unpas
 173 :   WTAB.'INITIALISATION'= VRAI;
 174 : * iplavi il existe un modele devant passer par COMP : pas_defa
 175 :   WTAB.'IPLAVI'=FAUX;
 176 : * ipresu : listreel des temps à mettre dans les tables resultats : pas_defa
 177 :   WTAB.'IPRESU'='MOT' 'INCONNU';
 178 : * iptime  liste des temps à calculer : pas_defa
 179 :   WTAB.'IPTIME'='MOT' 'INCONNU';
 180 : * isauvega liste des temps sauvegardes (appel SAUV dans pasapas) : pas_defa
 181 :   WTAB.'ISAUVEGA'='MOT' 'INCONNU';
 182 : * logique la sauvegarde dans pasapas est activée : pas_defa
 183 :   WTAB.'ISAUVEGL'=FAUX;
 184 : * itcar  des elements ont des caracteristiques geometriques :pas_defa
 185 :   WTAB.'ITCAR'=FAUX;
 186 : * k_sigma il faut utiliser l'operateur KSIGMA : pas_defa
 187 :   WTAB.'K_SIGMA'=FAUX;
 188 : * k_tangent il faut utiliser l'operateur KTANG : pas_defa
 189 :   WTAB.'K_TANGENT'=FAUX;
 190 : * k_tangent_iter0 matrice tangente a utiliser pour iteration 0 : unpas
 191 :   WTAB.'K_TANGENT_ITER0'='MOT' 'INCONNU';
 192 : * k_tangent_pert operateur KTAN matrice tangente par perturbation : pas_defa unp
 193 :   WTAB.'K_TANGENT_PERT'=FAUX;
 194 : * k_tangent_syme matrice tangente symetrisee : pas_defa unpas
 195 :   WTAB.'K_TANGENT_SYME'=FAUX;
 196 : * k_tang_pert_c1 matrice tangente par perturbation coefficient C1 : unpas
 197 :   WTAB.'K_TANG_PERT_C1'= 1.D-3;
 198 : * k_tang_pert_c2 matrice tangente par perturbation coefficient C2 : unpas
 199 :   WTAB.'K_TANG_PERT_C2'='MOT' 'INCONNU';
 200 : * lastktan matrice donnant la derniere matrice tangente : pasapas unpas
 201 :   WTAB.'LASTKTAN'='MOT' 'INCONNU';
 202 : * ldeva liste des variables dont dependent les materiaux : pas_defa
 203 :   WTAB.'LDEVA'='MOT' 'INCONNU';
 204 : * leconomi l'option economique est activée : pas_defa pas_sauv
 205 :   WTAB.'LECONOMI'=FAUX;
 206 : * liaison_persistante si il existe des liaisons persistantes :pas_defa
 207 :   WTAB.'LIAISON_PERSISTANTE' =FAUX;
 208 : * linesearch en grand deplacement
 209 :   WTAB.'LINESEARCH' = FAUX;
 210 : * lisea_m  pour les contacts unilateraux en mecaniques :pasapas unpas
 211 :   WTAB.'LISEA_M'='MOT' 'INCONNU';
 212 : * lisea_t pour les changements de phase en thermique : pasapas transnon
 213 :   WTAB.'LISEA_T'='MOT' 'INCONNU';
 214 : * lpar0 liste des parametres externes à passer à COMP : pas_defa
 215 :   WTAB.'LPAR0'='MOT' 'INCONNU';
 216 : * man methode asymptotique numerique
 217 :   WTAB.'MAN'= FAUX;
 218 : * massconst logique il existe des masses constantes : pas_defa
 219 :   WTAB.'MASSCONST'=FAUX;
 220 : * mat0 materiau au temps 0 : pasapas pas_epth
 221 :   WTAB.'MAT0'='MOT' 'INCONNU';
 222 : * mat1  materiaux pour le pas en cours : pasapas unpas
 223 :   WTAB.'MAT1'='MOT' 'INCONNU';
 224 : * matvar le materiau est variable  :  pas_verm
 225 :   WTAB.'MATVAR' = FAUX;
 226 : * mat_con materiau des modeles de convection : pas_defa
 227 :   WTAB.'MAT_CON'='MOT' 'INCONNU';
 228 : * mat_dif materiau des modeles de diffusion : pas_defa
 229 :   WTAB.'MAT_DIF'='MOT' 'INCONNU';
 230 : * mat_mec materiau des modeles de mécanique : pas_defa
 231 :   WTAB.'MAT_MEC'='MOT' 'INCONNU';
 232 : * mat_pha materiau des modeles de changement de phase : pas_defa
 233 :   WTAB.'MAT_PHA'='MOT' 'INCONNU';
 234 : * mat_por materiau des modeles poreux : pas_defa
 235 :   WTAB.'MAT_POR'='MOT' 'INCONNU';
 236 : * mat_ray materiau des modeles de rayonnement : pas_defa
 237 :   WTAB.'MAT_RAY'='MOT' 'INCONNU';
 238 : * mat_the materiau des modeles thermiques : pas_defa
 239 :   WTAB.'MAT_THE'='MOT' 'INCONNU';
 240 : * mat_thm materiau thermohydrique : pas_defa
 241 :   WTAB.'MAT_THM'= 'MOT' 'INCONNU';
 242 : * mat_T materiau thermique + thermohydrique : pas_defa
 243 :   WTAB.'MAT_T'  = 'MOT' 'INCONNU';
 244 : * materiau des modeles convection + thermiques : pas_defa
 245 :   WTAB.'MAT_TOT'='MOT' 'INCONNU';
 246 : * maxdefor valeur limitant la deformation en cas de non convergence 
 247 : * et de RENORMALISATION souhaitée de ZDEP1 : pas_defa
 248 :   WTAB.'MAXDEFOR'= 1.e-3;
 249 : * maxiteration nombre maximum d'iteration pour un pas de calcul :pas_defa
 250 :   WTAB.'MAXITERATION' = 49;
 251 : * maxsouspas nombre maximum de sous pas en cas de non convergence :pas_defa
 252 :   WTAB.'MAXSOUSPAS' = 100;
 253 : * maxisouspas nombre maximum de sous pas d'integration du fluage
 254 :   WTAB.'MAXISOUSPAS'= 2000;
 255 : * ma_tot materiau des modeles mecaniques + poreux +liaison : pas_defa
 256 :   WTAB.'MA_TOT'='MOT' 'INCONNU';
 257 : * ma_total  c'est ce qui est dans preced.caracteristiques : pas_defa
 258 :   WTAB.'MA_TOTAL'= 'MOT' 'INCONNU';
 259 : * mec1 il existe au moins un modele mecanique  : pas_defa
 260 :   WTAB.'MEC1' = FAUX;
 261 : * affichage messages options calcul entete procedure resolution THERMIQUE
 262 :   WTAB.'MESSTHER' = VRAI ;
 263 : * modal ou statique : pas_defa
 264 :   WTAB.'MODAL' = FAUX;
 265 : * mod_adv modele de thermique, advection
 266 :   WTAB.'MOD_ADV'='MOT' 'INCONNU';
 267 : * mod_con modele de thermique convection  : pas_defa
 268 :   WTAB.'MOD_CON'='MOT' 'INCONNU';
 269 : * mod_dif modele de diffusion  : pas_defa
 270 :   WTAB.'MOD_DIF'='MOT' 'INCONNU';
 271 : * mod_mec modele mecanique: pas_defa
 272 :   WTAB.'MOD_MEC'= 'MOT' 'INCONNU';
 273 : * mod_pha modele de changement de phase : pas_defa
 274 :   WTAB.'MOD_PHA'='MOT' 'INCONNU';
 275 : * mod_por modele poreux
 276 :   WTAB.'MOD_POR'='MOT' 'INCONNU';
 277 : * mod_ray modele rayonnement
 278 :   WTAB.'MOD_RAY'='MOT' 'INCONNU';
 279 : * mod_the modele thermique : pas_defa
 280 :   WTAB.'MOD_THE'= 'MOT' 'INCONNU';
 281 : * mod_thm modele thermohydrique : pas_defa
 282 :   WTAB.'MOD_THM'= 'MOT' 'INCONNU';
 283 : * mod_T modele thermique + thermohydrique (contient inconnue T): pas_defa
 284 :   WTAB.'MOD_T'  = 'MOT' 'INCONNU';
 285 : * mod_tot modele thermique : pas_defa
 286 :   WTAB.'MOD_TOT'= 'MOT' 'INCONNU';
 287 : * mo_tot modele mecanique + modele poreux : pas_defa
 288 :   WTAB.'MO_TOT' ='MOT' 'INCONNU';
 289 : * mo_total ce qui est dans preced.modele  : pas_defa
 290 :   WTAB.'MO_TOTAL'=PRECED.'MODELE';
 291 : * mova nom de la variables internes dont le max est imprimé : pas_defa
 292 :   WTAB.'MOVA' = 'MOT' 'EPSE';
 293 : * msrther2 deformations thermiques pour les poreux
 294 :   WTAB.'MSRTHER2'='MOT' 'INCONNU';
 295 : * mtol valeur autorisée du desequilibre (en terme de moment): pas_defa
 296 :   WTAB.'MTOL'='MOT' 'INCONNU';
 297 : * naures valeur de preced .autoresu   : pas_defa
 298 :   WTAB.'NAURES'=100000;
 299 : * nbplas nb de point ayant plastifié   : pasapas unpas
 300 :   WTAB.'NBPLAS'='MOT' 'INCONNU';
 301 : * nb_el_para nb minimum d'éléments dans une zone pour accepter le parallelisme
 302 :   WTAB.'NB_EL_PARA'=1000;
 303 : * premier pas de sauvegarde encore présent (option économique de pasapas)
 304 :   WTAB.'NFSOR'=0;
 305 : * nombre maxi d'iteration internes si k_tangent : pas_defa
 306 :   WTAB.'NITERINTER_MAX' = 15;
 307 : * niter_ktangent recalcule de la matrice tangente toutes les .. iterations
 308 :   WTAB.'NITER_KTANGENT' = 1;
 309 : * nloc s'il existe un modele de comportement non_local (preced.non_local)
 310 :   WTAB.'NLOC' = FAUX ;
 311 : * nmaxsubsteps nb maximun de substepping si fefp  : pas_defa
 312 :   WTAB.'NMAXSUBSTEPS' = 1;
 313 : * nombre_iterations nb d'iterations du pas precedent : pasapas unpas
 314 :   WTAB.'NOMBRE_ITERATIONS'='MOT' 'INCONNU';
 315 : * non_lineaire il existe un materiau utilisateur non-lineaire  : pas_defa
 316 :   WTAB.'NON_LINEAIRE'= FAUX;
 317 : * non_local decrit le modele de comportement non_local (preced.non_local)
 318 :   WTAB.'NON_LOCAL' = 'MOT' 'INCONNU' ;
 319 : * nouveau vrai si premier calcul    : pas_defa
 320 :   WTAB.'NOUVEAU'=VRAI;
 321 : * delta temps du pas en cours pour dupont2 : pasapas
 322 :   WTAB.'NOUV_PAS'=0.D0;
 323 : *  nsor numero a ecrire dans les tables de resultats : pas_ init
 324 :   WTAB.'NSOR'=0;
 325 : * operateur matrice contenant l'operateur d'iterations : pasapas
 326 :   WTAB.'OPERATEUR'='MOT' 'INCONNU';
 327 : * Ordre est l'ordre de developpement de la MAN
 328 :   WTAB.'ORDRE'=12;
 329 : * para_exte il existe des parametres externes  : pas_verm
 330 :   WTAB.'PARA_EXTE' = FAUX;
 331 : * pas numero du pas de temps utile à transnon : pasapas
 332 :   WTAB.'PAS'=0;
 333 : * pas_ajuste si ajustement automatique de longueur de pas : pas_defa
 334 :   WTAB.'PAS_AJUSTE' = FAUX;
 335 : * pas_redu  en automatiqu il a fallu reduire le pas  : pasapas unpas
 336 :   WTAB.'PAS_REDU'=FAUX;
 337 : * phase  il xiste du changement de phase : pas_defa
 338 :   WTAB.'PHASE'=FAUX;
 339 : * plastique il exite un comportement plastique : pas_defa
 340 :   WTAB.'PLASTIQUE' = FAUX;
 341 : * por1 il existe un model poreux  : pas_defa
 342 :   WTAB.'POR1' = FAUX;
 343 : * precdecharge critere de decharge en opilotage automatique  : pas_defa
 344 :   WTAB.'PRECDECHARGE' = 1.E-2;
 345 : * precflex critere de désequilibre sur moment autorisé : pas_defa
 346 :   WTAB.'PRECFLEX' = 1.E-4;
 347 : * precisinter precision pour les iterations locales (fefp): pas_defa
 348 :   WTAB.'PRECISINTER' = 1.D-8;
 349 : * precision critere de convergence Thermique & Mecanique : pas_defa
 350 :   WTAB.'PRECISION' = 1.E-4 ;
 351 : * predicteur
 352 :   WTAB.'PREDICTEUR' = 'MOT' 'INCONNU';
 353 : * procedure initialisation pour g_theta
 354 :   WTAB.'PROCEDURE'='MOT' 'PASAPAS';
 355 : * procedure_char_meca il faut appele la procedure charmeca  : pas_defa
 356 :   WTAB.'PROCEDURE_CHAR_MECA'=FAUX;
 357 : * procedure_char_ther il faut appele la procedure charther  : pas_defa
 358 :   WTAB.'PROCEDURE_CHAR_THER'=FAUX;
 359 : * procedure_conv il faut appele la procedure pro_conv :  pas_defa
 360 :   WTAB.'PROCEDURE_CONV'=FAUX;
 361 : * procedure_para_ther il faut appeler la procedure parather : pas_defa
 362 :   WTAB.'PROCEDURE_PARA_THER' = FAUX ;
 363 : * procedure_perso1 il faut appeler la procedur perso1:  pas_defa
 364 :   WTAB.'PROCEDURE_PERSO1' = FAUX;
 365 : * procedure_perso2 il faut appeler la procedur perso2:  pas_defa
 366 :   WTAB.'PROCEDURE_PERSO2' = FAUX;
 367 : * procedure_reac_meca  il faut appeler la procedur reev_mec :  pas_defa
 368 :   WTAB.'PROCEDURE_REAC_MECA' = FAUX ;
 369 : * procedure_reac_ther  il faut appeler la procedur reev_the :  pas_defa
 370 :   WTAB.'PROCEDURE_REAC_THER' = FAUX ;
 371 : * procedur_thermique non de la procedure thermique à appeler :  pas_defa
 372 :   WTAB.'PROCEDURE_THERMIQUE'='MOT' 'DUPONT';
 373 : * processeurs pour imposer l'option de parallelisme
 374 :   WTAB.'PROCESSEURS'='MOT' 'INCONNU';
 375 : * projection le champ de temperature clculé doit etere projete:  pas_defa
 376 :   WTAB.'PROJECTION'= FAUX;
 377 : * raidconst il existe des raideurs constantes :  pas_defa
 378 :   WTAB.'RAIDCONST' = FAUX;
 379 : * rayo il existe du rayonnement en thermique :  pas_defa
 380 :   WTAB.'RAYO'=FAUX;
 381 : * rayonnement on y met des pre-calculs pour le rayonnement  : transnon charther
 382 :   WTAB.'RAYONNEMENT'='MOT' 'INCONNU';
 383 : * Reactualisation de la matrice en grands deplacements pour 0,1 de defor
 384 :   WTAB.'REAC_GRANDS'= 0.1 ;
 385 : * logique disant pour charther si geometrie a changé : pasapas
 386 :   WTAB.'REA_GEOM' = FAUX ;
 387 : * reaprec utile pour les contacts unilateraux en dynamiques
 388 :   WTAB.'REAPREC'='MOT' 'INCONNU';
 389 : * recalcul =vrai il faut recalculer la raideur ..
 390 :   WTAB.'RECALCUL'= FAUX;
 391 : * recaop  = recalcul operateur
 392 : * recadet = oubli operateur (destruction de la rigi en commentaire)
 393 : * recari  = recalcul rigidite
 394 :   WTAB.'RECAOP'  = VRAI;
 395 :   WTAB.'RECADET' = FAUX;
 396 :   WTAB.'RECARI'  = FAUX;
 397 : * relaxation_dupont2 coeff de relaxation pour dupont2  :  pas_defa
 398 :   WTAB.'RELAXATION_DUPONT'=0.25;
 399 : * paramètre de relaxation du pas de temps en non convergence
 400 :   WTAB.'RELAXATION_NONCONV' = 1.;
 401 : * relaxation_thet   coeff de relaxation pour transnon :  pas_defa  transnon
 402 :   WTAB.'RELAXATION_THETA'= 1. ;
 403 : * renormalisation de l'itéré pour le limiter :  pas_defa
 404 :   WTAB.'RENORMALISATION' = FAUX;
 405 : * residu chpoint donnant le dernier residu d'équilibre : pasapas unpas
 406 :   WTAB.'RESIDU'='MOT' 'INCONNU';
 407 : * riblo_m  matrice de blocages des appuis unilateraux : unpas
 408 :   WTAB.'RIBLO_M'='MOT' 'INCONNU';
 409 : * riblo_t matrice de blocages des changement de phase : transnon
 410 :   WTAB.'RIBLO_T'='MOT' 'INCONNU';
 411 : * valeurr des rigidites constantes
 412 :   WTAB.'RIGIDITE_CONSTANTE'= 'MOT' 'INCONNU';
 413 : * second_membre c'est le second_membre du pas d'avant : unpas
 414 :   WTAB.'SECOND_MEMBRE'='MOT' 'INCONNU';
 415 : * sous_increment nombre de sous increment
 416 :   WTAB.'SOUS_INCREMENT'=1 ;
 417 : * test stabilite de la solution
 418 :   WTAB.'STABILITE' = FAUX;
 419 : * substepping  pour integrer en petites deformation :  pas_defa
 420 :   WTAB.'SUBSTEPPING'=FAUX;
 421 : * succes la procedur unpas s'est bien terminée pasapas unpas
 422 :   WTAB.'SUCCES'=VRAI;
 423 : * tabsauv table indiquant les options de sauv des resultats :  pas_defa
 424 :   WTAB.'TABSAUV'='MOT' 'INCONNU';
 425 : * talpha_reference valeur de la temperature de reference de alpha  :  pas_defa
 426 :   WTAB.'TALPHA_REFERENCE'='MOT' 'INCONNU';
 427 : * temperature_reference  temperature pour laquelle epth=0.  :  pas_defa
 428 :   WTAB.'TEMPERATURE_REFERENCE' = 'MOT' 'INCONNU' ;
 429 : * temps0 temps de calcul precedent : pas_defa pasapas
 430 :   WTAB.'TEMPS0'=0.D0;
 431 : * temps_calcules liste des tempsd a calculer  :  pas_defa
 432 :   WTAB.'TEMPS_CALCULES'='MOT' 'INCONNU';
 433 : * tem_calc liste des temps a calculer pour les proc thermique : pasapas
 434 :   WTAB.'TEM_CALC'='MOT' 'INCONNU';
 435 : * teta facteur pour la theta methode en consolidation  :  pas_defa
 436 :   WTAB.'TETA'=  1.0D0;
 437 : * tet0 champ de avant dernier champs de temperature, : pasapas dupont2
 438 :   WTAB.'TET0'=0;
 439 : * tet1 champ de temperature du pas precedent pasapas
 440 :   WTAB.'TET1'=0;
 441 : * tet2 champ de temperazture pour le temps courant : pasapas
 442 :   WTAB.'TET2'=0;
 443 : * tet_ini champ de temperature initial : pas_init
 444 :   WTAB.'TET_INI' = 'MOT' 'INCONNU' ;
 445 : * the1 le calcul inclus des modeles thermique :  pas_defa
 446 :   WTAB.'THE1' = FAUX;
 447 : * ther_courant champ de temperature proposé pour charther : dupont2 transnon
 448 :   WTAB.'THER_COURANT'='MOT' 'INCONNU';
 449 : * thm1 le calcul inclus des modeles thermohydriques : pas_defa
 450 :   WTAB.'THM1' = FAUX;
 451 : * tref temperature de reference 0 ou 273 : transnon dupont2
 452 :   WTAB.'TREF'='MOT' 'INCONNU';
 453 : * t_final objectif du temps a calculé si pas_ajuste pasapas
 454 :   WTAB.'T_FINAL'=0.D0;
 455 : * update_lagrangian  on veut faire du lagrangien reactualisé fefp: pas_defa
 456 :   WTAB.'UPDATE_LAGRANGIAN' = FAUX;
 457 : * vieuxpas dt precedent  pour dupont2
 458 :   WTAB.'VIEUXPAS'=0.D0;
 459 : * viscodommage il existe un modele de comportement viscodommage : pas_defa
 460 :   WTAB.'VISCODOMMAGE'=FAUX;
 461 : * viscoplastique il existe un modele de comportement viscoplastique  : pas_defa
 462 :   WTAB.'VISCOPLASTIQUE' = FAUX;
 463 : * visco_externe il existe un  modele de comportementvisco_externe  : pas_defa
 464 :   WTAB.'VISCO_EXTERNE'=FAUX;
 465 : * xdeno valeur pour calculer le critere de convergence force : unpas
 466 :   WTAB.'XDENO'=0.d0;
 467 : * xdenom valeur pour calculer le critere de convergence moment : unpa
 468 :   WTAB.'XDENOM'=0.d0;
 469 :   'SI' ( 'EXIS' PRECED 'CONTINUATION' );
 470 : *  c'est la reprise d'un fichier crée avec l'ancien PASAPAS
 471 :      iii = 'INDEX' PRECED;nii= 'DIME' iii;
 472 :      'REPETER' boui nii;
 473 :      imo=0;
 474 :      'SI' ('EGA' ('TYPE' iii.&boui ) 'MOT     '); imo=1; 'FINSI';
 475 :       'SI' ('EGA' imo 1);  aa= 'MOT' iii.&boui;
 476 :       'SINON';  aa=   iii.&boui; 'FINSI';
 477 :        'SI'('NON' ('EXIS' wtab aa));
 478 :          WTAB . aa = PRECED . aa;
 479 :        'FINSI';
 480 :      'FIN' BOUI;
 481 :   'FINSI';
 482 :   'SI' ('EXIS' PRECED 'REPRISE');
 483 :      'SI' ( > PRECED.'REPRISE' 0);
 484 :        ii= 'INDEX' (preced.'TEMPS');
 485 :        nn = 'DIME' ii; nsor = ii . nn;
 486 :        temps0= PRECED. 'TEMPS' . nsor;
 487 :        WTAB.'NSOR' = NSOR;
 488 :        WTAB.'TEMPS0'=temps0;
 489 :      'FINSI';
 490 :   'FINSI';
 491 :   
 492 : ************************************************************************
 493 : ************* CAS DE LA REPRISE D UNE WTAB EXISTANTE *******************
 494 : ************************************************************************
 495 : 'SINON';
 496 : * indices de wtab remis à leur valeur par defaut quand on re-entre
 497 : * dans pasapas
 498 :   WTAB.'AMORTISSEMENT'='MOT' 'INCONNU';
 499 :   WTAB.'AUTOMATIQUE'= FAUX;
 500 :   WTAB.'CHARGEMENT'='MOT' 'INCONNU';
 501 :   WTAB.'CHAR_DEFI'=FAUX;
 502 :   WTAB.'CHAR_THE' = FAUX;
 503 :   WTAB.'CONVERGENCE_FORCEE' = VRAI;
 504 :   WTAB.'CONVERGENCE_MONOTONE' = FAUX;
 505 :   WTAB.'DYNAMIQUE'=FAUX;
 506 :   WTAB.'FREQUENTIEL'= FAUX;
 507 :   WTAB.'FTOL'='MOT' 'INCONNU';
 508 :   WTAB.'INITIALISATION'= VRAI;
 509 :   WTAB.'ISAUVEGA'='MOT' 'INCONNU';
 510 :   WTAB.'ISAUVEGL'=FAUX;
 511 :   WTAB.'K_SIGMA'=FAUX;
 512 :   WTAB.'K_TANGENT'=FAUX;
 513 :   WTAB.'K_TANGENT_ITER0' = 'MOT' 'INCONNU' ;
 514 :   WTAB.'K_TANGENT_PERT' = FAUX ;
 515 :   WTAB.'K_TANGENT_SYME' = FAUX ;
 516 :   WTAB.'K_TANG_PERT_C1' = 1.D-3 ;
 517 :   WTAB.'K_TANG_PERT_C2' = 'MOT' 'INCONNU' ;
 518 :   WTAB.'LECONOMI'=FAUX;
 519 :   WTAB.'LIAISON_PERSISTANTE' =FAUX;
 520 :   WTAB.'LINESEARCH' = FAUX;
 521 :   WTAB.'MASSCONST'=FAUX;
 522 :   WTAB.'MTOL'='MOT' 'INCONNU';
 523 :   'SI' ('NON' ('EXISTE' WTAB  'OPERATEUR'));
 524 :       WTAB.'OPERATEUR' = 'MOT' 'INCONNU' ;
 525 :   'FINSI' ;
 526 :   'SI' ('EXISTE' WTAB 'NON_LOCAL') ;
 527 :     'SI' ('EGA' ('TYPE' WTAB.'NON_LOCAL') 'LOGIQUE') ;
 528 :       WTAB.'NLOC' = WTAB.'NON_LOCAL' ;
 529 :       WTAB.'NON_LOCAL' = 'MOT' 'INCONNU' ;
 530 :       'SI' WTAB.'NLOC' ; WTAB.'NON_LOCAL' = 'MOT' 'MOYE' ; 'FINSI' ;
 531 :     'SINON' ;
 532 :       'SI' ('NEG' ('TYPE' WTAB.'NON_LOCAL') 'MOT') ;
 533 :          WTAB.'NLOC' = FAUX ;
 534 :          WTAB.'NON_LOCAL' = 'MOT' 'INCONNU' ;
 535 :       'FINSI' ;
 536 :     'FINS' ;
 537 :   'SINON' ;
 538 :     WTAB.'NLOC' = FAUX ;
 539 :     WTAB.'NON_LOCAL' = 'MOT' 'INCONNU' ;
 540 :   'FINS' ;
 541 :   WTAB.'PAS_AJUSTE' = FAUX;
 542 :   WTAB.'PAS_REDU'=FAUX;
 543 :   WTAB.'PROCEDURE_CHAR_MECA'=FAUX;
 544 :   WTAB.'PROCEDURE_CHAR_THER'=FAUX;
 545 :   WTAB.'PROCEDURE_PARA_THER' = FAUX ;
 546 :   WTAB.'PROCEDURE_PERSO1' = FAUX;
 547 :   WTAB.'PROCEDURE_PERSO2' = FAUX;
 548 :   WTAB.'PROCEDURE_REAC_MECA' = FAUX ;
 549 :   WTAB.'PROCEDURE_REAC_THER' = FAUX ;
 550 :   WTAB.'PROCESSEURS'='MOT' 'INCONNU' ;
 551 :   WTAB.'PROJECTION'= FAUX;
 552 :   WTAB.'RAIDCONST' = FAUX;
 553 :   WTAB.'RAYO'=FAUX;
 554 :   WTAB.'RELAXATION_NONCONV' = 1.;
 555 :   WTAB.'RENORMALISATION' = FAUX;
 556 :   WTAB.'STABILITE' = FAUX;
 557 :   WTAB.'TEMPS_CALCULES'='MOT' 'INCONNU';
 558 :   WTAB.'THM1'= FAUX ;
 559 :   WTAB.'MOD_THM'='MOT' 'INCONNU';
 560 :   WTAB.'MAT_THM'='MOT' 'INCONNU';
 561 :   WTAB.'MOD_T'='MOT' 'INCONNU';
 562 :   WTAB.'MAT_T'='MOT' 'INCONNU';
 563 :   'SI'('NON' ('EXIS' WTAB 'REAC_GRANDS'));
 564 :     WTAB.'REAC_GRANDS' = 0.1 ;
 565 :   'SINO' ;
 566 :     'SI' ('NEG' ('TYPE' WTAB . 'REAC_GRANDS') 'FLOTTANT') ;
 567 :       WTAB.'REAC_GRANDS' = 0.1 ;
 568 :     'FINS' ;
 569 :   'FINSI';
 570 :   'SI' ('NON' ('EXISTE' WTAB 'TET_INI')) ;
 571 :      WTAB.'TET_INI' = 'MOT' 'INCONNU' ;
 572 :   'FINSI';
 573 :   WTAB.'FOR_DIFF'= FAUX ;
 574 :   WTAB.'MOD_DIF'='MOT' 'INCONNU';
 575 :   WTAB.'MAT_DIF'='MOT' 'INCONNU';
 576 : 'FINSI';
 577 :   
 578 : ************************************************************************
 579 : ************* REMPLISSAGE DE WTAB EN FONCTION DE PRECED ****************
 580 : ************************************************************************
 581 : 
 582 : *----------- calcul en frequentiel ---------------------
 583 : 'SI' (  'EGA' ('VALE' 'MODE') 'FREQ') ;
 584 :       WTAB.'FREQUENTIEL' = VRAI;
 585 : 'FINSI';
 586 : * verification donnée du modele ------------------------------
 587 : 'SI' ( 'EXISTE' PRECED 'MODELE');
 588 :     MO= PRECED.'MODELE';
 589 :     WTAB.'MO_TOTAL'=MO;
 590 :     TYP1 = 'TYPE' MO;
 591 :    'SI' ('NEG' TYP1 'MMODEL  ');
 592 :       'ERREUR' 'Le type du MODELE est incorrect';
 593 :    'FINSI';
 594 : 'SINON';
 595 :    'ERREUR' 'Il manque la donnee du modele.';
 596 : 'FINSI';
 597 : 
 598 : * verification existence chargement sinon création  ------------
 599 : 'SI' ('EXISTE' PRECED 'CHARGEMENT');
 600 :    TYP1 = 'TYPE' (PRECED.'CHARGEMENT');
 601 :    WTAB.'CHARGEMENT'=PRECED.'CHARGEMENT';
 602 :    'SI' ('NEG' TYP1 'CHARGEME');
 603 :       'ERREUR' 'Le type du CHARGEMENT est incorrect';
 604 :    'FINSI';
 605 : 'SINON';
 606 : * kich : est-ce indispensable ?/chargement deplacement initial
 607 : * 'SI' ('NON' ( ('EXISTE' PRECED  'PROCEDURE_CHAR_MECA')
 608 : *      'OU'  ('EXISTE' PRECED  'PROCEDURE_CHAR_THER')) );
 609 : *   'ERREUR' 'Il manque la donnee du chargement.';
 610 : *   'FINSI';
 611 :     MAGEO= 'EXTR' MO 'MAILLAGE' ;
 612 :     WTAB.'CHARGEMENT' = 'CHAR' 'FARFELU'
 613 :     ( 'MANU' 'CHPO' MAGEO 1 'FARF' 0.)
 614 :     ( 'EVOL' 'MANU'  ('PROG' 0. 10.e15 ) ('PROG' 0. 10.e15));
 615 : 'FINSI';
 616 : *  verification donnée caractéristiques et initialisation MA
 617 : 'SI' ('EXISTE' PRECED 'CARACTERISTIQUES');
 618 :    MA= PRECED.'CARACTERISTIQUES'  ;
 619 :    WTAB.'MA_TOTAL'=MA;
 620 :    TYP1 = 'TYPE' MA ;
 621 :    'SI' ('NEG' TYP1 'MCHAML  ');
 622 :       'ERREUR' 'Le type du champ de materiau est incorrect';
 623 :    'FINSI';
 624 :    WTAB.'CARACTERISTIQUES'=PRECED.'CARACTERISTIQUES'  ;
 625 : 'SINON';
 626 :    'ERREUR' 'Il manque la donnee du materiau.';
 627 : 'FINSI';
 628 : * verification type des temps_calculés (il peut ne pas y en avoir)
 629 : 'SI' ('EXISTE' PRECED 'TEMPS_CALCULES');
 630 :    TYP1 = 'TYPE' PRECED.'TEMPS_CALCULES';
 631 :    'SI' ('NEG' TYP1 'LISTREEL');
 632 :       'ERREUR' 'Le type de TEMPS_CALCULES est incorrect';
 633 :    'SINON' ;
 634 :         WTAB.'TEMPS_CALCULES'= PRECED.'TEMPS_CALCULES';
 635 :    'FINSI';
 636 : 'FINSI';
 637 : *
 638 : * Modele FREQENTIEL : liste automatique temps_calcules
 639 : *
 640 : 'SI' (WTAB.'FREQUENTIEL' 'ET'
 641 :                  ('NON' ('EXISTE' PRECED 'TEMPS_CALCULES')));
 642 :  l_zf = 'PROG' ; l_ii = 'PROG' 1. 'PAS' 0.3 4. 'PAS' 1. 10. ;
 643 :  'SI' ('EXISTE' WTAB.'CARACTERISTIQUES' 'FREQ') ;
 644 :   ccfr1 = 'EXCO' WTAB.'CARACTERISTIQUES' 'FREQ' 'NOID' ;
 645 :   'SI' ('EGA' ('TYPE' ccfr1) 'MCHAML  ') ;
 646 :  ncfr1 = 'EXTR' ccfr1 'NBZO' ;
 647 :   'REPE' vfr1 ncfr1 ;
 648 : ** hypothese 1 modele = 1 mode
 649 :    f1 = 'EXTR' ccfr1 'FREQ' &vfr1 1 1 ;
 650 : *
 651 : log_f1 = ('LOG' f1) / ('LOG' 10.) ;
 652 : 
 653 : e10_f1 = 'ENTI' log_f1 ;
 654 :   'SI' (log_f1 < 0.) ; e10_f1 = e10_f1 - 1 ; 'FINSI' ;
 655 :   'SI'((log_f1 - e10_f1) 'EGA' 0.) ; e10_f1 = e10_f1 - 1 ; 'FINSI' ;
 656 : p10_f1 = 10. ** e10_f1 ;
 657 : l_zf1 = 'PROG' (f1 - (p10_f1/10.)) (f1 - (p10_f1/100.))
 658 :       (f1 - (p10_f1/1000.)) (f1 + (p10_f1/1000.))
 659 :       (f1 + (p10_f1/100.)) (f1 + (p10_f1/10.)) ;
 660 : 
 661 :           l_i10 = l_ii * p10_f1 ;
 662 :    'SI' (('DIME' l_zf) 'EGA' 0) ;
 663 :       e10_min = e10_f1 ; e10_max = e10_f1 + 1 ;
 664 :      l_zf = 'ORDO' (l_i10 'ET' l_zf1) 'UNIQ' ;
 665 :    'SINON' ;
 666 :      l_zf0 = l_zf ;
 667 :      'SI' ((e10_f1 '>EG' e10_min) 'ET' (e10_f1 < e10_max)) ;
 668 :       l_zf = 'ORDO' (l_zf 'ET' l_zf1) 'UNIQ' ;
 669 :      'SINON' ;
 670 :        'SI' (e10_f1 < e10_min) ;
 671 :         e10_u = e10_f1 ;
 672 :         'REPE'  b_lz ;
 673 :          l_zf0 = l_i10 'ET' l_zf0 ; e10_u = e10_u + 1 ;
 674 :          'SI' (e10_u 'EGA' e10_min) ; 'QUIT' b_lz ; 'FINSI'  ;
 675 :          l_i10 = l_i10 * 10 ;
 676 :         'FIN'  b_lz ;
 677 :         e10_min = e10_f1 ;
 678 :         l_zf = 'ORDO' (l_zf0 'ET' l_zf1) 'UNIQ' ;
 679 :        'FINSI'  ;
 680 :        'SI' (e10_f1 '>EG' e10_max) ;
 681 :         e10_u = e10_f1 ;
 682 :         'REPE'  b_lz ;
 683 :          l_zf0 = l_i10 'ET' l_zf0 ; e10_u = e10_u - 1 ;
 684 :          'SI' (e10_u < e10_max) ; 'QUIT' b_lz ; 'FINSI'  ;
 685 :          l_i10 = l_i10 / 10 ;
 686 :         'FIN'  b_lz ;
 687 :         e10_max = e10_f1 + 1;
 688 :         l_zf = 'ORDO' (l_zf0 'ET' l_zf1) 'UNIQ' ;
 689 :        'FINSI'  ;
 690 :      'FINSI'  ;
 691 :    'FINSI'  ;
 692 :   'FIN'  vfr1 ;
 693 :   'SINON' ;
 694 :   l_zf = l_ii ;
 695 :   'FINSI' ;
 696 :   WTAB.'TEMPS_CALCULES' = l_zf ;
 697 :  'SINON' ;
 698 :   WTAB.'TEMPS_CALCULES' = l_ii ;
 699 :  'FINSI' ;
 700 : 'FINSI' ;
 701 : 'SI' (WTAB.'FREQUENTIEL') ;
 702 :   'REPETER' BTFRE ;
 703 :     TI = 'EXTRAIRE'  WTAB.'TEMPS_CALCULES' &BTFRE ;
 704 :     'SI' (TI '>' 0.D0) ;
 705 :        WTAB.'TEMPS0' = TI ;
 706 :        'QUITTER' BTFRE ;
 707 :     'FINSI' ;
 708 :  'FIN' BTFRE ;
 709 : 'FINSI';
 710 : *
 711 : *-------   initialisation deltaiter
 712 : 'SI' ('EXISTE' PRECED 'DELTAITER');
 713 :    WTAB.'DELTAITER'=PRECED.'DELTAITER';
 714 : 'FINSI' ;
 715 : *------ existe-t-il une demande de pas automatique?
 716 : 'SI' ('EXISTE' PRECED 'AUTOMATIQUE');
 717 :   WTAB.'AUTOMATIQUE'= PRECED.'AUTOMATIQUE';
 718 : 'FINSI' ;
 719 : *------------ y-a-t-il la donnée FTOL puis MTOL?
 720 : 'SI' ('EXISTE' PRECED 'FTOL' );
 721 :    WTAB.'FTOL' = PRECED.'FTOL';
 722 : 'FINSI';
 723 : 'SI' ('EXISTE' PRECED 'MTOL' );
 724 :    WTAB.'MTOL' = PRECED.'MTOL';
 725 : 'FINSI';
 726 : *------------ y-a-t-il l'option 'PAS_AJUSTE'?
 727 : 'SI' ('EXISTE' PRECED 'PAS_AJUSTE');
 728 :     WTAB.'PAS_AJUSTE' =  PRECED.'PAS_AJUSTE';
 729 : 'SINON';
 730 :    'SI'  (('NON' ( 'EXISTE' PRECED 'TEMPS_CALCULES' ))
 731 :      'ET' ('EGA' ('TYPE' WTAB.'TEMPS_CALCULES') 'MOT')) ;
 732 :          WTAB.'PAS_AJUSTE' = VRAI;
 733 :         'SI'  ( 'NON' ( 'EXISTE' PRECED 'TEMPS_SAUVES' ));
 734 :             'ERREUR'
 735 :           'Il manque la donnée des temps a sauver ou a calculer';
 736 :         'FINSI';
 737 :         WTAB.'TEMPS_CALCULES'= PRECED.'TEMPS_SAUVES';
 738 :         WTAB.'TEMPS_SAUVES' = PRECED.'TEMPS_SAUVES';
 739 :    'FINSI';
 740 : 'FINSI';
 741 : 'SI' WTAB.'AUTOMATIQUE';  WTAB.'PAS_AJUSTE'= FAUX; 'FINSI';
 742 : 
 743 : * ---------- verif existence des termps à calculer
 744 : 'SI' ( 'EGA' WTAB.'TEMPS_CALCULES' 'INCONNU');
 745 :     'ERREUR' 'Il manque la donnée des TEMPS_CALCULES ';
 746 : 'FINSI';
 747 : 
 748 : *----------faut-il calculer l'opérateur de résolutions?
 749 :   'SI' ('NEG' WTAB.'OPERATEUR' 'INCONNU');
 750 :      WTAB.'RECAOP' = FAUX ;
 751 :   'FINSI' ;
 752 : *-----------existe-t-il une procedure chargement mécanique?
 753 : 'SI'  ('EXISTE' PRECED  'PROCEDURE_CHAR_MECA');
 754 :   WTAB.'PROCEDURE_CHAR_MECA'= PRECED . 'PROCEDURE_CHAR_MECA';
 755 : 'FINSI';
 756 : 
 757 : *-----------a-t-on  une option de parallelisme
 758 : 'SI'  ('EXISTE' PRECED  'PROCESSEURS');
 759 :   WTAB.'PROCESSEURS'= 'MOT' PRECED  . 'PROCESSEURS';
 760 : 'FINSI';
 761 : 
 762 : *---------existe-t-il une procédure chargement thermique?
 763 : 'SI'  ('EXISTE' PRECED  'PROCEDURE_CHAR_THER');
 764 :   WTAB.'PROCEDURE_CHAR_THER'= PRECED . 'PROCEDURE_CHAR_THER';
 765 : 'FINSI';
 766 : 
 767 : *----- Existe-t-il une procedure parametres externes en thermique ?
 768 : 'SI' ('EXISTE' PRECED 'PROCEDURE_PARA_THER') ;
 769 :   WTAB.'PROCEDURE_PARA_THER' = PRECED.'PROCEDURE_PARA_THER' ;
 770 : 'FINSI';
 771 : 
 772 : *----------la procédure a utilisée en thermique est-elle précisée
 773 : *-----------si non mettre  nonlinéaire
 774 : WTAB. 'PROCEDURE_THERMIQUE' = 'NONLINEAIRE';
 775 : 'SI' ('EXISTE' PRECED 'PROCEDURE_THERMIQUE');
 776 :    WTAB. 'PROCEDURE_THERMIQUE' = PRECED.'PROCEDURE_THERMIQUE';
 777 : 'FINSI';
 778 : *
 779 : *   quelques initialisations des variables locales
 780 : *
 781 : * existe-t-il une formulation THERMIQUE CONDUCTION dans MODELE ?
 782 : * existe-t-il une formulation  THERMIQUE  ADVECTION  dans MODELE ?
 783 : * existe-t-il une formulation THERMIQUE CONVECTION dans MODELE ?
 784 : * existe-t-il une formulation THERMIQUE RAYONNEMENT dans MODELE
 785 : * existe-t-il une formulation THERMIQUE PHASE?
 786 : 'SI' ('EXISTE' MO 'FORM' 'THERMIQUE');
 787 :    'SI'('EXIS' PRECED 'CELSIUS');
 788 :      WTAB.'CELSIUS'=PRECED.'CELSIUS';
 789 :    'FINSI';
 790 :    WTAB.'THE1'=VRAI;
 791 :    WTAB.'MOD_THE' = 'EXTR' MO 'FORM' 'THERMIQUE';
 792 :    WTAB.'MAT_THE' = 'REDU' MA WTAB.'MOD_THE';
 793 :    WTAB.'MOD_T'   = WTAB.'MOD_THE' ;
 794 :    WTAB.'MAT_T'   = WTAB.'MAT_THE' ;
 795 :    WTAB.'THM1'= 'EXIS' MO 'FORM' 'THERMOHYDRIQUE' ;
 796 :    'SI' WTAB.'THM1' ;
 797 :      WTAB.'PROCEDURE_THERMIQUE'='NONLINEAIRE';
 798 :      WTAB.'MOD_THM' = 'EXTR' MO 'FORM' 'THERMOHYDRIQUE' ;
 799 :      WTAB.'MAT_THM' = 'REDU' MA WTAB.'MOD_THM';
 800 :      WTAB.'MOD_T'   = WTAB.'MOD_T' 'ET' WTAB.'MOD_THM' ;
 801 :      WTAB.'MAT_T'   = WTAB.'MAT_T' 'ET' WTAB.'MAT_THM' ;
 802 :    'FINSI' ;
 803 :    WTAB.'MOD_TOT' = WTAB.'MOD_T' ;
 804 :    WTAB.'MAT_TOT' = WTAB.'MAT_T' ;
 805 :    WTAB.'PHASE' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'PHASE';
 806 :    'SI' WTAB.'PHASE';
 807 :      WTAB.'PROCEDURE_THERMIQUE'='NONLINEAIRE';
 808 :      WTAB.'MOD_PHA' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'PHASE';
 809 :      WTAB.'MAT_PHA' = 'REDU' WTAB.'MAT_THE' WTAB.'MOD_PHA';
 810 :      WTAB.'BLO_PHASE' = PMAT WTAB.'MOD_PHA';
 811 :    'FINSI';
 812 :    'SI' ( 'EXISTE' WTAB.'MOD_THE' 'MATE' 'CONVECTION');
 813 :        WTAB.'MOD_CON' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'CONVECTION';
 814 :        WTAB.'MAT_CON'='REDU' WTAB.'MAT_TOT' WTAB.'MOD_CON';
 815 :        WTAB.'CONVECTION'=VRAI;
 816 :    'FINSI';
 817 :    'SI' ( 'EXISTE' WTAB.'MOD_THE' 'MATE' 'RAYONNEMENT');
 818 :        WTAB.'PROCEDURE_CHAR_THER' = VRAI ;
 819 :        WTAB.'RAYO'=VRAI;
 820 :        WTAB.'MOD_RAY'= 'EXTR' WTAB.'MOD_THE' 'MATE' 'RAYONNEMENT';
 821 :        WTAB.'MAT_RAY' ='REDU' WTAB.'MAT_TOT' WTAB.'MOD_RAY';
 822 :        WTAB.'RAYONNEMENT'='PRRA'  WTAB.'MOD_RAY';
 823 :    'FINSI';
 824 :    'SI' ( 'EXISTE' WTAB.'MOD_THE' 'MATE' 'ADVECTION');
 825 :        WTAB.'MOD_ADV' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'ADVECTION';
 826 :        WTAB.'MAT_ADV'='REDU' WTAB.'MAT_TOT' WTAB.'MOD_ADV';
 827 :        WTAB.'ADVECTION'=VRAI;
 828 :    'FINSI';
 829 :    'SI' ( 'EXISTE' WTAB.'MOD_THE' 'MATE' 'CONDUCTION');
 830 :        WTAB.'MOD_COND'= 'EXTR' WTAB.'MOD_THE' 'MATE' 'CONDUCTION';
 831 :        WTAB.'MAT_COND'= 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_COND';
 832 :        WTAB.'CONDUCTION'=VRAI;
 833 :     'FINSI';
 834 :    'SI' ( 'EXIS' PRECED 'BLOCAGES_THERMIQUES' );
 835 :       WTAB. 'BLOCAGES_THERMIQUES'=PRECED. 'BLOCAGES_THERMIQUES';
 836 :    'FINSI';
 837 : 'SINON' ;
 838 :   'SI' ('EXISTE' MO 'FORM' 'THERMOHYDRIQUE');
 839 :     'SI'('EXIS' PRECED 'CELSIUS');
 840 :       WTAB.'CELSIUS'=PRECED.'CELSIUS';
 841 :     'FINSI';
 842 :     WTAB.'THE1' = FAUX;
 843 :     WTAB.'THM1' = VRAI;
 844 :     WTAB.'PROCEDURE_THERMIQUE'='NONLINEAIRE';
 845 :     WTAB.'MOD_THM' = 'EXTR' MO 'FORM' 'THERMOHYDRIQUE';
 846 :     WTAB.'MAT_THM' = 'REDU' MA WTAB.'MOD_THM';
 847 :     WTAB.'MOD_T'   = WTAB.'MOD_THM' ;
 848 :     WTAB.'MAT_T'   = WTAB.'MAT_THM' ;
 849 :     WTAB.'MOD_TOT' = WTAB.'MOD_T' ;
 850 :     WTAB.'MAT_TOT' = WTAB.'MAT_T' ;
 851 :     WTAB.'PHASE' = FAUX ;
 852 :     'SI' ('EXISTE' MO 'MATE' 'CONVECTION');
 853 :       WTAB.'MOD_CON' = 'EXTR' MO 'MATE' 'CONVECTION';
 854 :       WTAB.'MAT_CON'='REDU' MA WTAB.'MOD_CON';
 855 :       WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_CON';
 856 :       WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_CON';
 857 :       WTAB.'CONVECTION' = VRAI;
 858 :     'FINSI';
 859 :     'SI' ('EXISTE' MO 'MATE' 'RAYONNEMENT');
 860 :       WTAB.'PROCEDURE_CHAR_THER' = VRAI ;
 861 :       WTAB.'RAYO'=VRAI;
 862 :       WTAB.'MOD_RAY'= 'EXTR'  MO 'MATE' 'RAYONNEMENT';
 863 :       WTAB.'MAT_RAY' = 'REDU' MA WTAB.'MOD_RAY';
 864 :       WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_RAY';
 865 :       WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_RAY';
 866 :     'FINSI';
 867 :     'SI' ('EXISTE' MO 'MATE' 'CONDUCTION');
 868 :       WTAB.'MOD_COND' = 'EXTR' MO 'MATE' 'CONDUCTION';
 869 :       WTAB.'MAT_COND'='REDU' MA WTAB.'MOD_COND';
 870 :       WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_COND';
 871 :       WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_COND';
 872 :       WTAB.'CONVECTION' = VRAI;
 873 :     'FINSI';
 874 :     'SI' ('EXISTE' MO 'MATE' 'ADVECTION');
 875 :       WTAB.'MOD_ADV' = 'EXTR' MO 'MATE' 'ADVECTION';
 876 :       WTAB.'MAT_ADV'='REDU' MA WTAB.'MOD_ADV';
 877 :       WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_ADV';
 878 :       WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_ADV';
 879 :       WTAB.'ADVECTION' = VRAI;
 880 :     'FINSI';
 881 :     'SI' ( 'EXIS' PRECED 'BLOCAGES_THERMIQUES' );
 882 :        WTAB. 'BLOCAGES_THERMIQUES'=PRECED. 'BLOCAGES_THERMIQUES';
 883 :     'FINSI';
 884 :   'FINSI';
 885 : 'FINSI';
 886 : * FOR_THER = VRAI : on doit resoudre de la thermique/THM : pas_defa
 887 : WTAB . 'FOR_THER' = WTAB.'THE1' 'OU' WTAB.'THM1' ;
 888 : *                                                                     *
 889 : * Initialisation modele DIFFUSION :                                   *
 890 : * On rajoute la formulation diffusion a la thermique pour TRANSNON :  *
 891 : 'SI' ('EXIS' MO 'FORM' 'DIFFUSION') ;
 892 :   WTAB . 'FOR_DIFF' = VRAI ;
 893 :   WTAB . 'MOD_DIF'  = 'EXTR' MO 'FORM' 'DIFFUSION' ;
 894 :   WTAB . 'MAT_DIF'  = 'REDU' MA WTAB . 'MOD_DIF' ;
 895 :   WTAB . 'PROCEDURE_THERMIQUE' = 'NONLINEAIRE';
 896 :   'SI' WTAB.'THE1' ;
 897 :     WTAB.'MOD_THE' = WTAB.'MOD_THE' 'ET' WTAB.'MOD_DIF' ;
 898 :     WTAB.'MAT_THE' = WTAB.'MAT_THE' 'ET' WTAB.'MAT_DIF' ;
 899 : *?  WTAB.'MOD_T'   = WTAB.'MOD_T'   'ET' WTAB.'MOD_DIF' ;
 900 : *?  WTAB.'MAT_T'   = WTAB.'MAT_T'   'ET' WTAB.'MAT_DIF' ;
 901 :     WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ;
 902 :     WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_DIF' ;
 903 :   'SINON' ;
 904 :     WTAB.'MOD_THE' = WTAB.'MOD_DIF' ;
 905 :     WTAB.'MAT_THE' = WTAB.'MAT_DIF' ;
 906 :     'SI' WTAB.'THM1' ;
 907 : *?    WTAB.'MOD_T'   = WTAB.'MOD_T'   'ET' WTAB.'MOD_DIF' ;
 908 : *?    WTAB.'MAT_T'   = WTAB.'MAT_T'   'ET' WTAB.'MAT_DIF' ;
 909 :       WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ;
 910 :       WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_DIF' ;
 911 :     'SINON' ;
 912 : *?    WTAB.'MOD_T'   = WTAB.'MOD_DIF' ;
 913 : *?    WTAB.'MAT_T'   = WTAB.'MAT_DIF' ;
 914 :       'SI' ('NEG' WTAB.'MOD_TOT' 'INCONNU') ;
 915 :         WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ;
 916 :         WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_DIF' ;
 917 :       'SINON' ;
 918 :         WTAB.'MOD_TOT' = WTAB.'MOD_DIF' ;
 919 :         WTAB.'MAT_TOT' = WTAB.'MAT_DIF' ;
 920 :       'FINSI' ;
 921 :     'FINSI' ;
 922 : 
 923 :   'FINSI' ;
 924 :   'SI' ('EXIS' PRECED 'BLOCAGES_DIFFUSIONS') ;
 925 :     WTAB . 'BLOCAGES_DIFFUSIONS' = PRECED .  'BLOCAGES_DIFFUSIONS';
 926 :   'FINSI' ;
 927 : 'FINSI' ;
 928 : *                                                                      *
 929 : * Toutes les inconnues passees a TRANSNON :
 930 : 'SI' ('NEG' (WTAB.'MOD_TOT') 'INCONNU') ;
 931 :   WTAB . 'INCO_TOT' = 'EXTR' WTAB . 'MOD_TOT' 'DEPL' ;
 932 :   WTAB . 'DUAL_TOT' = 'EXTR' WTAB . 'MOD_TOT' 'FORC' ;
 933 : 'FINS' ;
 934 : *                                                                     *
 935 : *---------------- Formulations mecanique / poreux / contact -----
 936 : *                                                                     *
 937 : NOLIUTIL = FAUX ;
 938 : 'SI' ('EXISTE' MO 'FORM' 'MECANIQUE');
 939 :    WTAB.'MEC1'=VRAI;
 940 :    WTAB.'MOD_MEC' = 'EXTR' MO 'FORM' 'MECANIQUE';
 941 :    WTAB.'MAT_MEC' = 'REDU' MA  WTAB.'MOD_MEC';
 942 : 'FINSI';
 943 : 'SI' ('EXIS' MO 'FORM' 'CONTACT' ) ;
 944 :    WTAB.'CONTACT' = VRAI ;
 945 :    WTAB.'GRANDS_DEPLACEMENTS' = VRAI;
 946 :    MODCONTA='EXTR' MO  'FORM' 'CONTACT';
 947 :    WTAB.'MODCONTA'=MODCONTA;
 948 :    'SI' ( ('EXIS'  MODCONTA  'MATE' 'COULOMB') 'OU'
 949 :           ('EXIS'  MODCONTA  'MATE' 'FROCABLE') ) ;
 950 :       WTAB.'CAFROTTE' = VRAI ;
 951 :       WTAB.'MOD_FRO' = 'EXTR' MO 'COMP' 'FROTTANT';
 952 :       WTAB.'MAT_FRO'= 'REDU' MA  WTAB.'MOD_FRO' ;
 953 :    'FINSI';
 954 : 'FINSI';
 955 : 'SI' ('EXISTE' MO 'FORM' 'POREUX');
 956 :    WTAB.'POR1'=VRAI;
 957 :    WTAB.'MOD_POR' = 'EXTR' MO 'FORM' 'POREUX';
 958 :    WTAB.'MAT_POR' = 'REDU' MA  WTAB.'MOD_POR';
 959 :    WTAB.'MAI_POR' = 'EXTR' WTAB.'MOD_POR' 'MAIL';
 960 :    WTAB.'MOT_POR' = 'MOTS' 'FP' 'FPQ' 'FTP' ;
 961 : 'FINSI';
 962 : * FOR_MECA = VRAI : on doit resoudre de la MECANIQUE : pas_defa
 963 : WTAB . 'FOR_MECA' = WTAB . 'MEC1' 'OU' WTAB . 'POR1' ;
 964 : *                                                                     *
 965 : *----------- Test sur les differentes formulation du modele -------
 966 : *                                                                     *
 967 : 'SI'
 968 :   ('NON' (WTAB.'FOR_MECA' 'OU' WTAB.'FOR_THER' 'OU' WTAB.'FOR_DIFF')) ;
 969 :    'ERREUR' 'Le modele ne correspond a aucune formulation valable';
 970 : 'FINSI';
 971 : 'SI' ('EXISTE' MO 'FORM' 'LIAISON');
 972 :    WTAB.'MOD_LIA' = 'EXTR' MO 'FORM' 'LIAISON' ;
 973 :    WTAB.'MAT_LIA' = 'REDU' MA WTAB.'MOD_LIA' ;
 974 : 'FINSI' ;
 975 : *---------- Calcul purement thermique ? ou couplage? -------
 976 : 'SI' WTAB.'FOR_THER';
 977 :   'SI'  WTAB.'FOR_MECA' ;
 978 :       WTAB.'COUPLAGE' = VRAI;
 979 :       'SI' ('NON' ('EXIS' PRECED 'PROJECTION'));
 980 :           WTAB.'PROJECTION' = FAUX;
 981 :       'SINON';
 982 :           WTAB.'PROJECTION'=PRECED.'PROJECTION';
 983 :       'FINSI';
 984 :   'SINON';
 985 :       WTAB.'PAS_AJUSTE'=FAUX;
 986 :   'FINSI';
 987 : 'FINSI';
 988 : *------------- existe-t-il un chargement thermique ? -----------
 989 : 
 990 : 'SI' (('EXISTE' (WTAB.'CHARGEMENT') 'T') 'OU' WTAB.'COUPLAGE');
 991 :     WTAB.'CHAR_THE' = VRAI;
 992 :     'SI' ('EXISTE' PRECED 'TEMPERATURE_REFERENCE') ;
 993 :        WTAB.'TEMPERATURE_REFERENCE' = PRECED.'TEMPERATURE_REFERENCE' ;
 994 :     'SINON';
 995 : * WTAB.'TEMPERATURE_REFERENCE' vaut le MOT 'INCONNU' si jamais utilise
 996 :        'SI' ('EGA' (WTAB.'TEMPERATURE_REFERENCE') 'INCONNU') ;
 997 :          'SI' ('EXIS' PRECED 'TEMPERATURES');
 998 :            WTAB.'TEMPERATURE_REFERENCE' = PRECED.'TEMPERATURES'. 0 ;
 999 :          'SINON' ;
1000 :            'SI' WTAB.'COUPLAGE' ;
1001 :              WTAB.'TEMPERATURE_REFERENCE' = 'CHAN' 'CHPO'
1002 :                 ('ZERO' WTAB.'MOD_THE' 'TEMPERATURES') WTAB.'MOD_THE';
1003 :            'SINON' ;
1004 :              WTAB.'TEMPERATURE_REFERENCE' = 'TIRE' WTAB.'CHARGEMENT'
1005 :                                                    'T' WTAB.'TEMPS0' ;
1006 :            'FINSI' ;
1007 :          'FINSI' ;
1008 :        'FINSI' ;
1009 :     'FINSI';
1010 :     'SI' ('EXISTE' PRECED 'TALPHA_REFERENCE');
1011 :          WTAB.'TALPHA_REFERENCE' = PRECED.'TALPHA_REFERENCE';
1012 :     'SINON';
1013 :          WTAB.'TALPHA_REFERENCE' = 0.;
1014 :     'FINSI';
1015 : * WTAB.'TET_INI' vaut le MOT 'INCONNU' si jamais utilise
1016 :     'SI' ('EGA' WTAB.'TET_INI' 'INCONNU') ;
1017 :        'SI' ('EXIS' PRECED 'TEMPERATURES') ;
1018 :           WTAB.'TET_INI' = PRECED.'TEMPERATURES'. 0 ;
1019 :        'SINON' ;
1020 :           'SI' ('EXISTE' (WTAB.'CHARGEMENT') 'T') ;
1021 :             WTAB.'TET_INI'= 'TIRE' WTAB.'CHARGEMENT' 'T' WTAB.'TEMPS0' ;
1022 :           'SINON';
1023 :             WTAB.'TET_INI' = 'CHAN' 'CHPO' WTAB.'MOD_THE'
1024 :                  ('ZERO'  WTAB.'MOD_THE' 'TEMPERATURES') ;
1025 :           'FINSI';
1026 :        'FINSI' ;
1027 :     'FINSI';
1028 : 'FINSI';
1029 : *------------ existe-t-il un chargement en deformations ?  --------
1030 : 'SI' ('EXISTE' (WTAB.'CHARGEMENT') 'DEFI');
1031 :       WTAB.'CHAR_DEFI' = VRAI;
1032 : 'FINSI';
1033 : 
1034 : *-------- y a t-il de la dynamique ---------------------
1035 : 'SI' (  'EXISTE' PRECED 'DYNAMIQUE') ;
1036 :       WTAB.'DYNAMIQUE' = PRECED.'DYNAMIQUE';
1037 : *--------- et de l'amortissement
1038 :       'SI' ('EXISTE' PRECED 'AMORTISSEMENT' );
1039 :           WTAB.'AMORTISSEMENT'  =   'EXTR'  PRECED.'AMORTISSEMENT'
1040 :                                        'RIGI' 'NOMU' ;
1041 :       'FINSI';
1042 : 'FINSI';
1043 : *-------- y a t-il de la liaison persistante ? ---------
1044 : 'SI' ( 'EXISTE' PRECED 'LIAISON_PERSISTANTE' ) ;
1045 :     WTAB.'LIAISON_PERSISTANTE' = PRECED.'LIAISON_PERSISTANTE';
1046 : 'FINSI';
1047 : *-- Dans le cas de la formulation POREUX y-a-t-il consolidation ? --
1048 : *--- Dans ce cas il faut donner la matrice de permeabilite et ne ---
1049 : *--------------------- pas etre en dynamique -----------------------
1050 : 
1051 : 'SI' ('EXISTE' PRECED 'CONSOLIDATION')  ;
1052 :     WTAB.'CONSOLIDATION' =  PRECED.'CONSOLIDATION'  ;
1053 : 'FINSI';
1054 : 'SI' WTAB.'POR1';
1055 :    'SI' (WTAB.'CONSOLIDATION');
1056 :        'SI' ('NON' ('EXISTE' PRECED 'PERMEABILITE'));
1057 :           'ERREUR' 'Il faut donner la matrice de permeabilite';
1058 :         'SINON';
1059 :            WTAB.'PERMEABILITE'=PRECED.'PERMEABILITE';
1060 :        'FINSI';
1061 :        'SI' (  'EXISTE' PRECED 'TETA' ) ;
1062 :           WTAB.'TETA' = PRECED.'TETA';
1063 :        'FINSI';
1064 :        'SI' ( WTAB.'DYNAMIQUE' );
1065 :           'ERREUR' ' On ne peut pas etre en dynamique.' ;
1066 :        'FINSI';
1067 :    'FINSI';
1068 : 'FINSI';
1069 : 
1070 : *------ Est on en convergence forcée ? ----------------------------
1071 : 'SI' ( 'EXISTE' PRECED 'CONVERGENCE_FORCEE');
1072 :    WTAB.'CONVERGENCE_FORCEE'= PRECED.'CONVERGENCE_FORCEE';
1073 : 'SINON';
1074 :     'SI' ( 'NON'  WTAB.'AUTOMATIQUE');
1075 :         WTAB.'CONVERGENCE_FORCEE' = VRAI;
1076 :     'FINSI';
1077 : 'FINSI';
1078 : 'SI' WTAB.'CONVERGENCE_FORCEE';
1079 :     WTAB.'MAXITERATION' = 250;
1080 :    'SI' ('EXISTE' PRECED 'MAXDEFOR');
1081 :         WTAB.'MAXDEFOR'=PRECED.'MAXDEFOR' ;
1082 :    'FINSI';
1083 :    'SI' ('EXISTE' PRECED 'RELAXATION_NONCONV');
1084 :         WTAB.'RELAXATION_NONCONV'=PRECED.'RELAXATION_NONCONV' ;
1085 :    'FINSI';
1086 : 'FINSI';
1087 : 
1088 : *------ A t'on un predicteur? ----------------------
1089 : 'SI' ( 'EXISTE' PRECED 'PREDICTEUR');
1090 :    WTAB.'PREDICTEUR'= 'MOT' PRECED.'PREDICTEUR';
1091 : 'FINSI';
1092 : 
1093 : *------ test stabilite ----------------------
1094 : 'SI' ( 'EXISTE' PRECED 'STABILITE');
1095 :  'SI' ('EGA' PRECED.'STABILITE' VRAI);
1096 :    WTAB.'STABILITE'= VRAI;
1097 :  'SINON';
1098 :    WTAB.'STABILITE'= FAUX;
1099 :  'FINSI';
1100 : 'FINSI';
1101 : 
1102 : *------ LINESEARCH ----------------------
1103 : 'SI' ( 'EXISTE' PRECED 'LINESEARCH');
1104 :  'SI' ('EGA' PRECED.'LINESEARCH' VRAI);
1105 :    WTAB.'LINESEARCH'= VRAI;
1106 :    WTAB.'GRANDS_DEPLACEMENTS' = VRAI;
1107 :  'SINON';
1108 :    WTAB.'LINESEARCH'= FAUX;
1109 :  'FINSI';
1110 : 'FINSI';
1111 : 
1112 : *------ INITIALISATION ----------------------
1113 : 'SI' ( 'EXISTE' PRECED 'INITIALISATION');
1114 :    WTAB.'INITIALISATION'= PRECED . 'INITIALISATION';
1115 : 'FINSI';
1116 : *------ RENORMALISATION ----------------------
1117 : 'SI' ( 'EXISTE' PRECED 'RENORMALISATION');
1118 :    WTAB.'RENORMALISATION' = PRECED . 'RENORMALISATION';
1119 : 'FINSI';
1120 : *------ CONVERGENCE_MONOTONE ----------------------
1121 : 'SI' ( 'EXISTE' PRECED 'CONVERGENCE_MONOTONE');
1122 :    WTAB.'CONVERGENCE_MONOTONE' = PRECED . 'CONVERGENCE_MONOTONE';
1123 : 'FINSI';
1124 : 
1125 : *----- est-on en convergence MEC_THE?   -------------
1126 : 
1127 : 'SI'  ('EXISTE' PRECED 'CONVERGENCE_MEC_THE');
1128 :    WTAB.'CONVERGENCE_MEC_THE'=PRECED.'CONVERGENCE_MEC_THE';
1129 : 'FINSI';
1130 : 'SI' WTAB.'CONVERGENCE_MEC_THE';
1131 :    WTAB.'AUTOMATIQUE'=FAUX;
1132 :    WTAB.'CONVERGENCE_FORCEE' =FAUX;
1133 :    'SI'(WTAB.'PAS_AJUSTE');
1134 :    'ERREUR'  'Options CONVERGENCE_MEC_THE et PAS_AJUSTE incompatibles';
1135 :    'FINSI';
1136 :    'SI' ('EXISTE' PRECED 'CRITERE_COHERENCE') ;
1137 :      WTAB.'CRITERE_COHERENCE'=PRECED.'CRITERE_COHERENCE' ;
1138 :    'SINO' ;
1139 :      'SI' ('EXISTE' PRECED 'PRECISION') ;
1140 :        WTAB.'CRITERE_COHERENCE' = PRECED.'PRECISION' ;
1141 :      'SINO' ;
1142 :        WTAB.'CRITERE_COHERENCE' = WTAB.'PRECISION' ;
1143 :      'FINS' ;
1144 :    'FINSI' ;
1145 :    'SI' ('EXISTE' PRECED 'PROCEDURE_CONV') ;
1146 :       WTAB.'PROCEDURE_CONV'=PRECED.'PROCEDURE_CONV' ;
1147 :    'FINSI' ;
1148 :    'SI' ('EXISTE' PRECED 'NB_BOTH');
1149 :      WTAB.'BOU_METH'=PRECED.'NB_BOTH';
1150 :    'SINON';
1151 :      WTAB.'BOU_METH'=10;
1152 :    'FINSI';
1153 : 'FINSI';
1154 : 
1155 : *---- Existe-t-il une procedure de reactualisation de
1156 : *---- données matériaux
1157 : 'SI' ('EXISTE' PRECED 'PROCEDURE_REAC_MECA');
1158 :     WTAB.'PROCEDURE_REAC_MECA'=PRECED.'PROCEDURE_REAC_MECA' ;
1159 : 'FINSI' ;
1160 : 'SI' ('EXISTE' PRECED 'PROCEDURE_REAC_THER');
1161 :     WTAB.'PROCEDURE_REAC_THER' =PRECED.'PROCEDURE_REAC_THER' ;
1162 : 'FINSI' ;
1163 : 
1164 : *-------  Initialisation du nombre maximum de sous-pas autorisees ------
1165 : 'SI' ( 'EXISTE' PRECED 'MAXSOUSPAS');
1166 :    WTAB.'MAXSOUSPAS' = PRECED.'MAXSOUSPAS' ;
1167 : 'FINSI';
1168 : 
1169 : *-------  Initialisation du nombre maximum d'iterations autorisees ----
1170 : 'SI' ( 'EXISTE' PRECED 'MAXITERATION') ;
1171 :    WTAB. 'MAXITERATION' = PRECED.'MAXITERATION';
1172 : 'SINON';
1173 :    'SI'  WTAB.'AUTOMATIQUE' ;WTAB.'MAXITERATION' = 250;'FINSI';
1174 :    'SI' WTAB.'PAS_AJUSTE' ;  WTAB.'MAXITERATION'=250;'FINSI';
1175 : 'FINSI';
1176 : *----------  initialisation nombre de sous-increment
1177 : 'SI' ('EXIS' PRECED 'SOUS-INCREMENT' );
1178 :       WTAB.'SOUS-INCREMENT'=PRECED.'SOUS-INCREMENT';
1179 : 'FINSI';
1180 : 
1181 : *----------------------blocages mecaniques -------------------
1182 : 'SI' ('EXIS' PRECED 'BLOCAGES_MECANIQUES');
1183 :     WTAB.'BLOCAGES_MECANIQUES'= PRECED.'BLOCAGES_MECANIQUES';
1184 : 'SINON';
1185 :     WTAB.'BLOCAGES_MECANIQUES'= 'VIDE' 'RIGIDITE'/'RIGIDITE';
1186 : 'FINSI';
1187 : *---------------------- definit on la reactualisation de la matrice
1188 : 'SI' ('EXIS' PRECED 'REAC_GRANDS');
1189 :   'SI' ('EGA' ('TYPE' PRECED . 'REAC_GRANDS') 'FLOTTANT') ;
1190 :      WTAB.'REAC_GRANDS' = PRECED.'REAC_GRANDS';
1191 :   'FINSI';
1192 : 'FINSI';
1193 : 
1194 : *--- y-a-t-il liste des temps ou on doit garder : les resultats ?
1195 : * --   les sauvegardes les fantomiser
1196 : *-------------- Par default on les sauve tous --------------------
1197 : 
1198 : 'SI' ( 'EXISTE' PRECED 'TEMPS_SAUVES' );
1199 :    WTAB.'IPRESU'=PRECED.'TEMPS_SAUVES';
1200 : 'SINON';
1201 :    WTAB.'IPRESU'= WTAB.'TEMPS_CALCULES';
1202 : 'FINSI';
1203 : WTAB.'IPTIME'= WTAB.'TEMPS_CALCULES';
1204 : 'SI' ( 'EXISTE' PRECED 'TEMPS_SAUVEGARDES');
1205 :    WTAB.'ISAUVEGL'=VRAI; WTAB.'ISAUVEGA'=PRECED.'TEMPS_SAUVEGARDES';
1206 : 'FINSI';
1207 : 'SI' ( 'EXISTE' PRECED 'ECONOMIQUE');
1208 :     WTAB.'LECONOMI'=PRECED. 'ECONOMIQUE';
1209 : 'FINSI';
1210 : 
1211 : 'SI' ( 'EXIS' PRECED 'MES_SAUVEGARDES');
1212 :     WTAB.'TABSAUV'= PRECED .'MES_SAUVEGARDES';
1213 :     TABSAUV= PRECED .'MES_SAUVEGARDES';
1214 :    'SI' ('NON' ( 'EXIS' TABSAUV 'DEFIN'));
1215 :       WTAB.'TABSAUV'.'DEFIN' = FAUX;
1216 :    'FINSI';
1217 :    'SI' ('NON' ( 'EXIS' TABSAUV 'DEFTO'));
1218 :       WTAB.'TABSAUV'.'DEFTO'= FAUX;
1219 :    'FINSI';
1220 : 'SINON';
1221 :     WTAB.'TABSAUV'=TABLE ;
1222 :     WTAB.'TABSAUV'.'DEFIN' = FAUX;
1223 :     WTAB.'TABSAUV'.'DEFTO'= FAUX;
1224 : 'FINSI';
1225 : LOGERR1= 'DANS' 'QUEL' wtab.'IPRESU' wtab.'IPTIME';LOGERR2=VRAI;
1226 : 'SI' WTAB.'ISAUVEGL';
1227 :    LOGERR2= 'DANS' 'QUEL' WTAB.'ISAUVEGA' wtab.'IPTIME';
1228 : 'FINSI';
1229 : 'SI' ('NON' ( LOGERR1 'ET' LOGERR2));
1230 :   'ERRE' 1013;
1231 : 'FINSI';
1232 : 
1233 : *                                                                      *
1234 : * Precision demandee par l'utilisateur :
1235 : 'SI' ('EXISTE' PRECED 'PRECISION') ;
1236 :   WTAB.'PRECISION' = PRECED.'PRECISION' ;
1237 : 'FINS' ;
1238 : *                                                                      *
1239 : *--------  Existe-t-il des procedure utilisateur perso?
1240 : 'SI' ('EXISTE' PRECED 'PROCEDURE_PERSO1');
1241 :    WTAB.'PROCEDURE_PERSO1'=PRECED.'PROCEDURE_PERSO1';
1242 : 'FINSI';
1243 : 'SI' ('EXISTE' PRECED 'PROCEDURE_PERSO2');
1244 :    WTAB.'PROCEDURE_PERSO2'=PRECED.'PROCEDURE_PERSO2' ;
1245 : 'FINSI';
1246 : * ----------- quelques verifs supplémentaires pour la thermique
1247 : 'SI' WTAB.'FOR_THER' ;
1248 :   'SI'  WTAB.'RAYO' ;
1249 :       'SI' ('NON' ('EXISTE' (PRECED.'CARACTERISTIQUES') 'EMIS'));
1250 :          'ERREUR' ' Il manque la donnee des facteurs d emissivite';
1251 :       'FINSI';
1252 :       'SI'('EXISTE' PRECED 'CTE_STEFAN_BOLTZMANN') ;
1253 :         WTAB.'CTE_STEFAN_BOLTZMANN'=PRECED.'CTE_STEFAN_BOLTZMANN';
1254 :         'SAUT' 1 'LIGN' ;
1255 :         'MESS' 'ATTENTION ! Constante de Stefan-Boltzmann en unités SI';
1256 :         'MESS' '            soit ' (WTAB . 'CTE_STEFAN_BOLTZMANN') ;
1257 :       'FINSI' ;
1258 :    'FINSI';
1259 :    'SI'  WTAB.'PHASE';
1260 :       'SI' ('NON' ('EXISTE' (PRECED.'CARACTERISTIQUES') 'QLAT'));
1261 :          'ERREUR' 'Il manque la donnée de la chaleur latente QLAT';
1262 :       'FINSI';
1263 :       'SI' ('NON' ('EXISTE' (PRECED.'CARACTERISTIQUES') 'TPHA'));
1264 :          'ERREUR' 'Il manque la donnée de la temperature TPHA';
1265 :       'FINSI';
1266 :    'FINSI';
1267 :    'SI' ('EXIS'  PRECED  'RELAXATION_THETA' );
1268 :         WTAB. 'RELAXATION_THETA'=PRECED. 'RELAXATION_THETA' ;
1269 :    'FINSI';
1270 :    'SI' ('EXIS'  PRECED  'RELAXATION_DUPONT');
1271 :        WTAB.'RELAXATION_DUPONT'=  PRECED . 'RELAXATION_DUPONT' ;
1272 :    'FINSI';
1273 : 'FINSI';
1274 : *------------- Quelques initialisations pour la diffusion --------------
1275 : 'SI' WTAB.'FOR_DIFF' ;
1276 :    'SI' ('EXIS'  PRECED  'RELAXATION_THETA' );
1277 :         WTAB. 'RELAXATION_THETA'=PRECED. 'RELAXATION_THETA' ;
1278 :    'FINSI';
1279 : 'FINSI';
1280 : *---------quelques  vérif et initia supplementaires pour la méca
1281 : 'SI' WTAB.'FOR_MECA' ;
1282 : *--------------- Initialisation des differentes precisions ------------
1283 :    'SI' ('EXISTE' PRECED 'PRECISION') ;
1284 :       WTAB.'PRECFLEX'  = PRECED.'PRECISION' ;
1285 :    'FINSI';
1286 :    'SI' ('EXISTE' PRECED 'PRECFLEX') ;
1287 :       WTAB.'PRECFLEX' = PRECED.'PRECFLEX';
1288 :    'FINSI';
1289 :    'SI' ('EXISTE' PRECED 'PRECDECHARGE') ;
1290 :       WTAB.'PRECDECHARGE' = PRECED.'PRECDECHARGE' ;
1291 :    'FINSI';
1292 : *-------------- y-a-t-il iteration ktangent ? -----------
1293 : 
1294 :    'SI' (  'EXISTE' PRECED 'K_TANGENT');
1295 :       WTAB.'K_TANGENT' = PRECED.'K_TANGENT';
1296 :    'FINSI';
1297 :    'SI' ('EXISTE' PRECED 'K_TANGENT_PERT') ;
1298 :       WTAB.'K_TANGENT_PERT' = PRECED.'K_TANGENT_PERT' ;
1299 :       'SI' WTAB.'K_TANGENT_PERT' ;
1300 :          WTAB.'K_TANGENT' = VRAI ;
1301 :       'FINSI' ;
1302 :    'FINSI' ;
1303 :    'SI' ('EXISTE' PRECED 'K_TANG_PERT_C1') ;
1304 :       WTAB.'K_TANG_PERT_C1' = PRECED.'K_TANG_PERT_C1' ;
1305 :    'FINSI' ;
1306 :    'SI' ('EXISTE' PRECED 'K_TANG_PERT_C2') ;
1307 :       WTAB.'K_TANG_PERT_C2' = PRECED.'K_TANG_PERT_C2' ;
1308 :    'FINSI' ;
1309 : *  Par defaut, C2 = C1/100 (C1 donne ou par defaut 1.D-3)
1310 :    'SI' ('EGA' WTAB.'K_TANG_PERT_C2' 'INCONNU') ;
1311 :       WTAB.'K_TANG_PERT_C2' = WTAB.'K_TANG_PERT_C1' / 1.D+02 ;
1312 :    'FINSI' ;
1313 : * Matrice tangente a utiliser pour iteration 0 dans UNPAS
1314 : * Par defaut, matrice tangente precedemment calculee si existe
1315 :    'SI' ('EXISTE' PRECED 'K_TANGENT_ITER0') ;
1316 :       WTAB.'K_TANGENT_ITER0' = PRECED.'K_TANGENT_ITER0' ;
1317 :    'FINSI' ;
1318 : * Utilisation matrice tangente symetrisee
1319 :    'SI' ('EXISTE' PRECED 'K_TANGENT_SYME') ;
1320 :       WTAB.'K_TANGENT_SYME' = PRECED.'K_TANGENT_SYME' ;
1321 :    'FINSI' ;
1322 :    'SI' (  'EXISTE' PRECED 'NITER_KTANGENT');
1323 :       WTAB.'NITER_KTANGENT' =PRECED.'NITER_KTANGENT' ;
1324 :    'FINSI';
1325 : *-------------y-a-t-il du substepping?-----------
1326 :    'SI' (  'EXISTE' PRECED 'SUBSTEPPING');
1327 :       WTAB.'SUBSTEPPING'=PRECED.'SUBSTEPPING' ;
1328 :    'FINSI';
1329 :    'SI' (  'EXISTE' PRECED 'PRECISINTER');
1330 :       WTAB.'PRECISINTER' = PRECED.'PRECISINTER';
1331 :    'FINSI';
1332 :    'SI' ( 'EXISTE' PRECED 'NITERINTER_MAX');
1333 :       WTAB.'NITERINTER_MAX' =PRECED.'NITERINTER_MAX';
1334 :    'FINSI';
1335 :    'SI' ( 'EXISTE' PRECED  'NMAXSUBSTEPS');
1336 :       WTAB.'NMAXSUBSTEPS'=PRECED.'NMAXSUBSTEPS';
1337 :    'FINSI';
1338 : *------------- y-a-t-il du grand deplacement ?
1339 :    'SI' ( 'EXISTE' PRECED 'GRANDS_DEPLACEMENTS' );
1340 :       'SI' (WTAB.'CONTACT' et (non PRECED.'GRANDS_DEPLACEMENTS'));
1341 :         MESS 'Un calcul avec un modele de CONTACT doit necessairement'
1342 :         MESS 'etre realise en GRANDS_DEPLACEMENTS !';
1343 :         MESS 'Arret de pasapas'; ERRE 21;
1344 :       'FINSI';      
1345 :       WTAB.'GRANDS_DEPLACEMENTS' = PRECED.'GRANDS_DEPLACEMENTS';
1346 :       'SI'  (WTAB.'GRANDS_DEPLACEMENTS');
1347 :         WTAB.'K_SIGMA'=VRAI;
1348 :       'FINSI';
1349 :    'FINSI';
1350 : * ---------- y-a-t-il une demande sur K_SIGMA ?
1351 :    'SI' (  'EXISTE' PRECED 'K_SIGMA');
1352 :       WTAB.'K_SIGMA' = PRECED.'K_SIGMA';
1353 :    'FINSI';
1354 : *----------y-a-t-il demande de la MAN?
1355 :    'SI' ( 'EXISTE' PRECED 'MAN' );
1356 :       WTAB.'MAN'= PRECED.'MAN';
1357 :     'SINON';
1358 :       WTAB.'MAN'=FAUX;
1359 :     'FINSI';
1360 : *--------  initialisations
1361 :     'SI' (WTAB.'MEC1' 'ET' WTAB.'POR1') ;
1362 :       MO_TOT = WTAB.'MOD_MEC' 'ET' WTAB.'MOD_POR';
1363 :     'SINON';
1364 :       'SI' WTAB.'MEC1';
1365 :          MO_TOT = WTAB.'MOD_MEC';
1366 :       'FINSI';
1367 :       'SI' WTAB.'POR1';
1368 :          MO_TOT = WTAB.'MOD_POR';
1369 :       'FINSI';
1370 :     'FINSI';
1371 :    'SI' ('EXISTE' WTAB 'MOD_LIA') ;
1372 :        MO_TOT = MO_TOT 'ET' WTAB.'MOD_LIA';
1373 :    'FINSI' ;
1374 : *--------- initialisation des comportements d'aprés le modele
1375 :    'SI' ('EXISTE' MO_TOT 'MATE' 'PLASTIQUE');
1376 :       WTAB.'PLASTIQUE' = VRAI; WTAB.'IPLAVI'=VRAI;
1377 :    'FINSI';
1378 :    'SI' ('EXISTE' MO_TOT 'MATE' 'PLASTIQUE_ENDOM');
1379 :       WTAB.'PLASTIQUE' = VRAI;       WTAB.'IPLAVI'=VRAI;
1380 :       WTAB.'ENDOMMAGEMENT' = VRAI ;
1381 :    'FINSI';
1382 :    'SI' (('EXISTE' MO_TOT 'MATE' 'VISCOPLASTIQUE') 'OU'
1383 :         ('EXISTE' MO_TOT 'MATE' 'FLUAGE' ));
1384 :       WTAB.'VISCOPLASTIQUE' = VRAI;  WTAB.'IPLAVI'=VRAI;
1385 :    'FINSI';
1386 :    'SI' ('EXISTE' MO_TOT 'MATE' 'VISCODOMMAGE');
1387 :       WTAB.'VISCODOMMAGE'=VRAI; WTAB.'IPLAVI'=VRAI;
1388 :    'FINSI';
1389 :    'SI' (('EXISTE' MO_TOT 'MATE' 'ENDOMMAGEMENT') 'OU'
1390 :         ('EXISTE' MO_TOT 'MATE' 'ENDOMMAGEABLE'));
1391 :       WTAB.'ENDOMMAGEMENT'=VRAI;  WTAB.'IPLAVI'=VRAI;
1392 :    'FINSI';
1393 :    'SI' ('EXISTE' MO_TOT 'MATE' 'NON_LINEAIRE') ;
1394 :       WTAB.'NON_LINEAIRE'=VRAI;   WTAB.'IPLAVI'=VRAI;
1395 :       NOLIUTIL = 'EXISTE' MO_TOT 'MATE' 'UTILISATEUR' ;
1396 :    'FINSI';
1397 :    'SI' ('EXISTE' MO_TOT 'MATE' 'VISCO_EXTERNE') ;
1398 :       WTAB.'VISCO_EXTERNE'=VRAI;   WTAB.'IPLAVI'=VRAI;
1399 :    'FINSI';
1400 :   'SI' ('EXISTE' MO_TOT 'MATE' 'CERAMIQUE');
1401 :       WTAB.'CERAMIQUE' = VRAI;  WTAB.'IPLAVI'=VRAI;
1402 :    'FINSI';
1403 :    'SI' (('EXISTE' MO_TOT 'MATE' 'MODAL') 'OU'
1404 :              ('EXISTE' MO_TOT 'MATE' 'STATIQUE' ));
1405 :       WTAB.'MODAL' = VRAI;  WTAB.'IPLAVI'=VRAI;
1406 :   'FINSI';
1407 :    'SI' ('EXISTE' MO_TOT 'MATE' 'IMPEDANCE');
1408 :       WTAB.'IMPEDANCE' = VRAI;  WTAB.'IPLAVI'=VRAI;
1409 :   'FINSI';
1410 : 
1411 :    WTAB.'MO_TOT' = MO_TOT;
1412 :    MAI_TOT = 'EXTR' MO_TOT 'MAIL';
1413 :    WTAB.'MA_TOT' = 'REDU' MA MO_TOT;
1414 :    WTAB.'LDEVA' = 'EXTR' WTAB.'MA_TOT' 'DEVA';
1415 :    WTAB.'LPAR0' = 'EXTR' MO_TOT 'PARA';
1416 :    'SI' ('NEG' 0 ('DIME'  WTAB.'LPAR0'));WTAB.'PARA_EXTE'=VRAI;'FINSI';
1417 : 
1418 : *--------------y-a-t-il une formulation feFP
1419 :    'SI' (  'EXISTE' PRECED 'FEFP_FORMULATION'  );
1420 :       WTAB.'FEFP_FORMULATION' = PRECED.'FEFP_FORMULATION';
1421 :    'FINSI';
1422 :    'SI' WTAB.'FEFP_FORMULATION';
1423 :       'MESS' ' *** FORMULACION FeFp ***' ;
1424 :       WTAB.'GRANDS_DEPLACEMENTS'  = FAUX;
1425 :       WTAB.'K_SIGMA'              = VRAI;
1426 :       WTAB.'K_TANGENT'            = VRAI;
1427 :       WTAB.'SUBSTEPPING'          = FAUX;
1428 :    'FINSI';
1429 :    'SI' ( 'EXISTE' PRECED 'UPDATE_LAGRANGIAN'  );
1430 :       WTAB.'UPDATE_LAGRANGIAN' = PRECED.'UPDATE_LAGRANGIAN' ;
1431 :    'FINSI';
1432 :    'SI' WTAB.'UPDATE_LAGRANGIAN';
1433 :       'MESS' ' *** UPDATE LAGRANGIAN ***' ;
1434 :    'FINSI';
1435 : *--------- y-a-t-il un sauver automatique des resultats ? ---------
1436 :    'SI' ( 'EXISTE'  PRECED 'AUTORESU');
1437 :       WTAB.'NAURES' = PRECED . 'AUTORESU';
1438 :    'FINSI';
1439 : *---------- en cas de pas automatique ?
1440 :    'SI'  WTAB . 'AUTOMATIQUE' ;
1441 :        'SI' (  'EXISTE' PRECED 'AUTOCRIT');
1442 :            WTAB.'AUTOCRIT'= PRECED.'AUTOCRIT';
1443 :        'FINSI';
1444 :        'SI' ( 'EXISTE' PRECED 'AUTOPAS');
1445 :            WTAB.'AUTOPAS'= PRECED.'AUTOPAS';
1446 :        'FINSI';
1447 :        WTAB.'DELTAITER'=WTAB.'MAXITERATION';
1448 :     'FINSI';
1449 : *------ y-a-t-il un nom de variable interne specifique ?
1450 :    'SI' (  'EXISTE' PRECED 'MOVA');
1451 :       WTAB.'MOVA' =PRECED.'MOVA';
1452 :    'SINON';
1453 :     'SI'( WTAB.'VISCO_EXTERNE'  'OU' NOLIUTIL);
1454 :          WTAB.MOVA = 'MOT' 'RIEN';
1455 :       'FINSI';
1456 :    'FINSI';
1457 : * --------------------a-t-on preciser l'oredre de la MAN?
1458 :   'SI' ( 'EXISTE' PRECED 'ORDRE');
1459 :        WTAB.'ORDRE'=PRECED.'ORDRE';
1460 :    'FINSI';
1461 : *---------- y-a-t-il des elements de rigidite constante ? --------
1462 :    'SI' ( 'EXISTE' PRECED 'RIGIDITE_CONSTANTE');
1463 :        WTAB.'RAIDCONST' =VRAI;
1464 :        WTAB.'RIGIDITE_CONSTANTE'=PRECED.'RIGIDITE_CONSTANTE';
1465 :        RR= PRECED.'RIGIDITE_CONSTANTE';
1466 :        MNOMU = ('EXTR' RR 'MAILLAGE' 'NOMU') 'NBNO';
1467 :        MAVMU = ('EXTR' RR 'MAILLAGE' ) 'NBNO';
1468 :        'SI' ( MNOMU 'NEG' MAVMU) ;
1469 :            'ERREUR'
1470 :         'Il ne faut pas de multiplicateur dans RIGIDITE_CONSTANTE';
1471 :        'FINSI';
1472 :    'FINSI';
1473 : *---------- y-a-t-il des elements de masse constante ? ---------
1474 :    'SI' ( 'EXISTE' PRECED 'MASSE_CONSTANTE');
1475 :        WTAB.'MASSE_CONSTANTE'=PRECED.'MASSE_CONSTANTE';
1476 :        WTAB.'MASSCONST'=VRAI;
1477 :    'FINSI';
1478 : *---------- y-a-t-il un sous_increment ? ---------
1479 :    'SI' ( 'EXISTE' PRECED 'SOUS_INCREMENT');
1480 :        WTAB.'SOUS_INCREMENT'=PRECED.'SOUS_INCREMENT';
1481 :    'FINSI';
1482 : *------------------- y-a-t-il du nonlocal ?
1483 :    'SI'  ('EXISTE' PRECED 'NON_LOCAL'  );   
1484 :           WTAB.'NLOC' = VRAI ;
1485 :           WTAB.'NON_LOCAL' = PRECED.'NON_LOCAL';                              
1486 :    'FINSI';
1487 :    'SI' WTAB.'NLOC' ;
1488 :       'SI' (('NEG' WTAB.'NON_LOCAL' 'MOYE') 'ET' 
1489 :             ('NEG' WTAB.'NON_LOCAL' 'SB'  )) ; 
1490 :         'ERREUR' 'Methode NON LOCALE non implementee ' WTAB.'NON_LOCAL';
1491 :       'FINSI' ;
1492 :       'SI' ( 'EXISTE'  PRECED 'CONN' );                                 
1493 :           'MESS' 'On garde les connectivites dans TAB CONN';
1494 :           WTAB.'CONN'=PRECED . 'CONN' ;           
1495 :       'SINON';                                                          
1496 :           'SI' ( 'EXISTE'  PRECED 'LCAR' );                             
1497 :              'MESS' 'Calcul des connectivites en mode normal.';         
1498 :              WTAB.CONN='CONN' MO_TOT PRECED.LCAR 'NORMAL';           
1499 :           'SINON';                                                      
1500 :              'ERREUR' 'Il faut donner LCAR ou CONN en NON_LOCAL';       
1501 :           'FINSI';                                                      
1502 :       'FINSI';                                                          
1503 :       'SI'( 'NON' ('EXISTE' PRECED 'LVIAM'));                           
1504 :  'ERREUR' 'Il faut donner la liste des variables internes a moyenner'; 
1505 :       'SINON'; 
1506 :         WTAB.'LVIAM'= PRECED.'LVIAM'; 
1507 :       'FINSI'; 
1508 : *------------------- y-a-t-il du nonlocal base sur etat de contrainte ?
1509 :       'SI' ('EGA' WTAB.'NON_LOCAL' 'SB  ') ;
1510 :         'SI' ('NON' ('EXISTE' PRECED 'NLOC_SB_MODL')) ; 
1511 :           'ERREUR' 'Il faut donner le modele a regulariser' ;
1512 :         'FINS' ;
1513 :         'SI' ('NON' ('EXISTE' PRECED 'NLOC_SB_FT')) ;
1514 :  'ERREUR' 'Il faut donner la contrainte limite en traction pour normer';
1515 :         'FINS' ;
1516 :         WTAB.'NLOC_SB_MODL' = PRECED.'NLOC_SB_MODL' ;
1517 :         MOD_SB = WTAB.'NLOC_SB_MODL' ;
1518 :         CHM_1 = 'MANU' 'CHML' MOD_SB 'LONG' 1.0 'STRESSES' ;
1519 :         CHM_L = 'INTG' 'ELEM' MOD_SB CHM_1 'LONG' ;
1520 :         CHM_L = 'CHAN' 'COMP' 'LONG' CHM_L ;
1521 :         CHM_L = 'CHAN' 'STRESSES' MOD_SB CHM_L ;
1522 :         TAIL1 = CHM_L ** (1. / ('VALE' 'DIME')) ;
1523 :         FTCH  = PRECED.'NLOC_SB_FT' ;
1524 :         'SI' (('EGA' ('TYPE' FTCH) 'FLOTTANT') 'OU'
1525 :               ('EGA' ('TYPE' FTCH) 'ENTIER  ')) ;
1526 :           FTCH = 'MANU' 'CHML' MOD_SB 'FT  ' FTCH 'STRESSES' ;
1527 :         'SINON' ;
1528 :           'SI' ('NEG' ('TYPE' FTCH) 'MCHAML  ') ;
1529 :             'ERREUR' 'Indice NLOC_SB_FT de type incorrect' ;
1530 :           'FINS' ;
1531 :           FTCH  = 'CHAN' 'COMP' 'FT  ' ('REDU' MOD_SB FTCH) ;
1532 :         'FINSI' ;
1533 :         WTAB.'NLOC_SB_REGU' = FTCH '+' TAIL1;
1534 :         WTAB.'NLOC_SB_CCS' = 'MOTS' 'EPTI' 'SI11' 'SI22' 'SI33'
1535 :                                     'COX1' 'COY1' 'COZ1'
1536 :                                     'COX2' 'COY2' 'COZ2'
1537 :                                     'COX3' 'COY3' 'COZ3'
1538 :                                     'FT  ' 'LONG' ;
1539 :       'FINS' ;
1540 :    'FINSI';
1541 : *------Y-a-t-il des éléments dont il faudra reactualiser les caractéristiques?
1542 :    'SI' WTAB.'GRANDS_DEPLACEMENTS' ;
1543 :        MOCA = 'MOTS' 'VECT' 'VX' 'VY' 'VZ' 'VXF' 'VYF' 'VZF';
1544 :        'REPETER' BOU_CAR ('DIME' MOCA);
1545 :           ITE2 = &BOU_CAR;
1546 :           MOT1 = 'EXTR' MOCA ITE2;
1547 :           'SI' ('EXIS' WTAB.'MA_TOT' MOT1);
1548 :              WTAB.'ITCAR' = VRAI;
1549 :              'QUITTER' BOU_CAR;
1550 :           'FINSI';
1551 :        'FIN' BOU_CAR;
1552 : *       'SI' ITCAR;
1553 : *          'SI' ('NON' ('EXIS' PRECED 'CARA_ACTU'));
1554 : *             PRECED.'CARA_ACTU' = TABLE;
1555 : *          'FINSI';
1556 : *       'FINSI';
1557 :    'FINSI';
1558 : *  En grands deplacements, on se met dans la config. initiale.
1559 :    'SI'( WTAB.'GRANDS_DEPLACEMENTS' 'OU'  WTAB.'FEFP_FORMULATION');
1560 :        WTAB.'RECALCUL'= VRAI ;
1561 :    'FINSI';
1562 : *- existe-t-il un chargement de flux neutronique pour le modele mistral
1563 : *- existe-t-il un chargement de densite de fissions pour gatt_monerie & uo2
1564 : *----  si oui on sort si non on le crée à zero
1565 : *
1566 :    'SI' ('EXIS'  MO_TOT  'MATE' 'MISTRAL');
1567 :      'SI' ('NON' ('EXISTE' (WTAB.'CHARGEMENT') 'FI  ')) ;
1568 :       FIZER='MANU' 'CHPO' MAI_TOT 1 'FI  ' 0. 'NATURE' 'DIFFUS' ;
1569 :       WTAB.'CHARGEMENT'= WTAB.'CHARGEMENT' 'ET' ('CHAR' 'FI' FIZER
1570 :       ('EVOL' 'MANU'  ('PROG' 0. 10.e10 ) ('PROG' 1. 1.)));
1571 :      'FINSI';
1572 :    'FINSI';
1573 :    'SI' (('EXIS'  MO_TOT  'MATE' 'UO2') 'OU'
1574 :          ('EXIS'  MO_TOT  'MATE' 'GATT_MONERIE') ) ;
1575 :       'SI' ('NON' ('EXISTE' (WTAB.'CHARGEMENT') 'DFIS')) ;
1576 :      DFISZER='MANU' 'CHPO'  MAI_TOT 1 'DFIS' 0. 'NATURE' 'DIFFUS' ;
1577 :       WTAB.'CHARGEMENT'= WTAB.'CHARGEMENT' 'ET' ('CHAR' 'DFIS' DFISZER
1578 :          ('EVOL' 'MANU'   ('PROG' 0. 10.e10 ) ('PROG' 1. 1.))) ;
1579 :      'FINSI';
1580 :    'FINSI';
1581 : 'FINSI';
1582 : WTAB.'CHARGEMENT_I'=WTAB.'CHARGEMENT';
1583 : 
1584 : ******************************************************************
1585 : ********** Recapitulation des options de calcul choisies *********
1586 : ******************************************************************
1587 : 
1588 : 'SAUTER' 1 'LIGNE';
1589 : 'SI' WTAB.'FOR_MECA' ;
1590 :    'SI' WTAB.'FOR_THER';
1591 :        'MESS'  'Couplage THERMIQUE-MECANIQUE ';
1592 :    'SINON'   ;
1593 :        'MESS'   'Calcul MECANIQUE';
1594 :    'FINSI';
1595 :    'SI' ('NEG' WTAB.'PREDICTEUR' 'INCONNU');
1596 :        'MESS'   ' *** Predicteur: ' wtab.'PREDICTEUR';
1597 :    'FINSI';
1598 :    'SI' WTAB.'K_SIGMA';
1599 :        'MESS'   ' *** K_SIGMA *** ';
1600 :    'FINSI';
1601 :    'SI' WTAB.'STABILITE';
1602 :        'MESS'   ' *** Verification stabilite *** ';
1603 :    'FINSI';
1604 :    'SI' WTAB.'LINESEARCH';
1605 :        'MESS'   ' *** Linesearch  *** ';
1606 :    'FINSI';
1607 :    'SI' (non WTAB.'INITIALISATION');
1608 :        'MESS'   ' *** Initialisation a partir du pas precedent'
1609 :                 ' interdite *** ';
1610 :    'FINSI';
1611 :    'SI' (WTAB.'CONVERGENCE_MONOTONE');
1612 :        'MESS'   ' *** Convergence monotone imposée *** ';
1613 :    'FINSI';
1614 :    'SI' (WTAB.'RENORMALISATION');
1615 :        'MESS'   ' *** Renormalisation des itérés *** ';
1616 :    'FINSI';
1617 :    'SI' WTAB.'POR1';
1618 :       'MESS' ' *** POREUX ***';
1619 :    'FINSI';
1620 :    'SI'(WTAB.'DYNAMIQUE');
1621 :       'MESSAGE' ' *** DYNAMIQUE PAS A PAS ***';
1622 :    'FINSI' ;
1623 :    'SI' (WTAB.'FREQUENTIEL') ;
1624 :       'MESSAGE' ' *** FREQUENTIEL PAS A PAS ***' ;
1625 :    'FINSI' ;
1626 :    'SI'(WTAB.'LIAISON_PERSISTANTE');
1627 :       'MESSAGE' ' *** LIAISON PERSISTANTE ***';
1628 :    'FINSI' ;
1629 :    'SI'(WTAB.'CONSOLIDATION');
1630 :       'MESSAGE' ' *** CONSOLIDATION ***';
1631 :    'FINSI' ;
1632 :    'SI'(WTAB.'PLASTIQUE');
1633 :      'MESSAGE' ' *** PLASTICITE ***';
1634 :    'FINSI';
1635 :    'SI'(WTAB.'VISCOPLASTIQUE');
1636 :       'MESSAGE' ' *** VISCO - PLASTICITE ***';
1637 :    'FINSI' ;
1638 :    'SI' WTAB.'NON_LINEAIRE';
1639 :       'SI' NOLIUTIL;
1640 :          'MESS' ' *** MODELE DE COMPORTEMENT NON LINEAIRE EXTERNE ***';
1641 :       'SINON';
1642 :          'MESS' ' *** ELASTICITE NON_LINEAIRE ***';
1643 :       'FINSI';
1644 :    'FINSI' ;
1645 :    'SI' WTAB.'VISCO_EXTERNE';
1646 :       'MESSAGE' ' *** VISCO - PLASTICITE, MODELE EXTERNE ***';
1647 :    'FINSI' ;
1648 :    'SI' WTAB.'CHAR_THE';
1649 :       'MESSAGE' ' *** CHARGEMENT THERMIQUE ***';
1650 :    'FINSI';
1651 :    'SI' WTAB.'CHAR_DEFI';
1652 :       'MESSAGE' ' *** CHARGEMENT PAR DES DEFORMATIONS ***';
1653 :    'FINSI';
1654 :    'SI' WTAB.'PARA_EXTE';
1655 :       'MESSAGE' ' *** LE MODELE DEPEND DE PARAMETRES EXTERNES ***';
1656 :    'FINSI';
1657 :    'SI'(WTAB.'GRANDS_DEPLACEMENTS');
1658 :       'MESSAGE' ' *** GRANDS DEPLACEMENTS ***';
1659 :    'FINSI';
1660 :    'SI'(WTAB.'CONVERGENCE_FORCEE');
1661 :       'MESSAGE' ' *** CONVERGENCE FORCEE   ***';
1662 :    'FINSI';
1663 :    'SI'(WTAB.'ENDOMMAGEMENT');
1664 :       'MESSAGE' ' *** PLASTICITE + ENDOMMAGEMENT ***';
1665 :    'FINSI';
1666 :    'SI'(WTAB.'VISCODOMMAGE');
1667 :       'MESSAGE' ' *** VISCO-PLASTICITE + ENDOMMAGEMENT ***';
1668 :    'FINSI';
1669 :    'SI'(WTAB.'CERAMIQUE');
1670 :       'MESSAGE' ' ***CERAMIQUE FLUAGE  + ENDOMMAGEMENT ***';
1671 :       'MESSAGE' ' ***             +OTTOSEN             ***';
1672 :    'FINSI';
1673 : *   'SI' IUO2;
1674 : *      'MESSAGE' ' *** VISCO-PLASTICITE + OTTOSEN ***';
1675 : *   'FINSI';
1676 :    'SI' WTAB.'NLOC' ;
1677 :       'SI' ('EGA' WTAB.'NON_LOCAL' 'SB') ;                              
1678 :          'MESS' ' *** EN NON-LOCAL BASE SUR ETAT DE CONTRAINTE *** ' ;  
1679 :       'SINO' ;
1680 :          'MESS' ' *** EN NON-LOCAL *** ' ;
1681 :       'FINSI';
1682 :    'FINSI';
1683 :    'SI' WTAB.'CONTACT';
1684 :       'MESS' ' *** CONTACT ***';
1685 :    'FINSI';
1686 :    'SI' (WTAB.'SOUS_INCREMENT' > 1);
1687 :       'MESS'  ' *** SOUS_INCREMENT : ' WTAB.SOUS_INCREMENT;
1688 :    'FINSI';
1689 :    'SI' WTAB.'CAFROTTE';
1690 :       'MESS' ' *** FROTTEMENT ***';
1691 :    'FINSI';
1692 :    'SI' WTAB.'K_TANGENT' ;
1693 :      'SI' WTAB.'K_TANGENT_PERT' ;
1694 :        'MESS' ' *** MATRICE TANGENTE PAR PERTURBATION ***' ;
1695 :      'SINON' ;
1696 :        'MESS' ' *** MATRICE TANGENTE (COHERENTE) ***' ;
1697 :      'FINSI' ;
1698 :      'MESS' '     MATRICE EVALUEE TOUTES LES' WTAB.'NITER_KTANGENT'
1699 :             'ITERATIONS' ;
1700 :      'SI' WTAB.'K_TANGENT_SYME' ;
1701 :        'MESS' '     PARTIE SYMETRIQUE DE LA MATRICE TANGENTE UTILISEE';
1702 :      'FINSI' ;
1703 :    'FINSI';
1704 :    'SI' WTAB.'SUBSTEPPING';
1705 :      'MESSAGE' ' *** SUBSTEPPING *** NUM_MAXI_SUBSTEPS = '
1706 :                WTAB.'NMAXSUBSTEPS' ;
1707 :       'MESSAGE' ' *** SUBSTEPPING *** NUM_ITER_INTERNAS = '
1708 :                 WTAB.'NITERINTER_MAX' ;
1709 :    'FINSI';
1710 : 'SINON';
1711 :    'MESS' 'Calcul  THERMIQUE ';
1712 : 'FINSI';
1713 : *-------------  option de parallelisation
1714 : NBPART='VALEUR' 'ASSI';
1715 : mme= 'MOT' ' *** Pas de parallelisation ***';
1716 : 'SI' ( 'EGA' 'INCONNU' WTAB.'PROCESSEURS');
1717 :   WTAB.'PROCESSEURS'='MOT' 'MONO_PROCESSEUR';
1718 :   'SI' (NBPART > 1);
1719 :     toutmo='EXTR' PRECED.'MODELE' 'ZONE' ;IMOD=('DIME' TOUTMO )/ 2;
1720 :     MINELE=1000000; MAXELE=0;
1721 :     'REPE' BOUCMO IMOD;
1722 :       BBB = 'NBEL' TOUTMO . ( &BOUCMO * 2);
1723 :       'SI' (MINELE > BBB); MINELE = BBB; 'FINSI';
1724 :       'SI' (MAXELE < BBB); MAXELE = BBB; 'FINSI';
1725 :     'FIN' BOUCMO ;
1726 :     MINELE=MINELE/NBPART;MAXELE=MAXELE/NBPART;
1727 : **  'MESS' minele maxele;
1728 :     NBELMIN = 1000; NBELMM=100 ;
1729 :     'SI' (MINELE > NBELMIN) ;
1730 :       WTAB.'PROCESSEURS'='MOT' 'AUTOMATIQUE';
1731 :       mme='MOT' ' *** Parallelisation automatique ***';
1732 :     'SINON';
1733 :       'SI'( (MINELE > NBELMM) 'OU' (MAXELE > 500));
1734 : * on effectue la partition du modele utilisee seulement pour COMP
1735 :         mme= 'MOT'  ' *** Parallelisation du comportement ***';
1736 :         WTAB.'PROCESSEURS'='MOT' 'COMPORTEMENT';
1737 :       'FINSI';
1738 :     'FINSI';
1739 :   'FINSI';
1740 : 'SINON' ;
1741 :   'SI' ( '>' NBPART 1) ;
1742 :     'SI' ('EGA' WTAB.'PROCESSEURS' 'COMPORTEMENT');
1743 :       mme='MOT' ' *** Parallelisation du comportement ***';
1744 :     'SINON';
1745 :       'SI' ('EGA' WTAB.'PROCESSEURS' 'AUTOMATIQUE');
1746 :         mme='MOT' ' *** Parallelisation automatique ***';
1747 :       'FINSI';
1748 :     'FINSI';
1749 :   'SINON' ;
1750 :     WTAB.'PROCESSEURS' = 'MOT' 'MONO_PROCESSEUR';
1751 :     mme='MOT' ' *** Pas de parallelisation ***';
1752 :   'FINSI';
1753 : 'FINSI';
1754 : 'SAUTER' 1 'LIGNE';
1755 : 'MESS'  mme;
1756 : WTAB.'NBPART'=NBPART;
1757 : 'SAUTER' 1 'LIGNE';
1758 : 'FINPROC' ;
1759 :  

© Cast3M 2003 - All rights reserved.
Disclaimer