* fichier : onera1.dgibi ************************************************************************ * Section : Mecanique Viscoplastique ************************************************************************ * 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) * * * * TEST POUR DES ELEMENTS MASSIFS * * ------------------------------ * * * * MAILLAGE: * * UNE BARRE DE SECTION CARREE * * LONGUEUR L=.5 M * * LARGEUR l=.01 M * * * * CHARGEMENT: * * ESSAI DE TRACTION * * DEPLACEMENTS IMPOSES * * * ************************************************** * 'DEBPROC' VISOHNO ta1*'TABLE' i0*'ENTIER' sigx01*'FLOTTANT' eps0*'FLOTTANT' R01*'FLOTTANT' epsx01*'FLOTTANT' Xx11*'FLOTTANT' Xx21*'FLOTTANT' ; * * Résolution des lois viscoplastiques de ONERA dans * le cas unidirectionnel * mat0 = ta1 .'CARACTERISTIQUES' ; mod0 = ta1 .'MODELE' ; *q00 = 'MAXI' ( ta1 .'QQ' ) ; q00 = 0. ; * youn0 = 'MAXI' ( 'EXCO' mat0 'YOUN' ) ; n0 = 'MAXI' ( 'EXCO' mat0 'N' ) ; kk0 = 'MAXI' ( 'EXCO' mat0 'KK' ) ; k00 = 'MAXI' ( 'EXCO' mat0 'K0' ) ; alfk0 = 'MAXI' ( 'EXCO' mat0 'ALFK' ) ; alfr0 = 'MAXI' ( 'EXCO' mat0 'ALFR' ) ; alf0 = 'MAXI' ( 'EXCO' mat0 'ALF' ) ; a10 = 'MAXI' ( 'EXCO' mat0 'A1' ) ; c10 = 'MAXI' ( 'EXCO' mat0 'C1' ) ; bet10 = 'MAXI' ( 'EXCO' mat0 'BET1' ) ; r10 = 'MAXI' ( 'EXCO' mat0 'R1' ) ; a20 = 'MAXI' ( 'EXCO' mat0 'A2' ) ; c20 = 'MAXI' ( 'EXCO' mat0 'C2' ) ; bet20 = 'MAXI' ( 'EXCO' mat0 'BET2' ) ; r20 = 'MAXI' ( 'EXCO' mat0 'R2' ) ; phi0 = 'MAXI' ( 'EXCO' mat0 'PHI' ) ; b0 = 'MAXI' ( 'EXCO' mat0 'B' ) ; gama0 = 'MAXI' ( 'EXCO' mat0 'GAMA' ) ; m0 = 'MAXI' ( 'EXCO' mat0 'M' ) ; qmax0 = 'MAXI' ( 'EXCO' mat0 'QMAX' ) ; qsta0 = 'MAXI' ( 'EXCO' mat0 'QSTA' ) ; mu0 = 'MAXI' ( 'EXCO' mat0 'MU' ) ; eta0 = 'MAXI' ( 'EXCO' mat0 'ETA' ) ; *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 ; eps_old = 'MAXI' ( 'EXCO' ( 'EPSI' mod0 depl0 'LINE' ) 'EPXX' ) ; * niter0 = 50 ; dt0 = ( temp1 - temp0 ) / niter0 ; sigx00 = sigx01 ; R00 = R01 ; epsx00 = epsx01 ; Xx10 = Xx11 ; Xx20 = Xx21 ; * * Incrément de contrainte test * spt0 = youn0 * ( eps0 - eps_old ) / ( temp1 - temp0 ) ; *mess ' sigx00 R00 epsx00 Xx10 Xx20=' sigx00 R00 epsx00 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 ; epsx0 = epsx00 ; Xx1 = Xx10 ; Xx2 = Xx20 ; * 'REPETER' bloc1 2 ; i1 = &bloc1 ; * * Memoire en déformation inélastique * qq = eta0 * epsx0 ; Q0 = qmax0 - ( ( qmax0 - q00 ) * ( 'EXP' ( -2. * mu0 * eta0 * epsx0 ) ) ) ; YX0 = ( 1. - eta0 ) * epsx0 ; QR = Q0 - ( qsta0 * ( 1. - ( ( ( qmax0 - Q0 ) / qmax0 ) ** 2. ) ) ) ; RR0 = alfr0 * R0 ; KR0 = k00 + ( alfk0 * R0 ) ; * mess ' qq, Q0, YX0, QR, RR0, KR0=' qq Q0 YX0 QR RR0 KR0 ; * * Critère * Xx0 = Xx1 + Xx2 ; F0 = sigx0 - ( 3. * Xx0 / 2. ) - 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 * epsx0 ) ) ) ; dXx1 = 2. * a10 * c10 * depsx0 / 3. ; dXx1 = dXx1 - ( c10 * Xx1 * depsx0 * phi ) ; dXx1 = dXx1 - ( ( ( 3. * Xx1 / ( 2. * bet10 ) ) ** ( r10 - 1. ) ) * Xx1 * dt0 ) ; dXx2 = 2. * a20 * c20 * depsx0 / 3. ; dXx2 = dXx2 - ( c20 * Xx2 * depsx0 * phi ) ; dXx2 = dXx2 - ( ( ( 3. * Xx2 / ( 2. * 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 ; epsx0 = epsx00 + depsx0 ; Xx1 = Xx10 + dXx1 ; Xx2 = Xx20 + dXx2 ; sigx0 = sigx00 + ( dt0 * spt0 ) - ( youn0 * depsx0 ) ; * 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 ; epsx00 = epsx0 ; Xx10 = Xx1 ; Xx20 = Xx2 ; sigx00 = sigx0 ; * 'FIN' bloc0 ; * 'MESS' ' Temps final ' temp01 temp1 ; * 'FINP' sigx00 R00 epsx0 Xx10 Xx20 ; * *--------------------------------------------------------------- opti dime 3 elem cub8 ; * * * Maillage * l1 = .5 ; l2 = .01 ; l3 = .01 ; n1 = 50 ; n2 = 1 ; n3 = 1 ; p1 = 0. 0. 0. ; p2 = l1 0. 0. ; p3 = l1 l2 0. ; p4 = 0. l2 0. ; p5 = 0. 0. l3 ; p6 = l1 0. l3 ; p7 = l1 l2 l3 ; p8 = 0. l2 l3 ; d1 = d p1 n3 p5 ; d2 = d p5 n2 p8 ; d3 = d p8 n3 p4 ; d4 = d p4 n2 p1 ; sur1 = 'DALL' d1 d2 d3 d4 ; d5 = d p2 n3 p6 ; d6 = d p6 n2 p7 ; d7 = d p7 n3 p3 ; d8 = d p3 n2 p2 ; sur2 = 'DALL' d5 d6 d7 d8 ; vol1 = sur1 'VOLU' n1 sur2 ; * * Modele de calcul * mod0 = 'MODE' vol1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' 'VISCOPLASTIQUE' 'ONERA' ; mat0 = 'MATE' mod0 'YOUN' 7.34E10 'NU' 0.33 'RHO' 7.8E3 'ALPHA' 1.E-5 'N' 24 'KK' 10.E6 'K0' 116.E6 'ALFK' 1.5 'ALFR' 0.35 'ALF' 2.E6 'A1' 67.5E6 'C1' 1300 'BET1' 4807.E6 'R1' 4 'A2' 80.E6 '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.06 ; * 'EXP1' 2. 'EXP2' 2. ; *q00 = 'MANU' 'CHML' vol1 'QQ' 30.E6 ; * * Conditions aux limites * cl1 = 'BLOQ' sur1 'UX' ; cl2 = 'BLOQ' sur2 'UX' ; cl3 = 'BLOQ' p1 'UX' 'UY' 'UZ' ; cl4 = 'BLOQ' p5 'UX' 'UY' ; cl0 = cl1 'ET' cl2 'ET' cl3 'ET' cl4 ; * * Chargement * dep1 = 'DEPI' cl2 .02 ; ev0 = 'EVOL' 'MANU' temps ( 'PROG' 0. 10000. ) y ( 'PROG' 0. 1. ) ; cha0 = 'CHAR' 'DIMP' dep1 ev0 ; * * Temps du calcul * dt0 = 50. ; si complet; tfin0 = 1000. ; sinon; tfin0 = 300 ; finsi; * * * Resolution par PASAPAS *--------------------------------------- * ta1 = 'TABLE' ; *ta1 .'QQ' = 'TABLE' ; ta1 .'MODELE' = mod0 ; ta1 .'CARACTERISTIQUES' = mat0 ; ta1 .'BLOCAGES_MECANIQUES' = cl0 ; ta1 .'CHARGEMENT' = cha0 ; *ta1 .'QQ'. 0 = q00 ; ta1 .'TEMPS_CALCULES' = 'PROG' 0. 'PAS' dt0 tfin0 ; * TMASAU=table; ta1 . 'MES_SAUVEGARDES'=TMASAU; TMASAU .'DEFTO'=VRAI; TMASAU .'DEFIN'=VRAI; ta1 .'HYPOTHESE_DEFORMATIONS'='LINEAIRE' ; PASAPAS ta1 ; * mat0 = ta1 .'CARACTERISTIQUES' ; mod0 = ta1 .'MODELE' ; *q00 = ta1 .'QQ' ; q00 = 0. ; * n0 = 'MAXI' ( 'EXCO' mat0 'N' ) ; kk0 = 'MAXI' ( 'EXCO' mat0 'KK' ) ; k00 = 'MAXI' ( 'EXCO' mat0 'K0' ) ; alfk0 = 'MAXI' ( 'EXCO' mat0 'ALFK' ) ; alfr0 = 'MAXI' ( 'EXCO' mat0 'ALFR' ) ; alf0 = 'MAXI' ( 'EXCO' mat0 'ALF' ) ; a10 = 'MAXI' ( 'EXCO' mat0 'A1' ) ; c10 = 'MAXI' ( 'EXCO' mat0 'C1' ) ; bet10 = 'MAXI' ( 'EXCO' mat0 'BET1' ) ; r10 = 'MAXI' ( 'EXCO' mat0 'R1' ) ; a20 = 'MAXI' ( 'EXCO' mat0 'A2' ) ; c20 = 'MAXI' ( 'EXCO' mat0 'C2' ) ; bet20 = 'MAXI' ( 'EXCO' mat0 'BET2' ) ; r20 = 'MAXI' ( 'EXCO' mat0 'R2' ) ; phi0 = 'MAXI' ( 'EXCO' mat0 'PHI' ) ; b0 = 'MAXI' ( 'EXCO' mat0 'B' ) ; gama0 = 'MAXI' ( 'EXCO' mat0 'GAMA' ) ; m0 = 'MAXI' ( 'EXCO' mat0 'M' ) ; qmax0 = 'MAXI' ( 'EXCO' mat0 'QMAX' ) ; qsta0 = 'MAXI' ( 'EXCO' mat0 'QSTA' ) ; mu0 = 'MAXI' ( 'EXCO' mat0 'MU' ) ; eta0 = 'MAXI' ( 'EXCO' mat0 'ETA' ) ; *exp10= 'MAXI' ( 'EXCO' mat0 'EXP1' ) ; *exp20= 'MAXI' ( 'EXCO' mat0 'EXP2' ) ; * dim0 = 'DIME' ta1 .'TEMPS' ; * sig_th0 = 0. ; r_th0 = 0. ; eps_th0 = 0. ; xx_th10 = 0. ; xx_th20 = 0. ; sig_th1 = 'PROG' 0.; r_th1 = 'PROG' 0. ;eps_th1 = 'PROG' 0.; si ( non complet); sig_th1 = 'PROG' 0. 1.46800E+07 2.93600E+07 4.40400E+07 5.87196E+07 7.30534E+07 8.18875E+07 8.94690E+07 9.66012E+07 1.03261E+08 1.09429E+08 1.15090E+08 1.20240E+08 1.24881E+08 1.29026E+08 1.32697E+08 1.35925E+08 1.38748E+08 1.41209E+08 1.43350E+08 1.45216E+08; r_th1 = 'PROG' 0. -1.97215E-20 -3.94430E-20 7.95615E-15 5.98126E-07 .42434 374.04 2920.8 8804.9 17897. 29519. 43036. 58025. 74244. 91553. 1.09868E+05 1.29116E+05 1.49232E+05 1.70143E+05 1.91771E+05 2.14038E+05; eps_th1 = 'PROG' 0. 2.62535E-34 5.81971E-19 7.73859E-13 6.03725E-09 4.72243E-06 8.43662E-05 1.81076E-04 2.83907E-04 3.93175E-04 5.09147E-04 6.32012E-04 7.61849E-04 8.98620E-04 1.04215E-03 1.19214E-03 1.34816E-03 1.50969E-03 1.67618E-03 1.84700E-03 2.02158E-03; finsi; * 'REPETER' bloc0 ( dim0 - 1 ) ; i0 = &bloc0 ; depl0 = ta1 .'DEPLACEMENTS'.i0 ; sigm0 = ta1 .'CONTRAINTES'.i0 ; var0 = ta1 .'VARIABLES_INTERNES'.i0 ; def0 = ta1 .'DEFORMATIONS_INELASTIQUES'.i0 ; temp0 = ta1 .'TEMPS'.i0 ; eps0 = 'MAXI' ( 'EXCO' ( 'EPSI' mod0 depl0 'LINE' ) 'EPXX' ) ; * * Contraintes et déformations inélastiques équivalentes * vm0 = 'MAXI' ( 'VMIS' sigm0 mod0 ) ; epsp0 = 'MAXI' ( 'EXCO' var0 'EPSE' ) ; * * Déformation totale et inélastique suivant x * epst0 = 'MAXI' ( 'EXCO' ( 'EPSI' depl0 mod0 'LINE' ) 'EPXX' ) ; epsx0 = 'MAXI' ( 'EXCO' def0 'EIXX' ) ; * * Contraintes suivant x * sigx0 = 'MAXI' ( 'EXCO' sigm0 'SMXX' ) ; * * Calcul theorique * si complet; sig_th00 r_th00 eps_th00 xx_th1 xx_th2 = VISOHNO ta1 i0 sig_th0 eps0 r_th0 eps_th0 xx_th10 xx_th20 ; * sig_th0 = sig_th00 ; r_th0 = r_th00 ; eps_th0 = eps_th00 ; xx_th10 = xx_th1 ; xx_th20 = xx_th2 ; sig_th1 = sig_th1 'ET' ( 'PROG' sig_th0 ) ; r_th1 = r_th1 'ET' ( 'PROG' r_th0 ) ; eps_th1 = eps_th1 'ET' ( 'PROG' eps_th0 ) ; sinon; sig_th00 = extr sig_th1 ( i0 + 1); r_th00 = extr r_th1 ( i0 + 1); eps_th00= extr eps_th1 ( i0 + 1); finsi; * * Calcul d'erreur * 'SI' ( epsx0 '<' ( 1.E-2 * eps0) ) ; err_e0 = 0. ; 'SINON' ; err_e0 = ( 'ABS' ( eps_th00 - epsx0 ) ) / epsx0 ; err_e0 = err_e0 * 100. ; 'FINSI' ; 'SI' ( sigx0 'EGA' 0. ) ; err_s0 = 0. ; 'SINON' ; err_s0 = ( 'ABS' ( sig_th00 - sigx0 ) ) / sigx0 ; err_s0 = err_s0 * 100. ; 'FINSI' ; * 'SI' ( (err_e0 '>' 1.E-1) 'OU' (err_s0 '>' 1.E-1 ) ) ; prob0 = vrai ; 'SINON' ; prob0 = faux ; 'FINSI' ; 'MESS' ' Fin du calcul de restitution au temps:' temp0 ; * 'FIN' bloc0 ; * 'SI' ( prob0 'EGA' vrai ) ; 'ERRE' 5 ; 'SINON' ; 'ERRE' 0 ; 'FINSI' ; * 'FIN' ;