64#include "implicit_f.inc"
68 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
69 INTEGER IIN,IOUT,IUNIT
71 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
72 INTEGER,
INTENT(IN) :: IMIDEOS
80 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
81 my_real :: r_gas,r_gas_, m_gas, a0, a1, a2, a3, a4, a5, cp
82 INTEGER :: , CURVEID, JJ
83 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
87 is_encrypted = .false.
88 is_available = .false.
89 is_available_rho0 = .false.
96 CALL hm_get_floatv(
'MAT_R', r_gas_, is_available,lsubmodel,unitab)
97 CALL hm_get_floatv(
'LAW5_P0', p0, is_available,lsubmodel,unitab)
98 CALL hm_get_floatv(
'LAW5_PSH', psh, is_available,lsubmodel,unitab)
99 CALL hm_get_floatv(
'T_Initial', t0, is_available,lsubmodel,unitab)
101 CALL hm_get_floatv(
'MAT_C0', a0, is_available,lsubmodel,unitab)
102 CALL hm_get_floatv(
'MAT_C1', a1, is_available,lsubmodel,unitab)
103 CALL hm_get_floatv(
'MAT_C2', a2, is_available,lsubmodel,unitab)
104 CALL hm_get_floatv(
'MAT_C3', a3, is_available,lsubmodel,unitab)
105 CALL hm_get_floatv(
'MAT_C4', a4, is_available,lsubmodel,unitab)
117 IF(p0*t0 /= zero)
THEN
118 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
120 . c1=
'/EOS/IDEAL-GAS-VT',
121 . c2=
'P0 AND T0 CANNOT BE BOTH DEFINED')
124 IF(r_gas_ <= zero)
THEN
125 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,i1=imideos,
126 . c1=
'/EOS/IDEAL-GAS-VT',
127 . c2=
'GAS CONSTANT r MUST BE STRICTLY POSITIVE')
133 p0 = r_gas_ * rho0 * t0
134 ELSEIF(p0 /= zero .AND. rho0 /= zero)
THEN
144 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
146 . c1=
'/EOS/IDEAL-GAS-VT',
147 . c2=
'INITIAL PRESSURE MUST BE POSITIVE')
151 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
153 . c1=
'/EOS/IDEAL-GAS-VT',
154 . c2=
'TEMPERATURE MUST BE POSITIVE (UNIT:KELVIN)')
174 cp = a0 + a1*t0 + a2*t0*t0 + a3*t0**3 + a4*t0**4
177 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
179 . c1='/eos/ideal-gas-vt
',
180 . C2='cp(0) < r is not expected. check input function
')
183 E0 = RHO0 * (A0 * T0 + HALF * A1 * T0**2 + THIRD * A2 * T0**3 + FOURTH * A3 * T0**4 +
184 . ONE_FIFTH * A4 * T0**5 - r_GAS_ * T0)
186 IF(T0 == ZERO)T0=THREE100
188 PM(106) = r_gas_ ! r=R_GAS/M
191 PM(31) = P0-PSH !used to init stress tensor
198 IF(PM(79)==ZERO)PM(79)=THREE100
207 GAMMA = ZERO ! this error is managed above (CP < r_GAS_)
209 SSP0 = SQRT(GAMMA*r_gas_*T0)
210 G0 = PM(22) ! 0.0 with physical input.However mathematical model allows any positive value.
212 DPDMU = RHO0*GAMMA*r_gas_*T0
214 DPDMU=MAX(ZERO,DPDMU)
215 IF(RHOR > ZERO) SSP0 = SQRT((DPDMU + TWO_THIRD*G0)/RHOR)
221 WRITE(IOUT,'(5x,a,//)
')'confidential data
'
223 WRITE(IOUT,1500)r_GAS_,T0,P0,PSH,Cp,A0,A1,A2,A3,A4
224 IF(IS_AVAILABLE_RHO0)WRITE(IOUT,1501)PM(1)
229 & 5X,' ideal gas eos(volume-temperature) : p=rho.r.t
',/,
230 & 5X,' ----------------------------------------------
',/)
232 & 5X,'gas constant(r). . . . . . . . . . . . .=
',1PG20.13/,
233 & 5X,'initial temperature . . . . . . . . . . .=
',1PG20.13/,
234 & 5X,'initial pressure. . . . . . . . . . . . .=
',1PG20.13/,
235 & 5X,'pressure shift. . . . . . . . . . . . . .=
',1PG20.13/,
236 & 5X,'initial massic heat capactity . . . . . .=
',1PG20.13/,
237 & 5X,'a0. . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
238 & 5X,'a1. . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
239 & 5X,'a2. . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
240 & 5X,'a3. . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
241 & 5X,'a4. . . . . . . . . . . . . . . . . . . .=
',1PG20.13)
243 & 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)