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#include "implicit_f.inc"
61
62
63
64#include "param_c.inc"
65#include "com08_c.inc"
66
67
68
69 INTEGER,INTENT(IN) :: NEL
70 INTEGER,INTENT(IN) :: MAT(NEL)
71 my_real pm(npropm,*), sig(nel,6), epxe(nel), eint(nel), rho(nel), vol(nel),seq_output(nel)
72 my_real,
INTENT(INOUT) :: pnew(nel)
73 my_real,
INTENT(INOUT) :: psh(nel)
75 my_real,
INTENT(INOUT) :: dpla(nel)
76 my_real,
INTENT(INOUT) :: epsq(nel)
77 my_real,
INTENT(INOUT) :: mu_bak(nel)
78 my_real vnew(nel), ssp(nel), sigy(nel),defp(nel),
79 . d1(nel), d2(nel), d3(nel), d4(nel), d5(nel), d6(nel),
80 . dvol(nel), mu_new(nel),
81 . sold1(nel), sold2(nel), sold3(nel),
82 . sold4(nel), sold5(nel), sold6(nel),
83 . dpdm(nel)
84
85
86
87 INTEGER I, MX
88 my_real t1(nel), t2(nel), t3(nel), t4(nel),
89 . t5(nel), t6(nel), pold(nel),
90 . g(nel), a0(nel), a1(nel),
91 . a2(nel), amx(nel), aj2(nel), g0(nel), gg(nel),
92 . mu2(nel), svrt(nel), ratio(nel),
93 . yield2(nel), g43(nel),
94 . rho0(nel),ptot,pstar(nel),
95 . g43_1,
96 . psh_1,
97 . pstar_1,a0_1,a1_1,a2_1,amx_1,
98 . rho0_1,pfrac
99
100
101
102
103
104
105 mx=mat(1)
106 g43_1 = onep333*pm(22,mx)
107 pstar_1 = pm(44,mx)
108 a0_1 = pm(38,mx)
109 a1_1 = pm(39,mx)
110 a2_1 = pm(40,mx)
111 amx_1 = pm(41,mx)
112 rho0_1 = pm(1,mx)
113 psh_1 = pm(88,mx)
114 pfrac = pm(37,mx)
115 DO i=1,nel
116 g(i) = dt1*pm(22,mx)
117 g43(i) = g43_1
118 gg(i) = two*g(i)
119 psh(i) = psh_1
120 pstar(i) = pstar_1
121 a0(i) = a0_1
122 a1(i) = a1_1
123 a2(i) = a2_1
124 amx(i) = amx_1
125 rho0(i) = rho0_1
126 ENDDO
127
128
129
130
131 DO i=1,nel
132 pold(i)=-third*(sig(i,1)+sig(i,2)+sig(i,3))
133 svrt(i)= third*(d1(i)+d2(i)+d3(i))
134 mu2(i) = mu_new(i) *
max(zero,mu_new(i))
135 ENDDO
136
137
138
139
140 DO i=1,nel
141 t1(i)=sig(i,1)+pold(i)
142 t2(i)=sig(i,2)+pold(i)
143 t3(i)=sig(i,3)+pold(i)
144 t4(i)=sig(i,4)
145 t5(i)=sig(i,5)
146 t6(i)=sig(i,6)
147 ENDDO
148
149
150
151
152 DO i=1,nel
153 dpdm(i) = g43(i) + dpdm(i)
154 ssp(i) = sqrt(abs(dpdm(i))/rho0(i))
155 ENDDO
156
157
158
159
160 DO i=1,nel
161 t1(i)=t1(i)+gg(i)*(d1(i)-svrt(i))
162 t2(i)=t2(i)+gg(i)*(d2(i)-svrt(i))
163 t3(i)=t3(i)+gg(i)*(d3(i)-svrt(i))
164 t4(i)=t4(i)+g(i)*d4(i)
165 t5(i)=t5(i)+g(i)*d5(i)
166 t6(i)=t6(i)+g(i)*d6(i)
167 ENDDO
168
169
170
171
172 DO i=1,nel
173 aj2(i)= half*(t1(i)**2+t2(i)**2+t3(i)**2)+t4(i)**2+t5(i)**2+t6(i)**2
174 ptot = pnew(i)+psh(i)
175 g0(i) = a0(i)+a1(i)*ptot+a2(i)*ptot*ptot
176 g0(i) =
min(amx(i),g0(i))
177 g0(i) =
max(zero,g0(i))
178 IF(pnew(i)<=pfrac)g0(i)=zero
179 IF(ptot <= pstar(i))g0(i)=zero
180 yield2(i)=aj2(i)-g0(i)
181 ENDDO
182
183
184
185
186 DO i=1,nel
187 ratio(i)=zero
188 IF(yield2(i)<=zero .AND. g0(i)>zero)THEN
189 ratio(i)=one
190 ELSE
191 ratio(i)=sqrt(g0(i)/(aj2(i)+ em14))
192 ENDIF
193 ENDDO
194
195
196
197
198 DO i=1,nel
199 sig(i,1)=ratio(i)*t1(i)*off(i)
200 sig(i,2)=ratio(i)*t2(i)*off(i)
201 sig(i,3)=ratio(i)*t3(i)*off(i)
202 sig(i,4)=ratio(i)*t4(i)*off(i)
203 sig(i,5)=ratio(i)*t5(i)*off(i)
204 sig(i,6)=ratio(i)*t6(i)*off(i)
205 dpla(i) = (one -ratio(i))*sqrt(three*abs(aj2(i)))*dt1 /
max(em20,three*g(i))
206 ENDDO
207
208
209
210
211 DO i=1,nel
212 sigy(i) = g0(i)
213 epxe(i) = epxe(i) + dpla(i)
214 defp(i) = epxe(i)
215 epsq(i) = mu_bak(i)
216 ENDDO
217
218 RETURN