54 . SENSORS, NPT, PLD, IGRBRIC,
55 . UNITAB, NPC, IGRSURF, ITAB, X, PM, GEO, IXC, IXTG,
69#include "implicit_f.inc"
86 INTEGER,
INTENT(IN) :: NPT(*)
87 INTEGER,
INTENT(IN) :: NPC(*), ITAB(*), IXC(NIXC, *), IXTG(NIXTG, *)
88 my_real,
INTENT(IN) :: x(3, *), geo(npropg, *), pm(npropm, *), pld(
89 TYPE (SURF_),
INTENT(INOUT),
DIMENSION(NSURF) ::
91 TYPE (GROUP_),
DIMENSION(NGRBRIC),
INTENT(IN) :: IGRBRIC
92 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
93 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
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 my_real :: pext, ti, pini, gamai, cpai, cpbi, cpci
104 INTEGER :: IEQUI, ITTF, NJET, NVENT
105 my_real,
DIMENSION(:),
ALLOCATABLE :: gama, cpa, cpb, cpc, fmass, ftemp, fvel
106 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IMASS, IFLU, ITEMP, ISENS, IJET, IVEL
107 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IPVENT, ITVENT, IDTPDEF, IVDP
108 my_real,
DIMENSION(:),
ALLOCATABLE :: avent, bvent, tstope, tvent, dpdef, dtpdef, fvdp
109 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IPORT, IPORP, IPORA, IPORT1, IPORP1, IPORA1
110 my_real,
DIMENSION(:),
ALLOCATABLE :: fport, fporp, fpora, fport1, fporp1, fpora1
111 my_real :: dirx, diry, dirz, dir2x, dir2y, dir2z, origx, origy, origz, lx, ly, lz
112 INTEGER :: NBX, NBY, NBZ, IBRIC, , IREF, IGMERG
113 my_real :: cgmerg, cnmerg, ptole, qa, qb, hmin
114 INTEGER :: ILVOUT, NLAYER, NFACMAX, NPPMAX, IFVANI
115 my_real :: cpi, cvi, rmwi, mi, cpg, rmwg
116 INTEGER :: NBRIC, NN, I1, I2, I3, I4, ISH34
117 my_real :: sjet, dir, xx, yy, zz, x13, y13, z13, x24, y24, z24, nx, ny, nz, ds,
118 . rhoi, ti2, especi, shol
120 LOGICAL :: IS_AVAILABLE
128 CALL hm_get_intv(
'surf_IDex', surfid, is_available, lsubmodel)
130 CALL hm_get_floatv(
'Ascalet', scal_t, is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'AscaleP', scal_p, is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'AscaleS', scal_s, is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'AscaleA', scal_a, is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'AscaleD', scal_d, 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)
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)
146 CALL HM_GET_INTV('njet
', NJET, IS_AVAILABLE, LSUBMODEL)
147 T_MONVOLN%NJET = NJET
148 T_MONVOLN%IVOLU(8) = NJET
150 ALLOCATE(T_MONVOLN%IBAGJET(NIBJET, NJET))
151 T_MONVOLN%IBAGJET(1:NIBJET, 1:NJET) = 0
152 ALLOCATE(T_MONVOLN%RBAGJET(NRBJET, NJET))
153 T_MONVOLN%RBAGJET(1:NRBJET, 1:NJET) = ZERO
156 ALLOCATE(GAMA(NJET), CPA(NJET), CPB(NJET), CPC(NJET), FMASS(NJET), FTEMP(NJET))
157 ALLOCATE(IMASS(NJET), IFLU(NJET), ITEMP(NJET), ISENS(NJET))
159 ALLOCATE(IVEL(NJET), FVEL(NJET))
161 CALL HM_GET_FLOAT_ARRAY_INDEX('gamma', gama(ii), ii, is_available, lsubmodel, unitab)
180 CALL hm_get_intv(
'Nvent', nvent, is_available, lsubmodel)
181 t_monvoln%IVOLU(11) = nvent
182 t_monvoln%NVENT = nvent
184 ALLOCATE(t_monvoln%IBAGHOL(nibhol, nvent))
185 t_monvoln%IBAGHOL(1:nibhol, 1:nvent) = 0
186 ALLOCATE(t_monvoln%RBAGHOL(nrbhol, nvent))
187 t_monvoln%RBAGHOL(1:nrbhol, 1:nvent) = zero
190 ALLOCATE(ipvent(nvent), itvent(nvent), idtpdef(nvent), ivdp(nvent))
191 ALLOCATE(avent(nvent), bvent(nvent), tstope(nvent),
192 . tvent(nvent), dpdef(nvent), dtpdef(nvent), fvdp(nvent))
193 ALLOCATE(iport(nvent), iporp(nvent), ipora(nvent), iport1(nvent),
194 . iporp1(nvent), ipora1(nvent))
195 ALLOCATE(fport(nvent), fporp(nvent), fpora(nvent), fport1(nvent),
196 . fporp1(nvent), fpora1(nvent))
225 CALL hm_get_floatv(
'Vx3', dirx, is_available, lsubmodel, unitab)
226 CALL hm_get_floatv(
'Vy3', diry, is_available, lsubmodel, unitab)
227 CALL hm_get_floatv(
'Vz3', dirz, is_available, lsubmodel, unitab)
229 CALL hm_get_floatv(
'Vx1', dir2x, is_available, lsubmodel, unitab)
230 CALL hm_get_floatv(
'Vy1', dir2y, is_available, lsubmodel, unitab)
231 CALL hm_get_floatv(
'Vz1', dir2z, is_available, lsubmodel, unitab)
233 CALL hm_get_floatv(
'X0', origx, is_available, lsubmodel, unitab)
234 CALL hm_get_floatv(
'Y0', origy, is_available, lsubmodel, unitab)
235 CALL hm_get_floatv(
'Z0', origz, is_available, lsubmodel, unitab)
237 CALL hm_get_floatv(
'L1', lx, is_available, lsubmodel, unitab)
238 CALL hm_get_floatv(
'L2', ly, is_available, lsubmodel, unitab)
239 CALL hm_get_floatv(
'L3', lz, is_available, lsubmodel, unitab)
241 CALL hm_get_intv(
'Nb1', nbx, is_available, lsubmodel)
242 CALL hm_get_intv(
'Nb2', nby, is_available, lsubmodel)
243 CALL hm_get_intv(
'Nb3', nbz, is_available, lsubmodel)
244 CALL hm_get_intv(
'grbrc_ID', ibric, is_available, lsubmodel)
245 CALL hm_get_intv(
'surf_IDin', isur, is_available, lsubmodel)
246 CALL hm_get_intv(
'Iref', iref, is_available, lsubmodel)
248 CALL hm_get_intv(
'Igmerg', igmerg, is_available, lsubmodel)
249 CALL hm_get_floatv(
'Cgmerg', cgmerg, is_available, lsubmodel, unitab)
250 CALL hm_get_floatv('cnmerg
', CNMERG, IS_AVAILABLE, LSUBMODEL, UNITAB)
251 CALL HM_GET_FLOATV('ptole
', PTOLE, IS_AVAILABLE, LSUBMODEL, UNITAB)
253 CALL HM_GET_FLOATV('qa
', QA, IS_AVAILABLE, LSUBMODEL, UNITAB)
254 CALL HM_GET_FLOATV('qb', qb, is_available, lsubmodel, unitab)
255 CALL hm_get_floatv(
'Hmin', hmin, is_available, lsubmodel, unitab)
257 CALL hm_get_intv(
'Ilvout', ilvout, is_available, lsubmodel)
258 CALL hm_get_intv(
'Nlayer', nlayer, is_available, lsubmodel)
259 CALL hm_get_intv(
'Nfacmax', nfacmax, is_available, lsubmodel)
260 CALL hm_get_intv(
'Nppmax', nppmax, is_available, lsubmodel)
261 CALL hm_get_intv(
'Ifvani', ifvani, is_available, lsubmodel)
266 t_monvoln%IVOLU(4) = 0
269 IF (surfid == igrsurf(ii)%ID)
THEN
270 t_monvoln%IVOLU(4) = ii
271 t_monvoln%EXT_SURFID = ii
276 IF (.NOT. found)
THEN
278 ELSEIF (igrsurf(t_monvoln%IVOLU(4))%ISH4N3N == 0)
THEN
279 CALL ancmsg(msgid = 18, anmode = aninfo, msgtype = msgerror,
280 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = surfid)
288 . igrsurf(t_monvoln%EXT_SURFID),ixc, ixtg, x, 10)
290 CALL monvol_compute_volume(t_monvoln, t_monvoln%TITLE, t_monvoln%IVOLU, igrsurf(t_monvoln%EXT_SURFID),
291 . itab, x, pm, geo, ixc, ixtg,
292 . sa, rot, vol, vmin, veps, sv)
295 . igrsurf(t_monvoln%EXT_SURFID),ixc,ixtg,vol, x, 10)
297 IF (ittf < 0 .OR. ittf > 3)
THEN
298 CALL ancmsg(msgid = 773, anmode = aninfo, msgtype = msgerror,
299 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
301 IF (gamai == zero .OR. cpai == zero)
THEN
302 CALL ancmsg(msgid = 473, msgtype = msgerror, anmode = aninfo,
303 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
308 IF (scal_t == zero)
THEN
310 scal_t = one * fac_gen
312 IF (scal_p == zero)
THEN
314 scal_p = one * fac_gen
316 IF (scal_s == zero)
THEN
318 scal_s = one * fac_gen
320 IF (scal_a == zero)
THEN
322 scal_a = one * fac_gen
324 IF (scal_d == zero)
THEN
326 scal_d = one * fac_gen
330 IF(pext == zero)
THEN
331 pext = 101325.d0 * (unitab%FAC_L_WORK * unitab%FAC_T_WORK * unitab%FAC_T_WORK) / unitab%FAC_M_WORK
333 IF (ti == zero) ti = twohundred95
337 IF (imass(ii) /=0 .AND. fmass(ii) == zero)
THEN
339 fmass(ii) = one * fac_gen
341 IF (itemp(ii) /=0 .AND. ftemp(ii) == zero)
THEN
343 ftemp(ii) = one * fac_gen
346 IF (fvel(ii) == zero)
THEN
348 fvel(ii) = one * fac_gen
352 IF (itvent(ii) == 0) itvent(ii) = 2
353 IF (ipvent(ii) == 0)
THEN
357 IF (fport(ii) == zero) fport(ii) = one
358 IF (fporp(ii) == zero) fporp(ii) = one
359 IF (fpora(ii) == zero) fpora(ii) = one
360 IF (fport1(ii) == zero) fport1(ii) = one
361 IF (fporp1(ii) == zero) fporp1(ii) = one
362 IF (fpora1(ii) == zero) fpora1(ii) = one
364 IF (nbx == 0) nbx = 1
365 IF (nby == 0) nby = 1
366 IF (nbz == 0) nbz = 1
367 IF (igmerg == 0) igmerg = 1
368 IF (cgmerg == zero) cgmerg = zep02
369 IF (ptole == zero) ptole = em5
370 IF (nlayer == 0) nlayer = 10
371 IF (nfacmax == 0) nfacmax = 20
372 IF (nppmax == 0) nppmax = 20
373 cpi = cpai + ti * (cpbi + cpci * ti)
375 rmwi = cvi * (gamai - one)
376 mi = pini * (vol + veps) / (rmwi * ti)
380 t_monvoln%RVOLU(26) = one / scal_t
381 t_monvoln%RVOLU(27) = one / scal_p
382 t_monvoln%RVOLU(28) = one / scal_s
383 t_monvoln%RVOLU(29) = one / scal_a
384 t_monvoln%RVOLU(30) = one / scal_d
386 t_monvoln%IVOLU(17) = ittf
387 t_monvoln%IVOLU(8) = njet
389 t_monvoln%IBAGJET(14, ii) = 0
392 IF (ijet(ii) == igrsurf(jj)%ID)
THEN
393 t_monvoln%IBAGJET(14, ii) = jj
398 IF (.NOT. found)
THEN
399 CALL ancmsg(msgid = 847, anmode = aninfo, msgtype = msgerror,
400 . i2 = ijet(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
405 IF (ivel(ii) == npc(jj))
THEN
406 t_monvoln%IBAGJET(11, ii) = jj
411 IF (.NOT. found)
THEN
412 CALL ancmsg(msgid = 6, anmode = aninfo, msgtype = msgerror,
413 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ivel(ii))
415 t_monvoln%RBAGJET(15, ii) = fvel(ii)
416 t_monvoln%IBAGJET(13, ii) = 0
417 t_monvoln%RBAGJET(1, ii) = gama(ii)
418 t_monvoln%RBAGJET(2, ii) = cpa(ii)
419 t_monvoln%RBAGJET(3, ii) = cpb(ii)
420 t_monvoln%RBAGJET(4, ii) = cpc(ii)
421 t_monvoln%RBAGJET(5, ii) = fmass(ii)
422 t_monvoln%RBAGJET(6, ii) = ftemp(ii)
423 t_monvoln%RBAGJET(12, ii) = one
424 t_monvoln%RBAGJET(13, ii) = one
425 t_monvoln%RBAGJET(14, ii) = one
426 IF (imass(ii) == 0)
THEN
427 t_monvoln%IBAGJET(1, ii) = 0
431 IF (imass(ii) == npc(jj))
THEN
432 t_monvoln%IBAGJET(1, ii) = jj
434 np = (npt(jj + 1) - npt(jj)) / 2
435 IF (iflu(ii) == 0)
THEN
436 DO ip = (npt(jj) - 1) / 2 + 1, (npt(jj + 1) - 1) / 2 - 1
437 IF (pld(2, ip + 1) < pld(2, ip)) decrease = .true.
441 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE
444 DO ip = (npt(jj) - 1) / 2 + 1, (npt(jj + 1) - 1) / 2
445 IF (pld(2, ip) < zero) decrease = .true.
448 CALL ancmsg(msgid = 541, msgtype = msgwarning, anmode = aninfo_blind_1,
449 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = imass(ii), i3 = ii)
456 IF (.NOT. found)
THEN
457 CALL ancmsg(msgid = 10, anmode = aninfo, msgtype = msgerror,
458 . i2 = imass(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
461 t_monvoln%IBAGJET(2, ii) = iflu(ii)
462 IF (itemp(ii) == 0)
THEN
463 t_monvoln%IBAGJET(3, ii) = 0
467 IF (itemp(ii) == npc(jj))
THEN
468 t_monvoln%IBAGJET(3, ii) = jj
473 IF (.NOT. found)
THEN
474 CALL ancmsg(msgid = 11, anmode = aninfo, msgtype = msgerror,
475 . i2 = itemp(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
478 IF (isens(ii) > 0)
THEN
480 DO jj = 1, sensors%NSENSOR
481 IF (isens(ii) == sensors%SENSOR_TAB(jj)%SENS_ID)
THEN
482 t_monvoln%IBAGJET(4, ii) = jj
487 IF (.NOT. found)
THEN
488 CALL ancmsg(msgid = 17, anmode = aninfo, msgtype = msgerror,
489 . i2 = isens(ii), i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
492 cpg = cpa(ii) + ti * (cpb(ii) + cpc(ii) * ti)
493 rmwg = cpg * (gama(ii) - one) / gama(ii)
494 t_monvoln%RBAGJET(1, ii) = rmwg
497 t_monvoln%RBAGHOL(7, ii) = fport(ii)
498 t_monvoln%RBAGHOL(8, ii) = fporp(ii)
499 t_monvoln%RBAGHOL(9, ii) = fpora(ii)
500 t_monvoln%RBAGHOL(10, ii) = fport1(ii)
501 t_monvoln%RBAGHOL(11, ii) = fporp1(ii)
502 t_monvoln%RBAGHOL(12, ii) = fpora1(ii)
503 t_monvoln%IBAGHOL(1, ii) = 0
504 t_monvoln%IBAGHOL(10, ii) = 0
505 t_monvoln%IBAGHOL(11, ii) = idtpdef(ii)
506 t_monvoln%IBAGHOL(12, ii) = 0
507 IF (ipvent(ii) == 0)
THEN
508 t_monvoln%IBAGHOL(2, ii) = 0
510 t_monvoln%IBAGHOL(2, ii) = 0
513 IF (ipvent(ii) == igrsurf(jj)%ID)
THEN
514 t_monvoln%IBAGHOL(2, ii) = jj
520 CALL ancmsg(msgid = 532, anmode = aninfo, msgtype = msgerror,
521 . i2 = ipvent(ii), i1 = t_monvoln%ID, c1
522 ELSEIF(igrsurf(t_monvoln%IBAGHOL(2, ii))%ISH4N3N == 0)
THEN
523 CALL ancmsg(msgid = 330, anmode
524 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
526 IF (avent(ii) == zero) avent(ii) = one
528 IF (avent(ii) == zero) dpdef(ii) = infinity
529 IF (avent(ii) == zero) tvent(ii) = infinity
530 IF (dpdef(ii) == zero .AND. dtpdef(ii) == zero .AND. tvent(ii) == zero)
THEN
531 t_monvoln%IBAGHOL(1, ii) = 1
533 t_monvoln%RBAGHOL(1, ii) = dpdef(ii)
534 t_monvoln%RBAGHOL(2, ii) = avent(ii)
535 t_monvoln%RBAGHOL(3, ii) = tvent(ii)
536 t_monvoln%RBAGHOL(4, ii) = dtpdef(ii)
537 t_monvoln%RBAGHOL(6, ii) = bvent(ii)
538 IF (ivdp(ii) /= 0 .AND. fvdp(ii) == zero) fvdp(ii
539 t_monvoln%RBAGHOL(13, ii) = fvdp(ii)
540 tstope(ii) = infinity
541 t_monvoln%RBAGHOL(14, ii) = tstope(ii)
543 t_monvoln%IBAGHOL(3, ii) = -1
544 t_monvoln%IBAGHOL(4, ii) = -1
545 t_monvoln%IBAGHOL(5, ii) = -1
546 t_monvoln%IBAGHOL(6, ii) = -1
547 t_monvoln%IBAGHOL(7, ii) = -1
548 t_monvoln%IBAGHOL(8, ii) = -1
549 t_monvoln%IBAGHOL(9, ii) = -1
551 IF (iport(ii) == npc(jj)) t_monvoln%IBAGHOL(3, ii) = jj
553 IF (ipora(ii) == npc(jj)) t_monvoln%IBAGHOL
554 IF (iport1(ii) == npc(jj)) t_monvoln%IBAGHOL
555 IF (iporp1(ii) == npc(jj)) t_monvoln%IBAGHOL(7, ii) = jj
556 IF (ipora1(ii) == npc(jj)) t_monvoln%IBAGHOL(8, ii) = jj
557 IF (ivdp(ii) == npc(jj)) t_monvoln%IBAGHOL(9, ii) = jj
559 IF (iport(ii) == 0) t_monvoln%IBAGHOL(3, ii) = 0
560 IF (iporp(ii) == 0) t_monvoln%IBAGHOL(4, ii) = 0
561 IF (ipora(ii) == 0) t_monvoln%IBAGHOL(5, ii) = 0
562 IF (iport1(ii) == 0) t_monvoln%IBAGHOL(6, ii) = 0
563 IF (iporp1(ii) == 0) t_monvoln%IBAGHOL(7, ii) = 0
564 IF (ipora1(ii) == 0) t_monvoln%IBAGHOL(8, ii) = 0
565 IF (ivdp(ii) == 0) t_monvoln%IBAGHOL(9, ii) = 0
566 IF (t_monvoln%IBAGHOL(3, ii) == -1)
THEN
567 t_monvoln%IBAGHOL(3, ii) = 0
568 CALL ancmsg(msgid = 331, anmode = aninfo, msgtype = msgerror,
569 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iport(ii))
571 IF (t_monvoln%IBAGHOL(4, ii) == -1)
THEN
572 t_monvoln%IBAGHOL(4, ii) = 0
573 CALL ancmsg(msgid = 332, anmode = aninfo, msgtype = msgerror,
574 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iporp(ii))
576 IF (t_monvoln%IBAGHOL(5, ii) == -1)
THEN
577 t_monvoln%IBAGHOL(5, ii)=0
578 CALL ancmsg(msgid = 333, anmode = aninfo, msgtype = msgerror,
579 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ipora(ii))
581 IF (t_monvoln%IBAGHOL(6, ii) == -1)
THEN
582 t_monvoln%IBAGHOL(6, ii) = 0
583 CALL ancmsg(msgid=331, anmode=aninfo, msgtype=msgerror,
584 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iport1(ii))
586 IF (t_monvoln%IBAGHOL(7, ii) == -1)
THEN
587 t_monvoln%IBAGHOL(7, ii)=0
588 CALL ancmsg(msgid=332, anmode=aninfo, msgtype=msgerror,
589 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = iporp1(ii))
591 IF (t_monvoln%IBAGHOL(8, ii) == -1)
THEN
592 t_monvoln%IBAGHOL(8, ii) = 0
593 CALL ancmsg(msgid=333, anmode=aninfo, msgtype=msgerror,
594 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ipora1(ii))
596 IF (t_monvoln%IBAGHOL(9, ii) == -1)
THEN
597 t_monvoln%IBAGHOL(9, ii) = 0
598 CALL ancmsg(msgid = 518, anmode = aninfo, msgtype = msgerror,
599 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = ivdp(ii))
601 t_monvoln%IBAGHOL(10, ii) = itvent(ii
603 t_monvoln%RVOLU(35) = dirx
604 t_monvoln%RVOLU(36) = diry
605 t_monvoln%RVOLU(37) = dirz
606 t_monvoln%RVOLU(38) = dir2x
607 t_monvoln%RVOLU(39) = dir2y
608 t_monvoln%RVOLU(40) = dir2z
609 t_monvoln%RVOLU(41) = origx
610 t_monvoln%RVOLU(42) = origy
611 t_monvoln%RVOLU(43) = origz
612 t_monvoln%RVOLU(44) = lx
613 t_monvoln%RVOLU(45) = ly
614 t_monvoln%RVOLU(53) = lz
615 t_monvoln%IVOLU(54) = nbx
616 t_monvoln%IVOLU(55) = nby
617 t_monvoln%IVOLU(35) = nbx * nby
618 t_monvoln%IVOLU(65) = nbz
619 t_monvoln%IVOLU(59) = iref
620 t_monvoln%IVOLU(61) = 0
623 IF (ibric == igrbric(jj)%ID) t_monvoln%IVOLU(61) = jj
627 t_monvoln%IVOLU(67)=0
628 t_monvoln%INT_SURFID = 0
631 IF (isur == igrsurf(jj)%ID)
THEN
632 t_monvoln%IVOLU(67) = jj
633 t_monvoln%INT_SURFID = jj
638 t_monvoln%IVOLU(60) = igmerg
639 t_monvoln%RVOLU(31) = cgmerg
640 t_monvoln%RVOLU(34) = cnmerg
641 t_monvoln%RVOLU(50) = ptole
642 t_monvoln%RVOLU(46) = qa
643 t_monvoln%RVOLU(47) = qb
644 t_monvoln%RVOLU(51) = hmin
645 t_monvoln%IVOLU(44) = ilvout
646 t_monvoln%IVOLU(40) = nlayer
647 t_monvoln%IVOLU(41) = nfacmax
648 t_monvoln%IVOLU(42) = nppmax
649 t_monvoln%IVOLU(15) = iequi
650 t_monvoln%IVOLU(27) = 1
651 t_monvoln%RVOLU(7) = cpai
652 t_monvoln%RVOLU(8) = cpbi
653 t_monvoln%RVOLU(9) = cpci
654 t_monvoln%RVOLU(10) = rmwi
655 t_monvoln%RVOLU(1) = gamai
656 t_monvoln%RVOLU(3) = pext
657 t_monvoln%RVOLU(4) = vol+veps
658 t_monvoln%RVOLU(11) = mi
659 t_monvoln%RVOLU(12) = pini
660 t_monvoln%RVOLU(13) = ti
661 t_monvoln%RVOLU(14) = rmwi * mi
662 t_monvoln%RVOLU(17) = veps
663 t_monvoln%RVOLU(20) = mi
664 t_monvoln%RVOLU(25) = ti
665 t_monvoln%RVOLU(61) = gamai
666 rhoi = pini / (ti * rmwi)
667 t_monvoln%RVOLU(62) = rhoi
669 especi = ti * (cpai + half * cpbi * ti + third * cpci * ti2 - rmwi)
670 t_monvoln%RVOLU(63) = especi + rmwi * ti
671 t_monvoln%RVOLU(64) = zero
672 t_monvoln%RVOLU(65) = zero
673 t_monvoln%RVOLU(66) = especi
675 t_monvoln%RVOLU(2) = amu
676 t_monvoln%RVOLU(16) = vol + veps
677 t_monvoln%RVOLU(18) = sa
678 t_monvoln%RVOLU(21) = rot
679 t_monvoln%RVOLU(22:24) = zero
684 WRITE(iout, 1005) surfid
685 WRITE(iout, 1003) scal_t, scal_p, scal_s, scal_a, scal_d
686 WRITE(iout, 1002) sa, sv, vol
687 WRITE(iout, 1400) amu, ti, pext, pini
695 WRITE(iout,1405) iequi
698 WRITE(iout, 1410) gamai, cpai, cpbi, cpci
700 IF (t_monvoln%IVOLU(61) /= 0) nbric = igrbric(t_monvoln%IVOLU(61))%ID
703 WRITE(iout,1710) t_monvoln%RVOLU(41),t_monvoln%RVOLU(42),t_monvoln%RVOLU(43),
704 . t_monvoln%RVOLU(38),t_monvoln%RVOLU(39),t_monvoln%RVOLU(40),
705 . t_monvoln%RVOLU(35),t_monvoln%RVOLU(36),t_monvoln%RVOLU(37),
706 . t_monvoln%RVOLU(44),t_monvoln%RVOLU(45),t_monvoln%RVOLU(53),
707 . t_monvoln%IVOLU(54),t_monvoln%IVOLU(55),t_monvoln%IVOLU(65),
708 . nbric ,isur ,t_monvoln%IVOLU(59),
709 . t_monvoln%IVOLU(60),t_monvoln%RVOLU(31),t_monvoln%RVOLU(34),
710 . t_monvoln%RVOLU(50),
711 . t_monvoln%RVOLU(46),t_monvoln%RVOLU(47),t_monvoln%RVOLU(51),
712 . t_monvoln%RVOLU(71),t_monvoln%RVOLU(72),
713 . t_monvoln%IVOLU(44),t_monvoln%IVOLU(40),t_monvoln%IVOLU(41),
714 . t_monvoln%IVOLU(42),ifvani
716 WRITE(iout, 1421) njet
718 WRITE(iout, 1430) ii, imass(ii), iflu(ii), fmass(ii), itemp(ii), ftemp(ii), isens(ii)
719 IF (ivel(ii) > 0)
THEN
720 WRITE(iout,1435) ivel(ii), fvel(ii)
722 WRITE(iout, 1440) gama(ii), cpa(ii), cpb(ii), cpc(ii)
724 isur = t_monvoln%IBAGJET(14, ii)
727 IF (igrsurf(isur)%ISH4N3N == 0)
THEN
728 CALL ancmsg(msgid = 18, anmode = aninfo, msgtype = msgerror,
729 . i2 = igrsurf(isur)%ID, i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
731 nn =igrsurf(isur)%NSEG
734 i1 = igrsurf(isur)%NODES(jj, 1)
735 i2 = igrsurf(isur)%NODES(jj, 2)
736 i3 = igrsurf(isur)%NODES(jj, 3)
737 i4 = igrsurf(isur)%NODES(jj, 4)
738 ish34 = igrsurf(isur)%ELTYP(jj)
739 IF (ish34 == 7) i4 = i3
740 xx = half * (x(1, i1) + x(1, i2))
741 yy = half * (x(2, i1) + x(2, i2))
742 zz = half * (x(3, i1) + x(3, i2))
743 x13 = x(1, i3) - x(1, i1)
744 y13 = x(2, i3) - x(2, i1)
745 z13 = x(3, i3) - x(3, i1)
746 x24 = x(1, i4) - x(1, i2)
747 y24 = x(2, i4) - x(2, i2)
748 z24 = x(3, i4) - x(3, i2)
749 nx = dir * (y13 * z24 - y24 * z13)
750 ny = dir * (z13 * x24 - z24 * x13)
751 nz = dir * (x13 * y24 - x24 * y13)
752 ds = sqrt(nx * nx + ny * ny + nz * nz)
757 WRITE(iout,1445) igrsurf(isur)%ID, sjet
759 WRITE(iout, 1470) nvent, zero
761 WRITE(iout, 1475) ittf
763 WRITE(iout, 1472) ii, ipvent(ii)
764 IF (ipvent(ii) == 0)
THEN
765 CALL ancmsg(msgid = 1050, msgtype = msgerror, anmode = aninfo,
766 . i1 = t_monvoln%ID, i2 = ii, c1
'VENT HOLE SURFACE')
768 ifvent = t_monvoln%IBAGHOL(10, ii)
769 IF (ifvent == 1)
WRITE(iout, 1483)
770 IF (ifvent == 2)
WRITE(iout, 1481)
771 IF (ifvent == 3)
WRITE(iout, 1482) ivdp(ii), fvdp(ii)
772 IF (ifvent == 5)
WRITE(iout, 1484)
773 IF (ipvent(ii) /= 0)
THEN
775 t_monvoln%RBAGHOL(15, ii) = shol
777 . shol,avent(ii),bvent(ii),
778 . iport(ii),iporp(ii),ipora(ii),fport(ii),fporp(ii),fpora(ii),
779 . iport1(ii),iporp1(ii),ipora1(ii),fport1(ii),fporp1(ii),fpora1(ii)
780 WRITE(iout,1480) tvent(ii),dpdef(ii),dtpdef(ii),idtpdef(ii),tstope(ii)
783 . avent(ii),bvent(ii),
784 . iport(ii),iporp(ii),ipora(ii),fport(ii),fporp(ii),fpora(ii),
785 . iport1(ii),iporp1(ii),ipora1(ii),fport1(ii),fporp1(ii),fpora1(ii)
786 WRITE(iout,1480) tvent(ii),dpdef(ii),dtpdef(ii),idtpdef(ii),tstope(ii)
794 DEALLOCATE(gama, cpa, cpb, cpc, fmass, ftemp)
795 DEALLOCATE(imass, iflu, itemp, isens)
797 DEALLOCATE(ivel, fvel)
800 DEALLOCATE(ipvent, itvent, idtpdef, ivdp)
801 DEALLOCATE(avent, bvent, tstope, tvent, dpdef, dtpdef, fvdp)
802 DEALLOCATE(iport, iporp, ipora, iport1, iporp1, ipora1)
803 DEALLOCATE(fport, fporp, fpora, fport1, fporp1, fpora1)
811 . /5x,
'INITIAL SURFACE OF MONITORED VOLUME . .=',1pg20.13,
812 . /5x,
'SURFACE ERROR(NE.0 FOR NON CLOSED SURF)=',1pg20.13,
813 . /5x,
'INITIAL VOLUME OF MONITORED VOLUME. . .=',1pg20.13)
815 . 5x,
'UNIT SCALE FOR TIME FUNCTIONS =',1pg20.13,
816 . /5x,
'UNIT SCALE FOR PRESSURE FUNCTIONS =',1pg20.13,
817 . /5x,
'UNIT SCALE FOR AREA FUNCTIONS =',1pg20.13,
818 . /5x,
'UNIT SCALE FOR ANGLE FUNCTIONS =',1pg20.13,
819 . /5x,
'UNIT SCALE FOR DISTANCE FUNCTIONS =',1pg20.13)
820 1005
FORMAT( 5x,
'EXTERNAL SURFACE ID . . . . . . . . . .=',i10)
822 . 5x,
'VOLUMIC VISCOSITY . . . . . . . . . . .=',1pg20.13,
823 . /5x,
'INITIAL TEMPERATURE . . . . . . . . . .=',1pg20.13,
824 . /5x,
'EXTERNAL PRESSURE . . . . . . . . . . .=',1pg20.13,
825 . /5x,
'INITIAL PRESSURE. . . . . . . . . . . .=',1pg20.13/)
827 . 5x,
'INITIAL THERMODYNAMIC EQUILIBRIUM IS SET AT TIME 0'
828 . /5x,
'--------------------------------------------------'/)
830 . 5x,
'THERMODYNAMIC EQUILIBRIUM IS SET EVERY CYCLE UP TO INJECTION TIME'/)
832 . 5x,
'THERMODYNAMIC EQUILIBRIUM IS SET EVERY',i10,
' CYCLES UP TO INJECTION TIME'/)
834 . 5x,
'CHARACTERISTICS OF INITIAL GAZ ',
835 . /5x,
'------------------------------ ',
836 . /5x,
'GAMMA AT INITIAL TEMPERATURE. . . . . .=',1pg20.13,
837 . /5x,
'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,
838 . /5x,
'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,
839 . /5x,
'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13/)
840 1700
FORMAT(5x,
'FVMBAG PARAMETERS ',
841 . /5x,
'----------------- ')
842 1704
FORMAT(15x,
'AIRBAG CUTTING FRAME: ')
843 1710
FORMAT(15x,
' ORIGIN X COORDINATE. . . . . . . . .=',1pg20.13,
844 . /15x,
' ORIGIN Y COORDINATE. . . . . . . . .=',1pg20.13,
845 . /15x,
' ORIGIN Z COORDINATE. . . . . . . . .=',1pg20.13,
846 . /15x,
' DIRECTION 1 X COORDINATE . . . . . .=',1pg20.13,
847 . /15x,
' DIRECTION 1 Y COORDINATE . . . . . .=',1pg20.13,
848 . /15x,
' DIRECTION 1 Z COORDINATE . . . . . .=',1pg20.13,
849 . /15x,
' DIRECTION 3 X COORDINATE . . . . . .=',1pg20.13,
850 . /15x,
' DIRECTION 3 Y COORDINATE . . . . . .=',1pg20.13,
851 . /15x,
' DIRECTION 3 Z COORDINATE . . . . . .=',1pg20.13,
852 . /15x,
'CUTTING LENGTH IN LOCAL DIRECTION 1 . .=',1pg20.13,
853 . /15x,
'CUTTING LENGTH IN LOCAL DIRECTION 2 . .=',1pg20.13,
854 . /15x,
'CUTTING LENGTH IN LOCAL DIRECTION 3 . .=',1pg20.13,
855 . /15x,
'NUMBER OF CELLS IN LOCAL DIRECTION 1. .=',i10,
856 . /15x,
'NUMBER OF CELLS IN LOCAL DIRECTION 2. .=',i10,
857 . /15x,
'NUMBER OF CELLS IN LOCAL DIRECTION 3. .=',i10,
858 . /15x,
'ADDITIONAL BRICK GROUP NUMBER . . . . .=',i10,
859 . /15x,
'INTERNAL SURFACE ID. . . . . . . . . .=',i10,
860 . /15x,
'FLAG FOR MESH ON REFERENCE METRICS. . .=',i10,
861 . /15x,
'CELL MERGING STRATEGY: ',
862 . /15x,
' GLOBAL MERGING TYPE. . . . . . . . .=',i10,
863 . /15x,
' GLOBAL MERGING COEFFICIENT . . . . .=',1pg20.13,
864 . /15x,
' NEIGHBORHOOD MERGING COEFFICIENT . .=',1pg20.13,
865 . /15x,
'TOLERANCE FOR SMALL SEGMENT REMOVAL . .=',1pg20.13,
866 . /15x,
'QUADRATIC BULK VISCOSITY. . . . . . . .=',1pg20.13,
867 . /15x,
'LINEAR BULK VISCOSITY . . . . . . . . .=',1pg20.13,
868 . /15x,
'MINIMUM HEIGHT. . . . . . . . . . . . .=',1pg20.13,
869 . /15x,
'DT SCALE FACTOR . . . . . . . . . . . .=',1pg20.13,
870 . /15x,
'MINIMUM TIMESTEP. . . . . . . . . . . .=',1pg20.13,
871 . /15x,
'OUTPUT LEVEL. . . . . . . . . . . . . .=',i10,
872 . /15x,
'MEMORY PARAMETERS: ',
873 . /15x,
' ESTIMATED NUMBER OF AIRBAG LAYERS. .=',i10,
874 . /15x,
' ESTIMATED MAXIMUM NUMBER OF AIRBAG ',
875 . /15x,
' FACETS PER CUTTING CELL. . . . .=',i10,
876 . /15x,
' ESTIMATED MAXIMUM NUMBER OF POINTS ',
877 . /15x,
' PER POLYGON. . . . . . . . . . .=',i10,
878 . /15x,
'FLAG FOR ANIMATION FILE A000. . . . . .=',i10
883 . 5x,
'NUMBER OF INFLATORS . . . . . . . . . .=',i10/)
885 . 5x,
'INFLATOR NUMBER . . . . . . . . . . . .=',i10,
886 . /15x,
'TIME FUNCTION FOR INCOMING TOTAL MASS .=',i10,
887 . /15x,
' or MASS FLUX if IFLU=1 . . . . IFLU =',i10,
888 . /15x,
'SCALE FACTOR FOR INCOMING TOTAL MASS .=',1pg20.13,
889 . /15x,
'TIME FUNCTION FOR INCOMIMG GAS TEMP . .=',i10,
890 . /15x,
'SCALE FACTOR FOR INCOMIMG GAS TEMP . .=',1pg20.13,
891 . /15x,
'SENSOR NUMBER . . . . . . . . . . . . .=',i10)
892 1435
FORMAT(15x,
'TIME FUNCTION FOR INCOMING GAS VELOCITY=',i10,
893 . /15x,
'SCALE FACTOR FOR INCOMING GAS VELOCITY.=',1pg20.13)
895 . /15x,
'GAZ CHARACTERISTICS ',
896 . /15x,
'------------------- ',
897 . /15x,
'GAMMA AT INITIAL TEMPERATURE. . . . . .=',1pg20.13,
898 . /15x,
'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,
899 . /15x,
'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,
900 . /15x,
'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13)
902 . 15x,
'INFLATOR SURFACE ID . . . . . . . . . .=',i10,
903 . /15x,
'INITIAL SURFACE OF INFLATOR . . . . . .=',1pg20.13)
905 . /5x,
'VENT HOLES AND POROUS FABRIC SURFACES ',
906 . /5x,
'------------------------------------- ',
907 . /5x,
'NUMBER OF VENT HOLES AND POROUS SURFACES . .=',i10,
908 . /5x,
'INJECTION TIME TINJ. . . . . . . . . . . . .=',1pg20.13)
910 . 5x,
'VENTING START TIME SHIFT . . . . . . . . . .=',i10,
911 . /5x,
' 0 : NO SHIFT',
912 . /5x,
' 1,2: VENTING FUNCTIONS ARE SHIFTED BY TINJ',
913 . /5x,
' 3 : VENTING FUNCTIONS ARE SHIFTED BY TINJ+TSTART')
915 . / 5x,
'VENT HOLE NUMBER. . . . . . . . . . . .=',i10,
916 . /15x,
'VENT HOLE SURFACE ID. . . . . . . . . .=',i10)
917 1481
FORMAT(15x,
'ISENTHALPIC VENTING MODEL ')
918 1482
FORMAT(15x,
'CHEMKIN MODEL FOR POROSITY : ',
919 . /15x,
'VELOCITY VS RELATIVE PRESSURE FUNCTION =',i10,
920 . /15x,
' SCALE FACTOR. . . . . . .=',1pg20.13)
921 1483
FORMAT(15x,
'LOCAL VELOCITY VENTING FORMULATION')
922 1484
FORMAT(15x,
'GRAEFE POROSITY FORMULATION')
924 . 15x,
'INITIAL SURFACE . . . . . . . . . . . .=',1pg20.13,
925 . /15x,
'AVENT:VENT HOLE SCALE FACTOR. . . . . .=',1pg20.13,
926 . /15x,
'BVENT:VENT HOLE SCALE FACTOR IF CONTACT=',1pg20.13,
927 . /15x,
'POROSITY FUNCTION / TIME. . . . . . . .=',i10,
928 . /15x,
'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
929 . /15x,
'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
930 . /15x,
'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
931 . /15x,
'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
932 . /15x,
'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13,
933 . /15x,
'POROSITY FUNCTION / TIME(after contact)=',i10,
934 . /15x,
'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
935 . /15x,
'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
936 . /15x,
'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
937 . /15x,
'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
938 . /15x,
'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13)
940 . 15x,
'START TIME FOR VENTING TSTART . . . . .=',1pg20.13,
941 . /15x,
'RELATIVE PRES. FOR MEMBRANE DEFLATION .=',1pg20.13,
942 . /15x,
' (DPDEF = PDEF - PEXT) ',
943 . /15x,
'TIME DELAY BEFORE MEMBRANE DEFLATION .=',1pg20.13,
944 . /15x,
'TIME DELAY FLAG . . . . . . . . . . . .=',i10,
945 . /15x,
' IF IDTPDEF : 0',
946 . /15x,
' PRESSURE SHOULD BE OVER PDEF DURING',
947 . /15x,
' A CUMULATED DTPDEF TIME'
948 . /15x,
' BEFORE ACTIVATING DEFLATION'
949 . /15x,
' IF IDTPDEF : 1',
950 ' DEFLATION START DTPDEF AFTER',
951 . /15x,
' DPDEF HAS BEEN REACHED',
952 . /15x,
'END TIME FOR VENTING TSTOP. . . . . . .=',1pg20.13)
954 . 15x,
'AVENT:VENT HOLE AREA. . . . . . . . . .=',1pg20.13,
955 . /15x,
'BVENT:VENT HOLE SCALE FACTOR IF CONTACT=',1pg20.13,
956 . /15x,
'POROSITY FUNCTION / TIME. . . . . . . .=',i10,
957 . /15x,
'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
958 . /15x,
'POROSITY FUNCTION / AREA. . . . . . . .=',i10,
959 . /15x,
'POROSITY TIME FUNCTION SCALE FACTOR =',1pg20.13,
960 . /15x,
'POROSITY PRESSURE FUNCTION SCALE FACTOR=',1pg20.13,
961 . /15x,
'POROSITY AREA FUNCTION SCALE FACTOR . .=',1pg20.13,
962 . /15x,
'POROSITY FUNCTION / TIME(after contact)=',i10,
963 . /15x,
'POROSITY FUNCTION / PRESSURE. . . . . .=',i10,
964 . /15x,'porosity
FUNCTION /
area. . . . . . . .=
',I10,
965 . /15X,'porosity time function scale factor =
',1PG20.13,
966 . /15X,'porosity pressure function scale factor=
',1PG20.13,
967 . /15X,'porosity
area function scale factor . .=
',1PG20.13)