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,pstar,rhoi,rhor,cv,t0,b,q,q_
77 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
78 my_real :: pp,dpde,dpdmu ,g0,ssp0,mu0,df
79
80
81
82 is_encrypted = .false.
83 is_available = .false.
84 is_available_rho0 = .false.
85
87
88 CALL hm_get_floatv(
'b_Covolume', b, is_available,lsubmodel,unitab)
89 CALL hm_get_floatv(
'Gamma_Constant', gamma, is_available,lsubmodel,unitab)
90 CALL hm_get_floatv(
'P_star', pstar, is_available,lsubmodel,unitab
92
93 CALL hm_get_floatv(
'LAW5_PSH', psh, is_available,lsubmodel,unitab)
94 CALL hm_get_floatv(
'LAW5_P0', p0, is_available,lsubmodel,unitab)
95 CALL hm_get_floatv(
'EOS_C0', cv, is_available,lsubmodel,unitab)
96 CALL hm_get_floatv(
'Refer_Rho', rho0, is_available_rho0,lsubmodel,unitab)
97
98
99 rhor = pm(1)
100 rhoi = pm(89)
101 IF(rho0 > zero) THEN
102 rhor = rho0
103 pm(1)= rho0
104 mat_param%RHO = rho0
105 ELSE
106 rho0=rhor
107 ENDIF
108
109
110 t0=(one/rho0-b)*(p0+pstar)/(gamma-one)/cv
111 e0=(p0+gamma*pstar)*(one-rho0*b)/(gamma-1)+rho0*q
112
113
114
115
116 IF(gamma <= one)THEN
117 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo
118 . c1='/EOS/NASG',
119 . c2='GAMMA MUST BE GREATER THAN 1.0')
120 ENDIF
121
122 IF(e0 <= zero)THEN
123 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,i1=imideos,
124 . c1='/EOS/NASG',
125 . c2='PARAMETERS ARE RESULTING INTO A NEGATIVE ENERGY : E0')
126 ENDIF
127
128 q_ = zero
129
130 pm(032)= (e0-rho0*q)*(gamma-one)/(one-rho0*b)
131 pm(088)=psh
132 pm(023)=e0
133 pm(031)=p0
134
135 mat_param%EOS%NUPARAM = 7
136 mat_param%EOS%NIPARAM = 0
137 mat_param%EOS%NFUNC = 0
138 mat_param%EOS%NTABLE = 0
139 CALL mat_param%EOS%CONSTRUCT()
140
141 mat_param%EOS%UPARAM(1) = gamma
142 mat_param%EOS%UPARAM(2) = p0
143 mat_param%EOS%UPARAM(3) = pstar
144 mat_param%EOS%UPARAM(4) = q
145 mat_param%EOS%UPARAM(5) = q_
146 mat_param%EOS%UPARAM(6) = b
147 mat_param%EOS%UPARAM(7) = rho0
148
149 mat_param%EOS%PSH = psh
150 mat_param%EOS%CV = cv
151 mat_param%EOS%E0 = e0
152 IF (t0 == zero) t0 = three100
153 mat_param%THERM%TINI =t0
154 pm(79) = t0
155
156
157 IF(rhoi == zero)THEN
158 mu0 = zero
159 ELSE
160 IF(rhor /= zero)THEN
161 mu0 = rhoi/rhor-one
162 ELSE
163 mu0 = zero
164 ENDIF
165 ENDIF
166
167 IF(rhoi /= zero)THEN
168 df = rhor/rhoi
169 ELSE
170 df = zero
171 ENDIF
172
173
174 ssp0 = zero
175 g0 = pm(22)
176 rhoi = pm(89)
177 unpmu = one+mu0
178 denom = (one-rhoi*b*unpmu)
179 num = (e0-rhoi*q)
180 pp = p0
181 dpde = (gamma-one)*unpmu / denom
182 dpdmu = (gamma-one)*num/denom/denom + dpde*(pp)/unpmu/unpmu
183
184 dpdmu=
max(zero,dpdmu)
185 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
186 pm(32) = dpdmu
187 pm(27) = ssp0
188
189
190 WRITE(iout,1000)
191 IF(is_encrypted)THEN
192 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
193 ELSE
194 WRITE(iout,1500)gamma,b,q,psh,pstar,cv,p0,e0
195 IF(is_available_rho0)WRITE(iout,1501)pm(1)
196 ENDIF
197
198 RETURN
199 1000 FORMAT(
200 & 5x,' NOBLE-ABEL-STIFFENED GAS EOS',/,
201 & 5x,' ----------------------------',/)
202 1500 FORMAT(
203 & 5x,'GAMMA . . . . . . . . . . . . . . . . . .=',1pg20.13/,
204 & 5x,'b . . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
205 & 5x,'q . . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
206 & 5x,'PSH . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
207 & 5x,'PSTAR . . . . . . . . . . . . . . . . . .=',1pg20.13/,
208 & 5x,'Cv. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
209 & 5x,'P0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
210 & 5x,'E0 . . . . . . . . . . . . . . . . . . .=',1pg20.13)
211 1501 FORMAT(
212 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
213
214 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)