forked from calculix/Cubit-CalculiX
-
Notifications
You must be signed in to change notification settings - Fork 1
/
metal_forming.jou
206 lines (182 loc) · 7.61 KB
/
metal_forming.jou
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
#!cubit
reset
# creating geometry
#blank
create surface rectangle width 100 height 1 zplane
move Surface 1 x 50 y 0.5 include_merged
#punch
create surface rectangle width 60 height 60 zplane
move Surface 2 x 30 y 31 include_merged
create surface rectangle width 60 height 60 zplane
move Surface 3 x 29 y 32 include_merged
subtract surface 3 from surface 2
tweak vertex 8 14 fillet radius 5
#holder
create surface rectangle width 50 height 60 zplane
move Surface 5 x 86 y 31 include_merged
create surface rectangle width 50 height 60 zplane
move Surface 6 x 87 y 32 include_merged
subtract surface 6 from surface 5
tweak vertex 22 29 fillet radius 5
#die
create surface rectangle width 50 height 60 zplane
move Surface 8 x 86 y -30 include_merged
create surface rectangle width 50 height 60 zplane
move Surface 9 x 87 y -31 include_merged
subtract surface 9 from surface 8
tweak vertex 36 44 fillet radius 5
#webcuts
webcut volume 2 with plane normal to curve 18 fraction 0 from start
webcut volume 2 with plane normal to curve 18 fraction 1 from start
webcut volume 4 with plane normal to curve 32 fraction 0 from start
webcut volume 4 with plane normal to curve 32 fraction 1 from start
webcut volume 6 with plane normal to curve 46 fraction 0 from start
webcut volume 6 with plane normal to curve 46 fraction 1 from start
#clearance punch-blank
move Surface 12 13 14 y 0.001 include_merged
#clearance holder-blank
move Surface 16 17 18 y 0.001 include_merged
#clearance die-blank
move Surface 20 21 22 y -0.001 include_merged
#blocks and mesh
block 1 add surface 1
block 1 name "Blank"
block 2 add surface 12 13 14
block 2 name "Part_Punch"
block 3 add surface 16 17 18
block 3 name "Part_Holder"
block 4 add surface 20 21 22
block 4 name "Part_Die"
block all element type quad4
ccx block all element_type CPE4
#surface all scheme trimesh
#block all element type tri3
#ccx block all element_type CPE3
#blank
surface 1 size 0.5
#punch holder die
surface 12 13 14 16 17 18 20 21 22 size 4
curve 17, 18, 31, 32, 45, 46, 48, 54, 56, 62, 64, 70 size 0.2
curve 17, 18, 31, 32, 45, 46, 48, 54, 56, 62, 64, 70 scheme equal
#imprint merge
imprint surface 12 13 14 16 17 18 20 21 22
merge surface 12 13 14 16 17 18 20 21 22
mesh surface all
#create vertices for reference points
create vertex x 25 y 35 z 0
create vertex x 25 y 35 z 0
create vertex x 85 y 35 z 0
create vertex x 85 y 35 z 0
mesh vertex all
#material
create material "Steel" property_group "CalculiX-FEA"
modify material "Steel" scalar_properties "CCX_ELASTIC_USE_CARD" 1
modify material "Steel" scalar_properties "CCX_ELASTIC_ISO_USE_CARD" 1
modify material "Steel" matrix_property "CCX_ELASTIC_ISO_MODULUS_VS_POISSON_VS_TEMPERATURE" 2e+5 0.3 0
modify material "Steel" scalar_properties "CCX_PLASTIC_ISO_USE_CARD" 1
modify material "Steel" scalar_properties "CCX_EXPANSION_ISO_USE_CARD" 1
modify material "Steel" scalar_properties "CCX_CONDUCTIVITY_ISO_USE_CARD" 1
modify material "Steel" scalar_properties "CCX_PLASTIC_USE_CARD" 1
modify material "Steel" matrix_property "CCX_PLASTIC_ISO_YIELD_STRESS_VS_STRAIN_VS_TEMPERATURE" 4e+2 0 0 4.2e+2 0.02 0 5e+2 0.2 0 6e+2 0.5 0
create material "Steel_dummy" property_group "CalculiX-FEA"
modify material "Steel_dummy" scalar_properties "CCX_ELASTIC_USE_CARD" 1
modify material "Steel_dummy" scalar_properties "CCX_ELASTIC_ISO_USE_CARD" 1
modify material "Steel_dummy" matrix_property "CCX_ELASTIC_ISO_MODULUS_VS_POISSON_VS_TEMPERATURE" 2e+5 0.3 0
#sections
ccx create section solid block 1 material 1
ccx create section solid block 2 material 2
ccx create section solid block 3 material 2
ccx create section solid block 4 material 2
#nodesets
nodeset 1 add curve 2
nodeset 1 name "nset_blank_symmetry"
nodeset 2 add curve 13 14 18
nodeset 2 name "nset_punch"
nodeset 3 add curve 27 28 32
nodeset 3 name "nset_holder"
nodeset 4 add surface 20 21 22
nodeset 4 name "nset_die"
nodeset 5 add vertex 68
nodeset 5 name "rp1_punch"
nodeset 6 add vertex 69
nodeset 6 name "rp2_punch"
nodeset 7 add vertex 70
nodeset 7 name "rp1_holder"
nodeset 8 add vertex 71
nodeset 8 name "rp2_holder"
#sidesets
sideset 1 add curve 1 3
sideset 1 name "Blank"
sideset 2 add curve 17 50 48 54 52
sideset 2 name "Part_Punch"
sideset 3 add curve 60 58 56 31 62
sideset 3 name "Part_Holder"
sideset 4 add curve 66 64 45 70 68
sideset 4 name "Part_Die"
# constraints
ccx create constraint rigid body nodeset 2 ref 68 rot 69
ccx create constraint rigid body nodeset 3 ref 70 rot 71
#contact
ccx create surfaceinteraction name "ContactType" linear slopeK 1e6 sigmaINF 3 c0 1e-2
ccx modify surfaceinteraction 1 friction mu 0.1 lambda 1
ccx create contactpair surfaceinteraction 1 surfacetosurface master 2 slave 1
ccx create contactpair surfaceinteraction 1 surfacetosurface master 3 slave 1
ccx create contactpair surfaceinteraction 1 surfacetosurface master 4 slave 1
#bcs
#blank
create displacement name "blank" on curve 2 dof 1 dof 3 fix
#punch
create displacement name 'punch_fix_rp1' on vertex 68 dof 1 dof 2 dof 3 fix
create displacement name 'punch_fix_rp2' on vertex 69 dof 1 dof 2 dof 3 fix
create displacement name 'punch_move_rp1' on vertex 68 dof 2 fix -35
modify displacement 4 dof 1 fix 0
modify displacement 4 dof 3 fix 0
#holder
create displacement name 'holder_move_rp1' on vertex 70 dof 2 fix -2.3e-3
create displacement name 'holder_move_rp2' on vertex 71 dof 1 dof 2 dof 3 fix
modify displacement 5 dof 1 fix 0
modify displacement 5 dof 3 fix 0
#die
create displacement name 'die_fix' on surface 20 21 22 dof 1 dof 2 dof 3 fix
#outputs
ccx create fieldoutput name "nout" node
ccx modify fieldoutput 1 node frequency 5
ccx modify fieldoutput 1 node key_on RF U
ccx modify fieldoutput 1 node key_off CP DEPF DEPT DTF HCRI KEQ MACH MAXU MF NT PNT POT PRF PS PSF PT PTF PU RFL SEN TS TSF TT TTF TURB V VF
ccx create fieldoutput name "eout" element
ccx modify fieldoutput 2 element frequency 5
ccx modify fieldoutput 2 element key_on E PEEQ S
ccx modify fieldoutput 2 element key_off CEEQ ECD EMFB EMFE ENER ERR HER HFL HFLF MAXE MAXS ME PHS SF SMID SNEG SPOS SVF SDV THE ZZS
ccx create fieldoutput name "cout" contact
ccx modify fieldoutput 3 contact frequency 5
ccx modify fieldoutput 3 contact key_on CDIS CSTR CELS
ccx modify fieldoutput 3 contact key_off PCON
ccx create historyoutput name "node_output" node
ccx create historyoutput name "element_output" element
ccx create historyoutput name "contact_output" contact
ccx modify historyoutput 1 node nodeset 3 frequency 5 totals_yes
ccx modify historyoutput 1 node key_on U RF
ccx modify historyoutput 1 node key_off NT TSF TTF PN PSF PTF MACH CP VF DEPF TURB MF RFL
ccx modify historyoutput 2 element block 1 frequency 5
ccx modify historyoutput 2 element key_on S E PEEQ ENER ELSE ELKE EVOL EMAS EBHE CENT
ccx modify historyoutput 2 element key_off SVF ME CEEQ SDV HFL HFLF COORD
ccx modify historyoutput 3 contact contactpair 1 frequency 5
ccx modify historyoutput 3 contact key_on CDIS CSTR CELS CNUM CF CFN CFS
ccx modify historyoutput 3 contact key_off
#steps
ccx create step name "hold" static
ccx modify step 1 parameter nlgeom_yes
ccx modify step 1 static initialtimeincrement 0.02 timeperiodofstep 0.1 minimumtimeincrement 1e-6 maximumtimeincrement 0.02
ccx step 1 add bc displacement 1 2 3 5 6 7
ccx step 1 add fieldoutput 1 2 3
ccx step 1 add historyoutput 1 2 3
ccx create step name "move_punch" static
ccx modify step 2 parameter nlgeom_yes inc 1000
ccx modify step 2 static initialtimeincrement 0.00125 timeperiodofstep 1 minimumtimeincrement 1e-6 maximumtimeincrement 0.0025
ccx step 2 add bc displacement 4
ccx step 2 add fieldoutput 1 2 3
ccx step 2 add historyoutput 1 2 3
ccx create job name "forming"
#ccx run job 1
ccx result load job 1
ccx result convert job 1 partial