42 USE constant_mod,
ONLY : zero, one, two, three100, four, half, four, two_third
43 USE matparam_def_mod,
ONLY : matparam_struct_
64 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
67 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
68 TYPE(matparam_struct_),
INTENT(INOUT) :: MAT_PARAM
69 INTEGER,
INTENT(IN) :: IMIDEOS
78 my_real a1,a2,b0,b1,b2,c0,c1,d0,rhoi,rhor,dpdmu_partial,dpde,df,mu0,dpdmu,a2_,g0,ssp0, denom
79 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
83 is_encrypted = .false.
84 is_available = .false.
85 is_available_rho0 = .false.
89 CALL hm_get_floatv(
'EOS_A1', a1, is_available,lsubmodel,unitab)
90 CALL hm_get_floatv(
'EOS_A2', a2, is_available,lsubmodel,unitab)
91 CALL hm_get_floatv(
'EOS_B0', b0, is_available,lsubmodel,unitab)
92 CALL hm_get_floatv(
'EOS_B1', b1, is_available,lsubmodel,unitab)
93 CALL hm_get_floatv(
'EOS_B2', b2, is_available,lsubmodel,unitab)
95 CALL hm_get_floatv(
'EOS_C0', c0, is_available,lsubmodel,unitab)
96 CALL hm_get_floatv(
'EOS_C_1', c1, is_available,lsubmodel,unitab)
97 CALL hm_get_floatv(
'EOS_D0', d0, is_available,lsubmodel,unitab)
98 CALL hm_get_floatv(
'LAW5_P0', p0, is_available,lsubmodel,unitab)
100 CALL hm_get_floatv(
'Refer_Rho', rho0, is_available_rho0,lsubmodel,unitab)
124 CALL ancmsg(msgid=67, msgtype=msgerror, anmode=aninfo,
127 . c2=
'PARAMETERS MUST BE STRICTLY POSITIVE')
132 e0 =-half*(b0-p0-sqrt(four*c0*d0*p0+b0**two-two*b0*p0+p0**two))/c0
136 pm(32) = (a1+b1+c1*e0*e0) / (e0+d0)
141 mat_param%EOS%NUPARAM = 9
142 mat_param%EOS%NIPARAM = 0
143 mat_param%EOS%NFUNC = 0
144 mat_param%EOS%NTABLE = 0
145 CALL mat_param%EOS%CONSTRUCT()
147 mat_param%EOS%UPARAM(1) = a1
148 mat_param%EOS%UPARAM(2) = a2
149 mat_param%EOS%UPARAM(3) = b0
150 mat_param%EOS%UPARAM(4) = b1
151 mat_param%EOS%UPARAM(5) = b2
152 mat_param%EOS%UPARAM(6) = c0
153 mat_param%EOS%UPARAM(7) = c1
154 mat_param%EOS%UPARAM(8) = d0
155 mat_param%EOS%UPARAM(9) = p0
157 mat_param%EOS%PSH = psh
158 mat_param%EOS%E0 = e0
159 IF (mat_param%THERM%TINI == zero)
THEN
160 mat_param%THERM%TINI =three100
187 IF(mu0 < zero)a2_=-a2
189 dpdmu_partial = (a1+2*a2_*mu0+(two*b2*mu0+b1)*e0+c1*e0*e0)/denom
190 dpde = (((b2*mu0+b1)*mu0+b0)+(two*(c1*mu0+c0))*e0 - p0/denom)/denom
191 dpdmu = dpdmu_partial + dpde*df*df*(p0)
193 dpdmu=
max(zero,dpdmu)
194 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
200 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
202 WRITE(iout,1500)a1,a2,b0,b1,b2,c0,c1,d0,p0
203 IF(is_available_rho0)
WRITE(iout,1501)pm(1)
208 & 5x,
' OSBORNE EOS ',/,
209 & 5x,
' ----------- ',/)
211 & 5x,
'A1. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
212 & 5x,
'A2. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
213 & 5x,
'B0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
214 & 5x,
'B1. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
215 & 5x,
'B2. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
216 & 5x,
'C0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
217 & 5x,
'C1. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
218 & 5x,
'D0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
219 & 5x,
'P0. . . . . . . . . . . . . . . . . . . .=',1pg20.13)
221 & 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)