Date: 21 février 2007
Version | Date | Modifications | Auteur(s) |
---|---|---|---|
01 | 30/01/2007 | Création | PC |
Mots clefs : plasticité, STAT_NON_LINE, déformation plastique cumulée, indicateur plastique.
Ce document se voulant interactif, le signalement de toute erreur est le bienvenu il en va de même pour les améliorations.
Le lecteur est invité à lire le tutorial 1 (CAELINUX_post-traitement.pdf) traitant spécifiquement du post-traitement (graphique) des résultats ; il y trouvera quelques façons de visualiser les résultats (déplacements, champs de contraintes, courbes, etc. ...). De cette façon, les différents tutoriaux se concentreront sur le thème de la note.
La modélisation correspond à une jante en aluminium soumise à un déplacement imposé au niveau du moyeu.
Les calculs ont été réalisés sous Code Aster
V8.3.
NOTA : Le calcul a demandé 350 Kmots sous 32 bits ; cette quantité correspond à la mémoire maximale que peut gérer le compilateur (version NECS
). En cas de limitation mémoire, il est possible de demander à Code Aster
d'utiliser le moins de ressource possible en sélectionnant le mot clef COMPACTE
mais il est important de garder à l'esprit que c'est au prix de très nombreux accès disque (swap) et le temps de calculs s'en trouve grandement augmenté.
Il est en effet dommage de relancer tout un calcul (particulièrement si celui-ci est long) pour une problématique de post-traitement (recherche d'un instant particulier, calcul d'une grandeur supplémentaire ou tout simplement une erreur de post-traitement).
Etape 1 : calcul mécanique
F mess /rim_MEC_P2.mess R 6 F erre /rim_MEC_P2.erre R 9 R base /base_MECA_P2 R 0 F comm /rim_MEC_P2.comm D 1 F unv /rim3_tiers.unv D 19
Etape 2 : Post-traitement des résultats mécaniques - sous Gibi
ici
F mess /rim_MEC_P2_post.mess R 6 F erre /rim_MEC_P2_post.erre R 9 R base /base_MECA_P2 D 0 F comm /rim_MEC_P2_post.comm D 1 F cast /rim_P2_post.cast R 50
Le lecteur se reportera à l'annexe 1 pour trouver les unités à utiliser en fonction du dimensionnel du maillage. Dans le cas présent, la CAO étant en millimètre, les unités principales sont le MPa (N/mm) et le mm ; les résultats seront donc dans les mêmes unités.
PRE_IDEAS(); MAIL_P2=LIRE_MAILLAGE(); #Définition & affectation modèle MODELE=AFFE_MODELE(MAILLAGE=MAIL_P2, AFFE=_F(GROUP_MA='RIM', PHENOMENE='MECANIQUE', MODELISATION='3D',),);
NOTA : La partie plastique est implémentée dans Code Aster
sous la forme
. L'abscisse de la première contrainte est non nulle ; elle correspond à la déformation élastique (
).
Ces propriétés sont affectées à l'ensemble du maillage.
ELAST_PL=DEFI_FONCTION(NOM_PARA='EPSI', NOM_RESU='SIGM', VALE= (0.0015,105.0,0.002,113.0,0.003,117.0,0.004,120.0,0.005,122.0,0.01,135.0,0.02, 155.0,0.03,172.0,0.04,186.0,0.05,198.0,0.06,208.0,0.07,218.0,0.08,227.0,0.09,234.0,0.1,241.0, 0.11,248.0,0.12,254.0,0.13,259.0,0.14,264.0,0.15,268.0,0.16,273.0,0.17,276.0,0.18,280.0,0.19, 283.0,0.2,286.0,), INTERPOL='LIN', PROL_DROITE='LINEAIRE', PROL_GAUCHE='CONSTANT',); A6000=DEFI_MATERIAU(ELAS=_F(E=70000, NU=0.3,), TRACTION=_F(SIGM=ELAST_PL,),);
La symétrie cyclique est exploitée (le lecteur est invité à se reporter au tutorial n2 - CAELINUX_symetrie_cyclique.pdf - pour des explications détaillées). Les CL sont les suivantes (cf. également fig. 7) :
NOTA : A noter que les groupes créés et affectés aux repères local & global ne doivent pas avoir des noeuds communs sous peine de conditions redondantes des opérations booléennes sont opérées.
#Definition des groupes de noeuds à partir des groupes de mailles MAIL_P2=DEFI_GROUP(reuse =MAIL_P2, MAILLAGE=MAIL_P2, CREA_GROUP_NO=(_F(GROUP_MA='PLAN_XOY',), _F(GROUP_MA='PLAN_120',), _F(GROUP_MA='APPUI1',), _F(GROUP_MA='APPUI2',), _F(GROUP_MA='DEPL1',), _F(GROUP_MA='DEPL2',),),); #Opérations booléennes pour retirer les noeuds communs à PLAN_XoY & PLAN_120 MAIL_P2=DEFI_GROUP(reuse =MAIL_P2, MAILLAGE=MAIL_P2, CREA_GROUP_NO=(_F(INTERSEC=('PLAN_120','PLAN_XOY',), NOM='N_COM_PL',), _F(DIFFE=('PLAN_XOY','N_COM_PL',), NOM='PLAN_G',), _F(INTERSEC=('PLAN_120','APPUI1',), NOM='APPUI_LO',), _F(DIFFE=('APPUI1','APPUI_LO',), NOM='APPUI_G',), _F(INTERSEC=('DEPL1','PLAN_120',), NOM='DEPL_LO',), _F(DIFFE=('DEPL1','DEPL_LO',), NOM='DEPL_G',),),);
CL=AFFE_CHAR_MECA(MODELE=MODELE, DDL_IMPO=(_F(GROUP_NO='PLAN_G', DZ=0.0,), _F(GROUP_NO='APPUI_G', DY=0.0,),), LIAISON_OBLIQUE=(_F(GROUP_NO='PLAN_120', ANGL_NAUT=(0,-120,0,), DZ=0.0,), _F(GROUP_NO='APPUI_LO', ANGL_NAUT=(0,-120,0,), DY=0,),),);
L'établissement de chaque pas de temps (un pas = un incrément de temps) relève d'une stratégie qui vise à permettre la convergence du calcul (sans convergence point de résultat) tout en ayant des temps de calculs raisonnables :
Nous imposons un déplacement de 10 mm ; ce dernier s'applique en 10 fois sur le premier millimètre (variation linéaire, c'est-à-dire tous les 0.1 mm) et tous les 0.25 mm ensuite2.
DEPL_IMP=DEFI_FONCTION(NOM_PARA='INST', VALE=(0.0,0.0, 1.0,10, ), INTERPOL='LIN', PROL_DROITE='LINEAIRE', PROL_GAUCHE='CONSTANT',); CHARGMNT=AFFE_CHAR_MECA_F(MODELE=MODELE, DDL_IMPO=_F(GROUP_NO='DEPL_G', DY=DEPL_IMP,), LIAISON_OBLIQUE=_F(GROUP_NO='DEPL_LO', ANGL_NAUT=(0,-120,0,), DY=DEPL_IMP,),); PAS=DEFI_LIST_REEL(DEBUT=0, INTERVALLE=(_F(JUSQU_A=1, PAS=0.1,), _F(JUSQU_A=10, PAS=0.25,),),);
Nombre de paramètres sont accessibles et nous nous proposons de donner quelques pistes pour les explications (dans la limite de notre propre compréhension) nul doute qu'à elle seule cette partie devrait être à l'origine de nombreux commentaires3.
RESOL_NL=STAT_NON_LINE(MODELE=MODELE, CHAM_MATER=MATERIO, EXCIT=(_F(CHARGE=CL,), _F(CHARGE=CHARGMNT,),), COMP_INCR=_F(RELATION='VMIS_ISOT_TRAC', DEFORMATION='GREEN',), INCREMENT=_F(LIST_INST=PAS, SUBD_PAS=4, SUBD_PAS_MINI=1e-006,), NEWTON=_F(REAC_ITER=0,), CONVERGENCE=_F(RESI_GLOB_RELA=1e-006, ITER_GLOB_MAXI=10,), ARCHIVAGE=_F(LIST_INST=PAS, ARCH_ETAT_INIT='OUI',),);
Le potentiel plastique et le type d'écrouissage (isotrope, cinématique, mixte, etc. ...) sont définis au travers du mot clef RELATION ; ce sont par exemple les potentiels de VON MISES, ROUSSELIER, LEMAITRE, CHABOCHE, NORTON-HOFF, MAZARS, DRUCKER-PRAGER, etc.
A noter que d'autres types d'écrouissage sont disponibles, à savoir un écrouissage isotrope linéaire (VMIS_ISOT_LINE) ou un écrouissage cinématique linéaire (VMIS_CINE_LINE).
Pour notre calcul élastoplastique nous choisissons naturellement le tenseur de SIMO_MIEHE.
Pour palier à ce dernier problème, il est possible de spécifier la subdivision du pas courant (mot clef SUBD_PAS) et un seuil mini en-dessous duquel il n'est pas raisonnable de descendre (et en-dessous duquel le calcul s'arrête (SUBD_PAS_MINI)).
Pour tout calcul non-linéaire dont on ne connaît pas la convergence, c'est une démarche qu'il est nécessaire d'adopter.
Il est possible de définir des archivages spécifiques avec DEFI_LIST_REEL ; dans la cas présent, nous archivons selon de découpage prévu avec PAS.
![]()
|
Les figures suivantes (fig. 11 à 13) montrent le module des déplacements au dernier ordre.
![]()
|
Les 3 dernières figures (fig. 14 à 16) montrent les vecteurs déplacements au dernier ordre.
![]()
|
![]()
|
![]()
|
![]()
|
![]()
|
NOTA : l'indicateur prend la valeur 1 quand l'élément a plastifie, 0 sinon ; bien que les codes couleur indiquent des valeurs proches de 0 ou 1, les 3 figures (fig. 26 à 28) mettent en évidence les effets de l'extrapolation.
La courbe présentée à la figure 30 montre cette évolution. L'inflexion de la courbe entre 1 et 1.25 mm pointe le "moment" à partir duquel la pièce plastifie.
Si les premiers donnent rapidement des résultats et peuvent servir à optimiser les incréments (éviter les subdivisions inutiles), ils demeurent moins précis que les éléments quadratiques, particulièrement dans les zones à fort gradient.
La figure 31 montre que la contrainte maximale (éléments P1) est de l'ordre de 10% inférieure à celle calculée avec des éléments quadratiques (cf. figure 17).
DEBUT(MEMOIRE=_F(TYPE_ALLOCATION=4, TAILLE=41000, PARTITION=0.83,),); #Lecture maillage PRE_IDEAS(); MAIL_P2=LIRE_MAILLAGE(); #Définition & affectation modèle MODELE=AFFE_MODELE(MAILLAGE=MAIL_P2, AFFE=_F(GROUP_MA='RIM', PHENOMENE='MECANIQUE', MODELISATION='3D',),); #Définition du materiau ELAST_PL=DEFI_FONCTION(NOM_PARA='EPSI', NOM_RESU='SIGM', VALE= (0.0015,105.0,0.002,113.0,0.003,117.0,0.004,120.0,0.005,122.0,0.01,135.0,0.02, 155.0,0.03,172.0,0.04,186.0,0.05,198.0,0.06,208.0,0.07,218.0,0.08,227.0,0.09,234.0,0.1,241.0, 0.11,248.0,0.12,254.0,0.13,259.0,0.14,264.0,0.15,268.0,0.16,273.0,0.17,276.0,0.18,280.0,0.19, 283.0,0.2,286.0,0.25,299.0,0.3,308.0,0.35,314.0,0.4,319.0,0.45,322.0,0.5,325.0,0.9,333.0,), INTERPOL='LIN', PROL_DROITE='LINEAIRE', PROL_GAUCHE='CONSTANT',); A6000=DEFI_MATERIAU(ELAS=_F(E=70000, NU=0.3,), TRACTION=_F(SIGM=ELAST_PL,),); MATERIO=AFFE_MATERIAU(MAILLAGE=MAIL_P2, AFFE=_F(GROUP_MA='RIM', MATER=A6000,),); #Definition des groupes de noeuds à partir des groupes de mailles MAIL_P2=DEFI_GROUP(reuse =MAIL_P2, MAILLAGE=MAIL_P2, CREA_GROUP_NO=(_F(GROUP_MA='PLAN_XOY',), _F(GROUP_MA='PLAN_120',), _F(GROUP_MA='APPUI1',), _F(GROUP_MA='APPUI2',), _F(GROUP_MA='DEPL1',), _F(GROUP_MA='DEPL2',),),); #Opérations booléennes pour retirer les noeuds communs à PLAN_XoY & PLAN_120 MAIL_P2=DEFI_GROUP(reuse =MAIL_P2, MAILLAGE=MAIL_P2, CREA_GROUP_NO=(_F(INTERSEC=('PLAN_120','PLAN_XOY',), NOM='N_COM_PL',), _F(DIFFE=('PLAN_XOY','N_COM_PL',), NOM='PLAN_G',), _F(INTERSEC=('PLAN_120','APPUI1',), NOM='APPUI_LO',), _F(DIFFE=('APPUI1','APPUI_LO',), NOM='APPUI_G',), _F(INTERSEC=('DEPL1','PLAN_120',), NOM='DEPL_LO',), _F(DIFFE=('DEPL1','DEPL_LO',), NOM='DEPL_G',),),); #Définition des CL CL=AFFE_CHAR_MECA(MODELE=MODELE, DDL_IMPO=(_F(GROUP_NO='PLAN_G', DZ=0.0,), _F(GROUP_NO='APPUI_G', DY=0.0,),), LIAISON_OBLIQUE=(_F(GROUP_NO='PLAN_120', ANGL_NAUT=(0,-120,0,), DZ=0.0,), _F(GROUP_NO='APPUI_LO', ANGL_NAUT=(0,-120,0,), DY=0,),),); #Définition du chargement : déplacement imposé DEPL_IMP=DEFI_FONCTION(NOM_PARA='INST', VALE=(0,0, 10,10, ), INTERPOL='LIN', PROL_DROITE='LINEAIRE', PROL_GAUCHE='CONSTANT',); CHARGMNT=AFFE_CHAR_MECA_F(MODELE=MODELE, DDL_IMPO=_F(GROUP_NO='DEPL_G', DY=DEPL_IMP,), LIAISON_OBLIQUE=_F(GROUP_NO='DEPL_LO', ANGL_NAUT=(0,-120,0,), DY=DEPL_IMP,),); #Définition du calcul NL PAS=DEFI_LIST_REEL(DEBUT=0, INTERVALLE=(_F(JUSQU_A=1, PAS=0.1,), _F(JUSQU_A=10, PAS=0.25,),),); RESOL_NL=STAT_NON_LINE(MODELE=MODELE, CHAM_MATER=MATERIO, EXCIT=(_F(CHARGE=CL,), _F(CHARGE=CHARGMNT,),), COMP_INCR=_F(RELATION='VMIS_ISOT_TRAC', DEFORMATION='SIMO_MIEHE',), INCREMENT=_F(LIST_INST=PAS, SUBD_PAS=4, SUBD_PAS_MINI=1e-006,), NEWTON=_F(PREDICTION='TANGENTE', REAC_ITER=0,), CONVERGENCE=_F(RESI_GLOB_RELA=1e-006, ITER_GLOB_MAXI=10,), ARCHIVAGE=_F(LIST_INST=PAS, ARCH_ETAT_INIT='OUI', CHAM_EXCLU=('VARI_NON_LOCAL','LANL_ELGA',),), INFO=2,); FIN();
POURSUITE(); RESOL_NL=CALC_ELEM(reuse =RESOL_NL, RESULTAT=RESOL_NL, OPTION=('SIEF_ELNO_ELGA','EQUI_ELNO_SIGM','VARI_ELNO_ELGA','EPSI_ELNO_DEPL','EQUI_ELNO_EPSI',),); IMPR_RESU(FORMAT='CASTEM', UNITE=50, RESU=_F(MAILLAGE=MAIL_P2, RESULTAT=RESOL_NL, NOM_CHAM=('DEPL','EQUI_ELNO_SIGM','VARI_ELNO_ELGA','EQUI_ELNO_EPSI',), INST=10, TOUT_CMP='OUI',),); #Calcul de la réaction aux noeuds RESOL_NL=CALC_NO(reuse =RESOL_NL, RESULTAT=RESOL_NL, TOUT_ORDRE='OUI', OPTION='FORC_NODA', GROUP_NO_RESU=('DEPL_G','DEPL_LO',),); #Evolution de la contrainte max de Von mises au cours du calcul MAIL_P2=DEFI_GROUP(reuse =MAIL_P2, MAILLAGE=MAIL_P2, CREA_GROUP_NO=_F(GROUP_MA='RIM',),); POST_R=POST_RELEVE_T(ACTION=(_F(OPERATION='EXTRACTION', INTITULE='Uy', RESULTAT=RESOL_NL, NOM_CHAM='DEPL', TOUT_ORDRE='OUI', NOEUD='N9882', NOM_CMP='DY',), _F(OPERATION='EXTRACTION', INTITULE='Resultante', RESULTAT=RESOL_NL, NOM_CHAM='FORC_NODA', TOUT_ORDRE='OUI', NOEUD='N9882', RESULTANTE='DY',),),); IMPR_TABLE(TABLE=POST_R,); Dy=RECU_FONCTION(TABLE=POST_R, PARA_X='INST', PARA_Y='DY', FILTRE=_F(NOM_PARA='INTITULE', VALE_K='Uy',),); FY=RECU_FONCTION(TABLE=POST_R, PARA_X='INST', PARA_Y='DY', FILTRE=_F(NOM_PARA='INTITULE', VALE_K='Resultante',),); IMPR_FONCTION(FORMAT='XMGRACE', UNITE=51, COURBE=_F(FONC_X=Dy, FONC_Y=FY,), TITRE='Reaction VS deplacement', LEGENDE_X='Deplacement [mm]', LEGENDE_Y='Reaction [N]',); FIN();
************************************************************* * donner ici le nom du fichier de post traitement (*.cast) fich='rim_MEC_P2_post.cast'; option rest form fich ; rest form ; ************************************************************* * donner ici le nom du maillage utilise dans le fichier de * commandes ASTER et le nom du resultat maya1 = MAIL_P2 ; res1 = RESOL_NL ; e1 = maya1 elem cu20 ; e2 = maya1 elem pr15 ; new1 = e1 ET e2 ; ************************************************************* list res1.1; oe1 = 0. 0. -1000. ; oe2 = 0. -1000. 0. ; oe3 = 0. 1000. 1000. ; oe4 = 1000. 0. 0. ; depl1 = res1 . 1 . depl ; sig_eq1 = res1 . 1 . equi_elno_sigm ; plast1 = res1 . 1 .vari_elno_elga ; epsi1 = res1 . 1 .equi_elno_epsi ; q1 = exco depl1 ux ; q2 = exco depl1 uy ; q3 = exco depl1 uz ; module = ((q1**2) + (q2**2) + (q3**2))**(0.5) ; modcast = mode maya1 mecanique elastique ; * visualisation des deformees defo1 = defo new1 depl1 rouge ; defo0 = defo new1 depl1 0. vert ; titre 'Deformee ' ; trac cach oe1 (defo1 et defo0) ; trac cach oe2 (defo1 et defo0) ; trac cach oe3 (defo1 et defo0) ; trac cach oe4 (defo1 et defo0) ; titre 'Isovaleurs des deplacements' ; trac oe1 module new1 ; trac oe2 module new1 ; trac oe3 module new1 ; trac oe4 module new1 ; titre 'Contraintes équivalente de Von Mises' ; vmi1 = exco vmis sig_eq1 ; trac oe1 vmi1 modcast ; trac oe2 vmi1 modcast ; trac oe3 vmi1 modcast ; trac oe4 vmi1 modcast ; titre 'Contraintes équivalente de Von Mises sur déformée' ; trac oe1 vmi1 modcast defo1 ; trac oe2 vmi1 modcast defo1 ; trac oe3 vmi1 modcast defo1 ; trac oe4 vmi1 modcast defo1 ; titre 'Visualisation des deplacements' ; VISU_VEC = VECT depl1 32 ; trac cach oe1 VISU_VEC new1 ; trac cach oe2 VISU_VEC new1 ; trac cach oe3 VISU_VEC new1 ; trac cach oe4 VISU_VEC new1 ; titre 'Déformations équivalente' ; eps1 = exco IN_2 epsi1 ; trac oe1 eps1 modcast ; trac oe2 eps1 modcast ; trac oe3 eps1 modcast ; trac oe4 eps1 modcast ; titre 'Visualisation des deformations plastiques cumulees' ; pl_v1 = exco v1 plast1 ; trac cach oe1 pl_v1 modcast ; trac cach oe2 pl_v1 modcast ; trac cach oe3 pl_v1 modcast ; trac cach oe4 pl_v1 modcast ; titre 'Visualisation Indicateur de plasticite' ; pl_v2 = exco v2 plast1 ; trac cach oe1 pl_v2 modcast ; trac cach oe2 pl_v2 modcast ; trac cach oe3 pl_v2 modcast ; trac cach oe4 pl_v2 modcast ;
Remerciements : Les auteurs souhaitent remercier les personnes de la communauté de Code Aster
qui ont fourni aides et informations précieuses : qu'ils en soient chaleureusement remercier. L'ensemble des notes présentes sur le site ne sont que la continuation de cet esprit "libre" qui vise entre-autres choses partager son savoir et son travail
L'auteur : Paul CARRICO5.
Les commentaires sont à adresser à :
paul.carrico_at_free.fr
Unités | METRIQUE | METRIQUE | ANGLO-SAXONNE | ANGLO-SAXONNE |
---|---|---|---|---|
MKS | mmNS | FPS | IPS | |
Longueur | m | mm | ft | in |
Temps | sec | sec | sec | sec |
Masse | Kg | tonne | slug | lbf-sec![]() |
Force | N | N | lbf | lbf |
Température | ![]() |
![]() |
![]() |
![]() |
Aire | m![]() |
mm![]() |
ft![]() |
in![]() |
Volume | m![]() |
mm![]() |
ft![]() |
in![]() |
Vitesse | m/sec | mm/sec | ft/sec | in/sec |
Accélération | m/sec![]() |
mm/sec![]() |
ft/sec![]() |
in/sec![]() |
Angle, rotation | rad | rad | rad | rad |
Vitesse angulaire | rad/sec![]() |
rad/sec![]() |
rad/sec![]() |
rad/sec![]() |
Masse volumique | Kg/m![]() |
Tonne/mm![]() |
slug/ft![]() |
lbf-sec![]() ![]() |
Moment, couple | N-m | N-mm | ft-lbf | in-lbf |
Force linéïque | N/m | N/mm | lbf/ft | lbf/in |
Force répartie sur une surface | N/m![]() |
N/mm![]() |
lbf/ft![]() |
lbf/in![]() |
(Contrainte, pression,Module d'Young) | (Pa) | (MPa) | (Psi) | |
Coefficient de Dilatation thermique | /![]() |
/![]() |
/![]() |
/![]() |
(/K) | (/K) | (/K) | (/K) | |
Moment Quadratique d'une poutre ![]() |
m![]() |
mm![]() |
ft![]() |
in![]() |
Moment d'inertie transverse d'une poutre | Kg-m![]() |
tonne-mm![]() |
slug-ft![]() |
lbf-in-sec![]() |
Energie, Travail, Chaleur | J | mJ | ft-lbf | in-lbf |
Puissance, taux de transfert thermique | W | mW | ft-lbf/sec | in-lbf/sec |
Gradient de température | ![]() |
![]() |
![]() |
![]() |
Flux thermique | W/m![]() |
mW/mm![]() |
lbf/ft-sec | lbf/in-sec |
Conductivité thermique | W/m-![]() |
mW/mm-![]() |
lbf/sec-![]() |
lbf/sec-![]() |
Chaleur spécifique C![]() |
J/Kg-![]() |
mJ/tonne-![]() |
ft-lbf/slug-![]() |
in![]() ![]() ![]() |
Rappels :
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 CAELINUX_plasticite.tex
The translation was initiated by on 2007-02-21