Download umat01.dgibi

Back to the list

* fichier :  umat01.dgibi
*=======================================================================
*
*      CAS TEST DE VALIDATION DE LA PRISE EN COMPTE D'UNE LOI DE
*
*             COMPORTEMENT MECANIQUE NON LINEAIRE EXTERNE
*
*=======================================================================
*
* Modele 'NON_LINEAIRE' 'UTILISATEUR', integrateur specifique UMAT
*
* Test No1 : ELASTICITE ISOTROPE ISOTHERME
*
*=======================================================================


opti echo 0 ;


*=======================================================================
*
*                       PROCEDURES DEPENDANTES
*
*=======================================================================
 



*=======================================================================
*
*                      JEU DE DONNEES PRINCIPAL
*
*=======================================================================


*=======================================================================
* Maillage

opti dime 3 elem cub8 ;
option epsilon 'LINEAIRE';

long = 1.0 ;
larg = 1.0 ;
epai = 1.0 ;

p1  = 0.0 0.0 0.0 ;
p2  = p1 PLUS (larg 0.0 0.0) ;
p3  = p2 PLUS (0.0 long 0.0) ;
p4  = p1 PLUS (0.0 long 0.0) ;

p11 = p1 PLUS (0.0 0.0 epai) ;
p21 = p2 PLUS (0.0 0.0 epai) ;
p31 = p3 PLUS (0.0 0.0 epai) ;
p41 = p4 PLUS (0.0 0.0 epai) ;

p1p2 = DROIT 1 p1 p2 ;
p4p3 = DROIT 1 p4 p3 ;

sbas = p1p2 REGL 1 p4p3 ;

p11p21 = DROIT 1 p11 p21 ;
p41p31 = DROIT 1 p41 p31 ;

shaut = p11p21 REGL 1 p41p31 ;

cube = sbas VOLU 1 shaut ;


*=======================================================================
* Comportement elastique isotrope isotherme
* Traction uniaxiale Z

*-----------------------------------------------------------------------
* 1 - Calcul avec modele utilisateur

* 1.1 Definition du modele utilisateur

LCMAT = MOTS 'YOUN' 'NU  ' ;
mo_meca = MODE cube 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
                    'NON_LINEAIRE' 'UTILISATEUR'
                    'NUME_LOI' 10 'C_MATERIAU' LCMAT ;

* 1.2 Affectation des proprietes de materiau

xyoun = 2.1e+11 ;
xnu = 0.3 ;
ma_meca = MATE mo_meca 'YOUN' xyoun 'NU' xnu ;

* 1.3 Evaluation de coefficients de la matrice de Hooke en vue du
*     calcul de la solution theorique

coef1 = xyoun / ((1.0+xnu) * (1.0-(2.0*xnu))) ;
coezz = coef1 * (1.0-xnu) ;
coexxyy = xnu * coef1 ;

* 1.4 Definition des chargements

* 1.4.0 Creation de progressions pour la ponderation des chargements,
*       definissant autant d'etats a calculer

L_temps = PROG 0.0 0.5 1.0 ;
L_depl  = PROG 0.0 0.5 1.0 ;

netat = DIME L_temps ;

* 1.4.1 Blocages mecaniques et deplacement axial impose

uz3 = 1.0e-2 ;
clim1 = BLOQ sbas 'DEPL' ;
clim2 = BLOQ shaut 'UX' 'UY' ;
clim3 = BLOQ shaut 'UZ' ;
depi3 = DEPI clim3 uz3 ;
charmeca = CHAR 'DIMP' (EVOL MANU L_temps L_depl) depi3 ;

* 1.5 Resolution par PASAPAS

TABU = TABLE ;
TABU.'MODELE' = mo_meca ;
TABU.'CARACTERISTIQUES' = ma_meca ;
TABU.'CHARGEMENT' = charmeca ;
TABU.'BLOCAGES_MECANIQUES' = clim1 ET clim2 ET clim3 ;
TABU.'TEMPS_CALCULES' = L_temps ;
TMASAU=table;
tabu . 'MES_SAUVEGARDES'=TMASAU;
TMASAU .'DEFTO'=VRAI;
TMASAU .'DEFIN'=VRAI;
PASAPAS TABU ;

*-----------------------------------------------------------------------
* 2 - Comparaison des resultats obtenus avec la solution theorique

* N.B. On simule un essai de traction ZZ
*      - Critere strict sur UZ  , EPZZ, SMXX, SMYY et SMZZ :
*        errrel < 1.d-12
*      - Pour les autres composantes on note les depassements du critere
*        si impression demandee

uxu = TABLE ; uyu = TABLE ; uzu = TABLE ;
epxxu = TABLE ; epyyu = TABLE ; epzzu = TABLE ;
gaxyu = TABLE ; gaxzu = TABLE ; gayzu = TABLE ;
smxxu = TABLE ; smyyu = TABLE ; smzzu = TABLE ;
smxyu = TABLE ; smxzu = TABLE ; smyzu = TABLE ;

LDEPL = MOTS 'UX  ' 'UY  ' 'UZ  ' ;
LDEFO = MOTS 'EPXX' 'EPYY' 'EPZZ' 'GAXY' 'GAXZ' 'GAYZ' ;
LCONT = MOTS 'SMXX' 'SMYY' 'SMZZ' 'SMXY' 'SMXZ' 'SMYZ' ;

idepl = 3 ;
idefo = 3 ;
icon1 = 1 ;
icon2 = 2 ;
icon3 = 3 ;

ierr = 0 ;
critere = 1.d-12 ;
IMESS = 0 ;
***IMESS = 1 ;

nbno  = 8 ;
nbgau = 8 ;

ietat = 0 ;

* DEBUT BOUCLE COMPARAISON DES RESULTATS________________________________

REPETER BECART (netat-1) ;

   ietat = ietat + 1 ;
   temps = TABU.'TEMPS'.ietat ;

*  Calcul de la solution theorique--------------------------------------

   uz = temps * uz3 ;
   epzz = temps * (uz3 / epai) ;
   smxx = coexxyy * epzz ;
   smyy = coexxyy * epzz ;
   smzz = coezz * epzz ;

*  Extraction des resultats de calcul : Modele externe utilisateur------

*  Deplacements
   uxu.1 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UX' p1 ;
   uxu.2 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UX' p2 ;
   uxu.3 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UX' p3 ;
   uxu.4 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UX' p4 ;
   uxu.5 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UX' p11 ;
   uxu.6 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UX' p21 ;
   uxu.7 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UX' p31 ;
   uxu.8 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UX' p41 ;

   uyu.1 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UY' p1 ;
   uyu.2 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UY' p2 ;
   uyu.3 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UY' p3 ;
   uyu.4 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UY' p4 ;
   uyu.5 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UY' p11 ;
   uyu.6 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UY' p21 ;
   uyu.7 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UY' p31 ;
   uyu.8 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UY' p41 ;

   uzu.1 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UZ' p1 ;
   uzu.2 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UZ' p2 ;
   uzu.3 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UZ' p3 ;
   uzu.4 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UZ' p4 ;
   uzu.5 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UZ' p11 ;
   uzu.6 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UZ' p21 ;
   uzu.7 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UZ' p31 ;
   uzu.8 = EXTR (TABU.'DEPLACEMENTS'.ietat) 'UZ' p41 ;

*  *  Deformations totales
   igau = 0 ;
   REPETER BEPXXU nbgau ;
      igau = igau + 1 ;
      epxxu.igau = EXTR (TABU.'DEFORMATIONS'.ietat) 'EPXX' 1 1 igau ;
   FIN BEPXXU ;

   igau = 0 ;
   REPETER BEPYYU nbgau ;
      igau = igau + 1 ;
      epyyu.igau = EXTR (TABU.'DEFORMATIONS'.ietat) 'EPYY' 1 1 igau ;
   FIN BEPYYU ;

   igau = 0 ;
   REPETER BEPZZU nbgau ;
      igau = igau + 1 ;
      epzzu.igau = EXTR (TABU.'DEFORMATIONS'.ietat) 'EPZZ' 1 1 igau ;
   FIN BEPZZU ;

   igau = 0 ;
   REPETER BGAXYU nbgau ;
      igau = igau + 1 ;
      gaxyu.igau = EXTR (TABU.'DEFORMATIONS'.ietat) 'GAXY' 1 1 igau ;
   FIN BGAXYU ;

   igau = 0 ;
   REPETER BGAXZU nbgau ;
      igau = igau + 1 ;
      gaxzu.igau = EXTR (TABU.'DEFORMATIONS'.ietat) 'GAXZ' 1 1 igau ;
   FIN BGAXZU ;

   igau = 0 ;
   REPETER BGAYZU nbgau ;
      igau = igau + 1 ;
      gayzu.igau = EXTR (TABU.'DEFORMATIONS'.ietat) 'GAYZ' 1 1 igau ;
   FIN BGAYZU ;

*  Contraintes
   igau = 0 ;
   REPETER BSMXXU nbgau ;
      igau = igau + 1 ;
      smxxu.igau = EXTR (TABU.'CONTRAINTES'.ietat) 'SMXX' 1 1 igau ;
   FIN BSMXXU ;

   igau = 0 ;
   REPETER BSMYYU nbgau ;
      igau = igau + 1 ;
      smyyu.igau = EXTR (TABU.'CONTRAINTES'.ietat) 'SMYY' 1 1 igau ;
   FIN BSMYYU ;

   igau = 0 ;
   REPETER BSMZZU nbgau ;
      igau = igau + 1 ;
      smzzu.igau = EXTR (TABU.'CONTRAINTES'.ietat) 'SMZZ' 1 1 igau ;
   FIN BSMZZU ;

   igau = 0 ;
   REPETER BSMXYU nbgau ;
      igau = igau + 1 ;
      smxyu.igau = EXTR (TABU.'CONTRAINTES'.ietat) 'SMXY' 1 1 igau ;
   FIN BSMXYU ;

   igau = 0 ;
   REPETER BSMXZU nbgau ;
      igau = igau + 1 ;
      smxzu.igau = EXTR (TABU.'CONTRAINTES'.ietat) 'SMXZ' 1 1 igau ;
   FIN BSMXZU ;

   igau = 0 ;
   REPETER BSMYZU nbgau ;
      igau = igau + 1 ;
      smyzu.igau = EXTR (TABU.'CONTRAINTES'.ietat) 'SMYZ' 1 1 igau ;
   FIN BSMYZU ;

*  Comparaison des deplacements-----------------------------------------

   icomp = 1 ;
   ino = 0 ;
   REPETER BUX nbno ;
      ino = ino + 1 ;
      SI (NON (EGA uxu.ino 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' uxu.ino
                 'Composante ' (EXTR LDEPL icomp)
                 ' Noeud' ino 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 10 ; errabs = uxu.ino ; QUITTER BECART ;
      FINSI ;
   FIN BUX ;

   icomp = 2 ;
   ino = 0 ;
   REPETER BUY nbno ;
      ino = ino + 1 ;
      SI (NON (EGA uyu.ino 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' uyu.ino
                 'Composante ' (EXTR LDEPL icomp)
                 ' Noeud' ino 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 10 ; errabs = uyu.ino ; QUITTER BECART ;
      FINSI ;
   FIN BUY ;

   icomp = 3 ;
   ino = 0 ;
   REPETER BUZ nbno ;
      ino = ino + 1 ;
      SI (ino < 5) ;
         SI (NON (EGA uzu.ino 0.0)) ;
            SI (EGA IMESS 1) ;
            Message 'Erreur absolue' uzu.ino
                    'Composante ' (EXTR LDEPL icomp)
                    ' Noeud' ino 'Etat' ietat ;
            Message ;
            FINSI ;
************ierr = 10 ; errabs = uzu.ino ; QUITTER BECART ;
         FINSI ;
      SINON ;
         duz = ABS (uz - uzu.ino) ;
         errrel = ABS (duz / uz) ;
         SI (errrel > critere) ;
************SI (EGA IMESS 1) ;
************Message 'Erreur relative' errrel
************        'Composante ' (EXTR LDEPL icomp)
************        ' Noeud' ino 'Etat' ietat ;
************Message 'uz =' uz 'uzu.ino =' uzu.ino ;
************Message ;
************FINSI ;
            ierr = 11 ; QUITTER BECART ;
         FINSI ;
      FINSI ;
   FIN BUZ ;

*  Comparaison des deformations totales---------------------------------

   icomp = 1 ;
   igau = 0 ;
   REPETER BEPXX nbgau ;
      igau = igau + 1 ;
      SI (NON (EGA epxxu.igau 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' epxxu.igau
                 'Composante ' (EXTR LDEFO icomp)
                 ' Point Gauss' igau 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 20 ; errabs = epxxu.igau ; QUITTER BECART ;
      FINSI ;
   FIN BEPXX ;

   icomp = 2 ;
   igau = 0 ;
   REPETER BEPYY nbgau ;
      igau = igau + 1 ;
      SI (NON (EGA epyyu.igau 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' epyyu.igau
                 'Composante ' (EXTR LDEFO icomp)
                 ' Point Gauss' igau 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 20 ; errabs = epyyu.igau ; QUITTER BECART ;
      FINSI ;
   FIN BEPYY ;

   icomp = 3 ;
   igau = 0 ;
   REPETER BEPZZ nbgau ;
      igau = igau + 1 ;
      depzz = ABS (epzz - epzzu.igau) ;
      errrel = ABS (depzz / epzz) ;
      SI (errrel > critere) ;
*********SI (EGA IMESS 1) ;
*********Message 'Erreur relative' errrel
*********        'Composante ' (EXTR LDEFO icomp)
*********        ' Point Gauss' igau 'Etat' ietat ;
*********Message 'epzz =' epzz 'epzzu.igau =' epzzu.igau ;
*********Message ;
*********FINSI ;
         ierr = 21 ; QUITTER BECART ;
      FINSI ;
   FIN BEPZZ ;

   icomp = 4 ;
   igau = 0 ;
   REPETER BGAXY nbgau ;
      igau = igau + 1 ;
      SI (NON (EGA gaxyu.igau 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' gaxyu.igau
                 'Composante ' (EXTR LDEFO icomp)
                 ' Point Gauss' igau 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 20 ; errabs = gaxyu.igau ; QUITTER BECART ;
      FINSI ;
   FIN BGAXY ;

   icomp = 5 ;
   igau = 0 ;
   REPETER BGAXZ nbgau ;
      igau = igau + 1 ;
      SI (NON (EGA gaxzu.igau 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' gaxzu.igau
                 'Composante ' (EXTR LDEFO icomp)
                 ' Point Gauss' igau 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 20 ; errabs = gaxzu.igau ; QUITTER BECART ;
      FINSI ;
   FIN BGAXZ ;

   icomp = 6 ;
   igau = 0 ;
   REPETER BGAYZ nbgau ;
      igau = igau + 1 ;
      SI (NON (EGA gayzu.igau 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' gayzu.igau
                 'Composante ' (EXTR LDEFO icomp)
                 ' Point Gauss' igau 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 20 ; errabs = gayzu.igau ; QUITTER BECART ;
      FINSI ;
   FIN BGAYZ ;

*  Comparaison des contraintes------------------------------------------

   icomp = 1 ;
   igau = 0 ;
   REPETER BSMXX nbgau ;
      igau = igau + 1 ;
      dsmxx = ABS (smxx - smxxu.igau) ;
      errrel = ABS (dsmxx / smxx) ;
      SI (errrel > critere) ;
*********SI (EGA IMESS 1) ;
*********Message 'Erreur relative' errrel
*********        'Composante ' (EXTR LCONT icomp)
*********        ' Point Gauss' igau 'Etat' ietat ;
*********Message 'smxx =' smxx 'smxxu.igau =' smxxu.igau ;
*********Message ;
*********FINSI ;
         ierr = 31 ; QUITTER BECART ;
      FINSI ;
   FIN BSMXX ;

   icomp = 2 ;
   igau = 0 ;
   REPETER BSMYY nbgau ;
      igau = igau + 1 ;
      dsmyy = ABS (smyy - smyyu.igau) ;
      errrel = ABS (dsmyy / smyy) ;
      SI (errrel > critere) ;
*********SI (EGA IMESS 1) ;
*********Message 'Erreur relative' errrel
*********        'Composante ' (EXTR LCONT icomp)
*********        ' Point Gauss' igau 'Etat' ietat ;
*********Message 'smyy =' smyy 'smyyu.igau =' smyyu.igau ;
*********Message ;
*********FINSI ;
         ierr = 31 ; QUITTER BECART ;
      FINSI ;
   FIN BSMYY ;

   icomp = 3 ;
   igau = 0 ;
   REPETER BSMZZ nbgau ;
      igau = igau + 1 ;
      dsmzz = ABS (smzz - smzzu.igau) ;
      errrel = ABS (dsmzz / smzz) ;
      SI (errrel > critere) ;
*********SI (EGA IMESS 1) ;
*********Message 'Erreur relative' errrel
*********        'Composante ' (EXTR LCONT icomp)
*********        ' Point Gauss' igau 'Etat' ietat ;
*********Message 'smzz =' smzz 'smzzu.igau =' smzzu.igau ;
*********Message ;
*********FINSI ;
         ierr = 31 ; QUITTER BECART ;
      FINSI ;
   FIN BSMZZ ;

   icomp = 4 ;
   igau = 0 ;
   REPETER BSMXY nbgau ;
      igau = igau + 1 ;
      SI (NON (EGA smxyu.igau 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' smxyu.igau
                 'Composante ' (EXTR LCONT icomp)
                 ' Point Gauss' igau 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 30 ; errabs = smxyu.igau ; QUITTER BECART ;
      FINSI ;
   FIN BSMXY ;

   icomp = 5 ;
   igau = 0 ;
   REPETER BSMXZ nbgau ;
      igau = igau + 1 ;
      SI (NON (EGA smxzu.igau 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' smxzu.igau
                 'Composante ' (EXTR LCONT icomp)
                 ' Point Gauss' igau 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 30 ; errabs = smxzu.igau ; QUITTER BECART ;
      FINSI ;
   FIN BSMXZ ;

   icomp = 6 ;
   igau = 0 ;
   REPETER BSMYZ nbgau ;
      igau = igau + 1 ;
      SI (NON (EGA smyzu.igau 0.0)) ;
         SI (EGA IMESS 1) ;
         Message 'Erreur absolue' smyzu.igau
                 'Composante ' (EXTR LCONT icomp)
                 ' Point Gauss' igau 'Etat' ietat ;
         Message ;
         FINSI ;
*********ierr = 30 ; errabs = smyzu.igau ; QUITTER BECART ;
      FINSI ;
   FIN BSMYZ ;

FIN BECART ;

* FIN   BOUCLE COMPARAISON DES RESULTATS________________________________

* MESSAGES D'ERREUR_____________________________________________________

SI (ierr > 0) ;

   SI (EGA ierr 10) ;
      Message 'Erreur absolue' errabs 'Composante ' (EXTR LDEPL icomp)
              ' Noeud' ino 'Etat' ietat ;
      ERRE 5 ;
   FINSI ;

   SI (EGA ierr 11) ;
      Message 'Erreur relative' errrel 'Composante ' (EXTR LDEPL icomp)
              ' Noeud' ino 'Etat' ietat ;
      ERRE 5 ;
   FINSI ;

   SI (EGA ierr 20) ;
      Message 'Erreur absolue' errabs 'Composante ' (EXTR LDEFO icomp)
              ' Point Gauss' igau 'Etat' ietat ;
      ERRE 5 ;
   FINSI ;

   SI (EGA ierr 21) ;
      Message 'Erreur relative' errrel 'Composante ' (EXTR LDEFO icomp)
              ' Point Gauss' igau 'Etat' ietat ;
      ERRE 5 ;
   FINSI ;

   SI (EGA ierr 30) ;
      Message 'Erreur absolue' errabs 'Composante ' (EXTR LCONT icomp)
              ' Point Gauss' igau 'Etat' ietat ;
      ERRE 5 ;
   FINSI ;

   SI (EGA ierr 31) ;
      Message 'Erreur relative' errrel 'Composante ' (EXTR LCONT icomp)
              ' Point Gauss' igau 'Etat' ietat ;
      ERRE 5 ;
   FINSI ;

SINON ;

   Message 'Resultats concordants avec la solution theorique' ;
   Message 'Aucune erreur relative superieure a ' critere
           ' pour les composantes' ;
   Message (EXTR LDEPL idepl) '  ' (EXTR LDEFO idefo) '  '
           (EXTR LCONT icon1) '  ' (EXTR LCONT icon2) '  '
           (EXTR LCONT icon3) ;
   ERRE 0 ;

FINSI ;

FIN ;

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer