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.
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 :
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