Code_Aster Study Bar

1d elements in 2d and 3d

Daniel Weschke

June 8, 2016

1 Model and requirements

Model consists of one line element with two nodes. The left node is put in a node set called ’Support’ and the right node is put in a node set called ’Load’. Finally the line element is put to a mesh group called ’Bar’.

>+------------------+ ---> F
 ^                  ^

2 Geometry file

preprocessing.py (SALOME v9.7.0)

 1# -*- coding: utf-8 -*-
 2
 3# SALOME
 4import salome
 5salome.salome_init()
 6
 7# Notebook
 8import salome_notebook
 9notebook = salome_notebook.NoteBook()
10notebook.set("L", 1000)
11
12# GEOM
13from salome.geom import geomBuilder
14geompy = geomBuilder.New()
15
16Vertex_1 = geompy.MakeVertex(0, 0, 0)
17Vertex_2 = geompy.MakeVertex("L", 0, 0)
18
19Line_1 = geompy.MakeLineTwoPnt(Vertex_1, Vertex_2)
20
21Support = geompy.CreateGroup(Line_1, geompy.ShapeType["VERTEX"])
22v_tmp = geompy.GetVertexNearPoint(Line_1, Vertex_1)
23geompy.AddObject(Support, geompy.GetSubShapeID(Line_1, v_tmp))
24
25Load = geompy.CreateGroup(Line_1, geompy.ShapeType["VERTEX"])
26v_tmp = geompy.GetVertexNearPoint(Line_1, Vertex_2)
27geompy.AddObject(Load, geompy.GetSubShapeID(Line_1, v_tmp))
28
29Bar = geompy.CreateGroup(Line_1, geompy.ShapeType["EDGE"])
30geompy.AddObject(Bar, geompy.GetSubShapeID(Line_1, Line_1))
31
32geompy.addToStudy(Vertex_1, 'Vertex_1')
33geompy.addToStudy(Vertex_2, 'Vertex_2')
34geompy.addToStudy(Line_1, 'Line_1')
35geompy.addToStudyInFather(Line_1, Support, 'Support')
36geompy.addToStudyInFather(Line_1, Load, 'Load')
37geompy.addToStudyInFather(Line_1, Bar, 'Bar')
38
39if salome.sg.hasDesktop():
40  salome.sg.updateObjBrowser()

3 Mesh file

Continue preprocessing.py to generate three types of mesh 1d1e.mmed, 1d2e.mmed and 1d4e.mmed.

 37import SMESH
 38import SALOMEDS
 39from salome.smesh import smeshBuilder
 40
 41working_directory = r'/home/<user>/<project>'
 42
 43salome.salome_init()
 44
 45smesh = smeshBuilder.New()
 46
 47# ie
 48Mesh_1 = smesh.Mesh(Line_1)
 49Regular_1D = Mesh_1.Segment()
 50Nb_Segments_1 = Regular_1D.NumberOfSegments(1)
 51Nb_Segments_1.SetDistrType( 0 )
 52isDone = Mesh_1.Compute()
 53
 54Bar_1 = Mesh_1.GroupOnGeom(Bar,'Bar',SMESH.EDGE)
 55Support_1 = Mesh_1.GroupOnGeom(Support,'Support',SMESH.NODE)
 56Load_1 = Mesh_1.GroupOnGeom(Load,'Load',SMESH.NODE)
 57
 58Support_1.SetColor( SALOMEDS.Color( 1, 0.666667, 0 ))  # orange (default)
 59Load_1.SetColor( SALOMEDS.Color( 1, 0.666667, 0 ))
 60Bar_1.SetColor( SALOMEDS.Color( 1, 0.666667, 0 ))
 61
 62[ Bar_1, Support_1, Load_1 ] = Mesh_1.GetGroups()
 63smesh.SetName(Mesh_1, 'Mesh_1')
 64try:
 65  Mesh_1.ExportMED(working_directory + r'/1d1e.mmed', 0, SMESH.MED_V2_2, 1, None ,1)
 66  pass
 67except:
 68  print 'ExportToMEDX() failed. Invalid file name?'
 69
 70# 2e
 71Mesh_2 = smesh.Mesh(Line_1)
 72Regular_1D_1 = Mesh_2.Segment()
 73Nb_Segments_2 = Regular_1D_1.NumberOfSegments(2)
 74Nb_Segments_2.SetDistrType( 0 )
 75isDone = Mesh_2.Compute()
 76
 77Bar_2 = Mesh_2.GroupOnGeom(Bar,'Bar',SMESH.EDGE)
 78Support_2 = Mesh_2.GroupOnGeom(Support,'Support',SMESH.NODE)
 79Load_2 = Mesh_2.GroupOnGeom(Load,'Load',SMESH.NODE)
 80
 81[ Bar_2, Support_2, Load_2 ] = Mesh_2.GetGroups()
 82smesh.SetName(Mesh_2, 'Mesh_2')
 83try:
 84  Mesh_2.ExportMED(working_directory + r'/1d2e.mmed', 0, SMESH.MED_V2_2, 1, None ,1)
 85  pass
 86except:
 87  print 'ExportToMEDX() failed. Invalid file name?'
 88
 89# 3e
 90Mesh_3 = smesh.Mesh(Line_1)
 91Regular_1D_2 = Mesh_3.Segment()
 92Nb_Segments_3 = Regular_1D_2.NumberOfSegments(4)
 93Nb_Segments_3.SetDistrType( 0 )
 94isDone = Mesh_3.Compute()
 95
 96Bar_3 = Mesh_3.GroupOnGeom(Bar,'Bar',SMESH.EDGE)
 97Support_3 = Mesh_3.GroupOnGeom(Support,'Support',SMESH.NODE)
 98Load_3 = Mesh_3.GroupOnGeom(Load,'Load',SMESH.NODE)
 99
100[ Bar_3, Support_3, Load_3 ] = Mesh_3.GetGroups()
101smesh.SetName(Mesh_3, 'Mesh_3')
102try:
103  Mesh_3.ExportMED(working_directory + r'/1d4e.mmed', 0, SMESH.MED_V2_2, 1, None ,1)
104  pass
105except:
106  print 'ExportToMEDX() failed. Invalid file name?'
107
108## Set names of Mesh objects
109smesh.SetName(Bar_2, 'Bar')
110smesh.SetName(Support_3, 'Support')
111smesh.SetName(Load_3, 'Load')
112smesh.SetName(Regular_1D.GetAlgorithm(), 'Regular_1D')
113smesh.SetName(Support_2, 'Support')
114smesh.SetName(Nb_Segments_1, 'Nb. Segments_1')
115smesh.SetName(Nb_Segments_2, 'Nb. Segments_2')
116smesh.SetName(Load_2, 'Load')
117smesh.SetName(Nb_Segments_3, 'Nb. Segments_3')
118smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
119smesh.SetName(Mesh_3.GetMesh(), 'Mesh_3')
120smesh.SetName(Mesh_2.GetMesh(), 'Mesh_2')
121smesh.SetName(Bar_3, 'Bar')
122smesh.SetName(Bar_1, 'Bar')
123smesh.SetName(Load_1, 'Load')
124smesh.SetName(Support_1, 'Support')
125
126if salome.sg.hasDesktop():
127  salome.sg.updateObjBrowser()

4 .comm file

1d element in 2d space

DEBUT(LANG='EN')

steel=DEFI_MATERIAU(ELAS=_F(E=210000.0,
                            NU=0.3,),);

mesh=LIRE_MAILLAGE(FORMAT='MED',);

model=AFFE_MODELE(MAILLAGE=mesh,
                  AFFE=_F(TOUT='OUI',
                          PHENOMENE='MECANIQUE',
                          MODELISATION='2D_BARRE',),);

crossect=AFFE_CARA_ELEM(MODELE=model,
                        BARRE=_F(GROUP_MA='Bar',
                                 SECTION='GENERALE',
                                 CARA='A',
                                 VALE=100.0,),);

material=AFFE_MATERIAU(MAILLAGE=mesh,
                       AFFE=_F(TOUT='OUI',
                               MATER=steel,),);

bc=AFFE_CHAR_MECA(MODELE=model,
                  DDL_IMPO=(_F(GROUP_NO='Support',
                               DX=0.0,),
                            _F(GROUP_MA='Bar',
                               DY=0.0,),),
                  FORCE_NODALE=_F(GROUP_NO='Load',
                                  FX=10000.0,),);

static=MECA_STATIQUE(MODELE=model,
                     CHAM_MATER=material,
                     CARA_ELEM=crossect,
                     EXCIT=_F(CHARGE=bc,),);

static=CALC_CHAMP(reuse=static,
                  RESULTAT=static,
                  CARA_ELEM=crossect,
                  CONTRAINTE=('SIEF_ELNO', 'SIEF_NOEU'),
                  FORCE='REAC_NODA',);

IMPR_RESU(FORMAT='MED',
          RESU=(_F(MAILLAGE=mesh,
                   RESULTAT=static,
                   NOM_CHAM=('DEPL', 'SIEF_ELGA', 'SIEF_ELNO',
                             'SIEF_NOEU', 'REAC_NODA',),),),);

FIN()

1d element in 3d space

DEBUT(LANG='EN')

steel=DEFI_MATERIAU(ELAS=_F(E=210000.0,
                            NU=0.3,),);

mesh=LIRE_MAILLAGE(FORMAT='MED',);

model=AFFE_MODELE(MAILLAGE=mesh,
                  AFFE=_F(TOUT='OUI',
                          PHENOMENE='MECANIQUE',
                          MODELISATION='BARRE',),);

crossect=AFFE_CARA_ELEM(MODELE=model,
                        BARRE=_F(GROUP_MA='Bar',
                                 SECTION='GENERALE',
                                 CARA='A',
                                 VALE=100.0,),);

material=AFFE_MATERIAU(MAILLAGE=mesh,
                       AFFE=_F(TOUT='OUI',
                               MATER=steel,),);

bc=AFFE_CHAR_MECA(MODELE=model,
                  DDL_IMPO=(_F(GROUP_NO='Support',
                               DX=0.0,),
                            _F(GROUP_MA='Bar',
                               DY=0.0,
                               DZ=0.0,),),
                  FORCE_NODALE=_F(GROUP_NO='Load',
                                  FX=10000.0,),);

static=MECA_STATIQUE(MODELE=model,
                     CHAM_MATER=material,
                     CARA_ELEM=crossect,
                     EXCIT=_F(CHARGE=bc,),);

result=CALC_CHAMP(RESULTAT=static,
                  CONTRAINTE='SIEF_ELNO',
                  FORCE='REAC_NODA',);

IMPR_RESU(FORMAT='MED',
          RESU=(_F(MAILLAGE=mesh,
                   RESULTAT=static,
                   NOM_CHAM='DEPL',),
                _F(MAILLAGE=mesh,
                   RESULTAT=result,
                   NOM_CHAM=('SIEF_ELNO','REAC_NODA',),),),);

FIN()

5 .export file

P uclient <user>
P mclient <host>
P actions make_etude
P version stable
P nomjob 1d2e
P debug nodebug
P mode interactif
P ncpus 1
P memjob 524288.0
A memjeveux 64.0
P tpsjob 10
A tpmax 600
P username <user>
P serveur localhost
P aster_root /home/<user>/salome_meca/Vxxxx/tools/Code_aster_frontend-xxxx
P protocol_exec asrun.plugins.server.SSHServer
P protocol_copyto asrun.plugins.server.SCPServer
P protocol_copyfrom asrun.plugins.server.SCPServer
P proxy_dir /tmp
P consbtc oui
P soumbtc oui
P origine salomemeca_asrun 1.10.0
F comm /home/<user>/<project>/1d2e.comm D 1
F mmed /home/<user>/<project>/1d2e.mmed D 20
F mess /home/<user>/<project>/1d2e.mess R 6
F resu /home/<user>/<project>/1d2e.resu R 8
F rmed /home/<user>/<project>/1d2e.rmed R 80
R base /home/<user>/<project>/1d2e.base RC 0