36
37
38
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57#include "implicit_f.inc"
58
59
60
61 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
62 INTEGER IIN,IOUT,IUNIT
64 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
65 INTEGER,INTENT(IN) :: IMIDEOS
66
67
68
69#include "param_c.inc"
70
71
72
73 my_real gamma, p0,t0, e0, psh, rho0,fac_l,fac_t,fac_m,fac_c,pstar, fac_r,a,b,rhoi,rhor,mu0,df,ssp0,g0,dpdmu,pp
74 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
75
76
77
78 is_encrypted = .false.
79 is_available = .false.
80 is_available_rho0 = .false.
81
83
84 CALL hm_get_floatv(
'Gamma', gamma, is_available,lsubmodel,unitab)
85 CALL hm_get_floatv(
'LAW5_P0', p0, is_available,lsubmodel,unitab)
89
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 ELSE
99 rho0=rhor
100 ENDIF
101
102
103
104
105 IF(gamma <= zero)THEN
107 . msgtype=msgerror,
108 . anmode=aninfo,
109 . i1=imideos,
110 . c1='/EOS/LSZK',
111 . c2='GAMMA MUST BE GREATER THAN 1.0')
112 ENDIF
113
114 pm(34) = gamma
115 pm(32) = p0
116 pm(88) = psh
117 pm(35) = a
118 pm(36) = b
119 IF(pm(79)==zero)pm(79)=three100
120
121 IF(rhoi == zero)THEN
122 mu0 = zero
123 ELSE
124 IF(rhor /= zero)THEN
125 mu0 = rhoi/rhor-one
126 ELSE
127 mu0 = zero
128 ENDIF
129 ENDIF
130
131 IF(rhoi /= zero)THEN
132 df = rhor/rhoi
133 ELSE
134 df = zero
135 ENDIF
136
137 IF(mu0 <= -one)mu0=-one+ep12
138
139 IF(gamma > one)THEN
140 e0 = (p0-a*exp(b*log(one+mu0)))/(gamma-one)/(one+mu0)
141 ELSE
142 e0 = zero
143 ENDIF
144
145 IF(e0 < zero)THEN
146 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
147 . i1=imideos,
148 . c1='/EOS/LSZK',
149 . c2='PARAMETERS RESULTS INTO A NEGATIVE INITIAL ENERGY')
150 ENDIF
151
152 pm(23) = e0
153 pm(31) = p0-psh
154 pm(104)= p0-psh
155
156
157 ssp0 = zero
158 g0 = pm(22)
159 pp = (gamma-one)*(one+mu0)*e0 + a*exp(b*log(one+mu0))
160 rhoi = pm(89)
161 dpdmu = (gamma-one)*e0+a*b/(one+mu0)*exp((b-one)*log(one+mu0))+(gamma-one)*df*pp
162 dpdmu =
max(zero,dpdmu)
163 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
164 pm(27)=ssp0
165
166 WRITE(iout,1000)
167
168 IF(is_encrypted)THEN
169 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
170 ELSE
171 WRITE(iout,1500)gamma,p0,psh,a,b
172 IF(is_available_rho0)WRITE(iout,1501)pm(1)
173 ENDIF
174
175 RETURN
176 1000 FORMAT(
177 & 5x,' LANDAU-STANYUKOVICH-ZELDOVICH-KOMPANEETS EOS (LSZK) ',/,
178 & 5x,' --------------------------------------------------- ',/)
179 1500 FORMAT(
180 & 5x,'GAMMA . . . . . . . . . . . . . . . . . .=',1pg20.13/,
181 & 5x,'P0. . . . . . . . . . . . . . . . . . . .=',1pg20
182 & 5x,'PSH . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
183 & 5x,'A . . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
184 & 5x,'b . . . . . . . . . . . . . . . . . . . .=',1pg20.13)
185 1501 FORMAT(
186 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
187
188 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)