* 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