42 USE matparam_def_mod,
ONLY : matparam_struct_
58#include "implicit_f.inc"
62 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
65 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
66 TYPE(matparam_struct_),
INTENT(INOUT) :: MAT_PARAM
67 INTEGER,
INTENT(IN) :: IMIDEOS
75 my_real :: c, s1, s2, s3, gama0, a, e0, rho0,rhoi,rhor
76 my_real :: mu2,fac1,dpdmu,pp,bb,aa
77 my_real :: mu0, df, ssp0, g0, fac, ff, fg, xx, dff, dfg
80 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
84 is_encrypted = .false.
85 is_available = .false.
86 is_available_rho0 = .false.
95 CALL hm_get_floatv(
'GAMMA',gama0, is_available,lsubmodel,unitab)
100 CALL hm_get_floatv(
'Refer_Rho', rho0 ,is_available_rho0,lsubmodel,unitab)
102 IF(a == zero) a=gama0
106 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,i1=imideos,
107 . c1=
'/EOS/GRUNEISEN',
108 . c2=
'INITIAL PRESSURE MUST BE STRICTLY POSITIVE (TOTAL PRESSURE). USE PSH PARAMETER TO SHIFT THE PRESSURE')
111 IF(p0 > zero .AND. e0 /= zero)
THEN
112 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,i1=imideos,
113 . c1=
'/EOS/GRUNEISEN',
114 . c2=
'INITIAL PRESSURE PROVIDED. E0 IS CONSEQUENTLY REDEFINED SUCH AS P(RHO0,E0)=P0')
141 if(gama0 /= zero)
then
142 e0 = (p0-rho0*c*c*mu0)/(gama0+a*mu0)
160 ff=one+(one-half*gama0)*mu0-half*a*mu2
161 fg=one-(s1-one+s2*xx+s3*xx*xx)*mu0
163 dff=one-half*gama0-a*mu0
164 dfg=one-s1+xx*(-two*s2+xx*(s2-three*s3)+two*s3*xx*xx)
165 fac1=fac*(one+mu0*(dff/ff-two*dfg/fg))
169 pp=
max(aa+bb*e0,pm(37))
171 dpdmu=fac1*rhoi*c*c+pp*df*df*bb+a*e0
172 dpdmu=
max(zero,dpdmu)
173 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
178 pm(32) = pm(1)*c*c + a*e0
183 mat_param%EOS%NUPARAM = 6
184 mat_param%EOS%NIPARAM = 0
185 mat_param%EOS%NFUNC = 0
186 mat_param%EOS%NTABLE = 0
187 CALL mat_param%EOS%CONSTRUCT()
189 mat_param%EOS%UPARAM(1) = c
190 mat_param%EOS%UPARAM(2) = s1
191 mat_param%EOS%UPARAM(3) = s2
192 mat_param%EOS%UPARAM(4) = s3
193 mat_param%EOS%UPARAM(5) = gama0
194 mat_param%EOS%UPARAM(6) = a
195 mat_param%EOS%PSH = psh
196 mat_param%EOS%E0 = e0
197 IF (mat_param%THERM%TINI == zero)
THEN
198 mat_param%THERM%TINI =three100
204 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
206 WRITE(iout,1500)c,s1,s2,s3,gama0,a,e0,pp,psh,pp-psh
207 IF(is_available_rho0)
WRITE(iout,1501)pm(1)
213 & 5x,
' MIE-GRUNEISEN EOS ',/,
214 & 5x,
' ----------------- ',/)
216 & 5x,
'C . . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
217 & 5x,
'S1. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
218 & 5x,
'S2. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
219 & 5x,
'S3. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
220 & 5x,
'GAMA0 . . . . . . . . . . . . . . . . . .=',1pg20.13/,
221 & 5x,
'A . . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
222 & 5x,
'INITIAL INTERNAL ENERGY PER UNIT VOLUME .=',1pg20.13/,
223 & 5x,
'INITIAL PRESSURE . . . . . . . . . . . .=',1pg20.13/,
224 & 5x,
'PRESSURE SHIFT . . . . . . . . . . . . .=',1pg20.13/,
225 & 5x,
'INITIAL PRESSURE (SHIFTED) . . . . . . .=',1pg20.13)
227 & 5x,
'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)