58
59
60
66 USE sensor_mod
67
68
69
70#include "implicit_f.inc"
71
72
73
74
75#include "com04_c.inc"
76
77
78#include "param_c.inc"
79
80#include "units_c.inc"
81
82#include "scr03_c.inc"
83
84
85
86 TYPE(UNIT_TYPE_), INTENT(IN) :: UNITAB
87 INTEGER, INTENT(IN) :: LUID, ITABM1(*), NPT(*)
88 INTEGER, INTENT(IN) :: NPC(*), ITAB(*), IXC(NIXC, *), IXTG(NIXTG, *)
89 my_real,
INTENT(IN) :: x(3, *), geo(npropg, *), pm(npropm, *),pld(2, *)
90 TYPE (SURF_), INTENT(INOUT), DIMENSION(NSURF) :: IGRSURF
91 TYPE(MONVOL_STRUCT_), INTENT(INOUT) :: T_MONVOLN
92 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
93 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
94
95
96
97 INTEGER :: II, JJ
98 INTEGER :: SURFID
99 my_real :: fac_m, fac_l, fac_t, fac_c
100 my_real :: scal_t, scal_p, scal_s, scal_a, scal_d
101 LOGICAL :: FOUND, DECREASE
102 my_real :: sa, rot, vol, vmin, veps, amu, sv,
103 . pext, ti, pini, fac_gen
104 INTEGER :: IEQUI, ITTF, NP, IP, IS, NJET, NVENT
105 my_real :: gamai, cpai, cpbi, cpci, cpi, cvi, rmwi, cpg, rmwg, rhoi, especi, ti2, mi,
106 . ttfire, shol
107 my_real,
DIMENSION(:),
ALLOCATABLE :: gama, cpa, cpb, cpc, fmass, ftemp, fpt, fpa, fpz,
108 . tvent, dpdef, dtpdef, fvdp, avent, bvent, tstope, fport, fporp, fpora,
109 . fport1, fporp1,fpora1
110 INTEGER, DIMENSION(:), ALLOCATABLE :: IMASS, IFLU, ITEMP, ISENS, IJET, NJ1, NJ2, NJ3,
111 . IPT, IPA, IPZ, IVDP, IDTPDEF, IPVENT, IFVENT, IPORT, IPORP, IPORA, IPORT1, IPORP1, IPORA1
112 CHARACTER(LEN = 40) :: MESS
113 LOGICAL :: IS_AVAILABLE
114
115
116
117 INTEGER USR2SYS
119
120
121
122 mess = 'MONITORED VOLUME DEFINITION '
123
124
125
126
127 CALL hm_get_intv(
'surf_IDex', surfid, is_available, lsubmodel)
128
129 CALL hm_get_floatv(
'Ascalet', scal_t, is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'AscaleP', scal_p, is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'AscaleS', scal_s, is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'AscaleA', scal_a, is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'AscaleD', scal_d, is_available, lsubmodel, unitab)
134
135 CALL hm_get_floatv(
'MU', amu, is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'Pext', pext, is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'T0', ti, is_available, lsubmodel, unitab)
138 CALL hm_get_intv(
'Iequi', iequi, is_available, lsubmodel)
139 CALL hm_get_intv(
'Ittf', ittf, is_available, lsubmodel)
140
141 CALL hm_get_floatv(
'GAMMAi', gamai, is_available, lsubmodel, unitab)
142 CALL hm_get_floatv(
'cpai', cpai, is_available, lsubmodel, unitab)
143 CALL hm_get_floatv(
'cpbi', cpbi, is_available, lsubmodel, unitab)
144 CALL hm_get_floatv(
'cpci', cpci, is_available, lsubmodel, unitab)
145
146 CALL hm_get_intv(
'Njet', njet, is_available, lsubmodel)
147
148 t_monvoln%NJET = njet
149 t_monvoln%IVOLU(8) = njet
150 IF (njet > 0) THEN
151 ALLOCATE(t_monvoln%IBAGJET(nibjet, njet))
152 t_monvoln%IBAGJET(1:nibjet, 1:njet) = 0
153 ALLOCATE(t_monvoln%RBAGJET(nrbjet, njet))
154 t_monvoln%RBAGJET(1:nrbjet, 1:njet) = zero
155 ENDIF
156 IF (njet > 0) THEN
157 ALLOCATE(gama(njet), cpa(njet), cpb(njet), cpc(njet))
158 ALLOCATE(imass(njet), iflu(njet), fmass(njet), itemp(njet), ftemp(njet), isens(njet))
159 ALLOCATE(ijet(njet), nj1(njet), nj2(njet), nj3(njet))
160 ALLOCATE(ipt(njet), ipa(njet), ipz(njet), fpt(njet), fpa(njet), fpz(njet))
161 DO ii = 1, njet
166
173
178
179 fpt(ii) = zero
180 fpa(ii) = zero
181 fpz(ii) = zero
182 IF (ijet(ii) > 0) THEN
189 ENDIF
190 ENDDO
191 ENDIF
192
193
194 CALL hm_get_intv(
'Nvent', nvent, is_available, lsubmodel)
195
196 t_monvoln%IVOLU(11) = nvent
197 t_monvoln%NVENT = nvent
198 IF (nvent > 0) THEN
199 ALLOCATE(t_monvoln%IBAGHOL(nibhol, nvent))
200 t_monvoln%IBAGHOL(1:nibhol, 1:nvent) = 0
201 ALLOCATE(t_monvoln%RBAGHOL(nrbhol, nvent))
202 t_monvoln%RBAGHOL(1:nrbhol, 1:nvent) = zero
203 ENDIF
204 IF (nvent > 0) THEN
205 ALLOCATE(tvent(nvent), dpdef(nvent), dtpdef(nvent), fvdp(nvent), avent(nvent),
206 . bvent(nvent), tstope(nvent))
207 ALLOCATE(ipvent(nvent), ivdp(nvent), idtpdef(nvent), ifvent(nvent))
208 ALLOCATE(iport(nvent), iporp(nvent), ipora(nvent), iport1(nvent),
209 . iporp1(nvent), ipora1(nvent))
210 ALLOCATE(fport(nvent), fporp(nvent), fpora(nvent), fport1(nvent),
211 . fporp1(nvent), fpora1(nvent))
212 DO ii = 1, nvent
213 ifvent(ii) = 0
218
225
232
239 ENDDO
240 ENDIF
241
242
243
244
245 t_monvoln%IVOLU(4) = 0
246 found = .false.
247 DO ii = 1, nsurf
248 IF (surfid == igrsurf(ii)%ID) THEN
249 t_monvoln%IVOLU(4) = ii
250 t_monvoln%EXT_SURFID = ii
251 found = .true.
252 EXIT
253 ENDIF
254 ENDDO
255 IF (.NOT. found) THEN
257 ELSEIF (igrsurf(t_monvoln%IVOLU(4))%ISH4N3N == 0) THEN
258 CALL ancmsg(msgid = 18, anmode = aninfo, msgtype = msgerror,
259 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = surfid)
261 ENDIF
262
263
265
267 . igrsurf(t_monvoln%EXT_SURFID),ixc, ixtg, x, 2)
268
269 CALL monvol_compute_volume(t_monvoln, t_monvoln%TITLE, t_monvoln%IVOLU, igrsurf(t_monvoln%EXT_SURFID),
270 . itab, x, pm, geo, ixc, ixtg,
271 . sa, rot, vol, vmin, veps, sv)
272
274 . igrsurf(t_monvoln%EXT_SURFID),ixc,ixtg,vol, x, 2)
275
276 IF (ittf < 0 .OR. ittf > 3) THEN
277 CALL ancmsg(msgid = 773, anmode = aninfo, msgtype = msgerror,
278 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
279 ENDIF
280
281
282
283 fac_m = unitab%FAC_M(luid)
284 fac_l = unitab%FAC_L(luid)
285 fac_t = unitab%FAC_T(luid)
286 fac_c = fac_m / (fac_l * fac_t * fac_t)
287
288
289
290
291 IF (scal_t == zero) THEN
293 scal_t = one * fac_gen
294 ENDIF
295 IF (scal_p == zero) THEN
297 scal_p = one * fac_gen
298 ENDIF
299 IF (scal_s == zero) THEN
301 scal_s = one * fac_gen
302 ENDIF
303 IF (scal_a == zero) THEN
305 scal_a = one * fac_gen
306 ENDIF
307 IF (scal_d == zero) THEN
309 scal_d = one * fac_gen
310 ENDIF
311
312 IF (amu == zero) amu = em02
313 IF(pext == zero) THEN
314 pext = 101325.d0 * (unitab%FAC_L_WORK * unitab%FAC_T_WORK * unitab%FAC_T_WORK) / unitab%FAC_M_WORK
315 ENDIF
316 pini = pext
317 IF (ti == zero) ti = twohundred95
318 DO ii = 1, njet
319 IF (imass(ii) /= 0 .AND. fmass(ii) == zero) THEN
321 fmass(ii) = one * fac_gen
322 ENDIF
323 IF (itemp(ii) /= 0 .AND. ftemp(ii) == zero) THEN
325 ftemp(ii) = one * fac_gen
326 ENDIF
327 IF (iflu(ii) /= 0) THEN
328 fmass(ii) = fmass(ii) / fac_t
329 ENDIF
330 IF (fpt(ii) == zero) THEN
332 fpt(ii) = one * fac_gen
333 ENDIF
334 IF (fpa(ii) == zero) THEN
336 fpa(ii) = one * fac_gen
337 ENDIF
338 IF (fpz(ii) == zero) THEN
340 fpz(ii) = one * fac_gen
341 ENDIF
342 ENDDO
343 DO ii = 1, nvent
344 IF (ivdp(ii) > 0) ifvent(ii) = 2
345 IF (ipvent(ii) == 0) THEN
346 bvent(ii) = zero
347 ENDIF
348 IF (fport(ii) == zero) fport(ii) = one
349 IF (fporp(ii) == zero) fporp(ii) = one
350 IF (fpora(ii) == zero) fpora(ii) = one
351 IF (fport1(ii) == zero) fport1(ii) = one
352 IF (fporp1(ii) == zero) fporp1(ii) = one
353 IF (fpora1(ii) == zero) fpora1(ii) = one
354 ENDDO
355 IF (gamai == zero) THEN
356 IF (njet > 0) THEN
357 gamai = gama(1)
358 cpai = cpa(1)
359 cpbi = cpb(1)
360 cpci = cpc(1)
361 ENDIF
362 ENDIF
363 cpi = cpai + ti * (cpbi + cpci * ti)
364 cvi = cpi / gamai
365 rmwi = cvi * (gamai - one)
366 mi = pini * (vol + veps) / (rmwi * ti)
367 ttfire = infinity
368 DO ii = 1, njet
369 IF (isens(ii) > 0) THEN
370 found = .false.
371 DO is = 1, sensors%NSENSOR
372 IF (isens(ii) == sensors%SENSOR_TAB(is)%SENS_ID) THEN
373 t_monvoln%IBAGJET(4, ii) = is
374 IF (sensors%SENSOR_TAB(is)%TCRIT < ttfire) ttfire = sensors%SENSOR_TAB(is)%TCRIT
375 found = .true.
376 EXIT
377 ENDIF
378 ENDDO
379 IF (.NOT. found) THEN
380 CALL ancmsg(msgid = 17, anmode = aninfo, msgtype = msgerror,
381 . i2 = isens(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
382 ENDIF
383 ENDIF
384 ENDDO
385 IF (ttfire == infinity) THEN
386 ttfire = zero
387 ENDIF
388
389
390
391
392 t_monvoln%RVOLU(26) = one / scal_t
393 t_monvoln%RVOLU(27) = one / scal_p
394 t_monvoln%RVOLU(28) = one / scal_s
395 t_monvoln%RVOLU(29) = one / scal_a
396 t_monvoln%RVOLU(30) = one / scal_d
397
398 IF (iequi > 0) iequi = 1
399 t_monvoln%IVOLU(15) = iequi
400 t_monvoln%IVOLU(17) = ittf
401 t_monvoln%IVOLU(8) = njet
402
403 t_monvoln%RVOLU(31) = pini
404 t_monvoln%RVOLU(7) = cpai
405 t_monvoln%RVOLU(8) = cpbi
406 t_monvoln%RVOLU(9) = cpci
407 t_monvoln%RVOLU(10) = rmwi
408 t_monvoln%RVOLU(49) = ttfire
409
410 t_monvoln%RVOLU(1) = gamai
411 t_monvoln%RVOLU(3) = pext
412 t_monvoln%RVOLU(4) = vol+veps
413 t_monvoln%RVOLU(11) = mi
414 t_monvoln%RVOLU(12) = pini
415 t_monvoln%RVOLU(13) = ti
416 t_monvoln%RVOLU(14) = rmwi*mi
417 t_monvoln%RVOLU(17) = veps
418 t_monvoln%RVOLU(20) = mi
419 t_monvoln%RVOLU(25) = ti
420 t_monvoln%RVOLU(61) = gamai
421 rhoi = pini / (ti * rmwi)
422 t_monvoln%RVOLU(62) = rhoi
423 ti2 = ti * ti
424 especi = ti * (cpai + half * cpbi * ti + third * cpci * ti2 - rmwi)
425
426 t_monvoln%RVOLU(63) = especi + rmwi * ti
427 t_monvoln%RVOLU(64) = zero
428 t_monvoln%RVOLU(65) = zero
429 t_monvoln%RVOLU(66) = especi
430 DO ii = 1, njet
431 t_monvoln%IBAGJET(13, ii) = 0
432 t_monvoln%RBAGJET(1, ii) = gama(ii)
433 t_monvoln%RBAGJET(2, ii) = cpa(ii)
434 t_monvoln%RBAGJET(3, ii) = cpb(ii)
435 t_monvoln%RBAGJET(4, ii) = cpc(ii)
436 t_monvoln%RBAGJET(5, ii) = fmass(ii)
437 t_monvoln%RBAGJET(6, ii) = ftemp(ii)
438 t_monvoln%RBAGJET(12, ii) = fpt(ii)
439 t_monvoln%RBAGJET(13, ii) = fpa(ii)
440 t_monvoln%RBAGJET(14, ii) = fpz(ii)
441 IF (imass(ii) == 0)THEN
442 t_monvoln%IBAGJET(1, ii) = 0
443 ELSE
444 found = .false.
445 DO jj = 1, nfunct
446 IF (imass(ii) == npc(jj)) THEN
447 t_monvoln%IBAGJET(1, ii) = jj
448 decrease = .false.
449 np = (npt(jj + 1) - npt(jj)) / 2
450 IF (iflu(ii) == 0) THEN
451 DO ip = (npt(jj) - 1) / 2 + 1, (npt(jj + 1) - 1) / 2 - 1
452 IF (pld(2, ip + 1) < pld(2, ip)) decrease = .true.
453 ENDDO
454 IF (decrease) THEN
455 CALL ancmsg(msgid=540, msgtype = msgwarning, anmode = aninfo_blind_1,
456 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = imass(ii), i3 = ii)
457 ENDIF
458 ELSE
459 DO ip = (npt(jj) - 1) / 2 + 1, (npt(jj + 1) - 1) / 2
460 IF (pld(2, ip) < zero) decrease = .true.
461 ENDDO
462 IF (decrease) THEN
463 CALL ancmsg(msgid = 541, msgtype = msgwarning, anmode = aninfo_blind_1,
464 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = imass(ii), i3 = ii)
465 ENDIF
466 ENDIF
467 found = .true.
468 EXIT
469 ENDIF
470 ENDDO
471 IF (.NOT. found) THEN
472 CALL ancmsg(msgid = 10, anmode = aninfo, msgtype = msgerror,
473 . i2 = imass(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
474 ENDIF
475 ENDIF
476 t_monvoln%IBAGJET(2, ii) = iflu(ii)
477 IF (itemp(ii) == 0) THEN
478 t_monvoln%IBAGJET(3, ii) = 0
479 ELSE
480 found = .false.
481 DO jj = 1, nfunct
482 IF (itemp(ii) == npc(jj)) THEN
483 t_monvoln%IBAGJET(3, ii) = jj
484 found = .true.
485 EXIT
486 ENDIF
487 ENDDO
488 IF (.NOT. found) THEN
489 CALL ancmsg(msgid = 11, anmode = aninfo, msgtype = msgerror,
490 . i2 = itemp(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
491 ENDIF
492 ENDIF
493
494 IF (ijet(ii) > 0) THEN
495 t_monvoln%IBAGJET(5, ii) =
usr2sys(nj1(ii), itabm1, mess, t_monvoln%ID)
496 t_monvoln%IBAGJET(6, ii) =
usr2sys(nj2(ii), itabm1, mess, t_monvoln%ID)
497 IF(nj3(ii) /= 0) THEN
498 t_monvoln%IBAGJET(7, ii) =
usr2sys(nj3(ii), itabm1, mess, t_monvoln%ID)
499 ENDIF
500 found = .false.
501 DO jj= 1, nfunct
502 IF (ipt(ii) == npc(jj)) THEN
503 t_monvoln%IBAGJET(8, ii) = jj
504 found = .true.
505 EXIT
506 ENDIF
507 ENDDO
508 IF (.NOT. found) THEN
509 CALL ancmsg(msgid = 12, anmode = aninfo, msgtype = msgerror,
510 . i2 = ipt(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
511 ENDIF
512 found = .false.
513 DO jj = 1, nfunct
514 IF (ipa(ii) == npc(jj)) THEN
515 t_monvoln%IBAGJET(9, ii) = jj
516 found = .true.
517 EXIT
518 ENDIF
519 ENDDO
520 IF (.NOT. found) THEN
521 CALL ancmsg(msgid = 13, anmode = aninfo, msgtype = msgerror,
522 . i2 = ipa(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
523 ENDIF
524 found = .false.
525 DO jj = 1, nfunct
526 IF (ipz(ii) == npc(jj)) THEN
527 t_monvoln%IBAGJET(10, ii) = jj
528 found = .true.
529 EXIT
530 ENDIF
531 ENDDO
532 IF (.NOT. found) THEN
533 CALL ancmsg(msgid = 14, anmode = aninfo, msgtype = msgerror,
534 . i2 = ipz(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
535 ENDIF
536 ENDIF
537 cpg = cpa(ii) + ti * (cpb(ii) + cpc(ii) * ti)
538 rmwg = cpg * (gama(ii) - one) / gama(ii)
539 t_monvoln%RBAGJET(1, ii) = rmwg
540 IF (nj1(ii) == 0) THEN
541 ijet(ii) = 0
542 ELSE
543 ijet(ii) = 1
544 ENDIF
545 IF (nj3(ii) == 0) THEN
546 t_monvoln%IBAGJET(7, ii) = t_monvoln%IBAGJET(5, ii)
547 ENDIF
548 ENDDO
549
550 DO ii = 1, nvent
551 t_monvoln%IBAGHOL(13, ii) = 0
552 t_monvoln%RBAGHOL(7, ii) = fport(ii)
553 t_monvoln%RBAGHOL(8, ii) = fporp(ii)
554 t_monvoln%RBAGHOL(9, ii) = fpora(ii)
555 t_monvoln%RBAGHOL(10, ii) = fport1(ii)
556 t_monvoln%RBAGHOL(11, ii) = fporp1(ii)
557 t_monvoln%RBAGHOL(12, ii) = fpora1(ii)
558 t_monvoln%IBAGHOL(1, ii) = 0
559 t_monvoln%IBAGHOL(10, ii) = ifvent(ii)
560 t_monvoln%IBAGHOL(11, ii) = idtpdef(ii)
561 t_monvoln%IBAGHOL(12, ii) = 0
562 IF (ipvent(ii) == 0) THEN
563 t_monvoln%IBAGHOL(2, ii) = 0
564 ELSE
565 t_monvoln%IBAGHOL(2, ii) = 0
566 found = .false.
567 DO jj = 1, nsurf
568 IF (ipvent(ii) == igrsurf(jj)%ID) THEN
569 t_monvoln%IBAGHOL(2, ii) = jj
570 found = .true.
571 EXIT
572 ENDIF
573 ENDDO
574 IF(.NOT. found)THEN
575 CALL ancmsg(msgid = 532, anmode = aninfo, msgtype = msgerror,
576 . i2 = ipvent(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
577 ELSEIF(igrsurf(t_monvoln%IBAGHOL(2, ii))%ISH4N3N == 0) THEN
578 CALL ancmsg(msgid = 330, anmode = aninfo, msgtype = msgerror,
579 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
580 ENDIF
581 IF (avent(ii) == zero) avent(ii) = one
582 ENDIF
583 IF (avent(ii) == zero) dpdef(ii) = infinity
584 IF (avent(ii) == zero) tvent(ii) = infinity
585 IF (dpdef(ii) == zero .AND. dtpdef(ii) == zero .AND. tvent(ii) == zero) THEN
586 t_monvoln%IBAGHOL(1, ii) = 1
587 ENDIF
588 t_monvoln%RBAGHOL(1, ii) = dpdef(ii)
589 t_monvoln%RBAGHOL(2, ii) = avent(ii)
590 t_monvoln%RBAGHOL(3, ii) = tvent(ii)
591 t_monvoln%RBAGHOL(4, ii) = dtpdef(ii)
592 t_monvoln%RBAGHOL(6, ii) = bvent(ii)
593 IF (ivdp(ii) /= 0 .AND. fvdp(ii) == zero) fvdp(ii) = one
594 t_monvoln%RBAGHOL(13, ii) = fvdp(ii)
595 IF (tstope(ii) == zero) tstope(ii) = infinity
596 t_monvoln%RBAGHOL(14, ii) = tstope(ii)
597
598 t_monvoln%IBAGHOL(3, ii) = -1
599 t_monvoln%IBAGHOL(4, ii) = -1
600 t_monvoln%IBAGHOL(5, ii) = -1
601 t_monvoln%IBAGHOL(6, ii) = -1
602 t_monvoln%IBAGHOL(7, ii) = -1
603 t_monvoln%IBAGHOL(8, ii) = -1
604 t_monvoln%IBAGHOL(9, ii) = -1
605 DO jj = 1, nfunct
606 IF (iport(ii) == npc(jj)) t_monvoln%IBAGHOL(3, ii) = jj
607 IF (iporp(ii) == npc(jj)) t_monvoln%IBAGHOL(4, ii) = jj
608 IF (ipora(ii) == npc(jj)) t_monvoln%IBAGHOL(5, ii) = jj
609 IF (iport1(ii) == npc(jj)) t_monvoln%IBAGHOL(6, ii) = jj
610 IF (iporp1(ii) == npc(jj)) t_monvoln%IBAGHOL(7, ii) = jj
611 IF (ipora1(ii) == npc(jj)) t_monvoln%IBAGHOL(8, ii) = jj
612 IF (ivdp(ii) == npc(jj)) t_monvoln%IBAGHOL(9, ii) = jj
613 ENDDO
614 IF (iport(ii) == 0) t_monvoln%IBAGHOL(3, ii) = 0
615 IF (iporp(ii) == 0) t_monvoln%IBAGHOL(4, ii) = 0
616 IF (ipora(ii) == 0) t_monvoln%IBAGHOL(5, ii) = 0
617 IF (iport1(ii) == 0) t_monvoln%IBAGHOL(6, ii) = 0
618 IF (iporp1(ii) == 0) t_monvoln%IBAGHOL(7, ii) = 0
619 IF (ipora1(ii) == 0) t_monvoln%IBAGHOL(8, ii) = 0
620 IF (ivdp(ii) == 0) t_monvoln%IBAGHOL(9, ii) = 0
621 IF (t_monvoln%IBAGHOL(3, ii) == -1) THEN
622 t_monvoln%IBAGHOL(3, ii) = 0
623 CALL ancmsg(msgid = 331, anmode = aninfo, msgtype = msgerror,
624 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iport(ii))
625 ENDIF
626 IF (t_monvoln%IBAGHOL(4, ii) == -1) THEN
627 t_monvoln%IBAGHOL(4, ii) = 0
628 CALL ancmsg(msgid = 332, anmode = aninfo, msgtype = msgerror,
629 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iporp(ii))
630 ENDIF
631 IF (t_monvoln%IBAGHOL(5, ii) == -1) THEN
632 t_monvoln%IBAGHOL(5, ii)=0
633 CALL ancmsg(msgid = 333, anmode = aninfo, msgtype = msgerror,
634 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ipora(ii))
635 ENDIF
636 IF (t_monvoln%IBAGHOL(6, ii) == -1) THEN
637 t_monvoln%IBAGHOL(6, ii) = 0
638 CALL ancmsg(msgid=331, anmode=aninfo, msgtype=msgerror,
639 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iport1(ii))
640 ENDIF
641 IF (t_monvoln%IBAGHOL(7, ii) == -1) THEN
642 t_monvoln%IBAGHOL(7, ii)=0
643 CALL ancmsg(msgid=332, anmode=aninfo, msgtype=msgerror,
644 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iporp1(ii))
645 ENDIF
646 IF (t_monvoln%IBAGHOL(8, ii) == -1) THEN
647 t_monvoln%IBAGHOL(8, ii) = 0
648 CALL ancmsg(msgid=333, anmode=aninfo, msgtype=msgerror,
649 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ipora1(ii))
650 ENDIF
651 IF (t_monvoln%IBAGHOL(9, ii) == -1) THEN
652 t_monvoln%IBAGHOL(9, ii) = 0
653 CALL ancmsg(msgid = 518, anmode = aninfo, msgtype = msgerror,
654 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ivdp(ii))
655 ENDIF
656 ENDDO
657
658 t_monvoln%RVOLU(2) = amu
659 t_monvoln%RVOLU(16) = vol + veps
660 t_monvoln%RVOLU(18) = sa
661 t_monvoln%RVOLU(21) = rot
662 t_monvoln%RVOLU(22:24) = zero
663
664
665
666
667 WRITE(iout, 1005) surfid
668 WRITE(iout, 1003) scal_t, scal_p, scal_s, scal_a, scal_d
669 WRITE(iout, 1002) sa, sv, vol
670 WRITE(iout, 1400) amu, ti, pext, pini
671 IF (iequi == 0) THEN
672 WRITE(iout, 1401)
673 ELSE
674 WRITE(iout, 1402)
675 ENDIF
676 WRITE(iout, 1410) gamai, cpai, cpbi, cpci
677 WRITE(iout,1420)
678 WRITE(iout,1421)njet
679 DO ii = 1, njet
680 WRITE(iout,1430) ii,
681 . imass(ii), iflu(ii), fmass(ii), itemp(ii), ftemp(ii), isens(ii)
682 WRITE(iout, 1440) gama(ii), cpa(ii), cpb(ii), cpc(ii)
683 WRITE(iout, 1450) ijet(ii)
684 IF (ijet(ii) > 0) THEN
685 IF (nj3(ii) == 0) THEN
686 WRITE(iout, 1460) nj1(ii), nj2(ii), ipt(ii), ipa(ii), ipz(ii),
687 . fpt(ii), fpa(ii), fpz(ii)
688 ELSE
689 WRITE(iout, 1461) nj1(ii), nj2(ii), nj3(ii), ipt(ii), ipa(ii), ipz(ii),
690 . fpt(ii), fpa(ii), fpz(ii)
691 ENDIF
692 ENDIF
693 ENDDO
694 WRITE(iout, 1470) nvent,ttfire
695 IF(nvent > 0) THEN
696 WRITE(iout, 1471) ittf
697 ENDIF
698 DO ii = 1, nvent
699 WRITE(iout,1472) ii, ipvent(ii)
700 IF (ipvent(ii) == 0 .AND. avent(ii) == zero) THEN
701 CALL ancmsg(msgid = 1019, msgtype = msgwarning, anmode = aninfo,
702 . i1 = t_monvoln%ID, i2 = ii, c1 = t_monvoln%TITLE, c2 = 'VENT HOLE SURFACE')
703 ENDIF
704 IF (ifvent(ii) <= 1) WRITE(iout, 1481)
705 IF (ifvent(ii) == 2) THEN
706 WRITE(iout, 1482) ivdp(ii), fvdp(ii)
707 ENDIF
708 IF (ifvent(ii) == 3) WRITE(iout, 1484)
709 IF (ifvent(ii) == 4) WRITE(iout, 1485)
710 IF (ipvent(ii) /= 0) THEN
712 t_monvoln%RBAGHOL(15, ii) = shol
713 WRITE(iout,1479)
714 . shol,avent(ii),bvent(ii),
715 . iport(ii),iporp(ii),ipora(ii),fport(ii),fporp(ii),fpora(ii),
716 . iport1(ii),iporp1(ii),ipora1(ii),fport1(ii),fporp1(ii),fpora1(ii)
717 WRITE(iout,1480) tvent(ii),dpdef(ii),dtpdef(ii),idtpdef(ii),tstope(ii)
718 ELSE
719 WRITE(iout,1489)
720 . avent(ii),bvent(ii),
721 . iport(ii),iporp(ii),ipora(ii),fport(ii),fporp(ii),fpora(ii),
722 . iport1(ii),iporp1(ii),ipora1(ii),fport1(ii),fporp1(ii),fpora1(ii)
723 WRITE(iout,1480) tvent(ii),dpdef(ii),dtpdef(ii),idtpdef(ii),tstope(ii)
724 ENDIF
725 ENDDO
726
727
728
729 IF (njet > 0) THEN
730 DEALLOCATE(gama, cpa, cpb, cpc)
731 DEALLOCATE(imass, iflu, fmass, itemp, ftemp, isens)
732 DEALLOCATE(ijet, nj1, nj2, nj3)
733 DEALLOCATE(ipt, ipa, ipz, fpt, fpa, fpz)
734 ENDIF
735 IF (nvent > 0) THEN
736 DEALLOCATE(tvent, dpdef, dtpdef, fvdp, avent, bvent, tstope)
737 DEALLOCATE(ipvent, ivdp, idtpdef, ifvent)
738 DEALLOCATE(iport, iporp, ipora, iport1, iporp1, ipora1)
739 DEALLOCATE(fport, fporp, fpora, fport1, fporp1, fpora1)
740 ENDIF
741
742
743
744
745 RETURN
746 1002 FORMAT(
747 . /5x,'INITIAL SURFACE OF MONITORED VOLUME . .=',1pg20.13,
748 . /5x,'SURFACE ERROR(NE.0 FOR NON CLOSED SURF)=',1pg20.13,
749 . /5x,'INITIAL VOLUME OF MONITORED VOLUME. . .=',1pg20.13)
750 1003 FORMAT(
751 . 5x,'UNIT SCALE FOR TIME FUNCTIONS =',1pg20.13,
752 . /5x,'UNIT SCALE FOR PRESSURE FUNCTIONS =',1pg20.13,
753 . /5x,'UNIT SCALE FOR AREA FUNCTIONS =',1pg20.13,
754 . /5x,'UNIT SCALE FOR ANGLE FUNCTIONS =',1pg20.13,
755 . /5x,'UNIT SCALE FOR DISTANCE FUNCTIONS =',1pg20.13)
756 1005 FORMAT( 5x,'EXTERNAL SURFACE ID . . . . . . . . . .=',i10)
757 1400 FORMAT(
758 . 5x,'VOLUMIC VISCOSITY . . . . . . . . . . .=',1pg20.13,
759 . /5x,'INITIAL TEMPERATURE . . . . . . . . . .=',1pg20.13,
760 . /5x,'EXTERNAL PRESSURE . . . . . . . . . . .=',1pg20.13,
761 . /5x,'INITIAL PRESSURE. . . . . . . . . . . .=',1pg20.13/)
762 1401 FORMAT(
763 . 5x,'INITIAL THERMODYNAMIC EQUILIBRIUM IS SET AT TIME 0'
764 . /5x,'--------------------------------------------------'/)
765 1402 FORMAT(
766 . 5x,'INITIAL THERMODYNAMIC EQUILIBRIUM IS SET AT INJECTION TIME'
767 . /5x,'----------------------------------------------------------'/)
768 1410 FORMAT(
769 . 5x,'CHARACTERISTICS OF INITIAL GAZ ',
770 . /5x,'------------------------------ ',
771 . /5x,'GAMMA AT INITIAL TEMPERATURE. . . . . .=',1pg20.13,
772 . /5x,'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,
773 . /5x,'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,
774 . /5x,'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13/)
775 1420 FORMAT(
776 . 5x,'INFLATORS ',
777 . /5x,'--------- ')
778 1421 FORMAT(
779 . 5x,'NUMBER OF INFLATORS . . . . . . . . . .=',i10/)
780 1430 FORMAT(
781 . 5x,'INFLATOR NUMBER . . . . . . . . . . . .=',i10,
782 . /15x,'TIME FUNCTION FOR INCOMING TOTAL MASS .=',i10,
783 . /15x,' or MASS FLUX if IFLU=1 . . . . IFLU =',i10,
784 . /15x,'SCALE FACTOR FOR INCOMING TOTAL MASS .=',1pg20.13,
785 . /15x,'TIME FUNCTION FOR INCOMIMG GAS TEMP . .=',i10,
786 . /15x,'SCALE FACTOR FOR INCOMIMG GAS TEMP . .=',1pg20.13,
787 . /15x,'SENSOR NUMBER . . . . . . . . . . . . .=',i10)
788 1440 FORMAT(
789 . /15x,'GAZ CHARACTERISTICS ',
790 . /15x,'------------------- ',
791 . /15x,'GAMMA AT INITIAL TEMPERATURE. . . . . .=',1pg20.13,
792 . /15x,'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,
793 . /15x,'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,
794 . /15x,'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13)
795 1450 FORMAT(
796 . /15x,'JETTING OPTION. . . . . . . . . . . . .=',i10,
797 . /15x,'----------------------------------------')
798 1460 FORMAT(
799 . 15x,'CONICAL JET . . . . . . . . . . . . . .',
800 . /15x,'NODE NUMBER DEFINING INJECTION CENTER .=',i10,
801 . /15x,'NODE NUMBER DEFINING INJECTION AXIS . .=',i10,
802 . /15x,'JETTING PRESSURE TIME CURVE NUMBER. . .=',i10,
803 . /15x,'JETTING PRESSURE THETA CURVE NUMBER . .=',i10,
804 . /15x,'JETTING PRESSURE DIST. CURVE NUMBER . .=',i10,
805 . /15x,'TIME FUNCTION SCALE FACTOR . .=',1pg20.13,
806 . /15x,'THETA FUNCTION SCALE FACTOR . .=',1pg20.13,
807 . /15x,'DIST FUNCTION SCALE FACTOR . .=',1pg20.13/)
808 1461 FORMAT(
809 . 15x,'DIHEDRAL JET. . . . . . . . . . . . . .',
810 . /15x,'NODE NUMBER DEFINING INJECTION CENTER .=',i10,
811 . /15x,'NODE NUMBER DEFINING INJECTION AXIS . .=',i10,
812 . /15x,'NODE NUMBER DEFINING BASE LINE. . . . .=',i10,
813 . /15x,'JETTING PRESSURE TIME CURVE NUMBER. . .=',i10,
814 . /15x,'JETTING PRESSURE THETA CURVE NUMBER . .=',i10,
815 . /15x,'JETTING PRESSURE DIST. CURVE NUMBER . .=',i10,
816 . /15x,'TIME FUNCTION SCALE FACTOR . .=',1pg20.13,
817 . /15x,'THETA FUNCTION SCALE FACTOR . .=',1pg20.13,
818 . /15x,'DIST FUNCTION SCALE FACTOR . .=',1pg20.13)
819 1470 FORMAT(
820 . /5x,'VENT HOLES AND POROUS FABRIC SURFACES ',
821 . /5x,'------------------------------------- ',
822 . /5x,'NUMBER OF VENT HOLES AND POROUS SURFACES . .=',i10,
823 . /5x,'INJECTION TIME TINJ. . . . . . . . . . . . .=',1pg20.13)
824 1471 FORMAT(
825 . 5x,'VENTING START TIME SHIFT . . . . . . . . . .=',i10,
826 . /5x,' 0 : NO SHIFT',
827 . /5x,' 1 : JETTING FUNCTIONS ARE SHIFTED BY INJECTION TIME',
828 . /5x,' 2 : JETTING AND VENTING FUNCTIONS ARE SHIFTED BY',
829 . /5x,' INJECTION TIME TINJ',
830 . /5x,' 3 : JETTING AND VENTING FUNCTIONS ARE SHIFTED',
831 . /5x,' BY TINJ FOR JETTING FUNCTIONS',
832 . /5x,' BY TINJ+TSTART FOR VENTING FUNCTIONS')
833 1472 FORMAT(
834 . / 5x,'VENT HOLE NUMBER. . . . . . . . . . . .=',i10,
835 . /15x,'VENT HOLE SURFACE ID. . . . . . . . . .=',i10)
836 1481 FORMAT(15x,'ISENTHALPIC VENTING MODEL ')
837 1482 FORMAT(15x,'CHEMKIN MODEL FOR POROSITY : ',
838 . /15x,'VELOCITY VS RELATIVE PRESSURE FUNCTION =',i10,
839 . /15x,' SCALE FACTOR. . . . . . .=',1pg20.13)
840 1484 FORMAT(15x,'GRAEFE POROSITY FORMULATION')
841 1485 FORMAT(15x,'ISENTHALPIC VENTING MODEL WITH POSSIBLE FLOW IN')
842 1479 FORMAT(
843 . 15x,'INITIAL SURFACE . . . . . . . . . . . .=',1pg20.13,
844 . /15x,'AVENT:VENT HOLE SCALE FACTOR. . . . . .=',1pg20.13,
845 . /15x,'BVENT:VENT HOLE SCALE FACTOR IF CONTACT=',1pg20.13,
846 . /15x,'POROSITY FUNCTION / TIME. . . . . . . .=',i10,
847 . /15x,'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
848 . /15x,'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
849 . /15x,'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
850 . /15x,'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
851 . /15x,'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13,
852 . /15x,'POROSITY FUNCTION / TIME(after contact)=',i10,
853 . /15x,'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
854 . /15x,'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
855 . /15x,'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
856 . /15x,'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
857 . /15x,'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13)
858 1480 FORMAT(
859 . 15x,'START TIME FOR VENTING TSTART . . . . .=',1pg20.13,
860 . /15x,'RELATIVE PRES. FOR MEMBRANE DEFLATION .=',1pg20.13,
861 . /15x,' (DPDEF = PDEF - PEXT) ',
862 . /15x,'TIME DELAY BEFORE MEMBRANE DEFLATION .=',1pg20.13,
863 . /15x,'TIME DELAY FLAG . . . . . . . . . . . .=',i10,
864 . /15x,' IF IDTPDEF : 0',
865 . /15x,' PRESSURE SHOULD BE OVER PDEF DURING',
866 . /15x,' A CUMULATED DTPDEF TIME'
867 . /15x,' BEFORE ACTIVATING DEFLATION'
868 . /15x,' IF IDTPDEF : 1',
869 . /15x,' DEFLATION START DTPDEF AFTER',
870 . /15x,' DPDEF HAS BEEN REACHED',
871 . /15x,'END TIME FOR VENTING TSTOP. . . . . . .=',1pg20.13)
872 1489 FORMAT(
873 . 15x,'AVENT:VENT HOLE AREA. . . . . . . . . .=',1pg20.13,
874 . /15x,'BVENT:VENT HOLE SCALE FACTOR IF CONTACT=',1pg20.13,
875 . /15x,'POROSITY FUNCTION / TIME. . . . . . . .=',i10,
876 . /15x,'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
877 . /15x,'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
878 . /15x,'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
879 . /15x,'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
880 . /15x,'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13,
881 . /15x,'POROSITY FUNCTION / TIME(after contact)=',i10,
882 . /15x,'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
883 . /15x,'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
884 . /15x,'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
885 . /15x,'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
886 . /15x,'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13)
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_float_array_index_dim(name, dim_fac, index, is_available, lsubmodel, unitab)
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_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine monvol_check_venthole_surf(ipri, t_monvoln, igrsurf, ihol, shol, x, ixc, ixtg)
subroutine monvol_compute_volume(t_monvoln, title, ivolu, surf, itab, node_coord, pm, geo, ixc, ixtg, sa, rot, vol, vmin, veps, sv)
subroutine monvol_check_surfclose(t_monvoln, itab, surf, x)
subroutine monvol_orient_surf(t_monvoln, title, ivolu, itab, surf, ixc, ixtg, x, itype)
subroutine monvol_reverse_normals(t_monvoln, title, ivolu, itab, surf, ixc, ixtg, vol, x, itype)
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)
integer function usr2sys(iu, itabm1, mess, id)