* G_THETA1 PROCEDUR CB215821 20/07/30 21:15:10 10670 * G_THETA1 PROCEDUR VALETA 96/05/09 21:15:10 2138 'DEBPROC' G_THETA1 TABMOD*'TABLE' MATERI*'MCHAML' SUPTAB*'TABLE'; *|=====================================================================| *| | *| OBJET : | *| ======= | *| | *| 1) calculer le taux de restitution d'energie G en | *| elasticite, en elasto-plasticite,en elasto-dynamique ou | *| l'integrale C* en visco-plasticite en 2D, 3D (massif ou | *| visco-plasticite en 2D, 3D (massif ou coque mince), ou en | *| coque mince axisymetrique. Les materiaux utilises peuvent etre | *| homogenes, non-homogenes, ou composites sous des chargements | *| de type mecaniques, thermiques, forces volumiques, ou pressions | *| sur le fond de la fissure. | *| 2) decouper les modes mixtes (separation de K1, K2 et K3) en | *| elasticite pour les problems en 2D, 3D (massif uniquement), | *| ou en axisymetrique. Pour separer les modes, la version | *| actuelle de la procedure ne fonctione qu'en cas de materiaux | *| homogenes et isotrope. | *| | *| ENTREE : | *| ======== | *| | *| Arguments obligatoires : | *| ------------------------- | *| | *| TABMOD 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 G ou C*. 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 ou si l'on utilise la | *| procedure pour decoupler les modes, TABMOD 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 entree, SUPTAB sert a definir les options et les | *| parametres du calcul. Ses indices sont des objets de type | *| MOTS (a ecrire 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.DEPLACEMENT (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. | *| SUPTAB.CHARGEMENT = CHARGEMENT.Pour les calculs non-lineaires | *| effectues pas a pas ,on doit rappeler ici le | *| chargement utilise.(exige si on a utilise | *| la procedure PASAPAS) | *| SUPTAB.TEMPS = TABLE. Pour les calculs non-lineaires effectues | *| pas a pas avec la procedure PASAPAS, cette table| *| contient la variable 'temps' en meme indice | *| entier d'evolution que les tables | *| SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE | *| SUPTAB.GRANDS_DEPLACEMENTS = VRAI pour un calcul en grands | *| deplacements. Dans ce cas le CH_THETA | *| est recalcule automatiquement | *| dans la procedure G_THETA a chaque pas | *| sur la geometrie deformee . La donnee | *| de la table utilisee pour le calcul | *| initial de CH_THETA (sur geometrie non | *| deformee) est donc obligatoire : | *| - SUPTAB.'TABLE_CH_THETA' = table utilisee pour le| *| calcul initial de | *| CH_THETA . | *| 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). | *| (inutile si on a utilise PASAPAS) | *| SUPTAB.TREFERENCE = CHPOINT de temperature de reference (ex : | *| chpoint TREFERENCE utilisee dans NONLIN). | *| (inutile si on a utilise PASAPAS) | *| | *| 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 | *| (le logique VRAI suffit si on a utilise PASAPAS) | *| | *| 4 : En cas de reprise de calcul | *| | *| SUPTAB.REPRIS = VRAI | *| En plasticite ou fluage, cette option permet de reprendre | *| le calcul de G a partir d'un pas de calcul donne | *| | *| 5 : En cas de materiaux composites | *| | *| SUPTAB.PARALLELE = VRAI si la fissure est parallele a toutes les | *| interfaces des matériaux differents, FAUX sinon. | *| Dans le premier cas on precise encore : | *| SUPTAB.INTERFACE = TABLE stockant tous les interfaces (de type | *| MAILLAGE) des materiaux differents. L'indice | *| de cette table est 1, 2, 3,..., N (N : nombre | *| d'interfaces des materiaux. En cas des | *| materiaux composites, il convient de | *| constuire les table TABMOD et INTERFACE | *| comme montre ci-dessous | *| | *| --------------|------------|-------------|------------| | *| | | | | | | *| | TABMOD.1 | TABMOD.2 | TABMOD.3 ...| TABMOD.n | | *| | | | | | | *| --------------|------------|-------------|------------| | *| INTERFACE.1 INTERFACE.2 ... INTERFACE.N | *| | *| 6 : Dans le cas de calcul de l'integrale C* en visco-plasticite | *| | *| SUPTAB.'LOI' = MOT pour preciser la loi de fluage utilisee | *| dans le calcul. On rapelle que les lois | *| acctuellement utilisables sont | *| NORTON, BLACKBURN, RCCMR_316, RCCMR_304, | *| LEMAITRE ET POLYNOMIAL. | *| SUPTAB.'DEFINELA' = TABLE. Pour les calculs en viscoplastique, | *| elle donne les déformations inélastiques | *| en meme indice d'evolution que les tables | *| SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE | *| (ex : table RESUDEFI de NONLIN). | *| SUPTAB.'DEFI_INI' = MCHAML pour donner la déformation inélastique | *| au debut de la periode de fluage. Si elle est | *| nulle, on la crée avec l'opérateur 'ZERO'. | *| SUPTAB.'DEPL_INI' = CHPOINT pour donner le champ de deplacements | *| au debut de la periode de fluage (ex : | *| solution deplacement elastique). | *| SUPTAB.'CONT_INI' = MCHAML pour donner le champ de contraintes | *| au debut de la periode de fluage (ex : | *| solution contrainte elastique). | *| SUPTAB.'TEMP_INI' = CHPOINT pour donner le champ de temperature | *| ABSOLUTE au debut de la periode de fluage. | *| SUPTAB.'TEMP0' = FLOTTANT (facultatif) pour donner le temps a | *| partir duquel commence la periode de fluage. | *| Par defaut c'est le temps zero qui correspond | *| le debut de la fluage. Il est a noter que | *| l'integrale C* n'est independant du contour | *| d'integration que lorsque le fluage est | *| stationaire, c'est-a-dire quand le champ de | *| contraintes est redistribue et ne varie plus. | *| | *| 7 : 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. | *| | *| 8 : En cas de decouplage des modes mixtes | *| | *| SUPTAB.'MODMIXTE' = Objet LOGIQUE egale VRAI si on veut separer | *| les modes. Dans ce cas il faut preciser | *| SUPTAB.'LEVRESUP' = MAILLAGE représentant la lèvre supérieur de | *| la fissure. | *| SUPTAB.'LEVREINF' = MAILLAGE représentant la lèvre inférieur de | *| la fissure | *| SUPTAB.'FONDFISS' = POINT ou MAILLAGE représentant la pointe de | *| la fissure | *| | *| 9 : En elasto-dynamique | *| | *| SUPTAB.'VITESSE = TABLE en elasto-dynamique, | *| contient les VITESSES | *| | *| SUPTAB.'TDYN' = TABLE en elasto-dynamique, contient tous | *| les INSTANTS de sortie. | *| | *| | *| SORTIE : | *| ======== | *| | *| Dans tous les cas de calcul | *| --------------------------- | *| | *| SUPTAB.G = 1) Pour le taux de restitution d'énergie G ou | *| l'intégrale C* habituelle, SUPTAB.G est, en 2D, une | *| table si le calcul est effectue pas a pas, flottant | *| si en un seul pas. Dans le premier cas, G 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.G | *| 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 G ou C* est | *| en 2D pour un calcul realise pas a pas a l'instant | *| T1, (SUPTAB.'G'.T1) | *| en 2D pour un calcul en un seul pas, (SUPTAB.'G') | *| en 3D au point P1 pour un calcul realise pas a pas a | *| l'instant T1, (SUPTAB.'G'.T1.P1) | *| en 3D au point P1 pour un calcul realise en un seul | *| pas, (SUPTAB.'G'.P1) | *| 2) En cas de decouplage des modes mixtes (separation | *| des facteurs K1, K2 et K3), SUPTAB.G est, en 2D, une | *| table indicee par les mots 'I' et 'II' representant | *| deux flottants associes a K1 et K2, respectivement. | *| Si le calcul est realise pas a pas, SUPTAB.G.'I' et | *| SUPTAB.G.'II' sont deux tables, en meme indice | *| d'evolution du parametre de temps que celle des | *| tables SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE (ou | *| SUPTAB.VARINTERNE). En 3D, si le calcul est realise | *| pas a pas, SUPTAB.G est indicee par trois parametres | *| dont le premier est le mot 'I', 'II' ou 'III' | *| representant des valeurs associées a K1, K2 ou K3, | *| la deuxieme indice est le facteur d'evolution de temps| *| representant les instants auxquels on a realise le | *| calcul et la troisieme le point representant les | *| noeuds sur le front de la fissure. Pour les calcul | *| realise en un seul pas, SUPTAB.G est indicee par | *| deux parametres dont le premier est le mot 'I', 'II' | *| ou 'III' et le deuxieme les noeuds sur le front de la | *| fissure. | *| Exemple : le facteur d'intensite de contrainte en | *| mode MI (MI est un objet de type mot valant 'I', 'II' | *| ou 'III') est Ki = (Gi/C_MATE)**0.5 avec i = 1, 2, 3, | *| C_MATE une constante dependant du module d'Young et | *| du coefficient de Poisson et Gi un flottant egale a : | *| en 2D pour un calcul realise pas a pas a l'instant | *| T1, (SUPTAB.'G'.MI.T1) | *| en 2D pour un calcul en un seul pas, (SUPTAB.MI.'G') | *| en 3D au point P1 pour un calcul realise pas a pas a | *| l'instant T1, (SUPTAB.'G'.MI.T1.P1) | *| en 3D au point P1 pour un calcul realise en un seul | *| pas, (SUPTAB.'G'.MI.P1) | *| REMARQUE : La constante materielle C_MATE est sauvee | *| dans l'objet FLOTTANT SUPTAB.C_MATE. Pour | *| fissure dans l'interface de bimetallique, | *| elle est une fonction des modules d'Young | *| et coefficients de Poisson des materiaux. | *| Les signes pour les FIC K1 et K2 sont | *| stockees dans les objets SUPTAB.'SIGNE_K1' | *| et SUPTAB.'SIGNE_K2', egale à 1 s'ils sont | *| positifs, -1 s'ils sont negatifs. | *| | *| En cas de calcul effectue pas a pas | *| ----------------------------------- | *| | *| SUPTAB.EVOLG = 1) En cas de calcul du taux de restitution d'énergie | *| G ou de l'intégrale C* habituelle d'un probleme | *| plan, SUPTAB.EVOLG est un objet de type EVOLUTION | *| donnant la valeur de G ou C* en fonction du temps | *| en elasto ou visco-plasticite. Pour un front de | *| fissure tridimensionnel EVOLG est une table | *| indicee par les points donnant les evolutions de | *| G ou C* pour chaque point en fonction du temps. | *| Exemple : En 2D, on peut tracer l'evolution de | *| G ou C* par : DESS (SUPTAB.'EVOLG'); | *| En 3D, on peut tracer l'evolution de G ou C* | *| au point P1 en fonction du temps par : | *| DESS (SUPTAB.'EVOLG'.P1); | *| 2) En cas de decouplage des modes mixtes (separation | *| des facteurs K1, K2 et K3), SUPTAB.EVOLG est, en | *| 2D, une table indicee par les mots 'I' et 'II' | *| representant deux evolutions de la valeur de | *| Gi (i = 1, 2) en fonction du temps. En 3D | *| SUPTAB.EVOLG est indicee par deux parametres | *| dont le premier est le mot 'I', 'II' ou 'III' | *| representant des valeurs Gi associées a K1, K2 ou | *| K3, la deuxieme indice est le point representant | *| les noeuds sur le front de la fissure. | *| Exemple : En 2D, on peut tracer l'evolution de | *| mode MI (MI est un objet de type mot valant 'I', | *| 'II') par : DESS (SUPTAB.'EVOLG'.MI); | *| En 3D, on peut tracer l'evolution de mode MI | *| (MI est un objet de type mot valant 'I', 'II', | *| ou 'III') au point P1 en fonction du temps par : | *| DESS (SUPTAB.'EVOLG'.MI.P1); | *| | *| | *| SUPTAB.'CRITERE_DECHARGE' = En cas de calcul élasto-plastique | *| isotrope ou cinématique, éventuellement thermique, on | *| calcul un critère de décharge des contraintes défini par | *| ( si, F = courbe de traction ): crit = F(EPSeq)/ SIGeq. | *| crit = 1. si non-décharge et crit > 1. si décharge. | *| SUPTAB.'CRITERE_DECHARGE' est une table indicée par les | *| temps de calcul. | *| | *| En cas de calcul elasto-dynamique : | *| ----------------------------------- | *| | *| SUPTAB.'G' = Table contenant les valeurs de G indicée par les | *| instants de calculs. | *|=====================================================================| * **** * stockage de la configuration initiale * 'SI' ('EXISTE' SUPTAB 'REPRIS'); IREPRI = SUPTAB.'REPRIS'; 'SINON'; IREPRI = FAUX; 'FINSI'; **** **** **** 'SI' ('>' NBOBJ 1) ; 'REPETER' NBJ1 (NBOBJ - 1); I = I + 1; OBJMOD = OBJMOD 'ET' TABMOD.I; 'FIN' NBJ1; 'FINSI' ; **** ILIN = 'EGA' NBNO1 2; IQUA = 'EGA' NBNO1 3; **** 'MESS' 'ERREUR : ON NE PEUT PAS ENCORE TRAITER LES PROBLEMES'; 'FINSI'; ************************************************** ********* TEST DE COMPABILITE DES DONNEES ******** ************************************************** 'MESS' 'ERREUR : LE SUPPORT GEOMETRIQUE DE MATERIAU EST'; 'FINSI'; 'MESS' 'ERREUR : LE SUPPORT GEOMETRIQUE DE MATERIAU EST'; 'FINSI'; **** 'SI' ('EXIST' SUPTAB 'MODMIXTE'); IMIXT = SUPTAB.'MODMIXTE'; 'SINON'; IMIXT = FAUX; 'FINSI'; 'SI' IMIXT; 'SI' ICOQU; 'MESS' 'ERREUR : ON NE PEUT PAS ENCORE DECOUPER'; 'MESS' 'LES MODES POUR LES ELEMENTS DE COQUE MINCE'; 'FINSI'; 'SI' ('NON' ('EXIST' SUPTAB 'LEVRESUP')); 'ERREUR' 'ON VEUT LA LEVRE SUPERIEURE DE LA FISSURE'; 'FINSI'; 'SI' ('NON' ('EXIST' SUPTAB 'LEVREINF')); 'ERREUR' 'ON VEUT LA LEVRE INFERIEURE DE LA FISSURE'; 'FINSI'; 'SI' ('NON' ('EXIST' SUPTAB 'FONDFISS')); 'ERREUR' 'ON VEUT LE FOND DE LA FISSURE'; 'FINSI'; 'SI' (('NEG' NB1 NB2) 'OU' ('NEG' NB1 NB3)); 'MESS' 'ERREUR : LES LEVRES DE LA FISSURE N EST PAS'; 'MESS' 'COHERENTES AVEC LE MAILLAGE DES OBJETS MODELES'; 'FINSI'; 'FINSI'; *** 'SI' ('NON' ('EXISTE' SUPTAB 'CONTRAINTE')); 'ERREUR' 'IL FAUT DONNER LE CHAMP DE CONTRAINTE'; 'FINSI'; 'SI' ('NON' ('EXISTE' SUPTAB 'DEPLACEMENT')); 'ERREUR' 'IL FAUT DONNER LE CHAMP DE DEPLACEMENT'; 'FINSI'; 'SI' (IPAP 'ET' ('NON' IMIXT)); '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'; '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'; *** IDANS = FAUX; MODINF = 0; MODSUP = 0; 'SI' (IPARAL 'ET' IMIXT); 'REPETER' NBJ1 (NBOBJ - 1); MODSUP = TABMOD.&NBJ1; MODINF = TABMOD.(&NBJ1 + 1); IDANS = VRAI; 'QUITTER' NBJ1; 'FINSI'; MODINF = TABMOD.&NBJ1; MODSUP = TABMOD.(&NBJ1 + 1); IDANS = VRAI; 'QUITTER' NBJ1; 'FINSI'; 'FIN' NBJ1; 'FINSI'; *** 'SI' ('EXISTE' SUPTAB 'GRANDS_DEPLACEMENTS'); IGDEPL = VRAI; 'SI' ('EXISTE' SUPTAB 'TABLE_CH_THETA'); TAB1 = TABLE; TAB1 = SUPTAB.'TABLE_CH_THETA'; 'SINON'; 'MESS' ' IL FAUT DONNER LA TABLE UTILISEE POUR LE CALCUL DE CH_THETA '; 'FINSI'; 'SINON'; IGDEPL = FAUX; 'FINSI'; *** ITHER = ('EXIST' SUPTAB 'TEMPERATURE') 'OU' ('EXIST' SUPTAB 'TREFERENCE'); TESTHER = FAUX ; PASA = FAUX ; *Adaptation eventuelle des donnees issue de PASAPAS SUPTABB = TABLE ; 'SI' IPAP ; 'SI' ('NON' ('EXISTE' SUPTAB 'VITESSE')); *Controle de l'indiçage des tables CONTROP = 'INDEX' (SUPTAB.'CONTRAINTE') ; VALCONT = CONTROP.1 ; PASA = FAUX ; 'SINON' ; PASA = VRAI ; 'SINON' ; 'ERREUR' 'INDICE DE TABLE INCOMPATIBLE' ; 'FINSI' ; 'FINSI' ; 'SI' PASA ; *lecture du chargement 'SI' ('EXISTE' SUPTAB 'CHARGEMENT') ; CHAR1 = SUPTAB.'CHARGEMENT' ; 'SINON' ; 'ERREUR' 'ON VEUT LE CHARGEMENT' ; 'FINSI' ; *lecture des variable de temps 'SI' ('EXISTE' SUPTAB 'TEMPS') ; 'SINON' ; 'ERREUR' 'ON VEUT LA TABLE DES TEMPS SAUVES' ; 'FINSI' ; TSIG = TABLE ;TDEPL = TABLE ;TVARI = TABLE ;TDEFI = TABLE ;I = 0 ; SUPTEM = SUPTAB.'TEMPS' ; SUPCON = SUPTAB.'CONTRAINTE' ; SUPDEP = SUPTAB.'DEPLACEMENT' ; 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; SUPVAR = SUPTAB.'VARINTERNE' ; 'FINSI' ; 'FINSI' ; 'SI' IFLUA ; SUPDFI = SUPTAB.'DEFINELA' ; 'FINSI' ; 'REPETER' BINST N ; I = I + 1 ; TI = SUPTEM.I; TSIG.TI = SUPCON.I; TDEPL.TI = SUPDEP.I; 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; TVARI.TI = SUPVAR.I ; 'FINSI' ; 'FINSI' ; 'SI' IFLUA; TDEFI.TI = SUPDFI.I ; 'FINSI' ; 'FIN' BINST ; SUPTABB.'DEPLACEMENT' = TDEPL ; SUPTABB.'CONTRAINTE' = TSIG ; 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; SUPTABB.'VARINTERNE' = TVARI ; 'FINSI' ; 'FINSI' ; 'SI' IFLUA; SUPTABB.'DEFINELA' = TDEFI ; 'FINSI' ; 'FINSI'; 'SINON' ; SUPTABB.'DEPLACEMENT' = SUPTAB.'DEPLACEMENT' ; SUPTABB.'CONTRAINTE' = SUPTAB.'CONTRAINTE' ; 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; SUPTABB.'VARINTERNE' = SUPTAB.'VARINTERNE' ; 'FINSI' ; 'FINSI' ; 'FINSI'; 'SINON' ; SUPTABB.'DEPLACEMENT' = SUPTAB.'DEPLACEMENT' ; SUPTABB.'CONTRAINTE' = SUPTAB.'CONTRAINTE' ; 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; SUPTABB.'VARINTERNE' = SUPTAB.'VARINTERNE' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * 'SI' ITHER; 'SI' ('NON' ('EXIST' SUPTAB 'TEMPERATURE')) ; 'SI' ('NON' PASA) ; 'ERREUR' 'ON VEUT LA CARTE DE TEMPERATURE'; 'FINSI' ; 'FINSI' ; 'SI' ('NON' ('EXIST' SUPTAB 'TREFERENCE')) ; 'ERREUR' 'ON VEUT LA TEMPERATURE DE REFERENCE'; 'FINSI'; 'SINON' ; 'SI' TESTHER ; 'ERREUR' 'EXISTENCE DE TEMPERATURES: TEMPERATURE DE REFERENCE ?'; 'FINSI' ; 'FINSI'; * *** MODPLA : table indicée par entier pour stocker les modèles *** mécaniques de chaque objet MMODEL. Elle est vide *** si le modèle est élastique ou élastoplastique *** avec une courbe de traction independante de la *** température. Dans le cas contraire la table vaut *** 1 si le modèle est plastique isotrope. Alors une *** nouvelle courbe de traction EPSE-SIGMA est faite. *** 2 si le modèle est plastique cinématique *** 3 si le modèle est plastique parfaite YOUVARI = FAUX; NUVARI = FAUX; ALFVARI = FAUX; MODPLA = TABLE; TABTRA = TABLE; 'REPETER' BCMOD1 NBOBJ; 'SI' ('EGA' TYPYO 'EVOLUTIO'); YOUVARI = VRAI; 'SINON'; 'SI' ((TEST1 '>' 1.E-10) 'ET' ('NON' IPARAL)); YOUVARI = VRAI; 'FINSI'; 'FINSI'; * 'SI' ('EGA' TYPNU 'EVOLUTIO'); NUVARI = VRAI; 'SINON'; 'SI' ((TEST1 '>' 1.E-10) 'ET' ('NON' IPARAL)); NUVARI = VRAI; 'FINSI'; 'FINSI'; * 'SI' ITHER; 'SI' ('EGA' TYPAL 'EVOLUTIO'); ALFVARI = VRAI; 'SINON'; 'SI' ((TEST1 '>' 1.E-10) 'ET' ('NON' IPARAL)); ALFVARI = VRAI; 'FINSI'; 'FINSI'; 'FINSI'; * '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 enlève la courbe de traction si elle depend de *** la temperature (operation trop couteuse pour VARI) 'SI' ('EGA' &BCOM1 1); 'SINON'; 'FINSI'; 'FINSI'; 'FIN' BCOM1; 'FINSI'; 'SINON'; 'SI' ('EXIST' MATI 'SIGY'); 'SI' ('EXIST' MATI 'H'); 'SI' (('EGA' TYPH 'EVOLUTIO') 'OU' ('EGA' TYPSI 'EVOLUTIO')); MODPLA.&BCMOD1 = 2; 'FINSI'; 'SINON'; 'SI' ('EGA' TYPSI 'EVOLUTIO'); MODPLA.&BCMOD1 = 3; 'FINSI'; 'FINSI'; 'FINSI'; 'FINSI'; 'SI' ('EGA' &BCMOD1 1); MATREDU = MATI; 'SINON'; MATREDU = MATREDU 'ET' MATI; 'FINSI'; 'FIN' BCMOD1; MATVARI = YOUVARI 'OU' NUVARI 'OU' ALFVARI *** 'SI' (IMIXT 'ET' MATVARI); 'MESS' 'ERREUR : ON NE PEUT PAS ENCORE DECOUPER LES'; 'FINSI'; *** IPARTI = 'EXIST' SUPTAB 'AVANCE'; *** IINTER = FAUX; 'SI' ('NON' IPARAL); 'SI' ('>' NBOBJ 1); IINTER = VRAI; 'SI' ('NON' ('EXIST' SUPTAB 'INTERFACE')) ; 'ERREUR' 'ON VEUT LA TABLE STOCKANT LES INTERFACES'; 'SINON'; LINTER = SUPTAB.'INTERFACE' ; 'MESS' 'ERREUR : IL CONVIENT DE REMPLIR LES TABLES MODELE'; 'FINSI'; MI1 = LINTER.&BIN1; 'SI' ('NON' (('EGA' NB1 NB2) 'ET' ('EGA' NB3 NB4))); 'MESS' 'PAS COHERENTE AVEC LES OBJETS MODELES.'; 'FINSI'; 'FIN' BIN1; 'FINSI'; 'FINSI'; 'SI' (('EGA' NBOBJ 1) 'ET' ('EXIST' SUPTAB 'INTERFACE')); 'MESS' 'ERREUR : UN SEUL OBJET MODELE NE PERMET'; 'MESS' 'PAS DE PRENDRE EN COMPTE DES INTERFACES.'; 'FINSI'; 'FINSI'; *** 'SI' IFLUA; 'SI' ('NON' ('EXIST' SUPTAB 'LOI')); 'ERREUR' 'IL FAUT PRECISER LA LOI DE FLUAGE UTILISEE'; 'FINSI'; 'SI' ('NON' ('EXIST' SUPTAB 'CONT_INI')); 'ERREUR' 'ON VEUT LA CONTRAINTE AU DEBUT DU FLUAGE'; 'FINSI'; 'SI' ('NON' ('EXIST' SUPTAB 'DEPL_INI')); 'ERREUR' 'ON VEUT LE DEPLACEMENT AU DEBUT DU FLUAGE'; 'FINSI'; 'SI' ('NON' ('EXIST' SUPTAB 'DEFI_INI')); 'ERREUR' 'ON VEUT LA DEFORMATION INELASTIQUE AU DEBUT DU FLUAGE'; 'FINSI'; 'SI' ('NON' ('EXIST' SUPTAB 'DEFINELA')); 'ERREUR' 'ON VEUT LA TABLE DE DEFORMATIONS INELASTIQUES'; 'FINSI'; 'FINSI'; *** 'SI' (IFLUA 'ET' ITHER); 'SI' ('NON' ('EXIST' SUPTAB 'TEMP_INI')); 'ERREUR' 'ON VEUT LA TEMPERATURE AU DEBUT DU FLUAGE'; 'FINSI'; 'FINSI'; *** 'SI' ICOQU; 'SI' ('NON' ('EXIST' MATREDU 'EPAI')); 'MESS' ' COMPOSANTE DONNANT L EPAISSEUR DE LA COQUE'; 'SINON'; 'STRESSES' OBJMOD; 'FINSI'; 'FINSI'; *** IPRES = FAUX; 'SI' PASA ; 'SI' ('EXIST' SUPTAB 'PRESSION') ; 'SI' ('NEG' SUPTAB.'PRESSION' FAUX) ; IPRES = VRAI ; 'FINSI' ; 'FINSI' ; 'SINON' ; 'SI' ('EXIST' SUPTAB 'PRESSION') ; PRESSI = SUPTAB.'PRESSION'; IPRES = VRAI ; 'FINSI' ; 'FINSI' ; *** ENEDEF = TABLE; ENEVON = TABLE; 'SI' ('EXIST' SUPTAB 'ENEDEF'); ENEDEF*'TABLE' = SUPTAB.'ENEDEF'; 'FINSI'; 'SI' ('EXIST' SUPTAB 'ENEVON'); ENEVON*'TABLE' = SUPTAB.'ENEVON'; 'FINSI'; *** 'SI' IPAP; ***Affichage en cas de calcul dynamique**** 'SI' ('EXIST' SUPTAB 'VITESSE') ; 'SINON'; 'FINSI'; 'SINON'; 'FINSI'; ************************************************** *** QUELQUES MOTS POUR SIMPLIFIER L'ECRITURE *** ************************************************** 'FINSI'; 'FINSI'; **** 'SI' IFLUA; 'SI' ITHER; 'SINON'; 'FINSI'; 'SINON'; 'SI' ITHER; 'SI' IMIXT; 'SINON'; 'FINSI'; 'SINON'; 'SI' IMIXT; 'SINON'; 'FINSI'; 'FINSI'; 'SI' IMIXT; 'FINSI'; 'FINSI'; TX2 = 'CHAIN' ' Contribution due au chargement '; TX3 = 'CHAIN' ' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°° '; 'SI' IMIXT; TX2 = 'CHAIN' ' M et J* dus aux chargements F1* et F2* '; TX3 = 'CHAIN' ' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° '; 'FINSI'; ********************************************************* ************ NOM DES COMPOSANTES DE MATERIAUX *********** ********************************************************* *** *** ITYPEF = 99 SI EN ELASTO OU THERMO-ELASTO-PLASTICITE *** ITYPEF = 1 VISCO-PLASTICITE. LOI DE FLUAGE NORTON *** ITYPEF = 2 VISCO-PLASTICITE. LOI DE FLUAGE BLACKBURN *** ITYPEF = 3 VISCO-PLASTICITE. LOI DE FLUAGE RCCMR_316 *** ITYPEF = 4 VISCO-PLASTICITE. LOI DE FLUAGE RCCMR_304 *** ITYPEF = 5 VISCO-PLASTICITE. LOI DE FLUAGE LEMAITRE *** ITYPEF = 6 VISCO-PLASTICITE. LOI DE FLUAGE POLYNOMIAL *** POUR ITYPEF = 1 ET 6 ON A UNE EXPRESSION EXPLICITE *** DE L'INTEGRATION DE LA VITESSE DU FLUAGE SUR LE TEMPS *** ITYPEF = 99; 'SI' IFLUA; TEMP0 = 0.; 'SI' ('EGA' SUPTAB.'LOI' 'NORTON'); ITYPEF = 1; 'FINSI'; 'SI' ('EGA' SUPTAB.'LOI' 'BLACKBURN'); ITYPEF=2; 'FINS'; 'SI' ('EGA' SUPTAB.'LOI' 'RCCMR_316'); ITYPEF=3; 'FINS'; 'SI' ('EGA' SUPTAB.'LOI' 'RCCMR_304'); ITYPEF=4; 'FINS'; 'SI' ('EGA' SUPTAB.'LOI' 'LEMAITRE'); ITYPEF=5; 'FINSI'; 'SI' ('EGA' SUPTAB.'LOI' 'POLYNOMIAL'); ITYPEF=6;'FINS'; 'SI' ('EGA' ITYPEF 99); 'ERREUR' 'LA LOI DE FLUAGE DONNEE EST INCONNUE'; 'FINSI'; 'FINSI'; *************************************************** ********** DEPLACEMENT, GRADIANT INITIAUX ********* *************************************************** *************************************************** ***** INDICE DE TEMPERATURE RANGEE DENA LTHER ***** *************************************************** 'SI' ('NON' PASA) ; 'SI' (ITHER 'ET' IPAP) ; TEPER*'TABLE'= SUPTAB.'TEMPERATURE'; IT = 1 ; 'REPETER' TEPERATU ; IT = IT + 1 ; 'SI' ('EXISTE' ITET IT) ; LTHER = LTHER 'ET' VALTET ; 'SINON' ; 'QUITTER' TEPERATU ; 'FINSI' ; 'FIN' TEPERATU ; LTHER = 'ORDONNER' LTHER ; 'FINSI' ; 'FINSI' ; *************************************************** ********* TABLES POUR STOCKER LES RESULTATS ******* *************************************************** SUPTAB.'G' = TABLE; 'SI' ('NON' ('EXIST' SUPTAB 'CRITERE_DECHARGE')) ; SUPTAB.'CRITERE_DECHARGE' = TABLE ; 'FINSI'; *************************************************** *************** SI REPRISE DE CALCUL ************** *************************************************** 'SI' (IREPRI 'ET' IPAP); NBDEP = NBDEP - NBG ; 'SI' (NBDEP '<EG' 0); 'FINSI'; SIG1 = SUPTAB.'SIG1'; VAR1 = SUPTAB.'VAR1'; VDI1 = SUPTAB.'VDI1'; MAT1 = SUPTAB.'MAT1'; 'FINSI'; 'SI' ICOQU; 'FINSI'; 'SINON'; 'FINSI'; *************************************************** **************** AFFICHAGE DU TITRE ************** *************************************************** 'SI' IPAP; *Affichage du titre dans le cas d'un calcul en dynamique 'SI' ('EXIST' SUPTAB 'VITESSE') ; 'MESS' ' ' TX4; 'MESS' ' Instant ' ' Taux G '; 'SINON'; 'MESS' ' ' TX1; 'MESS'; 'MESS' ' Instant ' TXMECANI TXTERMI TXPRESS MOTCO; 'FINSI'; 'MESS' ' ' TX1; 'MESS'; 'MESS' ' Noeuds ' ' Instant ' TXMECANI TXTERMI TXPRESS MOTCO; 'FINSI'; 'FINSI'; 'SINON'; 'MESS' ' ' TXMECANI TXTERMI TXPRESS MOTCO; 'FINSI'; 'MESS' ' Noeuds ' TXMECANI TXTERMI TXPRESS MOTCO; 'FINSI'; 'FINSI'; ******************************************** *** ZONE OU LE CHAMP THETA N'EST PAS NUL *** ******************************************** 'FINSI'; 'FINSI'; TETA = TETA + DEP000; NORM1 = ((E U1 TETA S)**2) + ((E U2 TETA S)**2); NORM1 = NORM1 + ((E U3 TETA S)**2); 'FINSI'; 'SI' IDANS; 'FINSI'; ******************************************************* * CONDITIONS AUX LIMITES POUR LE DECOUPLAGE DES MODES * * OU LES CONTRAINTES/DEPLACEMENTS POUR LE CALCUL DE G * ******************************************************* 'SI' IMIXT; PM = SUPTAB.'FONDFISS'; DIS1 = (((X1 - X0)**2) + ((Y1 - Y0)**2))**0.5; 'SINON'; DIS1 = (((X1 - X0)**2) + ((Y1 - Y0)**2) + ((Z1 - Z0)**2))**0.5; 'FINSI'; (SUPTAB.'LEVREINF' 'ET' SUPTAB.'LEVRESUP')); DIS1 = (((X1 - X0)**2) + ((Y1 - Y0)**2))**0.5; 'SINON'; (SUPTAB.'LEVREINF' 'ET' SUPTAB.'LEVRESUP')); DIS1 = (((X1 - X0)**2) + ((Y1 - Y0)**2) + ((Z1 - Z0)**2))**0.5; 'FINSI'; 'FINSI'; 'FINSI'; ****************************************** * FISSURE DANS LE REPERE GLOBAL ET LOCAL * ****************************************** * Inclinaison de la fissure par rapport à l'axe globale 'SI' ('EGA' P_SUP PM); 'FINSI'; 'SI' ('EGA' P_INF PM); 'FINSI'; PHI1 = 'ATG' (YG0 - ((YP1 + YP2)/2.)) (XG0 - ((XP1 + XP2)/2.)); * Coordonnées dans le repère général et local XL1 = ((XG1 - XG0)*('COS' PHI1)) + ((YG1 - YG0)*('SIN' PHI1)); YL1 = ((YG1 - YG0)*('COS' PHI1)) - ((XG1 - XG0)*('SIN' PHI1)); TETA1 = 'ATG' YL1 (XL1 + 1.E-30); R1 = (((XL1*XL1) + (YL1*YL1))**0.5) + 1.E-20; 'SI' (('<' VA1 0.) 'ET' ('>' VA2 0.)); PPPP = P_SUP; P_SUP = P_INF; P_INF = PPPP; MMDD = MODSUP; MODSUP = MODINF; MODINF = MMDD; 'FINSI'; 'SI' (('EGA' XP1 XP2 1.E-30) 'ET' ('EGA' YP1 YP2 1.E-30)); TETA1 = TETA1 - TETA_S - TETA_F; 'SI' (('>' VA1 0.) 'ET' ('<' VA2 0.)); TETA1 = TETA1 + ((TETA_S*0.) + 180.) + ((TETA_F*0.) - 180.); 'SINON'; TETA1 = TETA1 + ((TETA_F*0.) + 180.) + ((TETA_S*0.) - 180.); 'FINSI'; 'FINSI'; TETAR1 = TETA1*VALPI/180.; 'SI' IDANS; 'FINSI'; 'FINSI'; ************************************************** * SOLUTION DE CONTRAINTE/DEPLACEMENT DU PROBLEME * ************************************************** 'SI' ('NON' IPAP); NBDEP = 1; 'SINON'; SIG*'TABLE' = (SUPTABB.'CONTRAINTE') ; DEP*'TABLE' = SUPTABB.'DEPLACEMENT' ; 'SI' ('EXIST' SUPTAB 'VITESSE') ; VIT*'TABLE' = SUPTAB.'VITESSE' ; 'FINSI' ; 'SI' IFLUA; DFI*'TABLE' = SUPTABB.'DEFINELA'; 'FINSI'; 'SI' ('EXIST' SUPTAB 'VARINTERNE'); VAR*'TABLE' = SUPTABB.'VARINTERNE'; 'SINON'; VAR = TABLE; 'FINSI'; 'FINSI'; *********************************************** *********************************************** ********* BOUCLE SUR LE PAS DE CALCUL ********* *********************************************** *********************************************** IABC = 0 ; 'SI' IMIXT; NBDEP = 1; 'FINSI'; '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.;S300 = 0.; S500 = 0.; *************************************************** ***** DEPLACEMENT,CONTRAINTE A L INSTANT INST ***** *************************************************** 'SI' IPAP; IABC = NBG + IABC ; INST = IDEP.IABC ; *Calcul du temps reel pour le calcul en dynamique 'SI' ('EXIST' SUPTAB 'VITESSE') ; TDYN = SUPTAB.'TDYN'; TEMP1 = TDYN.INST ; 'FINSI' ; ************************************************ 'SI' ('EXIST' VAR INST); 'SINON'; 'FINSI'; 'SI' IFLUA; 'SI' ('EGA' IABC 1) ; DELTAT = IDEP.IABC - TEMP0; DEPINT = (DEP.(IDEP.IABC)) - (SUPTAB.'DEPL_INI'); VITDFI = (DFI.(IDEP.IABC)) - (SUPTAB.'DEFI_INI'); 'FINSI'; 'SI' (IABC '>' 1); DELTAT = (IDEP.IABC) - (IDEP.(IABC - 1)); DEPINT = (DEP.(IDEP.IABC)) - (DEP.(IDEP.(IABC - 1))); VITDFI = (DFI.(IDEP.IABC)) - (DFI.(IDEP.(IABC - 1))); 'FINSI'; 'SINON'; ****************************************** *Cas du calcul en dynamique 'SI' ('EXIST' SUPTAB 'VITESSE') ; 'FINSI' ; ****************************************** 'FINSI'; 'FINSI'; **************************************************** ******* cas de calculs en grands deplacements ****** **************************************************** 'SI' IGDEPL; 'FORM' DEPINT; 'FORM' CONFIG0; 'FINSI'; ************************************ ****** Signe des FIC K1 et K2 ****** ************************************ DUXL1 = (DUXG1*('COS' PHI1)) + (DUYG1*('SIN' PHI1)); DUYL1 = (DUYG1*('COS' PHI1)) - (DUXG1*('SIN' PHI1)); 'FINSI'; *************************************************** *********** TEMPERATURE A L INSTANT INST ********** *************************************************** 'SI' ITHER ; 'SI' IPAP; 'SI' PASA ; 'SINON' ; K = 0 ; 'REPETER' BLOC1 NBTET ; K = K + 1 ; 'SI' (NBRE '>EG' INST) ; 'QUITTER' BLOC1 ; 'FINSI' ; 'FIN' BLOC1 ; K = K - 1 ; 'SI' (> ('ABS' ((NBRE-INST)/INST)) 0.001) ; D1 = INST - NBRE1 ; D2 = NBRE2 - INST ; 'SINON'; 'FINSI'; 'FINSI' ; 'SI' IFLUA; TEP1 = TEPINT; 'SI' ('EGA' IABC 1) ; DELTAT = IDEP.IABC - TEMP0; TEPINT = TEPINT - (SUPTAB.'TEMP_INI') + 'FINSI'; 'SI' (IABC '>' 1); DELTAT = (IDEP.IABC) - (IDEP.(IABC - 1)); 'FINSI'; TEPINT = TEPINT / DELTAT ; 'FINSI'; 'SINON'; 'FINSI'; 'FINSI'; *************************************************** ************ MATERIAU A L INSTANT INST ************ *************************************************** 'SI' (MATVARI 'ET' ITHER); 'SINON'; MAT1 = MATREDU; 'FINSI'; **************************************************** *** SOLUTIONS AUXILAIRES EN DECOUPLAGE DES MODES *** **************************************************** NBMIXT = 1; IM = 0; 'SI' IMIXT; NBMIXT = 2; * Constantes physiques de bi-matériaux 'SI' ('NON' IDANS); VYO_2 = VYO_1; VNU_2 = VNU_1; 'SINON'; 'FINSI'; KSI_1 = (3. - (4. * VNU_1)); KSI_2 = (3. - (4. * VNU_2)); KSI_1 = (3. - VNU_1) / (1. + VNU_1); KSI_2 = (3. - VNU_2) / (1. + VNU_2); 'FINSI'; MU_1 = VYO_1/(2.*(1. + VNU_1)); MU_2 = VYO_2/(2.*(1. + VNU_2)); VA1 = (KSI_1/MU_1) + (1./MU_2); VA2 = (KSI_2/MU_2) + (1./MU_1); EPS1 = (1./(2.*VALPI))*(LOG (VA1/VA2)); COSH1 = VALPI*EPS1; COSH1 = (('EXP' COSH1) + ('EXP' (COSH1*(-1.))))/2.; VA1 = (MU_1 + (KSI_1*MU_2))*(MU_2 + (KSI_2*MU_1)); VA2 = MU_1*MU_2*((MU_1*(1. + KSI_2)) + (MU_2*(1. + KSI_1))); C_MATE = (COSH1*COSH1*VA1)/(4.*VA2); SUPTAB.'C_MATE' = C_MATE; EPSLG_R = EPS1*('LOG' R1); VA1 = 'COS' (EPSLG_R*180./VALPI); VA2 = 'SIN' (EPSLG_R*180./VALPI); BTA1 = ((0.5*VA1) + (EPS1*VA2))/(0.25 + (EPS1*EPS1)); BTAPM1 = ((0.5*VA2) - (EPS1*VA1))/(0.25 + (EPS1*EPS1)); DTA_1 = 'EXP' (0. - ((VALPI - TETAR1)*EPS1)); DTA_2 = 'EXP' ((VALPI + TETAR1)*EPS1); GAM_1 = (KSI_1*DTA_1) - (DTA_1**(-1.)); GAM_2 = (KSI_2*DTA_2) - (DTA_2**(-1.)); GAMPM_1 = (KSI_1*DTA_1) + (DTA_1**(-1.)); GAMPM_2 = (KSI_2*DTA_2) + (DTA_2**(-1.)); GTAR1 = EPSLG_R + (TETAR1*0.5); COS2 = 'COS' (TETA1/2.); SIN2 = 'SIN' (TETA1/2.); D_1 = (BTA1*GAM_1*COS2) + (BTAPM1*GAMPM_1*SIN2); D_2 = (BTA1*GAM_2*COS2) + (BTAPM1*GAMPM_2*SIN2); DPM_1 = (BTAPM1*GAM_1*COS2) - (BTA1*GAMPM_1*SIN2); DPM_2 = (BTAPM1*GAM_2*COS2) - (BTA1*GAMPM_2*SIN2); CVA_1 = ('SIN' TETA1)*('SIN' (GTAR1*180./VALPI)); CVA_2 = ('SIN' TETA1)*('COS' (GTAR1*180./VALPI)); COE_1 = ((R1/(2.*VALPI))**0.5)/(4.*MU_1); COE_2 = ((R1/(2.*VALPI))**0.5)/(4.*MU_2); 'FINSI'; NBMIXT = 2; 'FINSI'; 'FINSI'; 'REPETER' BOUCMIXT NBMIXT; IM = IM + 1; 'SI' IMIXT; 'SI' (IM 'EGA' 1); UX_1 = COE_1*(D_1 + (2.*DTA_1*CVA_1)); UX_2 = COE_2*(D_2 + (2.*DTA_2*CVA_1)); UY_1 = (-1.)*COE_1*(DPM_1 + (2.*DTA_1*CVA_2)); UY_2 = (-1.)*COE_2*(DPM_2 + (2.*DTA_2*CVA_2)); 'FINSI'; 'SI' (IM 'EGA' 2); UX_1 = (-1.)*COE_1*(DPM_1 - (2.*DTA_1*CVA_2)); UX_2 = (-1.)*COE_2*(DPM_2 - (2.*DTA_2*CVA_2)); UY_1 = (-1.)*COE_1*(D_1 - (2.*DTA_1*CVA_1)); UY_2 = (-1.)*COE_2*(D_2 - (2.*DTA_2*CVA_1)); 'FINSI'; * Champ déplcement dans le repère local et général 'SI' ('NON' IDANS); UL1 = UX_1 * 1.; UL2 = UY_1 * 1.; 'SINON'; 'FINSI'; UG1 = (UL1*('COS' PHI1)) - (UL2*('SIN' PHI1)); UG2 = (UL1*('SIN' PHI1)) + (UL2*('COS' PHI1)); 'SINON'; IPRES = VRAI; LSUP = SUPTAB.'LEVRESUP'; LINF = SUPTAB.'LEVREINF'; IPRES = FAUX; 'FINSI'; 'SI' (IM 'EGA' 1); PRESSI = F11 + F21; 'FINSI'; 'SI' (IM 'EGA' 2); 'FINSI'; 'SI' (IM 'EGA' 3); 'FINSI'; 'FINSI'; SUPTAB.'G'.MOTMIX = TABLE; ITHER = FAUX; *************************************************** ************* APPEL A LA PROCEDURE T_PITA ********* *************************************************** TAB = TABLE; TAB.'DEPLACEMENT' = SUPTABB.'DEPLACEMENT'; TAB.'CONTRAINTE'= SUPTABB.'CONTRAINTE'; TAB.'CHTHETA' = SUPTAB.'CHTHETA'; TAB.'DEPL_AUXI' = DEPINT; TAB.'CONT_AUXI' = SIGF; TAB.'PRES_AUXI' = PRESSI; 'SI' ('EXIST' SUPTAB 'PARALELLE'); TAB.'PARALELLE' = SUPTAB.'PARALELLE'; 'FINSI'; 'SI' ('EXIST' SUPTAB 'PRESSION'); TAB.'PRESSION' = SUPTAB.'PRESSION'; 'FINSI'; 'SI' IPARTI; TAB.'AVANCE' = SUPTAB.'AVANCE'; 'FINSI'; 'SI' (('EXIST' SUPTAB 'TEMPERATURE') 'OU' TESTHER); 'SI' TESTHER; TAB.'TEMPERATURE' = SUPTAB.'CHARGEMENT'; 'SINON'; TAB.'TEMPERATURE' = SUPTAB.'TEMPERATURE'; 'FINSI'; TAB.'TREFERENCE' = SUPTAB.'TREFERENCE'; 'FINSI'; T_PITETA TABMOD MATERI TAB; 'FINSI'; *************************************************** ************ GRADIENT A L INSTANT INST ************ *************************************************** 'SI' ITHER; 'FINSI'; ******************************************************** * SI LA COURBE DE TRACTION DEPEND DE LA TEMPERATURE ON * * CALCULE LA VARIATION DE CONTRAINTE DE VON-MISES LORS * * D'UNE AUGMENTATION (DETATE) DE LA TEMPERATURE A INST * ******************************************************** ('NON' ('EXIST' ENEDEF INST))); DETATE = 1.; DETAVM = VMI1 * 0.; 'REPETER' BCMOD2 NBOBJ; 'SI' ('EGA' MODPLA.&BCMOD2 1); 'FINSI'; 'SI' (('EGA' MODPLA.&BCMOD2 2) 'OU' ('EGA' MODPLA.&BCMOD2 3)); 'SI' ('EGA' MODPLA.&BCMOD2 2); 'FINSI'; 'FINSI'; DETAVM = DETAVM + ((VM2 - VM1) / DETATE); 'FINSI'; 'FIN' BCMOD2; 'FINSI'; **************************************************** ******* EN CAS DE CALCUL EN VISCO_PLASTICITE ******* **************************************************** 'SI' IFLUA; 'SI' ('EGA' ITYPEF 1); 'FINSI'; 'SI' ('EGA' ITYPEF 6); 'FINSI'; 'FINSI'; ******************************************************* **** CRITERE DE DECHARGE DES CONTRAINTES **** ******************************************************* *** *** EVALUATION EN ELASTO-PLASTICITE OU THERMO-ELASTO-PLASTICITE *** PAR COMPARAISON AVEC UN CALCUL EN ELASTICITE NON-LINEAIRE *** EN PRENANT POUR REFERENCE LES CONTRAINTES DE VON-MISES DU *** CALCUL RENDU PAR PASAPAS ET LES CONTRAINTES EQUIVALENTES LUES *** SUR LES COURBES DE TRACTION *** 'SI' ('NON' ('EXIST' (SUPTAB.'CRITERE_DECHARGE') INST)) ; 'SI' (('NON' ('EXIST' ENEDEF INST)) 'ET' ('EGA' ITYPEF 99) 'ET' IPAP); EXISCRIT = FAUX ; VMITOT1 = 0. ; VMITOT2 = 0. ; 'REPETER' BCMOD0 NBOBJ; ************ *** MODPLA : table indicée par entier pour stocker les modèles *** 1 si le modèle est plastique isotrope. Alors une *** nouvelle courbe de traction EPSE-SIGMA est faite. *** 2 si le modèle est plastique cinématique EXISCRIT = VRAI ; 'SI' ('EGA' MODPLA.&BCMOD0 1); * *modèle est plastique isotrope. on utilise la courbe de traction TABT * *VMIS1 = contraintes de Von-Mises en elastoplastique EPSTOT = EPELAST + EPSET ; * *VMIS2 = contraintes déduites des déformations équivalentes par la co EPSTOT 'STRESSES' 'SCALAIRE'; 'FINSI'; 'SI' ('EGA' MODPLA.&BCMOD0 2) ; * *modèle est plastique cinematique, cas ou SIGY et H sont des évolution 'FINSI'; 'SI' (('EGA' MODPLA.&BCMOD0 1) 'OU' ('EGA' MODPLA.&BCMOD0 2)); VMIS1P = VMIS1 * MSQ ; VMIS2P = VMIS2 * MSQ ; 'SI' ('EGA' &BCMOD0 1) ; VMITOT1 = VMIS1S ; VMITOT2 = VMIS2S ; 'SINON' ; VMITOT1 = VMITOT1 + VMIS1S ; VMITOT2 = VMITOT2 + VMIS2S ; 'FINSI' ; 'FINSI'; 'SINON'; *** modèle élastoplastique et modèle plastique cinématique *** avec caractéristiques independantes de la température * *extraction de la courbe de traction du modele MODI * *VMIS1 = contraintes de Von-Mises en elastoplastique 'TYPE' 'SCALAIRE'; EPSTOT = EPELAST + EPSET ; * *VMIS2 = contraintes déduites des déformations équivalentes par la courb 'SINON'; 'SI' (('EXIST' MATI 'SIGY') 'ET' ('EXIST' MATI 'H')) ; * *modèle est plastique cinematique traité ici séparément du cas ou SIGY e * *c'est inutile car MAT1 est déja instantié en température mais il faudra * *MODPLA dans son ensemble avec ZONE et une identification de automatique 'FINSI'; 'FINSI'; EXISCRIT = VRAI ; VMIS1P = VMIS1* MSQ ; VMIS2P = VMIS2 * MSQ ; VMITOT1 = VMITOT1 + VMIS1S ; VMITOT2 = VMITOT2 + VMIS2S ; 'FINSI' ; 'FINSI'; 'FIN' BCMOD0; 'SI' EXISCRIT; 'SI' ('EGA' VMITOT1 0.) ; SUPTAB.'CRITERE_DECHARGE'.INST = 1.0000 ; 'SINON' ; * MESS 'VMITOT1 = ' VMITOT1 ; * MESS 'VMITOT2 = ' VMITOT2 ; SUPTAB.'CRITERE_DECHARGE'.INST = (VMITOT2/VMITOT1) ; 'FINSI'; 'FINSI'; 'FINSI'; 'FINSI'; ******************************************************* **** ENERGIE DE DEFORMATION ELASTIQUE ET PLASTIQUE **** ******************************************************* *** *** DENSITE D'ENERGIE EN ELASTO OU THERMO-ELASTO-PLASTICITE ET *** DENSITE D'ENERGIE LIEE A LA VARIATION DE COURBE DE TRACTION *** 'SI' (('NON' ('EXIST' ENEDEF INST)) 'OU' IMIXT); IAVAN = VRAI; 'SI' ('EGA' ITYPEF 99); 'SI' (IPAP 'ET' ('NON' IMIXT)); 'SI' (('EGA' IABC 1) 'ET' ('NON' IREPRI)) ; 'SI' ICOQU; VMI1 = VMI1*OBJMOD EPAICH; 'FINSI'; WPLAS = 0.5*VMI1*(E VARF 'EPSE'); WVMIS = 0.5*DETAVM*(E VARF 'EPSE') ; 'FINSI'; 'SINON' ; 'SI' ICOQU; VMI1 = VMI1*OBJMOD EPAICH; 'FINSI'; WPLAS = WPLAS + (VMI1*(E (VARF - VAR1) 'EPSE')); WVMIS = WVMIS + ((0.5*(DETAV1 + DETAVM))* (E (VARF - VAR1) 'EPSE')); 'FINSI'; 'FINSI' ; ENERM = WELAS + WPLAS; SIG1 = SIGF; VAR1 = VARF; 'FINSI'; 'SINON'; ENERM = WELAS; IAVAN = FAUX; 'FINSI'; 'FINSI'; *** *** DENSITE D'ENERGIE POUR LES FLUAGES DONT ON A UNE *** EXPRESSION EXPLICITE DE L'INTEGRATION SUR LE TEMPS *** 'SI' ('EGA' ITYPEF 1); UN1 = CHAF1 * (CHAF1 ** (-1.)); ENERM = (CHAF2*((CHAF2 + UN1)**(-1.)))*CHAF1* (VMI1**COE1)*CHAF3*(INST**(COE2 - 1)); 'SI' ICOQU; ENERM = ENERM*OBJMOD EPAICH; 'FINSI'; 'FINSI'; 'SI' ('EGA' ITYPEF 6); ENERM1 = (1./2.)*CHAF1*(VMI1**2.); ENERM2 = (2./3.)*CHAF2*(VMI1**3.); ENERM3 = (3./4.)*CHAF3*(VMI1**4.); ENERM = ENERM1 + ENERM2 + ENERM3; 'SI' ICOQU; ENERM = ENERM*OBJMOD EPAICH; 'FINSI'; 'FINSI'; *** *** ON N'A PAS UNE EXPRESSION EXPLICITE DE *** L'INTEGRATION DU FLUAGE SUR LE TEMPS *** 'SI' (('>' ITYPEF 1) 'ET' ('<' ITYPEF 6)); SIGMOY = 0.5*(SIG1 + SIGF); 'SI' (('EGA' IABC 1) 'ET' ('NON' IREPRI)); 'SINON' ; 'FINSI' ; SIG1 = SIGF; VDI1 = VITDFI; 'FINSI'; *** *** ON STOCKE L'ENEGIE DANS UNE TABLE *** 'SI' IPAP; ENEDEF.INST = ENERM; ENEVON.INST = WVMIS; 'FINSI'; 'FINSI'; *** *** SI L'ENEGIE EST DEJA CALCULEE ON LE RESTITUE *** 'SINON'; IAVAN = FAUX; ENERM = ENEDEF.INST; WVMIS = ENEVON.INST; 'FINSI'; 'FINSI'; **************************************************** ********** RECUPERATION DU POINT A AVANCER ********* **************************************************** 'SI' (IPAP 'ET' ('NON' IMIXT)); SUPTAB.'G'.INST = TABLE; 'FINSI'; TTETA*'TABLE' = SUPTAB.'CHTHETA'; INT = 'INDEX' TTETA; 'SI' IPARTI; 'SINON'; PMA = SUPTAB.'AVANCE'; NBOU = 2; 'FINSI'; 'SINON'; 'FINSI'; 'FINSI'; NBOU = 1; 'FINSI'; ************************************************** ******** BOUCLE SUR LES POINTS A AVANCER ******* ************************************************** 'REPETER' BCNOEU NBOU; 'SI' (&BCNOEU 'EGA' NBOU); 'SINON'; PM = INT.&BCNOEU; 'SI' IPARTI; 'SINON'; PM = SUPTAB.'AVANCE'; 'FINSI'; 'FINSI'; 'FINSI'; TETA = TTETA.PM; 'FINSI'; TETA = SUPTAB.'CHTHETA'; 'FINSI'; ************************************************** ************* GRADIANT DU CHAMP THETA ************ ************************************************** TETA = TETA + DEP000; DIVTETA = (E GR1 TETAGR S)+(E GR5 TETAGR S)+(E GR9 TETAGR S); ************************************************** **** LES COMPOSANTES DU CHAMP THETA EN MCHAML **** ************************************************** 'FINSI'; ******************************************************** *********** SI LE MATERIAU N'EST PAS CONSTANT ********** *** S60 = 0.5*(grad D)*THETA*(EPSI elas)*(EPSI elas) *** ********* S70 = Tr(sigma)*T*(Grad Alpha)*THETA ********* ******************************************************** ***Détermination de rho en cas de calcul en dynamique*** 'SI' ('EXIST' SUPTAB 'VITESSE') ; 'FINSI'; *********************************************** 'SI' MATVARI; *** Le coefficient de Poisson est constant *** NU1 = E NU1 S 'NU'; ****** Gradient de Module d'young ****** 'SI' YOUVARI; YOUGR = GRA000; I = 0; 'REPETER' NBJ2 NBOBJ; I = I + 1; 'FIN' NBJ2; YOU1 = ((E GR1 YOUGR S)*OBJMOD TETX) + ((E GR2 YOUGR S)*OBJMOD TETY); YOU1 = YOU1 + ((E GR3 YOUGR S)*OBJMOD TETZ); 'FINSI'; YOU1 = E YOU1 S 'YOUN'; 'FINSI'; ****** Gradient de Coefficient de Dilatation ****** 'SI' (ITHER 'ET' ALFVARI); ALFGR = GRA000; I = 0; 'REPETER' NBJ3 NBOBJ; I = I + 1; 'FIN' NBJ3; ALF1 = ((E GR1 ALFGR S)*OBJMOD TETX) + ((E GR2 ALFGR S)*OBJMOD TETY); ALF1 = ALF1 + ((E GR3 ALFGR S)*OBJMOD TETZ); 'FINSI' ; ALF1 = E ALF1 S 'ALPH'; OBJMOD ('THETA' OBJMOD TEPINT DMAT) DMAT)); 'FINSI'; 'FINSI'; *********************************************** ******** S40 = Tr(sigma)*(Grad T)*THETA ******* *********************************************** 'SI' ITHER; TEMU = ((E GR1 TEPEGR S)*OBJMOD TETX) + ((E GR2 TEPEGR S)*OBJMOD TETY) ; TEMU = TEMU + ((E GR3 TEPEGR S)*OBJMOD TETZ); 'FINSI' ; 'FINSI'; **************************************************** ********* S120 = wvmis*(Grad T)*THETA avec ********* * wvmis = SOME d(Von_mises)/d(Temperature) d(EPSE) * **************************************************** 'FINSI'; ********************************************************* *** Contribution due a la force au fond de la fissure *** ***************** S50 = F*(grad U)*THETA **************** ********************************************************* 'SI' IPRES ; 'SI' ('NON' IMIXT); 'SI' PASA ; 'SINON' ; 'SI' ('EGA' MOC1 'CCHARGEME'); 'SINON'; 'FINSI'; 'FINSI' ; 'SINON' ; 'FINSI' ; DEPLX = ((E GR1 GRADCH S)*(E U1 TETA S)) + ((E GR2 GRADCH S)*(E U2 TETA S)) ; DEPLY = ((E GR4 GRADCH S)*(E U1 TETA S)) + ((E GR5 GRADCH S)*(E U2 TETA S)) ; DEPLX = DEPLX + ((E GR3 GRADCH S)*(E U3 TETA S)); DEPLY = DEPLY + ((E GR6 GRADCH S)*(E U3 TETA S)); DEPLZ = ((E GR7 GRADCH S)*(E U1 TETA S)) + ((E GR8 GRADCH S)*(E U2 TETA S)) + ((E GR9 GRADCH S)*(E U3 TETA S)) ; 'FINSI' ; 'SI' ICOQU ; BXX = E 'BX,X' GRAFCH S; BXY = E 'BX,Y' GRAFCH S; BYX = E 'BY,X' GRAFCH S; BYY = E 'BY,Y' GRAFCH S; (BXY*(E 'UY' TETA S)) ); (BYY*(E 'UY' TETA S)) ); DEP0 = DEP000 + DEPFX + DEPFY; 'FINSI' ; 'FINSI'; ************************************************** **** Contribution due a l'energie mecanique ****** ************** S10 = w*(div THETA) *************** ******* S20 = sigma*(grad U)*(grad THETA) ******** ************************************************** 'SI' ICOQU; (GRADEP*OBJMOD TETAGR) (GRADEF*OBJMOD TETAGR)) ; 'SINON'; (GRADEP*OBJMOD TETAGR)) ; 'FINSI'; **************************************************** ** Calcul des termes supplementaires en dynamique ** **************************************************** 'SI' ('EXIST' SUPTAB 'VITESSE') ; ATT5 = ((E U1 VITF)**2) + ((E U2 VITF)**2) ; ATT61 = ((E GR1 GRADEP 'SCAL')*TETX) + ((E GR2 GRADEP 'SCAL')*TETY) ; ATT62 = ((E GR4 GRADEP 'SCAL')*TETX) + ((E GR5 GRADEP 'SCAL')*TETY) ; ATT6 = ((E U1 VITF 'SCAL')*ATT61) + ((E U2 VITF 'SCAL')*ATT62) ; 'SI' ('EGA' IABC 1); TEMP22 = TEMP1; S401 = S400; S500 = S400; 'SINON' ; 'SI' ('EGA' IABC 2); * ** calcul du pas de temps DT en dynamique * DT1 = TEMP1 - TEMP22; 'FINSI'; S500 = (S400 - S401) / DT1 ; S401 = S400; 'FINSI' ; 'FINSI'; ******************************************************* ** Terme supplementaire en cas de materiaux composite * ********* integrale sur la ligne d'interface ********** ************ S100 = (W(b) - W(a))*TETA(x) ************* ** S110 = SIGF*n*[ (dU/dX)(b) - (dU/dX)(a) ]*TETA(x) ** ****** SIGF*n = Force agissant sur l'interface ******** ******************************************************* 'SI' IINTER ; I = 0; 'REPETER' NBJ4 (NBOBJ - 1); I = I + 1; *** ((ENRMBL - ENRMAL) * OBJINT TETXLC)); *** AAAA1 = (SIXXL * OBJINT (UXXBL - UXXAL)) + (SIXYL * OBJINT (UYXBL - UYXAL)); 'FIN' NBJ4; 'FINSI'; ************************************************** ******** RASSEMBLAGE DE DIFFERENTS TERMES ******** ************************************************** GMCANI = S20 - S10 - S60 - S100 + S110 ; GTERMI = S40 + S70 - S120 ; GPRESS = 0. - S50 ; *Regroupement des termes en cas de calcul en dynamique* 'SI' ('EXIST' SUPTAB 'VITESSE'); GDYN = S300 + S500 ; GTOTA = GMCANI + GTERMI + GPRESS + GDYN ; 'SINON'; GTOTA = GMCANI + GTERMI + GPRESS ; 'FINSI'; *************************************************** ****** STOCKAGE DES RESULTATS DANS SUPTAB.'G' ***** *************************************************** C1 = C GMCANI ' '; C2 = C GTERMI ' '; C3 = C GPRESS ' '; C4 = C GTOTA; 'SI' IPAP; **Affichage de G dans le cas d'un calcul en dynamique** 'SI' ('EXIST' SUPTAB 'VITESSE') ; 'MESS' INST' 'GTOTA; SUPTAB.'G'.INST = GTOTA; 'FINSI'; ******************************************************* 'SINON'; 'FINSI'; 'SI' IMIXT; 'MESS' MOJET1 C1 C2 C3 C4; VA1 = ((TPI.(INN.&BB1))**2) / (4.* GTOTA); SUPTAB.'G'.MOTMIX.(INN.&BB1) = VA1; 'FIN' BB1; 'SINON'; SUPTAB.'G'.INST = GTOTA; 'FINSI'; 'FINSI'; 'SI' IMIXT; 'MESS' NUNOE MOJET1 C1 C2 C3 C4; PM = IND2.&BB1; T1 = IND1.&BB2; 'SI' ('NON' ('EXIST' (SUPTAB.'G'.MOTMIX) T1)); SUPTAB.'G'.MOTMIX.T1 = TABLE; 'FINSI'; VA1 = ((TPI.T1.PM)**2) / (4.* GTOTA); SUPTAB.'G'.MOTMIX.T1.PM = VA1; 'FIN' BB2; 'FIN' BB1; 'SINON'; SUPTAB.'G'.INST.PM = GTOTA; 'FINSI'; 'FINSI'; 'FINSI'; 'SINON'; 'MESS' C1 C2 C3 C4; 'SI' IMIXT; SUPTAB.'G'.MOTMIX = (TPI**2) / (4.* GTOTA); 'SINON'; SUPTAB.'G' = GTOTA; 'FINSI'; 'FINSI'; 'MESS' NUNOE C1 C2 C3 C4; 'SI' IMIXT; VA1 = ((TPI.(INN.&BB1))**2) / (4.* GTOTA); SUPTAB.'G'.MOTMIX.(INN.&BB1) = VA1; 'FIN' BB1; 'SINON'; SUPTAB.'G'.PM = GTOTA; 'FINSI'; 'FINSI'; 'FINSI'; 'MENA'; 'FIN' BCNOEU; 'MENA'; 'SI' (IPAP 'ET' (NBOU '>' 1)); 'FINSI'; 'SI' (IPAP 'ET' (NBOU 'EGA' 1)); 'SI' (('ABS' ((&BOUCEXT/10) - (&BOUCEXT/10.))) '<' 1.D-10); 'FINSI'; 'FINSI'; 'FIN' BOUCMIXT; 'FIN' BOUCEXT ; **************************************************** ********* FIN BOUCLE SUR LE PAS DE CALCUL ********* **************************************************** **************************************************** **** STOCKAGE DES RESULTATS DANS SUPTAB.'EVOLG' **** **************************************************** 'SI' IPAP; ***Affichage de G pour le calul en dynamique**** 'SI' ('EXIST' SUPTAB 'VITESSE') ; 'FINSI'; ************************************************* 'SINON'; SUPTAB.'EVOLG' = TABLE; 'TITRE' CHA1; 'SI' IMIXT; T1 = IND2.&BB2; 'FIN' BB2; 'FIN' BB1; 'SINON'; T1 = IND1.&BB1; 'FIN' BB1; 'FINSI'; 'FINSI'; 'SI' IMIXT; MOT1 = IND1.&BB1; SUPTAB.'EVOLG'.MOT1 = TABLE; 'SINON'; 'FINSI'; T1 = IND2.&BB3; 'FIN' BB3; 'FIN' BB2; 'FIN' BB1; 'SINON'; 'SINON'; 'FINSI'; T1 = IND1.&BB2; 'FIN' BB2; 'FIN' BB1; 'FINSI'; 'FINSI'; 'FINSI'; 'FINSI'; ******************************************************** **** STOCKAGE POUR UNE EVENTUELLE REPRISE DE CALCUL **** ******************************************************** 'SI' (IPAP 'ET' IAVAN); SUPTAB.'ENEDEF' = ENEDEF; SUPTAB.'ENEVON' = ENEVON; 'FINSI'; SUPTAB.'SIG1' = SIG1 ; SUPTAB.'VAR1' = VAR1 ; SUPTAB.'VDI1' = VDI1 ; SUPTAB.'MAT1' = MAT1 ; 'FINSI'; 'FINPROC' SUPTAB;
© Cast3M 2003 - Tous droits réservés.
Mentions légales