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 USE matparam_def_mod, ONLY : matparam_struct_
62 use constant_mod ,
only : zero, one, zep07, three100, em04
63
64
65
66 implicit none
67
68
69
70#include "my_real.inc"
71#include "comlock.inc"
72#include "com06_c.inc"
73
74
75
76 INTEGER,INTENT(IN) :: NVAREOS,NUMMAT,NPROPM
77 INTEGER MAT(NEL), IFLAG, NEL
78 my_real,
INTENT(IN) :: pm(npropm,nummat),off(nel),mu(nel),mu2(nel),dvol(nel),df(nel),vnew(nel)
79 my_real,
INTENT(INOUT) :: pnew(nel),dpdm(nel),dpde(nel),eint(nel),rho0(nel),espe(nel)
80 my_real,
INTENT(INOUT) :: vareos(nel,nvareos),bfrac(nel)
82 TYPE(MATPARAM_STRUCT_), INTENT(IN) :: MAT_PARAM
83
84
85
86 INTEGER I
87 my_real :: bulk,p0,psh,dd,eg,gr,cc,
alpha,fscale_b,fscale_p,fscale_g,fscale_rho, c1,c2
91 my_real :: dpdm_gas, dpdm_powder
92 my_real :: mass,ps,pg,rho_s, rho_g,pold
94 INTEGER :: funcb,funcg
95
96
97
99
100
101
102
103
104
105
106
107
108
109
110
111
112 IF(iflag == 0) THEN
113 bulk = mat_param%EOS%UPARAM(01)
114 p0 = mat_param%EOS%UPARAM(02)
115 psh = mat_param%EOS%UPARAM(03)
116 dd = mat_param%EOS%UPARAM(04)
117 eg = mat_param%EOS%UPARAM(05)
118 gr = mat_param%EOS%UPARAM(06)
119 cc = mat_param%EOS%UPARAM(07)
120 alpha = mat_param%EOS%UPARAM(08)
121 fscale_b = mat_param%EOS%UPARAM(09)
122 fscale_p = mat_param%EOS%UPARAM(10)
123 fscale_g = mat_param%EOS%UPARAM(11)
124 fscale_rho = mat_param%EOS%UPARAM(12)
125 c1 = mat_param%EOS%UPARAM(13)
126 c2 = mat_param%EOS%UPARAM(14)
127 funcb = mat_param%EOS%FUNC(1)
128 funcg = mat_param%EOS%FUNC(2)
129 compac = one - zep07
130 total_bfrac = zero
131 IF(dt1 == zero)THEN
132 DO i=1,nel
133 espe(i) = eg
134 eint(i) = eg*rho0(i)*vnew(i)
135 vareos(i,1) = p0
136 vareos(i,2) = zero
137 vareos(i,3) = rho0(i)/compac
138 vareos(i,4) = zero
139 vareos(i,5) = p0
140 vareos(i,6) = zero
141 vareos(i,7) = rho0(i)*vnew(i)
142 dpdm(i) = bulk
143 dpde(i) = zero
144 ENDDO
145 ENDIF
146 DO i=1,nel
147
148
149
150 rho(i) = rho0(i) * (one + mu(i))
151 mass = rho(i)*vnew(i)
152 espe = eint(i)/mass
153 ps =vareos(i,1)
154 pg =vareos(i,2)
155 rho_s=vareos(i,3)
156 rho_g=vareos(i,4)
157 pold =vareos(i,5)
158
159
160
161
162
163 tmp = (one+mu(i))*rho0(i)/dd
164 tmp2 = (one+mu(i)) ; tmp2=tmp2*tmp2
165 dpdm_gas = eg*exp(tmp)*(one+tmp) + pg/tmp2*(one+mu(i))*exp(tmp)
166 dpdm_powder = bulk
167 dpdm(i) = total_bfrac * dpdm_gas + (one-total_bfrac)*dpdm_powder
168 dpde(i) = total_bfrac * (one+mu(i)*tmp)
169 ENDDO
170
171 ELSEIF(iflag == 1) THEN
172
173 ELSEIF (iflag == 2) THEN
174 DO i=1, nel
175 IF (vnew(i) > zero) THEN
176 pnew(i) = zero
177 dpdm(i) = zero
178 dpde(i) = zero
179 ENDIF
180 ENDDO
181
182 ENDIF
183
184 RETURN