* fichier : plaque_gurson_2.dgibi ******************************************************************************************************** * Dans la note CEA DMT 96-566, le rapport de densite est deduit de l'expression lineaire de la variation de volume: * trace(epsilon)=dV/V0 * avec: V le volume total, V0 le volume total initial et epsilon la deformation totale * On en deduit: V/V0=1+trace(epsilon) * Puis le rapport de densite RHO=V0/V=1/(1+trace(epsilon)) * Cette expression n'est pas imposée dans l'article de Needleman et Tvergaard de réference * "AN ANALYSIS OF DUCTILE RUPTURE MODES AT A CRACK TIP" * A. NEEDLEMAN, V. TVERGAARD, * J. Mech. Phys. Solids Vol. 35, No. 2, pp. 151-183, 1987 *--------------------------------------------- * Si on exprime la variation de volume par son expression logarithmique: * trace(depsilon)=dln(V) * avec depsilon la variation de la deformation totale et dln(V) la variation du logarithme du volume V * On en deduit: ln(V/V0)=trace(epsilon) * Puis le rapport de densite RHO=exp(-trace(epsilon)) * Cette expression donne de meilleurs résultats pour les très forts taux de déformation testés dans * ce cas test. *========================================================================================================= * PLAQUE CARREE SOUMISE A UN DEPLACEMENT IMPOSE SUR 2 DE SES COTES * - Le volume de la plaque est imposee dans les calculs *========================================================================================================= 'OPTI' 'DIME' 2 'MODE' 'PLAN' 'DEFO' 'ELEM' 'QUA8'; 'OPTI' 'ECHO' 1; igraph = FAUX ; *---> Maillage xL0 = 1.E-3; P1 = 0. 0.; P2 = xL0 0.; P3 = xL0 xL0; P4 = 0. xL0; LL1 = 'DROI' 1 P1 P2; LL2 = 'DROI' 1 P2 P3; LL3 = 'DROI' 1 P3 P4; LL4 = 'DROI' 1 P4 P1; SUR0 = 'DALL' LL1 LL2 LL3 LL4 'PLAN'; 'SI' igraph ; 'TITR' ' SUR0'; 'TRAC' SUR0; 'FINSI' ; *---> Deplacement maximal impose dans le calcul depmax = 4. * xL0 / 10. ; *---> Courbe de traction du materiau beta0 = 125. ; sig0 = 410.E6 ; xm = .1 ; youn0 = 2.1E11 ; epsp0 = 'PROG' 0. ; deb0 = 'PROG' 0. ; epsmax0 = 2. * depmax / xL0 ; pas0 = epsmax0 / 50 ; pas1 = pas0 / 10. ; epsmax1 = ( epsmax0 / 10. ) ; epsp1 = ( 'PROG' 0. 'PAS' pas1 epsmax1 ) 'ET' ( 'PROG' ( epsmax1 + pas0 ) 'PAS' pas0 epsmax0 ) ; *epsp1 = 'PROG' 0. 'PAS' pas0 epsmax0 ; dim00 = 'DIME' epsp1 ; un = 'PROG' dim00 '*' 1. ; Y0 = sig0 ; epsp2 = beta0 * epsp1 ; epsp3 = epsp2 + un ; epsp31 = log epsp3 ; epsp32 = epsp31 * xm ; epsp4 = exp epsp32 ; Y1 = Y0 * epsp4 ; epsp1 = epsp0 'ET' epsp1 ; Y1 = deb0 'ET' Y1 ; epsp2 = epsp1 + ( Y1 / youn0 ) ; trac00 = 'EVOL' 'MANU' 'defo' epsp1 'sigm' Y1 ; trac0 = 'EVOL' 'MANU' 'defo' epsp2 'sigm' Y1 ; lsm1 = y1 enle 1 ; lep1 = (epsp2 enle 1) - (lsm1 / youn0) ; evec = evol vert manu eps lep1 sig lsm1 ; 'SI' igraph ; dess (trac0 et evec) titr ' Courbes de traction et d ecrouissage (vert)' ; 'FINSI' ; SIG00 = youn0 / 500. ; *---> Definition du modele mod0 = 'MODE' SUR0 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' 'PLASTIQUE_ENDOM' 'GURSON2' ; fc0 = 0.10 ; mod0 = 'MODE' SUR0 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' 'PLASTIQUE_ENDOM' 'GURSON2' ; q00 = 'ZERO' mod0 'VARINTER' ; q01 = 'MANU' 'CHML' mod0 'VHWF' fc0 'TYPE' 'VARINTER' 'STRESSES'; q02 = 'MANU' 'CHML' mod0 'VHOT' 1. 'TYPE' 'VARINTER' 'STRESSES'; qq00 = q00 + q01 + q02; mat0 = 'MATE' mod0 'YOUN' youn0 'NU' 0.3 'ECRO' evec 'Q' 1.5 'FU' ( 1. / 1.5 ) 'FF' 0.25 'FC' 0.15 'FNS0' 0.00 'FNE0' 0.0 'SNS' ( .1 * SIG00 ) 'SNE' .1 'SIGN' ( 2.2 * SIG00 ) 'EPSN' .8 'F0' q01; *---> Conditions aux limites * Les deplacements sont bloques perpendiculairement aux 4 cotes du carre cl1 = 'BLOQ' LL1 'UY'; cl2 = 'BLOQ' LL2 'UX'; cl3 = 'BLOQ' LL3 'UY'; cl4 = 'BLOQ' LL4 'UX'; cl0 = cl1 'ET' cl2 'ET' cl3 'ET' cl4; *---> Pas de temps calcule dt0 = 1.0; tfin0 = 100.; ltps0 = 'PROG' 0. 'PAS' dt0 tfin0; *---> Chargement * On impose une augmentation de volume * - Des deplacements non-nuls sont imposes sur 2 cotes voisins. xde1 = depmax; xde2 = xde1; ldep1 = 'PROG' 0. xde1; ldep2 = 'PROG' 0. xde2; dep1 = 'DEPI' cl2 1.; dep2 = 'DEPI' cl3 1.; ev1 = 'EVOL' 'MANU' 's' ('PROG' 0. tfin0) 'm' ldep1; ev2 = 'EVOL' 'MANU' 's' ('PROG' 0. tfin0) 'm' ldep2; cha1 = 'CHAR' 'DIMP' dep1 ev1; cha2 = 'CHAR' 'DIMP' dep2 ev2; cha0 = cha1 'ET' cha2; *---> Table PASAPAS tab0 = 'TABLE'; tab0 .'MODELE' = mod0; tab0 .'CARACTERISTIQUES' = mat0; tab0 .'BLOCAGES_MECANIQUES' = cl0; tab0 .'CHARGEMENT' = cha0; tab0 .'TEMPS_CALCULES' = ltps0; tab0 .'VARIABLES_INTERNES' = 'TABLE'; tab0 .'VARIABLES_INTERNES' . 0 = qq00; TMASAU = 'TABLE'; tab0 . 'MES_SAUVEGARDES'=TMASAU; TMASAU .'DEFTO'=VRAI; TMASAU .'DEFIN'=VRAI; *tab0 .'GRANDS_DEPLACEMENTS' = vrai; tab0 .'HYPOTHESE_DEFORMATIONS'='LINEAIRE' ; *---> Appel a PASAPAS PASAPAS tab0; *====================================================== * Boucle sur les pas de temps calcules *====================================================== dim0 = 'DIME' (tab0 .'TEMPS'); conf0 = 'FORM'; 'REPETER' bloc0 dim0; index0 = &bloc0 - 1; *---> Contraintes sigm0 = tab0 .'CONTRAINTES'. index0; smxx0 = 'EXCO' sigm0 'SMXX' 'SCAL'; smyy0 = 'EXCO' sigm0 'SMYY' 'SCAL'; smXX1 = 'CHAN' 'CHPO' smxx0 mod0; smYY1 = 'CHAN' 'CHPO' smyy0 mod0; *---> Von Mises vmis0 = 'VMIS' sigm0 mod0; vmis1 = 'CHAN' 'CHPO' vmis0 mod0; *---> Deplacements depl0 = tab0 .'DEPLACEMENTS'. index0; *---> Variables internes var0 = tab0 .'VARIABLES_INTERNES'. index0; *---> Deformation plastique equivalente epeq0 = 'EXCO' var0 'EPSE' 'SCAL'; epeq1 = 'MAXI' epeq0; epeq2 = 'MINI' epeq0; *---> Deformations totales et inelastiques esp0 = tab0 .'DEFORMATIONS'. index0; epi0 = tab0 .'DEFORMATIONS_INELASTIQUES'. index0; *---> Trace des deformations totales et inelastiques treps0 = ('EXCO' esp0 'EPXX' 'SCAL') + ('EXCO' esp0 'EPYY' 'SCAL') + ('EXCO' esp0 'EPZZ' 'SCAL'); trepi0 = ('EXCO' epi0 'EIXX' 'SCAL') + ('EXCO' epi0 'EIYY' 'SCAL') + ('EXCO' epi0 'EIZZ' 'SCAL'); treps1 = 'MAXI' treps0; treps2 = 'MINI' treps0; trepi1 = 'MAXI' trepi0; trepi2 = 'MINI' trepi0; *---> Trace de la deformation evaluee par le rapport de densite calcule * Formule logarithmique * rho0 = 'EXCO' var0 'VHOT' 'SCAL'; rho1 = 'MAXI' rho0; rho2 = 'MINI' rho0; trRHO1 = (1. / rho1) - 1.; trRHO2 = (1. / rho2) - 1.; trRHO1 = 'LOG' (1. / rho1); trRHO2 = 'LOG' (1. / rho2); *---> Fraction de cavites calculee fra0 = 'EXCO' var0 'VHWF' 'SCAL'; fra1 = 'MAXI' fra0; fra2 = 'MINI' fra0; *---> Fraction de cavite theorique fraE1 = (1. - fc0) * (('EXP' (-1. * trepi1))); fraE1 = 1. - fraE1; fmax0 = 'MAXI' ('EXCO' mat0 'FF' 'SCAL'); 'SI' (fraE1 '>' fmax0); fraE1 = fmax0; 'FINSI'; err1 = ABS (fraE1 - fra1); err2 = ABS (fraE1 - fra2); *---> Stockage 'SI' (index0 'EGA' 0); lepeq0 = 'PROG' epeq1; lfra0 = 'PROG' fra1; lfra1 = 'PROG' fraE1; lerr1 = 'PROG' err1; lerr2 = 'PROG' err2; ltr0 = 'PROG' treps1; ltr1 = 'PROG' trepi1; ltr2 = 'PROG' trRHO1; lSMXX1 = 'PROG' ('MAXI' smXX1); lSMXX2 = 'PROG' ('MINI' smXX1); lSMYY1 = 'PROG' ('MAXI' smYY1); lSMYY2 = 'PROG' ('MINI' smYY1); lVMIS1 = 'PROG' ('MAXI' vmis0); lVMIS2 = 'PROG' ('MINI' vmis0); 'SINON'; lepeq0 = lepeq0 'ET' ('PROG' epeq1); lfra0 = lfra0 'ET' ('PROG' fra1); lfra1 = lfra1 'ET' ('PROG' fraE1); lerr1 = lerr1 'ET' ('PROG' err1); lerr2 = lerr2 'ET' ('PROG' err2); ltr0 = ltr0 'ET' ('PROG' treps1); ltr1 = ltr1 'ET' ('PROG' trepi1); ltr2 = ltr2 'ET' ('PROG' trRHO1); lSMXX1 = lSMXX1 'ET' ('PROG' ('MAXI' smXX1)); lSMXX2 = lSMXX2 'ET' ('PROG' ('MINI' smXX1)); lSMYY1 = lSMYY1 'ET' ('PROG' ('MAXI' smYY1)); lSMYY2 = lSMYY2 'ET' ('PROG' ('MINI' smYY1)); lVMIS1 = lVMIS1 'ET' ('PROG' ('MAXI' vmis0)); lVMIS2 = lVMIS2 'ET' ( 'PROG' ('MINI' vmis0)); 'FINSI'; *---> Sorties ecran * 'MESS' ' EPEQ=' ('MINI' (epeq0 * 100.)) ('MAXI' (epeq0 * 100.)); * 'MESS' ' SMXX=' ('MINI' (smXX0 / 1.E6)) ('MAXI' (smXX0 / 1.E6)); * 'MESS' ' SMYY=' ('MINI' (smYY0 / 1.E6)) ('MAXI' (smYY0 / 1.E6)); * 'MESS' ' VMIS=' ('MINI' (vmis0 / 1.E6)) ('MAXI' (vmis0 / 1.E6)); * 'MESS' ' RHO=' rho1 rho2; * 'MESS' ' TRACE(EPS)=' treps1 treps2; * 'MESS' ' TRACE(EPI)=' trepi1 trepi2; * 'MESS' ' TRACE(RHO)=' trRHO1 trRHO2; * 'MESS' ' FRA =' fra1 fra2; 'FIN' bloc0; *====================================================== * Fin de la boucle sur les pas de temps calcules *====================================================== 'SI' igraph ; *---> Evolutions en fonction du temps (btps0 = vrai) ou de EPEQ (btps0=faux) btps0 = faux; *---> Evolutions 'SI' btps0; evSXX1 = 'EVOL' 'MANU' 's' ltps0 'MPa' (lSMXX1 / 1.E6); evSYY1 = 'EVOL' 'MANU' 's' ltps0 'MPa' (lSMYY1 / 1.E6); evVMI1 = 'EVOL' 'MANU' 's' ltps0 'MPa' (lVMIS1 / 1.E6); evf0 = 'EVOL' 'MANU' 's' ltps0 '%' (lfra0 * 100.); evf1 = 'EVOL' 'MANU' 's' ltps0 '%' (lfra1 * 100.); evt0 = 'EVOL' 'MANU' 's' ltps0 '%' (ltr0 * 100.); evt1 = 'EVOL' 'MANU' 's' ltps0 '%' (ltr1 * 100.); evt2 = 'EVOL' 'MANU' 's' ltps0 '%' (ltr2 * 100.); 'SINON'; evSXX1 = 'EVOL' 'MANU' '%' (ltr0 * 100.) 'MPa' (lSMXX1 / 1.E6); evSYY1 = 'EVOL' 'MANU' '%' (ltr0 * 100.) 'MPa' (lSMYY1 / 1.E6); evVMI1 = 'EVOL' 'MANU' '%' (ltr0 * 100.) 'MPa' (lVMIS1 / 1.E6); evf0 = 'EVOL' 'MANU' '%' (ltr0 * 100.) '%' (lfra0 * 100.); evf1 = 'EVOL' 'MANU' '%' (ltr0 * 100.) '%' (lfra1 * 100.); everr1 = 'EVOL' 'MANU' '%' (ltr0 * 100.) '%' (lerr1 * 100.); everr2 = 'EVOL' 'MANU' '%' (ltr0 * 100.) '%' (lerr2 * 100.); evt0 = 'EVOL' 'MANU' '%' (ltr0 * 100.) '%' (ltr0 * 100.); evt1 = 'EVOL' 'MANU' '%' (ltr0 * 100.) '%' (ltr1 * 100.); evt2 = 'EVOL' 'MANU' '%' (ltr0 * 100.) '%' (ltr2 * 100.); 'FINSI'; *---> Contraintes TAB = 'TABLE' ; TAB.1 = 'MARQ CARR' ; TAB.2 = 'MARQ TRIA' ; TAB.3 = 'MARQ PLUS' ; TAB.'TITRE' = 'TABLE' ; TAB.'TITRE'. 1 = MOT 'SMXX' ; TAB.'TITRE'. 2 = MOT 'SMYY' ; TAB.'TITRE'. 3 = MOT 'VMIS' ; 'DESS' (evSXX1 'ET' evSYY1 'ET' evVMI1) 'TITR' ' Contraintes (en MPa)' 'LEGE' TAB; *---> Fraction de cavites TAB = 'TABLE' ; TAB.1 = 'MARQ CARR' ; TAB.2 = 'MARQ TRIA' ; TAB.'TITRE' = 'TABLE' ; TAB.'TITRE'. 1 = MOT 'CALCUL' ; TAB.'TITRE'. 2 = MOT 'THEORIE' ; 'DESS' (evf0 'ET' evf1) 'TITR' ' Fraction de cavite (en %)' 'LEGE' TAB; 'DESS' (everr1 'ET' everr2) 'TITR' ' Ecart fraction de cavite a la theorie (en %)' ; *---> Trace des deformations TAB = 'TABLE' ; TAB.1 = 'MARQ CARR' ; TAB.2 = 'MARQ TRIA' ; TAB.3 = 'MARQ TRIB' ; TAB.'TITRE' = 'TABLE' ; TAB.'TITRE'. 1 = MOT 'TRACE(EPS)' ; TAB.'TITRE'. 2 = MOT 'TRACE(EPI)' ; TAB.'TITRE'. 3 = MOT 'TRACE(RHO)' ; 'DESS' (evt0 'ET' evt1 'ET' evt2) 'TITR' ' Trace des deformations (en %)' 'LEGE' TAB; 'FINSI' ; *---> Test sur l'ecart a la fraction volumique de cavite theorique errmax = ('MAXI' (lerr1 'ET' lerr2)) * 100. ; 'MESS' 'Ecart max. (calcul - theorie) sur la fraction volumique de ' 'cavite (%) : ' errmax ; 'SI' (errmax > 1.E-3) ; 'ERRE' 5 ; 'FINSI' ; 'FIN' ;