* fichier : chab_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: * * ONERA (CHABOCHE unifie) * * * * 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 ) ) ; *exp10 = 'MAXI' ( 'EXCO' mat0 'EXP1' ) ; *exp20 = 'MAXI' ( 'EXCO' mat0 'EXP2' ) ; * 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 ) ) ) ; dXx1 = 2. * a10 * c10 * rac0 * depsx0 / 6. ; 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 ) ; 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' 'ONERA' ; 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 ; * * 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); 8.03405E+07 8.29554E+07 8.45177E+07 8.55710E+07 8.63894E+07 8.71063E+07 8.77856E+07 8.84571E+07 8.91349E+07 8.98249E+07 9.05299E+07 9.12506E+07 9.19870E+07 9.27388E+07 9.35055E+07 9.42864E+07 9.50810E+07; 3.00531E-03 3.97293E-03 4.95359E-03 5.94055E-03 6.93042E-03 7.92154E-03 8.91313E-03 9.90482E-03 1.08964E-02 1.18879E-02 1.28792E-02 1.38702E-02 1.48611E-02 1.58518E-02 1.68423E-02 1.78326E-02 1.88228E-02; 8.54369E-05 2.91779E-04 5.15802E-04 7.51327E-04 9.93233E-04 1.23840E-03 1.48514E-03 1.73260E-03 1.98039E-03 2.22828E-03 2.47620E-03 2.72411E-03 2.97197E-03 3.21979E-03 3.46756E-03 3.71528E-03 3.96295E-03 4.21058E-03 4.45816E-03 4.70570E-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' ; 'SI' ( ( ( err_e0 '>' 1.E-2 ) 'OU' ( err_s0 '>' 1.E-2 ) ) 'OU' ( err_g0 '>' 8.E-1 ) ) ; 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' ; * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales