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