$$$$ T_PITETA * T_PITETA PROCEDUR JC220346 12/09/12 21:15:08 7501 'DEBPROC' T_PITETA TABMOD*'TABLE' MATERI*'MCHAML' SUPTAB*'TABLE'; * *|=====================================================================| *| | *| OBJET : | *| ======= | *| | *| 1) calculer la derivee seconde de l'energie potentielle vis a vis | *| de la longueur d'une (ou des) fissure(s) intéragissantes. dG/da | *| (G = taux de restitution d'énergie, a = longueur le la fissure) | *| pour etudier éventuellement la stabilite de propagation d'une | *| (ou des) fissure(s). | *| 2) calculer une intégrale permettant de decouper les modes mixtes. | *| Dans ce cas, la procedure, appelée par G_THETA, ne fonctionne | *| qu'en elasticite pour problèmes de configuration en 2D, 3D ou | *| axisymetrique modèlisés par éléments dits massifs. Seuls les | *| materiaux homogenes et isotropes sont acceptables. L'application | *| du chargement peut etre de type mecaniques, thermiques, forces | *| volumiques, ou/et pressions sur le fond de la fissure. | *| | *| | *| ENTREE : | *| ======== | *| | *| Arquments obliquatoires : | *| ------------------------- | *| | *| OBJMOD objet du type TABLE stockant tous les objets MODELS | *| sur une petite zone de maillage entourant le plus grand des | *| contours qu'on a defini pour calculer dG/da. L'indice | *| de cette table est 1, 2, 3,...,n (n : nombre de modeles | *| dans la petite zone de maillage). Si l'on n'a pas prevu des | *| modeles dans cette petite zone, OBJMOD ici doit contenir | *| les objets MODELS globales du problems utilises dans la | *| resolution par elements finis. Dans ce cas le support | *| maillage de l'ensemble de modeles est la structure totale | *| etudiee. | *| MATERI Objet MCHAML de sous-type CARACTERISTIQUES donnant les | *| propriétés matérielles (module Young, coefficient de | *| Poisson...) + les proprietes geometriques dans le cas | *| des elements en coque mince (epaisseur, excentrement...). | *| Les composantes de MATERI peuvent etre des objets de type | *| FLOTTANT, MCHAML, EVOLUTIO, NUAGE selon le probleme traité. | *| Il convient de donner ici le materiau total du probleme | *| englobant toute la structure. | *| SUPTAB Objet de type TABLE. | *| En entrée, SUPTAB sert à définir les options et les | *| paramètres du calcul. Ses indices sont des objets de type | *| MOTS (à écrire en toutes lettres) dont voici la liste: | *| | *| SUPTAB.CHTHETA = CHPOINT (TABLE en 3D) de deplacement cree | *| par la procedure CH_THETA. | *| SUPTAB.DEPLACEMENT = TABLE si le calcul est effectue pas a pas, | *| CHPOINT si en un seul pas (probleme lineaire). | *| Dans le premier cas SUPTAB.DEPLACEMENT | *| contient touts les deplacements en indice | *| de la definition des valeurs du parametre | *| d'evolution (ex : table RESUDEPL de NONLIN). | *| SUPTAB.CONTRAINTE = TABLE si le calcul est effectue pas a pas, | *| MCHAML si en un seul pas (probleme lineaire). | *| Dans le premier cas SUPTAB.CONTRAINTE contient | *| toutes les contraintes en meme indice du | *| parametre d'evolution que la table | *| SUPTAB.DEPLACEMDNT (ex : table RESUCONT de | *| NONLIN). | *| | *| | *| Arquments facultatifs : | *| ----------------------- | *| | *| 1 : Probleme non-lineaire (elasto ou visco-plasticite) | *| | *| SUPTAB.VARINTERNE = TABLE. Pour les calculs non-lineaires effectues | *| pas a pas, elle donne les variables internes | *| en meme indice d'evolution que les tables | *| SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE | *| (ex : table RESUVARI de NONLIN). Cette table | *| est fournie dans le cas ou les deformations | *| inelastiques ne sont pas nulles, sinon | *| le probleme est considere comme lineaire. | *| | *| 2 : En thermo-mecanique | *| | *| SUPTAB.TEMPERATURE = TABLE pour les calculs effectues pas a pas, | *| CHPOINT si en un seul pas (probleme lineaire). | *| Dans le premier cas SUPTAB.TEMPERATURE | *| contient toutes les temperatures absolutes | *| en indice d'evolution du parametre de temps, | *| qui doit etre plus large ou egale a celle des | *| tables SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE | *| (ex : table CHPOTHETA utilisee dans NONLIN). | *| SUPTAB.TREFERENCE = CHPOINT de temperature de reference (ex : | *| chpoint TREFERENCE utilisee dans NONLIN). | *| | *| 3 : En presence de pression ou/et force volumique | *| agissant dans un voisinage du fond de la fissure | *| | *| SUPTAB.PRESSION = Objet de type CHPOINT ou CHARGEMENT, requis dans | *| dans le cas ou il existe une force volumique | *| ou/et une pression s'exercant dans un voisinage | *| du fond de la fissure. Si cette force varie avec | *| le temps on donne un objet de type CHARGEMENT. | *| SI cette force reste constante, on donne un | *| un objet de type CHPOINT | *| | *| 4 : En cas de calcul de la derivee seconde de l'energie permet- | *| tant d'etudier la stabilite de propagation des fissures | *| | *| SUPTAB.CHPI = CHPOINT (TABLE en 3D) de deplacement cree | *| par la procedure CH_THETA. | *| SUPTAB.RITOTA = RIGIDITE. C'est la rigidité complète de la | *| structure, y compris les conditions aux limites | *| de type DEPLACEMENT ou ROTATION. | *| | *| 5 : En cas de calcul de la derivee seconde de l'energie | *| avec une autre solution auxilaire (intégrale permettant, | *| par exemple, de decouper les modes) | *| | *| SUPTAB.'DEPL_AUXI' = Solution auxilaire de deplacement (CHPOINT) | *| SUPTAB.'CONT_AUXI' = Solution auxilaire de contrainte (MCHAML) | *| SUPTAB.'PRES_AUXI' = Pression auxilaire si elle applique sur le | *| voisinage du fond de la fissure (CHPOINT) | *| | *| | *| 6 : Pour un front de fissure tridimensionnel | *| | *| SUPTAB.'AVANCE' = MAILLAGE pour donner les points du front pour | *| lesquels le calcul sera effectue. Si cet | *| argument est absent, le calcul sera fait pour | *| tous les noeuds sur le front de la fissure. | *| | *| 7 : En cas d'existence de plusieurs materiaux | *| | *| SUPTAB.'PARALLELE' = VRAI si la fissure est parallele a l'interface | *| FAUX sinon . | *| | *| SORTIE : | *| ======== | *| | *| Dans tous les cas de calcul | *| --------------------------- | *| | *| SUPTAB.'DGDA' = En 2D, une table si le calcul est effectue pas a | *| pas, flottant si en un seul pas. Dans le premier | *| cas, dG/da est en meme indice d'evolution du | *| parametre de temps que celle des tables | *| SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE (ou | *| SUPTAB.VARINTERNE en elasto ou visco-plasticite). | *| En 3D, si le calcul est realise pas a pas | *| SUPTAB.'DGDA' est indicee par deux parametres dont | *| le premier est le facteur d'evolution de temps et | *| le deuxieme les points sur le front de la fissure. | *| Pour un calcul realise en un seul pas SUPTAB.G a | *| une seule indice representant les points sur le | *| front de la fissure. | *| Exemple : la valeur de dG/da est | *| en 2D pour un calcul realise pas a pas a l'instant | *| T1, (SUPTAB.'DGDA'.T1) | *| en 2D pour un calcul en un seul pas, (SUPTAB.'DGDA')| *| en 3D au point P1 pour un calcul realise pas a pas | *| a l'instant T1 et, (SUPTAB.'DGDA'.T1.P1) | *| en 3D au point P1 pour un calcul realise en un seul | *| pas, (SUPTAB.'DGDA'.P1) | *| SUPTAB.'IERR' = logique egale a VRAI si l'on n'a pas reussit le | *| calcul ou les donnees sont fautes, sinon | *| SUPTAB.'IERR' vaut FAUT. | *| | *| En cas de calcul effectue pas a pas | *| ----------------------------------- | *| | *| SUPTAB.EVOLDGDA En cas de calcul de la variation seconde | *| d'énergie, SUPTAB.EVOLDGDA est un objet de type | *| EVOLUTION donnant la valeur de dG/da en fonction | *| du temps en elasto-plasticite. Pour un front de | *| fissure tridimensionnel EVOLDGDA est une table | *| indicee par les points donnant les evolutions de | *| dG/da pour chaque point en fonction du temps. | *| Exemple : En 2D, on peut tracer l'evolution de | *| dG/da par : DESS (SUPTAB.'EVOLDGDA'); | *| En 3D, on peut tracer l'evolution de dG/da | *| au point P1 en fonction du temps par : | *| DESS (SUPTAB.'EVOLDGDA'.P1); | *|=====================================================================| * &DIME ='VALE' 'DIME'; &MODE ='VALE' 'MODE'; &ELEM = 'VALEUR' 'ELEM'; MOTAX = 'MOT' AXIS ; **** IPAP = ('EGA' ('TYPE' SUPTAB.'CONTRAINTE') 'TABLE ') 'ET' ('EGA' ('TYPE' SUPTAB.'DEPLACEMENT') 'TABLE '); **** OBJMOD = TABMOD.1; NBOBJ = 'DIME' ('INDE' TABMOD); I = 1; 'SI' ('>' NBOBJ 1) ; 'REPETER' NBJ1 (NBOBJ - 1); I = I + 1; OBJMOD = OBJMOD 'ET' TABMOD.I; 'FIN' NBJ1; 'FINSI' ; MAPART = 'EXTR' OBJMOD 'MAIL'; **** NBNO1 = 'NBNO' ('ELEM' (CHAN 'LIGNE' MAPART) 1); ILIN = 'EGA' NBNO1 2; IQUA = 'EGA' NBNO1 3; ICOQU = (&DIME 'EGA' 3) 'ET' ILIN 'ET' (('EGA' &ELEM 'SEG2') 'OU' ('EGA' &ELEM 'TRI3') 'OU' ('EGA' &ELEM 'QUA4')); ************************************************** ********* TEST DE COMPABILITE DES DONNEES ******** ************************************************** SUPTAB.'IERR' = FAUX; 'SI' ('<' ('NBNO' ('EXTR' MATERI 'MAIL')) ('NBNO' MAPART)); 'MESS' 'ERREUR : LE SUPPORT GEOMETRIQUE DE MATERIAU EST'; 'MESS' 'PLUS PETIT QUE CELUI DE L ENSEMBLE DE MODELES'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; 'SI' ('<' ('NBEL' ('EXTR' MATERI 'MAIL')) ('NBEL' MAPART)); 'MESS' 'ERREUR : LE SUPPORT GEOMETRIQUE DE MATERIAU EST'; 'MESS' 'PLUS PETIT QUE CELUI DE L ENSEMBLE DE MODELES'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; **** IAUXI = ('EXIST' SUPTAB 'DEPL_AUXI') 'OU' ('EXIST' SUPTAB 'CONT_AUXI') 'OU' ('EXIST' SUPTAB 'PRES_AUXI'); 'SI' IAUXI; 'SI' ('NON' ('EXIST' SUPTAB 'DEPL_AUXI')); 'ERREUR' 'ON VEUT LA SOLUTION AUXILAIRE DE DEPLACEMENT'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; 'SI' ('NON' ('EXIST' SUPTAB 'CONT_AUXI')); 'ERREUR' 'ON VEUT LA SOLUTION AUXILAIRE DE CONTRAINTE'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; 'FINSI'; IPRE_A = FAUX; 'SI' ('EXIST' SUPTAB 'PRES_AUXI'); PRES_A = SUPTAB.'PRES_AUXI'; IPRE_A = VRAI; 'FINSI'; **** 'SI' ('NON' ('EXISTE' SUPTAB 'CONTRAINTE')); 'ERREUR' 'IL FAUT DONNER LE CHAMP DE CONTRAINTE'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; 'SI' ('NON' ('EXISTE' SUPTAB 'DEPLACEMENT')); 'ERREUR' 'IL FAUT DONNER LE CHAMP DE DEPLACEMENT'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; 'SI' ('EXISTE' SUPTAB 'PARALLELE'); 'SI' (NBOBJ 'EGA' 1); 'ERRE' 'IL FAUT UNE TABLE STOCKANT TOUS LES OBJETS MODELES'; 'FINSI'; IPARAL = SUPTAB.'PARALLELE'; 'SINON'; IPARAL = FAUX; 'FINSI'; 'SI' IPAP; 'SI' ('NON' ('EXISTE' SUPTAB 'VARINTERNE')); *& 'MESS' ' ATTENTION : EN ABSENCE DES VARIABLES INTERNES'; *& 'MESS' ' LE PROBLEME EST CONSIDERE COMME LINEAIRE.'; 'FINSI'; 'FINSI'; 'SI' ('NON' ('EXISTE' SUPTAB 'CHTHETA')); 'ERREUR' 'IL FAUT DONNER LE CHAMP THETA'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; **** ISECO = ('EXIST' SUPTAB 'CHPI') 'OU' ('EXIST' SUPTAB 'RITOTA'); 'SI' ISECO; 'SAUT' 1 'LIGNE'; 'SI' ('NON' ('EXIST' SUPTAB 'CHPI')); 'ERREUR' 'IL FAUT DONNER LE CHAMP PI'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; 'SI' ('NON' ('EXIST' SUPTAB 'RITOTA')); 'ERREUR' 'IL FAUT DONNER LA RIGIDITE COMPLETE'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; RITOTA = SUPTAB.'RITOTA'; MAILTO = 'EXTR' ('EXTR' RITOTA 'RIGI' 'NOMU') 'MAIL'; 'FINSI'; **** 'SI' (('NON' IAUXI) 'ET' ('NON' ISECO)); 'ERREUR' 'LES DONNEES NE SONT PAS COMPLETES'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; 'SI' (IAUXI 'ET' ISECO); 'ERREUR' 'LE TYPE D INTEGARLE A CALCULER N EST PAS UNIQUE'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; **** PASA = FAUX; ITHER = ('EXIST' SUPTAB 'TEMPERATURE') 'OU' ('EXIST' SUPTAB 'TREFERENCE'); 'SI' ITHER; 'SI' ('NON' ('EXIST' SUPTAB 'TEMPERATURE')) ; 'ERREUR' 'ON VEUT LA CARTE DE TEMPERATURE'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI' ; 'SI' ('NON' ('EXIST' SUPTAB 'TREFERENCE')) ; 'ERREUR' 'ON VEUT LA TEMPERATURE DE REFERENCE'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI' ; 'SI' ('EGA' ('TYPE' SUPTAB.'TEMPERATURE') 'CHARGEME'); 'SI' ('EXIST' (SUPTAB.'TEMPERATURE') 'T ') ; PASA = VRAI; 'FINSI'; 'FINSI'; 'FINSI' ; **** IPRES = FAUX; 'SI' ('EXIST' SUPTAB 'PRESSION') ; PRESSI = SUPTAB.'PRESSION'; IPRES = VRAI ; 'FINSI' ; **** IPARTI = 'EXIS' SUPTAB 'AVANCE'; **** YOUVARI = FAUX; NUVARI = FAUX; ALFVARI = FAUX; TRAVARI = FAUX; SIGVARI = FAUX; HVARI = FAUX; MATREDU = 'REDU' MATERI OBJMOD; 'REPETER' BCMOD1 NBOBJ; MATI = 'REDU' MATREDU TABMOD.&BCMOD1; YO1 = 'EXCO' MATI 'YOUN'; TYPYO = 'TYPE' ('EXTR' YO1 'YOUN' 1 1 1); 'SI' ('EGA' TYPYO 'EVOLUTIO'); YOUVARI = VRAI; 'SINON'; TEST1 = (('MAXI' YO1) - ('MINI' YO1))/('MINI' YO1); 'SI' ((TEST1 '>' 1.E-10) ET (NON IPARAL)); YOUVARI = VRAI; 'FINSI'; 'FINSI'; NU1 = 'EXCO' MATI 'NU'; TYPNU = 'TYPE' ('EXTR' NU1 'NU' 1 1 1); 'SI' ('EGA' TYPNU 'EVOLUTIO'); NUVARI = VRAI; 'SINON'; TEST1 = (('MAXI' NU1) - ('MINI' NU1))/('MINI' NU1); 'SI' ((TEST1 '>' 1.E-10) ET (NON IPARAL)); NUVARI = VRAI; 'FINSI'; 'FINSI'; 'SI' ITHER; AL1 = 'EXCO' MATI 'ALPH'; TYPAL = 'TYPE' ('EXTR' AL1 'ALPH' 1 1 1); 'SI' ('EGA' TYPAL 'EVOLUTIO'); ALFVARI = VRAI; 'SINON'; TEST1 = (('MAXI' AL1) - ('MINI' AL1))/('MINI' AL1); 'SI' (TEST1 '>' 1.E-10); ALFVARI = VRAI; 'FINSI'; 'FINSI'; 'FINSI'; 'SI' ('EXIST' MATI 'TRAC'); TR1 = 'EXCO' MATI 'TRAC'; TYPTR = 'TYPE' ('EXTR' TR1 'TRAC' 1 1 1); 'SI' ('EGA' TYPTR 'NUAGE '); TRAVARI = VRAI; 'FINSI'; 'FINSI'; 'SI' ('EXIST' MATI 'SIGY'); SI1 = 'EXCO' MATI 'SIGY'; TYPSI = 'TYPE' ('EXTR' SI1 'SIGY' 1 1 1); 'SI' ('EGA' TYPSI 'EVOLUTIO'); SIGVARI = VRAI; 'FINSI'; 'FINSI'; 'SI' ('EXIST' MATI 'H'); H1 = 'EXCO' MATI 'H'; TYPH = 'TYPE' ('EXTR' H1 'H' 1 1 1); 'SI' ('EGA' TYPH 'EVOLUTIO'); HVARI = VRAI; 'FINSI'; 'FINSI'; 'FIN' BCMOD1; MATVARI = YOUVARI 'OU' NUVARI 'OU' ALFVARI 'OU' TRAVARI 'OU' SIGVARI 'OU' HVARI; 'SI' MATVARI; 'ERREUR' 'MATERIAU NON CONSTANT. OPTION NON DISPONIBLE'; SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA; 'FINSI'; **** 'SI' IPAP; TXMECANI= 'MOT' ' Mecanique'; TXTERMI = 'MOT' ' Thermique'; TXPRESS = 'MOT' ' Volumique'; 'SINON'; TXMECANI= 'MOT' ' Mecanique'; TXTERMI = 'MOT' ' Thermique'; TXPRESS = 'MOT' ' Volumique'; 'FINSI'; ************************************************** *** QUELQUES MOTS POUR SIMPLIFIER L'ECRITURE *** ************************************************** E = 'MOT' 'EXCO'; MOTU = 'MOTS' 'UX' 'UY'; C = 'MOT' 'CHAI'; MOTF = 'MOTS' 'FX' 'FY'; S = 'MOT' 'SCAL'; MU1 = 'MOT' 'UX'; MU2 = 'MOT' 'UY'; MU3 = 'MOT' 'UZ'; MF1 = 'MOT' 'FX'; MF2 = 'MOT' 'FY'; MF3 = 'MOT' 'FZ'; GR1 = 'MOT' 'UX,X'; GR2 = 'MOT' 'UX,Y'; GR3 = 'MOT' 'UX,Z'; GR4 = 'MOT' 'UY,X'; GR5 = 'MOT' 'UY,Y'; GR6 = 'MOT' 'UY,Z'; GR7 = 'MOT' 'UZ,X'; GR8 = 'MOT' 'UZ,Y'; GR9 = 'MOT' 'UZ,Z'; SM1 = 'MOT' 'SMXX'; SM2 = 'MOT' 'SMYY'; SM3 = 'MOT' 'SMZZ'; SM4 = 'MOT' 'SMXY'; SM5 = 'MOT' 'SMXZ'; SM6 = 'MOT' 'SMYZ'; EP1 = 'MOT' 'EPXX'; EP2 = 'MOT' 'EPYY'; EP3 = 'MOT' 'EPZZ'; EP4 = 'MOT' 'GAXY'; EP5 = 'MOT' 'GAXZ'; EP6 = 'MOT' 'GAYZ'; 'SI' ('EGA' MOTAX &MODE) ; MOTU = 'MOTS' 'UR' 'UZ' ; MOTF = 'MOTS' 'FR' 'FZ' ; MU1 = 'MOT' 'UR'; MU2 = 'MOT' 'UZ'; MU3 = 'MOT' 'UT'; MF1 = 'MOT' 'FR'; MF2 = 'MOT' 'FZ'; GR1 = 'MOT' 'UR,R'; GR2 = 'MOT' 'UR,Z'; GR3 = 'MOT' 'UR,T'; GR4 = 'MOT' 'UZ,R'; GR5 = 'MOT' 'UZ,Z'; GR6 = 'MOT' 'UZ,T'; GR7 = 'MOT' 'UT,R'; GR8 = 'MOT' 'UT,Z'; GR9 = 'MOT' 'UT,T'; SM1 = 'MOT' 'SMRR'; SM2 = 'MOT' 'SMZZ'; SM3 = 'MOT' 'SMTT'; SM4 = 'MOT' 'SMRZ'; EP1 = 'MOT' 'EPRR'; EP2 = 'MOT' 'EPZZ'; EP3 = 'MOT' 'EPTT'; EP4 = 'MOT' 'GARZ'; 'FINSI'; 'SI' (&DIME 'EGA' 3) ; MOTU = 'MOTS' 'UX' 'UY' 'UZ' ; MOTF = 'MOTS' 'FX' 'FY' 'FZ' ; 'FINSI'; **** TX2 = 'CHAIN' ' Contribution a la derivee dG/da due au chargement'; 'SI' ITHER; TX1 = 'MOT' 'VARIATION SECONDE D ENERGIE EN THERMO-PLASTICITE'; 'SINON'; TX1 = 'MOT' 'VARIATION SECONDE D ENERGIE EN ELASTO-PLASTICITE'; 'FINSI'; CHA1 = 'CHAI' 'VARIATION SECONDE dG/da EN FONCTION DU TEMPS'; MOTTI = 'MOT' 'dG/da'; MOTCO = 'MOT' ' Derivee dG/da'; TX3 = 'CHAIN' ' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°'; *************************************************** ********** DEPLACEMENT, GRADIANT INITIAUX ********* *************************************************** FOR000 ='CHAN' 'CHPO' OBJMOD ('ZERO' OBJMOD 'FORCES '); DEP000 ='CHAN' 'CHPO' OBJMOD ('ZERO' OBJMOD 'DEPLACEM'); GRA000 = 'ZERO' OBJMOD 'GRADIENT'; ******************************************** *** ZONE OU LE CHAMP THETA N'EST PAS NUL *** ******************************************** 'SI' (('EGA' &DIME 2) 'OU' ICOQU); TETA = SUPTAB.'CHTHETA'; MENL1 = 'MOT' 'CONT'; 'FINSI'; 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); TETA = SUPTAB.'CHTHETA'.'GLOBAL'; MENL1 = 'MOT' 'ENVE'; 'FINSI'; TETA = TETA + DEP000; NORM1 = ((E MU1 TETA 'SCAL')**2) + ((E MU2 TETA 'SCAL')**2); 'SI' ('EGA' &DIME 3); NORM1 = NORM1 + ((E MU3 TETA 'SCAL')**2); 'FINSI'; NORM1 = 'CHAN' 'CHAM' OBJMOD (NORM1**0.5); VA1 = ('MAXI' NORM1) - 1.E-5; VA2 = ('MAXI' NORM1) + 1.E-5; ELTETA = NORM1 'ELEM' 'COMPRIS' VA1 VA2; *************************************************** ***** INDICE DE TEMPERATURE RANGEE DENA LTHER ***** *************************************************** 'SI' ('NON' PASA) ; 'SI' (ITHER 'ET' IPAP) ; TEPER*'TABLE'= SUPTAB.'TEMPERATURE'; ITET = 'INDE' TEPER ; NBTET = 'DIME' ITET ; IT = 1 ; LTHER = 'PROG' (ITET.IT) ; 'REPETER' TEPERATU ; IT = IT + 1 ; 'SI' ('EXISTE' ITET IT) ; VALTET = 'PROG' (ITET.IT) ; LTHER = LTHER 'ET' VALTET ; 'SINON' ; 'QUITTER' TEPERATU ; 'FINSI' ; 'FIN' TEPERATU ; LTHER = 'ORDONNER' LTHER ; 'FINSI' ; 'FINSI' ; *************************************************** ********* TABLES POUR STOCKER LES RESULTATS ******* *************************************************** SUPTAB.'DGDA' = TABLE; *************************************************** **************** AFFICHAGE DU TITRE ************** *************************************************** 'SI' IPAP; 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 'SI' ISECO; 'MESS' ' ' TX1; 'MESS'; 'MESS' ' ' TX2; 'MESS' ' ' TX3; 'MESS' ' Instant ' TXMECANI TXTERMI TXPRESS MOTCO; 'FINSI'; 'FINSI'; 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 'SI' ISECO; 'MESS' ' ' TX1; 'MESS'; 'MESS' ' ' TX2; 'MESS' ' ' TX3; 'MESS' ' Noeuds ' ' Instant ' TXMECANI TXTERMI TXPRESS MOTCO; 'FINSI'; 'FINSI'; 'SINON'; 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 'SI' ISECO; 'MESS' ' ' TX2; 'MESS' ' ' TX3; 'MESS' ' ' TXMECANI TXTERMI TXPRESS ' Derivee dG/da'; 'FINSI'; 'FINSI'; 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 'SI' ISECO; 'MESS' ' ' TX2; 'MESS' ' ' TX3; 'MESS' ' Noeuds ' TXMECANI TXTERMI TXPRESS ' Derivee dG/da'; 'FINSI'; 'FINSI'; 'FINSI'; **** 'SI' ('NON' IPAP); SIGF = 'REDU' (SUPTAB.'CONTRAINTE') OBJMOD; DEPINT = 'REDU' (SUPTAB.'DEPLACEMENT') MAPART; NBDEP = 1; 'SINON'; SIG*'TABLE' = SUPTAB.'CONTRAINTE' ; DEP*'TABLE' = SUPTAB.'DEPLACEMENT' ; 'SI' ('EXIST' SUPTAB 'VARINTERNE'); VAR*'TABLE' = SUPTAB.'VARINTERNE'; 'SINON'; VAR = TABLE; 'FINSI'; IDEP = 'INDE' DEP ; NBDEP = 'DIME' IDEP ; 'FINSI'; *************************************************** *************************************************** ********* BOUCLE SUR LE PAS DE CALCUL ********* *************************************************** *************************************************** IABC = 0 ; 'REPETER' BOUCEXT NBDEP ; IABC = IABC + 1 ; S10 = 0.; S20 = 0.; S30 = 0.; S40 = 0.; S50 = 0.; S60 = 0.; S70 = 0.; S80 = 0.; S90 = 0.; S100 = 0.; S110 = 0.; S120 = 0.; S130 = 0.; S140 = 0.; *************************************************** ***** DEPLACEMENT,CONTRAINTE A L INSTANT INST ***** *************************************************** 'SI' IPAP; INST = IDEP.IABC ; SIGF = (SIG.INST) 'REDU' OBJMOD ; 'SI' ('EXIST' VAR INST); VARF = (VAR.INST) 'REDU' OBJMOD; 'SINON'; VARF = 'ZERO' OBJMOD 'VARINTER'; 'FINSI'; DEPINT = 'REDU' (DEP.INST) MAPART; 'FINSI'; *************************************************** *********** TEMPERATURE A L INSTANT INST ********** *************************************************** 'SI' ITHER ; 'SI' IPAP; 'SI' PASA ; TEPINT = 'TIRE' (SUPTAB.'TEMPERATURE') INST 'T' ; TEPINT = 'REDU' TEPINT MAPART ; TEPINT = TEPINT - ('REDU' (SUPTAB.'TREFERENCE') MAPART); 'SINON'; K = 0 ; 'REPETER' BLOC1 NBTET ; K = K + 1 ; NBRE = 'EXTR' LTHER K ; 'SI' (NBRE '>EG' INST) ; 'QUITTER' BLOC1 ; 'FINSI' ; 'FIN' BLOC1 ; K = K - 1 ; 'SI' (> ('ABS' ((NBRE-INST)/INST)) 0.001) ; NBRE1 = 'EXTR' LTHER K ; NBRE2 = 'EXTR' LTHER (K+1) ; D1 = INST - NBRE1 ; D2 = NBRE2 - INST ; TEPINT = ((('REDU' TEPER.NBRE1 MAPART)*D2)+ (('REDU' TEPER.NBRE2 MAPART)*D1))*(1/(D1+D2)); TEPINT = TEPINT - ('REDU' (SUPTAB.'TREFERENCE') MAPART); 'SINON'; TEPINT = ('REDU' TEPER.NBRE MAPART) - ('REDU' (SUPTAB.'TREFERENCE') MAPART) ; 'FINSI'; 'FINSI'; 'SINON'; TEPINT = ('REDU' (SUPTAB.'TEMPERATURE') MAPART) - ('REDU' (SUPTAB.'TREFERENCE') MAPART) ; 'FINSI'; 'FINSI'; *************************************************** ************ MATERIAU A L INSTANT INST ************ *************************************************** 'SI' (MATVARI 'ET' ITHER); TEPABS = TEPINT + ('REDU' (SUPTAB.'TREFERENCE') MAPART); MAT1 = 'VARI' 'NUAG' OBJMOD MATREDU ('EXCO' 'T' TEPABS); 'SINON'; MAT1 = MATREDU; 'FINSI'; *************************************************** ************ GRADIENT A L INSTANT INST ************ *************************************************** GRADEP = 'GRAD' OBJMOD MAT1 DEPINT ; 'SI' ITHER; TEPEGR = 'GRAD' OBJMOD MAT1 ((E 'T' TEPINT MU1) + DEP000); 'SI' ISECO; DEPDT = (E GR1 TEPEGR MU1) + (E GR2 TEPEGR MU2); 'SI' (&DIME 'EGA' 3); DEPDT = DEPDT + (E GR3 TEPEGR MU3); 'FINSI'; DEPDTGR = 'GRAD' OBJMOD MAT1 ('CHAN' 'CHPO' OBJMOD DEPDT); 'FINSI'; 'FINSI'; ******************************************************* **** ENERGIE DE DEFORMATION ELASTIQUE ET PLASTIQUE **** ******************************************************* WELAS = 0.5*('ENER' OBJMOD SIGF ('ELAS' OBJMOD SIGF MAT1)); 'SI' IPAP; 'SI' ('EGA' IABC 1); VMI1 = 'CHAN' ('VMIS' OBJMOD SIGF MAT1) 'TYPE' 'SCALAIRE'; WPLAS = 0.5*VMI1*(E VARF 'EPSE') ; 'SINON' ; SIGMOY = 0.5*(SIG1 + SIGF); VMI1 = 'CHAN' ('VMIS' OBJMOD SIGMOY MAT1) 'TYPE' 'SCALAIRE'; WPLAS = WPLAS + (VMI1*(E (VARF - VAR1) 'EPSE')); 'FINSI' ; ENERM = WELAS + WPLAS ; SIG1 = SIGF; VAR1 = VARF; 'SINON'; ENERM = WELAS; 'FINSI'; **************************************************** ********** RECUPERATION DU POINT A AVANCER ********* **************************************************** 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 'SI' IPAP; SUPTAB.'DGDA'.INST = TABLE; 'FINSI'; TTETA*'TABLE' = SUPTAB.'CHTHETA'; 'SI' ISECO; TPI*'TABLE' = SUPTAB.'CHPI'; 'FINSI'; INT = 'INDEX' TTETA; 'SI' IPARTI; 'SI' ('EGA' ('TYPE' (SUPTAB.'AVANCE')) 'MAILLAGE'); PMA = 'CHAN' 'POI1' (SUPTAB.'AVANCE'); NBOU = ('NBNO' PMA) + 1; 'SINON'; PMA = SUPTAB.'AVANCE'; NBOU = 2; 'FINSI'; 'SINON'; NBOU = 'DIME' TTETA; 'FINSI'; 'FINSI'; 'SI' (('EGA' &DIME 2) 'OU' ICOQU); NBOU = 1; 'FINSI'; ************************************************** ******** BOUCLE SUR LES POINTS A AVANCER ******* ************************************************** 'REPETER' BCNOEU NBOU; 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 'SI' (&BCNOEU 'EGA' NBOU); PM = MOT 'GLOBAL'; NUNOE = 'CHAI' ' ' PM ' '; 'SINON'; PM = INT.&BCNOEU; 'SI' IPARTI; 'SI' ('EGA' ('TYPE' (SUPTAB.'AVANCE')) 'MAILLAGE'); PM = 'POIN' PMA &BCNOEU; 'SINON'; PM = SUPTAB.'AVANCE'; 'FINSI'; 'FINSI'; NUNOE = 'NOEU' PM; 'FINSI'; TETA = TTETA.PM; 'SI' ISECO; PI = TPI.PM; 'FINSI'; 'FINSI'; 'SI' (('EGA' &DIME 2) 'OU' ICOQU); TETA = SUPTAB.'CHTHETA'; 'SI' ISECO; PI = SUPTAB.'CHPI'; 'FINSI'; 'FINSI'; ************************************************** ***** GRADIANT DU CHAMP THETA ET DU CHAMP PI ***** ************************************************** TETA = TETA + DEP000; TETAGR = 'GRAD' OBJMOD MAT1 TETA ; DIVTETA = (E GR1 TETAGR S)+(E GR5 TETAGR S)+(E GR9 TETAGR S); TETX = 'CHAN' 'CHAM' OBJMOD (E MU1 TETA S) 'STRESSES'; TETY = 'CHAN' 'CHAM' OBJMOD (E MU2 TETA S) 'STRESSES'; 'SI' (&DIME 'EGA' 3) ; TETZ = 'CHAN' 'CHAM' OBJMOD (E MU3 TETA S) 'STRESSES'; 'FINSI'; 'SI' ISECO; PI = PI + DEP000; PI = PI / ('MAXI' NORM1); PIGR = 'GRAD' OBJMOD MAT1 PI ; DIVPI = (E GR1 PIGR S)+(E GR5 PIGR S)+(E GR9 PIGR S); PITAGR = (OBJMOD PIGR * TETAGR) ; DIVPITA = (E GR1 PITAGR S)+(E GR5 PITAGR S)+(E GR9 PITAGR S); ADJ = (DIVPITA - (DIVPI * DIVTETA)) ; PIX = 'CHAN' 'CHAM' OBJMOD (E MU1 PI S) 'STRESSES'; PIY = 'CHAN' 'CHAM' OBJMOD (E MU2 PI S) 'STRESSES'; 'SI' (&DIME 'EGA' 3) ; PIZ = 'CHAN' 'CHAM' OBJMOD (E MU3 PI S) 'STRESSES'; 'FINSI'; 'FINSI'; ********************************************************* ***************** TEMU = (Grad T)*THETA ***************** ****************** TEMU1 = (Grad T)*PI ****************** *********** TEMU2 = (Grad (Grad T))*PI*THETA ************ ********************************************************* 'SI' ITHER; TEMU = ((E GR1 TEPEGR S)*OBJMOD TETX) + ((E GR2 TEPEGR S)*OBJMOD TETY) ; 'SI' (&DIME 'EGA' 3) ; TEMU = TEMU + ((E GR3 TEPEGR S)*OBJMOD TETZ); 'FINSI' ; TEMU = 'CHAN' 'TYPE' ('EXCO' 'SCAL' TEMU 'T') 'TEMPERATURES'; EPSTU = 'ELAS' OBJMOD ('THETA' OBJMOD MAT1 TEMU) MAT1; 'SI' ISECO; TEMU1 = ((E GR1 TEPEGR S)*OBJMOD PIX) + ((E GR2 TEPEGR S)*OBJMOD PIY); TXXPIX = (E GR1 DEPDTGR S)*OBJMOD PIX; TYXPIY = (E GR2 DEPDTGR S)*OBJMOD PIY; TXYPIX = (E GR4 DEPDTGR S)*OBJMOD PIX; TYYPIY = (E GR5 DEPDTGR S)*OBJMOD PIY; TEMU2 = (TETX*OBJMOD (TXXPIX + TYXPIY)) + (TETY*OBJMOD (TXYPIX + TYYPIY)); 'SI' (&DIME 'EGA' 3) ; TEMU1 = TEMU1 + ((E GR3 TEPEGR S)*OBJMOD PIZ); TZXPIZ = (E GR3 DEPDTGR S)*OBJMOD PIZ; TZYPIZ = (E GR6 DEPDTGR S)*OBJMOD PIZ; TXZPIX = (E GR7 DEPDTGR S)*OBJMOD PIX; TYZPIY = (E GR8 DEPDTGR S)*OBJMOD PIY; TZZPIY = (E GR9 DEPDTGR S)*OBJMOD PIZ; TEMU2 = (TETX*OBJMOD (TXXPIX + TYXPIY + TZXPIZ)) + (TETY*OBJMOD (TXYPIX + TYYPIY + TZYPIZ)) + (TETZ*OBJMOD (TXZPIX + TYZPIY + TZZPIZ)); 'FINSI'; TEMU1 = 'CHAN' 'TYPE' ('EXCO' 'SCAL' TEMU1 'T') 'TEMPERATURES'; EPSTU1 = 'ELAS' OBJMOD ('THETA' OBJMOD MAT1 TEMU1) MAT1; TEMU2 = 'CHAN' 'TYPE' ('EXCO' 'SCAL' TEMU2 'T') 'TEMPERATURES'; EPSTU2 = 'ELAS' OBJMOD ('THETA' OBJMOD MAT1 TEMU2) MAT1; 'FINSI' ; 'FINSI'; ******************************************************************** ****** On calcul la variation de contrainte et de déplacement ****** ******************************************************************** 'SI' ISECO; GRAD11 = (OBJMOD GRADEP * PIGR) ; EPXX1 = E GR1 GRAD11 S; EPYY1 = E GR5 GRAD11 S; EPZZ1 = E GR9 GRAD11 S; GAXY1 = (E GR2 GRAD11 S) + (E GR4 GRAD11 S) ; GAXZ1 = (E GR3 GRAD11 S) + (E GR7 GRAD11 S) ; GAYZ1 = (E GR6 GRAD11 S) + (E GR8 GRAD11 S) ; 'SI' (&DIME 'EGA' 3) ; EPSIA1 = 'MANU' 'CHML' OBJMOD EP1 EPXX1 EP2 EPYY1 EP3 EPZZ1 EP4 GAXY1 EP5 GAXZ1 EP6 GAYZ1 'TYPE' 'DEFORMATIONS' 'STRESSES'; 'SINON'; EPSIA1 = 'MANU' 'CHML' OBJMOD EP1 EPXX1 EP2 EPYY1 EP3 EPZZ1 EP4 GAXY1 'TYPE' 'DEFORMATIONS' 'STRESSES'; 'FINSI'; 'SI' ITHER; EPSIA1 = EPSIA1 + EPSTU1; 'FINSI'; F11 = ('BSIG' OBJMOD ((('HOOK' OBJMOD MATERI)*OBJMOD EPSIA1) - (OBJMOD SIGF*DIVPI)) + ('FOFI' OBJMOD SIGF PIGR)); A_DEPI = 'REDU' ('RESO' (F11 + FOR000) RITOTA) MAPART ; A_SIGF = OBJMOD ('HOOK' OBJMOD MAT1) * (('EPSI' OBJMOD A_DEPI) - EPSIA1); 'SINON'; A_DEPI = 'REDU' (SUPTAB.'DEPL_AUXI') MAPART; A_SIGF = 'REDU' (SUPTAB.'CONT_AUXI') OBJMOD; 'FINSI'; A_DEPGR = 'GRAD' OBJMOD A_DEPI ; ****************************************************** ***** S10 = -SIGF*(Grad U)*(Grad PI)*(Grad TETA) ***** ***** S20 = -SIGF*(Grad U)*(Grad TETA)*(Grad PI) ***** ***** S30 = SIGF*(Grad U)*(Grad TETA)*(Div PI) ******* ***** S40 = SIGF*(Grad U)*(Grad PI)*(Div TETA) ******* ***** S50 = ENEGIE*(ADJ TETA*PI) ********************* ***** S60 = ALPH*SIGF*(Grad (Grad T))*PI*TETA ******** ***** S70 = ALPH*SIGF*((Grad T)*PI)*(Div TETA) ******* ***** S80 = ALPH*SIGF*((Grad T)*TETA)*(Div PI) ******* ***** S120= ALPH*SIG1*((Grad T)*TETA) **************** ***** S90 = SIG1*(Grad U)*(Grad TETA) **************** ***** S100= SIGF*(Grad U1)*(Grad TETA) *************** ***** S110= -SIGF*(Grad U1)*(Div TETA) *************** ***** S130= PRESSION*(grad A_DEPI)*THETA ************* ***** S140= PRESSION_AUXI*(grad U)*THETA ************* ****************************************************** 'SI' ISECO; S10 = 0. - ('INTG' OBJMOD ('WORK' OBJMOD SIGF (OBJMOD GRADEP * (OBJMOD PIGR * TETAGR)))); S20 = 0. - ('INTG' OBJMOD ('WORK' OBJMOD SIGF (OBJMOD GRADEP * (OBJMOD TETAGR * PIGR)))); S30 = 'INTG' OBJMOD (OBJMOD ('WORK' OBJMOD SIGF (OBJMOD GRADEP * TETAGR)) * DIVPI); S40 = 'INTG' OBJMOD (OBJMOD ('WORK' OBJMOD SIGF (OBJMOD GRADEP * PIGR)) * DIVTETA); S50 = 'INTG' OBJMOD (ENERM * ADJ); 'SI' ITHER ; S60 = 'INTG' OBJMOD ('ENER' OBJMOD SIGF EPSTU2); S70 = 'INTG' OBJMOD (('ENER' OBJMOD SIGF EPSTU1)*DIVTETA); S80 = 'INTG' OBJMOD (('ENER' OBJMOD SIGF EPSTU)*DIVPI); 'FINSI'; 'FINSI'; 'SI' ITHER ; S120 = 'INTG' OBJMOD ('ENER' OBJMOD A_SIGF EPSTU); 'FINSI'; 'SI' IPRE_A ; PREI_A = PRES_A 'REDU' MAPART ; GRADCH = 'CHANGER' 'CHPO' OBJMOD GRADEP; DEPLX = ((E GR1 GRADCH S)*(E MU1 TETA S)) + ((E GR2 GRADCH S)*(E MU2 TETA S)) ; DEPLY = ((E GR4 GRADCH S)*(E MU1 TETA S)) + ((E GR5 GRADCH S)*(E MU2 TETA S)) ; DEP0 = DEP000 + ('NOMC' DEPLX MU1) + ('NOMC' DEPLY MU2); 'SI' (&DIME 'EGA' 3) ; DEPLX = DEPLX + ((E GR3 GRADCH S)*(E MU3 TETA S)); DEPLY = DEPLY + ((E GR6 GRADCH S)*(E MU3 TETA S)); DEPLZ = ((E GR7 GRADCH S)*(E MU1 TETA S)) + ((E GR8 GRADCH S)*(E MU2 TETA S)) + ((E GR9 GRADCH S)*(E MU3 TETA S)) ; DEP0 = ('NOMC' DEPLX MU1) + ('NOMC' DEPLY MU2) + ('NOMC' DEPLZ MU3); 'FINSI'; S140 = (0 - ('XTY' PREI_A DEP0 MOTF MOTU)) ; 'FINSI' ; 'SI' IPRES ; PREINT = PRESSI 'REDU' MAPART ; GRADCH = 'CHANGER' 'CHPO' OBJMOD A_DEPGR ; DEPLX = ((E GR1 GRADCH S)*(E MU1 TETA S)) + ((E GR2 GRADCH S)*(E MU2 TETA S)) ; DEPLY = ((E GR4 GRADCH S)*(E MU1 TETA S)) + ((E GR5 GRADCH S)*(E MU2 TETA S)) ; DEP0 = DEP000 + ('NOMC' DEPLX MU1) + ('NOMC' DEPLY MU2); 'SI' (&DIME 'EGA' 3) ; DEPLX = DEPLX + ((E GR3 GRADCH S)*(E MU3 TETA S)); DEPLY = DEPLY + ((E GR6 GRADCH S)*(E MU3 TETA S)); DEPLZ = ((E GR7 GRADCH S)*(E MU1 TETA S)) + ((E GR8 GRADCH S)*(E MU2 TETA S)) + ((E GR9 GRADCH S)*(E MU3 TETA S)) ; DEP0 = ('NOMC' DEPLX MU1) + ('NOMC' DEPLY MU2) + ('NOMC' DEPLZ MU3); 'FINSI'; S130 = (0 - ('XTY' PREINT DEP0 MOTF MOTU)) ; 'FINSI'; S90 = 'INTG' OBJMOD ('WORK' OBJMOD A_SIGF (OBJMOD GRADEP * TETAGR)); S100 = 'INTG' OBJMOD ('WORK' OBJMOD SIGF (OBJMOD A_DEPGR * TETAGR)); S110 = 0. - ('INTG' OBJMOD (OBJMOD ('WORK' OBJMOD SIGF A_DEPGR) * DIVTETA)) ; ************************************************** ******** RASSEMBLAGE DE DIFFERENTS TERMES ******** ************************************************** TMCANI = S10 + S20 + S30 + S40 + S50 + S90 + S100 + S110; TTERMI = S60 + S70 + S80 + S120 ; TPRESS = S130 + S140; TTOTA = TMCANI + TTERMI + TPRESS ; *************************************************** **** STOCKAGE DES RESULTATS DANS SUPTAB.'DGDA' **** *************************************************** C1 = C TMCANI ' '; C2 = C TTERMI ' '; C3 = C TPRESS ' '; C4 = C TTOTA; 'SI' IPAP; 'SI' (('EGA' &DIME 2) 'OU' ICOQU); SUPTAB.'DGDA'.INST = TTOTA; 'MESS' (C INST ' ') C1 C2 C3 C4; 'FINSI'; 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); SUPTAB.'DGDA'.INST.PM = TTOTA; 'MESS' NUNOE (C INST ' ') C1 C2 C3 C4; 'FINSI'; 'SINON'; 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 'MESS' C1 C2 C3 C4; SUPTAB.'DGDA' = TTOTA; 'FINSI'; 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 'MESS' NUNOE C1 C2 C3 C4; SUPTAB.'DGDA'.PM = TTOTA; 'FINSI'; 'FINSI'; 'MENA'; 'FIN' BCNOEU; 'MENA'; 'SI' (IPAP 'ET' (NBOU '>' 1)); 'SAUT' 1 'LIGNE'; 'FINSI'; 'SI' (IPAP 'ET' (NBOU 'EGA' 1)); 'SI' (('ABS' ((&BOUCEXT/10) - (&BOUCEXT/10.))) '<' 1.D-10); 'SAUT' 1 'LIGNE'; 'FINSI'; 'FINSI'; 'FIN' BOUCEXT ; **************************************************** ********* FIN BOUCLE SUR LE PAS DE CALCUL ********* **************************************************** **************************************************** ** STOCKAGE DES RESULTATS DANS SUPTAB.'EVOLDGDA' *** **************************************************** 'SI' IPAP; SUPTAB.'EVOLDGDA' = TABLE; IND1 = 'INDE' (SUPTAB.'DGDA'); 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 'TITRE' CHA1; PT = PROG; PG = PROG; 'REPETER' BB1 ('DIME' IND1); T1 = IND1.&BB1; PT = PT 'ET' (PROG T1); PG = PG 'ET' (PROG SUPTAB.'DGDA'.T1); 'FIN' BB1; SUPTAB.'EVOLDGDA'='EVOL' 'MANU' 'TEMPS' PT MOTTI PG; 'FINSI'; 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); IND2 = 'INDE' (SUPTAB.'DGDA'.(IND1.1)); 'REPETER' BB1 ('DIME' IND2); PM = IND2.&BB1; PT = PROG; PG = PROG; CHA2 = 'CHAI' ' (Pt ' NUNOE ')'; 'TITR' ('CHAI' CHA1 CHA2); 'REPETER' BB2 ('DIME' IND1); T1 = IND1.&BB2; PT = PT 'ET' (PROG T1); PG = PG 'ET' (PROG SUPTAB.'DGDA'.T1.PM); 'FIN' BB2; SUPTAB.'EVOLDGDA'.PM='EVOL' 'MANU' 'TEMPS' PT MOTTI PG; 'FIN' BB1; 'FINSI'; 'FINSI'; 'FINPROC' SUPTAB ;