* G_THETA PROCEDUR JB251061 21/12/13 21:15:10 11219 * ============================================================================= * PROCEDURE DE MISE EN OEUVRE DE LA METHODE G-THETA * ------------------------------------------------- * * DESCRIPTION : CETTE PROCEDURE PERMET DE CALCULER DES INTEGRALES DE MECANIQUE * DE LA RUPTURE. CES INTEGRALES SONT : * 1) LE TAUX DE RESTITUTION D'ENERGIE G (OU INTEGRALE DE * CONTOUR J) EN ELASTO-PLASTICITE OU ELASTO-DYNAMIQUE; * 2) dJ/dA EN ELASTOPLASTICITE; * 3) C* POUR LE FLUAGE SECONDAIRE STATIONNAIRE; * 4) C*H POUR LE FLUAGE PRIMAIRE SOUS CHARGEMENT RADIAL. * * IL EST EGALEMENT POSSIBLE DE CALCULER LES FACTEURS D'INTENSITE * DES CONTRAINTES (KI, KII, KIII) VIA L'OPTION 'DECOUPLAGE'. * ============================================================================= * INTRODUCTION DE VARIABLES UTILES * -------------------------------- * CREATION DE LA TABLE DE BOOLEENS * ******************************** SAUT 'LIGNE' ; '--------------------' ; FINSI ; SAUT 'LIGNE' ; * CONFIGURATION INITIALE * ********************** * ============================================================================= * DETERMINATION DU CAS DEMANDE ET VERIFICATION DES DONNEES OBLIGATOIRES * --------------------------------------------------------------------- * APPEL A G_CAS * ************* MESS 'ERREUR : IL Y A EU UN PROBLEME INATTENDU PENDANT LA LECTURE DES' ; MESS ' DONNEES' ; FINSI ; * LECTURE DES DONNEES FOURNIES * **************************** GDIME = OBJUTI.'DIMENSION' ; MOD_MEC = OBJUTI.'MOD_MEC' ; MAT_MEC = OBJUTI.'MAT_MEC' ; WTAB = OBJUTI.'WTAB' ; FINSI ; MAILLAGE = OBJUTI.'MAILLAGE' ; M_FRONT = OBJUTI.'FRONT' ; * QUELQUES DONNEES NON ISSUES DE G_CAS * ************************************ * TYPE D'ELEMENTS DU MAILLAGE * VERIFICATIONS DANS LE CAS DE PERSO1 SI BOOL.'PERSO1' ; MESS 'utilisation de PERSO1 en cours de dvlpt' ; FINSI ; ESTIM = SUPTAB.'SOLUTION_PASAPAS'.'ESTIMATION' ; SINON ; FINSI ; MESS 'Attention! utilisation de PERSO1 sans MAILLAGE_REDUIT' ; FINSI ; FINSI ; * MOTS DE COMPOSANTES UTILES * ************************** * LISTMOT SCAL : * LISTMOTS POUR LE DEPLACEMENT ET POUR LA FORCE : * ON EXTRAIT LES GDIME PREMIERS MOTS CAR ON NE VEUT PAS DES ROTATIONS * DANS LE CAS DES COQUES SI (EGA GDIME 3) ; FINSI ; * CREATION DE CHAR1 SI PASAPAS * **************************** CHAR1 = SUPTAB.'SOLUTION_PASAPAS'.'CHARGEMENT' ; FINSI ; * DONNEES EN CAS DE CONTACT * ************************* OBJCON = SUPTAB.'MODELE_FISSURE' ; FINSI ; * ============================================================================= * EXTRACTION DU MAILLAGE, DU CHAMP THETA ET DE LA DIRECTION DE PROPAGATION * ------------------------------------------------------------------------ * MODELE MULTICOUCHES DANS LE CAS DE COQUE * **************************************** SI BOOL.'COQ' ; ELMULT = SUPTAB.'ELEMENT_MULTICOUCHE' ; MESS 'ERREUR : L ELEMENT EN MULTICOUCHE DOIT' ; FINSI ; MESS 'ERREUR : ON VEUT UN SEUL ELEMENT EN MULTICOUCHE' ; FINSI ; SINON ; MESS 'ERREUR : IL FAUT DESIGNER UN ELEMENT EN MULTICOUCHE' ; FINSI ; MESS ' INTERMEDIAIRES POUR L ELEMENT DESIGNE EN' ; MESS ' MULTICOUCHE PROCHE DE LA FISSURE.' ; FINSI ; I1 = (2 * &NBJ5) - 1 ; MODCOU.&NBJ5 = M_ELMU.I1 ; EPAITO = EPAITO + EP1 ; FIN NBJ5 ; NSUPE = 0 ; NMOYE = 0 ; NINFE = 0 ; SI (EGA EX1 (EPAITO/2.) 1.E-4) ; NSUPE = LM1 ; FINSI ; SI (EGA EX1 0. 1.E-10) ; NMOYE = LM1 ; FINSI ; SI (EGA EX1 (EPAITO/(-2.)) 1.E-4) ; NINFE = LM1 ; FINSI ; FIN NBJ6 ; SI (EGA NSUPE 0) ; MESS 'ERREUR : IL FAUT UNE COUCHE EN PEAU SUPERIEURE' ; MESS ' D EPAISSEUR INFERIEURE A' ; FINSI ; SI (EGA NMOYE 0) ; MESS 'ERREUR : IL FAUT UNE COUCHE AU PLAN MEDIAN' ; MESS ' AYANT UN EXCENTREMENT NUL' ; FINSI ; SI (EGA NINFE 0) ; MESS 'ERREUR : IL FAUT UNE COUCHE EN PEAU INFERIEURE' ; MESS ' D EPAISSEUR INFERIEURE A' ; FINSI ; SUPTAB.'EPAISSEUR' = EPAITO ; M_SUPE = MODCOU.NSUPE ; M_MOYE = MODCOU.NMOYE ; M_INFE = MODCOU.NINFE ; FINSI ; * MAILLAGE UTILISE DANS LA RESOLUTION PAR E.F. * ******************************************** SI BOOL.'COQ' ; M1 = M_DETA.(2*&NBJ8) ; ITER NBJ8 ; FINSI ; TMULT.M1 = VRAI ; FIN NBJ9 ; FINSI ; FIN NBJ8 ; FINSI ; SUPTAB.'MAILLAGE' = MAILLAGE ; * DETERMINATION DES CHAMPS THETA ET PI ET DE LA ZONE DE TRAVAIL ELTETA * ******************************************************************** OTER SUPTAB 'TAB_THETA' ; FINSI ; OTER SUPTAB 'TAB_PI' ; FINSI ; * CHAMP_THETA ET COUCHE SONT TOUS DEUX FOURNIS, ON ECRASE CHAMP_THETA OTER SUPTAB 'CHAMP_THETA' ; FINSI ; SINON ; MESS 'CHAMP_THETA FOURNI PAR L UTILISATEUR' ; FINSI ; * ON APPELLE CH_TETX POUR CALCULER CHAMP_THETA CH_THETX SUPTAB OBJUTI BOOL ; SINON ; * ON APPELLE CH_TETA POUR CALCULER CHAMP_THETA CH_THETA SUPTAB OBJUTI BOOL ; FINSI ; * DETERMINATION DE ELTETA * ELTETA1 = MAILLAGE OU TETA N EST PAS NUL + 1 COUCHE CHTHETA = SUPTAB.'CHAMP_THETA' ; CHTHETA = CHTHETA.'GLOBAL' ; FINSI ; * UU = EXTR CHTHETA 'MAILLAGE' ; FINSI ; * ELTETA = MAILLAGE FOURNI PAR L UTILISATEUR ELTETA = SUPTAB.'MAILLAGE_REDUIT' ; * VERIFICATION DE LA COMPATIBILITE AVEC CHTHETA MESS 'ATTENTION : LE MAILLAGE_REDUIT DONNE EST INCOMPATIBLE AVEC LE' ; MESS ' CHAMP THETA, IL SERA DONC IGNORE.' ; ELTETA = ELTETA1 ; FINSI ; SINON ; ELTETA = ELTETA1 ; FINSI ; FINSI ; * ON STOCKE LES DIRECTIONS DANS UTILTET1 POUR PROPAGATION EN XFEM * DIRECTION DE PROPAGATION : DIR1 * DIRECTION TANGENTE AU FRONT : DIR2 * DIRECTION DE CISAILLEMENT SI SEPARATION DE MODES : DIR3 REPE I 3 ; SUPTAB.'UTILTET1'.MDIR = OBJUTI.MDIR ; FINSI ; FIN I ; * ON COMPLETE ELTETA * ****************** * AJOUT EVENTUEL DE ELPI A ELTETA ELPI = SUPTAB.'FRONT_FISSURE_2' ; REPE MAIL2 ((SUPTAB.'COUCHE') + 1) ; FIN MAIL2 ; ELTETA = ELTETA ET ELPI ; FINSI ; * AJOUT DU NOEUD SUPPORT EN DEF.PL.GENERALISEES SI (EGA GMODE 'PLANGENE') ; FINSI ; * L'ELEMENT SUPPORTANT LE MODELE MULTICOUCHE * DOIT ETRE DANS LA ZONE THETA SI BOOL.'COQ' ; SI (NEG N1 N2) ; MESS ' L INTEGRALE SE TROUVE EN DEHORS DE LA ZONE' ; MESS ' DEFINIE PAR LE NOMBRE DE COUCHES DONNE.' ; FINSI ; FINSI ; * ELTETA SERA PRATIQUE POUR LES TESTS DE REPRISE OBJUTI.'ELTETA' = ELTETA ; SUPTAB.'ELTET1' = ELTETA ; * TESTS DE COMPATIBILITE * ********************** * BOOL.'REPRI' = VRAI SI REPRISE DE CALCUL, FAUX SINON BOOL.'REPRI' = FAUX ; BOOL.'REPRI' = (N1 - 1) > SUPTAB.'IABC' ; MESS 'on tente une reprise...' ; FINSI ; FINSI ; * TESTS DE COMPATIBILITE SI REPRISE DE CALCUL SI BOOL.'REPRI' ; * ON VERIFIE QUE L OBJECTIF RESTE LE MEME SI (NEG SUPTAB.'OBJ1' SUPTAB.'OBJECTIF') ; MESS 'ERREUR : REPRISE IMPOSSIBLE CAR L OBJECTIF DU' ; MESS ' CALCUL ACTUEL N EST PAS LE MEME QUE' ; MESS ' CELUI DU CALCUL PRECEDENT' ; FINSI ; * ON DOIT AVOIR LE MEME NOMBRE DE COUCHE (ON SUPPOSE LA FISSURE FIXE) SI (NEG SUPTAB.'COU1' SUPTAB.'COUCHE') ; MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE NOMBRE DE' ; MESS ' COUCHE ACTUEL N EST PAS LE MEME QUE' ; MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT' ; FINSI ; FINSI ; * RESTE A VERIFIER LA COMPATIBILITE DES SUPPORT DE CHAMP TETA VIA ELTETA * ELTETA DOIT ETRE INCLUS DANS ELTET1 ELTET1 = SUPTAB.'ELTET1' ; MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE SUPPORT DU ' ; MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT' ; FINSI ; MESS 'REPRISE DU CALCUL AUTORISE !' ; FINSI ; * TESTS DE COMPATIBILITE SI UTILISATION DE PERSO1 ELTET1 = SUPTAB.'ELTET1' ; MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE SUPPORT DU ' ; MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT' ; FINSI ; MESS 'POURSUITE DU CALCUL VIA PERSO1 AUTORISE !' ; FINSI ; FINSI ; * ============================================================================= * MODELES ET MATERIAUX DANS LA ZONE DE TRAVAIL * -------------------------------------------- * VERIFICATION DES DONNEES D ENTREE POUR MODELES_COMPOSITES REPE BIN4 N1 ; SI (NEG T1 'MMODEL ') ; MESS ' TABLE MODELES_COMPOSITES EST INCORRECTE' ; FINSI ; FIN BIN4 ; MESS 'ERREUR : TOUS LES MODELES DE MATERIAUX' ; MESS ' COMPOSITES NE SONT PAS DONNES' ; FINSI ; FINSI ; * CREATION DE MOD_MEC ET TABMOD * CAS DE MODELES COMPOSITES (AVEC DISCONTINUITE) : ON A DU TRAVAIL M1 = SUPTAB.'MODELES_COMPOSITES'.&BIN1 ; * SI ON A DES NOEUDS EN COMMUN, ... SI (NEG (N1 + N2) N3) ; * ... ON LES RECUPERE * SI TOUS LES NOEUDS EN COMMUN SONT SUR LE CONTOUR * => PAS D ELEMENTS A RECUPERER => ON PASSE AU MODELE SUIVANT SI (EGA N1 N2) ; ITER BIN1 ; FINSI ; * SINON, ON RECUPERE LES ELEMENTS CONCERNES ET LE MODELE REDUIT MOD_MEC_R = MOD_MEC_R ET TABMOD.N1 ; FINSI ; FIN BIN1 ; SINON ; * CAS DE MODELES SANS DISCONTINUITE : ON A MOINS DE TRAVAIL TABMOD.1 = MOD_MEC_R ; FINSI ; * CHAMP EPAISSEUR DANS LA ZONE DE TRAVAIL SI BOOL.'COQ' ; FINSI ; * CALCUL DE C* PAR DEUX TYPES DE MODELE FLUAGE * ******************************************** *** ITYPEF = 1 MODELE FLUAGE POUR LEQUEL ON A UNE EXPRESSION *** EXPLICITE DE L'INTEGRATION DE LA VITESSE DE *** DEFORMATION DE FLUAGE SUR LE TEMPS *** ITYPEF = 2 MODELE FLUAGE POUR LEQUEL ON N'OBTIENT PAS *** FACILEMENT CETTE EXPRESSION EXPLICITE *** ITYPEF = 99 SI EN ELASTO OU THERMO-ELASTO-PLASTICITE * DETERMINATION DE ITYPEF ITYPEF = 99 ; SI (BOOL.'C*' OU BOOL.'C*H') ; ITYPEF = 1 ; FINSI ; ITYPEF = 2 ; FINSI ; FINSI ; * INTERFACES DANS LA ZONE DE TRAVAIL * ********************************** * CREATION DES INTERFACES INTER-MODELE * ON BOUCLE SUR LES MODELES QUI APPARTIENNENT A ELTETA IIN3 = &BIN2 ; REPE BIN3 NIN3 ; IIN3 = IIN3 + 1 ; * ON ITERE SI (M1 INCLUT DANS M2) OU (M2 INCLUT DANS M1) ITER BIN3 ; FINSI ; * ON ITERE SI M1 ET M2 N ONT PAS DE NOEUDS COMMUNS ITER BIN3 ; FINSI ; * ON RECUPERE L INTERFACE M1-M2 * LO1=VRAI <=> IL EXISTE DES NOEUDS COMMUNS A M1 ET M2 * LO2=VRAI <=> IL N'Y A PAS 1 NOEUD COMMUN A M1 ET M2 * LO4 = M1 ET M2 FORMENT BIEN UNE INTERFACE ET NE SE CHEVAUCHENT PAS SI (LO1 ET LO2 ET LO4) ; * ON AJOUTE L INTERFACE CAR ON A >1 NOEUDS EN COMMUN A M1 ET M2 LINTER.LE1 = L1 ; * BOOL.'PARAL'=VRAI <=> TOUTES LES INTERFACES SONT // A LA FISSURE * SI BOOL.'PARAL'=FAUX IL FAUT AJOUTER DES TERMES D INTERFACES AU C * PETITE MODIF CAR DIR1 DOIT ETRE UN CHPOINT DESORMAIS * -> A VERIFIER ? SI (GDIME EGA 2) ; PDIR1 = XDIR1 YDIR1 ; SINON ; PDIR1 = XDIR1 YDIR1 ZDIR1 ; FINSI ; LO1 = ((EGA P1 PDIR1 1.E-6) OU (EGA P1 (-1.*PDIR1) 1.E-6)) ; BOOL.'PARAL' = BOOL.'PARAL' ET LO1 ; FINSI ; FIN BIN3 ; FIN BIN2 ; FINSI ; * DANS LE CAS DECOUPLAGE SEULEMENT : * TEST SI FRONT_FISSURE EST DANS UNE INTERFACE LE1 = IND1.&BIN4 ; SI (EGA N1 N2) ; QUIT BIN4 ; SINON ; ITER BIN4 ; FINSI ; FIN BIN4 ; FINSI ; * SI OUI (BOOL.'DANS'),ON DETERMINE LES MODELES SUP ET INF MODINF = 0 ; MODSUP = 0 ; * ON REDEFINIT : BOOL.'PARAL'=VRAI <=> L'INTERFACE A LAQUELLE APPARTIENT LA FISSURE E BOOL.'PARAL' = FAUX ; LSUP = SUPTAB.'LEVRE_SUPERIEURE' ; LINF = SUPTAB.'LEVRE_INFERIEURE' ; SI ( ((N1 + NLSUP - N1SUP) > 1) ET ((N2 + NLINF - N2INF) > 1)) ; * LSUP ET MOD1 ONT PLUS D'1 POINT COMMUN ET IDEM POUR LINF ET MOD2 SINON ; SI ( ((N1 + NLINF - N1INF) > 1) ET ((N2 + NLSUP - N2SUP) > 1)) ; SINON ; MESS 'ERREUR : INCOMPATIBILITE ENTRE LE MODELES_COMPOSITES' ; FINSI ; FINSI ; * LA FISSURE EST BIEN DANS LE PROLONGEMENT DE L' INTERFACE BOOL.'PARAL' = VRAI ; FINSI ; * REM: il faudrait egalement verifier que MODSUP et MODINF suffisent a decrire E * MODPLA : table indicee par entier pour stocker les modeles * mecaniques de chaque objet MMODEL. ************************************************** *** Elle est vide si le modele est elastique ou elastoplastique *** avec une courbe de traction independante de la temperature. *** Dans le cas contraire la table vaut : *** 1 si le modele est plastique isotrope. Alors une *** nouvelle courbe de traction EPSE-SIGMA est faite. *** 2 si le modele est plastique cinematique *** 3 si le modele est plastique parfaite BOOL.'GRADYOUN' = FAUX ; BOOL.'GRADNU' = FAUX ; BOOL.'GRADALPH' = FAUX ; MODPLA = TABLE ; TABTRA = TABLE ; REPE BCMOD1 NBOBJ ; MODEI = TABMOD.&BCMOD1 ; * ON DETERMINE SI ON A DES GRADIENTS DE PROPRIETES (THERMO-)ELASTIQUES SI BOOL.'THER' ; MPROP = MPROP ET 'ALPH' ; FINSI ; SI (EGA TYP1 'EVOLUTIO') ; BOOL.MGRAD = VRAI ; SINON ; SI (DPRO1 > CRI1) ; BOOL.MGRAD = VRAI ; FINSI ; FINSI ; FIN IPROP ; * COURBE DE TRACTION SI (EGA TYPTR 'NUAGE ') ; MODPLA.&BCMOD1 = 1 ; SI (EGA &BNUA1 1) ; SINON ; FINSI ; FIN BSIG1 ; SI (&BNUA1 EGA 1) ; SINON ; FINSI ; FIN BNUA1 ; TABTRA.&BCMOD1 = TRA2 ; * ON ENLEVE LA COURBE DE TRACTION SI ELLE DEPEND DE * LA TEMPERATURE (OPERATION TROP COUTEUSE POUR VARI) SI (NEG C1 'ECRO') ; SI (EGA &BCOM1 1) ; SINON ; FINSI ; FINSI ; FIN BCOM1 ; FINSI ; * SIGY (et pas TRAC) SINON ; SI ((EGA TYPH 'EVOLUTIO') OU (EGA TYPSI 'EVOLUTIO')) ; MODPLA.&BCMOD1 = 2 ; FINSI ; SINON ; SI (EGA TYPSI 'EVOLUTIO') ; MODPLA.&BCMOD1 = 3 ; FINSI ; FINSI ; FINSI ; FINSI ; FIN BCMOD1 ; * METHODE DE CALCUL DES CHAMPS AUXILIAIRES SI DECOUPLAGE (VOIR G_AUX) * ******************************************************************* SI BOOL.'DECOUPLAGE' ; FINSI ; SAUT 'LIGNE' ; * PAR DEFAUT ON UTILISE LA METHODE U-ANALYTIQUE DANS LE CAS BI-MATERIAU 2D SUPTAB.'METH_AUX' = 'UANA' ; SINON ; * PAR DEFAUT ON UTILISE LA METHODE G-ANALYTIQUE DANS LE CAS MONO-MATERIAU SUPTAB.'METH_AUX' = 'GANA' ; FINSI ; SINON ; * ON UTILISE TOUJOURS LA METHODE U-ANALYTIQUE POUR UN BI-MATERIAU SUPTAB.'METH_AUX' = 'UANA' ; MESS 'ATTENTION : SEULE LA METHODE UANA EST UTILISABLE POUR' ; FINSI ; SAUT 'LIGNE' ; FINSI ; * VERIFICATION QUE LA METHODE EST UTILISABLE METH_AUX = SUPTAB.'METH_AUX' ; SI ((NEG METH_AUX 'GANA') ET (NEG METH_AUX 'UANA') ET (NEG METH_AUX 'MECA')) ; MESS ' LES CHAMPS AUXILIAIRES' ; FINSI ; SI (EGA METH_AUX 'GANA') ; * INSTRUCTION BIDON CAR SINON LA DETECTION D'ERREUR NE SE PASSE PAS BIEN... VAR = VRAI ; MESS 'ERREUR : LES LEVRES NE SONT PAS ORIENTEES CORRECTEMENT' ; FINSI ; FINSI ; FINSI ; MESS ' CAS 3D AVEC DES ELEMENTS STANDARDS' ; FINSI ; SI ((EGA METH_AUX 'UANA') ET (EGA GDIME 3)) ; FINSI ; FINSI ; * CAS IMPOSSIBLE A TRAITER * ************************ SI (NON BOOL.'PARAL') ; MESS 'ERREUR : ON NE PEUT PAS ENCORE DECOUPLER LES MODES' ; MESS ' EN PRESENCE D''UNE DISCONTINUITE MATERIELLE' ; FINSI ; SI (EGA GDIME 3) ; MESS 'ERREUR : ON NE PEUT PAS ENCORE DECOUPLER LES MODES' ; MESS ' EN PRESENCE D''UNE DISCONTINUITE MATERIELLE' ; FINSI ; FINSI ; FINSI ; * ============================================================================= * PREREQUIS POUR EFFECTUER LES CALCULS * ------------------------------------ * TITRES A AFFICHER SELON LE PROBLEME TRAITER * ******************************************* SINON ; FINSI ; SINON ; FINSI ; SI BOOL.'J' ; SI BOOL.'THER' ; SINON ; FINSI ; FINSI ; SI BOOL.'C*' ; SI BOOL.'THER' ; SINON ; FINSI ; FINSI ; SI BOOL.'C*H' ; SI BOOL.'THER' ; SINON ; FINSI ; FINSI ; SI BOOL.'DJ/DA' ; SI BOOL.'THER' ; SINON ; FINSI ; SINON ; SI BOOL.'THER' ; SINON ; FINSI ; FINSI ; FINSI ; SI BOOL.'J_DYNA' ; SI BOOL.'THER' ; SINON ; FINSI ; FINSI ; SI BOOL.'DECOUPLAGE' ; SI BOOL.'THER' ; SINON ; FINSI ; FINSI ; SI (SUPTAB.'COUCHE' > 9) ; FINSI ; SI (SUPTAB.'COUCHE' > 99) ; FINSI ; SINON ; FINSI ; * AFFICHAGE DU TITRE * ****************** SI (EGA GDIME 2) ; SI BOOL.'DECOUPLAGE' ; MESS ' ' TX1 ; SINON ; MESS ' ' TX1 ; FINSI ; FINSI ; SI ((EGA GDIME 3) ET (NON BOOL.'COQ')) ; SI BOOL.'DECOUPLAGE' ; MESS ' ' TX1 ; SINON ; MESS ' ' TX1 ; FINSI ; FINSI ; SI BOOL.'COQ' ; MESS ' ' TX1 ; MESS ; FINSI ; SINON ; SI (EGA GDIME 2) ; SI BOOL.'DECOUPLAGE' ; SINON ; MESS ' ' TXMECANI TXTERMI TXPRESS MOTCO ; FINSI ; FINSI ; SI ((EGA GDIME 3) ET (NON BOOL.'COQ')) ; SI BOOL.'DECOUPLAGE' ; SINON ; MESS ' Noeud ' TXMECANI TXTERMI TXPRESS MOTCO ; FINSI ; FINSI ; SI BOOL.'COQ' ; MESS ' Plan ' TXMECANI TXTERMI TXPRESS MOTCO ; FINSI ; FINSI ; * NOMBRE DE BOUCLE POUR LE CALCUL DES INTEGRALES * ********************************************** NBG = -1 ; SI BOOL.'REPRI' ; NBG = SUPTAB.'IABC' ; NBDEP = NBDEP - 1 - NBG ; FINSI ; SI BOOL.'PERSO1' ; NBG = (WTAB . 'PAS') - 1 ; NBDEP = 1 ; FINSI ; SINON ; NBG = -1 ; NBDEP = 1 ; FINSI ; * SOLUTION DU PAS PRECEDENT SI REPRISE DE CALCUL OU SI PERSO1 * *********************************************************** SI (BOOL.'REPRI' OU (BOOL.'PERSO1' ET (NBG >EG 0))) ; VAR1 = (SUPTAB.'SOLUTION_PASAPAS'.'VARIABLES_INTERNES'.NBG) REDU MOD_MEC_R ; SINON ; FINSI ; MAT_INST = SUPTAB.'MAT_INST' ; SI (EGA ITYPEF 2) ; VDI1 = SUPTAB.'VDI1' ; FINSI ; WVMIS = SUPTAB.'ENV1' ; FINSI ; MESS 'RECUP DU PAS PRECEDENT OK' ; FINSI ; FINSI ; * CALCUL DE LA DEFORMATION THERMIQUE A TREF SI (BOOL.'THER' ET (NON BOOL.'COQ')) ; SINON ; FINSI ; OBJUTI.'EPTREF' = EPTREF ; FINSI ; * REMPLISSAGE DE OBJUTI * ********************* OBJUTI.'MOD_MEC_R' = MOD_MEC_R ; OBJUTI.'MOTTI' = MOTTI ; OBJUTI.'MODCOU' = MODCOU ; OBJUTI.'TABMOD' = TABMOD ; OBJUTI.'LINTER' = LINTER ; OBJUTI.'MODPLA' = MODPLA ; OBJUTI.'FOR000' = FOR000 ; OBJUTI.'DEP000' = DEP000 ; OBJUTI.'ITYPEF' = ITYPEF ; OBJUTI.'NBG' = NBG ; * DECOUPLAGE OBJUTI.'MODSUP' = MODSUP ; OBJUTI.'MODINF' = MODINF ; * AJOUT BP BT POUR LE CONTACT FROTTANT OBJUTI.'OBJCON' = OBJCON ; OBJUTI.'MAILCON' = MAILCON ; FINSI ; * FIN AJOUT BP BT SI BOOL.'PERSO1' ; OBJUTI.'ESTIMATION' = ESTIM ; FINSI ; *************************************************** ** DECLARATION DES TABLES STOCKANT LES RESULTATS ** *************************************************** SI BOOL.'PERSO1' ; FLCREA = NBG EGA -1 ; SINON ; FLCREA = NON BOOL.'REPRI' ; FINSI ; SI FLCREA ; FINSI ; SI (EGA GDIME 3) ; FINSI ; SI (EGA ITYPEF 99) ; SUPTAB.'CRIT_DECHA_GLOBAL1' = TABLE ; SUPTAB.'CRIT_DECHA_LOCAL1' = TABLE ; SUPTAB.'CRIT_DECHA_GLOBAL2' = TABLE ; SUPTAB.'CRIT_DECHA_GLOBAL2_L' = TABLE ; SUPTAB.'CRIT_DECHA_LOCAL2' = TABLE ; FINSI ; FINSI ; FINSI ; SI BOOL.'DECOUPLAGE' ; REPE IRUPT GDIME ; FINSI ; FINSI ; FIN IRUPT ; FINSI ; FINSI ; * DECLARATION DES TABLES POUR CHPO_RESULTATS ET CHAM_RESULTATS SINON ; FINSI ; FINSI ; SINON ; FINSI ; FINSI ; * ============================================================================= * APPEL A G_CALCUL POUR EFFECTUER LES CALCULS ET ENREGISTRER LES RESULTATS * ------------------------------------------------------------------------ G_CALCUL SUPTAB OBJUTI BOOL ; FINPROC ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales