Download chab_cis2.dgibi

Back to the list

* 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:        *
*   CHABOCHE                                     *
*                                                *
*  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                 *
*                                                *
**************************************************
*  
opti echo 0 ; 
* 
'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 ) ; 
*
youn0 = 'MAXI' ( 'EXCO' mat0 'YOUN' ) ; 
xnu0 = 'MAXI' ( 'EXCO' mat0 'NU' ) ; 
G0 = youn0 / ( 2. * ( 1. + xnu0 ) ) ;  
n0 = 'MAXI' ( 'EXCO' mat0 'N' ) ;
kk0 = 'MAXI' ( 'EXCO' mat0 'KK' ) ;
k00 = 'MAXI' ( 'EXCO' mat0 'K0' ) ;
alfk0 = 'MAXI' ( 'EXCO' mat0 'ALFK0' ) ;
alfr0 = 'MAXI' ( 'EXCO' mat0 'ALFR0' ) ;
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 ; 
gam_old = 'MAXI' ( 'EXCO' ( 'EPSI' mod0 depl0 ) 'GAXY' ) ;  
* 

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 ;  
*
*--------------------------------------------------------------- 
* 
*  
* 
opti echo 0 dime 2 elem qua4 ;  
*  
*  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 ; 
mail1 = 'SURF' ( li1 'ET' li2 'ET' li3 'ET' li4 ) 'PLAN' ; 
*trace mail1 ;  
*  
*  Modele 
*  
mod0 = 'MODE' mail1 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' 
       'VISCOPLASTIQUE' 'CHABOCHE' ; 
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 
*  
cl1 = 'BLOQ' li1 'UX' 'UY' ; 
cl2 = 'BLOQ' li3 'UY' ; 
cl3 = 'BLOQ' li3 'UX' ; 
cl0 = cl1 'ET' cl2 'ET' cl3 ; 
*  
*  Chargement 
*  
dep0 = 'DEPI' cl3 .02 ;  
ev0 = 'EVOL' 'MANU' temps ( 'PROG' 0. 1000. ) y ( 'PROG' 0. 1. ) ; 
cha0 = 'CHAR' 'DIMP' dep0 ev0 ; 
*    
dt0 = 50. ; 

tfin0 = 1000. ;

*  
*  Appel à PASAPAS 
*  
ta1 = 'TABLE' ; 
ta1 .'MODELE' = mod0 ; 
ta1 .'CARACTERISTIQUES' = mat0 ; 
ta1 .'CHARGEMENT' = cha0 ; 
ta1 .'BLOCAGES_MECANIQUES' = cl0 ;
ta1 .'TEMPS_CALCULES' = ( 'PROG' 0. 'PAS' dt0 tfin0 ) ;
*  
TMASAU=table;
ta1 . 'MES_SAUVEGARDES'=TMASAU;
TMASAU .'DEFTO'=VRAI;
TMASAU .'DEFIN'=VRAI;
PASAPAS ta1 ;  
* 
*  Post traitement 
*  
dim0 = 'DIME' ( ta1 .'TEMPS' ) ; 
epsp00 = 0. ; 
sig_th00 = 0. ; 
gam_th00 = 0. ; 
R01 = 0. ; 
Xx11 = 0. ; 
Xx21 = 0. ; 
sigxy1 = 'PROG' 0. ; 
gaxy1 = 'PROG' 0. ; 
sig_th1 = 'PROG' 0. ; 
gam_th1 = 'PROG' 0. ; 
geta_th1 = 'PROG' 0. ;
err_e1 = 'PROG' 0. ; 
err_s1 = 'PROG' 0. ; 
err_g1 = 'PROG' 0. ; 
geta1 = 'PROG' 0. ; 
si ( non complet);
sig_th1 = 'PROG' 0. 5.30135E+07  6.72715E+07  7.56639E+07 
 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;
gam_th1 = 'PROG' 0.  3.43642E-04  1.16711E-03  2.06321E-03 
 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;


geta_th1 = 'PROG' 0. 
 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 ; 
 eps0 = 'EPSI' mod0 depl0 ; 
 def0 = ta1 .'DEFORMATIONS_INELASTIQUES'. i0 ; 
 var0 = ta1 .'VARIABLES_INTERNES'. i0 ; 
*  
 sigxy0 = 'MAXI' ( 'EXCO' sigm0 'SMXY' ) ; 
 gaxy0 = 'MAXI' ( 'EXCO' def0 'GIXY' ) ; 
 gam0 = 'MAXI' ( 'EXCO' eps0 'GAXY' ) ; 
 geta0 = 'MAXI' ( 'EXCO' var0 'GPXY' ) ; 
*  
 gaxy1 = gaxy1 'ET' ( 'PROG' gaxy0 ) ; 
 sigxy1 = sigxy1 'ET' ( 'PROG' sigxy0 ) ; 
 geta1 = geta1 'ET' ( 'PROG' geta0 ) ; 
*
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 ; 
*  
 sig_th1 = sig_th1 'ET' ( 'PROG' sig_th0 ) ; 
 gam_th1 = gam_th1 'ET' ( 'PROG' gam_th0 ) ; 
 geta_th1 = geta_th1 'ET' ( 'PROG' geta_th0 ) ;
sinon;
 sig_th0 = extr  sig_th1 ( i0 + 1);
 gam_th0 = extr  gam_th1 ( i0 + 1);
 geta_th0= extr geta_th1 ( i0 + 1);
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 ; 
err_e1 = err_e1 'ET' ( 'PROG' err_e0 ) ; 
err_s1 = err_s1 'ET' ( 'PROG' err_s0 ) ;
'SI' ( geta0 '>' 0. ) ;
   err_g0 = ( 'ABS' ( geta_th0 - geta0 ) ) / geta0 ;
   err_g0 = err_g0 * 100. ;
'SINON' ;
   err_g0 = 0. ;
'FINSI' ; 
err_g1 = err_g1 'ET' ( 'PROG' err_g0 ) ; 
 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 '>' 8.E-1 ) ) ; 
  bool0 = vrai ; 
'FINSI' ; 
*  
'FIN' bloc0 ; 
*  
'SI' ( bool0 'EGA' vrai ) ; 
     'ERRE' 5 ; 
'SINON' ; 
     'ERRE' 0 ; 
'FINSI' ; 
*  Traces  
*  
trac1 = 'EVOL' 'MANU' 'gama' gaxy1 'sigm' sigxy1 ; 
trac2 = 'EVOL' 'MANU' 'gama' gam_th1 'sigm' sig_th1 ; 
TAB = 'TABLE' ; 
TAB. 1 = 'MARQ PLUS ' ;
TAB. 2 = 'MARQ CROI ' ;
TAB.'TITRE' = 'TABLE' ;
TAB.'TITRE'. 1 = MOT 'THEORIE' ;
TAB.'TITRE'. 2 = MOT 'CALCUL' ;
*'DESSIN' ( trac2 'ET' trac1 )
*'TITR' ' Comparaison theorie calcul'
*'LEGE' TAB ;
trac3 = 'EVOL' 'MANU' 'gama' gaxy1 'erreur_%' err_e1 ; 
trac4 = 'EVOL' 'MANU' 'gama' gaxy1 'erreur_%' err_s1 ;  
TAB = 'TABLE' ;
TAB. 1 = 'MARQ PLUS ' ;
TAB. 2 = 'MARQ CROI ' ;
TAB.'TITRE' = 'TABLE' ;
TAB.'TITRE'. 1 = MOT 'GAMA' ;
TAB.'TITRE'. 2 = MOT 'CONTRAINTE' ;
*'DESSIN' ( trac3 'ET' trac4 )
*'TITR' ' Evolution des erreurs en %'
*'LEGE' TAB ;
trac5 = 'EVOL' 'MANU' 'gama' gaxy1 'erreur_%' err_g1 ; 
trac6 = 'EVOL' 'MANU' 'gama' gaxy1 'geta' geta_th1 ; 
trac7 = 'EVOL' 'MANU' 'gama' gaxy1 'geta' geta1 ; 
'SI' ( geta0 '>' 0. ) ; 
TAB = 'TABLE' ;
TAB. 1 = 'MARQ PLUS ' ;
TAB. 2 = 'MARQ CROI ' ;
TAB.'TITRE' = 'TABLE' ;
TAB.'TITRE'. 1 = MOT 'THEORIE' ;
TAB.'TITRE'. 2 = MOT 'CALCUL' ;
*'DESSIN' ( trac6 'ET' trac7 )
*'TITR' ' Geta calcul theorie'
*'LEGE' TAB ;
*'DESSIN' trac5 'TITR' ' Erreur sur geta en %' ; 
'FINSI' ; 
*  
'FIN' ;    

 

 

 

 

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer