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