35
36
37
41 USE matparam_def_mod, ONLY : matparam_struct_
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,INTENT(IN) :: IOUT,IUNIT
63 my_real,
INTENT(INOUT) :: pm(npropm)
64 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
65 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MAT_PARAM
66 INTEGER,INTENT(IN) :: IMIDEOS
67
68
69
70#include "param_c.inc"
71
72
73
75 my_real :: bb,gamma,pp,denom,mu,rhoi,rhor,dpdmu,dpde
77 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
78
79
80
81 is_encrypted = .false.
82 is_available = .false.
83 is_available_rho0 = .false.
84
86 CALL hm_get_floatv(
'b_Covolume',bb, is_available,lsubmodel,unitab)
87 CALL hm_get_floatv(
'Gamma_Constant', gamma, is_available,lsubmodel,unitab)
89 CALL hm_get_floatv(
'LAW5_PSH', psh ,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 pm(23) = e0
104 pm(32) = (gamma-one)*e0 / (one-bb*rho0)**2
105 pm(88) = psh
106
107 mat_param%EOS%NUPARAM = 3
108 mat_param%EOS%NIPARAM = 0
109 mat_param%EOS%NFUNC = 0
110 mat_param%EOS%NTABLE = 0
111 CALL mat_param%EOS%CONSTRUCT()
112
113 mat_param%EOS%UPARAM(1) = bb
114 mat_param%EOS%UPARAM(2) = gamma-one
115 mat_param%EOS%UPARAM(3) = rho0
116 mat_param%EOS%PSH = psh
117 mat_param%EOS%E0 = e0
118 IF (mat_param%THERM%TINI == zero) THEN
119 mat_param%THERM%TINI =three100
120 pm(79) = three100
121 END IF
122
123
124 mu=rhoi/rhor-one
125 denom = one-bb*rhor*(one+mu)
126 bb = (gamma-one)*(one+mu)/denom
127 pp = bb*e0
128 pm(31) = pp - psh
129 pm(104) = pp - psh
130
131
132 IF(rhoi == zero)THEN
133 mu0 = zero
134 ELSE
135 IF(rhor /= zero)THEN
136 mu0 = rhoi/rhor-one
137 ELSE
138 mu0 = zero
139 ENDIF
140 ENDIF
141
142 IF(rhoi /= zero)THEN
143 df = rhor/rhoi
144 ELSE
145 df = zero
146 ENDIF
147
148 mu2 = mu0*mu0
149 pp = pm(31)+psh
150 ssp0 = zero
151 g0 = pm(22)
152 rhoi = pm(89)
153 dpde = (gamma-one)*(one+mu0)/denom
154 dpdmu = (gamma-one)*e0/denom + pp/denom*bb*rhoi + pp*df*df*dpde
155 dpdmu =
max(zero,dpdmu)
156
157 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
158 pm(27)=ssp0
159
160 WRITE(iout,1000)
161 IF(is_encrypted)THEN
162 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
163 ELSE
164 WRITE(iout,1500)bb,gamma,pm(31),e0,psh
165 IF(is_available_rho0)WRITE(iout,1501)pm(1)
166 ENDIF
167
168 RETURN
169 1000 FORMAT(
170 & 5x,' NOBLE-ABEL EOS ',/,
171 & 5x,' -------------- ',/)
172 1500 FORMAT(
173 & 5x,'COVOLUME. . . . . . . . . . . . . . . . .=',1pg20.13/,
174 & 5x,'GAMMA GAS CONSTANT. . . . . . . . . . . .=',1pg20.13/,
175 & 5x,'INITIAL PRESSURE. . . . . . . . . . . . .=',1pg20.13/,
176 & 5x,'INITIAL INTERNAL ENERGY PER UNIT VOLUME .=',1pg20.13/,
177 & 5x,'PRESSURE SHIFT. . . . . . . . . . . . . .=',1pg20.13)
178 1501 FORMAT(
179 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
180
181 RETURN
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)