* fichier : ohno_cis2.dgibi ************************************************************************ ************************************************************************ complet = faux; * ************************************************* * pour calcul complet mettre complet à : vrai; *************************************************** ************************************************** * * * TEST DE VALIDATION D'UNE LOI DE COMPORTEMENT * * -------------------------------------------- * * DE MATERIAU * * ----------- * * * * LOI DE COMPORTEMENT VISCOPLASTIQUE DE: * * OHNO ( CHABOCHE MODIFIE OHNO ) * * * * COMPARAISON DE CALCULS SUR DES ELEMENTS: * * - MASSIF 2D ( MFR=1 ) * * ( DEFORMATIONS PLANES ) * * AVEC UN RESULTAT ANALYTIQUE * * * * STRUCTURE : UNE PLAQUE CARREE * * - COTE : .1 M * * - EPAISSEUR : 5.E-4 M * * * * CHARGEMENT : DEPLACEMENTS IMPOSES * * CISAILLEMENT PUR * * * ************************************************** * * 'DEBPROC' VISOHNO ta1*'TABLE' i0*'ENTIER' sigx01*'FLOTTANT' gam0*'FLOTTANT' R01*'FLOTTANT' epsp01*'FLOTTANT' gamp01*'FLOTTANT' Xx11*'FLOTTANT' Xx21*'FLOTTANT' ; * * Résolution des lois viscoplastiques de OHNO dans * le cas unidirectionnel * mat0 = ta1 .'CARACTERISTIQUES' ; mod0 = ta1 .'MODELE' ; q00 = 0. ; rac0 = ( 3. ) ** ( .5 ) ; * G0 = youn0 / ( 2. * ( 1. + xnu0 ) ) ; * depl0 = ta1 .'DEPLACEMENTS'.( i0 - 1 ) ; temp1 = ta1 .'TEMPS'.i0 ; temp0 = ta1 .'TEMPS'.( i0 - 1 ) ; temp01 = temp0 ; * niter0 = 100 ; dt0 = ( temp1 - temp0 ) / niter0 ; sigx00 = sigx01 ; R00 = R01 ; epsp00 = epsp01 ; gamp00 = gamp01 ; Xx10 = Xx11 ; Xx20 = Xx21 ; * * Incrément de contrainte test * spt0 = G0 * ( gam0 - gam_old ) / ( temp1 - temp0 ) ; *mess ' sigx00 R00 gamp00 Xx10 Xx20=' sigx00 R00 gamp00 Xx10 Xx20 ; * 'REPETER' bloc0 niter0 ; * * Initialisation du calcul pour un pas de temps * temp01 = temp01 + dt0 ; depsx9 = 0. ; dXx8 = 0. ; dXx9 = 0. ; dr9 = 0. ; sigx0 = sigx00 ; R0 = R00 ; epsp0 = epsp00 ; gamp0 = gamp00 ; Xx1 = Xx10 ; Xx2 = Xx20 ; * 'REPETER' bloc1 2 ; i1 = &bloc1 ; * * Memoire en déformation inélastique * qq = eta0 * epsp0 ; geta0 = ( 1. - eta0 ) * gamp0 / 2. ; Q0 = qmax0 - ( ( qmax0 - q00 ) * ( 'EXP' ( -2. * mu0 * qq ) ) ) ; QR = Q0 - ( qsta0 * ( 1. - ( ( ( qmax0 - Q0 ) / qmax0 ) ** 2. ) ) ) ; RR0 = alfr0 * R0 ; KR0 = k00 + ( alfk0 * R0 ) ; * mess ' qq, Q0, QR, RR0, KR0=' qq Q0 QR RR0 KR0 ; * * Critère * Xx0 = Xx1 + Xx2 ; F0 = rac0 * ( sigx0 - Xx0 ) ; F0 = F0 - RR0 - kk0 ; * * Ecrouissages * 'SI' ( F0 '>' 0. ) ; depsx0 = ( F0 / KR0 ) ** ( n0 ) ; depsx1 = alf0 * ( ( F0 / KR0 ) ** ( n0 + 1. ) ) ; depsx1 = 'EXP' ( depsx1 ) ; depsx0 = depsx0 * depsx1 * dt0 ; 'SINON' ; depsx0 = 0. ; 'FINSI' ; * mess ' depsx0 F0 = ' depsx0 F0 ; dr0 = b0 * ( Q0 - R0 ) * depsx0 ; dr1 = gama0 * ( ( 'ABS' ( QR - R0 ) ) ** ( m0 - 1. ) ) ; dr1 = dr1 * ( QR - R0 ) ; dr0 = dr0 + ( dr1 * dt0 ) ; phi = phi0 + ( ( 1. - phi0 ) * ( 'EXP' ( -1. * b0 * epsp0 ) ) ) ; X1lim = a10 / phi ; X2lim = a20 / phi ; dXx1 = 2. * a10 * c10 * rac0 * depsx0 / 6. ; dXx1 = dXx1 - ( c10 * Xx1 * depsx0 * phi * ( ( Xx1 * rac0 / X1lim ) ** ( exp10 ) ) ) ; * dXx1 = dXx1 - ( c10 * Xx1 * depsx0 * phi ) ; dXx1 = dXx1 - ( ( ( Xx1 * rac0 / bet10 ) ** ( r10 - 1. ) ) * Xx1 * dt0 ) ; dXx2 = 2. * a20 * c20 * depsx0 * rac0 / 6. ; dXx2 = dXx2 - ( c20 * Xx2 * depsx0 * phi * ( ( Xx2 * rac0 / X2lim ) ** ( exp20 ) ) ) ; * dXx2 = dXx2 - ( c20 * Xx2 * depsx0 * phi ) ; dXx2 = dXx2 - ( ( ( Xx2 * rac0 / bet20 ) ** ( r20 - 1. ) ) * Xx2 * dt0 ) ; * mess ' dr0 phi dXx1 dXx2 i1 =' dr0 phi dXx1 dXx2 i1 ; * * Somme ( Runge-Kutta ) * dr0 = ( dr0 + dr9 ) / i1 ; depsx0 = ( depsx0 + depsx9 ) / i1 ; dXx1 = ( dXx1 + dXx8 ) / i1 ; dXx2 = ( dXx2 + dXx9 ) / i1 ; dr9 = dr0 ; depsx9 = depsx0 ; dXx8 = dXx1 ; dXx9 = dXx2 ; * mess ' dr0 depsx0 dXx1 dXx2 i1 =' dr0 depsx0 dXx1 dXx2 i1 ; * * Calcul des grandeurs actuelles * R0 = R00 + dr0 ; epsp0 = epsp00 + depsx0 ; gamp0 = gamp00 + ( depsx0 * rac0 ) ; Xx1 = Xx10 + dXx1 ; Xx2 = Xx20 + dXx2 ; sigx0 = sigx00 + ( dt0 * spt0 ) - ( G0 * depsx0 * rac0 ) ; * mess ' R00 epsx00 Xx10 Xx20 sigx00 =' R00 epsx00 Xx10 Xx20 sigx00 ; * mess ' R0 epsx0 Xx1 Xx2 sigx0 =' R0 epsx0 Xx1 Xx2 sigx0 ; * 'FIN' bloc1 ; * * Mise à jour des valeurs * R00 = R0 ; epsp00 = epsp0 ; gamp00 = gamp0 ; geta0 = ( 1. - eta0 ) * gamp0 / 2. ; Xx10 = Xx1 ; Xx20 = Xx2 ; sigx00 = sigx0 ; * 'FIN' bloc0 ; * 'MESS' ' Temps final ' temp01 temp1 ; * 'FINP' sigx00 R00 epsp0 Xx10 Xx20 gamp0 geta0 ; * *--------------------------------------------------------------- * * * * * Maillage * p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ; li1 = d p1 1 p2 ; li2 = d p2 1 p3 ; li3 = d p3 1 p4 ; li4 = d p4 1 p1 ; *trace mail1 ; * * Modele * mod0 = 'MODE' mail1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' 'VISCOPLASTIQUE' 'OHNO' ; mat0 = 'MATE' mod0 'YOUN' 2.1E11 'NU' .3 'N' 24 'KK' 10.E6 'K0' 116.E6 'ALFK' 1.5 'ALFR' .35 'ALF' 2.E6 'A1' 67.5E6 'C1' 1300 'BET1' 4807E6 'R1' 4 'A2' 80.6 'C2' 45 'BET2' 58480.E6 'R2' 4 'PHI' 1. 'B' 12 'GAMA' 2.E-7 'M' 2 'QMAX' 455.E6 'QSTA' 200.E6 'MU' 19 'ETA' 0.50 'EXP1' 2. 'EXP2' 2. ; * * Conditions aux limites * cl0 = cl1 'ET' cl2 'ET' cl3 ; * * Chargement * * dt0 = 50. ; tfin0 = 1000. ; * * Appel à PASAPAS * ta1 = 'TABLE' ; ta1 .'MODELE' = mod0 ; ta1 .'CARACTERISTIQUES' = mat0 ; ta1 .'CHARGEMENT' = cha0 ; ta1 .'BLOCAGES_MECANIQUES' = cl0 ; * TMASAU=table; ta1 . 'MES_SAUVEGARDES'=TMASAU; TMASAU .'DEFTO'=VRAI; TMASAU .'DEFIN'=VRAI; PASAPAS ta1 ; * * Post traitement * epsp00 = 0. ; sig_th00 = 0. ; gam_th00 = 0. ; R01 = 0. ; Xx11 = 0. ; Xx21 = 0. ; si ( non complet); 5.38355E+07 7.29298E+07 8.20911E+07 8.42023E+07 8.49050E+07 8.54619E+07 8.60243E+07 8.66075E+07 8.72124E+07 8.78385E+07 8.84848E+07 8.91505E+07 8.98349E+07 9.05371E+07 9.12565E+07 9.19923E+07 9.27438E+07 9.35104E+07 9.42912E+07 9.50858E+07 ; 3.33465E-04 1.09706E-03 1.98363E-03 2.95750E-03 3.94880E-03 4.94190E-03 5.93494E-03 6.92772E-03 7.92023E-03 8.91248E-03 9.90447E-03 1.08962E-02 1.18878E-02 1.28791E-02 1.38702E-02 1.48610E-02 1.58517E-02 1.68423E-02 1.78326E-02 1.88227E-02; 8.33663E-05 2.74265E-04 4.95909E-04 7.39374E-04 9.87199E-04 1.23547E-03 1.48373E-03 1.73193E-03 1.98006E-03 2.22812E-03 2.47612E-03 2.72406E-03 2.97194E-03 3.21977E-03 3.46754E-03 3.71526E-03 3.96294E-03 4.21056E-03 4.45815E-03 4.70569E-03; finsi; * bool0 = faux ; 'REPETER' bloc0 ( dim0 - 1 ) ; i0 = &bloc0 ; depl0 = ta1 .'DEPLACEMENTS'. i0 ; sigm0 = ta1 .'CONTRAINTES'. i0 ; def0 = ta1 .'DEFORMATIONS_INELASTIQUES'. i0 ; var0 = ta1 .'VARIABLES_INTERNES'. i0 ; * * * si complet; sig_th0 R00 epsp0 Xx10 Xx20 gam_th0 geta_th0 = VISOHNO ta1 i0 sig_th00 gam0 R01 epsp00 gam_th00 Xx11 Xx21 ; * sig_th00 = sig_th0 ; R01 = R00 ; epsp00 = epsp0 ; gam_th00 = gam_th0 ; Xx11 = Xx10 ; Xx21 = Xx20 ; * sinon; finsi; * *'MESS' ' Gama theorique=' gam_th0 ; *'MESS' ' Gama calculé =' gaxy0 ; *'MESS' ' sig theorique =' sig_th0 ; *'MESS' ' sig calcule =' sigxy0 ; * * Erreurs * 'SI' ( gaxy0 'NEG' 0. ) ; err_e0 = ( 'ABS' ( gam_th0 - gaxy0 ) ) / gaxy0 ; err_e0 = err_e0 * 100. ; 'SINON' ; err_e0 = 0. ; 'FINSI' ; 'SI' ( sigxy0 'NEG' 0. ) ; err_s0 = ( 'ABS' ( sig_th0 - sigxy0 ) ) / sigxy0 ; err_s0 = err_s0 * 100. ; 'SINON' ; err_s0 = 0. ; 'FINSI' ; *mess ' err_e0 , err_s0 =' err_e0 err_s0 ; 'SI' ( geta0 '>' 0. ) ; err_g0 = ( 'ABS' ( geta_th0 - geta0 ) ) / geta0 ; err_g0 = err_g0 * 100. ; 'SINON' ; err_g0 = 0. ; 'FINSI' ; *mess ' err_g0,geta0 , geta_th0 = ' err_g0 geta0 geta_th0 ; 'SI' ( ( ( err_e0 '>' 1.E-2 ) 'OU' ( err_s0 '>' 1.E-2 ) ) 'OU' ( err_g0 '>' 1.E-2 ) ) ; bool0 = vrai ; 'FINSI' ; * 'FIN' bloc0 ; * 'SI' ( bool0 'EGA' vrai ) ; 'SINON' ; 'FINSI' ; * Traces * TAB = 'TABLE' ; TAB. 2 = 'MARQ CROI ' ; TAB.'TITRE' = 'TABLE' ; *'DESSIN' ( trac2 'ET' trac1 ) *'TITR' ' Comparaison theorie calcul' *'LEGE' TAB ; TAB = 'TABLE' ; TAB. 2 = 'MARQ CROI ' ; TAB.'TITRE' = 'TABLE' ; *'DESSIN' ( trac3 'ET' trac4 ) *'TITR' ' Evolution des erreurs en %' *'LEGE' TAB ; 'SI' ( geta0 '>' 0. ) ; TAB = 'TABLE' ; TAB. 2 = 'MARQ CROI ' ; TAB.'TITRE'= 'TABLE' ; *'DESSIN' ( trac6 'ET' trac7 ) *'TITR' ' Geta calcul theorie' *'LEGE' TAB ; *'DESSIN' trac5 'TITR' ' Erreur sur geta en %' ; 'FINSI' ; list sig_th1; list gam_th1; list geta_th1; * * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales