$$$$ PAS_DEFA * PAS_DEFA PROCEDUR JK148537 26/08/05 21:15:06 12617 DEBPROC PAS_DEFA PRECED*'TABLE'; ************************************************************************ * Procedure qui se charge de : * - verifier si d'anciens mots-cles ne sont pas utilises * - s'assurer de la presence de certaines donnees obligatoires * - verifier la coherence des donnees. * - initialiser les valeurs par defaut des options de calcul et les * surcharger par les valeurs fournies * - afficher un recapitulatif du calcul * * En cas de reprise, la configuration peut etre erronnee * (reprise/poursuite d'un calcul suite a une erreur) ************************************************************************ 'SI' (('EXISTE' PRECED 'GRANDES_ROTATIONS' ) 'OU' ('EXISTE' PRECED 'GRANDES_DEFORMATIONS')); 'MESS' ' ATTENTION :' ; 'MESS' ' Les donnees concernant les GRANDES ROTATIONS et GRANDES DEFORMATIONS ont ete modifiees :'; 'MESS' ' Utilisez l''indice HYPOTHESE_DEFORMATIONS'; 'ERREUR' 21 ; 'FINSI'; * 'SI' ('EXISTE' PRECED 'CONTACT') ; 'MESS' ' ATTENTION :' ; 'MESS' ' Les donnees concernant le CONTACT dans PASAPAS ont ete modifiees :' ; 'MESS' ' - L''indice CONTACT de la table de PASAPAS n''existe plus.'; 'MESS' ' - Il faut definir un MODELE de CONTACT.' ; 'ERREUR' 21 ; 'FINSI'; * 'SI' (('EXISTE' PRECED 'PROCEDURE_REAC_MECA') 'OU' ('EXISTE' PRECED 'PROCEDURE_CHAR_MECA') 'OU' ('EXISTE' PRECED 'PROCEDURE_REAC_THER') 'OU' ('EXISTE' PRECED 'PROCEDURE_CHAR_THER') 'OU' ('EXISTE' PRECED 'PROCEDURE_PARA_THER')) ; 'MESS' ' ATTENTION :' ; 'MESS' ' Les donnees concernant les procedures utilisateur ont ete modifiees :' ; 'MESS' ' - L''indice PROCEDURE_REAC_MECA est remplace par l''indice PROCEDURE_REEV_MEC' ; 'MESS' ' - L''indice PROCEDURE_CHAR_MECA est remplace par l''indice PROCEDURE_CHARMECA' ; 'MESS' ' - L''indice PROCEDURE_REAC_THER est remplace par l''indice PROCEDURE_REEV_THE' ; 'MESS' ' - L''indice PROCEDURE_CHAR_THER est remplace par l''indice PROCEDURE_CHARTHER' ; 'MESS' ' - L''indice PROCEDURE_PARA_THER est remplace par l''indice PROCEDURE_PARATHER' ; 'ERREUR' 21 ; 'FINSI'; * Modifs CB215821 Juillet 2020 'SI' ('EXISTE' PRECED 'TEMPERATURE_REFERENCE'); 'MESS' ' ATTENTION :' ; 'MESS' ' L''indice ''TEMPERATURE_REFERENCE'' de PASAPAS a ete supprime'; 'MESS' ' Il faut desormais fournir la composante ''TREF'' dans le materiau'; 'ERREUR' 21 ; 'FINSI'; 'SI' ('EXISTE' PRECED 'TALPHA_REFERENCE'); 'MESS' ' ATTENTION :' ; 'MESS' ' L''indice ''TALPHA_REFERENCE'' de PASAPAS a ete supprime'; 'MESS' ' Il faut desormais fournir la composante ''TALP'' dans le materiau'; 'ERREUR' 21 ; 'FINSI'; ************************************************************************ * Verifier la presence de certains indices de PRECED, obligatoires ************************************************************************ 'SI' ('NON' ('EXISTE' PRECED 'MODELE')) ; 'ERREUR' 'Il manque la donnee du modele.'; 'SINON' ; MO = PRECED.'MODELE'; TYPMO = 'TYPE' MO ; 'SI' (('NEG' TYPMO 'MMODEL ') 'ET' ('NEG' TYPMO 'CHARGEME')) ; 'ERREUR' 'Le type du MODELE est incorrect'; 'FINSI'; 'FINSI' ; * 'SI' ('NON' ('EXISTE' PRECED 'CARACTERISTIQUES')) ; 'ERREUR' 'Il manque la donnee du materiau.'; 'SINON' ; MA = PRECED.'CARACTERISTIQUES' ; TYPMA = 'TYPE' MA ; 'SI' (('NEG' TYPMA 'MCHAML ') 'ET' ('NEG' TYPMA 'CHARGEME')) ; 'ERREUR' 'Le type du champ de materiau est incorrect'; 'FINSI'; 'FINSI' ; * 'SI' ('EXISTE' PRECED 'TEMPS_CALCULES'); TYP1 = 'TYPE' PRECED.'TEMPS_CALCULES'; 'SI' ('NEG' TYP1 'LISTREEL'); 'ERREUR' 'Le type de TEMPS_CALCULES est incorrect'; 'FINSI'; 'FINSI' ; * 'SI' ('EXISTE' PRECED 'CHARGEMENT'); TYP1 = 'TYPE' PRECED.'CHARGEMENT' ; 'SI' ('NEG' TYP1 'CHARGEME'); 'ERREUR' 'Le type du CHARGEMENT est incorrect'; 'FINSI'; 'FINSI'; * * Typage de la table en sortie de PASAPAS PRECED.'SOUSTYPE' = 'MOT' 'PASAPAS' ; ************************************************************************ * Initialiser les indices de WTABLE a leur valeur par defaut ************************************************************************ TWORK = 'TABLE' ; * adap_mode : adaptation du modele au cours du calcul TWORK.'ADAP_MODE' = FAUX; * Adherence presence de la composante ADHE (modele contact ou cont/fro) TWORK.'ADHERENCE' = FAUX ; * Advection presence d'un modele thermique advection ou diffusion advection TWORK.'ADVECTION' = FAUX; * Advection mecanique TWORK.'ADVECTION_MECANIQUE' = FAUX; * matrice d'amortissement en dynamique TWORK.'AMORTISSEMENT' = 'MOT' 'INCONNU'; * arret: indicateur pour quitter la boucle temporelle de PASAPAS TWORK.'ARRET' = FAUX; * autocrit: valeur du critere a utiliser dans autopilo(option automatique) TWORK.'AUTOCRIT' = 0.001; * autocoef: coefficient de pilotage TWORK.'AUTOCOEF' = 'MOT' 'INCONNU'; * autodeux=vrai si pilotage et pas premiere tentative : pasapas TWORK.'AUTODEUX' = FAUX; * automatique =vrai si demande de pilotage automatique TWORK.'AUTOMATIQUE' = FAUX; * autopas : nb maxi de tentative en pilotage automatique TWORK.'AUTOPAS' = 250; * autoreca : indique quand recalculer le coefficient de pilotage TWORK.'AUTORECA' = 1; * beton_ht ( ne marche pas!) TWORK.'BETON_HT' = FAUX; * beton_thm (Sciume) TWORK.'BETON_THM' = FAUX; * beton_mcr1 (Sciume) TWORK.'BETON_MCR1' = 0; * beton_mcr1 (Sciume) TWORK.'BETON_MCR2' = 0; * blocages_diffusions; matrices TWORK.'BLOCAGES_DIFFUSIONS' = 'VIDE' 'RIGIDITE'/'RIGIDITE'; * blocages_mecaniques; matrices TWORK.'BLOCAGES_MECANIQUES' = 'VIDE' 'RIGIDITE'/'RIGIDITE'; * blocages_thermiques; matrices TWORK.'BLOCAGES_THERMIQUES' = 'VIDE' 'RIGIDITE'/'RIGIDITE'; * bou_meth : valeur par defaut du nombre de bouclage mecanique-thermique TWORK.'BOU_METH' = 1; * cafrotte : veut dire il existe modele contact-frottement TWORK.'CAFROTTE' = FAUX ; * capaconst logique il existe une capacite constante TWORK.'CAPACONST' = FAUX; * caracteristiques : TWORK.'CARACTERISTIQUES' = 'MOT' 'INCONNU'; * ceramique presence de modele ceramique TWORK.'CERAMIQUE' = FAUX; * indice celsius TWORK.'CELSIUS' = FAUX; * chargement idem celui de preced ou creation d'un chargement farfelu TWORK.'CHARGEMENT' = 'VIDE' 'CHARGEMENT' ; * chargement_i idem chargement DFIS et FI si certain materiau pas_defa TWORK.'CHARGEMENT_I' = 'MOT' 'INCONNU'; * char_BLOD presence d'un chargement de BLOcages Diffusion TWORK.'CHAR_BLOD' = FAUX; * char_blom presence d'un chargement de BLOcages Mecaniques TWORK.'CHAR_BLOM' = FAUX; * char_blot presence d'un chargement de BLOcages Thermiques TWORK.'CHAR_BLOT' = FAUX; * char_defi presence de chargement DEFI deformation initiale TWORK.'CHAR_DEFI' = FAUX; * char_mate presence d'un chargement 'MATE' TWORK.'CHAR_MATE' = FAUX; * char_mode : le modele est de type chargement TWORK.'CHAR_MODE' = FAUX; * char_pres presence de chargement 'P ' de pression suiveuse TWORK.'CHAR_PRES' = FAUX; * char_the presence de chargement thermique pour la mecanique TWORK.'CHAR_THE' = FAUX; * char_pilo presence de chargement de pilotage indirect TWORK.'CHAR_PILO' = FAUX; TWORK.'DEPLACEMENTS_PILOTES' = 'VIDE' 'CHPOINT' / 'DISCRET' ; TWORK.'FORCES_PILOTEES' = 'VIDE' 'CHPOINT' / 'DISCRET' ; TWORK.'ZONE_DE_PILOTAGE' = FAUX ; TWORK.'PARAMETRE_DE_PILOTAGE' = 'MOT' 'INCONNU' ; * clim matrice des blocagesmecaniques y compris contact et frottement pasapas TWORK.'CLIM' = 'MOT' 'INCONNU'; * condconst logique il existe une conductivite constante TWORK.'CONDCONST' = FAUX; * conduction presence d'un modele de conduction TWORK.'CONDUCTION' = FAUX; * consolidation presence de consolidation TWORK.'CONSOLIDATION' = FAUX; * contact presence de contact TWORK.'CONTACT' = FAUX ; * conv logique precisant si unpas a bien converge TWORK.'CONV' = VRAI; * convection presence d'un modele de convection TWORK.'CONVECTION' = FAUX; * convergence_forcee logique demandant la convergence forcee TWORK.'CONVERGENCE_FORCEE' = VRAI; * demande de convergence mecanique-thermique en cas de bouclage TWORK.'CONVERGENCE_MEC_THE' = FAUX; * logique pour imposer au residu de decroitre de facon monotone TWORK.'CONVERGENCE_MONOTONE' = FAUX; * conv_thmec on a convergee le bouclage mecanique-thermique pasapas TWORK.'CONV_THMEC' = VRAI; * couplage le calcul contient des modeles thermiques et des mecaniques TWORK.'COUPLAGE' = FAUX; * le calcul contient des modeles mecanique beton_thm et thermohydrique beton_thm TWORK.'COUPLAGE_BETON_THM' = FAUX; * cte_stefan_boltzmann valeur de la constante TWORK.'CTE_STEFAN_BOLTZMANN' = 5.673E-8 ; * dch1 (Sciume) TWORK.'DCH1' = 0.; * dch2 (Sciume) TWORK.'DCH2' = 0.; * deja_calc_charther indique le dernier temps pour lequel on a calcule le * chargement thermique dans charther : charther TWORK.'DEJA_CALC_CHARTHER' = 0.d0; * deltaiter sert au test de non convergence : unpas TWORK.'DELTAITER' = 10; * dt: valeur du delta de temps entre le dernier pas et le pas en cours:pasapas TWORK.'DT' = 'MOT' 'INCONNU'; * dtprec : dt du pas precedent: pasapas TWORK.'DTPREC' = 0 ; * dynamique calcul en dynamique TWORK.'DYNAMIQUE' = FAUX; * endommagement il esiste un tel modele de comportement TWORK.'ENDOMMAGEMENT' = FAUX; * Enregistrement de la date du depart de PASAPAS TWORK.'EPOQUE' = DATE 'EPOCH'; * etat_ref etat de reference : pasapas pas_etat TWORK.'ETAT_REF' = 'MOT' 'INCONNU'; * etref deformation d'origine thermique de reference : pas_epth TWORK.'ETREF' = 'MOT' 'INCONNU'; * ether1 stocke des deformations thermiques au temps precedent : pasapas TWORK.'ETHER1' = 'MOT' 'INCONNU'; * fnonl permet forces de reequilibrage du pas precedent : unpas TWORK.'FNONL' = 'MOT' 'INCONNU'; * fopl : forces d'acceleration et d'amortissement TWORK.'FOPL' = 'MOT' 'INCONNU'; * configuration finale : pasapas unpas TWORK.'FOR' = 'MOT' 'INCONNU'; * configuration en debut de pas : pasapas TWORK.'FOR0' = 'MOT' 'INCONNU'; * FOR_DIFF le calcul inclus des modeles DIFFUSION TWORK.'FOR_DIFF' = FAUX; * FOR_METALLU le calcul inclus des modeles METALLURGIE TWORK.'FOR_METALLU' = FAUX; * utilisation de la frormulation fefp TWORK.'FEFP_FORMULATION' = FAUX; * frea1 partie constante du second membre dynamique,consolidation: pasapas TWORK.'FREA1' = 'MOT' 'INCONNU'; * frequentiel calcul en frequentiel TWORK.'FREQUENTIEL' = 'EGA' ('VALE' 'MODE') 'FREQ' ; * ftol desequilibre tolere TWORK.'FTOL' = 'MOT' 'INCONNU'; * Configuration courante TWORK.'GE0_DEB' = 'MOT' 'INCONNU'; * grands_deplacement TWORK.'GRANDS_DEPLACEMENTS' = FAUX; * HT_SOL1 (Sciume) TWORK.'HT_SOL1' = 0.; * HT_SOL2 (Sciume) TWORK.'HT_SOL2' = 0.; * Hyd1 (Sciume) TWORK.'HYD1' = 0.; * Hyd2 (Sciume) TWORK.'HYD2' = 0.; * hypothese de calcul pour les deformations TWORK.'HYPOTHESE_DEFORMATIONS' = 'MOT' 'LINEAIRE'; * indice d'evolution de la boucle temporelle de pasapas TWORK.'ICHG' = 0; * increment de charge du pas precedent : unpas TWORK.'INCREMENT' ='MOT' 'INCONNU'; * logique pour autoriser l'Initialisation a partir du pas precedent : unpas TWORK.'INITIALISATION' = VRAI; * iplavi il existe un modele devant passer par COMP TWORK.'IPLAVI' = FAUX; * ipresu : listreel des temps a mettre dans les tables resultats TWORK.'IPRESU' = 'MOT' 'INCONNU'; * iptime liste des temps a calculer TWORK.'IPTIME' = 'MOT' 'INCONNU'; * isauvega liste des temps sauvegardes (appel SAUV dans pasapas) TWORK.'ISAUVEGA' = 'MOT' 'INCONNU'; * logique la sauvegarde dans pasapas est activee TWORK.'ISAUVEGL' = FAUX; * nombre de sous-pas realise dans unpas TWORK.'ISOUSPAS' = 0 ; * ither : pour un calcul meca presence de thermique (via mode ou char) TWORK.'ITHER' = FAUX; * k_sigma il faut utiliser l'operateur KSIGMA TWORK.'K_SIGMA' = FAUX; * k_tangent il faut utiliser l'operateur KTANG TWORK.'K_TANGENT' = FAUX; * k_tangent_iter0 matrice tangente a utiliser pour iteration 0 : unpas TWORK.'K_TANGENT_ITER0' = 'MOT' 'INCONNU'; * k_tangent_pert operateur KTAN matrice tangente par perturbation : unpas TWORK.'K_TANGENT_PERT' = FAUX; * k_tangent_syme matrice tangente symetrisee : unpas TWORK.'K_TANGENT_SYME' = FAUX; * k_tang_pert_c1 matrice tangente par perturbation coefficient C1 : unpas TWORK.'K_TANG_PERT_C1' = 1.D-3; * k_tang_pert_c2 matrice tangente par perturbation coefficient C2 : unpas TWORK.'K_TANG_PERT_C2' = 'MOT' 'INCONNU'; * lastktan matrice donnant la derniere matrice tangente : pasapas unpas TWORK.'LASTKTAN' = 'MOT' 'INCONNU'; * langrangien schema numerique lagrangien reactualise par defaut TWORK.'LAG_TOT' = 3 ; * ldeva liste des variables dont dependent les materiaux TWORK.'LDEVA' = 'MOT' 'INCONNU'; * leconomi l'option economique est activee : pas_sauv TWORK.'LECONOMI' = FAUX; * liaison_persistante si il existe des liaisons persistantes TWORK.'LIAISON_PERSISTANTE' = FAUX; * linesearch en grand deplacement TWORK.'LINESEARCH' = FAUX; * lisea_m pour les contacts unilateraux en mecaniques :pasapas unpas TWORK.'LISEA_M' = 'MOT' 'INCONNU'; * lisea_t pour les changements de phase en thermique : pasapas transnon TWORK.'LISEA_T' = 'MOT' 'INCONNU'; * lpar0 liste des parametres externes a passer a COMP TWORK.'LPAR0' = 'MOT' 'INCONNU'; * man methode asymptotique numerique TWORK.'MAN' = FAUX; * massconst logique il existe des masses constantes TWORK.'MASSCONST' = FAUX; * mat0 materiau au temps 0 : pasapas pas_epth TWORK.'MAT0' = 'MOT' 'INCONNU'; * mat1 materiaux pour le pas en cours : pasapas unpas TWORK.'MAT1' = 'MOT' 'INCONNU'; * matvar le materiau est variable : pas_verm TWORK.'MATVAR' = FAUX; * mat_con materiau des modeles de convection TWORK.'MAT_CON' = 'MOT' 'INCONNU'; * mat_dif materiau des modeles de diffusion TWORK.'MAT_DIF' = 'MOT' 'INCONNU'; * mat_mec materiau des modeles de mecanique TWORK.'MAT_MEC' = 'MOT' 'INCONNU'; * mat_pha materiau des modeles de changement de phase 'PARFAIT' TWORK.'MAT_PHA' = 'MOT' 'INCONNU'; * mat_por materiau des modeles poreux TWORK.'MAT_POR' = 'MOT' 'INCONNU'; * mat_ray materiau des modeles de rayonnement TWORK.'MAT_RAY' = 'MOT' 'INCONNU'; * mat1 materiaux de reference TWORK.'MAT_REF' = 'MOT' 'INCONNU'; * mat_sol materiau des modeles de changement de phase 'SOLUBILITE' TWORK.'MAT_SOL' = 'MOT' 'INCONNU'; * mat_T materiau thermique + thermohydrique TWORK.'MAT_T' = 'VIDE' 'MCHAML'; * mat_the materiau des modeles thermiques TWORK.'MAT_THE' = 'VIDE' 'MCHAML' ; * mat_thm materiau thermohydrique TWORK.'MAT_THM' = 'VIDE' 'MCHAML'; * materiau des modeles convection + thermiques TWORK.'MAT_TOT' = 'MOT' 'INCONNU'; * maxdefor valeur limitant la deformation en cas de non convergence * ou de RENORMALISATION souhaitee de ZDEP1 TWORK.'MAXDEFOR' = 1.e-3; * maxiteration nombre maximum d'iteration pour un pas de calcul TWORK.'MAXITERATION' = 49; * maxisouspas nombre maximum de sous pas d'integration du fluage TWORK.'MAXISOUSPAS' = 2000; * maxsousiterations nombre maximum de sous iterations pour un calcul non-local TWORK.'MAXSOUSITERATION' = 500; * maxsouspas nombre maximum de sous pas en cas de non convergence TWORK.'MAXSOUSPAS' = 100; * ma_tot materiau des modeles mecaniques + poreux +liaison TWORK.'MA_TOT' = 'MOT' 'INCONNU'; * mec1 il existe au moins un modele mecanique TWORK.'MEC1' = FAUX; * affichage messages options calcul entete procedure resolution THERMIQUE TWORK.'MESSTHER' = VRAI ; * modal ou statique TWORK.'MODAL' = FAUX; * mod_adv modele de thermique, advection TWORK.'MOD_ADV' = 'MOT' 'INCONNU'; * momec_adv modele mecanique advection TWORK.'MOMEC_ADV' = 'MOT' 'INCONNU'; * mod_con modele de thermique convection TWORK.'MOD_CON' = 'MOT' 'INCONNU'; * mod_dif modele de diffusion TWORK.'MOD_DIF' = 'MOT' 'INCONNU'; * mod_mec modele mecanique TWORK.'MOD_MEC' = 'MOT' 'INCONNU'; * mod_pha modele de changement de phase 'PARFAIT' TWORK.'MOD_PHA' = 'MOT' 'INCONNU'; * mod_por modele poreux TWORK.'MOD_POR' = 'MOT' 'INCONNU'; * mod_ray modele rayonnement TWORK.'MOD_RAY' = 'MOT' 'INCONNU'; * mod_sol modele de changement de phase 'SOLUBILITE' TWORK.'MOD_SOL' = 'MOT' 'INCONNU'; * mod_soq : modele source de chaleur TWORK.'MOD_SOQ' = 'MOT' 'INCONNU'; * mod_T modele thermique + thermohydrique (contient inconnue T) TWORK.'MOD_T' = 'VIDE' 'MMODEL' ; * mod_the modele thermique TWORK.'MOD_THE' = 'VIDE' 'MMODEL' ; * mod_thm modele thermohydrique TWORK.'MOD_THM' = 'MOT' 'INCONNU'; * mod_tot modele thermique TWORK.'MOD_TOT' = 'MOT' 'INCONNU'; * mo_tot modele mecanique + modele poreux TWORK.'MO_TOT' = 'MOT' 'INCONNU'; * mo_tot_prec modele mecanique + modele poreux au pas precedent TWORK.'MO_TOT_PREC' = 'MOT' 'INCONNU'; * MODELE ce qui est dans preced.modele TWORK.'MODELE' = 'MOT' 'INCONNU' ; * mova nom de la variables internes dont le max est imprime TWORK.'MOVA' = 'MOT' 'EPSE'; * msrther1 deformations thermiques pour les poreux TWORK.'MSRTHER1' = 'MOT' 'INCONNU'; * msrther2 deformations thermiques pour les poreux TWORK.'MSRTHER2' = 'MOT' 'INCONNU'; * mtol valeur autorisee du desequilibre (en terme de moment) TWORK.'MTOL' = 'MOT' 'INCONNU'; * naures valeur de preced .autoresu TWORK.'NAURES' = 100000; * premier pas de sauvegarde encore present (option economique de pasapas) TWORK.'NFSOR' = 0; * nombre maxi d'iteration internes si k_tangent TWORK.'NITERINTER_MAX' = 15; * niter_ktangent recalcule de la matrice tangente toutes les .. iterations TWORK.'NITER_KTANGENT' = 1; * nloc s'il existe un modele de comportement non_local (preced.non_local) TWORK.'NLOC' = FAUX ; * nmaxsubsteps nb maximun de substepping si fefp TWORK.'NMAXSUBSTEPS' = 1; * nombre_iterations nb d'iterations du pas precedent : pasapas unpas TWORK.'NOMBRE_ITERATIONS' = 12 ; * non_lineaire il existe un materiau utilisateur non-lineaire TWORK.'NON_LINEAIRE' = FAUX; * non_local decrit le modele de comportement non_local (preced.non_local) TWORK.'NON_LOCAL' = 'MOT' 'INCONNU' ; * delta temps du pas en cours pour dupont2 : pasapas TWORK.'NOUV_PAS' = 0.D0; * nsor numero a ecrire dans les tables de resultats : pas_ init TWORK.'NSOR' = 0; * formulation NAVIER_STOKES materiau NLIN TWORK.'NVSTNL' = FAUX ; * operateur matrice contenant l'operateur d'iterations : pasapas TWORK.'OPERATEUR' = 'MOT' 'INCONNU'; * Ordre est l'ordre de developpement de la MAN TWORK.'ORDRE' = 12; * para_exte il existe des parametres externes : pas_verm TWORK.'PARA_EXTE' = FAUX; * pas numero du pas de temps utile a transnon : pasapas TWORK.'PAS' = 0; * pas_ajuste si ajustement automatique de longueur de pas TWORK.'PAS_AJUSTE' = FAUX; * pas_redu en automatiqu il a fallu reduire le pas : pasapas unpas TWORK.'PAS_REDU' = FAUX; * phase il existe du changement de phase 'PARFAIT' TWORK.'PHASE' = FAUX; * plastique il exite un comportement plastique TWORK.'PLASTIQUE' = FAUX; * por1 il existe un model poreux TWORK.'POR1' = FAUX; * precflex critere de desequilibre sur moment autorise TWORK.'PRECFLEX' = 1.E-4; * precisinter precision pour les iterations locales (fefp) TWORK.'PRECISINTER' = 1.D-8; * precision critere de convergence Thermique & Mecanique TWORK.'PRECISION' = 1.E-4 ; TWORK.'PRECDEFO' = 1.E-4 ; * precsousiteration precision pour les sous iterations en non local TWORK.'PRECSOUSITERATION' = 1.0E-6; * predicteur TWORK.'PREDICTEUR' = 'MOT' 'INCONNU'; * procedure initialisation pour g_theta TWORK.'PROCEDURE' = 'MOT' 'PASAPAS'; * procedure_charmeca il faut appele la procedure charmeca TWORK.'PROCEDURE_CHARMECA' = FAUX; * procedure_charther il faut appele la procedure charther TWORK.'PROCEDURE_CHARTHER' = FAUX; * procedure_parather il faut appeler la procedure parather TWORK.'PROCEDURE_PARATHER' = FAUX ; * procedure_perso1 il faut appeler la procedur perso1 TWORK.'PROCEDURE_PERSO1' = FAUX; * procedure_perso2 il faut appeler la procedur perso2 TWORK.'PROCEDURE_PERSO2' = FAUX; * procedure_reev_mec il faut appeler la procedur reev_mec TWORK.'PROCEDURE_REEV_MEC' = FAUX ; * procedure_reev_the il faut appeler la procedur reev_the TWORK.'PROCEDURE_REEV_THE' = FAUX ; * procedur_thermique non de la procedure thermique a appeler TWORK.'PROCEDURE_THERMIQUE' = 'MOT' 'NONLINEAIRE'; * processeurs pour imposer l'option de parallelisme TWORK.'PROCESSEURS' = 'MOT' 'INCONNU'; * projection le champ de temperature clcule doit etere projete TWORK.'PROJECTION' = FAUX; * raidconst il existe des raideurs constantes TWORK.'RAIDCONST' = FAUX; * raidaugm diffaugm theraugm il existe des raideurs augmentees TWORK.'RAIDAUGM' = FAUX; TWORK.'DIFFAUGM' = FAUX; TWORK.'THERAUGM' = FAUX; * autaug augmentation automatique TWORK.'AUTOAUGM' = FAUX; * rayo il existe du rayonnement en thermique TWORK.'RAYO' = FAUX; * rayonnement on y met des pre-calculs pour le rayonnement : transnon charther TWORK.'RAYONNEMENT' = 'MOT' 'INCONNU'; * Reactualisation de la matrice en grands deplacements pour 0,1 de defor TWORK.'REAC_GRANDS' = 0.1 ; * logique disant pour charther si geometrie a change : pasapas TWORK.'REA_GEOM' = FAUX ; * reaprec utile pour les contacts unilateraux en dynamiques TWORK.'REAPREC' = 'MOT' 'INCONNU'; * recaop = recalcul operateur TWORK.'RECAOP' = VRAI; * recari : recalcul de la rigidite TWORK.'RECARI' = FAUX; * reequilibrage : recalcul du dernier pas de temps lors d'une reprise TWORK.'REEQUILIBRAGE' = FAUX ; * relaxation_dupont2 coeff de relaxation pour dupont2 TWORK.'RELAXATION_DUPONT' = 0.25; * parametre de relaxation du pas de temps en non convergence TWORK.'RELAXATION_NONCONV' = 1.; * relaxation_thet coeff de relaxation pour transnon TWORK.'RELAXATION_THETA' = 1. ; * renormalisation de l'itere pour le limiter TWORK.'RENORMALISATION' = FAUX; * residu chpoint donnant le dernier residu d'equilibre : pasapas unpas TWORK.'RESIDU' = 'MOT' 'INCONNU'; * riblo_m matrice de blocages des appuis unilateraux : unpas TWORK.'RIBLO_M' = 'MOT' 'INCONNU'; * riblo_t matrice de blocages des changement de phase : transnon TWORK.'RIBLO_T' = 'MOT' 'INCONNU'; * valeurr des rigidites constantes TWORK.'RIGIDITE_CONSTANTE' = 'MOT' 'INCONNU'; * solubilite il existe du changement de phase 'SOLUBILITE' TWORK.'SOLUBILITE' = FAUX; * sous_incrementation : nombre de sous increments TWORK.'SOUS_INCREMENT' = 1 ; TWORK.'RECALCUL_SOUSINC' = VRAI ; TWORK.'DEPS_MAX' = 5d-3 ; * SOURCE_Q presence d'un modele thermique source de chaleur TWORK.'SOURCE_Q' = FAUX; * test stabilite de la solution TWORK.'STABILITE' = VRAI; * substepping pour integrer en petites deformation TWORK.'SUBSTEPPING' = FAUX; * tabsauv table indiquant les options de sauv des resultats TWORK.'TABSAUV' = 'TABL' ; TWORK.'TABSAUV'.'DEFIN' = FAUX; TWORK.'TABSAUV'.'DEFTO' = FAUX; TWORK.'TABSAUV'.'DEFAP' = FAUX; * temps_calcules liste des tempsd a calculer TWORK.'TEMPS_CALCULES' = 'MOT' 'INCONNU'; * tem_calc liste des temps a calculer pour les proc thermique : pasapas TWORK.'TEM_CALC' = 'MOT' 'INCONNU'; * teta facteur pour la theta methode en consolidation TWORK.'TETA' = 1.0D0; * tet0 champ de temperature 2 pas avant : pasapas dupont2 TWORK.'TET0' = 0; * tet1 champ de temperature 1 pas avant : pasapas TWORK.'TET1' = 0; * tet2 champ de temperature du pas courant : pasapas TWORK.'TET2' = 0; * the1 le calcul inclus des modeles thermique TWORK.'THE1' = FAUX; * ther_courant champ de temperature propose pour charther : dupont2 transnon TWORK.'THER_COURANT' = 'MOT' 'INCONNU'; * thm1 le calcul inclus des modeles thermohydriques TWORK.'THM1' = FAUX; * tref temperature de reference 0 ou 273 : transnon dupont2 TWORK.'TREF' = 0.D0; * ttol desequilibre absolu dans TRANSNON TWORK.'TTOL' = 'MOT' 'INCONNU'; * update_lagrangian on veut faire du lagrangien reactualise fefp TWORK.'UPDATE_LAGRANGIAN' = FAUX; * presence d'un modele dit utilisateur TWORK.'UTILISATEUR' = FAUX ; * vieuxpas dt precedent pour dupont2 TWORK.'VIEUXPAS' = 0.D0; * viscodommage il existe un modele de comportement viscodommage TWORK.'VISCODOMMAGE' = FAUX; * viscoplastique il existe un modele de comportement viscoplastique TWORK.'VISCOPLASTIQUE' = FAUX; * visco_externe il existe un modele de comportementvisco_externe TWORK.'VISCO_EXTERNE' = FAUX; * xdeno valeur pour calculer le critere de convergence force : unpas TWORK.'XDENO' = 0.d0; * xdenom valeur pour calculer le critere de convergence moment : unpas TWORK.'XDENOM' = 0.d0; * zraidv : rigidite K+4M/H2 (VITEUNIL) TWORK.'ZRAIDV' = 'MOT' 'INCONNU' ; ************************************************************************ * Reprise/poursuite d'un calcul ************************************************************************ * - Reprise d'un calcul : supprimer les infos des instants t > treprise 'SI' ('EXIS' PRECED 'REPRISE'); * Conserver la configuration de reference TWORK.'FOR0' = PRECED.'WTABLE'.'FOR0' ; 'SI' (PRECED.'REPRISE' > 0.); PAS_REPR PRECED; 'FINSI'; 'FINSI'; * * - Poursuite d'un calcul : repartir du dernier instant calcule 'SI' ('EXIS' PRECED 'CONTINUATION'); * * Si le dernier pas calcule n'a pas ete sauvegarde, l'ajouter aux tables * de resultats en recuperant le contenu de CONTINUATION NN = ('DIME' (PRECED.'TEMPS')) '-' 1 ; 'SI' ('NEG' PRECED.'CONTINUATION'.'TEMPS' PRECED.'TEMPS'. NN) ; PRECED.'ESTIMATION' = 'TABLE' ; ISAUV = PAS_RESU 0 PRECED ; 'FINSI' ; * * En cas de poursuite de calcul, indices eventuellement utiles a : * UNPAS, TRANSNON, TRANSLIN, DUPONT2 et autres procedures. * (a ameliorer...) 'SI' ('EXIS' PRECED 'WTABLE') ; * * Conserver la configuration de reference TWORK.'FOR0' = PRECED.'WTABLE'.'FOR0' ; * * Pour initialisation a partir du pas precedent 'SI' ('EXIS' PRECED.'WTABLE' 'ZDEP1') ; TWORK.'ZDEP1' = PRECED.'WTABLE'.'ZDEP1' ; TWORK.'FNONL' = PRECED.'WTABLE'.'FNONL' ; TWORK.'INCREMENT' = PRECED.'WTABLE'.'INCREMENT' ; TWORK.'RESIDU' = PRECED.'WTABLE'.'RESIDU' ; TWORK.'ISOUSPAS' = PRECED.'WTABLE'.'ISOUSPAS' ; 'FINSI' ; * * Pour le pilotage automatique TWORK.'AUTOCOEF' = PRECED.'WTABLE'.'AUTOCOEF'; TWORK.'XDENO' = PRECED.'WTABLE'.'XDENO' ; TWORK.'XDENOM' = PRECED.'WTABLE'.'XDENOM' ; * * En dynamique TWORK.'FREA1' = PRECED.'WTABLE'.'FREA1' ; TWORK.'OPERATEUR' = PRECED.'WTABLE'.'OPERATEUR' ; TWORK.'DTPREC' = PRECED.'WTABLE'.'DTPREC' ; * * Rigidite tangente TWORK.'LASTKTAN' = PRECED.'WTABLE'.'LASTKTAN' ; * * Pour PAS_AJUSTE TWORK.'NOMBRE_ITERATIONS' = PRECED.'WTABLE'.'NOMBRE_ITERATIONS' ; * THERMIQUE ajout de matiere 'SI' ('EXIS' PRECED.'WTABLE' 'CAPA_COURANTE') ; TWORK.'CAPA_COURANTE' = PRECED.'WTABLE'.'CAPA_COURANTE' ; 'FINSI' ; * Reprise ETREF : 'SI' ('EXIS' PRECED.'WTABLE' 'ETREF') ; TWORK . 'ETREF' = PRECED . 'WTABLE' . 'ETREF' ; 'FINSI' ; * Reprise MODELE : 'SI' ('EXIS' PRECED.'WTABLE' 'MODELE') ; TWORK . 'MODELE' = PRECED . 'WTABLE' . 'MODELE' ; 'FINSI' ; * Reprise CARACTERISTIQUES : 'SI' ('EXIS' PRECED.'WTABLE' 'CARACTERISTIQUES') ; TWORK . 'CARACTERISTIQUES' = PRECED . 'WTABLE' . 'CARACTERISTIQUES' ; 'FINSI' ; 'FINSI' ; 'FINSI'; * 'SI' (('EXIS' PRECED 'REPRISE') 'OU' ('EXIS' PRECED 'CONTINUATION')) ; TWORK.'NSOR' = ('DIME' (PRECED.'TEMPS')) '-' 1 ; 'SI' ('EXISTE' PRECED 'REEQUILIBRAGE') ; TWORK.'REEQUILIBRAGE' = PRECED.'REEQUILIBRAGE' ; 'FINSI' ; 'SI' ('EGA' ('TYPE' TWORK.'FOR0') 'CONFIGUR') ; 'FORM' TWORK.'FOR0' ; 'FINSI' ; 'FINSI' ; TWORK.'RECAOP' = 'EGA' TWORK.'OPERATEUR' 'INCONNU' ; ************************************************************************ * Stocker TWORK a l'indice WTABLE de PRECED ************************************************************************ PRECED.'WTABLE' = TWORK ; ************************************************************************ * Renseigner WTABLE a partir des informations de PRECED ************************************************************************ 'SI' ('EGA' TYPMO 'CHARGEME') ; TWORK.'CHAR_MODE' = VRAI ; 'SI' ('EGA' TWORK.'MODELE' 'INCONNU') ; comm 'Existe en cas de reprise' ; 'SI' ('EXIS' PRECED 'TEMPS') ; IINI1 = ('DIME' PRECED.'TEMPS') - 1 ; TPSINI1 = PRECED.'TEMPS'.IINI1 ; 'SINON' ; 'SI' ('EXIS' PRECED 'TEMPS_CALCULES') ; TPSINI1 = PRECED.'TEMPS_CALCULES' 'EXTR' 1 ; 'SINON' ; TPSINI1 = PRECED.'TEMPS_SAUVES' 'EXTR' 1 ; 'FINSI' ; 'FINSI' ; TWORK.'MODELE' = 'TIRE' MO 'MODE' TPSINI1 ; 'FINSI' ; 'SINON' ; TWORK.'MODELE' = MO ; 'FINSI' ; *----------------------------------------------------------------------- 'SI' ('EGA' TYPMA 'CHARGEME') ; TWORK.'CHAR_MATE' = VRAI ; 'SI' ('EGA' TWORK.'CARACTERISTIQUES' 'INCONNU') ; comm 'Existe en cas de reprise' ; 'SI' ('EXIS' PRECED 'TEMPS') ; IINI1 = ('DIME' PRECED.'TEMPS') - 1 ; TPSINI1 = PRECED.'TEMPS'.IINI1 ; 'SINON' ; 'SI' ('EXIS' PRECED 'TEMPS_CALCULES') ; TPSINI1 = PRECED.'TEMPS_CALCULES' 'EXTR' 1 ; 'SINON' ; TPSINI1 = PRECED.'TEMPS_SAUVES' 'EXTR' 1 ; 'FINSI' ; 'FINSI' ; TWORK.'CARACTERISTIQUES' = 'TIRE' MA 'MATE' TPSINI1 ; 'FINSI' ; 'SINON' ; TWORK.'CARACTERISTIQUES' = MA ; 'FINSI'; *----------------------------------------------------------------------- lmcar = 'EXTR' TWORK.'CARACTERISTIQUES' 'COMP' ; 'SI' ('EXIS' lmcar 'XTMA') ; TWORK.'XTMA0' = 'EXCO' TWORK.'CARACTERISTIQUES' 'XTMA' ; 'FINSI' ; *----------------------------------------------------------------------- 'SI' ('EXIS' PRECED 'CHARGEMENT') ; TWORK.'CHARGEMENT' = PRECED.'CHARGEMENT'; 'FINSI'; *----------------------------------------------------------------------- 'SI' ('EXISTE' PRECED 'PAS_AJUSTE'); TWORK.'PAS_AJUSTE' = PRECED.'PAS_AJUSTE'; 'SI' TWORK.'PAS_AJUSTE' ; TWORK.'CONVERGENCE_FORCEE' = FAUX ; 'FINSI'; 'FINSI'; 'SI' ('EXISTE' PRECED 'AUTOMATIQUE'); TWORK.'AUTOMATIQUE' = PRECED.'AUTOMATIQUE'; * par defaut pas de controle de stabilite en pilotage TWORK.'STABILITE' = FAUX; 'FINSI' ; 'SI' TWORK.'AUTOMATIQUE'; TWORK.'PAS_AJUSTE' = FAUX; 'FINSI'; * 'SI' (('EXIS' PRECED 'TEMPS_CALCULES') 'ET' ('NON' TWORK.'PAS_AJUSTE')); TWORK.'TEMPS_CALCULES'= PRECED.'TEMPS_CALCULES'; 'SINON' ; 'SI' TWORK.'FREQUENTIEL' ; l_zf = 'PROG' ; l_ii = 'PROG' 1. 'PAS' 0.3 4. 'PAS' 1. 10. ; 'SI' ('EXISTE' TWORK.'CARACTERISTIQUES' 'FREQ') ; ccfr1 = 'EXCO' TWORK.'CARACTERISTIQUES' 'FREQ' 'NOID' ; 'SI' ('EGA' ('TYPE' ccfr1) 'MCHAML ') ; ncfr1 = 'EXTR' ccfr1 'NBZO' ; 'REPE' vfr1 ncfr1 ; ** hypothese 1 modele = 1 mode !! f1 = 'EXTR' ccfr1 'FREQ' &vfr1 1 1 ; log_f1 = ('LOG' f1) / ('LOG' 10.) ; e10_f1 = 'ENTI' log_f1 ; 'SI' (log_f1 < 0.) ; e10_f1 = e10_f1 - 1 ; 'FINSI' ; 'SI'((log_f1 - e10_f1) 'EGA' 0.) ; e10_f1 = e10_f1 - 1 ; 'FINSI' ; p10_f1 = 10. ** e10_f1 ; l_zf1 = 'PROG' (f1 - (p10_f1/10.)) (f1 - (p10_f1/100.)) (f1 - (p10_f1/1000.)) (f1 + (p10_f1/1000.)) ; l_i10 = l_ii * p10_f1 ; 'SI' (('DIME' l_zf) 'EGA' 0) ; e10_min = e10_f1 ; e10_max = e10_f1 + 1 ; l_zf = 'ORDO' (l_i10 'ET' l_zf1) 'UNIQ' ; 'SINON' ; l_zf0 = l_zf ; 'SI' ((e10_f1 '>EG' e10_min) 'ET' (e10_f1 < e10_max)) ; l_zf = 'ORDO' (l_zf 'ET' l_zf1) 'UNIQ' ; 'SINON' ; 'SI' (e10_f1 < e10_min) ; e10_u = e10_f1 ; 'REPE' b_lz ; l_zf0 = l_i10 'ET' l_zf0 ; e10_u = e10_u + 1 ; 'SI' (e10_u 'EGA' e10_min) ; 'QUIT' b_lz ; 'FINSI' ; l_i10 = l_i10 * 10 ; 'FIN' b_lz ; e10_min = e10_f1 ; l_zf = 'ORDO' (l_zf0 'ET' l_zf1) 'UNIQ' ; 'FINSI' ; 'SI' (e10_f1 '>EG' e10_max) ; e10_u = e10_f1 ; 'REPE' b_lz ; l_zf0 = l_i10 'ET' l_zf0 ; e10_u = e10_u - 1 ; 'SI' (e10_u < e10_max) ; 'QUIT' b_lz ; 'FINSI' ; l_i10 = l_i10 / 10 ; 'FIN' b_lz ; e10_max = e10_f1 + 1; l_zf = 'ORDO' (l_zf0 'ET' l_zf1) 'UNIQ' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FIN' vfr1 ; 'SINON' ; l_zf = l_ii ; 'FINSI' ; TWORK.'TEMPS_CALCULES' = l_zf ; 'SINON' ; TWORK.'TEMPS_CALCULES' = l_ii ; 'FINSI' ; 'SINON'; 'SI' ('NON' ('EXISTE' PRECED 'TEMPS_SAUVES')); 'ERREUR' 'Il manque la donnee des temps a sauver ou a calculer'; 'FINSI'; TWORK.'PAS_AJUSTE' = VRAI; TWORK.'TEMPS_CALCULES' = PRECED.'TEMPS_SAUVES'; TWORK.'TEMPS_SAUVES' = PRECED.'TEMPS_SAUVES'; 'FINSI'; 'FINSI'; TWORK.'IPTIME' = TWORK.'TEMPS_CALCULES'; TWORK.'IPRESU' = TWORK.'TEMPS_CALCULES'; 'SI' ('EXISTE' PRECED 'TEMPS_SAUVES' ); TWORK.'IPRESU' = PRECED.'TEMPS_SAUVES'; 'FINSI'; 'SI' ('EXISTE' PRECED 'TEMPS_SAUVEGARDES'); TWORK.'ISAUVEGL' = VRAI; TWORK.'ISAUVEGA' = PRECED.'TEMPS_SAUVEGARDES'; 'FINSI'; 'SI' ('EXISTE' PRECED 'ECONOMIQUE'); TWORK.'LECONOMI' = PRECED.'ECONOMIQUE'; 'FINSI'; 'SI' ('EXIS' PRECED 'MES_SAUVEGARDES'); TABSAUV = PRECED .'MES_SAUVEGARDES'; TWORK.'TABSAUV' = TABSAUV ; 'SI' ('NON' ( 'EXIS' TABSAUV 'DEFIN')); TWORK.'TABSAUV'.'DEFIN' = FAUX; 'FINSI'; 'SI' ('NON' ( 'EXIS' TABSAUV 'DEFTO')); TWORK.'TABSAUV'.'DEFTO' = FAUX; 'FINSI'; 'SI' ('NON' ( 'EXIS' TABSAUV 'DEFAP')); TWORK.'TABSAUV'.'DEFAP' = FAUX; 'FINSI'; 'FINSI'; LOGERR1 = 'DANS' 'QUEL' TWORK.'IPRESU' TWORK.'IPTIME'; LOGERR2 = VRAI; 'SI' TWORK.'ISAUVEGL'; LOGERR2= 'DANS' 'QUEL' TWORK.'ISAUVEGA' TWORK.'IPTIME'; 'FINSI'; 'SI' ('NON' (LOGERR1 'ET' LOGERR2)); 'ERRE' 1013; 'FINSI'; * *----- Indicateur ADAP_MODE d'adaptation du modele : 'SI' ('EXIS' PRECED 'TEMPS_ADAPTATION_MODELE') ; TWORK.'ADAP_MODE' = VRAI ; TWORK.'LTPS_ADAP' = PRECED.'TEMPS_ADAPTATION_MODELE' ; * TPS1_ADAP : prochain temps d'adaptation TWORK.'TPS1_ADAP' = TWORK.'LTPS_ADAP' 'EXTR' 1 ; TWORK.'INDI_ADAP' = 1 ; 'SINON' ; TWORK.'TPS1_ADAP' = ('MAXI' TWORK.'TEMPS_CALCULES') + 1. ; 'FINSI' ; *----------------------------------------------------------------------- 'SI' ('EXISTE' PRECED 'CONSOLIDATION') ; TWORK.'CONSOLIDATION' = PRECED.'CONSOLIDATION' ; 'FINSI'; * 'SI' ('EXISTE' PRECED 'CONVERGENCE_MONOTONE'); TWORK.'CONVERGENCE_MONOTONE' = PRECED.'CONVERGENCE_MONOTONE'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'DELTAITER'); TWORK.'DELTAITER' = PRECED.'DELTAITER'; 'FINSI' ; * 'SI' ('EXISTE' PRECED 'DYNAMIQUE') ; TWORK.'DYNAMIQUE' = PRECED.'DYNAMIQUE'; 'SI' ('EXISTE' PRECED 'AMORTISSEMENT' ); TWORK.'AMORTISSEMENT' = 'EXTR' PRECED.'AMORTISSEMENT' 'RIGI' 'NOMU'; 'FINSI'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'FTOL' ); TWORK.'FTOL' = PRECED.'FTOL'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'INITIALISATION'); TWORK.'INITIALISATION' = PRECED.'INITIALISATION'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'LIAISON_PERSISTANTE' ) ; TWORK.'LIAISON_PERSISTANTE' = PRECED.'LIAISON_PERSISTANTE'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'MAXSOUSITERATION') ; TWORK.'MAXSOUSITERATION' = PRECED.'MAXSOUSITERATION'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'MAXSOUSPAS'); TWORK.'MAXSOUSPAS' = PRECED.'MAXSOUSPAS' ; 'FINSI'; * 'SI' ('EXISTE' PRECED 'LINESEARCH'); 'SI' ('EGA' PRECED.'LINESEARCH' VRAI); TWORK.'LINESEARCH' = VRAI; TWORK.'GRANDS_DEPLACEMENTS' = VRAI; 'FINSI'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'MTOL' ); TWORK.'MTOL' = PRECED.'MTOL'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PRECISION') ; TWORK.'PRECISION' = PRECED.'PRECISION' ; 'FINS' ; * 'SI' ('EXISTE' PRECED 'PRECDEFO') ; TWORK.'PRECDEFO' = PRECED.'PRECDEFO' ; 'FINS' ; * 'SI' ('EXISTE' PRECED 'PRECSOUSITERATION') ; TWORK.'PRECSOUSITERATION' = PRECED.'PRECSOUSITERATION'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PREDICTEUR'); TWORK.'PREDICTEUR' = 'MOT' PRECED.'PREDICTEUR'; TWORK.'GRANDS_DEPLACEMENTS' = VRAI; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PROCEDURE_CHARMECA'); TWORK.'PROCEDURE_CHARMECA' = PRECED.'PROCEDURE_CHARMECA'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PROCEDURE_CHARTHER'); TWORK.'PROCEDURE_CHARTHER' = PRECED.'PROCEDURE_CHARTHER'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PROCEDURE_PARATHER') ; TWORK.'PROCEDURE_PARATHER' = PRECED.'PROCEDURE_PARATHER' ; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PROCEDURE_PERSO1'); TWORK.'PROCEDURE_PERSO1' = PRECED.'PROCEDURE_PERSO1'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PROCEDURE_PERSO2'); TWORK.'PROCEDURE_PERSO2' = PRECED.'PROCEDURE_PERSO2'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PROCEDURE_REEV_MEC'); TWORK.'PROCEDURE_REEV_MEC' = PRECED.'PROCEDURE_REEV_MEC' ; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PROCEDURE_REEV_THE'); TWORK.'PROCEDURE_REEV_THE' = PRECED.'PROCEDURE_REEV_THE' ; 'FINSI'; * 'SI' ('EXISTE' PRECED 'PROCEDURE_THERMIQUE'); TWORK.'PROCEDURE_THERMIQUE' = PRECED.'PROCEDURE_THERMIQUE'; 'FINSI'; * 'SI' ('EXIS' PRECED 'REAC_GRANDS'); 'SI' ('EGA' ('TYPE' PRECED . 'REAC_GRANDS') 'FLOTTANT') ; TWORK.'REAC_GRANDS' = PRECED.'REAC_GRANDS'; 'FINSI'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'RENORMALISATION'); TWORK.'RENORMALISATION' = PRECED.'RENORMALISATION'; 'FINSI'; * 'SI' ('EXIS' PRECED 'SOUS-INCREMENT' ); TWORK.'SOUS-INCREMENT'=PRECED.'SOUS-INCREMENT'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'STABILITE'); TWORK.'STABILITE'= PRECED.'STABILITE'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'CONVERGENCE_FORCEE'); TWORK.'CONVERGENCE_FORCEE' = PRECED.'CONVERGENCE_FORCEE'; 'SINON'; 'SI' ('NON' TWORK.'AUTOMATIQUE'); TWORK.'CONVERGENCE_FORCEE' = VRAI; 'FINSI'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'CONVERGENCE_MEC_THE'); TWORK.'CONVERGENCE_MEC_THE' = PRECED.'CONVERGENCE_MEC_THE'; 'FINSI'; 'SI' TWORK.'CONVERGENCE_MEC_THE'; TWORK.'AUTOMATIQUE' = FAUX; TWORK.'CONVERGENCE_FORCEE' = FAUX; 'SI' TWORK.'PAS_AJUSTE' ; 'ERREUR' 'Options CONVERGENCE_MEC_THE et PAS_AJUSTE incompatibles'; 'FINSI'; TWORK.'CRITERE_COHERENCE' = TWORK.'PRECISION' ; 'SI' ('EXISTE' PRECED 'CRITERE_COHERENCE') ; TWORK.'CRITERE_COHERENCE' = PRECED.'CRITERE_COHERENCE' ; 'FINSI' ; TWORK.'BOU_METH' = 10; 'SI' ('EXISTE' PRECED 'NB_BOTH'); TWORK.'BOU_METH'=PRECED.'NB_BOTH'; 'FINSI'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'MAXITERATION') ; TWORK.'MAXITERATION' = PRECED.'MAXITERATION'; 'SINON'; 'SI' ((TWORK.'AUTOMATIQUE') 'OU' (TWORK.'PAS_AJUSTE')) ; TWORK.'MAXITERATION' = 250; 'FINSI'; 'FINSI'; * 'SI' (TWORK.'CONVERGENCE_FORCEE' 'OU' TWORK.'RENORMALISATION'); TWORK.'MAXITERATION' = 250; 'SI' ('EXISTE' PRECED 'MAXDEFOR'); TWORK.'MAXDEFOR' = PRECED.'MAXDEFOR' ; 'FINSI'; 'SI' TWORK.'CONVERGENCE_FORCEE'; 'SI' ('EXISTE' PRECED 'RELAXATION_NONCONV'); TWORK.'RELAXATION_NONCONV' = PRECED.'RELAXATION_NONCONV' ; 'FINSI'; 'FINSI'; 'FINSI'; *----------------------------------------------------------------------- * Note : Il faudrait separer la thermique de la mecanique pour la //. NBPART = 'VALEUR' 'ASSI' ; TWORK.'NBPART' = NBPART ; MPARA = 'MOT' TWORK.'PROCESSEURS' ; 'SI' ('EXISTE' PRECED 'PROCESSEURS'); MPARA = 'MOT' PRECED.'PROCESSEURS'; 'FINSI'; 'SI' (' BBB); MINELE = BBB; 'FINSI'; 'SI' (MAXELE < BBB); MAXELE = BBB; 'FINSI'; 'FIN' BOUCMO ; NBTMP = (MINELE / NBELMM) ; ** mess 'nbtmp' ' ' nbtmp; SI (NBTMP < NBPART); NBPART = NBTMP; 'FINSI'; TWORK.'NBPART' = NBPART ; 'SI' ('>' NBPART 1); MINELE=MINELE/NBPART ; MAXELE=MAXELE/NBPART; ** mess 'minele maxele' ' ' minele ' ' maxele; 'SI' (MINELE > NBELMIN) ; MPARA = 'MOT' 'AUTOMATIQUE' ; 'SINON'; 'SI'( (MINELE > NBELMM) 'OU' (MAXELE > NBELMM)) ; MPARA = 'MOT' 'COMPORTEMENT' ; 'FINSI'; 'FINSI'; 'SINON'; MPARA = 'MOT' 'MONO_PROCESSEUR' ; 'FINSI'; 'FINSI'; 'FINSI'; LMPARA = 'MOTS' 'MONO_PROCESSEUR' 'AUTOMATIQUE' 'COMPORTEMENT' ; 'SI' ('EXIS' LMPARA MPARA) ; TWORK.'PROCESSEURS' = 'MOT' MPARA ; 'SINON' ; 'MESS' ' *** Cas // non prevu' ; 'ERREUR' 5 ; 'FINSI' ; ************************************************************************ * Decortiquer ce que contient le MODELE dans PAS_MODL ************************************************************************ * Oublier l'indice MODEL_COURANT pour re-initialiser la table si (exis TWORK 'MODELE_COURANT') ; oubl TWORK 'MODELE_COURANT' ; fins ; * * Oublier l'indice 'MO_TOT_PREC' pour le reinitialiser dans UNPAS si (exis TWORK 'MO_TOT_PREC') ; oubl TWORK 'MO_TOT_PREC' ; fins ; PAS_MODL PRECED ; * * Verification que pas de materiau variable en automatique 'SI' (TWORK.'MATVAR' 'ET' TWORK.'AUTOMATIQUE') ; 'MESS' 'Option AUTMOATIQUE incompatible avec un materiau a propriete(s) variable(s)' ; 'ERREUR' 19 ; 'FINSI' ; * 'SI' ('NON' ('OU' TWORK.'FOR_MECA' TWORK.'FOR_THER' TWORK.'FOR_DIFF' TWORK.'NVSTNL')) ; 'ERREUR' 'Le modele ne correspond a aucune formulation valable'; 'FINSI'; * 'SI' TWORK.'ADAP_MODE' ; 'SI' ('OU' TWORK.'FOR_METALLU' TWORK.'PHASE' TWORK.'SOLUBILITE' TWORK.'FOR_DIFF' TWORK.'THM1' TWORK.'FOR_MECA') ; 'MESS' ' > Adaptation du modele pas disponible pour cette formulation.' ; 'ERRE' 251 ; 'FINSI' ; 'FINSI' ; * 'SI' (TWORK.'NVSTNL' 'ET' TWORK.'FOR_MECA') ; TWORK.'DYNAMIQUE' = VRAI ; 'FINSI' ; * * Noms des inconnues passees a TRANSNON : 'SI' ('NEG' TWORK.'MOD_TOT' 'INCONNU') ; TWORK.'PRIM_TOT' = 'EXTR' TWORK.'MOD_TOT' 'DEPL' ; TWORK.'DUAL_TOT' = 'EXTR' TWORK.'MOD_TOT' 'FORC' ; 'FINS' ; * * GRANDS_DEPLACEMENTS si CONTACT : 'SI' TWORK.'CONTACT' ; TWORK.'GRANDS_DEPLACEMENTS' = VRAI; 'FINSI'; * *---------- Calcul purement thermique / diffusion ? ou couplage? ------- 'SI' (TWORK.'FOR_THER' 'OU' TWORK.'FOR_DIFF'); 'SI' TWORK.'FOR_MECA' ; TWORK.'COUPLAGE' = VRAI; 'SI' ('EXIS' PRECED 'PROJECTION'); TWORK.'PROJECTION' = PRECED.'PROJECTION'; 'FINSI'; 'FINSI'; 'FINSI'; * 'SI' TWORK.'POR1'; TWORK.'MOT_POR' = 'MOTS' 'FP' 'FPQ' 'FTP' ; * * poreux+consolidation -> il faut donner la matrice de permeabilite * et ne pas etre en dynamique 'SI' TWORK.'CONSOLIDATION' ; 'SI' TWORK.'DYNAMIQUE' ; 'ERREUR' ' On ne peut pas etre en dynamique.' ; 'FINSI'; 'SI' ('NON' ('EXISTE' PRECED 'PERMEABILITE')); 'ERREUR' 'Il faut donner la matrice de permeabilite'; 'SINON'; TWORK.'PERMEABILITE'=PRECED.'PERMEABILITE'; 'FINSI'; 'SI' ('EXISTE' PRECED 'TETA' ) ; TWORK.'TETA' = PRECED.'TETA'; 'FINSI'; 'FINSI'; 'FINSI'; * * Verif. CHARGEMENT si formulation CHARGEMENT : 'SI' ('EXIS' TWORK 'MOD_CHA') ; 'SI' ('NON' ('EXIS' (TWORK.'CHARGEMENT') 'PRES')) ; 'ERREUR' 'Il manque la donnee d un chargement de pression'; 'ERREUR' '-> voir la notice de l operateur CHAR'; 'FINSI' ; 'FINSI' ; TWORK.'CHAR_THE' = 'EXISTE' TWORK.'CHARGEMENT' 'T' ; TWORK.'CHAR_DEFI' = 'EXISTE' TWORK.'CHARGEMENT' 'DEFI' ; TWORK.'CHAR_MATE' = TWORK.'CHAR_MATE' 'OU' ('EXIS' TWORK.'CHARGEMENT' 'MATE') ; TWORK.'CHAR_PRES' = 'EXISTE' TWORK 'MOD_PRE' ; TWORK.'ITHER' = 'OU' TWORK.'FOR_THER' TWORK.'CHAR_THE' ; *------------ existe-t-il un chargement en pilotage indirect ? -------- 'SI' ('EXISTE' PRECED 'PILOTAGE_INDIRECT') ; TWORK.'CHAR_PILO' = VRAI; *--------- et des deplacements pilotes 'SI' ('EXISTE' PRECED 'DEPLACEMENTS_PILOTES' ); TWORK.'DEPLACEMENTS_PILOTES' = PRECED.'DEPLACEMENTS_PILOTES' ; 'FINSI'; *--------- et des forces pilotees 'SI' ('EXISTE' PRECED 'FORCES_PILOTEES' ); TWORK.'FORCES_PILOTEES' = PRECED.'FORCES_PILOTEES'; 'FINSI'; *--------- et une region de recherche 'SI' ('EXISTE' PRECED 'ZONE_DE_PILOTAGE' ); TWORK.'ZONE_DE_PILOTAGE' = PRECED.'ZONE_DE_PILOTAGE'; 'FINSI'; *--------- et le parametre de pilotage 'SI' ('EXISTE' PRECED 'PARAMETRE_DE_PILOTAGE' ); TWORK.'PARAMETRE_DE_PILOTAGE' = PRECED.'PARAMETRE_DE_PILOTAGE'; 'FINSI'; * *---------- Parametre de pilotage indirect et table de sortie 'SI' ('NON' ('EXIS' PRECED 'COEFFICIENT_DE_PILOTAGE')); PRECED.'COEFFICIENT_DE_PILOTAGE' = PROG 0. ; 'FINSI'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'CAPACITE_CONSTANTE'); TWORK.'CAPACONST' = VRAI; TWORK.'CAPACITE_CONSTANTE' = PRECED.'CAPACITE_CONSTANTE'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'CONDUCTIVITE_CONSTANTE'); TWORK.'CONDCONST' = VRAI; TWORK.'CONDUCTIVITE_CONSTANTE' = PRECED.'CONDUCTIVITE_CONSTANTE'; 'FINSI'; ************************************************************************ * Verifications/initialisations propres a la THERMIQUE ************************************************************************ 'SI' TWORK.'FOR_THER' ; * 'SI' ('OU' TWORK.'PHASE' TWORK.'SOLUBILITE' TWORK.'FOR_DIFF' TWORK.'THM1'); TWORK.'PROCEDURE_THERMIQUE' = 'MOT' 'NONLINEAIRE'; 'FINSI'; * MOD_T = TWORK.'MOD_T' ; PRIM_T = 'EXTR' MOD_T 'DEPL' ; 'SI' ('EXIS' PRECED 'TTOL'); TTOL=PRECED.'TTOL' ; 'SI' ('EGA' ('TYPE' TTOL) ('MOT' 'FLOTTANT')); TTOL ='MANU' 'CHPO' ('EXTR' MOD_T 'MAIL') PRIM_T ('PROG' ('DIME' PRIM_T) '*' TTOL) 'NATURE' 'DIFFUS'; 'SINO'; 'ERRE' 'PAS_DEFA : l''indice ''TTOL'' ne peut etre qu''un ''FLOTTANT''' ; 'FINS'; TWORK.'TTOL' = TTOL ; 'FINS'; TWORK.'PRIM_T' = PRIM_T 'ET' 'LX' ; TWORK.'DUAL_T' =('EXTR' MOD_T 'FORC') 'ET' 'FLX' ; * 'SI'('EXIS' PRECED 'CELSIUS'); TWORK.'CELSIUS' = PRECED.'CELSIUS'; TWORK.'TREF' = 273.15 ; 'FINSI'; * 'SI' ('EXIS' PRECED 'BLOCAGES_THERMIQUES'); BLOTHE1 = PRECED.'BLOCAGES_THERMIQUES' ; TWORK.'BLOCAGES_THERMIQUES' = BLOTHE1 ; TWORK.'CHAR_BLOT' = 'EGA' ('TYPE' BLOTHE1) 'CHARGEME' ; 'FINSI'; * 'SI' TWORK.'RAYO' ; TWORK.'RAYONNEMENT' = 'PRRA' TWORK.'MOD_RAY'; 'SI' ('NON' ('EXISTE' (TWORK.'CARACTERISTIQUES') 'EMIS')); 'ERREUR' ' Il manque la donnee des facteurs d emissivite'; 'FINSI'; 'SI'('EXISTE' PRECED 'CTE_STEFAN_BOLTZMANN') ; TWORK.'CTE_STEFAN_BOLTZMANN'=PRECED.'CTE_STEFAN_BOLTZMANN'; 'SAUT' 1 'LIGN' ; 'MESS' 'ATTENTION ! Constante de Stefan-Boltzmann en unites SI'; 'MESS' ' soit ' (TWORK . 'CTE_STEFAN_BOLTZMANN') ; 'FINSI' ; 'FINSI'; * 'SI' ('EXIS' PRECED 'RELAXATION_THETA'); TWORK.'RELAXATION_THETA'=PRECED.'RELAXATION_THETA' ; 'FINSI'; * 'SI' ('EXIS' PRECED 'RELAXATION_DUPONT'); TWORK.'RELAXATION_DUPONT'= PRECED . 'RELAXATION_DUPONT' ; 'FINSI'; * 'SI' ('EXISTE' PRECED 'THERMIQUE_AUGMENTEE'); TWORK.'THERAUGM' = VRAI; TWORK.'THERMIQUE_AUGMENTEE' = PRECED.'THERMIQUE_AUGMENTEE'; RR= PRECED.'THERMIQUE_AUGMENTEE'; MNOMU = ('EXTR' RR 'MAILLAGE' 'NOMU') 'NBNO'; MAVMU = ('EXTR' RR 'MAILLAGE' ) 'NBNO'; 'SI' (MNOMU 'NEG' MAVMU) ; 'ERREUR' 'Il ne faut pas de multiplicateur dans THERMIQUE_AUGMENTEE'; 'FINSI'; 'FINSI'; 'FINSI'; ************************************************************************ * Verifications/initialisations propres a la DIFFUSION ************************************************************************ 'SI' TWORK.'FOR_DIFF' ; * MOD_DIF = TWORK.'MOD_DIF' ; PRIM_DIF ='EXTR' MOD_DIF 'DEPL' ; TWORK.'PRIM_DIF' = PRIM_DIF ; 'SI' ('EXIS' PRECED 'CTOL'); CTOL=PRECED.'CTOL' ; 'SI' ('EGA' ('TYPE' CTOL) ('MOT' 'FLOTTANT')); CTOL ='MANU' 'CHPO' ('EXTR' MOD_DIF 'MAIL') PRIM_DIF ('PROG' ('DIME' PRIM_DIF) '*' CTOL) 'NATURE' 'DIFFUS'; 'SINO'; 'SI' ('EGA' ('TYPE' CTOL) ('MOT' 'CHPOINT')); 'SI' ('NON' ('EXIS' ('EXTR' CTOL 'COMP') PRIM_DIF 'ET')); 'ERRE' 'CTOL ne contient pas toutes les composantes de la DIFFUSION'; 'FINS'; 'SINO'; 'ERRE' 'PAS_DEFA : l''indice ''CTOL'' ne peut etre qu''un CHPOINT ou un ''FLOTTANT'''; 'FINS'; 'FINS'; 'SI' ('EGA' ('TYPE' TWORK.'TTOL') ('MOT' 'CHPOINT')); TWORK.'TTOL' = TWORK.'TTOL' 'ET' CTOL ; 'SINO'; TWORK.'TTOL' = CTOL ; 'FINS'; 'FINS'; TWORK.'PRIM_DIF' = PRIM_DIF 'ET' 'LX' ; TWORK.'DUAL_DIF' =('EXTR' MOD_DIF 'FORC') 'ET' 'FLX' ; * 'SI' ('EXIS' PRECED 'BLOCAGES_DIFFUSIONS') ; BLODIF1 = PRECED.'BLOCAGES_DIFFUSIONS' ; TWORK.'BLOCAGES_DIFFUSIONS' = BLODIF1 ; TWORK.'CHAR_BLOD' = 'EGA' ('TYPE' BLODIF1) 'CHARGEME' ; 'FINSI' ; * 'SI' ('EXIS' PRECED 'RELAXATION_THETA' ); TWORK.'RELAXATION_THETA'=PRECED.'RELAXATION_THETA' ; 'FINSI'; * 'SI' ('EXIS' PRECED 'RELAXATION_DUPONT'); TWORK.'RELAXATION_DUPONT'= PRECED . 'RELAXATION_DUPONT' ; 'FINSI'; * 'SI' ('EXISTE' PRECED 'DIFFUSION_AUGMENTEE'); TWORK.'DIFFAUGM' = VRAI; TWORK.'DIFFUSION_AUGMENTEE' = PRECED.'DIFFUSION_AUGMENTEE'; RR= PRECED.'DIFFUSION_AUGMENTEE'; MNOMU = ('EXTR' RR 'MAILLAGE' 'NOMU') 'NBNO'; MAVMU = ('EXTR' RR 'MAILLAGE' ) 'NBNO'; 'SI' (MNOMU 'NEG' MAVMU) ; 'ERREUR' 'Il ne faut pas de multiplicateur dans DIFFUSION_AUGMENTEE'; 'FINSI'; 'FINSI'; 'FINSI'; ************************************************************************ * Verifications/initialisations propres a la MECANIQUE ************************************************************************ 'SI' ('EXIS' PRECED 'BLOCAGES_MECANIQUES'); BLOMEC1 = PRECED.'BLOCAGES_MECANIQUES' ; TWORK.'BLOCAGES_MECANIQUES' = BLOMEC1 ; TWORK.'CHAR_BLOM' = 'EGA' ('TYPE' BLOMEC1) 'CHARGEME' ; 'SI' TWORK.'CHAR_BLOM' ; TWORK.'RECARI' = VRAI ; 'FINSI' ; 'FINSI'; * 'SI' TWORK.'FOR_MECA' ; * 'SI' ('EXISTE' PRECED 'PRECISION') ; TWORK.'PRECFLEX' = PRECED.'PRECISION' ; 'FINSI'; 'SI' ('EXISTE' PRECED 'PRECFLEX') ; TWORK.'PRECFLEX' = PRECED.'PRECFLEX'; 'FINSI'; * 'SI' ('EXISTE' PRECED 'K_TANGENT'); TWORK.'K_TANGENT' = PRECED.'K_TANGENT'; 'FINSI'; 'SI' ('EXISTE' PRECED 'K_TANGENT_PERT') ; TWORK.'K_TANGENT_PERT' = PRECED.'K_TANGENT_PERT' ; 'SI' TWORK.'K_TANGENT_PERT' ; TWORK.'K_TANGENT' = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('EXISTE' PRECED 'K_TANG_PERT_C1') ; TWORK.'K_TANG_PERT_C1' = PRECED.'K_TANG_PERT_C1' ; 'FINSI' ; 'SI' ('EXISTE' PRECED 'K_TANG_PERT_C2') ; TWORK.'K_TANG_PERT_C2' = PRECED.'K_TANG_PERT_C2' ; 'FINSI' ; * Par defaut, C2 = C1/100 (C1 donne ou par defaut 1.D-3) 'SI' ('EGA' TWORK.'K_TANG_PERT_C2' 'INCONNU') ; TWORK.'K_TANG_PERT_C2' = TWORK.'K_TANG_PERT_C1' / 1.D+02 ; 'FINSI' ; * Matrice tangente a utiliser pour iteration 0 dans UNPAS * Par defaut, matrice tangente precedemment calculee si existe 'SI' ('EXISTE' PRECED 'K_TANGENT_ITER0') ; TWORK.'K_TANGENT_ITER0' = PRECED.'K_TANGENT_ITER0' ; 'FINSI' ; * Utilisation matrice tangente symetrisee 'SI' ('EXISTE' PRECED 'K_TANGENT_SYME') ; TWORK.'K_TANGENT_SYME' = PRECED.'K_TANGENT_SYME' ; 'FINSI' ; 'SI' ( 'EXISTE' PRECED 'NITER_KTANGENT'); TWORK.'NITER_KTANGENT' =PRECED.'NITER_KTANGENT' ; 'FINSI'; *----------MAN? ordre de la MAN? 'SI' ('EXISTE' PRECED 'MAN' ); TWORK.'MAN'= PRECED.'MAN'; 'FINSI'; 'SI' ( 'EXISTE' PRECED 'ORDRE'); TWORK.'ORDRE'=PRECED.'ORDRE'; 'FINSI'; *-------------y-a-t-il du substepping?----------- 'SI' ('EXISTE' PRECED 'SUBSTEPPING'); TWORK.'SUBSTEPPING'=PRECED.'SUBSTEPPING' ; 'FINSI'; 'SI' ('EXISTE' PRECED 'PRECISINTER'); TWORK.'PRECISINTER' = PRECED.'PRECISINTER'; 'FINSI'; 'SI' ('EXISTE' PRECED 'NITERINTER_MAX'); TWORK.'NITERINTER_MAX' =PRECED.'NITERINTER_MAX'; 'FINSI'; 'SI' ('EXISTE' PRECED 'NMAXSUBSTEPS'); TWORK.'NMAXSUBSTEPS'=PRECED.'NMAXSUBSTEPS'; 'FINSI'; *------------- quelle est l'hypothese de calcul des deformations ? 'SI' ('EXISTE' PRECED 'HYPOTHESE_DEFORMATIONS' ); HYPDEF = MOT PRECED.'HYPOTHESE_DEFORMATIONS'; 'SI' (('EGA' HYPDEF ('MOT' 'LINEAIRE')) 'OU' ('EGA' HYPDEF ('MOT' 'QUADRATIQUE')) 'OU' ('EGA' HYPDEF ('MOT' 'TRUESDELL')) 'OU' ('EGA' HYPDEF ('MOT' 'JAUMANN')) 'OU' ('EGA' HYPDEF ('MOT' 'UTILISATEUR'))); TWORK.'HYPOTHESE_DEFORMATIONS'='MOT' HYPDEF; 'SINON'; 'MESS' 'Les valeurs permises pour HYPOTHESE_DEFORMATIONS sont :'; 'MESS' 'LINEAIRE, QUADRATIQUE, TRUESDELL, JAUMANN, UTILISATEUR'; 'ERRE' 308; 'FINSI'; 'FINSI'; *------------- y-a-t-il du grand deplacement ? 'SI' ('EXISTE' PRECED 'GRANDS_DEPLACEMENTS' ); 'SI' (TWORK.'CONTACT' 'ET' ('NON' PRECED.'GRANDS_DEPLACEMENTS')); 'MESS' 'Un calcul avec un modele de CONTACT doit necessairement' 'MESS' 'etre realise en GRANDS_DEPLACEMENTS !'; 'MESS' 'Arret de pasapas'; 'ERRE' 21; 'FINSI'; TWORK.'GRANDS_DEPLACEMENTS' = PRECED.'GRANDS_DEPLACEMENTS'; 'FINSI'; *------------- quelques reglages forces en grands deplacements 'SI' TWORK.'GRANDS_DEPLACEMENTS' ; TWORK.'RECARI' = VRAI ; * * PV Quel interet d'avoir les deformations? ** par defaut, on sauvegarde des def. totales en grands deplacements ** 'SI' ('NON' ('EXIS' PRECED 'MES_SAUVEGARDES')); ** TWORK.'TABSAUV'.'DEFTO'= VRAI; ** 'FINS'; * par defaut, on calcule avec une deformation quadratique en grands deplacements * mais on laisse faire l'utilisateur s'il souhaite autrement 'SI' ('NON' ('EXIS' PRECED 'HYPOTHESE_DEFORMATIONS')); TWORK.'HYPOTHESE_DEFORMATIONS'='MOT' 'QUADRATIQUE'; 'FINSI'; * par defaut, on active K_SIGMA en grands deplacements si pas de controle de stabilite 'SI' ('NON' TWORK.'STABILITE'); TWORK.'K_SIGMA'=VRAI; 'FINSI'; * par defaut, on active K_SIGMA en grands deplacements si deformations quadratiques 'SI' ('EGA' TWORK.'HYPOTHESE_DEFORMATIONS' 'QUADRATIQUE'); TWORK.'K_SIGMA'=VRAI; 'FINSI'; 'FINSI'; * ---------- y-a-t-il une demande sur K_SIGMA ? 'SI' ('EXISTE' PRECED 'K_SIGMA'); TWORK.'K_SIGMA' = PRECED.'K_SIGMA'; 'FINSI'; * ---------- y-a-t-il une demande sur LAGRANGIEN ? 'SI' ('EXISTE' PRECED 'LAGRANGIEN'); 'SI' ('EGA' preced.'LAGRANGIEN' 'TOTAL'); TWORK.'LAG_TOT' = 1; 'SINON'; 'SI' ('EGA' preced.'LAGRANGIEN' 'FIN_PAS'); TWORK.'LAG_TOT' = 2; 'SINON'; 'SI' (('EGA' preced.'LAGRANGIEN' 'REACTUALISE') 'OU' ('EGA' preced.'LAGRANGIEN' 'MI_PAS')); TWORK.'LAG_TOT' = 3; 'SINON'; 'ERRE' 'Seules les valeurs TOTAL, REACTUALISE (a MI_PAS) et FIN_PAS sont permises'; 'FINSI'; 'FINSI'; 'FINSI'; 'FINSI'; * 'SI' ('OU' TWORK.'CERAMIQUE' TWORK.'ENDOMMAGEMENT' TWORK.'VISCODOMMAGE'); TWORK.'RECARI' = VRAI; TWORK.'LAG_TOT' = 0 ; 'FINS'; *----- existe-t-il la prise en compte du degre d'hydratation (BETON_THM) * G. Sciume 'SI' ('EXIS' PRECED 'VARIABLES_THM'); TWORK.'BETON_THM' = VRAI; 'FINSI'; *--------------y-a-t-il une formulation feFP 'SI' ('EXISTE' PRECED 'FEFP_FORMULATION'); TWORK.'FEFP_FORMULATION' = PRECED.'FEFP_FORMULATION'; 'FINSI'; 'SI' TWORK.'FEFP_FORMULATION'; TWORK.'GRANDS_DEPLACEMENTS' = FAUX ; TWORK.'K_SIGMA' = VRAI ; TWORK.'K_TANGENT' = VRAI ; TWORK.'SUBSTEPPING' = FAUX ; TWORK.'RECARI' = VRAI ; 'FINSI'; 'SI' ( 'EXISTE' PRECED 'UPDATE_LAGRANGIAN' ); TWORK.'UPDATE_LAGRANGIAN' = PRECED.'UPDATE_LAGRANGIAN' ; 'FINSI'; 'SI' ('NON' TWORK.'GRANDS_DEPLACEMENTS'); TWORK.'LAG_TOT' = 0 ; 'FINS'; *---------- en cas de pilotage automatique ? 'SI' TWORK.'AUTOMATIQUE' ; 'SI' ('EXISTE' PRECED 'AUTOCRIT'); TWORK.'AUTOCRIT'= PRECED.'AUTOCRIT'; 'FINSI'; 'SI' ('EXISTE' PRECED 'AUTOPAS'); TWORK.'AUTOPAS'= PRECED.'AUTOPAS'; 'FINSI'; 'SI' ('EXISTE' PRECED 'AUTORECA'); TWORK.'AUTORECA'= 'MAXI' ('ENTI' PRECED.'AUTORECA') 1 ; 'FINSI'; 'SI' ('EXISTE' PRECED 'AUTORESU'); TWORK.'NAURES' = PRECED.'AUTORESU'; 'FINSI'; TWORK.'DELTAITER' = TWORK.'MAXITERATION'; 'FINSI'; *------ y-a-t-il un nom de variable interne specifique ? 'SI' ('EXISTE' PRECED 'MOVA'); TWORK.'MOVA' =PRECED.'MOVA'; 'SINON'; 'SI'(TWORK.'VISCO_EXTERNE' 'OU' TWORK.'UTILISATEUR'); TWORK.MOVA = 'MOT' 'RIEN'; 'FINSI'; 'SI' ('NON' ('EXISTE' ('EXTR' TWORK.'MODELE' 'VARI') 'EPSE')); TWORK.'MOVA' = 'MOT' 'RIEN'; 'FINSI' ; 'FINSI'; *---------- y-a-t-il des elements de rigidite constante ? -------- 'SI' ( 'EXISTE' PRECED 'RIGIDITE_CONSTANTE'); TWORK.'RAIDCONST' =VRAI; TWORK.'RIGIDITE_CONSTANTE'=PRECED.'RIGIDITE_CONSTANTE'; RR= PRECED.'RIGIDITE_CONSTANTE'; MNOMU = ('EXTR' RR 'MAILLAGE' 'NOMU') 'NBNO'; MAVMU = ('EXTR' RR 'MAILLAGE' ) 'NBNO'; 'SI' ( MNOMU 'NEG' MAVMU) ; 'ERREUR' 'Il ne faut pas de multiplicateur dans RIGIDITE_CONSTANTE'; 'FINSI'; 'FINSI'; *---------- y-a-t-il des elements de rigidite augmentee ? -------- 'SI' ('EXISTE' PRECED 'RIGIDITE_AUGMENTEE'); TWORK.'RAIDAUGM' =VRAI; TWORK.'RIGIDITE_AUGMENTEE'=PRECED.'RIGIDITE_AUGMENTEE'; RR= PRECED.'RIGIDITE_AUGMENTEE'; MNOMU = ('EXTR' RR 'MAILLAGE' 'NOMU') 'NBNO'; MAVMU = ('EXTR' RR 'MAILLAGE' ) 'NBNO'; 'SI' ( MNOMU 'NEG' MAVMU) ; 'ERREUR' 'Il ne faut pas de multiplicateur dans RIGIDITE_AUGMENTEE'; 'FINSI'; 'SINON'; 'SI' ('EXISTE' PRECED 'AUGMENTATION_AUTOMATIQUE'); TWORK.'RIGIDITE_AUGMENTEE'='MASSE' TWORK.'MODELE' TWORK.'CARACTERISTIQUES'; 'FINSI'; 'FINSI'; 'SI' ('EXISTE' PRECED 'AUGMENTATION_AUTOMATIQUE'); 'SI' PRECED.'AUGMENTATION_AUTOMATIQUE'; TWORK.'AUTOAUGM' = VRAI; TWORK.'STABILITE' = VRAI ; *** 'SI' ('NON' TWORK.'RAIDAUGM'); *** 'ERREUR' 'il faut donner la matrice d augmentation dans RIGIDITE_AUGMENTEE'; *** 'FINSI'; 'FINSI'; 'FINSI'; *---------- y-a-t-il des elements de masse constante ? --------- 'SI' ('EXISTE' PRECED 'MASSE_CONSTANTE'); TWORK.'MASSE_CONSTANTE'=PRECED.'MASSE_CONSTANTE'; TWORK.'MASSCONST'=VRAI; 'FINSI'; *---------- y-a-t-il un sous_increment ? --------- 'SI' ('EXISTE' PRECED 'SOUS_INCREMENT'); 'SI' (' 0' ; 'ERREUR' 21 ; 'FINSI'; TWORK.'SOUS_INCREMENT' = PRECED.'SOUS_INCREMENT'; TWORK.'RECALCUL_SOUSINC' = FAUX ; 'FINSI'; 'SI' ('EXISTE' PRECED 'DEPS_MAX'); TWORK.'DEPS_MAX' = PRECED.'DEPS_MAX' ; 'FINSI'; *------------------- Cas du non local : 'SI' TWORK.'NLOC' ; 'SI' ( 'EXISTE' PRECED 'CONN' ); 'MESS' 'On garde les connectivites dans TAB CONN'; TWORK.'CONN'=PRECED . 'CONN' ; 'SINON'; 'SI' ('EGA' (TWORK.'NON_LOCAL') 'HELM' ); 'MESS' 'Pas besoin de la connectivite pour Helmholtz'; 'SINON'; 'MESS' 'Calcul des connectivites en mode normal.'; TWORK.'CONN'='CONN' TWORK.'NLOC_MODL' ('REDU' TWORK.'MA_TOT' TWORK.'NLOC_MODL') 'NORMAL' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI'; TWORK.'CHARGEMENT_I' = TWORK.'CHARGEMENT'; ************************************************************************ * Recapitulatif des options choisies ************************************************************************ 'SAUTER' 1 'LIGNE'; 'SI' TWORK.'FOR_MECA' ; 'SI' TWORK.'FOR_THER'; 'MESS' 'Couplage THERMIQUE-MECANIQUE'; 'SAUT' 1 'LIGNE'; 'FINSI'; 'MESS' 'Calcul MECANIQUE'; 'MESS' ' *** Hypothese calcul des deformations :' ' ' TWORK.'HYPOTHESE_DEFORMATIONS' ' ***'; 'SI' ('NEG' TWORK.'PREDICTEUR' 'INCONNU'); 'MESS' ' *** Predicteur :' ' ' TWORK.'PREDICTEUR' ' ***' ; 'FINSI'; 'SI' TWORK.'K_SIGMA'; 'MESS' ' *** K_SIGMA *** '; 'FINSI'; 'SI' TWORK.'GRANDS_DEPLACEMENTS'; 'SI' (TWORK.'LAG_TOT' 'EGA' 1) ; 'MESS' ' *** Calcul en lagrangien total *** '; 'FINSI'; 'SI' (TWORK.'LAG_TOT' 'EGA' 2) ; 'MESS' ' *** Calcul en lagrangien fin pas *** '; 'FINSI'; 'SI' (TWORK.'LAG_TOT' 'EGA' 3) ; 'MESS' ' *** Calcul en configuration mi-pas *** '; 'FINSI'; 'FINSI'; 'SI' TWORK.'STABILITE'; 'MESS' ' *** Controle de la stabilite *** '; 'FINSI'; 'SI' TWORK.'LINESEARCH'; 'MESS' ' *** Linesearch *** '; 'FINSI'; 'SI' (non TWORK.'INITIALISATION'); 'MESS' ' *** Initialisation a partir du pas precedent interdite *** '; 'FINSI'; 'SI' TWORK.'CONVERGENCE_MONOTONE' ; 'MESS' ' *** Convergence monotone imposee *** '; 'FINSI'; 'SI' TWORK.'RENORMALISATION' ; 'MESS' ' *** Renormalisation des iteres *** '; 'FINSI'; 'SI' TWORK.'POR1'; 'MESS' ' *** POREUX ***'; 'FINSI'; 'SI' TWORK.'DYNAMIQUE' ; 'MESS' ' *** DYNAMIQUE PAS A PAS ***'; 'FINSI' ; 'SI' TWORK.'FREQUENTIEL' ; 'MESS' ' *** FREQUENTIEL PAS A PAS ***' ; 'FINSI' ; 'SI' TWORK.'LIAISON_PERSISTANTE' ; 'MESS' ' *** LIAISON PERSISTANTE ***'; 'FINSI' ; 'SI' TWORK.'CONSOLIDATION' ; 'MESS' ' *** CONSOLIDATION ***'; 'FINSI' ; 'SI' TWORK.'PLASTIQUE' ; 'MESS' ' *** PLASTICITE ***'; 'FINSI'; 'SI' TWORK.'VISCOPLASTIQUE' ; 'MESS' ' *** VISCO - PLASTICITE ***'; 'FINSI' ; 'SI' TWORK.'NON_LINEAIRE'; 'SI' TWORK.'UTILISATEUR' ; 'MESS' ' *** MODELE DE COMPORTEMENT NON LINEAIRE EXTERNE ***'; 'SINON'; 'MESS' ' *** ELASTICITE NON_LINEAIRE ***'; 'FINSI'; 'FINSI' ; 'SI' TWORK.'VISCO_EXTERNE'; 'MESS' ' *** VISCO - PLASTICITE, MODELE EXTERNE ***'; 'FINSI' ; 'SI' TWORK.'CHAR_THE'; 'MESS' ' *** CHARGEMENT THERMIQUE ***'; 'FINSI'; 'SI' TWORK.'CHAR_DEFI'; 'MESS' ' *** CHARGEMENT PAR DES DEFORMATIONS ***'; 'FINSI'; 'SI' TWORK.'CHAR_PRES'; 'MESS' ' *** CHARGEMENT PAR UNE PRESSION SUIVEUSE ***'; 'FINSI'; 'SI' TWORK.'CHAR_PILO'; 'MESS' ' *** CHARGEMENT PAR PILOTAGE INDIRECT ***'; 'FINSI'; 'SI' TWORK.'PARA_EXTE'; 'MESS' ' *** LE MODELE DEPEND DE PARAMETRES EXTERNES ***'; 'FINSI'; 'SI' TWORK.'GRANDS_DEPLACEMENTS' ; 'MESS' ' *** GRANDS DEPLACEMENTS ***'; 'SI' ('NEG' TWORK.'HYPOTHESE_DEFORMATIONS' 'QUADRATIQUE'); 'MESS' ' ATTENTION : l''hypothese de deformations choisie est' ' ' PRECED.'HYPOTHESE_DEFORMATIONS'; 'MESS' ' on recommande plutot l''hypothese QUADRATIQUE'; 'FINSI'; 'FINSI'; 'SI' TWORK.'CONVERGENCE_FORCEE' ; 'MESS' ' *** CONVERGENCE FORCEE ***'; 'FINSI'; 'SI' TWORK.'ENDOMMAGEMENT' ; 'MESS' ' *** PLASTICITE + ENDOMMAGEMENT ***'; 'FINSI'; 'SI' TWORK.'VISCODOMMAGE' ; 'MESS' ' *** VISCO-PLASTICITE + ENDOMMAGEMENT ***'; 'FINSI'; 'SI' TWORK.'CERAMIQUE' ; 'MESS' ' ***CERAMIQUE FLUAGE + ENDOMMAGEMENT ***'; 'MESS' ' *** +OTTOSEN ***'; 'FINSI'; * 'SI' IUO2; * 'MESS' ' *** VISCO-PLASTICITE + OTTOSEN ***'; * 'FINSI'; 'SI' TWORK.'NLOC' ; 'MESS' ' *** EN NON-LOCAL *** ' ; 'FINSI'; 'SI' TWORK.'CONTACT'; 'MESS' ' *** CONTACT ***'; 'FINSI'; 'SI' (TWORK.'SOUS_INCREMENT' > 1); 'MESS' ' *** SOUS_INCREMENT :'TWORK.'SOUS_INCREMENT'; 'FINSI'; 'SI' TWORK.'CAFROTTE'; 'MESS' ' *** FROTTEMENT ***'; 'FINSI'; 'SI' TWORK.'K_TANGENT' ; 'SI' TWORK.'K_TANGENT_PERT' ; 'MESS' ' *** MATRICE TANGENTE PAR PERTURBATION ***' ; 'SINON' ; 'MESS' ' *** MATRICE TANGENTE (COHERENTE) ***' ; 'FINSI' ; 'MESS' ' MATRICE EVALUEE TOUTES LES' TWORK.'NITER_KTANGENT' 'ITERATIONS' ; 'SI' TWORK.'K_TANGENT_SYME' ; 'MESS' ' PARTIE SYMETRIQUE DE LA MATRICE TANGENTE UTILISEE'; 'FINSI' ; 'FINSI'; 'SI' TWORK.'SUBSTEPPING'; 'MESS' ' *** SUBSTEPPING *** NUM_MAXI_SUBSTEPS ='TWORK.'NMAXSUBSTEPS' ; 'MESS' ' *** SUBSTEPPING *** NUM_ITER_INTERNAS ='TWORK.'NITERINTER_MAX' ; 'FINSI'; 'SI' TWORK.'UPDATE_LAGRANGIAN'; 'MESS' ' *** UPDATE LAGRANGIAN ***' ; 'FINSI'; 'SI' TWORK.'FEFP_FORMULATION'; 'MESS' ' *** FORMULATION FeFp ***' ; 'FINSI'; 'SI' TWORK.'BETON_THM'; 'MESS' ' *** BETON AU JEUNE AGE : HYDRATATION PRISE EN COMPTE ***'; 'FINSI'; 'SAUT' 1 'LIGNE'; 'FINSI'; * 'SI' TWORK.'FOR_THER'; 'MESS' 'Calcul THERMIQUE '; 'FINSI'; * 'SI' TWORK.'NVSTNL' ; 'MESS' 'Calcul NAVIER-STOKES NLIN' ; 'FINSI' ; 'SAUTER' 1 'LIGNE'; 'SI' ('EGA' TWORK.'PROCESSEURS' 'MONO_PROCESSEUR') ; 'MESS' ' *** Pas de parallelisation ***' ; 'SINON' ; 'SI' ('EGA' TWORK.'PROCESSEURS' 'COMPORTEMENT') ; 'MESS' ' *** Parallelisation du comportement sur ' nbpart ' assistants ***'; 'SINON' ; 'SI' ('EGA' TWORK.'PROCESSEURS' 'AUTOMATIQUE') ; 'MESS' ' *** Parallelisation automatique sur ' nbpart ' assistants ***' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SAUTER' 1 'LIGNE'; 'FINPROC' ;