36
37
38
42 USE matparam_def_mod, ONLY : matparam_struct_
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58#include "implicit_f.inc"
59
60
61
62 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
63 INTEGER IOUT, IUNIT
65 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
66 INTEGER,INTENT(IN) :: IMIDEOS
67 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MAT_PARAM
68
69
70
71#include "param_c.inc"
72
73
74
75 my_real gamma, p0, t0, e0, psh, rho0, cv, mu0, rhoi, rhor, g0, ssp0, dpdmu, df
76 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
77
78
79
80 is_encrypted = .false.
81 is_available = .false.
82 is_available_rho0 = .false.
83
85
86 CALL hm_get_floatv(
'Gamma', gamma, is_available,lsubmodel,unitab)
87 CALL hm_get_floatv(
'LAW5_P0', p0, is_available,lsubmodel,unitab)
88 CALL hm_get_floatv(
'LAW5_PSH', psh, is_available,lsubmodel,unitab)
89 CALL hm_get_floatv(
'T_Initial', t0, is_available,lsubmodel,unitab)
90 CALL hm_get_floatv(
'Refer_Rho', rho0, is_available_rho0,lsubmodel,unitab)
91
92 rhor = pm(1)
93 rhoi = pm(89)
94
95 IF(rho0 > zero) THEN
96 rhor = rho0
97 pm(1)= rho0
98 mat_param%RHO = rho0
99 ELSE
100 rho0=rhor
101 ENDIF
102
103 IF(rhoi == zero)THEN
104 mu0 = zero
105 ELSE
106 IF(rhor /= zero)THEN
107 mu0 = rhoi/rhor-one
108 ELSE
109 mu0 = zero
110 ENDIF
111 ENDIF
112
113 IF(rhoi /= zero)THEN
114 df = rhor/rhoi
115 ELSE
116 df = zero
117 ENDIF
118
119 IF(gamma > one) THEN
120 e0 = p0/(gamma-one)/(one+mu0)
121 ELSE
122 e0 = zero
123 ENDIF
124
125
126
127
128 IF(p0 <= zero)THEN
129 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,i1=imideos,
130 . c1='/EOS/IDEAL-GAS',
131 . c2='INITIAL PRESSURE MUST BE POSITIVE')
132 ENDIF
133
134 IF(gamma <= one)THEN
135 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,i1=imideos,
136 . c1='/EOS/IDEAL-GAS',
137 . c2='SPECIFIC HEAT RATIO (GAMMA) MUST BE GREATER THAN 1.0')
138 ENDIF
139
140 IF (t0 == zero) t0 = three100
141 mat_param%THERM%TINI =three100
142 pm(79) = three100
143
144 cv = zero
145 IF(rho0*t0 /= zero) THEN
146
147 cv = e0/rho0/t0
148 ENDIF
149
150 pm(23) = e0
151 pm(31) = p0-psh
152 pm(32) = (gamma-one)*e0
153 pm(79) = t0
154 pm(88) = psh
155 pm(104)= p0-psh
156
157 mat_param%EOS%NUPARAM = 3
158 mat_param%EOS%NIPARAM = 0
159 mat_param%EOS%NFUNC = 0
160 mat_param%EOS%NTABLE = 0
161 CALL mat_param%EOS%CONSTRUCT()
162
163 mat_param%EOS%UPARAM(1) = gamma
164 mat_param%EOS%UPARAM(2) = p0
165 mat_param%EOS%UPARAM(3) = t0
166 mat_param%EOS%PSH = psh
167 mat_param%EOS%Cv = cv
168 mat_param%EOS%Cp = gamma * cv
169 mat_param%EOS%E0 = e0
170
171
172 ssp0 = zero
173 g0 = pm(22)
174 rhoi = pm(89)
175 dpdmu = (gamma-one)*e0+(one+mu0)*(gamma-one)*df*df*(pm(31)+psh)
176
177 dpdmu=
max(zero,dpdmu)
178 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
179 pm(27)=ssp0
180
181 WRITE(iout,1000)
182
183 IF(is_encrypted)THEN
184 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
185 ELSE
186 WRITE(iout,1500)gamma,p0,psh,t0,e0,cv
187 ENDIF
188 IF(is_available_rho0)WRITE(iout,1501)pm(1)
189
190 RETURN
191 1000 FORMAT(
192 & 5x,' IDEAL GAS EOS ',/,
193 & 5x,' ------------- ',/)
194 1500 FORMAT(
195 & 5x,'GAMMA . . . . . . . . . . . . . . . . . .=',1pg20.13/,
196 & 5x,'P0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
197 & 5x,'PSH . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
198 & 5x,'T0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
199 & 5x,'E0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
200 & 5x,'COMPUTED HEAT CAPACITY (Cv) . . . . . . .=',1pg20.13)
201 1501 FORMAT(
202 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
203
204 RETURN
205
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
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)