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