42
43
44
49 USE matparam_def_mod
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65#include "implicit_f.inc"
66
67
68
69#include "scr03_c.inc"
70#include "units_c.inc"
71#include "param_c.inc"
72
73
74
75 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
76 INTEGER, INTENT(INOUT)
77 INTEGER, INTENT(INOUT) :: ISRATE
78 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
79 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
80 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
81 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
82 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG6,MTAG17
83 INTEGER,INTENT(IN) :: ITYP
84 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MATPARAM
85
86
87
88 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED,IS_EOS
89 INTEGER COUNT, IEOS, LAW6_OPT
91 . rho0, vis, psh, c0, c1, c2, c3, c4, c5, pmin, e0,
92 .
93 . mu,rhor
94
95
96
97 count = 0
98 is_eos=.false.
99 pmin=zero
100 rhor=zero
101 is_encrypted=.false.
102
104
105 CALL hm_get_intv (
'Line_count' ,count ,is_available, lsubmodel)
106 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab
107 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
108 CALL hm_get_boolv (
'EOS_DATA_EXIST' ,is_eos ,is_available)
109 CALL hm_get_intv (
'Law6_opt' ,law6_opt ,is_available, lsubmodel)
110 CALL hm_get_floatv(
'DAMP1' ,vis ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv(
'MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
112
113 IF(count==3)is_eos=.true.
114 IF(invers_init<2018)is_eos=.true. !no embedded eos before up to format 2017
115
116 IF (is_eos) THEN
117 ieos = 1
118 CALL hm_get_floatv(
'MAT_C0' ,c0 ,is_available, lsubmodel, unitab
119 CALL hm_get_floatv(
'MAT_C1' ,c1 ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_C2' ,c2 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_C3' ,c3 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MAT_C4' ,c4 ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_C5' ,c5 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT_EA' ,e0 ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv(
'MAT_PSH' ,psh ,is_available, lsubmodel, unitab)
126
127 matparam%IEOS = 1
128 matparam%EOS%NUPARAM = 7
129 matparam%EOS%NIPARAM = 0
130 matparam%EOS%NFUNC = 0
131 matparam%EOS%NTABLE = 0
132 CALL matparam%EOS%CONSTRUCT()
133 matparam%EOS%UPARAM(1) = c0-psh
134 matparam%EOS%UPARAM(2) = c1
135 matparam%EOS%UPARAM(3) = c2
136 matparam%EOS%UPARAM(4) = c3
137 matparam%EOS%UPARAM(5) = c4
138 matparam%EOS%UPARAM(6) = c5
139 matparam%EOS%UPARAM(7) = zero
140 matparam%EOS%PSH = psh
141 matparam%EOS%E0 = e0
142 ELSE
143 e0 = zero
144 c0 = zero
145 c1 = zero
146 c2 = zero
147 c3 = zero
148 c4 = zero
149 c5 = zero
150 psh =zero
151 ieos = 0
152 ENDIF
153
154 IF (pmin == zero) pmin=-infinity
155 IF (rhor == zero) rhor=rho0
156 pm(1) = rhor
157 pm(89)= rho0
158
159 pm(23)=e0
160 pm(24)=vis
161
162 IF(rhor /= zero) THEN
163 mu = rho0/rhor-one
164 ELSE
165 mu = zero
166 ENDIf
167 IF(mu < zero)THEN
168 pm(31) = -psh + c0+c1*mu+ c3*mu**3+(c4+c5*mu)*e0
169 ELSE
170 pm(31) = -psh + c0+c1*mu+c2*mu**2+c3*mu**3+(c4+c5*mu)*e0
171 ENDIF
172
173 pm(32)=c1
174
175 pm(37)=pmin
176 pm(80)=infinity
177 pm(88)=psh
178 pm(104)=c0 - psh
179
180
181 matparam%IEOS = ieos
182 ipm(4) = ieos
183
184
186
187
189
191
192
195
196
197 WRITE(iout,2001) trim(titr),mat_id,6
198 WRITE(iout,1000)
199
200 IF(is_encrypted)THEN
201 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
202 ELSEIF (is_eos) THEN
203 WRITE(iout,2002)rho0,rhor
204 WRITE(iout,1300)vis
205 WRITE(iout,1400)psh
206 WRITE(iout,1500)c0,c1,c2,c3,c4,c5,pmin,pm(31),e0
207 ELSE
208 WRITE(iout,2002)rho0,rhor
209 WRITE(iout,1300)vis
210 WRITE(iout,1501)pmin
211 ENDIF
212
213
214
215
216
217 mtag6%G_RK = 1
218 mtag6%G_RE = 1
219 mtag6%L_RK = 1
220 mtag6%L_RE = 1
221 mtag6%L_VK = 1
222 mtag6%G_TEMP = 1
223 mtag6%L_TEMP = 1
224
225 mtag17%G_RK = 1
226 mtag17%G_RE = 1
227 mtag17%L_RK = 1
228 mtag17%L_RE = 1
229 mtag17%L_VK = 1
230 mtag17%G_TEMP = 1
231 mtag17%L_TEMP = 1
232
233 1000 FORMAT(
234 & 5x,' VISCOUS FLUID ',/,
235 & 5x,' -------------- ',//)
236 1300 FORMAT(
237 & 5x,'VISCOSITY . . . . . . . . . . . . . . .=',1pg20.13)
238 1400 FORMAT(
239 & 5x,'PSH PRESSURE SHIFT. . . . . . . . . . .=',1pg20.13/)
240 1500 FORMAT(
241 & 5x,'C0. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
242 & 5x,'C1. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
243 & 5x,'C2. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
244 & 5x,'C3. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
245 & 5x,'C4. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
246 & 5x,'C5. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
247 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13/,
248 & 5x,'INITIAL PRESSURE. . . . . . . . . . . .=',1pg20.13/,
249 & 5x,'INITIAL INTERNAL ENERGY PER UNIT VOLUME=',1pg20.13//)
250 1501 FORMAT(
251 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13//)
252 2001 FORMAT(/
253 & 5x,a,/,
254 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
255 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
256 2002 FORMAT(
257 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
258 & 5x,'REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13)
259
260
261
262 RETURN
subroutine hm_get_boolv(name, bval, is_available)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle