Contrib:KeesWouters/shellsolid/liaisonmail

From CAELinuxWiki
Revision as of 10:57, 20 June 2010 by Keeswouters (Talk | contribs) (''Connecting shells and solid elements by liaison_mail'')

Jump to: navigation, search

Connecting shells and solid elements by liaison_mail

[under construction .... not finished yet ... ]

To start with, this contribution mainly focuses on the use of Salome and Code Aster, not 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 the fifth decimal place, which they are 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.

I stole a lot of ideas from the CaeLinux and Code Aster forums. So thank you for all who posted on this topic. This contribution is heavily based on the examples ssls101m and ssls101m in the atest directory

So far only linear shell elements (MODELISATION = 'DKT') have been used with two types of connections:

  • LIAISON_MAIL =_F(TYPE_RACCORD='COQUE_MASSIF', ....)) and
  • LIAISON_MAIL =_F(TYPE_RACCORD='MASSIF_COQUE', ....))

[As usual, the files that define the geometry, mesh and command files can be found at the end of this contribution.]

The construction

The geometry of the construction

  • a number of method to establish a connection between shells to solid elements can be used:
    • the Arlequin method
    • use a region of solid nodes; this causes a rigid body between the interface of the shells and solids
    • liason_mail, since version CAster 10.1.19


As usual the geometry is quite simple in order not to disturb the issue we would like to show with other difficulties. The first part consists of a beam of height 23 [mm] and a cross section of 3*8 [mm2]. This part is modeled by solid elements. On top of this another beam of height 17 [mm] is added. The width of this beam is 8 [mm]. This part is modeled by shell elements, ie. only the 2D dimensions -height and width- are modeled here. The thickness of 1 [mm] is defined in the Aster command file.

The geometry is defined in a python script (for download see end of this contribution) and can be loaded into Salome Geometry module by File --> Load script (or ctrl T in the object browser window). Right click Refresh or push F5 after loading if necessary.

Kw lm constr.jpg
  • x direction is out-of-plane of the shell
  • z direction is in the main direction of the construction
  • width of block and shell: 8 mm
  • thickness of block 3 mm; thickness of shell 1 mm, defined in Code Aster
  • height of block 23 mm; height of shell 17 mm
  • groups defined in Salome
    • volume block
    • shell area shell, FBbot and FBtop
    • connection line between shells and solids Cline

The mesh of the construction

For we command file in Code Aster we need various parts (or groups in Salome) to apply boundary conditions, forces, material properties and such. These groups are depicted in the image above:

the bottom and top surface of the block FBbot and FBtop,
the solid element region block,
the shell elements shell and
the two vertices on top edge of the shell elements: Nforce
Kw lm mesh.jpg:Kw lm mesh detail.jpg

Again, the mesh of the construction is defined in a python script.

The mesh consists of linear shell elements (tria3 elements) that can be used with DKT modelisation, the solid elements are linear tetrahedrons.

Relevant part of the command file

The boundary conditions are applied on FBbot: all displacements of this surface are restricted. The forces are applied on the two nodes Nforce in the out-of-plane or x direction and the magnitude is 10 N each, ie. 20 N in total. The material properties of both the shell and solid elements are steel.


#SVmesh=LIRE_MAILLAGE(...);
#SVmodel=AFFE_MODELE(INFO=1,
                   MAILLAGE=SVmesh,
                  AFFE=(_F(GROUP_MA='block',PHENOMENE='MECANIQUE',MODELISATION='3D',),
                       _F(GROUP_MA='shell',PHENOMENE='MECANIQUE',MODELISATION='DKT',),),);
#Steel=DEFI_MATERIAU(ELAS=_F(E=210000,NU=0.3,),);
#Assigns a physical model
#thickness = 1.000
#Shell=AFFE_CARA_ELEM(INFO=1,
                      MODELE=SVmodel,
                      COQUE=_F(GROUP_MA='shell',
                               EPAIS=thickness,
                               VECTEUR=(0.0,1.0,0.0),# defines local x-axis of shell, default global x-axis
                               EXCENTREMENT=0.000,
                               COQUE_NCOU=1,  # 1 for non linear STAT_NON_LINE et DYNA_NON_LINE
                               INER_ROTA='OUI',),); # inertia of rotation: DKT, DST et Q4G
                             
#chnorm = CREA_CHAMP(TYPE_CHAM='NOEU_GEOM_R',
                     OPERATION='NORMALE',
                     MODELE= SVmodel,
                     GROUP_MA='shell',
                     INFO=1);
#ConShSol=AFFE_CHAR_MECA(MODELE=SVmodel,
                         LIAISON_MAIL =_F(TYPE_RACCORD='COQUE_MASSIF', 
                                          #GROUP_NO_ESCL='Cline', 
                                          GROUP_MA_ESCL='Cline', 
                                          GROUP_MA_MAIT='block',
                                          CHAM_NORMALE=chnorm, 
                                          EPAIS=thickness,))
#Mat=AFFE_MATERIAU(...);
#force=AFFE_CHAR_MECA(MODELE=SVmodel,
                      DDL_IMPO=_F(GROUP_MA='FBbot',LIAISON='ENCASTRE',),
                      FORCE_NODALE=_F(GROUP_NO='Nforce',FX=10.00,),);
#SVresult=MECA_STATIQUE(MODELE=SVmodel,
                      CHAM_MATER=Mat,
                      CARA_ELEM=Shell,
                      EXCIT=(_F(CHARGE=force,),
                             _F(CHARGE=ConShSol,),),);

Liaison_mail keyword in AFFE_CHAR_MECA

The additional part that replace the Arlequin method in the previous part is:

#ConShSol=AFFE_CHAR_MECA(MODELE=SVmodel,
                       LIAISON_MAIL =_F(TYPE_RACCORD='COQUE_MASSIF', 
                                        #GROUP_NO_ESCL='Cline', 
                                        GROUP_MA_ESCL='Cline', 
                                        GROUP_MA_MAIT='block',
                                        CHAM_NORMALE=chnorm, 
                                        EPAIS=thickness,))

The LIAISON_MAIL keyword takes the TYPE_RACCORD as a parameter. Valid parameters are

  • MASSIF
  • COQUE for a connection between two incompatible shells (eg DKT and COQUE_3D modelisation)
  • COQUE_MASSIF for a connection between solids and shells
  • MASSIF_COQUE


    / 'COQUE'        : pour raccorder 2 modélisations DKT (ou coque_3D)
    / 'COQUE_MASSIF' : pour raccorder 1 modélisation  DKT (ou coque_3D) avec 1 modelisation 3D
       (o)   CHAM_NORMALE : champ des "normales" Ã  la coque
             EPAIS        : épaisseur des éléments de coque
    / 'MASSIF_COQUE' : pour raccorder 1 modélisation  1 modelisation 3D avec une modéliation
  DKT (ou coque_3D)

from histor file

RESTITUTION FICHE 013381 DU 2009-05-06 09:33:20 TYPE evolution concernant Code_Aster (VERSION ) TITRE

  Quelques evolutions autour de LIAISON_MAIL : raccord entre modelisations differentes

FONCTIONNALITE

  Evolution proposée :
  ---------------------
  Je propose d'ajouter 2 nouvelles possibilités pour AFFE_CHAR_MECA / LIAISON_MAIL :
    1) TYPE_RACCORD= 'COQUE'
       pour relier des modélisations de coques entre elles
    2) TYPE_RACCORD=  / 'COQUE_MASSIF'
                      / 'MASSIF_COQUE'
       pour relier une modélisation "coque" avec une modélisation "3D"
   
   
  Syntaxe :
  ---------
  TYPE_RACCORD =
    / 'MASSIF'       : pour raccorder 2 modélisations 2D (ou 3D ou SHB)   [defaut]
    / 'COQUE'        : pour raccorder 2 modélisations DKT (ou coque_3D)
    / 'COQUE_MASSIF' : pour raccorder 1 modélisation  DKT (ou coque_3D) avec 1 modelisation 3D
       (o)   CHAM_NORMALE : champ des "normales" à la coque
             EPAIS        : épaisseur des éléments de coque
    / 'MASSIF_COQUE' : pour raccorder 1 modélisation  1 modelisation 3D avec une modéliation
  DKT (ou coque_3D)
   
   
  Quelles relations de liaison ecrit-on ?
  ---------------------------------------
  MASSIF :
     On écrit l'égalité des translations (DX,DY,DZ) du noeud "esclave" avec les translations
  du point en vis à vis de la maille "maitre"
                                                                                           
                        
  COQUE :
     On écrit l'égalité des translations et des rotations (DX,DY,DZ,DRX,DRY,DRZ) du noeud
  "esclave" avec les translations et rotations du point en vis à vis de la maille "maitre"
                                                                                           
                        
  COQUE_MASSIF :
     On écrit l'égalité des translations et des rotations (DX,DY,DZ,DRX,DRY,DRZ) du noeud
  "esclave" (de type "coque") avec les translations de 3 points (3D)  en vis à vis dans les
  mailles "maitre" (A, A+h/2, A-h/2)
     En notant :
       * A le point 3D géométriquement en vis à vis
       *  h un petit vecteur normal à la coque dont la longueur est l'épaisseur de la coque
                                                                                           
                        
  MASSIF_COQUE :
     On écrit l'égalité des translations (DX,DY,DZ) du noeud "esclave" (de type "3D") avec
  les translations et rotations du point (coque) en vis à vis dans la maille "maitre".
                                                                                           
                        
  1ères expériences :
  -------------------
  Les premiers essais montrent qu'il vaut mieux utiliser MASSIF_COQUE lorsque l'on veut
  raccorder un "patch" 3D (maillé fin) dans une structure coque.

=

In this case we have a solid part and shell, so we use TYPE_RACCORD='COQUE_MASSIF'. The three keywords GROUP_MA_ESCL, GROUP_MA_MAIT and CHAM_NORMALE define the geometry between the interconnection. In this case the block is the master group defined by GROUP_MA_MAIT. The slave is the connection line between the solid and the shells defined by GROUP_MA_ESCL='Cline'. The shell part is defined by CHAM_NORMALE=chnorm but a transition need to be carrried out first by

#chnorm = CREA_CHAMP(TYPE_CHAM='NOEU_GEOM_R',
                   OPERATION='NORMALE',
                   MODELE= SVmodel,
                   GROUP_MA='shell',
                   INFO=1);

since LIAISON_MAIL does not accept a string as an input parameter (as far as I understand the error message correctly).

Note that GROUP_MA_ESCL, GROUP_MA_MAIT and CHAM_NORMALE(GROUP_MA...) can be replaced by there node equivalents: GROUP_NO_ESCL, GROUP_NO_MAIT and CHAM_NORMALE(GROUP_NO...)

Results

Since C_Aster version 10.1.19 it is possible to connect solid-shell, shell-shell and solid-solid directly by LIAISON_MAIL. No interconnecting regions are needed then as in Arlequin. For more details look [here ....(tbd)]. Here are some first results:

  • For Liaison_mail with linear elements (DKT)
#displacements at nodes on group Nforce
#displacements of top vertices
* INTITULE         * NOEUD    * RESU     * NOM_CHAM         * NUME_ORDRE   * INST         * ABSC_CURV    * COOR_X       * COOR_Y       * COOR_Z       * DX           * DY           * DZ          
* displacements    * N3494    * SVresult * DEPL             *            1 *  0.00000E+00 *  0.00000E+00 *  1.50000E+00 *  8.00000E+00 *  4.00000E+01 *  3.27736E-01 *  1.19326E-05 *  1.60472E-06
* displacements    * N5015    * SVresult * DEPL             *            1 *  0.00000E+00 *  8.00000E+00 *  1.50000E+00 *  0.00000E+00 *  4.00000E+01 *  3.27709E-01 *  1.19330E-05 *  5.41754E-06


Kw lm displacements.jpg

Download files

Media:kw_liaisonmail.zip
  • This zip contains the following files for the liaison mail method:
    • BSgeomesh_liaisonmail.py python geometry and mesh files (load in Salome by File --> Load script (cntrl T)) and right select refresh (F5) in the object browser). Export the mesh constr in the mesh module to constr.med for further processing by Code-Aster, controlled by ASTK.

(Note that right now the group_ma Cline need to be added manually, though it has been defined in the geometry module --- I will adapt this shortly ----

    • liaisonmail.comm command files for Code-Aster
    • astk file for file control by ASTK and resulting export file
    • tab4res.txt, text file with nodal displacements of nodes Nforce.
    • the file documentation_liaison_mail.txt contains part of the histor file
  • The result file con4res.med can be viewed in the post processor module of Salome by File --> Import --> con2res.med or cntrl I in the object browser.

Links

This contribution is based on the astest files ssls101m and ssls101n that are described here:

Discussion on the code aster forum are here:


Fini

That's it for now
Any remarks - pls let me know - eg by the watch page
It needs a bit of cleaning up - I know
june 2010
Kees Wouters