Add scripts and inp files.
This commit is contained in:
parent
ad937f2602
commit
e19f869a1e
390 changed files with 6580687 additions and 10 deletions
49
JMBBM13b/Activity.py
Normal file
49
JMBBM13b/Activity.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
# Import Neccesary Abaqus Modules
|
||||
from abaqusConstants import *
|
||||
from odbAccess import *
|
||||
import sys
|
||||
import os
|
||||
odbfilename='CDIE-1.odb'
|
||||
odb=openOdb(path=odbfilename)
|
||||
aInst=odb.rootAssembly.instances['PART-1-1']
|
||||
bInst=odb.rootAssembly.instances['PART-3-1']
|
||||
yold=[]
|
||||
ynew=[]
|
||||
outFile = open('out.dat',"w")
|
||||
for i in range(0,18):
|
||||
yold.append(0.)
|
||||
ynew.append(0.)
|
||||
for eachFrame in odb.steps["Step-1"].frames:
|
||||
strain=abs(eachFrame.fieldOutputs["U"].getSubset(region=bInst).values[0].data[0])/6.
|
||||
for i in range(0,18):
|
||||
yold[i]=ynew[i]
|
||||
for i in range(0,18):
|
||||
label='SDV'+str(19+i)
|
||||
ynew[i]=abs(eachFrame.fieldOutputs[label].getSubset(region=aInst).values[0].data)
|
||||
sum=0.
|
||||
for i in range(0,18):
|
||||
sum=sum+ynew[i]-yold[i]
|
||||
basalsum=0.
|
||||
for i in range(0,3):
|
||||
basalsum=basalsum+ynew[i]-yold[i]
|
||||
prismsum=0.
|
||||
for i in range(3,6):
|
||||
prismsum=prismsum+ynew[i]-yold[i]
|
||||
pyrsum=0.
|
||||
for i in range(6,12):
|
||||
pyrsum=pyrsum+ynew[i]-yold[i]
|
||||
twinsum=0.
|
||||
for i in range(12,18):
|
||||
twinsum=twinsum+ynew[i]-yold[i]
|
||||
if sum!=0.:
|
||||
prismsum=prismsum/sum
|
||||
basalsum=basalsum/sum
|
||||
pyrsum=pyrsum/sum
|
||||
twinsum=twinsum/sum
|
||||
else:
|
||||
twinsum=0.
|
||||
pyrsum=0.
|
||||
prismsum=0.
|
||||
basalsum=0.
|
||||
outFile.write("%12.6f %12.6f %12.6f %12.6f %12.6f\n " % (basalsum,prismsum,pyrsum,twinsum,strain))
|
||||
outFile.close()
|
708
JMBBM13b/CDIE_1E.inp
Normal file
708
JMBBM13b/CDIE_1E.inp
Normal file
|
@ -0,0 +1,708 @@
|
|||
*Heading
|
||||
** Job name: CDIE_1E Model name: Model-4
|
||||
** Generated by: Abaqus/CAE 6.10-1
|
||||
*Preprint, echo=NO, model=NO, history=NO, contact=NO
|
||||
**
|
||||
** PARTS
|
||||
**
|
||||
*Part, name=Part-1
|
||||
*Node
|
||||
1, 10., 6., 13.
|
||||
2, 10., 0., 13.
|
||||
3, 10., 6., 0.
|
||||
4, 10., 0., 0.
|
||||
5, 0., 6., 13.
|
||||
6, 0., 0., 13.
|
||||
7, 0., 6., 0.
|
||||
8, 0., 0., 0.
|
||||
*Element, type=C3D8
|
||||
1, 5, 6, 8, 7, 1, 2, 4, 3
|
||||
*Nset, nset=_PickedSet4, internal, generate
|
||||
1, 8, 1
|
||||
*Elset, elset=_PickedSet4, internal
|
||||
1,
|
||||
*Elset, elset=_Surf-1_S1, internal
|
||||
1,
|
||||
*Elset, elset=_Surf-1_S6, internal
|
||||
1,
|
||||
*Elset, elset=_Surf-1_S2, internal
|
||||
1,
|
||||
*Elset, elset=_Surf-1_S4, internal
|
||||
1,
|
||||
*Elset, elset=_Surf-1_S3, internal
|
||||
1,
|
||||
*Elset, elset=_Surf-1_S5, internal
|
||||
1,
|
||||
*Surface, type=ELEMENT, name=Surf-1
|
||||
_Surf-1_S1, S1
|
||||
_Surf-1_S6, S6
|
||||
_Surf-1_S2, S2
|
||||
_Surf-1_S4, S4
|
||||
_Surf-1_S3, S3
|
||||
_Surf-1_S5, S5
|
||||
** Section: Section-1
|
||||
*Solid Section, elset=_PickedSet4, material=Material-1
|
||||
,
|
||||
*End Part
|
||||
**
|
||||
*Part, name=Part-2
|
||||
*Node
|
||||
1, 10.0100002, 8., 26.
|
||||
2, 10.0100002, 0., 26.
|
||||
3, 10.0100002, 0., 0.
|
||||
4, 10.0100002, 8., 0.
|
||||
5, 0., 0., 26.
|
||||
6, 0., 0., 0.
|
||||
7, 0., 8., 26.
|
||||
8, 0., 8., 0.
|
||||
9, 10.0100002, 6., 26.
|
||||
10, 10.0100002, 4., 26.
|
||||
11, 10.0100002, 2., 26.
|
||||
12, 10.0100002, 0., 24.
|
||||
13, 10.0100002, 0., 22.
|
||||
14, 10.0100002, 0., 20.
|
||||
15, 10.0100002, 0., 18.
|
||||
16, 10.0100002, 0., 16.
|
||||
17, 10.0100002, 0., 14.
|
||||
18, 10.0100002, 0., 12.
|
||||
19, 10.0100002, 0., 10.
|
||||
20, 10.0100002, 0., 8.
|
||||
21, 10.0100002, 0., 6.
|
||||
22, 10.0100002, 0., 4.
|
||||
23, 10.0100002, 0., 2.
|
||||
24, 10.0100002, 2., 0.
|
||||
25, 10.0100002, 4., 0.
|
||||
26, 10.0100002, 6., 0.
|
||||
27, 10.0100002, 8., 2.
|
||||
28, 10.0100002, 8., 4.
|
||||
29, 10.0100002, 8., 6.
|
||||
30, 10.0100002, 8., 8.
|
||||
31, 10.0100002, 8., 10.
|
||||
32, 10.0100002, 8., 12.
|
||||
33, 10.0100002, 8., 14.
|
||||
34, 10.0100002, 8., 16.
|
||||
35, 10.0100002, 8., 18.
|
||||
36, 10.0100002, 8., 20.
|
||||
37, 10.0100002, 8., 22.
|
||||
38, 10.0100002, 8., 24.
|
||||
39, 8.00800037, 0., 26.
|
||||
40, 6.00600004, 0., 26.
|
||||
41, 4.00400019, 0., 26.
|
||||
42, 2.00200009, 0., 26.
|
||||
43, 0., 0., 24.
|
||||
44, 0., 0., 22.
|
||||
45, 0., 0., 20.
|
||||
46, 0., 0., 18.
|
||||
47, 0., 0., 16.
|
||||
48, 0., 0., 14.
|
||||
49, 0., 0., 12.
|
||||
50, 0., 0., 10.
|
||||
51, 0., 0., 8.
|
||||
52, 0., 0., 6.
|
||||
53, 0., 0., 4.
|
||||
54, 0., 0., 2.
|
||||
55, 2.00200009, 0., 0.
|
||||
56, 4.00400019, 0., 0.
|
||||
57, 6.00600004, 0., 0.
|
||||
58, 8.00800037, 0., 0.
|
||||
59, 0., 2., 26.
|
||||
60, 0., 4., 26.
|
||||
61, 0., 6., 26.
|
||||
62, 0., 8., 24.
|
||||
63, 0., 8., 22.
|
||||
64, 0., 8., 20.
|
||||
65, 0., 8., 18.
|
||||
66, 0., 8., 16.
|
||||
67, 0., 8., 14.
|
||||
68, 0., 8., 12.
|
||||
69, 0., 8., 10.
|
||||
70, 0., 8., 8.
|
||||
71, 0., 8., 6.
|
||||
72, 0., 8., 4.
|
||||
73, 0., 8., 2.
|
||||
74, 0., 6., 0.
|
||||
75, 0., 4., 0.
|
||||
76, 0., 2., 0.
|
||||
77, 10.0100002, 6., 24.
|
||||
78, 10.0100002, 4., 24.
|
||||
79, 10.0100002, 2., 24.
|
||||
80, 10.0100002, 6., 22.
|
||||
81, 10.0100002, 4., 22.
|
||||
82, 10.0100002, 2., 22.
|
||||
83, 10.0100002, 6., 20.
|
||||
84, 10.0100002, 4., 20.
|
||||
85, 10.0100002, 2., 20.
|
||||
86, 10.0100002, 6., 18.
|
||||
87, 10.0100002, 4., 18.
|
||||
88, 10.0100002, 2., 18.
|
||||
89, 10.0100002, 6., 16.
|
||||
90, 10.0100002, 4., 16.
|
||||
91, 10.0100002, 2., 16.
|
||||
92, 10.0100002, 6., 14.
|
||||
93, 10.0100002, 4., 14.
|
||||
94, 10.0100002, 2., 14.
|
||||
95, 10.0100002, 6., 12.
|
||||
96, 10.0100002, 4., 12.
|
||||
97, 10.0100002, 2., 12.
|
||||
98, 10.0100002, 6., 10.
|
||||
99, 10.0100002, 4., 10.
|
||||
100, 10.0100002, 2., 10.
|
||||
101, 10.0100002, 6., 8.
|
||||
102, 10.0100002, 4., 8.
|
||||
103, 10.0100002, 2., 8.
|
||||
104, 10.0100002, 6., 6.
|
||||
105, 10.0100002, 4., 6.
|
||||
106, 10.0100002, 2., 6.
|
||||
107, 10.0100002, 6., 4.
|
||||
108, 10.0100002, 4., 4.
|
||||
109, 10.0100002, 2., 4.
|
||||
110, 10.0100002, 6., 2.
|
||||
111, 10.0100002, 4., 2.
|
||||
112, 10.0100002, 2., 2.
|
||||
113, 8.00800037, 0., 24.
|
||||
114, 6.00600004, 0., 24.
|
||||
115, 4.00400019, 0., 24.
|
||||
116, 2.00200009, 0., 24.
|
||||
117, 8.00800037, 0., 22.
|
||||
118, 6.00600004, 0., 22.
|
||||
119, 4.00400019, 0., 22.
|
||||
120, 2.00200009, 0., 22.
|
||||
121, 8.00800037, 0., 20.
|
||||
122, 6.00600004, 0., 20.
|
||||
123, 4.00400019, 0., 20.
|
||||
124, 2.00200009, 0., 20.
|
||||
125, 8.00800037, 0., 18.
|
||||
126, 6.00600004, 0., 18.
|
||||
127, 4.00400019, 0., 18.
|
||||
128, 2.00200009, 0., 18.
|
||||
129, 8.00800037, 0., 16.
|
||||
130, 6.00600004, 0., 16.
|
||||
131, 4.00400019, 0., 16.
|
||||
132, 2.00200009, 0., 16.
|
||||
133, 8.00800037, 0., 14.
|
||||
134, 6.00600004, 0., 14.
|
||||
135, 4.00400019, 0., 14.
|
||||
136, 2.00200009, 0., 14.
|
||||
137, 8.00800037, 0., 12.
|
||||
138, 6.00600004, 0., 12.
|
||||
139, 4.00400019, 0., 12.
|
||||
140, 2.00200009, 0., 12.
|
||||
141, 8.00800037, 0., 10.
|
||||
142, 6.00600004, 0., 10.
|
||||
143, 4.00400019, 0., 10.
|
||||
144, 2.00200009, 0., 10.
|
||||
145, 8.00800037, 0., 8.
|
||||
146, 6.00600004, 0., 8.
|
||||
147, 4.00400019, 0., 8.
|
||||
148, 2.00200009, 0., 8.
|
||||
149, 8.00800037, 0., 6.
|
||||
150, 6.00600004, 0., 6.
|
||||
151, 4.00400019, 0., 6.
|
||||
152, 2.00200009, 0., 6.
|
||||
153, 8.00800037, 0., 4.
|
||||
154, 6.00600004, 0., 4.
|
||||
155, 4.00400019, 0., 4.
|
||||
156, 2.00200009, 0., 4.
|
||||
157, 8.00800037, 0., 2.
|
||||
158, 6.00600004, 0., 2.
|
||||
159, 4.00400019, 0., 2.
|
||||
160, 2.00200009, 0., 2.
|
||||
161, 0., 2., 24.
|
||||
162, 0., 4., 24.
|
||||
163, 0., 6., 24.
|
||||
164, 0., 2., 22.
|
||||
165, 0., 4., 22.
|
||||
166, 0., 6., 22.
|
||||
167, 0., 2., 20.
|
||||
168, 0., 4., 20.
|
||||
169, 0., 6., 20.
|
||||
170, 0., 2., 18.
|
||||
171, 0., 4., 18.
|
||||
172, 0., 6., 18.
|
||||
173, 0., 2., 16.
|
||||
174, 0., 4., 16.
|
||||
175, 0., 6., 16.
|
||||
176, 0., 2., 14.
|
||||
177, 0., 4., 14.
|
||||
178, 0., 6., 14.
|
||||
179, 0., 2., 12.
|
||||
180, 0., 4., 12.
|
||||
181, 0., 6., 12.
|
||||
182, 0., 2., 10.
|
||||
183, 0., 4., 10.
|
||||
184, 0., 6., 10.
|
||||
185, 0., 2., 8.
|
||||
186, 0., 4., 8.
|
||||
187, 0., 6., 8.
|
||||
188, 0., 2., 6.
|
||||
189, 0., 4., 6.
|
||||
190, 0., 6., 6.
|
||||
191, 0., 2., 4.
|
||||
192, 0., 4., 4.
|
||||
193, 0., 6., 4.
|
||||
194, 0., 2., 2.
|
||||
195, 0., 4., 2.
|
||||
196, 0., 6., 2.
|
||||
*Element, type=S4R
|
||||
1, 1, 9, 77, 38
|
||||
2, 9, 10, 78, 77
|
||||
3, 10, 11, 79, 78
|
||||
4, 11, 2, 12, 79
|
||||
5, 38, 77, 80, 37
|
||||
6, 77, 78, 81, 80
|
||||
7, 78, 79, 82, 81
|
||||
8, 79, 12, 13, 82
|
||||
9, 37, 80, 83, 36
|
||||
10, 80, 81, 84, 83
|
||||
11, 81, 82, 85, 84
|
||||
12, 82, 13, 14, 85
|
||||
13, 36, 83, 86, 35
|
||||
14, 83, 84, 87, 86
|
||||
15, 84, 85, 88, 87
|
||||
16, 85, 14, 15, 88
|
||||
17, 35, 86, 89, 34
|
||||
18, 86, 87, 90, 89
|
||||
19, 87, 88, 91, 90
|
||||
20, 88, 15, 16, 91
|
||||
21, 34, 89, 92, 33
|
||||
22, 89, 90, 93, 92
|
||||
23, 90, 91, 94, 93
|
||||
24, 91, 16, 17, 94
|
||||
25, 33, 92, 95, 32
|
||||
26, 92, 93, 96, 95
|
||||
27, 93, 94, 97, 96
|
||||
28, 94, 17, 18, 97
|
||||
29, 32, 95, 98, 31
|
||||
30, 95, 96, 99, 98
|
||||
31, 96, 97, 100, 99
|
||||
32, 97, 18, 19, 100
|
||||
33, 31, 98, 101, 30
|
||||
34, 98, 99, 102, 101
|
||||
35, 99, 100, 103, 102
|
||||
36, 100, 19, 20, 103
|
||||
37, 30, 101, 104, 29
|
||||
38, 101, 102, 105, 104
|
||||
39, 102, 103, 106, 105
|
||||
40, 103, 20, 21, 106
|
||||
41, 29, 104, 107, 28
|
||||
42, 104, 105, 108, 107
|
||||
43, 105, 106, 109, 108
|
||||
44, 106, 21, 22, 109
|
||||
45, 28, 107, 110, 27
|
||||
46, 107, 108, 111, 110
|
||||
47, 108, 109, 112, 111
|
||||
48, 109, 22, 23, 112
|
||||
49, 27, 110, 26, 4
|
||||
50, 110, 111, 25, 26
|
||||
51, 111, 112, 24, 25
|
||||
52, 112, 23, 3, 24
|
||||
53, 2, 39, 113, 12
|
||||
54, 39, 40, 114, 113
|
||||
55, 40, 41, 115, 114
|
||||
56, 41, 42, 116, 115
|
||||
57, 42, 5, 43, 116
|
||||
58, 12, 113, 117, 13
|
||||
59, 113, 114, 118, 117
|
||||
60, 114, 115, 119, 118
|
||||
61, 115, 116, 120, 119
|
||||
62, 116, 43, 44, 120
|
||||
63, 13, 117, 121, 14
|
||||
64, 117, 118, 122, 121
|
||||
65, 118, 119, 123, 122
|
||||
66, 119, 120, 124, 123
|
||||
67, 120, 44, 45, 124
|
||||
68, 14, 121, 125, 15
|
||||
69, 121, 122, 126, 125
|
||||
70, 122, 123, 127, 126
|
||||
71, 123, 124, 128, 127
|
||||
72, 124, 45, 46, 128
|
||||
73, 15, 125, 129, 16
|
||||
74, 125, 126, 130, 129
|
||||
75, 126, 127, 131, 130
|
||||
76, 127, 128, 132, 131
|
||||
77, 128, 46, 47, 132
|
||||
78, 16, 129, 133, 17
|
||||
79, 129, 130, 134, 133
|
||||
80, 130, 131, 135, 134
|
||||
81, 131, 132, 136, 135
|
||||
82, 132, 47, 48, 136
|
||||
83, 17, 133, 137, 18
|
||||
84, 133, 134, 138, 137
|
||||
85, 134, 135, 139, 138
|
||||
86, 135, 136, 140, 139
|
||||
87, 136, 48, 49, 140
|
||||
88, 18, 137, 141, 19
|
||||
89, 137, 138, 142, 141
|
||||
90, 138, 139, 143, 142
|
||||
91, 139, 140, 144, 143
|
||||
92, 140, 49, 50, 144
|
||||
93, 19, 141, 145, 20
|
||||
94, 141, 142, 146, 145
|
||||
95, 142, 143, 147, 146
|
||||
96, 143, 144, 148, 147
|
||||
97, 144, 50, 51, 148
|
||||
98, 20, 145, 149, 21
|
||||
99, 145, 146, 150, 149
|
||||
100, 146, 147, 151, 150
|
||||
101, 147, 148, 152, 151
|
||||
102, 148, 51, 52, 152
|
||||
103, 21, 149, 153, 22
|
||||
104, 149, 150, 154, 153
|
||||
105, 150, 151, 155, 154
|
||||
106, 151, 152, 156, 155
|
||||
107, 152, 52, 53, 156
|
||||
108, 22, 153, 157, 23
|
||||
109, 153, 154, 158, 157
|
||||
110, 154, 155, 159, 158
|
||||
111, 155, 156, 160, 159
|
||||
112, 156, 53, 54, 160
|
||||
113, 23, 157, 58, 3
|
||||
114, 157, 158, 57, 58
|
||||
115, 158, 159, 56, 57
|
||||
116, 159, 160, 55, 56
|
||||
117, 160, 54, 6, 55
|
||||
118, 5, 59, 161, 43
|
||||
119, 59, 60, 162, 161
|
||||
120, 60, 61, 163, 162
|
||||
121, 61, 7, 62, 163
|
||||
122, 43, 161, 164, 44
|
||||
123, 161, 162, 165, 164
|
||||
124, 162, 163, 166, 165
|
||||
125, 163, 62, 63, 166
|
||||
126, 44, 164, 167, 45
|
||||
127, 164, 165, 168, 167
|
||||
128, 165, 166, 169, 168
|
||||
129, 166, 63, 64, 169
|
||||
130, 45, 167, 170, 46
|
||||
131, 167, 168, 171, 170
|
||||
132, 168, 169, 172, 171
|
||||
133, 169, 64, 65, 172
|
||||
134, 46, 170, 173, 47
|
||||
135, 170, 171, 174, 173
|
||||
136, 171, 172, 175, 174
|
||||
137, 172, 65, 66, 175
|
||||
138, 47, 173, 176, 48
|
||||
139, 173, 174, 177, 176
|
||||
140, 174, 175, 178, 177
|
||||
141, 175, 66, 67, 178
|
||||
142, 48, 176, 179, 49
|
||||
143, 176, 177, 180, 179
|
||||
144, 177, 178, 181, 180
|
||||
145, 178, 67, 68, 181
|
||||
146, 49, 179, 182, 50
|
||||
147, 179, 180, 183, 182
|
||||
148, 180, 181, 184, 183
|
||||
149, 181, 68, 69, 184
|
||||
150, 50, 182, 185, 51
|
||||
151, 182, 183, 186, 185
|
||||
152, 183, 184, 187, 186
|
||||
153, 184, 69, 70, 187
|
||||
154, 51, 185, 188, 52
|
||||
155, 185, 186, 189, 188
|
||||
156, 186, 187, 190, 189
|
||||
157, 187, 70, 71, 190
|
||||
158, 52, 188, 191, 53
|
||||
159, 188, 189, 192, 191
|
||||
160, 189, 190, 193, 192
|
||||
161, 190, 71, 72, 193
|
||||
162, 53, 191, 194, 54
|
||||
163, 191, 192, 195, 194
|
||||
164, 192, 193, 196, 195
|
||||
165, 193, 72, 73, 196
|
||||
166, 54, 194, 76, 6
|
||||
167, 194, 195, 75, 76
|
||||
168, 195, 196, 74, 75
|
||||
169, 196, 73, 8, 74
|
||||
*Nset, nset=_PickedSet4, internal, generate
|
||||
1, 196, 1
|
||||
*Elset, elset=_PickedSet4, internal, generate
|
||||
1, 169, 1
|
||||
** Section: Section-2
|
||||
*Shell Section, elset=_PickedSet4, material=Material-2
|
||||
0.01, 5
|
||||
*End Part
|
||||
**
|
||||
*Part, name=Part-3
|
||||
*Node
|
||||
1, 10., 0., 26.
|
||||
2, 8., 0., 26.
|
||||
3, 6., 0., 26.
|
||||
4, 4., 0., 26.
|
||||
5, 2., 0., 26.
|
||||
6, 0., 0., 26.
|
||||
7, 10., 0., 24.
|
||||
8, 8., 0., 24.
|
||||
9, 6., 0., 24.
|
||||
10, 4., 0., 24.
|
||||
11, 2., 0., 24.
|
||||
12, 0., 0., 24.
|
||||
13, 10., 0., 22.
|
||||
14, 8., 0., 22.
|
||||
15, 6., 0., 22.
|
||||
16, 4., 0., 22.
|
||||
17, 2., 0., 22.
|
||||
18, 0., 0., 22.
|
||||
19, 10., 0., 20.
|
||||
20, 8., 0., 20.
|
||||
21, 6., 0., 20.
|
||||
22, 4., 0., 20.
|
||||
23, 2., 0., 20.
|
||||
24, 0., 0., 20.
|
||||
25, 10., 0., 18.
|
||||
26, 8., 0., 18.
|
||||
27, 6., 0., 18.
|
||||
28, 4., 0., 18.
|
||||
29, 2., 0., 18.
|
||||
30, 0., 0., 18.
|
||||
31, 10., 0., 16.
|
||||
32, 8., 0., 16.
|
||||
33, 6., 0., 16.
|
||||
34, 4., 0., 16.
|
||||
35, 2., 0., 16.
|
||||
36, 0., 0., 16.
|
||||
37, 10., 0., 14.
|
||||
38, 8., 0., 14.
|
||||
39, 6., 0., 14.
|
||||
40, 4., 0., 14.
|
||||
41, 2., 0., 14.
|
||||
42, 0., 0., 14.
|
||||
43, 10., 0., 12.
|
||||
44, 8., 0., 12.
|
||||
45, 6., 0., 12.
|
||||
46, 4., 0., 12.
|
||||
47, 2., 0., 12.
|
||||
48, 0., 0., 12.
|
||||
49, 10., 0., 10.
|
||||
50, 8., 0., 10.
|
||||
51, 6., 0., 10.
|
||||
52, 4., 0., 10.
|
||||
53, 2., 0., 10.
|
||||
54, 0., 0., 10.
|
||||
55, 10., 0., 8.
|
||||
56, 8., 0., 8.
|
||||
57, 6., 0., 8.
|
||||
58, 4., 0., 8.
|
||||
59, 2., 0., 8.
|
||||
60, 0., 0., 8.
|
||||
61, 10., 0., 6.
|
||||
62, 8., 0., 6.
|
||||
63, 6., 0., 6.
|
||||
64, 4., 0., 6.
|
||||
65, 2., 0., 6.
|
||||
66, 0., 0., 6.
|
||||
67, 10., 0., 4.
|
||||
68, 8., 0., 4.
|
||||
69, 6., 0., 4.
|
||||
70, 4., 0., 4.
|
||||
71, 2., 0., 4.
|
||||
72, 0., 0., 4.
|
||||
73, 10., 0., 2.
|
||||
74, 8., 0., 2.
|
||||
75, 6., 0., 2.
|
||||
76, 4., 0., 2.
|
||||
77, 2., 0., 2.
|
||||
78, 0., 0., 2.
|
||||
79, 10., 0., 0.
|
||||
80, 8., 0., 0.
|
||||
81, 6., 0., 0.
|
||||
82, 4., 0., 0.
|
||||
83, 2., 0., 0.
|
||||
84, 0., 0., 0.
|
||||
*Element, type=S4R
|
||||
1, 1, 2, 8, 7
|
||||
2, 2, 3, 9, 8
|
||||
3, 3, 4, 10, 9
|
||||
4, 4, 5, 11, 10
|
||||
5, 5, 6, 12, 11
|
||||
6, 7, 8, 14, 13
|
||||
7, 8, 9, 15, 14
|
||||
8, 9, 10, 16, 15
|
||||
9, 10, 11, 17, 16
|
||||
10, 11, 12, 18, 17
|
||||
11, 13, 14, 20, 19
|
||||
12, 14, 15, 21, 20
|
||||
13, 15, 16, 22, 21
|
||||
14, 16, 17, 23, 22
|
||||
15, 17, 18, 24, 23
|
||||
16, 19, 20, 26, 25
|
||||
17, 20, 21, 27, 26
|
||||
18, 21, 22, 28, 27
|
||||
19, 22, 23, 29, 28
|
||||
20, 23, 24, 30, 29
|
||||
21, 25, 26, 32, 31
|
||||
22, 26, 27, 33, 32
|
||||
23, 27, 28, 34, 33
|
||||
24, 28, 29, 35, 34
|
||||
25, 29, 30, 36, 35
|
||||
26, 31, 32, 38, 37
|
||||
27, 32, 33, 39, 38
|
||||
28, 33, 34, 40, 39
|
||||
29, 34, 35, 41, 40
|
||||
30, 35, 36, 42, 41
|
||||
31, 37, 38, 44, 43
|
||||
32, 38, 39, 45, 44
|
||||
33, 39, 40, 46, 45
|
||||
34, 40, 41, 47, 46
|
||||
35, 41, 42, 48, 47
|
||||
36, 43, 44, 50, 49
|
||||
37, 44, 45, 51, 50
|
||||
38, 45, 46, 52, 51
|
||||
39, 46, 47, 53, 52
|
||||
40, 47, 48, 54, 53
|
||||
41, 49, 50, 56, 55
|
||||
42, 50, 51, 57, 56
|
||||
43, 51, 52, 58, 57
|
||||
44, 52, 53, 59, 58
|
||||
45, 53, 54, 60, 59
|
||||
46, 55, 56, 62, 61
|
||||
47, 56, 57, 63, 62
|
||||
48, 57, 58, 64, 63
|
||||
49, 58, 59, 65, 64
|
||||
50, 59, 60, 66, 65
|
||||
51, 61, 62, 68, 67
|
||||
52, 62, 63, 69, 68
|
||||
53, 63, 64, 70, 69
|
||||
54, 64, 65, 71, 70
|
||||
55, 65, 66, 72, 71
|
||||
56, 67, 68, 74, 73
|
||||
57, 68, 69, 75, 74
|
||||
58, 69, 70, 76, 75
|
||||
59, 70, 71, 77, 76
|
||||
60, 71, 72, 78, 77
|
||||
61, 73, 74, 80, 79
|
||||
62, 74, 75, 81, 80
|
||||
63, 75, 76, 82, 81
|
||||
64, 76, 77, 83, 82
|
||||
65, 77, 78, 84, 83
|
||||
*Nset, nset=_PickedSet3, internal, generate
|
||||
1, 84, 1
|
||||
*Elset, elset=_PickedSet3, internal, generate
|
||||
1, 65, 1
|
||||
** Section: Section-2
|
||||
*Shell Section, elset=_PickedSet3, material=Material-2
|
||||
0.01, 5
|
||||
*End Part
|
||||
**
|
||||
**
|
||||
** ASSEMBLY
|
||||
**
|
||||
*Assembly, name=Assembly
|
||||
**
|
||||
*Instance, name=Part-1-1, part=Part-1
|
||||
-5.74196216818474e-15, 13., 4.99999999999999
|
||||
-5.74196216818474e-15, 13., 4.99999999999999, 0.577350279552036, 13.577350279552, 4.42264972044795, 119.999999109416
|
||||
*End Instance
|
||||
**
|
||||
*Instance, name=Part-2-1, part=Part-2
|
||||
-0.00500000000000903, 20.5, 5.005
|
||||
-0.00500000000000903, 20.5, 5.005, 0.572350279552033, 21.077350279552, 4.42764972044795, 119.999999109416
|
||||
*End Instance
|
||||
**
|
||||
*Instance, name=Part-3-1, part=Part-3
|
||||
6., -5.5, 5.
|
||||
6., -5.5, 5., 6.57735027955204, -6.07735027955204, 4.42264972044796, 240.000000890584
|
||||
*End Instance
|
||||
**
|
||||
*Nset, nset=_PickedSet37, internal, instance=Part-2-1, generate
|
||||
1, 196, 1
|
||||
*Elset, elset=_PickedSet37, internal, instance=Part-2-1, generate
|
||||
1, 169, 1
|
||||
*Nset, nset=_PickedSet38, internal, instance=Part-3-1, generate
|
||||
1, 84, 1
|
||||
*Elset, elset=_PickedSet38, internal, instance=Part-3-1, generate
|
||||
1, 65, 1
|
||||
*Nset, nset=Set-1, instance=Part-3-1
|
||||
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, 83, 84
|
||||
*Nset, nset=Set-2, instance=Part-3-1
|
||||
82,
|
||||
** Constraint: Constraint-1
|
||||
*Equation
|
||||
2
|
||||
Set-1, 1, 1.
|
||||
Set-2, 1, -1.
|
||||
*End Assembly
|
||||
*Amplitude, name=Amp-1, definition=SMOOTH STEP
|
||||
0., 0., 10., 1.
|
||||
**
|
||||
** MATERIALS
|
||||
**
|
||||
*MATERIAL, NAME=MATERIAL-1
|
||||
**
|
||||
*USER MATERIAL, CONSTANTS=22, UNSYMM
|
||||
45000.,0.3,1.,0.,0.,0.,0.,1.
|
||||
4.,1.,0.,10.,20.,150.,7500.,40.,
|
||||
260.,7500.,5.,200.,0.11,10.
|
||||
*Depvar
|
||||
163
|
||||
**
|
||||
*Material, name=Material-2
|
||||
*Elastic
|
||||
200000., 0.3
|
||||
**
|
||||
** INTERACTION PROPERTIES
|
||||
**
|
||||
*Surface Interaction, name=IntProp-1
|
||||
1.,
|
||||
*Friction, slip tolerance=0.005
|
||||
0.05,
|
||||
*Surface Behavior, pressure-overclosure=HARD
|
||||
**
|
||||
** INTERACTIONS
|
||||
**
|
||||
** Interaction: Int-1
|
||||
*Contact
|
||||
*Contact Inclusions, ALL EXTERIOR
|
||||
*Contact Property Assignment
|
||||
, , IntProp-1
|
||||
** ----------------------------------------------------------------
|
||||
**
|
||||
** STEP: Step-1
|
||||
**
|
||||
*Step, name=Step-1, nlgeom=YES, inc=10000
|
||||
*Static
|
||||
0.1, 10., 1e-05, 0.1
|
||||
**
|
||||
** BOUNDARY CONDITIONS
|
||||
**
|
||||
** Name: BC-1 Type: Displacement/Rotation
|
||||
*Boundary
|
||||
_PickedSet37, 1, 1
|
||||
_PickedSet37, 2, 2
|
||||
_PickedSet37, 3, 3
|
||||
_PickedSet37, 4, 4
|
||||
_PickedSet37, 5, 5
|
||||
_PickedSet37, 6, 6
|
||||
** Name: BC-2 Type: Displacement/Rotation
|
||||
*Boundary
|
||||
_PickedSet38, 2, 2
|
||||
_PickedSet38, 3, 3
|
||||
_PickedSet38, 4, 4
|
||||
_PickedSet38, 5, 5
|
||||
_PickedSet38, 6, 6
|
||||
** Name: BC-4 Type: Displacement/Rotation
|
||||
*Boundary, amplitude=Amp-1
|
||||
Set-2, 1, 1, -1.
|
||||
**
|
||||
** OUTPUT REQUESTS
|
||||
**
|
||||
*Restart, write, number interval=1, time marks=NO
|
||||
**
|
||||
** FIELD OUTPUT: F-Output-1
|
||||
**
|
||||
*Output, field, number interval=100, time marks=NO
|
||||
*Node Output
|
||||
CF, RF, U
|
||||
*Element Output, directions=YES
|
||||
LE, PE, PEEQ, PEMAG, S, SDV
|
||||
*Contact Output
|
||||
CSTRESS,
|
||||
**
|
||||
** HISTORY OUTPUT: H-Output-1
|
||||
**
|
||||
*Output, history, variable=PRESELECT
|
||||
*End Step
|
160
JMBBM13b/CP_Generator_30_3D.py
Normal file
160
JMBBM13b/CP_Generator_30_3D.py
Normal file
|
@ -0,0 +1,160 @@
|
|||
# Import Abaqus and External Modules
|
||||
from abaqusConstants import *
|
||||
from abaqus import *
|
||||
import random
|
||||
import regionToolset
|
||||
import mesh
|
||||
import step
|
||||
import part
|
||||
randomSeed=[41557]
|
||||
for eachModel in range(0,1):
|
||||
#
|
||||
# Create Model Database
|
||||
VerFile=Mdb(pathName="MStructure")
|
||||
VerModel=VerFile.models['Model-1']
|
||||
VerAssembly=VerModel.rootAssembly
|
||||
#
|
||||
# Underlying Geometry
|
||||
xSize=0.1
|
||||
ySize=0.05
|
||||
#
|
||||
# Microstructure Geometry
|
||||
charLength=0.00595 #Grain Side Length
|
||||
numX=15
|
||||
numY=5
|
||||
#
|
||||
# Other Parametersvgrain vumat
|
||||
meshSize=0.001
|
||||
analysis='Tension' # Options: Tension, Bending
|
||||
#
|
||||
# Draw Base Part
|
||||
BasePart=VerModel.Part(name='Base', dimensionality=THREE_D,type=DEFORMABLE_BODY)
|
||||
BaseSketch = VerModel.ConstrainedSketch(name='Base',sheetSize=200.0)
|
||||
#
|
||||
BaseSketch.Line(point1=(0.,0.),point2=(xSize,0.))
|
||||
BaseSketch.Line(point1=(xSize,0.),point2=(xSize,ySize))
|
||||
BaseSketch.Line(point1=(xSize,ySize),point2=(0.,ySize))
|
||||
BaseSketch.Line(point1=(0.,ySize),point2=(0.,0.))
|
||||
BasePart.BaseSolidExtrude(sketch=BaseSketch, depth=0.006)
|
||||
BasePart=VerModel.parts['Base']
|
||||
#
|
||||
# Draw Microstructure and Partition Base Part
|
||||
ParSketch=VerModel.ConstrainedSketch(name='Par',sheetSize=200)
|
||||
yLength=sin(radians(30.))*charLength
|
||||
xLength=cos(radians(30.))*charLength
|
||||
offsetX=0.
|
||||
for i in range(0,numX):
|
||||
offsetY=0.
|
||||
for j in range(0,numY):
|
||||
if j%2==0:
|
||||
xPos=offsetX
|
||||
else:
|
||||
xPos=offsetX+xLength
|
||||
ParSketch.Line(point1=(xLength+xPos,-yLength+offsetY),point2=(xLength+xPos,yLength+offsetY))
|
||||
ParSketch.Line(point1=(xLength+xPos,+yLength+offsetY),point2=(xPos,2.*yLength+offsetY))
|
||||
ParSketch.Line(point1=(xLength+xPos,-yLength+offsetY),point2=(xPos,-2.*yLength+offsetY))
|
||||
offsetY=offsetY+3.*yLength
|
||||
offsetX=offsetX+2.*xLength
|
||||
for eachFace in BasePart.faces:
|
||||
if eachFace.getNormal()==(0.0,0.0,1.0):
|
||||
targetFace=eachFace
|
||||
print targetFace
|
||||
BasePart.PartitionFaceBySketch(faces=targetFace, sketch=ParSketch)
|
||||
#
|
||||
# Generate Sections and Section Assignments
|
||||
labelcount=1
|
||||
regions=BasePart.faces
|
||||
for eachregion in regions:
|
||||
mlabel='Mat'+str(labelcount)
|
||||
VerModel.PEGSection(name=mlabel, material=mlabel, thickness=0.01,
|
||||
wedgeAngle1=0.0, wedgeAngle2=0.0)
|
||||
BasePart.SectionAssignment(region=(eachregion,),
|
||||
sectionName=mlabel, offset=0.0, offsetField='')
|
||||
labelcount=labelcount+1
|
||||
#
|
||||
# Mesh Part
|
||||
BasePart.ReferencePoint(point=(0.0, 0.0, 0.0))
|
||||
offsetX=0.
|
||||
offsetY=0.
|
||||
ParSketch2=VerModel.ConstrainedSketch(name='Hex',sheetSize=200, transform=partTransform)
|
||||
for i in range(0,2*numX):
|
||||
ParSketch2.Line(point1=(offsetX,0.),point2=(offsetX,2.*charLength*numY))
|
||||
offsetX=offsetX+xLength
|
||||
for i in range(0,numY):
|
||||
ParSketch2.Line(point1=(0.,offsetY),point2=(2.*charLength*numX,offsetY))
|
||||
offsetY=offsetY+3.*yLength
|
||||
BasePart.PartitionFaceBySketch(faces=BasePart.faces, sketch=ParSketch2)
|
||||
BasePart.setMeshControls(regions=BasePart.faces, elemShape=QUAD, technique=SWEEP)
|
||||
BasePart.seedPart(size=meshSize)
|
||||
pickedRegions =(BasePart.faces, )
|
||||
elemType1 = mesh.ElemType(elemCode=CPEG8R, elemLibrary=STANDARD)
|
||||
BasePart.setElementType(regions=pickedRegions, elemTypes=(elemType1,))
|
||||
BasePart.generateMesh()
|
||||
#
|
||||
#Steps
|
||||
VerModel.StaticStep(name='Step-1', previous='Initial',
|
||||
maxNumInc=100000, initialInc=0.03, minInc=1e-07, maxInc=0.15, nlgeom=ON, timePeriod=20.)
|
||||
VerModel.fieldOutputRequests['F-Output-1'].setValues(variables=(
|
||||
'LE', 'RF', 'S', 'U'), timeInterval=0.2, timeMarks=OFF)
|
||||
#
|
||||
#Boundary Conditions
|
||||
VerAssembly.Instance(name='Strut',part=BasePart, dependent=ON)
|
||||
iNodes=VerAssembly.instances['Strut'].nodes
|
||||
toler=0.01*meshSize
|
||||
Left=iNodes.getByBoundingBox(xMin=-toler,xMax=toler,yMin=-toler,yMax=ySize+toler)
|
||||
BLeft=iNodes.getByBoundingBox(xMin=-toler,xMax=toler,yMin=-toler,yMax=toler)
|
||||
Right=iNodes.getByBoundingBox(xMin=xSize-toler,xMax=xSize+toler,yMin=toler,yMax=ySize+toler)
|
||||
BRight=iNodes.getByBoundingBox(xMin=xSize-toler,xMax=xSize+toler,yMin=-toler,yMax=toler)
|
||||
#
|
||||
Lregion=regionToolset.Region(nodes=Left)
|
||||
BLregion=regionToolset.Region(nodes=BLeft)
|
||||
Rregion=regionToolset.Region(nodes=Right)
|
||||
BRregion=regionToolset.Region(nodes=BRight)
|
||||
#
|
||||
VerModel.SmoothStepAmplitude(name='Amp-1', timeSpan=TOTAL, data=(( 0.0, 0.0), (24.00, 1.0)))
|
||||
VerModel.DisplacementBC(name='LeftX', createStepName='Initial',
|
||||
region=Lregion, u1=0.0, u2=UNSET, u3=UNSET, ur1=UNSET, ur2=UNSET,
|
||||
ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM)
|
||||
VerModel.DisplacementBC(name='BottomY1', createStepName='Initial',
|
||||
region=BLregion, u1=UNSET, u2=0.0, u3=UNSET, ur1=UNSET, ur2=UNSET,
|
||||
ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM)
|
||||
if analysis=='Tension':
|
||||
VerModel.DisplacementBC(name='Tension', createStepName='Step-1',
|
||||
region=BRregion, u1=0.5*xSize, u2=UNSET, u3=UNSET, ur1=UNSET, ur2=UNSET,
|
||||
ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM)
|
||||
VerModel.DisplacementBC(name='BottomY2', createStepName='Initial',
|
||||
region=BRregion, u1=UNSET, u2=0.0, u3=UNSET, ur1=UNSET, ur2=UNSET,
|
||||
ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM)
|
||||
VerModel.boundaryConditions['Tension'].setValues(amplitude='Amp-1')
|
||||
else:
|
||||
VerModel.DisplacementBC(name='Bending', createStepName='Step-1',
|
||||
region=BRregion, u1=UNSET, u2=UNSET, u3=UNSET, ur1=UNSET, ur2=UNSET,
|
||||
ur3=-6., amplitude=UNSET, fixed=OFF, distributionType=UNIFORM)
|
||||
VerModel.boundaryConditions['Bending'].setValues(amplitude='Amp-1')
|
||||
#
|
||||
VerAssembly.Set(nodes=Right, name='Right')
|
||||
VerAssembly.Set(nodes=BRight, name='BRight')
|
||||
if analysis=='Tension':
|
||||
VerModel.Equation(name='Constraint-1', terms=((1.0, 'Right', 1), ( -1.0, 'BRight', 1)))
|
||||
else:
|
||||
region1=VerAssembly.sets['BRight']
|
||||
region2=VerAssembly.sets['Right']
|
||||
VerModel.MultipointConstraint(name='Constraint-2',
|
||||
controlPoint=region1, surface=region2, mpcType=BEAM_MPC,
|
||||
userMode=DOF_MODE_MPC, userType=0, csys=None)
|
||||
#
|
||||
#Create Job and write input file
|
||||
if grainType=='Square':
|
||||
letter1='S'
|
||||
elif grainType=='Hexagon':
|
||||
letter1='H'
|
||||
elif grainType=='Voronoi':
|
||||
letter1='V'
|
||||
if analysis=='Tension':
|
||||
letter2='T'
|
||||
else:
|
||||
letter2='B'
|
||||
label='W'+str(numY)+'L'+str(numX)+letter1+letter2+str(eachModel)
|
||||
VerFile.Job(name=label, model='Model-1', type=ANALYSIS,userSubroutine='ucrystal.for')
|
||||
VerFile.jobs[label].writeInput(consistencyChecking=OFF)
|
||||
# VerFile.close()
|
49
JMBBM13b/GenerateMaterials.py
Normal file
49
JMBBM13b/GenerateMaterials.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
from abaqusConstants import *
|
||||
from abaqus import *
|
||||
import random
|
||||
incFile=open('Ori29.dat','w')
|
||||
# seeds 1-10
|
||||
#random.seed(79789)
|
||||
#random.seed(673673)
|
||||
#random.seed(868256)
|
||||
#random.seed(15675676)
|
||||
#random.seed(8836572)
|
||||
# seeds 20-29
|
||||
random.seed(6753679)
|
||||
random.seed(88822657)
|
||||
random.seed(267567)
|
||||
random.seed(833683655)
|
||||
random.seed(566445)
|
||||
for i in range(1,1000):
|
||||
# Generate 'c' direction
|
||||
angle1=random.random()*2.*pi
|
||||
sigma=0.02 # extruded rod
|
||||
a2=random.normalvariate(1., sigma)
|
||||
if a2>1.:
|
||||
a2=1.-(a2-1.)
|
||||
angle2=acos(a2)
|
||||
# angle2=acos(random.random()) # homogeneous
|
||||
cx=cos(angle1)*cos(angle2)
|
||||
cy=sin(angle1)*cos(angle2)
|
||||
cz=sin(angle2)
|
||||
# Get arbitary normal to C
|
||||
nx=cos(angle1)*cos(angle2+pi/2.)
|
||||
ny=sin(angle1)*cos(angle2+pi/2.)
|
||||
nz=sin(angle2+pi/2.)
|
||||
# Rotate about random angle
|
||||
a3=random.random()*2.*pi
|
||||
xx=nx*(cos(a3)+cx*cx*(1.-cos(a3)))+ny*(cx*cy*(1.-cos(a3))-cz*sin(a3))+nz*(cx*cz*(1.-cos(a3))+cy*sin(a3))
|
||||
xy=nx*(cx*cy*(1.-cos(a3))+cz*sin(a3))+ny*(cos(a3)+cy*cy*(1.-cos(a3)))+nz*(cy*cz*(1.-cos(a3))-cx*sin(a3))
|
||||
xz=nx*(cz*cx*(1.-cos(a3))-cy*sin(a3))+ny*(cz*cy*(1.-cos(a3))+cx*sin(a3))+nz*(cos(a3)+cz*cz*(1.-cos(a3)))
|
||||
# Y-Axis is normal to C and X
|
||||
yx=xy*cz-xz*cy
|
||||
yy=xz*cx-xx*cz
|
||||
yz=xx*cy-xy*cx
|
||||
incFile.write('*MATERIAL, NAME=Mat '+str(i)+ '\n')
|
||||
incFile.write('*USER MATERIAL, CONSTANTS=22, UNSYMM \n')
|
||||
incFile.write('45000.,0.3,'+str(xx)+','+str(xy)+','+str(xz)+','+str(yx)+','+str(yy)+','+str(yz)+' \n')
|
||||
incFile.write('4.,1.,0.,10.,20.,150.,7500.,40., \n')
|
||||
incFile.write('260.,7500.,5.,200.,0.11,10. \n')
|
||||
incFile.write('*Depvar \n')
|
||||
incFile.write(str(163)+' \n')
|
||||
incFile.close()
|
35
JMBBM13b/Orientations.py
Normal file
35
JMBBM13b/Orientations.py
Normal file
|
@ -0,0 +1,35 @@
|
|||
from abaqusConstants import *
|
||||
from abaqus import *
|
||||
import random
|
||||
outFile = open('ori.dat',"w")
|
||||
random.seed(658468764)
|
||||
# Generate 'c' direction
|
||||
for i in range(0,500):
|
||||
angle1=random.random()*2.*pi
|
||||
sigma=0.02 # extruded rod
|
||||
a2=random.normalvariate(1., sigma)
|
||||
if a2>1.:
|
||||
a2=1.-(a2-1.)
|
||||
# a2=acos(random.random()) # homogeneous
|
||||
angle2=acos(a2)
|
||||
cx=cos(angle1)*cos(angle2)
|
||||
cy=sin(angle1)*cos(angle2)
|
||||
cz=sin(angle2)
|
||||
# Get Stereo Projection
|
||||
# sx=cx*(1.-(cz/(1.+cz)))
|
||||
# sy=cy*(1.-(cz/(1.+cz)))
|
||||
# Get arbitary normal to C
|
||||
nx=cos(angle1)*cos(angle2+pi/2.)
|
||||
ny=sin(angle1)*cos(angle2+pi/2.)
|
||||
nz=sin(angle2+pi/2.)
|
||||
# Rotate about random angle
|
||||
a3=random.random()*2.*pi
|
||||
xx=nx*(cos(a3)+cx*cx*(1.-cos(a3)))+ny*(cx*cy*(1.-cos(a3))-cz*sin(a3))+nz*(cx*cz*(1.-cos(a3))+cy*sin(a3))
|
||||
xy=nx*(cx*cy*(1.-cos(a3))+cz*sin(a3))+ny*(cos(a3)+cy*cy*(1.-cos(a3)))+nz*(cy*cz*(1.-cos(a3))-cx*sin(a3))
|
||||
xz=nx*(cz*cx*(1.-cos(a3))-cy*sin(a3))+ny*(cz*cy*(1.-cos(a3))+cx*sin(a3))+nz*(cos(a3)+cz*cz*(1.-cos(a3)))
|
||||
# Y-Axis is normal to C and X
|
||||
yx=xy*cz-xz*cy
|
||||
yy=xz*cx-xx*cz
|
||||
yz=xx*cy-xy*cx
|
||||
#Tests
|
||||
outFile.close()
|
|
@ -0,0 +1,3 @@
|
|||
Journal Article: https://zenodo.org/records/11184080
|
||||
|
||||
Supporting Data - including original software versions: https://doi.org/10.1016/j.jmbbm.2014.01.007
|
1026
JMBBM13b/UCrys_HCP_Only.for
Normal file
1026
JMBBM13b/UCrys_HCP_Only.for
Normal file
File diff suppressed because it is too large
Load diff
757
JMBBM13b/VCrys_HCP_Only.for
Normal file
757
JMBBM13b/VCrys_HCP_Only.for
Normal file
|
@ -0,0 +1,757 @@
|
|||
subroutine vumat(nblock, ndir, nshr, nstatev, nfieldv, nprops,
|
||||
* lanneal, steptime, totaltime, dt, cmname, coordmp, charlength,
|
||||
* props, density, straininc, relspininc, tempold, stretchold,
|
||||
* defgradold, fieldold, stressold, stateold, enerinternold,
|
||||
* enerinelasold, tempnew, stretchnew, defgradnew, fieldnew,
|
||||
* stressnew, statenew, enerinternnew, enerinelasnew)
|
||||
c
|
||||
include 'vaba_param.inc'
|
||||
c modified from harewood vumat- jg:20/07/12
|
||||
dimension stressold(nblock,ndir+nshr),
|
||||
1 stressnew(nblock,ndir+nshr),
|
||||
1 stateold(nblock,nstatev),statenew(nblock,nstatev),
|
||||
1 straininc(nblock, ndir+nshr)
|
||||
dimension slpdir(3,18),slpnor(3,18),slpdef(6,18),slpspn(3,18),
|
||||
1 dspdir(3,18),dspnor(3,18),d(6,6),fslip(18),dfdxsp(18),
|
||||
1 ddemsd(6,18),h(18,18),dgamma(18),dtausp(18),dgslip(18),
|
||||
1 dstres(6),delats(6),dvgrad(3,3),dspin(3),workst(18,18),
|
||||
1 indx(18),term(3,3),trm0(3,3),props(nprops),itrm(3),
|
||||
1 rotate(3,3),rwkdir(3,24),rwknor(3,24),indxL(3),termd(3),
|
||||
1 termn(3),tauslpA(18)
|
||||
c
|
||||
do km=1,nblock
|
||||
C----- As the VUMAT passes in tensor shear strain and this subroutine
|
||||
C----- uses engineering strain --> STRAININC(shr) x 2
|
||||
do i=1,nshr
|
||||
straininc(km,i+3)=straininc(km,i+3)*2.d0
|
||||
end do
|
||||
if (nshr.gt.1) then
|
||||
save=straininc(km,5)
|
||||
straininc(km,5)=straininc(km,6)
|
||||
straininc(km,6)=save
|
||||
save=stressold(km,5)
|
||||
stressold(km,5)=stressold(km,6)
|
||||
stressold(km,6)=save
|
||||
end if
|
||||
C Elastic Matrix {D}
|
||||
gshear = props(1)/(2.d0*(1.d0+props(2)))
|
||||
e11 = 2.d0*gshear*(1.d0-props(2))/(1.d0-2.d0*props(2))
|
||||
e12 = 2.d0*gshear*props(2)/(1.d0-2.d0*props(2))
|
||||
d = 0.d0
|
||||
do j = 1,3
|
||||
d(j,j) = e11
|
||||
do i = 1,3
|
||||
if(i.ne.j) d(i,j) = e12
|
||||
end do
|
||||
d(j+3,j+3) = gshear
|
||||
end do
|
||||
c Lin Elastic Response for Exp/Packager
|
||||
if(totaltime==0.)then
|
||||
C Calculation of Stress Inc
|
||||
dstres=0.d0
|
||||
do i=1,ndir+nshr
|
||||
do j=1,ndir+nshr
|
||||
dstres(i)=dstres(i)+d(i,j)*straininc(km,j)
|
||||
end do
|
||||
end do
|
||||
C Calculation of Stress New
|
||||
do i=1,ndir+nshr
|
||||
stressnew(km,i)=stressold(km,i)+dstres(i)
|
||||
end do
|
||||
cycle
|
||||
endif
|
||||
c------ Crystal Type:
|
||||
ictype=nint(props(9))
|
||||
if(ictype == 2)then
|
||||
nslptl = 6
|
||||
elseif(ictype == 3)then
|
||||
nslptl = 12
|
||||
else
|
||||
nslptl = 18
|
||||
endif
|
||||
C----- Integration parameter: THETA
|
||||
theta = 0.5d0
|
||||
term = 0.d0
|
||||
trm0 = 0.d0
|
||||
do i=1,3
|
||||
term(i,i)=2.d0
|
||||
end do
|
||||
call ludcmp (term, 3, 3, itrm, ddcmp)
|
||||
do j=1,3
|
||||
call lubksb (term, 3, 3, itrm, trm0(1,j))
|
||||
end do
|
||||
dspin(1)=trm0(2,1)-trm0(1,2)
|
||||
dspin(2)=trm0(1,3)-trm0(3,1)
|
||||
dspin(3)=trm0(3,2)-trm0(2,3)
|
||||
C----- Increment of dilatational strain: DEV
|
||||
dev=0.d0
|
||||
do i=1,ndir
|
||||
dev=dev+straininc(km,i)
|
||||
end do
|
||||
C----- Check whether the current stress state is the initial state
|
||||
if (stateold(km,1).eq.0.) then
|
||||
c ##### basal and prismatic#####
|
||||
c----- generating slip directions and normals for hcp-basal
|
||||
rwkdir = 0.
|
||||
rwknor = 0.
|
||||
angle = acos(-1.)/3.
|
||||
cangle = cos(angle)
|
||||
sangle = sin(angle)
|
||||
rwkdir(1,1) = 1.
|
||||
rwkdir(2,1) = 0.
|
||||
rwkdir(1,2) = cangle
|
||||
rwkdir(2,2) = sangle
|
||||
rwkdir(1,3) = -cangle
|
||||
rwkdir(2,3) = sangle
|
||||
rwknor(3,1) = 1.
|
||||
do i = 1,3
|
||||
do k = 1,3
|
||||
slpdir(k,i) = rwkdir(k,i)
|
||||
slpnor(k,i) = rwknor(k,1)
|
||||
enddo
|
||||
enddo
|
||||
c----- generating slip directions and normals for hcp-prismatic
|
||||
rwknor = 0.
|
||||
rwknor(1,1) = 0.
|
||||
rwknor(2,1) = -1.
|
||||
rwknor(1,2) = sangle
|
||||
rwknor(2,2) = -cangle
|
||||
rwknor(1,3) = -sangle
|
||||
rwknor(2,3) = -cangle
|
||||
do i = 4,6
|
||||
do k = 1,3
|
||||
slpdir(k,i) = rwkdir(k,i-3)
|
||||
slpnor(k,i) = rwknor(k,i-3)
|
||||
enddo
|
||||
enddo
|
||||
if(ictype >= 3)then
|
||||
c ##### 2nd order pyramidal <a+c> #####
|
||||
aspect = 1.623
|
||||
c slip directions
|
||||
do j = 1,6
|
||||
rwkdir(3,j) = -aspect
|
||||
enddo
|
||||
rwkdir(1,1) = cangle
|
||||
rwkdir(2,1) = sangle
|
||||
rwkdir(1,2) = -cangle
|
||||
rwkdir(2,2) = sangle
|
||||
rwkdir(1,3) = 2.*cangle
|
||||
rwkdir(2,3) = 0.
|
||||
do j = 4,6
|
||||
rwkdir(1,j) = -rwkdir(1,j-3)
|
||||
rwkdir(2,j) = -rwkdir(2,j-3)
|
||||
enddo
|
||||
rlength=sqrt(1.+aspect*aspect)
|
||||
do j = 1,6
|
||||
do i = 1,3
|
||||
rwkdir(i,j) = rwkdir(i,j)/rlength
|
||||
enddo
|
||||
enddo
|
||||
c slip normals
|
||||
rwknor(1,1) = aspect*sangle
|
||||
rwknor(2,1) = 3.*aspect*cangle
|
||||
rwknor(3,1) = 4.*sangle*cangle
|
||||
rwknor(1,2) = aspect*sangle
|
||||
rwknor(2,2) = -3.*aspect*cangle
|
||||
rwknor(3,2) = 4.*sangle*cangle
|
||||
rwknor(1,3) = 2.*aspect*sangle
|
||||
rwknor(2,3) = 0.
|
||||
rwknor(3,3) = 4.*sangle*cangle
|
||||
do j = 4,6
|
||||
rwknor(1,j) = rwknor(1,j-3)
|
||||
rwknor(2,j) = rwknor(2,j-3)
|
||||
rwknor(3,j) = -rwknor(3,j-3)
|
||||
enddo
|
||||
rlength=sqrt(3.*(1.+aspect*aspect))
|
||||
do j = 1,6
|
||||
do i = 1,3
|
||||
rwknor(i,j) = rwknor(i,j)/rlength
|
||||
enddo
|
||||
enddo
|
||||
nslip = 6
|
||||
do j = 1,6
|
||||
nslip = nslip+1
|
||||
do i = 1,3
|
||||
slpdir(i,nslip) = rwkdir(i,j)
|
||||
slpnor(i,nslip) = rwknor(i,j)
|
||||
enddo
|
||||
enddo
|
||||
if(ictype == 4)then
|
||||
c ###### twinning planes #####
|
||||
c slip directions
|
||||
do j = 1,6
|
||||
rwkdir(3,j) = -aspect
|
||||
enddo
|
||||
rwkdir(1,1) = 0.
|
||||
rwkdir(2,1) = 2.*sangle
|
||||
rwkdir(1,2) = 3.*cangle
|
||||
rwkdir(2,2) = 1.*sangle
|
||||
rwkdir(1,3) = 3.*cangle
|
||||
rwkdir(2,3) = -1.*sangle
|
||||
do j = 4,6
|
||||
rwkdir(1,j) = -rwkdir(1,j-3)
|
||||
rwkdir(2,j) = -rwkdir(2,j-3)
|
||||
enddo
|
||||
rlength=sqrt(3.+aspect*aspect)
|
||||
do j = 1,6
|
||||
do i = 1,3
|
||||
rwkdir(i,j) = rwkdir(i,j)/rlength
|
||||
enddo
|
||||
enddo
|
||||
c slip normals
|
||||
rwknor(1,1) = 0.
|
||||
rwknor(2,1) = -2.*aspect*cangle
|
||||
rwknor(3,1) = -4.*sangle*cangle
|
||||
rwknor(1,2) = -aspect*sangle
|
||||
rwknor(2,2) = -aspect*cangle
|
||||
rwknor(3,2) = -4.*sangle*cangle
|
||||
rwknor(1,3) = -aspect*sangle
|
||||
rwknor(2,3) = aspect*cangle
|
||||
rwknor(3,3) = -4.*sangle*cangle
|
||||
do j = 4,6
|
||||
rwknor(1,j) = -rwknor(1,j-3)
|
||||
rwknor(2,j) = -rwknor(2,j-3)
|
||||
rwknor(3,j) = rwknor(3,j-3)
|
||||
enddo
|
||||
do j = 1,6
|
||||
do i = 1,3
|
||||
rwknor(i,j) = rwknor(i,j)/rlength
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,6
|
||||
nslip = nslip+1
|
||||
do i = 1,3
|
||||
slpdir(i,nslip) = rwkdir(i,j)
|
||||
slpnor(i,nslip) = rwknor(i,j)
|
||||
enddo
|
||||
enddo
|
||||
endif
|
||||
endif
|
||||
C----- Unit vectors in slip dirs and unit norms-Global system
|
||||
c----- Generate rotation matrix
|
||||
do i = 1,3
|
||||
term(i,1) = props(i+2)
|
||||
term(i,2) = props(i+5)
|
||||
enddo
|
||||
term(1,3) = term(2,1)*term(3,2)-term(3,1)*term(2,2)
|
||||
term(2,3) = term(3,1)*term(1,2)-term(1,1)*term(3,2)
|
||||
term(3,3) = term(1,1)*term(2,2)-term(2,1)*term(1,2)
|
||||
call ludcmp (term, 3, 3, indxL, dcmp)
|
||||
rotate = 0.
|
||||
do j = 1,3
|
||||
rotate(j,j) = 1.
|
||||
end do
|
||||
do j = 1,3
|
||||
call lubksb (term, 3, 3, indxL, rotate(1,j))
|
||||
end do
|
||||
c--- Rotate slip normals and directions to global system
|
||||
do j = 1,nslptl
|
||||
do i = 1,3
|
||||
termd(i) = 0.
|
||||
termn(i) = 0.
|
||||
do k = 1,3
|
||||
termd(i) = termd(i)+rotate(i,k)*slpdir(k,j)
|
||||
termn(i) = termn(i)+rotate(i,k)*slpnor(k,j)
|
||||
end do
|
||||
end do
|
||||
do i = 1,3
|
||||
slpdir(i,j) = termd(i)
|
||||
slpnor(i,j) = termn(i)
|
||||
end do
|
||||
end do
|
||||
C----- Slip deformation tensor: SLPDEF (Schmid factors)
|
||||
do j=1,nslptl
|
||||
slpdef(1,j)=slpdir(1,j)*slpnor(1,j)
|
||||
slpdef(2,j)=slpdir(2,j)*slpnor(2,j)
|
||||
slpdef(3,j)=slpdir(3,j)*slpnor(3,j)
|
||||
slpdef(4,j)=slpdir(1,j)*slpnor(2,j)
|
||||
1 +slpdir(2,j)*slpnor(1,j)
|
||||
slpdef(5,j)=slpdir(1,j)*slpnor(3,j)
|
||||
1 +slpdir(3,j)*slpnor(1,j)
|
||||
slpdef(6,j)=slpdir(2,j)*slpnor(3,j)
|
||||
1 +slpdir(3,j)*slpnor(2,j)
|
||||
end do
|
||||
C----- Store normals and directions
|
||||
stateold(km,nstatev) = nslptl
|
||||
idnor=3*nslptl
|
||||
iddir=6*nslptl
|
||||
do j=1,nslptl
|
||||
do i=1,3
|
||||
idnor=idnor+1
|
||||
stateold(km,idnor)=slpnor(i,j)
|
||||
iddir=iddir+1
|
||||
stateold(km,iddir)=slpdir(i,j)
|
||||
end do
|
||||
end do
|
||||
C----- Initial value of the current strength for all slip systems
|
||||
do j=1,nslptl
|
||||
if(j<=3)then
|
||||
stateold(km,j)=props(10)
|
||||
elseif(j<=6)then
|
||||
stateold(km,j)=props(13)
|
||||
elseif(j<=12)then
|
||||
stateold(km,j)=props(16)
|
||||
else
|
||||
stateold(km,j)=props(19)
|
||||
endif
|
||||
enddo
|
||||
C----- Initial value of shear strain in slip systems
|
||||
do i=1,nslptl
|
||||
stateold(km,nslptl+i)=0.d0
|
||||
end do
|
||||
stateold(km,9*nslptl+1)=0.d0
|
||||
C----- Initial value of the resolved shear stress in slip systems
|
||||
do i=1,nslptl
|
||||
term1=0.
|
||||
do j=1,ndir+nshr
|
||||
if (j.le.ndir) then
|
||||
term1=term1+slpdef(j,i)*stressold(km,j)
|
||||
else
|
||||
term1=term1+slpdef(j-ndir+3,i)*stressold(km,j)
|
||||
end if
|
||||
end do
|
||||
stateold(km,2*nslptl+i)=term1
|
||||
end do
|
||||
else
|
||||
C----- Current stress state
|
||||
idnor=3*nslptl
|
||||
iddir=6*nslptl
|
||||
do j=1,nslptl
|
||||
do i=1,3
|
||||
idnor=idnor+1
|
||||
slpnor(i,j)=stateold(km,idnor)
|
||||
iddir=iddir+1
|
||||
slpdir(i,j)=stateold(km,iddir)
|
||||
end do
|
||||
end do
|
||||
C----- Slip deformation tensor: SLPDEF (Schmid factors)
|
||||
do j=1,nslptl
|
||||
slpdef(1,j)=slpdir(1,j)*slpnor(1,j)
|
||||
slpdef(2,j)=slpdir(2,j)*slpnor(2,j)
|
||||
slpdef(3,j)=slpdir(3,j)*slpnor(3,j)
|
||||
slpdef(4,j)=slpdir(1,j)*slpnor(2,j)
|
||||
1 +slpdir(2,j)*slpnor(1,j)
|
||||
slpdef(5,j)=slpdir(1,j)*slpnor(3,j)
|
||||
1 +slpdir(3,j)*slpnor(1,j)
|
||||
slpdef(6,j)=slpdir(2,j)*slpnor(3,j)
|
||||
1 +slpdir(3,j)*slpnor(2,j)
|
||||
end do
|
||||
end if
|
||||
C----- Slip spin tensor: SLPSPN
|
||||
do j=1,nslptl
|
||||
slpspn(1,j)=0.5d0*(slpdir(1,j)*slpnor(2,j)-
|
||||
2 slpdir(2,j)*slpnor(1,j))
|
||||
slpspn(2,j)=0.5d0*(slpdir(3,j)*slpnor(1,j)-
|
||||
2 slpdir(1,j)*slpnor(3,j))
|
||||
slpspn(3,j)=0.5d0*(slpdir(2,j)*slpnor(3,j)-
|
||||
2 slpdir(3,j)*slpnor(2,j))
|
||||
end do
|
||||
C----- Double dot product of elastic moduli tensor with the slip
|
||||
C deformation tensor
|
||||
do j=1,nslptl
|
||||
do i=1,6
|
||||
ddemsd(i,j)=0.d0
|
||||
do k=1,6
|
||||
ddemsd(i,j)=ddemsd(i,j)+d(k,i)*slpdef(k,j)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
do j=1,nslptl
|
||||
ddemsd(4,j)=ddemsd(4,j)-slpspn(1,j)*stressold(km,1)
|
||||
ddemsd(5,j)=ddemsd(5,j)+slpspn(2,j)*stressold(km,1)
|
||||
if (ndir.gt.1) then
|
||||
ddemsd(4,j)=ddemsd(4,j)+slpspn(1,j)*stressold(km,2)
|
||||
ddemsd(6,j)=ddemsd(6,j)-slpspn(3,j)*stressold(km,2)
|
||||
end if
|
||||
if (ndir.gt.2) then
|
||||
ddemsd(5,j)=ddemsd(5,j)-slpspn(2,j)*stressold(km,3)
|
||||
ddemsd(6,j)=ddemsd(6,j)+slpspn(3,j)*stressold(km,3)
|
||||
end if
|
||||
if (nshr.ge.1) then
|
||||
ddemsd(1,j)=ddemsd(1,j)+slpspn(1,j)
|
||||
2 *stressold(km,ndir+1)
|
||||
ddemsd(2,j)=ddemsd(2,j)-slpspn(1,j)
|
||||
2 *stressold(km,ndir+1)
|
||||
ddemsd(5,j)=ddemsd(5,j)-slpspn(3,j)
|
||||
2 *stressold(km,ndir+1)
|
||||
ddemsd(6,j)=ddemsd(6,j)+slpspn(2,j)
|
||||
2 *stressold(km,ndir+1)
|
||||
end if
|
||||
if (nshr.ge.2) then
|
||||
ddemsd(1,j)=ddemsd(1,j)-slpspn(2,j)
|
||||
2 *stressold(km,ndir+2)
|
||||
ddemsd(3,j)=ddemsd(3,j)+slpspn(2,j)
|
||||
2 *stressold(km,ndir+2)
|
||||
ddemsd(4,j)=ddemsd(4,j)+slpspn(3,j)
|
||||
2 *stressold(km,ndir+2)
|
||||
ddemsd(6,j)=ddemsd(6,j)-slpspn(1,j)
|
||||
2 *stressold(km,ndir+2)
|
||||
end if
|
||||
if (nshr.eq.3) then
|
||||
ddemsd(2,j)=ddemsd(2,j)+slpspn(3,j)
|
||||
2 *stressold(km,ndir+3)
|
||||
ddemsd(3,j)=ddemsd(3,j)-slpspn(3,j)
|
||||
2 *stressold(km,ndir+3)
|
||||
ddemsd(4,j)=ddemsd(4,j)-slpspn(2,j)
|
||||
2 *stressold(km,ndir+3)
|
||||
ddemsd(5,j)=ddemsd(5,j)+slpspn(1,j)
|
||||
2 *stressold(km,ndir+3)
|
||||
end if
|
||||
end do
|
||||
C----- Shear strain-rate in a slip system at the start of increment:
|
||||
do i=1,nslptl
|
||||
tauslp=stateold(km,2*nslptl+i)
|
||||
if(i>=13.and.tauslp<=0)then
|
||||
yield=1.e6
|
||||
else
|
||||
yield=stateold(km,i)
|
||||
endif
|
||||
x=tauslp/yield
|
||||
fslip(i)=0.001d0*((abs(x))**50.)*dsign(1.d0,x)
|
||||
dfdxsp(i)=50.d0*0.001d0*(abs(x))**(50.-1.0)
|
||||
end do
|
||||
C----- Self- and latent-hardening laws
|
||||
gamtol=stateold(km,9*nslptl+1)
|
||||
do iself = 1,nslptl
|
||||
do latent = 1,nslptl
|
||||
C BASAL
|
||||
if(iself <= 3)then
|
||||
if(latent <= 3)then
|
||||
q = 0.2
|
||||
else
|
||||
q = 0.5
|
||||
endif
|
||||
if(iself == latent)q = 1.
|
||||
hlatnt = q*props(12)
|
||||
C PRISM
|
||||
elseif(iself <= 6)then
|
||||
if(latent <= 12)then
|
||||
q = 0.2
|
||||
else
|
||||
q = 0.5
|
||||
endif
|
||||
if(iself == latent)q = 1.
|
||||
hlatnt = q*props(15)*(1.d0-(props(13)/props(14)))
|
||||
* *exp(-props(15)*(gamtol/props(14)))
|
||||
C PYRM
|
||||
elseif(iself <= 12)then
|
||||
if(latent <= 6)then
|
||||
q = 1.
|
||||
elseif(latent <= 12)then
|
||||
q = 0.2
|
||||
else
|
||||
q = 0.25
|
||||
endif
|
||||
if(iself == latent)q = 1.
|
||||
hlatnt = q*props(18)*(1.d0-props(16)/props(17))
|
||||
* *exp(-props(18)*gamtol/props(17))
|
||||
C TWIN
|
||||
else
|
||||
if(latent <= 6)then
|
||||
q = 1.
|
||||
else
|
||||
q = 0.2
|
||||
endif
|
||||
if(iself == latent)q = 1.
|
||||
if(gamtol <= props(21))then
|
||||
hlatnt = q*props(20)
|
||||
else
|
||||
hlatnt = q*props(20)*(gamtol/props(21))
|
||||
* **(props(22)-1.)
|
||||
endif
|
||||
endif
|
||||
h(iself,latent) = hlatnt
|
||||
enddo
|
||||
end do
|
||||
C----- Solve the increment of shear strain in a slip system
|
||||
term1=theta*dt
|
||||
do i=1,nslptl
|
||||
tauslp=stateold(km,2*nslptl+i)
|
||||
if(i>=13.and.tauslp<=0)then
|
||||
yield=1.e6
|
||||
else
|
||||
yield=stateold(km,i)
|
||||
endif
|
||||
x=tauslp/yield
|
||||
term2=term1*dfdxsp(i)/yield
|
||||
term3=term1*x*dfdxsp(i)/yield
|
||||
do j=1,nslptl
|
||||
term4=0.d0
|
||||
do k=1,6
|
||||
term4=term4+ddemsd(k,i)*slpdef(k,j)
|
||||
end do
|
||||
workst(i,j)=term2*term4+h(i,j)*term3
|
||||
2 *dsign(1.d0,fslip(j))
|
||||
end do
|
||||
workst(i,i)=workst(i,i)+1.d0
|
||||
end do
|
||||
call ludcmp (workst, nslptl, 18, indx, ddcmp)
|
||||
C----- Increment of shear strain in a slip system
|
||||
term1=theta*dt
|
||||
do i=1,nslptl
|
||||
tauslp=stateold(km,2*nslptl+i)
|
||||
if(i>=13.and.tauslp<=0)then
|
||||
yield=1.e6
|
||||
else
|
||||
yield=stateold(km,i)
|
||||
endif
|
||||
term2=term1*dfdxsp(i)/yield
|
||||
dgamma(i)=0.
|
||||
do j=1,ndir
|
||||
dgamma(i)=dgamma(i)+ddemsd(j,i)*straininc(km,j)
|
||||
end do
|
||||
if (nshr.gt.0) then
|
||||
do j=1,nshr
|
||||
if (j.eq.1) then
|
||||
dgamma(i)=dgamma(i)+ddemsd(4,i)
|
||||
2 *straininc(km,4)
|
||||
elseif (j.eq.2) then
|
||||
dgamma(i)=dgamma(i)+ddemsd(6,i)
|
||||
2 *straininc(km,5)
|
||||
elseif (j.eq.3) then
|
||||
dgamma(i)=dgamma(i)+ddemsd(5,i)
|
||||
2 *straininc(km,6)
|
||||
end if
|
||||
end do
|
||||
end if
|
||||
dgamma(i)=dgamma(i)*term2+fslip(i)*dt
|
||||
end do
|
||||
call lubksb (workst, nslptl, 18, indx, dgamma)
|
||||
C----- Update the shear strain in a slip system:
|
||||
do i=1,nslptl
|
||||
stateold(km,nslptl+i)=stateold(km,nslptl+i)+dgamma(i)
|
||||
end do
|
||||
C----- Increment of current strength in a slip system: DGSLIP
|
||||
do i=1,nslptl
|
||||
dgslip(i)=0.
|
||||
do j=1,nslptl
|
||||
dgslip(i)=dgslip(i)+h(i,j)*abs(dgamma(j))
|
||||
end do
|
||||
end do
|
||||
C----- Update the current strength in a slip system:
|
||||
do i=1,nslptl
|
||||
stateold(km,i)=stateold(km,i)+dgslip(i)
|
||||
end do
|
||||
C----- Increment of strain associated with lattice stretching:
|
||||
delats=0.
|
||||
do j=1,3
|
||||
if (j.le.ndir) delats(j)=straininc(km,j)
|
||||
do i=1,nslptl
|
||||
delats(j)=delats(j)-slpdef(j,i)*dgamma(i)
|
||||
end do
|
||||
end do
|
||||
do j=1,3
|
||||
if (j.le.nshr) delats(j+3)=straininc(km,j+ndir)
|
||||
do i=1,nslptl
|
||||
delats(j+3)=delats(j+3)-slpdef(j+3,i)*dgamma(i)
|
||||
end do
|
||||
end do
|
||||
C----- Increment of deformation gradient associated with lattice stretching
|
||||
do j=1,3
|
||||
do i=1,3
|
||||
if (i.eq.j) then
|
||||
dvgrad(i,j)=delats(i)
|
||||
else
|
||||
dvgrad(i,j)=delats(i+j+1)
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
do j=1,3
|
||||
do i=1,j
|
||||
if (j.gt.i) then
|
||||
ij2=i+j-2
|
||||
if (mod(ij2,2).eq.1) then
|
||||
term1=1.
|
||||
else
|
||||
term1=-1.
|
||||
end if
|
||||
do k=1,nslptl
|
||||
dvgrad(i,j)=dvgrad(i,j)-term1*dgamma(k)*
|
||||
2 slpspn(ij2,k)
|
||||
dvgrad(j,i)=dvgrad(j,i)+term1*dgamma(k)*
|
||||
2 slpspn(ij2,k)
|
||||
end do
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
C----- Increment of resolved shear stress in a slip system: DTAUSP
|
||||
do i=1,nslptl
|
||||
dtausp(i)=0.
|
||||
do j=1,6
|
||||
dtausp(i)=dtausp(i)+ddemsd(j,i)*delats(j)
|
||||
end do
|
||||
end do
|
||||
C----- Update the resolved shear stress in a slip system:
|
||||
do i=1,nslptl
|
||||
stateold(km,2*nslptl+i)=stateold(km,2*nslptl+i)
|
||||
2 +dtausp(i)
|
||||
end do
|
||||
C----- Increment of stress: DSTRES
|
||||
do i=1,ndir+nshr
|
||||
dstres(i)=-stressold(km,i)*dev
|
||||
end do
|
||||
do i=1,ndir
|
||||
do j=1,ndir
|
||||
dstres(i)=dstres(i)+d(i,j)*straininc(km,j)
|
||||
end do
|
||||
if (nshr.gt.0)then
|
||||
do j=1,nshr
|
||||
dstres(i)=dstres(i)+d(i,j+3)*
|
||||
2 straininc(km,j+ndir)
|
||||
end do
|
||||
end if
|
||||
do j=1,nslptl
|
||||
dstres(i)=dstres(i)-ddemsd(i,j)*dgamma(j)
|
||||
end do
|
||||
end do
|
||||
if (nshr.gt.0) then
|
||||
do i=1,nshr
|
||||
do j=1,ndir
|
||||
dstres(i+ndir)=dstres(i+ndir)+d(i+3,j)
|
||||
2 *straininc(km,j)
|
||||
end do
|
||||
do j=1,nshr
|
||||
dstres(i+ndir)=dstres(i+ndir)+d(i+3,j+3)*
|
||||
2 straininc(km,j+ndir)
|
||||
end do
|
||||
do j=1,nslptl
|
||||
dstres(i+ndir)=dstres(i+ndir)-ddemsd(i+3,j)
|
||||
2 *dgamma(j)
|
||||
end do
|
||||
end do
|
||||
end if
|
||||
C----- Update the stress: STRESSOLD
|
||||
do i=1,ndir+nshr
|
||||
stressold(km,i)=stressold(km,i)+dstres(i)
|
||||
end do
|
||||
C----- Increment of normal to a slip plane and a slip direction
|
||||
do j=1,nslptl
|
||||
do i=1,3
|
||||
dspnor(i,j)=0.
|
||||
dspdir(i,j)=0.
|
||||
do k=1,3
|
||||
dspnor(i,j)=dspnor(i,j)-slpnor(k,j)*dvgrad(k,i)
|
||||
dspdir(i,j)=dspdir(i,j)+slpdir(k,j)*dvgrad(i,k)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
C----- Update the normal to a slip plane and a slip direction
|
||||
idnor=3*nslptl
|
||||
iddir=6*nslptl
|
||||
do j=1,nslptl
|
||||
do i=1,3
|
||||
idnor=idnor+1
|
||||
stateold(km,idnor)=stateold(km,idnor)+dspnor(i,j)
|
||||
iddir=iddir+1
|
||||
stateold(km,iddir)=stateold(km,iddir)+dspdir(i,j)
|
||||
end do
|
||||
end do
|
||||
C----- Total cumulative shear strains on all slip systems
|
||||
do i=1,nslptl
|
||||
stateold(km,9*nslptl+1)=stateold(km,9*nslptl+1)
|
||||
2 +abs(dgamma(i))
|
||||
end do
|
||||
c----- update stressold to stressnew
|
||||
do i=1,ndir+nshr
|
||||
stressnew(km,i)=stressold(km,i)
|
||||
end do
|
||||
c----- update stateold to statenew for 1 - nstatev
|
||||
do i=1,nstatev
|
||||
statenew(km,i)=stateold(km,i)
|
||||
end do
|
||||
if (nshr.gt.1) then
|
||||
save=straininc(km,5)
|
||||
straininc(km,5)=straininc(km,6)
|
||||
straininc(km,6)=save
|
||||
save=stressnew(km,5)
|
||||
stressnew(km,5)=stressnew(km,6)
|
||||
stressnew(km,6)=save
|
||||
end if
|
||||
enddo
|
||||
return
|
||||
end
|
||||
c----------------------------------------------------------------------
|
||||
subroutine ludcmp (a, n, np, indx, d)
|
||||
include 'vaba_param.inc'
|
||||
parameter (nmax=200, tiny=1.0e-20)
|
||||
dimension a(np,np), indx(n), vv(nmax)
|
||||
d = 1.d0
|
||||
do i = 1,n
|
||||
aamax = 0.
|
||||
do j = 1,n
|
||||
if (abs(a(i,j)).gt.aamax) aamax = abs(a(i,j))
|
||||
end do
|
||||
if (aamax.eq.0.) pause 'singular matrix.'
|
||||
vv(i) = 1./aamax
|
||||
end do
|
||||
do j = 1,n
|
||||
do i = 1,j-1
|
||||
sum = a(i,j)
|
||||
do k = 1,i-1
|
||||
sum = sum-a(i,k)*a(k,j)
|
||||
end do
|
||||
a(i,j) = sum
|
||||
end do
|
||||
aamax = 0.
|
||||
do i = j,n
|
||||
sum = a(i,j)
|
||||
do k = 1,j-1
|
||||
sum = sum-a(i,k)*a(k,j)
|
||||
end do
|
||||
a(i,j) = sum
|
||||
dum = vv(i)*abs(sum)
|
||||
if (dum.ge.aamax) then
|
||||
imax = i
|
||||
aamax = dum
|
||||
end if
|
||||
end do
|
||||
if (j.ne.imax) then
|
||||
do k = 1,n
|
||||
dum = a(imax,k)
|
||||
a(imax,k) = a(j,k)
|
||||
a(j,k) = dum
|
||||
end do
|
||||
d = -d
|
||||
vv(imax) = vv(j)
|
||||
end if
|
||||
indx(j) = imax
|
||||
if (a(j,j).eq.0.) a(j,j) = tiny
|
||||
if (j.ne.n) then
|
||||
dum = 1./a(j,j)
|
||||
do i = j+1,n
|
||||
a(i,j) = a(i,j)*dum
|
||||
end do
|
||||
end if
|
||||
end do
|
||||
return
|
||||
end
|
||||
C----------------------------------------------------------------------
|
||||
subroutine lubksb (a, n, np, indx, b)
|
||||
include 'vaba_param.inc'
|
||||
dimension a(np,np), indx(n), b(n)
|
||||
ii = 0
|
||||
do i = 1,n
|
||||
ll = indx(i)
|
||||
sum = b(ll)
|
||||
b(ll) = b(i)
|
||||
if (ii.ne.0) then
|
||||
do j = ii,i-1
|
||||
sum = sum-a(i,j)*b(j)
|
||||
end do
|
||||
else if (sum.ne.0.) then
|
||||
ii = i
|
||||
end if
|
||||
b(i) = sum
|
||||
end do
|
||||
do i = n,1,-1
|
||||
sum = b(i)
|
||||
if (i.lt.n) then
|
||||
do j = i+1,n
|
||||
sum = sum-a(i,j)*b(j)
|
||||
end do
|
||||
end if
|
||||
b(i) = sum/a(i,i)
|
||||
end do
|
||||
return
|
||||
end
|
||||
C----------------------------------------------------------------------
|
6684
JMBBM13b/mag1.inp
Normal file
6684
JMBBM13b/mag1.inp
Normal file
File diff suppressed because it is too large
Load diff
6684
JMBBM13b/steel1.inp
Normal file
6684
JMBBM13b/steel1.inp
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue