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