Nastran to Code_Aster: slideline contact

In this post we will have a look at a slideline contact problem, including friction.

This case is taken from a publicy available example on the internet, but the original source is probably this one, for all due credit.
To read this article one will need some knowledge both in Nastran and in Code_Aster.

cover

The translation between Nastran and Code_Aster can be made by using the following correspondances :

Nastran keyword Code_Aster keyword
BEGIN DEBUT
SOL 106 + SUBCASE STAT_NON_LINE(ETAT_INIT, EXCIT=_F(FONC_MULT))
TIME 600 See “prob9.export” file, line “A tpmax 600
NLPARM DEFI_LIST_REEL, DEFI_LIST_INST
BCOMP DEFI_CONTACT
BFRIC DEFI_CONTACT(FROTTEMENT)
BLSEG DEFI_CONTACT(GROUP_MA_MAIT,GROUP_MA_ESCL)
CQUAD4 See “prob9.mail” file: QUAD4 and in this case C_PLAN plane stress is needed
MAT1 DEFI_MATERIAU(ELAS)
GRID See “prob9.mail” file: COOR_2D
SPC1 AFFE_CHAR_CINE
FORCE AFFE_CHAR_MECA(FORCE_NODALE)
ENDDATA FIN

Here are Code_Aster results :

animation

First of all, let’s see the Nastran code (file “prob9.dat”) for this example :


ID NAS103 WORKSHOP 9
TIME 300
SOL 106
CEND
$
TITLE = SLINE2S: SYMMETRIC ELASTIC PUNCH WITH FRICTION
$
DISP = ALL
SUBCASE 1
$ VERTICAL LOAD
LOAD = 1
NLPARM = 410
SUBCASE 2
$ DISPLACEMENT TO THE RIGHT
LOAD = 1
NLPARM = 420
SPC = 2 
$
BEGIN BULK
BCONP   10      40      50              10.     60      2       70              
BFRIC   60                      0.1                                             
BLSEG   40      12      13      14      15      16      17      18      +BLSG1  
+BLSG1  19      20      21      22                                              
BLSEG   50      25      24      23                                              
CORD2R  70              0.      0.      0.      0.      0.      1.      +CRD10  
+CRD10  1.      0.      0.                                                      
CQUAD4  1       1       1       2       13      12                              
CQUAD4  2       1       2       3       14      13                              
CQUAD4  3       1       3       4       15      14                              
CQUAD4  4       1       4       5       16      15                              
CQUAD4  5       1       5       6       17      16                              
CQUAD4  6       1       6       7       18      17                              
CQUAD4  7       1       7       8       19      18                              
CQUAD4  8       1       8       9       20      19                              
CQUAD4  9       1       9       10      21      20                              
CQUAD4  10      1       10      11      22      21                              
CQUAD4  11      1       23      24      27      26                              
CQUAD4  12      1       24      25      28      27                              
FORCE   1       26              -1000.  0.      1.      0.                      
FORCE   1       27              -2000.  0.      1.      0.                      
FORCE   1       28              -1000.  0.      1.      0.                      
GRID    1               0.      0.      0.              123456                  
GRID    2               10.     0.      0.              123456                  
GRID    3               20.     0.      0.              123456                  
GRID    4               30.     0.      0.              123456                  
GRID    5               40.     0.      0.              123456                  
GRID    6               50.     0.      0.              123456                  
GRID    7               60.     0.      0.              123456                  
GRID    8               70.     0.      0.              123456                  
GRID    9               80.     0.      0.              123456                  
GRID    10              90.     0.      0.              123456                  
GRID    11              100.    0.      0.              123456                  
GRID    12              0.      20.     0.              3456                    
GRID    13              10.     20.     0.              3456                    
GRID    14              20.     20.     0.              3456                    
GRID    15              30.     20.     0.              3456                    
GRID    16              40.     20.     0.              3456                    
GRID    17              50.     20.     0.              3456                    
GRID    18              60.     20.     0.              3456                    
GRID    19              70.     20.     0.              3456                    
GRID    20              80.     20.     0.              3456                    
GRID    21              90.     20.     0.              3456                    
GRID    22              100.    20.     0.              3456                    
GRID    23              45.     20.     0.              3456                    
GRID    24              55.     20.     0.              3456                    
GRID    25              65.     20.     0.              3456                    
GRID    26              45.     25.     0.              3456                    
GRID    27              55.     25.     0.              3456
GRID    28              65.     25.     0.              3456                    
MAT1    1       1.E5            0.0                                             
NLPARM  410     1               AUTO                    PW      YES     +NLP41  
+NLP41          1.E-6   1.E-10                                                  
NLPARM  420     10              AUTO                    PW      YES     +NLP42  
+NLP42          1.E-6   1.E-10                                                  
PARAM   POST    -1                                                              
PSHELL  1       1       1.      -1                                              
SPC     2       26      1       10.0                                            
SPC     2       27      1       10.0
SPC     2       28      1       10.0
ENDDATA

In Code_Aster, you will need to create distinct files for the mesh and the commands. We will need to treat this problem as a two-dimensional one and create contact zones.
Let’s start with the main mesh file (file “prob9.mail”) :



TITRE    
	prob9
	SLINE2S: SYMMETRIC ELASTIC PUNCH WITH FRICTION
FINSF

COOR_2D

	N1  0.0000000000e+00 0.0000000000e+00 
	N2  1.0000000000e+01 0.0000000000e+00 
	N3  2.0000000000e+01 0.0000000000e+00 
	N4  3.0000000000e+01 0.0000000000e+00 
	N5  4.0000000000e+01 0.0000000000e+00 
	N6  5.0000000000e+01 0.0000000000e+00 
	N7  6.0000000000e+01 0.0000000000e+00 
	N8  7.0000000000e+01 0.0000000000e+00 
	N9  8.0000000000e+01 0.0000000000e+00 
	N10  9.0000000000e+01 0.0000000000e+00 
    N11  1.0000000000e+02 0.0000000000e+00 
	N12  0.0000000000e+00 2.0000000000e+01     
	N13  1.0000000000e+01 2.0000000000e+01 
    N14  2.0000000000e+01 2.0000000000e+01 
    N15  3.0000000000e+01 2.0000000000e+01 
    N16  4.0000000000e+01 2.0000000000e+01 
    N17  5.0000000000e+01 2.0000000000e+01 
    N18  6.0000000000e+01 2.0000000000e+01 
    N19  7.0000000000e+01 2.0000000000e+01 
	N20  8.0000000000e+01 2.0000000000e+01 
	N21  9.0000000000e+01 2.0000000000e+01 
	N22  1.0000000000e+02 2.0000000000e+01 
	N23  4.5000000000e+01 2.0000000000e+01 
	N24  5.5000000000e+01 2.0000000000e+01 
    N25  6.5000000000e+01 2.0000000000e+01 
	N26  4.5000000000e+01 2.5000000000e+01 
    N27  5.5000000000e+01 2.5000000000e+01 
	N28  6.5000000000e+01 2.5000000000e+01 
FINSF

SEG2
 V1  N12 N13
 V2  N13 N14
 V3  N14 N15
 V4  N15 N16
 V5  N16 N17
 V6  N17 N18
 V7  N18 N19
 V8  N19 N20
 V9  N20 N21
 V10 N21 N22
 V11  N23 N24
 V12  N24 N25
 V13  N24 N17
FINSF

QUAD4 

 E1  N1 N2 N13 N12
 E2  N2 N3 N14 N13
 E3  N3 N4 N15 N14
 E4  N4 N5 N16 N15
 E5  N5 N6 N17 N16
 E6  N6 N7 N18 N17
 E7  N7 N8 N19 N18
 E8  N8 N9 N20 N19
 E9  N9 N10 N21 N20
 E10  N10 N11 N22 N21
 E11  N23 N24 N27 N26
 E12  N24 N25 N28 N27 
FINSF


GROUP_NO NOM = GNO00001
    % Virtual node group
  N1 N10 N11 N2 N3 N4 N5 
  N6 N7 N8 N9
FINSF
GROUP_NO NOM = GNO00002
    % Virtual node group
  N12 N13 N14 N15 N16 N17 N18 
  N19 N20 N21 N22 N23 N24 N25 
  N26 N27 N28
FINSF


GROUP_MA NOM = G1
    % Original part : 1
  E1 E10 E11 E12 E2 E3 E4 
  E5 E6 E7 E8 E9
FINSF

GROUP_MA NOM = GMA00001
    % Contact 1 slave
  V1 V10 V2 V3 V4 
  V5 V6 V7 V8 V9
FINSF
GROUP_MA NOM = GMA00002
    % Contact 1 master
  V11 V12
FINSF


FIN

Then, the command file (file “prob9.comm”) :


# prob9
# SLINE2S: SYMMETRIC ELASTIC PUNCH WITH FRICTION

DEBUT(PAR_LOT='NON',
      ERREUR=_F(ERREUR_F='ABORT',),
      IGNORE_ALARM=('SUPERVIS_1',),);

MAIL=LIRE_MAILLAGE(FORMAT='ASTER',
                   VERI_MAIL=_F(VERIF='OUI',),);

MAIL=MODI_MAILLAGE(reuse =MAIL,
                 MAILLAGE=MAIL,
                 ORIE_PEAU_2D=_F(GROUP_MA=('GMA00001','GMA00002'),),)

MODMECA=AFFE_MODELE(MAILLAGE=MAIL,
                    AFFE=_F(GROUP_MA='G1',
                            PHENOMENE='MECANIQUE',
                            #~ MODELISATION='DKT',
                            MODELISATION='C_PLAN',
                            ),);

LST00001=DEFI_LIST_REEL(DEBUT=0.0,
                        INTERVALLE=_F(JUSQU_A=1.0,
                                      NOMBRE=1,),);

LST00002=DEFI_LIST_REEL(DEBUT=1.0,
                        INTERVALLE=_F(JUSQU_A=2.0,
                                      NOMBRE=10,),);

MAT00001=DEFI_MATERIAU(ELAS=_F(E=100000.0,
                               NU=0.0,
                               RHO=0.0,),);

CHMAT=AFFE_MATERIAU(MAILLAGE=MAIL,
                    AFFE=_F(GROUP_MA='G1',
                            MATER=MAT00001,),);

CINE0=AFFE_CHAR_CINE(MODELE=MODMECA,
                     MECA_IMPO=(_F(GROUP_NO='GNO00001',
                                   DX=0.0,
                                   DY=0.0,
                                   ),
                                   ),
                    );

CINE1=AFFE_CHAR_CINE(MODELE=MODMECA,
                     MECA_IMPO=_F(NOEUD=('N26','N27','N28',),
                                  DX=0.0,),);
                    

CINE2=AFFE_CHAR_CINE(MODELE=MODMECA,
                     MECA_IMPO=_F(NOEUD=('N26','N27','N28',),
                                  DX=10.0,),);

CONT1=DEFI_CONTACT(MODELE=MODMECA,
                   FORMULATION='CONTINUE',
                   FROTTEMENT='COULOMB',
                   ZONE=_F(GROUP_MA_MAIT='GMA00002',
                           GROUP_MA_ESCL='GMA00001',
                           COULOMB=0.1,
                           ),
                    );

CHARGE1=AFFE_CHAR_MECA(MODELE=MODMECA,
                       FORCE_NODALE=(_F(NOEUD=('N26','N28',),
                                        FY=-1000.0,),
                                     _F(NOEUD='N27',
                                        FY=-2000.0,),),);

LAUTO1=DEFI_LIST_INST(DEFI_LIST=_F(METHODE='AUTO',
                                   LIST_INST=LST00001,),);

RAMPE1=DEFI_FONCTION(NOM_PARA='INST',VALE=(0,0,
                          1,1,
                          ))

RESU1=STAT_NON_LINE(MODELE=MODMECA,
                    CHAM_MATER=CHMAT,
                    EXCIT=(_F(CHARGE=CHARGE1,FONC_MULT=RAMPE1,),
                           _F(CHARGE=CINE0,),
                           _F(CHARGE=CINE1,),),
                    CONTACT=CONT1,
                    COMPORTEMENT=_F(GROUP_MA='G1',
                                    RELATION='ELAS',),
                    INCREMENT=_F(LIST_INST=LAUTO1,),
                    NEWTON=_F(REAC_ITER=1,),
                    SOLVEUR=_F(METHODE='MUMPS',
                               NPREC=8,),
                    ARCHIVAGE=_F(LIST_INST=LST00001,),);

LAUTO2=DEFI_LIST_INST(DEFI_LIST=_F(METHODE='AUTO',
                                   LIST_INST=LST00002,),);

RAMPE2=DEFI_FONCTION(NOM_PARA='INST',VALE=(1,0,
                          2,1,
                          ))

RESU2=STAT_NON_LINE(MODELE=MODMECA,
                    CHAM_MATER=CHMAT,
                    EXCIT=(_F(CHARGE=CHARGE1,),
                           _F(CHARGE=CINE0,),
                           _F(CHARGE=CINE2,FONC_MULT=RAMPE2),),
                    CONTACT=CONT1,
                    COMPORTEMENT=_F(GROUP_MA='G1',
                                    RELATION='ELAS',),
                    ETAT_INIT=_F(EVOL_NOLI=RESU1,),
                    INCREMENT=_F(LIST_INST=LAUTO2,),
                    NEWTON=_F(REAC_ITER=1,),
                    SOLVEUR=_F(METHODE='MUMPS',
                               NPREC=8,),
                    ARCHIVAGE=_F(LIST_INST=LST00002,),);

IMPR_RESU(FORMAT='RESULTAT',
          RESU=(_F(RESULTAT=RESU1,
                   INST=1.0,
                   NOEUD=('N22','N23'),
                   NOM_CHAM='DEPL'),
                _F(RESULTAT=RESU2,
                   INST=2.0,
                   NOEUD=('N22','N23'),
                   NOM_CHAM='DEPL',),
                )
            );   

IMPR_RESU(FORMAT='MED',
          UNITE=80,
          RESU=(_F(RESULTAT=RESU1,
                   NOM_CHAM='DEPL',NOM_CMP=('DX','DY')),
                _F(RESULTAT=RESU2,
                   NOM_CHAM='DEPL',NOM_CMP=('DX','DY')),),);

FIN(FORMAT_HDF='OUI',);

You will also need a file to keep everything together ( file “prob9.export”). This file is the one needed to start the calculation on command line (“as_run prob9.export”) :


P actions make_etude
P memory_limit 256.0
P mode interactif
P mpi_nbcpu 1
P mpi_nbnoeud 1
P ncpus 1
P testlist verification sequential
P time_limit 60.0
P version testing
A memjeveux 375.0
A tpmax 172800
P memjob 3072000
P tpsjob 2880
F comm prob9.comm D 1
F mail prob9.mail D 20
F mess prob9.mess R 6
F resu prob9.resu R 8
F rmed prob9.rmed R 80

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s