36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "mvsiz_p.inc"
44
45
46
47#include "param_c.inc"
48
49
50
51 INTEGER, INTENT(IN) :: NEL
53 . pm(npropm,*), eint(*), rho(*), temp(*), xist(*), qold(*), voln(*),
54 . dvol(*), pold(*), df(*),
55 . rho0(*), p1(*), p01(*), p02(*), e01(*), e02(*), ssp(*), dpdm(*)
56 INTEGER MAT(*)
57
58
59
60 INTEGER I, MX
62 . em0(mvsiz), em1(mvsiz), em2(mvsiz),
63 . espe(mvsiz), alp(mvsiz), pcr(mvsiz), c(mvsiz),
64 . geax(mvsiz), g0ax(mvsiz), tm(mvsiz), delt(mvsiz), rp3(mvsiz), x(mvsiz), gp(mvsiz),
65 . dsp(mvsiz), xlam(mvsiz), s(mvsiz), pcc(mvsiz),
66 . e0h(mvsiz), tm0(mvsiz), egg(mvsiz), xp(mvsiz), a(mvsiz), am(mvsiz), gam0(mvsiz),
67 . game(mvsiz), gam0m(mvsiz),e0(mvsiz), e00(mvsiz), tg(mvsiz), pmin(mvsiz),xist0(mvsiz),
68 . p1a(mvsiz), dmu(mvsiz), xm, unpm2
69
70
71
72
73
74
75
76
77
78
79 unpm2 = o88p9844
80 xm = ninep38
81
82 mx = mat(1)
83 DO i=1,nel
84 dpdm(i) = onep333*pm(22,mx)
85 tm0(i) = pm(29,mx)
86 e00(i) = pm(30,mx)
87 c(i) = pm(33,mx)
88 s(i) = pm(34,mx)
89 pcc(i) = pm(35,mx)
90 gam0(i) = pm(36,mx)
91 pmin(i) = pm(37,mx)
92 a(i) = pm(48,mx)
93 gam0m(i) = pm(49,mx)
94 am(i) = pm(50,mx)
95 game(i) = pm(51,mx)
96 gp(i) = pm(52,mx)
97 dsp(i) = pm(53,mx)
98 e0h(i) = pm(54,mx)
99 rp3(i) = pm(55,mx)
100 alp(i) = pm(61,mx)
101 ENDDO
102
103 DO i=1,nel
104 dmu(i) = -dvol(i)/(voln(i)-dvol(i))/df(i)
105 x(i) = one-df(i)
106 ENDDO
107
108 DO i=1,nel
109 e0(i) = c(i)**2*x(i)**2*half/(one-s(i)*x(i))*(one+s(i)*x(i)/three+(s(i)-gam0(i))*s(i)*x(i)**2*one_over_6)
110 . + e00(i)*(one+gam0(i)*x(i)) + e0h(i)
111 ENDDO
112
113 DO i=1,nel
114 xp(i) = zero
115 IF(x(i)>=zero) xp(i)=one
116 ENDDO
117
118 DO i=1,nel
119 tm(i) = tm0(i)*((one-xp(i))*(one+two*(gam0m(i)-four_over_3)*x(i)+
120 . ((two*gam0m(i)-five_over_3)*(gam0m(i)-four_over_3)-am(i))*x(i)**2)
121 . / (one-x(i))**2 + xp(i)*( one+(two*gam0m(i)-two_third)*x(i)+((gam0m(i)-third)*(two*gam0m(i
122 tg(i) = tm(i)*xm
123 ENDDO
124
125 DO i=1,nel
126 xlam(i) = two_third - two*gam0m(i)+two*am(i)*x(i)
127 ENDDO
128
129 DO i=1,nel
130 delt(i) = dsp(i)*xlam(i)**2*tm(i)**2
131 ENDDO
132
133 DO i=1,nel
134 em1(i) = e0(i)+rp3(i)*(tm(i)+delt(i))+half*gp(i)*(tm(i)+delt(i))**2
135 em2(i) = em1(i)+tm(i)*(dsp(i)-half*alp(i)*(1.+(tm(i)+delt(i))**2/tm(i)**2))
136 egg(i) = e0(i)+rp3(i)*tg(i)+half*gp(i)*tg(i)**2+tm(i)*(dsp(i)-half*alp(i)*unpm2)
137 g0ax(i) = gam0(i)-a(i)*x(i)
138 geax(i) =(game(i)-g0ax(i))*gp(i)
139 ENDDO
140
141 DO i=1,nel
142 xist0(i) = xist(i)
143 e01(i) = eint(i)-(pold(i)+qold(i))*dvol(i)*half
144 e01(i) =
max(zero,e01(i))
145 espe(i) = e01(i)/(voln(i)*rho(i))
146 em0(i) = espe(i)-e0(i)
147 p1a(i) = c(i)**2*x(i)
148 . *(one-(one+half*gam0(i))*x(i)+half*a(i)*x(i)**2)*rho0(i)
149 . /((one-x(i))*(one-s(i)*x(i))**2)
150 p1(i) = pcc(i)+p1a(i)+g0ax(i)*(espe(i)-e0h(i))*rho0(i)/(one-x(i))
151 ENDDO
152
153
154
156 1 pm, rho, temp, xist,
157 2 mat, rho0, dsp, alp,
158 3 pcr, p1, egg, xist0,
159 4 xlam, em0, em1, em2,
160 5 espe, geax, g0ax, tm,
161 6 delt, rp3, x, gp,
162 7 nel)
163
164
165
166 DO i=1,nel
167 p01(i) = p1(i)+half*pcr(i)*rho(i)
168 ENDDO
169
170 DO i=1,nel
171 IF(p01(i)<=pmin(i))THEN
172 p01(i) = zero
173 xist(i) = five
174 ENDIF
175 ENDDO
176
177 DO i=1,nel
178 e02(i) = eint(i)-(p01(i)+qold(i))*dvol(i)*half
179 e02(i) =
max(zero,e02(i))
180 espe(i) = e02(i)/(voln(i)*rho(i))
181 em0(i) = espe(i)-e0(i)
182 p1(i) = pcc(i)+p1a(i)+g0ax(i)*(espe(i)-e0h(i))*rho0(i)/(one-x(i))
183 ENDDO
184
185
186
188 1 pm, rho, temp, xist,
189 2 mat, rho0, dsp, alp,
190 3 pcr, p1, egg, xist0,
191 4 xlam, em0, em1, em2,
192 5 espe, geax, g0ax, tm,
193 6 delt, rp3, x, gp,
194 7 nel)
195
196
197
198 DO i=1,nel
199 p02(i) = p1(i)+half*pcr(i)*rho(i)
200 ENDDO
201
202 DO i=1,nel
203 IF(p02(i)<=pmin(i))THEN
204 p02(i) = zero
205 xist(i) = five
206 ENDIF
207 ENDDO
208
209
210
211 DO i=1,nel
212 IF(dmu(i)/=zero)THEN
213 dpdm(i) = dpdm(i)+
max(rho0(i)*c(i)*c(i),abs((p02(i)-pold(i))/dmu(i)))
214 ELSE
215 dpdm(i) = dpdm(i)+rho0(i)*c(i)*c(i)
216 ENDIF
217 ENDDO
218
219 DO i=1,nel
220 ssp(i) = sqrt(abs(dpdm(i))/rho0(i))
221 ENDDO
222
223 RETURN
subroutine gray21(pm, rho, temp, xist, mat, rho0, dsp, alp, pcr, p1, egg, xist0, xlam, em0, em1, em2, espe, geax, g0ax, tm, delt, rp3, x, gp, nel)