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) :: MAT_ID
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 JTUR, I, EMPTY_LINE,COUNT,IEOS,LAW6_OPT
91 . rho0, vis, bid, psh, c0, c1, c2, c3, c4, c5, pmin, e0, rk0,
92 . ssl, ctm, sk, se, rpr, ct1, ct2, ct3, ak, e, a, b, yp0, yp1,
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.
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 ELSE
127 e0 = zero
128 c0 = zero
129 c1 = zero
130 c2 = zero
131 c3 = zero
132 c4 = zero
133 c5 = zero
134 psh =zero
135 ieos = 0
136 ENDIF
137
138 IF (pmin == zero) pmin=-infinity
139 IF (rhor == zero) rhor=rho0
140 pm(1) = rhor
141 pm(89)= rho0
142
143 pm(23)=e0
144 pm(24)=vis
145
146 IF(rhor /= zero) THEN
147 mu = rho0/rhor-one
148 ELSE
149 mu = zero
150 ENDIf
151 IF(mu < zero)THEN
152 pm(31) = -psh + c0+c1*mu+ c3*mu**3+(c4+c5*mu)*e0
153 ELSE
154 pm(31) = -psh + c0+c1*mu+c2*mu**2+c3*mu**3+(c4+c5*mu)*e0
155 ENDIF
156
157 pm(32)=c1
158 pm(33)=c2
159 pm(34)=c3
160 pm(35)=c4
161 pm(36)=c5
162 pm(37)=pmin
163 pm(80)=infinity
164 pm(88)=psh
165 pm(104)=c0 - psh
166
167
168 matparam%IEOS = ieos
169 ipm(4) = ieos
170
171
173
174
176
178
179
182
183
184 WRITE(iout,2001) trim(titr),mat_id,6
185 WRITE(iout,1000)
186
187 IF(is_encrypted)THEN
188 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
189 ELSEIF (is_eos) THEN
190 WRITE(iout,2002)rho0,rhor
191 WRITE(iout,1300)vis
192 WRITE(iout,1400)psh
193 WRITE(iout,1500)c0,c1,c2,c3,c4,c5,pmin,pm(31),e0
194 ELSE
195 WRITE(iout,2002)rho0,rhor
196 WRITE(iout,1300)vis
197 WRITE(iout,1501)pmin
198 ENDIF
199
200
201
202
203
204 mtag6%G_RK = 1
205 mtag6%G_RE = 1
206 mtag6%L_RK = 1
207 mtag6%L_RE = 1
208 mtag6%L_VK = 1
209 mtag6%G_TEMP = 1
210 mtag6%L_TEMP = 1
211
212 mtag17%G_RK = 1
213 mtag17%G_RE = 1
214 mtag17%L_RK = 1
215 mtag17%L_RE = 1
216 mtag17%L_VK = 1
217 mtag17%G_TEMP = 1
218 mtag17%L_TEMP = 1
219
220 1000 FORMAT(
221 & 5x,' VISCOUS FLUID ',/,
222 & 5x,' -------------- ',//)
223 1300 FORMAT(
224 & 5x,'VISCOSITY . . . . . . . . . . . . . . .=',1pg20.13)
225 1400 FORMAT(
226 & 5x,'PSH PRESSURE SHIFT. . . . . . . . . . .=',1pg20.13/)
227 1500 FORMAT(
228 & 5x,'C0. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
229 & 5x,'C1. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
230 & 5x,'C2. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
231 & 5x,'C3. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
232 & 5x,'C4. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
233 & 5x,'C5. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
234 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13/,
235 & 5x,'INITIAL PRESSURE. . . . . . . . . . . .=',1pg20.13/,
236 & 5x,'INITIAL INTERNAL ENERGY PER UNIT VOLUME=',1pg20.13//)
237 1501 FORMAT(
238 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13//)
239 2001 FORMAT(/
240 & 5x,a,/,
241 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
242 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
243 2002 FORMAT(
244 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
245 & 5x,'REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13)
246
247
248
249 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