Download ohno1.dgibi

Back to the list

* fichier :  ohno1.dgibi
* 
complet = faux;
* ajout de option epsilon lineaire pour la precision des test!
 OPTION epsilon lineaire;

*
*************************************************
*  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 )               * 
*                                                *   
*  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 OHNO 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 '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 ; 
eps_old = 'MAXI' ( 'EXCO' ( 'EPSI' mod0 depl0 ) '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 ) ) ) ; 
  X1lim = a10 / phi ;
  X2lim = a20 / phi ; 
  dXx1 = 2. * a10 * c10 * depsx0 / 3. ; 
  dXx1 = dXx1 - 
( c10 * Xx1 * depsx0 * phi * 
(( 3. * Xx1 / ( 2. * X1lim )) ** ( exp10 ))) ; 
  dXx1 = dXx1 - 
( ( ( 3. * Xx1 / ( 2. * bet10 ) ) ** ( r10 - 1. ) ) * Xx1 * dt0 ) ; 
  dXx2 = 2. * a20 * c20 * depsx0 / 3. ;
  dXx2 = dXx2 - 
( c20 * Xx2 * depsx0 * phi * 
(( 3. * Xx2 / ( 2. * X2lim )) ** ( exp20 ))) ; 
  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 echo 0 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' 'OHNO' ; 
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;
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 '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' ) ; 
*  
dim0 = 'DIME' ta1 .'TEMPS' ; 
*
sig_th0 = 0. ; 
r_th0 = 0. ; 
eps_th0 = 0. ; 
xx_th10 = 0. ; 
xx_th20 = 0. ; 
sig_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.20293E+07  9.01555E+07  9.82258E+07  1.06163E+08
  1.13855E+08  1.21148E+08  1.27849E+08  1.33737E+08  1.38604E+08 
 1.42342E+08  1.45023E+08  1.46884E+08  1.48214E+08  1.49240E+08
  1.50108E+08;
eps_th1 = 'PROG' 0.
 2.62535E-34  5.81971E-19  7.73859E-13  6.03725E-09  4.72149E-06 
 8.24351E-05  1.71724E-04  2.61774E-04  3.53633E-04
  4.48845E-04  5.49487E-04  6.58189E-04  7.77970E-04  9.11658E-04 
 1.06073E-03  1.22421E-03  1.39885E-03  1.58074E-03  1.76676E-03
  1.95494E-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 ) '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 ) '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 ) ; 
 eps_th1 = eps_th1 'ET' ( 'PROG' eps_th0 ) ; 
sinon;
  sig_th00 = extr  sig_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' ;   
 

 

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer