41
42
43
49 USE matparam_def_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "units_c.inc"
59#include "param_c.inc"
60
61
62
63 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
64 INTEGER, INTENT(IN) :: MAT_ID
65 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
66 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
67 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
68 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
69 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
70 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MATPARAM
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 INTEGER IFR, IFP, IFE, IFT, IFQ, ITYP, INOD, ICOMP
88 . gam, vcrt2, gamrp, gam1, p0, c1, ssp2, ef,
89 . rho0, psh, carl, gam2, e0, vcrt, rcrt, pcrt, ssp,
90 . t0, dc, alp0, rhoc,
91 . tscal,rhor,
92 . fac_length_, fac_time_
93 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
94
95
96
97
98 is_encrypted = .false.
99 is_available = .false.
100 fac_length_ = one
101 fac_time_ = one
102
103
105
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 IF (rhor == zero) THEN
109 rhor = rho0
110 ENDIF
111 pm(1) = rhor
112 pm(89) = rho0
113 ale%GLOBAL%IS_BOUNDARY_MATERIAL = .true.
114
115 carl = zero
116 t0 = zero
117 gam = zero
118 vcrt2 = zero
119 gamrp = zero
120 gam1 = zero
121 p0 = zero
122 c1 = zero
123 ssp = zero
124 ssp2 = zero
125 ef = zero
126 e0 = zero
127 dc = zero
128 rhoc = zero
129 alp0 = infinity
130 ifr = 0
131 ifp = 0
132 ife = 0
133 ift = 0
134 ifq = 0
135 ityp = 0
136 inod = 0
137 icomp = 0
138
139
140 CALL hm_get_intv(
'Itype', ityp, is_available, lsubmodel)
141
142 CALL hm_get_floatv(
'MAT_PSH', psh, is_available, lsubmodel, unitab)
143 CALL hm_get_floatv(
'SCALE', tscal, is_available, lsubmodel, unitab)
146
147
148 SELECT CASE(ityp)
149 CASE (0)
150 CALL hm_get_intv(
'NODE1', inod, is_available, lsubmodel)
151 CALL hm_get_floatv(
'GAMMA', gam, is_available, lsubmodel, unitab)
152 CALL hm_get_floatv(
'K_cdi', dc, is_available, lsubmodel, unitab)
153
154 CALL hm_get_intv(
'FUN_A1', ifr, is_available, lsubmodel)
155
156 CALL hm_get_intv(
'FUN_A2', ifp, is_available, lsubmodel)
157 CALL hm_get_floatv(
'MAT_PScale', p0, is_available, lsubmodel, unitab)
158 CASE (1)
159 CALL hm_get_intv(
'NODE1', inod, is_available, lsubmodel)
160 CALL hm_get_floatv(
'MAT_C1', c1, is_available, lsubmodel, unitab)
161 CALL hm_get_floatv(
'K_cdi', dc, is_available, lsubmodel, unitab)
162
163 CALL hm_get_intv(
'FUN_A1', ifr, is_available, lsubmodel)
164
165 CALL hm_get_intv(
'FUN_A2', ifp, is_available, lsubmodel)
166 CALL hm_get_floatv(
'MAT_PScale', p0, is_available, lsubmodel, unitab)
167
168 CALL hm_get_intv(
'FUN_A6', ife, is_available, lsubmodel)
169 CALL hm_get_floatv(
'MAT_E0', e0, is_available, lsubmodel, unitab)
170 CASE (2)
171 CALL hm_get_intv(
'FUN_A1', ifr, is_available, lsubmodel)
172
173 CALL hm_get_intv(
'FUN_A2', ifp, is_available, lsubmodel)
174 CALL hm_get_floatv(
'MAT_PScale', p0, is_available, lsubmodel, unitab)
175
176 CALL hm_get_intv(
'FUN_A6', ife, is_available, lsubmodel)
177 CALL hm_get_floatv('mat_e0
', E0, IS_AVAILABLE, LSUBMODEL, UNITAB)
178 CASE (3)
179 CALL HM_GET_FLOATV('mat_c0', SSP, IS_AVAILABLE, LSUBMODEL, UNITAB)
180 CALL HM_GET_FLOATV('h', CARL, IS_AVAILABLE, LSUBMODEL, UNITAB)
181 IF(CARL*SSP==ZERO)THEN
182 CALL ANCMSG(MSGID=304,
183 . MSGTYPE=MSGERROR,
184 . ANMODE=ANINFO,
185 . I2=MAT_ID,
186 . C1=TITR)
187 ENDIF
188 CASE DEFAULT
189 CALL ANCMSG(MSGID=1665, MSGTYPE=MSGERROR, ANMODE=ANINFO,
190 . I1=MAT_ID,
191 . I2 = ITYP,
192 . C1=TITR)
193 END SELECT
194
195 CALL HM_GET_INTV('xt_fun', IFT, IS_AVAILABLE, LSUBMODEL)
196 CALL HM_GET_INTV('yt_fun', IFQ, IS_AVAILABLE, LSUBMODEL)
197
198
199
200
201 IF(CARL==ZERO)CARL = EM01 * FAC_LENGTH_
202 IF(T0==ZERO) T0 = THREE100
203 IF(TSCAL == ZERO) TSCAL = ONE * FAC_TIME_
204 SELECT CASE(ITYP)
205 CASE (0)
206 GAM1 = ONE/(GAM - ONE)
207 GAM2 = HALF/GAM
208 GAMRP= GAM2*(GAM-ONE)
209 E0 = GAM1*(P0+PSH)
210 EF = GAM1*(PSH)
211 SSP2 = GAM*P0/RHO0
212 VCRT2= TWO*GAM*(P0+PSH)/RHO0/(GAM + ONE)
213 VCRT = SQRT(VCRT2)
214 RCRT = (ONE-GAMRP*RHO0*VCRT2/(P0+PSH))**GAM1
215 PCRT = (P0+PSH)*RCRT**GAM
216 RCRT = RHO0*RCRT
217 CASE (1)
218 SSP2 = C1/RHO0
219 GAM1 = ONE
220 CASE (2)
221 GAM1 = ONE
222 SSP2 = SSP**2
223 CASE (3)
224 IF(CARL>ZERO)ALP0=HALF*SSP/CARL
225 RHOC=RHO0*SSP
226 CASE DEFAULT
227
228 END SELECT
229
230
231
232
233 WRITE(IOUT, 800)TRIM(TITR),MAT_ID,11
234
235 IF(IS_ENCRYPTED)THEN
236 WRITE(IOUT,900)
237 WRITE(IOUT,'(5x,a,//)')'confidential data'
238 ELSE
239 WRITE(IOUT,1000)ITYP,PSH,TSCAL
240 WRITE(IOUT, 850) RHO0,RHOR
241 SELECT CASE(ITYP)
242 CASE(0)
243 WRITE(IOUT,1100)GAM,P0,E0,VCRT,RCRT,PCRT,INOD
244 WRITE(IOUT,1350)EF,DC
245 WRITE(IOUT,1300)IFR,IFP
246 CASE(1)
247 WRITE(IOUT,1200)C1,P0,E0,INOD
248 WRITE(IOUT,1349)DC
249 WRITE(IOUT,1301)IFR,IFP,IFE
250 CASE(2)
251 WRITE(IOUT,1400)P0,E0
252 WRITE(IOUT,1302)IFR,IFP,IFE
253 CASE(3)
254 WRITE(IOUT,1353)SSP,CARL,INOD
255 CASE DEFAULT
256
257 END SELECT
258 IF(ITYP/=3)WRITE(IOUT,2001) IFT,IFQ
259 ENDIF
260
261
262
263
264 IPM(11) = IFR
265 IPM(12) = IFP
266 IPM(13) = IFE
267 IPM(14) = IFT
268 IPM(17) = IFQ
269
270 PM(23) = E0
271 PM(25) = GAM
272 PM(27) = VCRT2
273 PM(28) = GAMRP
274 PM(29) = GAM1
275 PM(31) = P0
276 PM(32) = C1
277 PM(34) = -HALF*SSP2/CARL**2
278 PM(37) = EF
279 PM(40) = ONE/TSCAL
280 PM(50) = ITYP
281 PM(51) = INOD ! USR2SYS APRES FSDCOD, IF(IFORM8==2) INOD=USR2SYS(INOD,ITABM1,MESS)
282 PM(79) = T0
283 PM(80) = EP30
284 PM(88) = PSH
285 PM(97) = RHOC
286 PM(98) = ALP0
287 PM(99) = DC+ONE
288
289
290
291
292 MTAG%G_RK = 1
293 MTAG%G_RE = 1
294 MTAG%G_TEMP = 1
295 MTAG%L_RK = 1
296 MTAG%L_TEMP = 1
297 MTAG%L_RE = 1
298 MTAG%L_VK = 1
299 MTAG%L_EINS = 1
300
301 ! EOS/Thermo keyword for pressure treatment in elements
302 CALL INIT_MAT_KEYWORD(MATPARAM,"HYDRO_EOS")
303
304 CALL INIT_MAT_KEYWORD(MATPARAM,"INCOMPRESSIBLE")
305
306 ! Properties compatibility
307 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
308
309 RETURN
310
311
312
313
314 800 FORMAT(/
315 & 5X,A,/,
316 & 5X,'material number. . . . . . . . . . . . . . .=',I10/,
317 & 5X,'material law . . . . . . . . . . . . . . . .=',I10/)
318 850 FORMAT(
319 & 5X,'initial density . . . . . . . . . . . .=',1PG20.13/,
320 & 5X,'reference density . . . . . . . . . . .=',1PG20.13/)
321 900 FORMAT(
322 & 5X,40H LAW FOR FLUID BOUNDARY ELEMENTS ,/,
323 & 5X,40H ------------------------------- ,/)
324 1000 FORMAT(
325 & 5X,40H LAW FOR FLUID BOUNDARY ELEMENTS ,/,
326 & 5X,40H ------------------------------- ,/,
327 & 5X,40HITYP. . . . . . . . . . . . . . . . . .=,I10/,
328 & 5X,'ityp = 0 : gas inlet',/,
329 & 5X,'ityp = 1 : liquid inlet',/,
330 & 5X,'ityp = 2 : imposed inlet/outlet - time dependent',/,
331 & 5X,'ityp = 3 : non-reflecting boundary',/,
332 & 5X,'psh: pressure shift . . . . . . . . . .=',1PG20.13/,
333 & 5X,'time scale factor . . . . . . . . . . .=',1PG20.13/)
334 1100 FORMAT(
335 & 5X,40HGAMMA CONSTANT. . . . . . . . . . . . .=,E12.4/,
336 & 5X,40HSTAGNATION PRESSURE . . . . . . . . . .=,E12.4/,
337 & 5X,40HSTAGNATION ENERGY . . . . . . . . . . .=,E12.4/,
338 & 5X,40HCRITICAL VELOCITY . . . . . . . . . . .=,E12.4/,
339 & 5X,40HCRITICAL DENSITY. . . . . . . . . . . .=,E12.4/,
340 & 5X,40HCRITICAL PRESSURE . . . . . . . . . . .=,E12.4/,
341 & 5X,40HREFERENCE NODE (VELOCITY) . . . . . . .=,I10/)
342 1200 FORMAT(
343 & 5X,40HBULK MODULUS. . . . . . . . . . . . . .=,E12.4/,
344 & 5X,40HSTAGNATION PRESSURE . . . . . . . . . .=,E12.4/,
345 & 5X,40HSTAGNATION ENERGY . . . . . . . . . . .=,E12.4/,
346 & 5X,40HREFERENCE NODE (VELOCITY) . . . . . . .=,I10/)
347 1300 FORMAT(
348 & 5X,40HSTAGNATION DENSITY LOAD CURVE. . . . .=,I10/,
349 & 5X,40HSTAGNATION PRESSURE LOAD CURVE. . . . .=,I10/)
350 1301 FORMAT(
351 & 5X,40HSTAGNATION DENSITY LOAD CURVE. . . . .=,I10/,
352 & 5X,40HSTAGNATION PRESSURE LOAD CURVE. . . . .=,I10/,
353 & 5X,40HSTAGNATION ENERGY LOAD CURVE. . . . .=,I10/)
354 1302 FORMAT(
355 & 5X,40HDENSITY LOAD CURVE . . . . . . . . .=,I10/,
356 & 5X,40HPRESSURE LOAD CURVE . . . . . . . . .=,I10/,
357 & 5X,40HENERGY LOAD CURVE . . . . . . . . .=,I10/)
358 1349 FORMAT(
359 & 5X,40HDISCHARGE COEFFICIENT (ENTRY LOSS). . .=,E12.4/)
360 1350 FORMAT(
361 & 5X,40HFINAL STAGNATION ENERGY . . . . . . . .=,E12.4/,
362 & 5X,40HDISCHARGE COEFFICIENT (ENTRY LOSS). . .=,E12.4/)
363 1353 FORMAT(
364 & 5X,40HCHARACTERISTIC SOUND SPEED. . . . . . .=,E12.4/,
365 & 5X,40HCHARACTERISTIC LENGTH . . . . . . . . .=,E12.4/,
366 & 5X,40HREFERENCE NODE (VELOCITY) . . . . . . .=,I10/)
367 1400 FORMAT(
368 & 5X,40HINITIAL PRESSURE(P-PSH) . . . . . . . .=,E12.4/,
369 & 5X,40HINITIAL ENERGY. . . . . . . . . . . . .=,E12.4/)
370 2001 FORMAT(
371 & 5X,' thermal boundary ',/,
372 & 5X,' ---------------- ',/,
373 & 5X,'temperature load curve. . . . . . . . .=',I10/,
374 & 5X,'flux load curve. . . . . . . . . . . .=',I10/)
375
376 RETURN
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
integer, parameter nchartitle