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 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MAT_PARAM
67 INTEGER,INTENT(IN) :: IMIDEOS
68
69
70
71#include "param_c.inc"
72
73
74
75 my_real gamma, p0, e0, psh, rho0, a, b, rhoi, rhor, mu0, df, ssp0, g0, dpdmu, pp
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)
91
92 CALL hm_get_floatv(
'Refer_Rho', rho0, is_available_rho0,lsubmodel,unitab)
93
94 rhor = pm(1)
95 rhoi = pm(89)
96
97 IF(rho0 > zero) THEN
98 rhor = rho0
99 pm(1)= rho0
100 mat_param%RHO = rho0
101 ELSE
102 rho0=rhor
103 ENDIF
104
105
106
107
108 IF(gamma <= zero)THEN
110 . msgtype=msgerror,
111 . anmode=aninfo,
112 . i1=imideos,
113 . c1='/EOS/LSZK',
114 . c2='GAMMA MUST BE GREATER THAN 1.0')
115 ENDIF
116
117 pm(34) = gamma
118 pm(88) = psh
119
120 mat_param%EOS%NUPARAM = 4
121 mat_param%EOS%NIPARAM = 0
122 mat_param%EOS%NFUNC = 0
123 mat_param%EOS%NTABLE = 0
124 CALL mat_param%EOS%CONSTRUCT()
125
126 IF(rhoi == zero)THEN
127 mu0 = zero
128 ELSE
129 IF(rhor /= zero)THEN
130 mu0 = rhoi/rhor-one
131 ELSE
132 mu0 = zero
133 ENDIF
134 ENDIF
135
136 IF(rhoi /= zero)THEN
137 df = rhor/rhoi
138 ELSE
139 df = zero
140 ENDIF
141
142 IF(mu0 <= -one)mu0=-one+ep12
143
144 IF(gamma > one)THEN
145 e0 = (p0-a*exp(b*log(one+mu0)))/(gamma-one)/(one+mu0)
146 ELSE
147 e0 = zero
148 ENDIF
149
150 pm(32) = (gamma-one)*abs(e0) + a*b
151
152 IF(e0 < zero)THEN
153 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
154 . i1=imideos,
155 . c1='/EOS/LSZK',
156 . c2='PARAMETERS RESULTS INTO A NEGATIVE INITIAL ENERGY')
157 ENDIF
158
159 pm(23) = e0
160 pm(31) = p0-psh
161 pm(104)= p0-psh
162
163 mat_param%EOS%UPARAM(1) = gamma
164 mat_param%EOS%UPARAM(2) = p0
165 mat_param%EOS%UPARAM(3) = a
166 mat_param%EOS%UPARAM(4) = b
167 mat_param%EOS%PSH = psh
168 mat_param%EOS%E0 = e0
169 IF (mat_param%THERM%TINI == zero) THEN
170 mat_param%THERM%TINI =three100
171 pm(79) = three100
172 END IF
173
174
175 ssp0 = zero
176 g0 = pm(22)
177 pp = (gamma-one)*(one+mu0)*e0 + a*exp(b*log(one+mu0))
178 rhoi = pm(89)
179 dpdmu = (gamma-one)*e0+a*b/(one+mu0)*exp((b-one)*log(one+mu0))+(gamma-one)*df*pp
180 dpdmu =
max(zero,dpdmu)
181 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
182 pm(27)=ssp0
183
184 WRITE(iout,1000)
185
186 IF(is_encrypted)THEN
187 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
188 ELSE
189 WRITE(iout,1500)gamma,p0,psh,a,b
190 IF(is_available_rho0)WRITE(iout,1501)pm(1)
191 ENDIF
192
193 RETURN
194 1000 FORMAT(
195 & 5x,' LANDAU-STANYUKOVICH-ZELDOVICH-KOMPANEETS EOS (LSZK) ',/,
196 & 5x,' --------------------------------------------------- ',/)
197 1500 FORMAT(
198 & 5x,'GAMMA . . . . . . . . . . . . . . . . . .=',1pg20.13/,
199 & 5x,'P0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
200 & 5x,'PSH . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
201 & 5x,'A . . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
202 & 5x,'b . . . . . . . . . . . . . . . . . . . .=',1pg20.13)
203 1501 FORMAT(
204 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
205
206 RETURN
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)