42 USE matparam_def_mod,
ONLY : matparam_struct_
58#include "implicit_f.inc"
62 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
65 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
66 TYPE(matparam_struct_),
INTENT(INOUT) :: MAT_PARAM
67 INTEGER,
INTENT(IN) :: IMIDEOS
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
82 is_encrypted = .false.
83 is_available = .false.
84 is_available_rho0 = .false.
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)
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)
110 t0=(one/rho0-b)*(p0+pstar)/(gamma-one)/cv
111 e0=(p0+gamma*pstar)*(one-rho0*b)/(gamma-1)+rho0*q
117 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,i1=imideos,
119 . c2='gamma must be greater than 1.0
')
123 CALL ANCMSG(MSGID=67,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1=IMIDEOS,
125 . C2='parameters are resulting into a negative energy : e0
')
130 PM(032)= (E0-RHO0*q)*(GAMMA-ONE)/(ONE-RHO0*b) !BULK = (1+ยต)*dP/dmu (partial derivative at constant E)
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() !allocations
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
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
158 MU0 = ZERO ! error 683 already displayed
163 MU0 = ZERO ! error 683 already displayed
178 DENOM = (ONE-RHOI*B*UNPMU)
181 dPdE = (GAMMA-ONE)*UNPMU / DENOM !partial derivative
182 DPDMU = (GAMMA-ONE)*NUM/DENOM/DENOM + DPDE*(PP)/UNPMU/UNPMU
184 DPDMU=MAX(ZERO,DPDMU)
185 IF(RHOR > ZERO) SSP0 = SQRT((DPDMU + TWO_THIRD*G0)/RHOR)
186 PM(32) = DPDMU ! bulk modulus
192 WRITE(IOUT,'(5x,a,//)
')'confidential data
'
194 WRITE(IOUT,1500)GAMMA,b,q,PSH,PSTAR,Cv,P0,E0
195 IF(IS_AVAILABLE_RHO0)WRITE(IOUT,1501)PM(1)
200 & 5X,' noble-abel-stiffened gas eos
',/,
201 & 5X,' ----------------------------
',/)
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)
212 & 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)