Date: 21 février 2007
Version | Date | Modifications | Auteur(s) |
---|---|---|---|
01 | 28/01/2007 | Création | PC |
Mots clefs : Symétrie cyclique, booléens, GROUP_MA, LIAISON_OBLIQUE, MECA_STATIQUE.
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.
Au travers d'un exemple, nous nous proposons ici :
NOTA : L'utilisation de HOMARD
permet de raffiner/déraffiner les maillages ; son utilisation fera ultérieurement l'objet d'un tutorial.
Les calculs ont été réalisés sous Code Aster
V8.3.
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), le mm et la T/mm
; les résultats seront donc dans les mêmes unités.
PRE_IDEAS(); MAIL=LIRE_MAILLAGE(); MODELE=AFFE_MODELE(MAILLAGE=MAIL, AFFE=_F(TOUT='OUI', PHENOMENE='MECANIQUE', MODELISATION='3D_SI',),);
SS304L=DEFI_MATERIAU(ELAS=_F(E=193000, NU=0.3, RHO=8.03e-009,),); MATERIAU=AFFE_MATERIAU(MAILLAGE=MAIL, AFFE=_F(TOUT='OUI', MATER=SS304L,),);
La définition du repère local se fait au travers de LIAISON_OBLIQUE dans AFFE_CHAR_MECA (nous retrouvons les 60 dans la définition de l'angle nautique3).
Les CL s'appliquent sur des noeuds ; nous avons cependant choisi d'utiliser ici des groupes de mailles (que nous transformons en groupe de noeuds avec CREA_GROUP_NO dans DEFI_GROUP). En dehors de toute modification/raffinement du maillage (avec Homard
par exemple) , le résultat est le même. En revanche si les faces seront bien raffinées par Homard
se traduisant par une augmentation du nombre de noeuds sur lesquels les CL s'appliquent, il n'en ira pas de même si les conditions aux limitent s'opèrent dès le début sur les GROUP_NO
les CL seront alors incomplètes4.
![]()
|
Contrairement aux éléments de coque ou de poutre (6 DDL), les éléments volumiques sont définis par 3 DDL (les 3 translations - comme pour les membranes et les barres) qu'il convient de bloquer sous peine d'avoir des pivots nuls (signe que le système est hypostatique et donc insoluble).
Le système reste isostatique en bloquant les noeuds des groupes (cf. fig. 3) :
NOTA :
Suite aux remarques précédentes, des opérations booléennes sont opérées de façon à retirer les noeuds communs aux 2 groupes de ENCASTRE selon le schéma :
Ce qui donne :
MAIL=DEFI_GROUP(reuse =MAIL, MAILLAGE=MAIL, CREA_GROUP_NO=(_F(GROUP_MA='ENCASTRE',), _F(GROUP_MA='PLAN_12',), _F(GROUP_MA='PLAN_YOZ',),),); MAIL=DEFI_GROUP(reuse =MAIL, MAILLAGE=MAIL, CREA_GROUP_NO=(_F(INTERSEC=('ENCASTRE','PLAN_12',), NOM='ENCAS_LO',), _F(DIFFE=('ENCASTRE','ENCAS_LO',), NOM='ENCASTRG',),),);
Le blocage des CL devient alors :
CL=AFFE_CHAR_MECA(MODELE=MODELE, DDL_IMPO=(_F(GROUP_NO='ENCASTRG', DY=0,), _F(GROUP_NO='PLAN_YOZ', DX=0,),), LIAISON_OBLIQUE=(_F(GROUP_NO='PLAN_12', ANGL_NAUT=(0,-60.0,0,), DX=0,), _F(GROUP_NO='ENCAS_LO', ANGL_NAUT=(0,-60,0,), DY=0,),),);
Pour le chargement, nous cherchons à modéliser un pseudo-serrage6 sous la forme d'une pression (correspondant à une vis ChC de M6 serrée à 10 NM). Pour le fun, nous supposons une gravité de 100G.
Rappelons que toute pression s'exerce en sens inverse de la normale (sortante) des faces (cette dernière est définie par la topologie des éléments) ; il est préférable de demander à Code Aster
de réorienter les normales des groupes de mailles utilisés (au pire il ne réoriente aucune maille ; au mieux il évite une erreur) :
MAIL=MODI_MAILLAGE(reuse =MAIL, MAILLAGE=MAIL, ORIE_PEAU_3D=_F(GROUP_MA='PRESSION',), MODELE=MODELE,); CHARGMNT=AFFE_CHAR_MECA(MODELE=MODELE, PESANTEUR=(0,-1,0,981000,), PRES_REP=_F(GROUP_MA='PRESSION', PRES=172.81,),);
RESOL=MECA_STATIQUE(MODELE=MODELE, CHAM_MATER=MATERIAU, EXCIT=(_F(CHARGE=CHARGMNT,), _F(CHARGE=CL,),),);
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 :
F mess /symetrie_cyclique.mess R 6 F erre /symetrie_cyclique.erre R 9 R base /base_symetrie_cyclique R 0 F unv /symetrie_cyclique.unv D 19 F comm /symetrie_cyclique.comm D 1
Etape 2 (Post-traitement - sous Gibi ici)
F comm /symetrie_cyclique_post.comm D 1 R base /base_symetrie_cyclique D 0 F mess /symetrie_cyclique_post.mess R 6 F erre /symetrie_cyclique_post.erre R 9 F resu /symetrie_cyclique_post.resu R 8 F pos /symetrie_cyclique_post.cast R 51
Contrairement à GMSH par exemple, GIBI
prend en compte aussi bien les éléments linéaires que quadratiques.
POURSUITE(); RESOL=CALC_ELEM(reuse =RESOL, RESULTAT=RESOL, OPTION=('SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',),); IMPR_RESU(FORMAT='CASTEM', UNITE=51, RESU=_F(MAILLAGE=MAIL, RESULTAT=RESOL, NOM_CHAM=('SIGM_ELNO_DEPL','EQUI_ELNO_SIGM','DEPL',),),); FIN();
************************************************************* * donner ici le nom du fichier de post traitement (*.cast) fich='symetrie_cyclique.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 ; res1 = RESOL ; ************************************************************* list res1.1; oe1 = 0. -500. 1000. ; oe2 = 0. 1000. 0. ; oe3 = 0. 1000. 1000. ; depl1 = res1 . 1 . depl ; e1 = res1 . 1 . equi_elno_sigm ; post1 = maya1 elem cu20; * visualisation des deformees defo1 = defo post1 depl1 rouge ; defo0 = defo post1 depl1 0. vert ; titre 'Deformee ' ; trac cach oe1 (defo1 et defo0) ; trac cach oe2 (defo1 et defo0) ; trac cach oe3 (defo1 et defo0) ; q1 = exco depl1 ux ; q2 = exco depl1 uy ; q3 = exco depl1 uz ; module = ((q1**2) + (q2**2) + (q3**2))**(0.5) ; titre 'Isovaleurs des deplacements' ; trac oe2 module post1 ; trac oe1 module post1 ; titre 'Visualisation des vecteurs deplacements' ; VISU_VEC = VECT depl1 1000 ; trac cach oe2 VISU_VEC post1 ; trac cach oe1 VISU_VEC post1 ; titre 'Contraintes équivalente de Von Mises' ; modcast = mode post1 mecanique elastique ; vmi1 = exco vmis e1 ; trac oe1 vmi1 modcast ; trac oe2 vmi1 modcast ; trac oe3 vmi1 modcast ; titre 'Contraintes équivalente de Von Mises sur déformée' ; trac oe1 vmi1 modcast defo1 ;
Les figures suivantes (de 5 à 7) montrent les contraintes de Von Mises sur le maillage (déformé ou non).
![]()
|
Cet exemple est intéressant à plus d'un titre. La présence de contraintes de Von Mises négatives devrait en effet faire réagir le calculateur sachant que :
Ceci signifie que l'extrapolation & le lissage des grandeurs peuvent induire des "approximation", chose qu'il faut avoir à l'esprit ; seules les valeurs calculées aux points d'intégration demeurent fiables.
![]()
|
Les 2 suivantes (fig. 10 et fig. 11) montrent les isovaleurs de déplacements.
![]()
|
Enfin, les 2 dernières (fig. 12 et fig. 13) montrent les vecteurs déplacements.
![]()
|
DEBUT(); PRE_IDEAS(); MAIL=LIRE_MAILLAGE(); MODELE=AFFE_MODELE(MAILLAGE=MAIL, AFFE=_F(TOUT='OUI', PHENOMENE='MECANIQUE', MODELISATION='3D_SI',),); MAIL=MODI_MAILLAGE(reuse =MAIL, MAILLAGE=MAIL, ORIE_PEAU_3D=_F(GROUP_MA='PRESSION',), MODELE=MODELE,); MAIL=DEFI_GROUP(reuse =MAIL, MAILLAGE=MAIL, CREA_GROUP_NO=(_F(GROUP_MA='ENCASTRE',), _F(GROUP_MA='PLAN_12',), _F(GROUP_MA='PLAN_YOZ',),),); MAIL=DEFI_GROUP(reuse =MAIL, MAILLAGE=MAIL, CREA_GROUP_NO=(_F(INTERSEC=('ENCASTRE','PLAN_12',), NOM='ENCAS_LO',), _F(DIFFE=('ENCASTRE','ENCAS_LO',), NOM='ENCASTRG',),),); SS304L=DEFI_MATERIAU(ELAS=_F(E=193000, NU=0.3, RHO=8.03e-009,),); MATERIAU=AFFE_MATERIAU(MAILLAGE=MAIL, AFFE=_F(TOUT='OUI', MATER=SS304L,),); CL=AFFE_CHAR_MECA(MODELE=MODELE, DDL_IMPO=(_F(GROUP_NO='ENCASTRG', DY=0,), _F(GROUP_NO='PLAN_YOZ', DX=0,),), LIAISON_OBLIQUE=(_F(GROUP_NO='PLAN_12', ANGL_NAUT=(0,-60.0,0,), DX=0,), _F(GROUP_NO='ENCAS_LO', ANGL_NAUT=(0,-60,0,), DY=0,),),); CHARGMNT=AFFE_CHAR_MECA(MODELE=MODELE, PESANTEUR=(0,-1,0,981000,), PRES_REP=_F(GROUP_MA='PRESSION', PRES=172.81,),); RESOL=MECA_STATIQUE(MODELE=MODELE, CHAM_MATER=MATERIAU, EXCIT=(_F(CHARGE=CHARGMNT,), _F(CHARGE=CL,),),); FIN();
POURSUITE(); RESOL=CALC_ELEM(reuse =RESOL, RESULTAT=RESOL, OPTION=('SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',),); IMPR_RESU(FORMAT='CASTEM', UNITE=51, RESU=_F(MAILLAGE=MAIL, RESULTAT=RESOL, NOM_CHAM=('SIGM_ELNO_DEPL','EQUI_ELNO_SIGM','DEPL',),),); FIN();
Remerciements : L'auteur(s) souhaite(nt) remercier les personnes de la communauté de Code Aster
et de Cast3M
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 CARRICO7.
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_symetrie_cyclique.tex
The translation was initiated by on 2007-02-21