55 . UNITAB, LUID, NPC, IGRSURF, ITAB, X, PM, GEO, IXC, IXTG,
69#include "implicit_f.inc"
86 INTEGER,
INTENT(IN) :: LUID, ITABM1(*), NPT(*)
87 INTEGER,
INTENT(IN) :: NPC(*), ITAB(*), IXC(NIXC, *), IXTG(NIXTG, *)
88 my_real,
INTENT(IN) :: x(3, *), geo(npropg, *), pm(npropm, *),pld(2, *)
89 TYPE (SURF_),
INTENT(INOUT),
DIMENSION(NSURF) :: IGRSURF
92 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
93 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
99 my_real :: FAC_M, FAC_L, FAC_T, FAC_C, FAC_GEN
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,
104 INTEGER :: IEQUI, ITTF, NP, IP, IS, NJET,
105 my_real :: gamai, cpai, cpbi, cpci, cpi, cvi, rmwi, cpg, rmwg, rhoi, especi, ti2, mi,
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 INTEGER :: NCA, LCA, CHKSURF
114 INTEGER,
DIMENSION(:),
ALLOCATABLE :: COMM_ID, COMM_IPVENT
115 my_real,
DIMENSION(:),
ALLOCATABLE :: comm_dpdef, comm_avent, comm_tvent, comm_dtpdef
116 INTEGER :: NN, EXT_SURFID, JI, ITY, NN1, J1, JI1, ITY1, NEL
117 LOGICAL :: IS_AVAILABLE
126 mess =
'MONITORED VOLUME DEFINITION '
131 CALL hm_get_intv(
'surf_IDex', surfid, is_available, lsubmodel)
133 CALL hm_get_floatv(
'Ascalet', scal_t, is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'AscaleP', scal_p, is_available, lsubmodel
135 CALL hm_get_floatv(
'AscaleS', scal_s, is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'AscaleA', scal_a, is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'AscaleD', scal_d, is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'Mu', amu, is_available, lsubmodel, unitab)
140 CALL hm_get_floatv(
'Pext', pext, is_available, lsubmodel, unitab)
141 CALL hm_get_floatv(
'T0', ti, is_available, lsubmodel, unitab)
142 CALL hm_get_intv(
'Iequi', iequi, is_available, lsubmodel)
143 CALL hm_get_intv(
'Ittf', ittf, is_available, lsubmodel)
145 CALL hm_get_floatv(
'Gammai', gamai, is_available, lsubmodel, unitab)
146 CALL hm_get_floatv(
'cpai', cpai, is_available, lsubmodel, unitab)
147 CALL hm_get_floatv(
'cpbi', cpbi, is_available, lsubmodel, unitab)
148 CALL hm_get_floatv(
'cpci', cpci, is_available, lsubmodel, unitab)
150 CALL hm_get_intv(
'Njet', njet, is_available, lsubmodel)
151 t_monvoln%NJET = njet
152 t_monvoln%IVOLU(8) = njet
154 ALLOCATE(t_monvoln%IBAGJET(nibjet, njet))
155 t_monvoln%IBAGJET(1:nibjet, 1:njet) = 0
156 ALLOCATE(t_monvoln%RBAGJET(nrbjet, njet))
157 t_monvoln%RBAGJET(1:nrbjet, 1:njet) = zero
160 ALLOCATE(gama(njet), cpa(njet), cpb(njet), cpc(njet))
161 ALLOCATE(imass(njet), iflu(njet), fmass(njet), itemp(njet), ftemp(njet), isens(njet))
162 ALLOCATE(ijet(njet), nj1(njet), nj2(njet), nj3(njet))
163 ALLOCATE(ipt(njet), ipa(njet), ipz(njet), fpt(njet), fpa(njet), fpz(njet))
185 IF (ijet(ii) > 0)
THEN
196 CALL hm_get_intv(
'Nvent', nvent, is_available, lsubmodel)
197 t_monvoln%IVOLU(11) = nvent
198 t_monvoln%NVENT = nvent
200 ALLOCATE(t_monvoln%IBAGHOL(nibhol, nvent))
201 t_monvoln%IBAGHOL(1:nibhol, 1:nvent) = 0
202 ALLOCATE(t_monvoln%RBAGHOL(nrbhol, nvent))
203 t_monvoln%RBAGHOL(1:nrbhol, 1:nvent) = zero
206 ALLOCATE(tvent(nvent), dpdef(nvent), dtpdef(nvent), fvdp(nvent), avent(nvent),
207 . bvent(nvent), tstope(nvent))
208 ALLOCATE(ipvent(nvent), ivdp(nvent), idtpdef(nvent), ifvent(nvent))
209 ALLOCATE(iport(nvent), iporp(nvent), ipora(nvent), iport1(nvent),
210 . iporp1(nvent), ipora1(nvent))
211 ALLOCATE(fport(nvent), fporp(nvent), fpora(nvent), fport1(nvent),
212 . fporp1(nvent), fpora1(nvent))
223 CALL HM_GET_INT_ARRAY_INDEX('fct_idv
', IVDP(II), II,IS_AVAILABLE, LSUBMODEL)
224 CALL HM_GET_FLOAT_ARRAY_INDEX('fscalev
', FVDP(II), II, IS_AVAILABLE, LSUBMODEL, UNITAB)
225 CALL HM_GET_INT_ARRAY_INDEX('idtpdef
', IDTPDEF(II), II,IS_AVAILABLE, LSUBMODEL)
227 CALL HM_GET_INT_ARRAY_INDEX('fct_idt
', IPORT(II), II,IS_AVAILABLE, LSUBMODEL)
228 CALL HM_GET_INT_ARRAY_INDEX('fct_idp
', IPORP(II), II,IS_AVAILABLE, LSUBMODEL)
229 CALL HM_GET_INT_ARRAY_INDEX('fct_ida
', IPORA(II), II,IS_AVAILABLE, LSUBMODEL)
230 CALL HM_GET_FLOAT_ARRAY_INDEX('fscalet
', FPORT(II), II, IS_AVAILABLE, LSUBMODEL, UNITAB)
231 CALL HM_GET_FLOAT_ARRAY_INDEX('fscalep
', FPORP(II), II, IS_AVAILABLE, LSUBMODEL, UNITAB)
232 CALL HM_GET_FLOAT_ARRAY_INDEX('fscalea
', FPORA(II), II, IS_AVAILABLE, LSUBMODEL, UNITAB)
234 CALL HM_GET_INT_ARRAY_INDEX("fct_IDt'", IPORT1(II), II,IS_AVAILABLE, LSUBMODEL)
235 CALL HM_GET_INT_ARRAY_INDEX("fct_idp
'", IPORP1(II), II,IS_AVAILABLE, LSUBMODEL)
236 CALL HM_GET_INT_ARRAY_INDEX("fct_IDA'", IPORA1(II), II,IS_AVAILABLE, LSUBMODEL)
237 CALL HM_GET_FLOAT_ARRAY_INDEX("fscalet
'", FPORT1(II), II, IS_AVAILABLE, LSUBMODEL, UNITAB)
238 CALL HM_GET_FLOAT_ARRAY_INDEX("FscaleP'", FPORP1(II), II, IS_AVAILABLE, LSUBMODEL, UNITAB)
239 CALL HM_GET_FLOAT_ARRAY_INDEX("fscalea
'", FPORA1(II), II, IS_AVAILABLE, LSUBMODEL, UNITAB)
242! Specific cards communicating airbags
243 CALL HM_GET_INTV('nbag
', NCA, IS_AVAILABLE, LSUBMODEL)
246 T_MONVOLN%IVOLU(3) = NCA
248 ALLOCATE(COMM_ID(NCA), COMM_IPVENT(NCA))
249 ALLOCATE(COMM_DPDEF(NCA), COMM_AVENT(NCA), COMM_TVENT(NCA), COMM_DTPDEF(NCA))
251 CALL HM_GET_INT_ARRAY_INDEX('bag_id1
', COMM_ID(1), II,IS_AVAILABLE, LSUBMODEL)
252 CALL HM_GET_INT_ARRAY_INDEX('surf_id1
', COMM_IPVENT(1), II,IS_AVAILABLE, LSUBMODEL)
253 CALL HM_GET_FLOAT_ARRAY_INDEX('dpdiff1
', COMM_DPDEF(1), II, IS_AVAILABLE, LSUBMODEL, UNITAB)
254 CALL HM_GET_FLOAT_ARRAY_INDEX('acom1', comm_avent(1), ii, is_available, lsubmodel, unitab)
295 t_monvoln%IVOLU(4) = 0
298 IF (surfid == igrsurf(ii)%ID)
THEN
299 t_monvoln%IVOLU(4) = ii
300 t_monvoln%EXT_SURFID = ii
305 IF (.NOT. found)
THEN
307 ELSEIF (igrsurf(t_monvoln%IVOLU(4))%ISH4N3N == 0)
THEN
308 CALL ancmsg(msgid = 18, anmode = aninfo, msgtype = msgerror,
309 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = surfid)
317 . igrsurf(t_monvoln%EXT_SURFID),ixc, ixtg, x, 10)
320 . itab, x, pm, geo, ixc, ixtg,
321 . sa, rot, vol, vmin, veps, sv)
324 . igrsurf(t_monvoln%EXT_SURFID),ixc,ixtg,vol, x, 10)
327 IF (ittf < 0 .OR. ittf > 3)
THEN
328 CALL ancmsg(msgid = 773, anmode = aninfo, msgtype = msgerror
329 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
334 fac_m = unitab%FAC_M(luid)
335 fac_l = unitab%FAC_L(luid)
336 fac_t = unitab%FAC_T(luid)
337 fac_c = fac_m / (fac_l * fac_t
342 IF (scal_t == zero)
THEN
344 scal_t = one * fac_gen
346 IF (scal_p == zero)
THEN
348 scal_p = one * fac_gen
350 IF (scal_s == zero)
THEN
352 scal_s = one * fac_gen
354 IF (scal_a == zero)
THEN
356 scal_a = one * fac_gen
358 IF (scal_d == zero)
THEN
360 scal_d = one * fac_gen
362 IF (amu == zero) amu = em02
363 IF(pext == zero)
THEN
364 pext = 101325.d0 * (unitab%FAC_L_WORK * unitab%FAC_T_WORK * unitab%FAC_T_WORK) / unitab%FAC_M_WORK
367 IF (ti == zero) ti = twohundred95
370 IF (imass(ii) /= 0 .AND. fmass(ii) == zero)
THEN
372 fmass(ii) = one * fac_gen
374 IF (itemp(ii) /= 0 .AND. ftemp(ii) == zero)
THEN
376 ftemp(ii) = one * fac_gen
378 IF (fpt(ii) == zero)
THEN
380 fpt(ii) = one * fac_gen
382 IF (fpa(ii) == zero)
THEN
384 fpa(ii) = one * fac_gen
386 IF (fpz(ii) == zero)
THEN
388 fpz(ii) = one * fac_gen
392 IF (ivdp(ii) > 0) ifvent(ii) = 2
393 IF (ipvent(ii) == 0)
THEN
396 IF (fport(ii) == zero) fport(ii) = one
397 IF (fporp(ii) == zero) fporp(ii) = one
398 IF (fpora(ii) == zero) fpora(ii) = one
399 IF (fport1(ii) == zero) fport1(ii) = one
400 IF (fporp1(ii) == zero) fporp1(ii) = one
401 IF (fpora1(ii) == zero) fpora1(ii) = one
404 cpi = cpai + ti * (cpbi + cpci * ti)
406 rmwi = cvi * (gamai - one)
407 mi = pini * (vol + veps) / (rmwi * ti)
410 IF (isens(ii) > 0)
THEN
412 DO is = 1, sensors%NSENSOR
413 IF (isens(ii) == sensors%SENSOR_TAB(is)%SENS_ID)
THEN
414 t_monvoln%IBAGJET(4, ii) = is
415 IF (sensors%SENSOR_TAB(is)%TCRIT < ttfire) ttfire = sensors%SENSOR_TAB(is)%TCRIT
420 IF (.NOT. found)
THEN
421 CALL ancmsg(msgid = 17, anmode = aninfo, msgtype = msgerror,
422 . i2 = isens(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
426 IF (ttfire == infinity)
THEN
433 t_monvoln%RVOLU(26) = one / scal_t
434 t_monvoln%RVOLU(27) = one / scal_p
435 t_monvoln%RVOLU(28) = one / scal_s
436 t_monvoln%RVOLU(29) = one / scal_a
437 t_monvoln%RVOLU(30) = one / scal_d
439 IF (iequi > 0) iequi = 1
440 t_monvoln%IVOLU(15) = iequi
441 t_monvoln%IVOLU(17) = ittf
442 t_monvoln%IVOLU(8) = njet
444 t_monvoln%RVOLU(31) = pini
445 t_monvoln%RVOLU(7) = cpai
446 t_monvoln%RVOLU(8) = cpbi
447 t_monvoln%RVOLU(9) = cpci
448 t_monvoln%RVOLU(10) = rmwi
449 t_monvoln%RVOLU(49) = ttfire
451 t_monvoln%RVOLU(1) = gamai
452 t_monvoln%RVOLU(3) = pext
453 t_monvoln%RVOLU(4) = vol+veps
454 t_monvoln%RVOLU(11) = mi
455 t_monvoln%RVOLU(12) = pini
456 t_monvoln%RVOLU(13) = ti
457 t_monvoln%RVOLU(14) = rmwi*mi
458 t_monvoln%RVOLU(17) = veps
459 t_monvoln%RVOLU(20) = mi
460 t_monvoln%RVOLU(25) = ti
461 t_monvoln%RVOLU(61) = gamai
462 rhoi = pini / (ti * rmwi)
463 t_monvoln%RVOLU(62) = rhoi
465 especi = ti * (cpai + half * cpbi * ti + third * cpci * ti2 - rmwi)
467 t_monvoln%RVOLU(63) = especi + rmwi * ti
468 t_monvoln%RVOLU(64) = zero
469 t_monvoln%RVOLU(65) = zero
470 t_monvoln%RVOLU(66) = especi
472 t_monvoln%IBAGJET(13, ii) = 0
473 t_monvoln%RBAGJET(1, ii) = gama(ii)
474 t_monvoln%RBAGJET(2, ii) = cpa(ii)
475 t_monvoln%RBAGJET(3, ii) = cpb(ii)
476 t_monvoln%RBAGJET(4, ii) = cpc(ii)
477 t_monvoln%RBAGJET(5, ii) = fmass(ii)
478 t_monvoln%RBAGJET(6, ii) = ftemp(ii)
479 t_monvoln%RBAGJET(12, ii) = fpt(ii)
480 t_monvoln%RBAGJET(13, ii) = fpa(ii)
481 t_monvoln%RBAGJET(14, ii) = fpz(ii)
482 IF (imass(ii) == 0)
THEN
483 t_monvoln%IBAGJET(1, ii) = 0
487 IF (imass(ii) == npc(jj))
THEN
488 t_monvoln%IBAGJET(1, ii) = jj
490 np = (npt(jj + 1) - npt(jj)) / 2
491 IF (iflu(ii) == 0)
THEN
492 DO ip = (npt(jj) - 1) / 2 + 1, (npt(jj + 1) - 1) / 2 - 1
493 IF (pld(2, ip + 1) < pld(2, ip)) decrease = .true.
496 CALL ancmsg(msgid=540, msgtype = msgwarning, anmode = aninfo_blind_1,
497 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = imass(ii), i3 = ii)
500 DO ip = (npt(jj) - 1) / 2 + 1, (npt(jj + 1) - 1) / 2
501 IF (pld(2, ip) < zero) decrease = .true.
504 CALL ancmsg(msgid = 541, msgtype = msgwarning, anmode = aninfo_blind_1,
505 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = imass(ii), i3 = ii)
512 IF (.NOT. found)
THEN
513 CALL ancmsg(msgid = 10, anmode = aninfo, msgtype = msgerror,
514 . i2 = imass(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
517 t_monvoln%IBAGJET(2, ii) = iflu(ii)
518 IF (itemp(ii) == 0)
THEN
519 t_monvoln%IBAGJET(3, ii) = 0
523 IF (itemp(ii) == npc(jj))
THEN
524 t_monvoln%IBAGJET(3, ii) = jj
529 IF (.NOT. found)
THEN
530 CALL ancmsg(msgid = 11, anmode = aninfo, msgtype = msgerror,
531 . i2 = itemp(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
535 IF (ijet(ii) > 0)
THEN
536 t_monvoln%IBAGJET(5, ii) = usr2sys(nj1(ii), itabm1, mess, t_monvoln%ID)
537 t_monvoln%IBAGJET(6, ii) = usr2sys(nj2(ii), itabm1, mess, t_monvoln%ID)
538 IF(nj3(ii) /= 0)
THEN
539 t_monvoln%IBAGJET(7, ii) = usr2sys(nj3(ii), itabm1, mess, t_monvoln%ID)
543 IF (ipt(ii) == npc(jj))
THEN
544 t_monvoln%IBAGJET(8, ii) = jj
549 IF (.NOT. found)
THEN
550 CALL ancmsg(msgid = 12, anmode = aninfo, msgtype = msgerror,
551 . i2 = ipt(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
555 IF (ipa(ii) == npc(jj))
THEN
556 t_monvoln%IBAGJET(9, ii) = jj
561 IF (.NOT. found)
THEN
562 CALL ancmsg(msgid = 13, anmode = aninfo, msgtype = msgerror,
563 . i2 = ipa(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
567 IF (ipz(ii) == npc(jj))
THEN
568 t_monvoln%IBAGJET(10, ii) = jj
573 IF (.NOT. found)
THEN
574 CALL ancmsg(msgid = 14, anmode = aninfo, msgtype = msgerror,
575 . i2 = ipz(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
578 cpg = cpa(ii) + ti * (cpb(ii) + cpc(ii) * ti)
580 t_monvoln%RBAGJET(1, ii) = rmwg
581 IF (nj1(ii) == 0)
THEN
586 IF (nj3(ii) == 0)
THEN
587 t_monvoln%IBAGJET(7, ii) = t_monvoln%IBAGJET(5, ii)
592 t_monvoln%IBAGHOL(13, ii) = 0
593 t_monvoln%RBAGHOL(7, ii) = fport(ii)
594 t_monvoln%RBAGHOL(8, ii) = fporp(ii)
595 t_monvoln%RBAGHOL(9, ii) = fpora(ii)
596 t_monvoln%RBAGHOL(10, ii) = fport1(ii)
597 t_monvoln%RBAGHOL(11, ii) = fporp1(ii)
598 t_monvoln%RBAGHOL(12, ii) = fpora1(ii)
599 t_monvoln%IBAGHOL(1, ii) = 0
600 t_monvoln%IBAGHOL(10, ii) = ifvent(ii)
601 t_monvoln%IBAGHOL(11, ii) = idtpdef(ii)
602 t_monvoln%IBAGHOL(12, ii) = 0
603 IF (ipvent(ii) == 0)
THEN
604 t_monvoln%IBAGHOL(2, ii) = 0
606 t_monvoln%IBAGHOL(2, ii) = 0
609 IF (ipvent(ii) == igrsurf(jj)%ID)
THEN
610 t_monvoln%IBAGHOL(2, ii) = jj
616 CALL ancmsg(msgid = 532, anmode = aninfo, msgtype = msgerror,
617 . i2 = ipvent(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
618 ELSEIF(igrsurf(t_monvoln%IBAGHOL(2, ii))%ISH4N3N == 0)
THEN
619 CALL ancmsg(msgid = 330, anmode = aninfo, msgtype = msgerror,
620 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
622 IF (avent(ii) == zero) avent(ii) = one
624 IF (avent(ii) == zero) dpdef(ii) = infinity
625 IF (avent(ii) == zero) tvent(ii) = infinity
626 IF (dpdef(ii) == zero .AND. dtpdef(ii) == zero .AND. tvent(ii) == zero)
THEN
627 t_monvoln%IBAGHOL(1, ii) = 1
629 t_monvoln%RBAGHOL(1, ii) = dpdef(ii)
630 t_monvoln%RBAGHOL(2, ii) = avent(ii)
631 t_monvoln%RBAGHOL(3, ii) = tvent(ii)
632 t_monvoln%RBAGHOL(4, ii) = dtpdef(ii)
633 t_monvoln%RBAGHOL(6, ii) = bvent(ii)
634 IF (ivdp(ii) /= 0 .AND. fvdp(ii) == zero) fvdp(ii) = one
635 t_monvoln%RBAGHOL(13, ii) = fvdp(ii)
636 IF (tstope(ii) == zero) tstope(ii) = infinity
637 t_monvoln%RBAGHOL(14, ii) = tstope(ii)
639 t_monvoln%IBAGHOL(3, ii) = -1
640 t_monvoln%IBAGHOL(4, ii) = -1
641 t_monvoln%IBAGHOL(5, ii) = -1
642 t_monvoln%IBAGHOL(6, ii) = -1
643 t_monvoln%IBAGHOL(7, ii) = -1
644 t_monvoln%IBAGHOL(8, ii) = -1
645 t_monvoln%IBAGHOL(9, ii) = -1
647 IF (iport(ii) == npc(jj)) t_monvoln%IBAGHOL(3, ii) = jj
648 IF (iporp(ii) == npc(jj)) t_monvoln%IBAGHOL(4, ii) = jj
649 IF (ipora(ii) == npc(jj)) t_monvoln%IBAGHOL(5, ii) = jj
650 IF (iport1(ii) == npc(jj)) t_monvoln%IBAGHOL(6, ii) = jj
651 IF (iporp1(ii) == npc(jj)) t_monvoln%IBAGHOL(7, ii) = jj
652 IF (ipora1(ii) == npc(jj)) t_monvoln%IBAGHOL(8, ii) = jj
653 IF (ivdp(ii) == npc(jj)) t_monvoln%IBAGHOL(9, ii) = jj
655 IF (iport(ii) == 0) t_monvoln%IBAGHOL(3, ii) = 0
656 IF (iporp(ii) == 0) t_monvoln%IBAGHOL(4, ii) = 0
657 IF (ipora(ii) == 0) t_monvoln%IBAGHOL(5, ii) = 0
658 IF (iport1(ii) == 0) t_monvoln%IBAGHOL
659 IF (iporp1(ii) == 0) t_monvoln%IBAGHOL(7, ii) = 0
660 IF (ipora1(ii) == 0) t_monvoln%IBAGHOL(8, ii) = 0
661 IF (ivdp(ii) == 0) t_monvoln%IBAGHOL(9, ii) = 0
662 IF (t_monvoln%IBAGHOL(3, ii) == -1)
THEN
663 t_monvoln%IBAGHOL(3, ii) = 0
664 CALL ancmsg(msgid = 331, anmode = aninfo, msgtype = msgerror,
665 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iport(ii))
667 IF (t_monvoln%IBAGHOL(4, ii) == -1)
THEN
668 t_monvoln%IBAGHOL(4, ii) = 0
669 CALL ancmsg(msgid = 332, anmode = aninfo, msgtype = msgerror,
670 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iporp(ii))
672 IF (t_monvoln%IBAGHOL(5, ii) == -1)
THEN
673 t_monvoln%IBAGHOL(5, ii)=0
674 CALL ancmsg(msgid = 333, anmode = aninfo, msgtype = msgerror,
675 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ipora(ii))
677 IF (t_monvoln%IBAGHOL(6, ii) == -1)
THEN
678 t_monvoln%IBAGHOL(6, ii) = 0
679 CALL ancmsg(msgid=331, anmode=aninfo, msgtype=msgerror,
680 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iport1(ii))
682 IF (t_monvoln%IBAGHOL(7, ii) == -1)
THEN
683 t_monvoln%IBAGHOL(7, ii)=0
684 CALL ancmsg(msgid=332, anmode=aninfo, msgtype=msgerror,
685 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iporp1(ii))
687 IF (t_monvoln%IBAGHOL(8, ii) == -1)
THEN
688 t_monvoln%IBAGHOL(8, ii) = 0
689 CALL ancmsg(msgid=333, anmode=aninfo, msgtype=msgerror,
690 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ipora1(ii))
692 IF (t_monvoln%IBAGHOL(9, ii) == -1)
THEN
693 t_monvoln%IBAGHOL(9, ii) = 0
694 CALL ancmsg(msgid = 518, anmode = aninfo, msgtype = msgerror,
695 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ivdp(ii))
700 lca = t_monvol_metadata%LCA
703 t_monvol_metadata%ICBAG(1, ii + lca) = comm_id(ii)
704 t_monvol_metadata%ICBAG(2, ii + lca) = 0
705 t_monvol_metadata%ICBAG(3, ii + lca) = 0
706 t_monvol_metadata%ICBAG(4, ii + lca) = 0
707 IF (comm_avent(ii) < zero)
THEN
708 CALL ancmsg(msgid = 1002, anmode = aninfo, msgtype = msgerror,
709 . i1 = t_monvoln%ID, i2 = comm_id(ii), r1 = comm_avent(ii))
711 IF (comm_ipvent(ii) /= 0)
THEN
712 IF (comm_avent(ii) == zero) comm_avent(ii) = one
714 IF (comm_ipvent(ii) == igrsurf(jj)%ID)
THEN
715 t_monvol_metadata%ICBAG(2, ii + lca) = jj
718 IF (t_monvol_metadata%ICBAG(2, ii + lca) == 0)
THEN
719 CALL ancmsg(msgid = 532, anmode = aninfo, msgtype = msgerror,
720 . i2 = comm_ipvent(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
721 ELSEIF (igrsurf(t_monvol_metadata%ICBAG(2, ii + lca))%ISH4N3N == 0)
THEN
722 CALL ancmsg(msgid = 18, anmode = aninfo, msgtype = msgerror,
723 . i2 = igrsurf(t_monvol_metadata%ICBAG(2, ii + lca))%ID, i1 = t_monvoln%ID,
724 . c1 = t_monvoln%TITLE)
729 nn = igrsurf(t_monvol_metadata%ICBAG(2, ii + lca))%NSEG
730 ext_surfid = t_monvoln%EXT_SURFID
732 ji = igrsurf(t_monvol_metadata%ICBAG(2, ii + lca))%ELEM(jj)
733 ity = igrsurf(t_monvol_metadata%ICBAG(2 ,ii + lca))%ELTYP(jj)
736 ELSEIF (ity /= 3)
THEN
737 ji = jj + numelc + numeltg
739 nn1 = igrsurf(ext_surfid)%NSEG
742 ji1 = igrsurf(ext_surfid)%ELEM(j1)
743 ity1 = igrsurf(ext_surfid)%ELTYP(j1)
746 ELSEIF (ity1 /= 3)
THEN
747 ji1 = j1 + numelc + numeltg
754 IF (.NOT. found) chksurf = 1
755 IF (ipri >= 5 .AND. .NOT. found)
THEN
758 WRITE(iout,
'(A,I10,A,I10,A,I10)')
759 .
' ERROR : SHELL ELEMENT ID=',nel,
760 .
' OF COMMUNICATING SURFACE ID=',
761 . igrsurf(t_monvol_metadata%ICBAG(2,ii + lca))%ID,
762 .
' IS NOT INCLUDED INTO AIRBAG SURFACE ID=',
763 . igrsurf(ext_surfid)%ID
765 nel=ixtg(nixtg,ji-numelc)
766 WRITE(iout,
'(A,I10,A,I10,A,I10)')
767 .
' ERROR : SH3N ELEMENT ID=',nel,
768 .
' OF COMMUNICATING SURFACE ID=',
769 . igrsurf(t_monvol_metadata%ICBAG(2, ii + lca))%ID,
770 .
' IS NOT INCLUDED INTO AIRBAG SURFACE ID=',
771 . igrsurf(ext_surfid)%ID
777 t_monvol_metadata%ICBAG(3, ii + lca) = 0
778 IF((comm_dpdef(ii) == zero .AND. comm_dtpdef(ii) == zero) .OR. comm_tvent(ii) == zero)
779 . t_monvol_metadata%ICBAG(3, ii + lca) = 1
780 t_monvol_metadata%RCBAG(1, ii + lca) = comm_dpdef(ii)
781 t_monvol_metadata%RCBAG(2, ii + lca) = comm_avent(ii)
782 t_monvol_metadata%RCBAG(3, ii + lca) = comm_tvent(ii)
783 t_monvol_metadata%RCBAG(4, ii + lca) = comm_dtpdef(ii)
784 IF (chksurf == 1)
THEN
785 CALL ancmsg(msgid = 902, anmode = aninfo, msgtype = msgerror,
786 . i2 = igrsurf(t_monvol_metadata%ICBAG(2, ii + lca))%ID, i3 = igrsurf(ext_surfid)%ID,
787 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
793 t_monvol_metadata%LCA = lca
795 t_monvoln%RVOLU(2) = amu
796 t_monvoln%RVOLU(16) = vol + veps
797 t_monvoln%RVOLU(18) = sa
798 t_monvoln%RVOLU(21) = rot
799 t_monvoln%RVOLU(22:24) = zero
804 WRITE(iout, 1005) surfid
805 WRITE(iout, 1003) scal_t, scal_p, scal_s, scal_a, scal_d
806 WRITE(iout, 1002) sa, sv, vol
807 WRITE(iout, 1400) amu, ti, pext, pini
813 WRITE(iout, 1410) gamai, cpai, cpbi, cpci
818 . imass(ii), iflu(ii), fmass(ii), itemp(ii), ftemp(ii), isens(ii)
819 WRITE(iout, 1440) gama(ii), cpa(ii), cpb(ii), cpc(ii)
820 WRITE(iout, 1450) ijet(ii)
821 IF (ijet(ii) > 0)
THEN
822 IF (nj3(ii) == 0)
THEN
823 WRITE(iout, 1460) nj1(ii), nj2(ii), ipt(ii), ipa(ii), ipz(ii),
824 . fpt(ii), fpa(ii), fpz(ii)
826 WRITE(iout, 1461) nj1(ii), nj2(ii), nj3(ii), ipt(ii), ipa(ii), ipz(ii),
827 . fpt(ii), fpa(ii), fpz(ii)
831 WRITE(iout, 1470) nvent,ttfire
833 WRITE(iout, 1471) ittf
836 WRITE(iout,1472) ii, ipvent(ii)
837 IF (ipvent(ii) == 0 .AND. avent(ii) == zero)
THEN
838 CALL ancmsg(msgid = 1019, msgtype = msgwarning, anmode = aninfo,
839 . i1 = t_monvoln%ID, i2 = ii, c1 = t_monvoln%TITLE, c2 =
'VENT HOLE SURFACE')
841 IF (ifvent(ii) <= 1)
WRITE(iout, 1481)
842 IF (ifvent(ii) == 2)
THEN
843 WRITE(iout, 1482) ivdp(ii), fvdp(ii)
845 IF (ifvent(ii) == 3)
WRITE(iout, 1484)
846 IF (ifvent(ii) == 4)
WRITE(iout, 1485)
847 IF (ipvent(ii) /= 0)
THEN
849 t_monvoln%RBAGHOL(15, ii) = shol
851 . shol,avent(ii),bvent(ii),
852 . iport(ii),iporp(ii),ipora(ii),fport(ii),fporp(ii),fpora(ii),
853 . iport1(ii),iporp1(ii),ipora1(ii),fport1(ii),fporp1(ii),fpora1(ii)
854 WRITE(iout,1480) tvent(ii),dpdef(ii),dtpdef(ii),idtpdef(ii),tstope(ii)
857 . avent(ii),bvent(ii),
858 . iport(ii),iporp(ii),ipora(ii),fport(ii),fporp(ii),fpora(ii),
859 . iport1(ii),iporp1(ii),ipora1(ii),fport1(ii),fporp1(ii),fpora1(ii)
860 WRITE(iout,1480) tvent(ii),dpdef(ii),dtpdef(ii),idtpdef(ii),tstope(ii)
863 WRITE(iout, 1500) nca
865 WRITE(iout, 1510) comm_id(ii), comm_ipvent(ii), comm_dpdef(ii), comm_dtpdef(ii), comm_avent(ii),
866 . comm_tvent(ii), 0, 0, zero, zero
872 DEALLOCATE(gama, cpa, cpb, cpc)
873 DEALLOCATE(imass, iflu, fmass, itemp, ftemp, isens)
874 DEALLOCATE(ijet, nj1, nj2, nj3)
875 DEALLOCATE(ipt, ipa, ipz, fpt, fpa, fpz)
878 DEALLOCATE(tvent, dpdef, dtpdef, fvdp, avent, bvent, tstope)
879 DEALLOCATE(ipvent, ivdp, idtpdef, ifvent)
880 DEALLOCATE(iport, iporp, ipora, iport1, iporp1, ipora1)
881 DEALLOCATE(fport, fporp, fpora, fport1, fporp1, fpora1)
884 DEALLOCATE(comm_id, comm_ipvent)
885 DEALLOCATE(comm_dpdef, comm_avent, comm_tvent, comm_dtpdef)
893 . /5x,
'INITIAL SURFACE OF MONITORED VOLUME . .=',1pg20.13,
894 . /5x,
'SURFACE ERROR(NE.0 FOR NON CLOSED SURF)=',1pg20.13,
895 . /5x,
'INITIAL VOLUME OF MONITORED VOLUME. . .=',1pg20.13)
897 . 5x,
'UNIT SCALE FOR TIME FUNCTIONS =',1pg20.13,
898 . /5x,
'UNIT SCALE FOR PRESSURE FUNCTIONS =',1pg20.13,
899 . /5x,
'UNIT SCALE FOR AREA FUNCTIONS =',1pg20.13,
900 . /5x,
'UNIT SCALE FOR ANGLE FUNCTIONS =',1pg20.13,
901 . /5x,
'UNIT SCALE FOR DISTANCE FUNCTIONS =',1pg20.13)
902 1005
FORMAT( 5x,
'EXTERNAL SURFACE ID . . . . . . . . . .=',i10)
904 . 5x,
'VOLUMIC VISCOSITY . . . . . . . . . . .=',1pg20.13,
905 . /5x,'initial temperature . . . . . . . . . .=
',1PG20.13,
906 . /5X,'EXTERNAL pressure . . . . . . . . . . .=
',1PG20.13,
907 . /5X,'initial pressure. . . . . . . . . . . .=
',1PG20.13/)
909 . 5X,'initial thermodynamic equilibrium is set at time 0
'
910 . /5X,'--------------------------------------------------
'/)
912 . 5X,'initial thermodynamic equilibrium is set at injection time
'
913 . /5X,'----------------------------------------------------------
'/)
915 . 5X,'characteristics of initial gaz
',
916 . /5X,'------------------------------
',
917 . /5X,'gamma at initial temperature. . . . . .=
',1PG20.13,
918 . /5X,'coefficient cpa . . . . . . . . . . . .=
',1PG20.13,
919 . /5X,'coefficient cpb . . . . . . . . . . . .=
',1PG20.13,
920 . /5X,'coefficient cpc . . . . . . . . . . . .=
',1PG20.13/)
925 . 5X,'number of inflators . . . . . . . . . .=
',I10/)
927 . 5X,'inflator number . . . . . . . . . . . .=
',I10,
928 . /15X,'time
FUNCTION for incoming total mass .=
',I10,
929 . /15X,' or mass flux
if iflu=1 . . . . iflu =
',I10,
930 . /15X,'scale factor
for incoming total mass .=
',1PG20.13,
931 . /15X,'time function
for incomimg gas temp . .=
',I10,
932 . /15X,'scale factor
for incomimg gas temp . .=
',1PG20.13,
933 . /15X,'sensor number . . . . . . . . . . . . .=
',I10)
935 . /15X,'gaz characteristics
',
936 . /15X,'-------------------
',
937 . /15X,'gamma at initial temperature. . . . . .=
',1PG20.13,
938 . /15X,'coefficient cpa . . . . . . . . . . . .=
',1PG20.13,
939 . /15X,'coefficient cpb . . . . . . . . . . . .=
',1PG20.13,
940 . /15X,'coefficient cpc . . . . . . . . . . . .=
',1PG20.13)
942 . /15X,'jetting option. . . . . . . . . . . . .=
',I10,
943 . /15X,'----------------------------------------
')
945 . 15X,'conical jet . . . . . . . . . . . . . .
',
946 . /15X,'node number defining injection center .=
',I10,
947 . /15X,'node number defining injection axis . .=',i10,
948 . /15x,
'JETTING PRESSURE TIME CURVE NUMBER. . .=',i10,
949 . /15x,
'JETTING PRESSURE THETA CURVE NUMBER . .=',i10,
950 . /15x,
'JETTING PRESSURE DIST. CURVE NUMBER . .=',i10,
951 . /15x,
'TIME FUNCTION SCALE FACTOR . .=',1pg20.13,
952 . /15x,
'THETA FUNCTION SCALE FACTOR . .=',1pg20.13,
953 . /15x,
'DIST FUNCTION SCALE FACTOR . .=',1pg20.13/)
955 . 15x,
'DIHEDRAL JET. . . . . . . . . . . . . .',
956 . /15x,
'NODE NUMBER DEFINING INJECTION CENTER .=',i10,
957 . /15x,
'NODE NUMBER DEFINING INJECTION AXIS . .=',i10,
958 . /15x,
'NODE NUMBER DEFINING BASE LINE. . . . .=',i10,
959 . /15x,
'JETTING PRESSURE TIME CURVE NUMBER. . .=',i10,
960 . /15x,
'JETTING PRESSURE THETA CURVE NUMBER . .=',i10,
961 . /15x,
'JETTING PRESSURE DIST. CURVE NUMBER . .=',i10,
962 . /15x,
'TIME FUNCTION SCALE FACTOR . .=',1pg20.13,
963 . /15x,
'THETA FUNCTION SCALE FACTOR . .=',1pg20.13,
964 . /15x,
'DIST FUNCTION SCALE FACTOR . .=',1pg20.13)
966 . /5x,
'VENT HOLES AND POROUS FABRIC SURFACES ',
967 . /5x,
'------------------------------------- ',
968 . /5x,
'NUMBER OF VENT HOLES AND POROUS SURFACES . .=',i10,
969 . /5x,
'INJECTION TIME TINJ. . . . . . . . . . . . .=',1pg20.13)
971 . 5x,
'VENTING START TIME SHIFT . . . . . . . . . .=',i10,
972 . /5x,
' 0 : NO SHIFT',
973 . /5x,
' 1 : JETTING FUNCTIONS ARE SHIFTED BY INJECTION TIME',
974 . /5x,
' 2 : JETTING AND VENTING FUNCTIONS ARE SHIFTED BY',
975 . /5x,
' INJECTION TIME TINJ',
976 . /5x,
' 3 : JETTING AND VENTING FUNCTIONS ARE SHIFTED',
977 . /5x,
' BY TINJ FOR JETTING FUNCTIONS',
978 . /5x,
' BY TINJ+TSTART FOR VENTING FUNCTIONS')
980 . / 5x,
'VENT HOLE NUMBER. . . . . . . . . . . .=',i10,
981 . /15x,
'VENT HOLE SURFACE ID. . . . . . . . . .=',i10)
982 1481
FORMAT(15x,
'ISENTHALPIC VENTING MODEL ')
983 1482
FORMAT(15x,
'CHEMKIN MODEL FOR POROSITY : ',
984 . /15x,
'VELOCITY VS RELATIVE PRESSURE FUNCTION =',i10,
985 . /15x,
' SCALE FACTOR. . . . . . .=',1pg20.13)
986 1484
FORMAT(15x,
'GRAEFE POROSITY FORMULATION')
987 1485
FORMAT(15x,
'ISENTHALPIC VENTING MODEL WITH POSSIBLE FLOW IN')
989 . 15x,
'INITIAL SURFACE . . . . . . . . . . . .=',1pg20.13,
990 . /15x,
'AVENT:VENT HOLE SCALE FACTOR. . . . . .=',1pg20.13,
991 . /15x,
'BVENT:VENT HOLE SCALE FACTOR IF CONTACT=',1pg20.13,
992 . /15x,
'POROSITY FUNCTION / TIME. . . . . . . .=',i10,
993 . /15x,
'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
994 . /15x,
'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
995 . /15x,
'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
996 . /15x,
'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
997 . /15x,
'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13,
998 . /15x,
'POROSITY FUNCTION / TIME(after contact)=',i10,
999 . /15x,
'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
1000 . /15x,
'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
1001 . /15x,
'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
1002 . /15x,
'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
1003 . /15x,
'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13)
1005 . 15x,
'START TIME FOR VENTING TSTART . . . . .=',1pg20.13,
1006 . /15x,
'RELATIVE PRES. FOR MEMBRANE DEFLATION .=',1pg20.13,
1007 . /15x,
' (DPDEF = PDEF - PEXT) ',
1008 . /15x,
'TIME DELAY BEFORE MEMBRANE DEFLATION .=',1pg20.13,
1009 . /15x,
'TIME DELAY FLAG . . . . . . . . . . . .=',i10,
1010 . /15x,
' IF IDTPDEF : 0',
1011 . /15x,
' PRESSURE SHOULD BE OVER PDEF DURING',
1012 . /15x,
' A CUMULATED DTPDEF TIME'
1013 . /15x,
' BEFORE ACTIVATING DEFLATION'
1014 . /15x,
' IF IDTPDEF : 1',
1015 . /15x,
' DEFLATION START DTPDEF AFTER',
1016 . /15x,
' DPDEF HAS BEEN REACHED',
1017 . /15x,
'END TIME FOR VENTING TSTOP. . . . . . .=',1pg20.13)
1019 . 15x,
'AVENT:VENT HOLE AREA. . . . . . . . . .=',1pg20.13,
1020 . /15x,
'BVENT:VENT HOLE SCALE FACTOR IF CONTACT=',1pg20.13,
1021 . /15x,
'POROSITY FUNCTION / TIME. . . . . . . .=',i10,
1022 . /15x,
'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
1023 . /15x,
'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
1024 . /15x,
'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
1025 . /15x,
'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
1026 . /15x,
'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13,
1027 . /15x,
'POROSITY FUNCTION / TIME(after contact)=',i10,
1028 . /15x,
'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
1029 . /15x,
'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
1030 . /15x,
'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
1031 . /15x,
'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
1032 . /15x,
'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13)
1033 1500
FORMAT(/5x,
'NUMBER OF COMMUNICATING VOLUMES . . . .=',i10,
1034 . /5x,
'VOLUME_ID ',
' VENT_SURF',8x,
'DELTA_PDEF',11x,
'DTPDEF',15x,
1035 .
'AVENT',16x,
'TVENT',9x,
' FCT/TIME ',
'FCT/PRES. ',
1036 .
'FCT/TIME SCALE FAC. ',
'FCT/PRES.SCALE FAC. ')
1037 1510
FORMAT(5x,2i10,4(1x,1pg20.13),2i10,2(1x,1pg20.13))