42 USE matparam_def_mod,
ONLY : matparam_struct_
65#include "implicit_f.inc"
69 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
70 INTEGER IIN,IOUT,IUNIT
72 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
73 TYPE(matparam_struct_),
INTENT(INOUT) :: MAT_PARAM
74 INTEGER,
INTENT(IN) :: IMIDEOS
82 my_real :: gamma, p0,t0, e0, psh, rho0,fac_l,fac_t,fac_m,fac_c,cv,mu0,pp,rhoi,rhor,g0,ssp0,dpdmu,df
83 my_real :: r_gas,r_gas_, m_gas, a0, a1, a2, a3, a4, a5, cp
84 INTEGER :: USER_CURVEID, CURVEID, JJ
85 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
89 is_encrypted = .false.
90 is_available = .false.
91 is_available_rho0 = .false.
97 CALL hm_get_floatv(
'MAT_R', r_gas_, is_available,lsubmodel,unitab)
98 CALL hm_get_floatv(
'LAW5_P0', p0, is_available,lsubmodel,unitab)
99 CALL hm_get_floatv(
'LAW5_PSH', psh, is_available,lsubmodel,unitab)
100 CALL hm_get_floatv(
'T_Initial', t0, is_available,lsubmodel,unitab)
101 CALL hm_get_floatv(
'Refer_Rho', rho0, is_available_rho0,lsubmodel,unitab)
102 CALL hm_get_floatv(
'MAT_C0', a0, is_available,lsubmodel,unitab)
103 CALL hm_get_floatv(
'MAT_C1', a1, is_available,lsubmodel,unitab)
104 CALL hm_get_floatv(
'MAT_C2', a2, is_available,lsubmodel,unitab)
105 CALL hm_get_floatv(
'MAT_C3', a3, is_available,lsubmodel,unitab)
106 CALL hm_get_floatv(
'MAT_C4', a4, is_available,lsubmodel,unitab)
119 IF(p0*t0 /= zero)
THEN
120 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
122 . c1=
'/EOS/IDEAL-GAS-VT',
123 . c2=
'P0 AND T0 CANNOT BE BOTH DEFINED')
126 IF(r_gas_ <= zero)
THEN
127 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,i1=imideos,
128 . c1=
'/EOS/IDEAL-GAS-VT',
129 . c2=
'GAS CONSTANT r MUST BE STRICTLY POSITIVE')
135 p0 = r_gas_ * rho0 * t0
136 ELSEIF(p0 /= zero .AND. rho0 /= zero)
THEN
146 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
148 . c1=
'/EOS/IDEAL-GAS-VT',
149 . c2=
'INITIAL PRESSURE MUST BE POSITIVE')
153 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
155 . c1=
'/EOS/IDEAL-GAS-VT',
156 . c2=
'TEMPERATURE MUST BE POSITIVE (UNIT:KELVIN)')
176 cp = a0 + a1*t0 + a2*t0*t0 + a3*t0**3 + a4*t0**4
179 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
181 . c1=
'/EOS/IDEAL-GAS-VT',
182 . c2=
'Cp(0) < r IS NOT EXPECTED. CHECK INPUT FUNCTION')
185 e0 = rho0 * (a0 * t0 + half * a1 * t0**2 + third * a2 * t0**3 + fourth * a3 * t0**4 +
186 . one_fifth * a4 * t0**5 - r_gas_ * t0)
194 mat_param%EOS%NUPARAM = 7
195 mat_param%EOS%NIPARAM = 0
196 mat_param%EOS%NFUNC = 0
197 mat_param%EOS%NTABLE = 0
198 CALL mat_param%EOS%CONSTRUCT()
200 mat_param%EOS%UPARAM(1) = a0
201 mat_param%EOS%UPARAM(2) = a1
202 mat_param%EOS%UPARAM(3) = a2
203 mat_param%EOS%UPARAM(4) = a3
204 mat_param%EOS%UPARAM(5) = a4
205 mat_param%EOS%UPARAM(6) = r_gas_
206 mat_param%EOS%UPARAM(7) = p0-psh
207 IF (t0 == zero) t0 = three100
208 mat_param%THERM%TINI =three100
219 mat_param%EOS%PSH = psh
220 mat_param%EOS%CV = cv
221 mat_param%EOS%E0 = e0
223 ssp0 = sqrt(gamma*r_gas_*t0)
226 dpdmu = rho0*gamma*r_gas_*t0
228 dpdmu=
max(zero,dpdmu)
229 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
235 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
237 WRITE(iout,1500)r_gas_,t0,p0,psh,cp,a0,a1,a2,a3,a4
238 IF(is_available_rho0)
WRITE(iout,1501)pm(1)
243 & 5x,
' IDEAL GAS EOS (VOLUME-TEMPERATURE) : P=rho.r.T ',/,
244 & 5x,
' ---------------------------------------------- ',/)
246 & 5x,
'GAS CONSTANT (r). . . . . . . . . . . . .=',1pg20.13/,
247 & 5x,
'INITIAL TEMPERATURE . . . . . . . . . . .=',1pg20.13/,
248 & 5x,
'INITIAL PRESSURE. . . . . . . . . . . . .=',1pg20.13/,
249 & 5x,
'PRESSURE SHIFT. . . . . . . . . . . . . .=',1pg20.13/,
250 & 5x,
'INITIAL MASSIC HEAT CAPACTITY . . . . . .=',1pg20.13/,
251 & 5x,
'A0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
252 & 5x,
'A1. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
253 & 5x,
'A2. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
254 & 5x,
'A3. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
255 & 5x,
'A4. . . . . . . . . . . . . . . . . . . .=',1pg20.13)
257 & 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)