Contrib:Johnnygeling/springplate

From CAELinuxWiki
Revision as of 22:59, 21 April 2010 by Johnnygeling (Talk | contribs) ('''The model''')

Jump to: navigation, search

Sheetmetal spring with contact (shell elements with contact)

under construction (johnnygeling 10:09, 17 April 2010 (CEST))

Introduction

This contribution mainly focuses on the use of Salome, Code Aster and particular howto deal with shell elements and contact. So I do not focus on the results and the mechanical justifications of the code that has been used. So no guarantee that the results will be correct up to five decimal places, which they are probably not. I do hope though that this information is useful. For me it has been, because I had to think about some commands and look through the documentation and learn from that. In case of mistakes, errors or remarks, please notify me, or better, you are invited to correct or edit them yourself. Enjoy.

The geometry

The geometry and the mesh of the construction

The description of this problem is shown in the picture:

Shell spring problem description.png

The mesh

The mesh is divided in three components:

  • drive
  • bladveer
  • wall

The assemble mesh is shown:

Mesh assy.png

The model

The .comm files:

coque_3d

Read mesh file off 'bladveer' component

bladveer=LIRE_MAILLAGE(UNITE=20,
                       FORMAT='MED',
                       VERI_MAIL=_F(VERIF='OUI',),);


Read mesh file off 'drive' component

drive=LIRE_MAILLAGE(UNITE=21,
                    FORMAT='MED',
                    VERI_MAIL=_F(),);


Read mesh file off 'wall' component

wall=LIRE_MAILLAGE(UNITE=22,
                   FORMAT='MED',
                   VERI_MAIL=_F(),);


Assemble 2 meshes into a temporary mesh:

temp_m=ASSE_MAILLAGE(MAILLAGE_1=bladveer,
                     MAILLAGE_2=drive,
                     OPERATION='SUPERPOSE',);


Assemble the temporary mesh with the last mesh:

mesh=ASSE_MAILLAGE(MAILLAGE_1=temp_m,
                   MAILLAGE_2=wall,
                   OPERATION='SUPERPOSE',);


Transform the quad mesh with 8 node into a quad mesh with 9 nodes:

meshQ=CREA_MAILLAGE(MAILLAGE=mesh,
                    MODI_MAILLE=_F(TOUT='OUI',
                                   OPTION='QUAD8_9',),);

Orientation off the surfaces:

meshQ=MODI_MAILLAGE(reuse =meshQ,
                    MAILLAGE=meshQ,
                    ORIE_NORM_COQUE=_F(GROUP_MA=('f_wall','f_reac_c',),),);

Define material properties. (Be aware of the units of the mesh)

staal=DEFI_MATERIAU(ELAS=_F(E=2.1E11,
                            NU=0.3,),);

Apply material to domain:

Appl_mat=AFFE_MATERIAU(MAILLAGE=meshQ,
                       AFFE=_F(TOUT='OUI',
                               MATER=staal,),);

Create model:

model=AFFE_MODELE(MAILLAGE=meshQ,
                  VERIF=('MAILLE','NOEUD',),
                  AFFE=_F(TOUT='OUI',
                          PHENOMENE='MECANIQUE',
                          MODELISATION='COQUE_3D',),);
randvw3=AFFE_CHAR_CINE(MODELE=model,
                       MECA_IMPO=(_F(GROUP_MA=('f_wall','f_fix_1',),
                                     DX=0.0,
                                     DY=0.0,
                                     DZ=0.0,
                                     DRX=0.0,
                                     DRY=0.0,
                                     DRZ=0.0,),
                                  _F(GROUP_MA=('f_reac_c','f_bladv',),
                                     DZ=0.0,),),);
cont1=AFFE_CHAR_MECA(MODELE=model,
                     CONTACT=(_F(METHODE='CONTRAINTE',
                                 GROUP_MA_MAIT='f_drive',
                                 GROUP_MA_ESCL='f_load_c',
                                 APPARIEMENT='MAIT_ESCL',
                                 LISSAGE='NON',
                                 NORMALE='MAIT',
                                 TYPE_APPA='PROCHE',
                                 TOLE_APPA=0.01,
                                 REAC_GEOM='AUTOMATIQUE',),
                              _F(METHODE='CONTRAINTE',
                                 GROUP_MA_MAIT='f_wall',
                                 GROUP_MA_ESCL='f_reac_c',
                                 APPARIEMENT='MAIT_ESCL',
                                 LISSAGE='NON',
                                 NORMALE='MAIT',
                                 TYPE_APPA='PROCHE',
                                 TOLE_APPA=0.01,
                                 REAC_GEOM='AUTOMATIQUE',),),);

load=AFFE_CHAR_MECA(MODELE=model,
                    DDL_IMPO=_F(GROUP_MA='f_drive',
                                DX=0.0,
                                DY=-0.007,
                                DZ=0.0,),);

shell=AFFE_CARA_ELEM(MODELE=model,
                     COQUE=_F(GROUP_MA=('f_wall','f_bladv','f_drive',),
                              EPAIS=0.0003,),);
LinRamp=DEFI_FONCTION(NOM_PARA='INST',VALE=(0.0,0.0,
                            1.0,1.0,
                            ),PROL_DROITE='LINEAIRE',PROL_GAUCHE='LINEAIRE',);
List=DEFI_LIST_REEL(DEBUT=0.,
                   INTERVALLE=_F(JUSQU_A=1.0,
                                 PAS=0.05,),);
Resu=STAT_NON_LINE(MODELE=model,
                  CHAM_MATER=Appl_mat,
                  CARA_ELEM=shell,
                  EXCIT=(_F(CHARGE=randvw3,),
                         _F(CHARGE=load,
                            FONC_MULT=LinRamp,),
                         _F(CHARGE=cont1,),),
                  COMP_INCR=_F(RELATION='ELAS',
                               DEFORMATION='REAC_GEOM',),
                  INCREMENT=_F(LIST_INST=List,
                               PRECISION=1.E-6,),
                  CONVERGENCE=_F(RESI_GLOB_MAXI=1.E-4,
                                 RESI_GLOB_RELA=1.E-4,
                                 ITER_GLOB_MAXI=30,
                                 TYPE='PIC',),
                  SOLVEUR=_F(METHODE='MULT_FRONT',
                             SYME='OUI',),
                  METHODE='NEWTON',
                  NEWTON=_F(REAC_INCR=1,
                            PREDICTION='TANGENTE',
                            MATRICE='TANGENTE',
                            REAC_ITER=1,
                            REAC_ITER_ELAS=1,),);
IMPR_RESU(FORMAT='MED',
         UNITE=80,
         RESU=_F(MAILLAGE=meshQ,
                 RESULTAT=Resu,
                 INFO_MAILLAGE='OUI',
                 TOUT_CHAM='OUI',),);
FIN();

dkt

contact

Result