63 3 SENSORS ,IGRBRIC ,MFI ,
82#include "implicit_f.inc"
94 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),NPC(*),ITAB(*),MFI,IXS(NIXS,*),LIBAGALE,LRBAGALE
95 my_real X(3,*), V(3,*)
97 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
98 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
101 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
105 INTEGER :: NN, LCA, LIBJET, LRBJET, LIBHOL, LRBHOL
106 INTEGER I, J, ID, ITYPE, K, NCA, N,
107 . IMASS, ITEMP, IFLU, ISENS,
108 . IJET,NJ1,NJ2,NJ3,IPT,IPA,IPZ,
113 . ibric, ilvout, iadale,
114 . radale, nns, iadale2, nno, ntg, iadale3, iadale4, nbric,
115 . iadale5, iadale6, iadale7, iadale8, ntga, nna, iadale9,
116 . iadale10, iadale11,
119 . iadale13, ntgt, ii, ibid(1), jj
122 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGE, ITABINV, TAGVENT, ITABINV1, ITABINV2, INDEX
123 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGNODBR
124 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAB_SAVE
126 INTEGER :: NJET_NEW(NVOLU)
129 my_real ti,gamai, cpai, cpbi, cpci, cpdi, cpei, cpfi, gama, cpa, cpb, cpc,rmwg, cpg, cvg, fmass, ftemp
131 CHARACTER(len=nchartitle) :: TITR,TITR1
132 CHARACTER*10 MONVOLTYP(11)
133 INTEGER :: NB_TETRA, NB_VERTICES, NB_EXTRA_VERTICES
135 INTEGER :: SIZE1, SIZE2,LENGTH
136 INTEGER :: COMM_TAG(NVOLU), NCOMMU
137 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: IBAGJET_SAVE
138 my_real,
DIMENSION(:, :),
ALLOCATABLE :: rbagjet_save
147 DATA mess/
'MONITORED VOLUME DEFINITION '/
148 DATA monvoltyp/
' AREA',
' PRES',
' GAS',
149 .
' AIRBAG',
' COMMU',
' FVMBAG',
150 .
' AIRBAG1',' fvmbag1
',' commu1
',
151 . ' lfluid
',' fvmbag2
'/
160.NOT.
IF((ALLOCATED(KMESH))) ALLOCATE(KMESH(NVOLU))
161 TETRAMESHER_USED = .FALSE.
162 NB_TOTAL_NODE = NUMNOD
163.NOT.
IF((ALLOCATED(NODE_COORD))) ALLOCATE(NODE_COORD(3, NUMNOD))
165 NODE_COORD(1, I) = X(1, I)
166 NODE_COORD(2, I) = X(2, I)
167 NODE_COORD(3, I) = X(3, I)
169 NB_TOTAL_SOLIDS = NUMELS
170.NOT.
IF((ALLOCATED(IXS_TEMP))) ALLOCATE(IXS_TEMP(NIXS * NUMELS))
173 IXS_TEMP(NIXS * (I - 1) + II) = IXS(II, I)
176.NOT.
IF((ALLOCATED(ITAB_TMP))) ALLOCATE(ITAB_TMP(NUMNOD), ITABM1_TMP(2 * NUMNOD))
178 ITAB_TMP(I) = ITAB(I)
180!!! Completion of ITAB
181 MAX_ID = MAXVAL(ITAB(1:NUMNOD))
183 DO I = NUMNOD + 1, NB_TOTAL_NODE
188 CALL CONSTIT(ITAB_TMP,ITABM1_TMP,NB_TOTAL_NODE)
193 TETRAMESHER_USED = .FALSE.
195 ITYPE = T_MONVOL(N)%TYPE
196 IF (ITYPE == 11) THEN
199 T_MONVOL(N)%IVOLU(2) = T_MONVOL(N)%TYPE
205.OR.
IF (ITYPE == 8 ITYPE == 11) THEN
206 KMESH(N) = T_MONVOL(N)%IVOLU(30)
208 IF (KMESH(N) >= 2) TETRAMESHER_USED = .TRUE.
212 ITYPE = T_MONVOL(N)%TYPE
214 ILVOUT = T_MONVOL(N)%IVOLU(44)
215 TITR = T_MONVOL(N)%TITLE
216 NN =IGRSURF(T_MONVOL(N)%EXT_SURFID)%NSEG
217.OR.
IF (ITYPE == 6ITYPE == 8) THEN
221 T_MONVOL(N)%IVOLU(31)=IADALE-1
222 T_MONVOL(N)%IVOLU(34)=RADALE-1
224 ALLOCATE(TAGNODBR(NUMNOD))
226 IBRIC=T_MONVOL(N)%IVOLU(61)
228 NBRIC=IGRBRIC(IBRIC)%NENTITY
229 T_MONVOL(N)%NBRIC = NBRIC
230 ALLOCATE(T_MONVOL(N)%TBRIC(2, NBRIC))
231 ALLOCATE(T_MONVOL(N)%TFAC(12, NBRIC))
233 . IBID ,IXS ,1 ,NBRIC ,
234 . T_MONVOL(N)%ID,T_MONVOL(N)%IVOLU(44) ,TITR ,TAGNODBR,
235 . T_MONVOL(N)%TBRIC ,T_MONVOL(N)%TFAC,NUMNOD ,IGRBRIC,IBRIC,ITYPE)
238 ALLOCATE(TAGE(NN),ITABINV(NUMNOD),TAGVENT(NUMNOD))
241 CALL ALENO(NN ,IGRSURF(T_MONVOL(N)%EXT_SURFID)%NODES, NNS,ITABINV,
242 . TAGE, TAGVENT, TAGNODBR, T_MONVOL(N))
248 IF (T_MONVOL(N)%INT_SURFID /= 0) THEN
249 ALLOCATE(ITABINV1(NUMNOD))
250 ITABINV1(1:NUMNOD) = 0
251 NP = IGRSURF(T_MONVOL(N)%INT_SURFID)%NSEG
252 CALL FVNODI(NP ,IGRSURF(T_MONVOL(N)%INT_SURFID)%NODES, NNI,ITABINV1 ,
255! Number of nodes on external surface
256 T_MONVOL(N)%IVOLU(32)=NNS
257! Number of nodes on internal surface
258 T_MONVOL(N)%IVOLU(68)=NNI
260 IADALE2=IADALE+NNS+NNI
264! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- !
265! ***************************************************** !
266! ** Triangulation of external and internal surfaces ** !
267! ***************************************************** !
268! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- !
273 IF (T_MONVOL(N)%EXT_SURFID > 0) THEN
274 SIZE1 = IGRSURF(T_MONVOL(N)%EXT_SURFID)%NSEG
276 IF (T_MONVOL(N)%INT_SURFID > 0) THEN
277 SIZE2 = IGRSURF(T_MONVOL(N)%INT_SURFID)%NSEG
279! Keep track of original elements ids
280 LENGTH=2 * (SIZE1 + SIZE2 + T_MONVOL(N)%NB_FILL_TRI)
281 CALL MY_ALLOC(T_MONVOL(N)%FVBAG_ELEMID,LENGTH)
282 CALL MY_ALLOC(T_MONVOL(N)%ELTG, (2 * (SIZE1 + SIZE2)))
283 T_MONVOL(N)%ELTG(1:SIZE1 + SIZE2) = 0
284 CALL MONVOL_TRIANGULATE_SURFACE(T_MONVOL(N), IGRSURF, ITABINV, ITABINV1, TAGE,
285 . X, KMESH(N), NNS, NNI, NTG, NTGI, SIZE1, SIZE2, T_MONVOL(N)%FVBAG_ELEMID)
287! Check for duplicated triangles on internal + external surface of the airbag
289 CALL MONVOL_CHECK_DELETE_DUPLICATED(T_MONVOL(N), NTG, NTGI, ITAB)
291 IF (ALLOCATED(ITABINV1)) DEALLOCATE(ITABINV1)
292 IF (ALLOCATED(ITABINV)) DEALLOCATE(ITABINV)
293 IF (ALLOCATED(ITABINV2)) DEALLOCATE(ITABINV2)
294 IF (ALLOCATED(INDEX)) DEALLOCATE(INDEX)
295 IF (ALLOCATED(TAGE)) DEALLOCATE(TAGE)
297 T_MONVOL(N)%IVOLU(33)=NTG
298 T_MONVOL(N)%IVOLU(69)=NTGI
299 IADALE3=IADALE2+NNO*NTG
302 ALLOCATE(T_MONVOL(N)%POROSITY(NTGI))
303 ALLOCATE(T_MONVOL(N)%THSURF_TAG(NSURF, NTGI + 1))
306 IF (T_MONVOL(N)%INT_SURFID /= 0) THEN
307.NOT.
IF ( TETRAMESHER_USED) THEN
308 CALL FVBRIC01(T_MONVOL(N)%NODES, T_MONVOL(N)%ELEM(1, NTG + 1), NTGI, NUMNOD, NBRIC, IXS,
309 . T_MONVOL(N)%TBRIC, T_MONVOL(N)%TFAC)
312 ALLOCATE(T_MONVOL(N)%ELAREA(NTG + NTGI))
313 IADALE3=IADALE3+NNO*NTGI
315 IF (KMESH(N) >= 2) THEN
316! Automatic tetrameshing
317 SELECT CASE (KMESH(N))
319! Hypermesh (12), Hypermesh + writing of mesh as an include file (14)
320 CALL HYPERMESH_TETRA(T_MONVOL(N), NIXS, N, KMESH(N),
321 . NB_EXTRA_VERTICES, NB_TETRA, NB_VERTICES)
325 WRITE(IOUT,1703) ID,NB_TETRA, NB_EXTRA_VERTICES
326 IF (ALLOCATED(ITAB_SAVE)) DEALLOCATE(ITAB_SAVE)
327 ALLOCATE(ITAB_SAVE(NB_TOTAL_NODE_OLD))
328 ITAB_SAVE(1:NB_TOTAL_NODE_OLD) = ITAB_TMP(1:NB_TOTAL_NODE_OLD)
330 DEALLOCATE(ITAB_TMP, ITABM1_TMP)
331!!! First, determine max user ID (external ID)
332 ALLOCATE(ITAB_TMP(NB_TOTAL_NODE), ITABM1_TMP(2 * NB_TOTAL_NODE))
333 DO I = 1, NB_TOTAL_NODE_OLD
334 ITAB_TMP(I) = ITAB_SAVE(I)
336!!! Completion of ITAB
337 MAX_ID = MAXVAL(ITAB_TMP(1:NB_TOTAL_NODE_OLD))
339 DO I = NB_TOTAL_NODE_OLD + 1, NB_TOTAL_NODE
344 CALL CONSTIT(ITAB_TMP,ITABM1_TMP,NB_TOTAL_NODE)
347.OR.
IF (KMESH(N) == 4 KMESH(N) == 14) THEN
351 T_MONVOL(N)%NBRIC = NB_TETRA
352 ALLOCATE(T_MONVOL(N)%TBRIC(2, NB_TETRA))
353 ALLOCATE(T_MONVOL(N)%TFAC(12, NB_TETRA))
355 IF (ALLOCATED(IBUFSSG_TEMP)) DEALLOCATE(IBUFSSG_TEMP)
356 ALLOCATE(IBUFSSG_TEMP(NB_TETRA))
358 IBUFSSG_TEMP(I) = I + NB_TOTAL_SOLIDS_OLD
361 IF (ALLOCATED(TAGNODBR)) DEALLOCATE(TAGNODBR)
362 ALLOCATE(TAGNODBR(NB_TOTAL_NODE))
363 TAGNODBR(1:NB_TOTAL_NODE)=0
366 . IBUFSSG_TEMP,IXS_TEMP ,2 ,NB_TETRA,
367 . T_MONVOL(N)%ID ,T_MONVOL(N)%IVOLU(44) ,TITR ,TAGNODBR,
368 . T_MONVOL(N)%TBRIC ,T_MONVOL(N)%TFAC,NB_TOTAL_NODE ,DUMMY,IBRIC,ITYPE)
369 IF (T_MONVOL(N)%INT_SURFID > 0) THEN
370 CALL FVBRIC01(T_MONVOL(N)%NODES, T_MONVOL(N)%ELEM(1, NTG + 1), NTGI, NB_TOTAL_NODE,
371 . NB_TETRA, IXS_TEMP, T_MONVOL(N)%TBRIC, T_MONVOL(N)%TFAC)
380 NJET=T_MONVOL(N)%IVOLU(8)
381 ALLOCATE(T_MONVOL(N)%ITAGEL(T_MONVOL(N)%NTG +T_MONVOL(N)%NTGI))
382 T_MONVOL(N)%ITAGEL(:) = 0
383 ALLOCATE(T_MONVOL(N)%MATTG(T_MONVOL(N)%NTG +T_MONVOL(N)%NTGI))
384 T_MONVOL(N)%MATTG(:) = 0
387 . T_MONVOL(N)%NODES , T_MONVOL(N)%ELEM, T_MONVOL(N)%IBAGJET,
389 . T_MONVOL(N)%ITAGEL,NNS+NNI, NTG,
390 . T_MONVOL(N)%ID ,TAGVENT, TITR,
393 NVENT=T_MONVOL(N)%IVOLU(11)
397 IF (TETRAMESHER_USED) THEN
399 . T_MONVOL(N)%NODES, T_MONVOL(N)%ELEM, T_MONVOL(N)%FVBAG_ELEMID(1:NTGT), IXC, IXTG, NTGT,
400 . T_MONVOL(N)%ELTG, T_MONVOL(N)%MATTG, NB_TOTAL_NODE, .TRUE.)
402 . T_MONVOL(N)%NODES ,T_MONVOL(N)%ELEM,T_MONVOL(N)%IBAGHOL,
404 . T_MONVOL(N)%ITAGEL,NNS+NNI, NTG,
405 . T_MONVOL(N)%ID ,TAGVENT, TITR,
406 . T_MONVOL(N)%ELTG, NB_TOTAL_NODE)
409 . T_MONVOL(N)%NODES, T_MONVOL(N)%ELEM, T_MONVOL(N)%FVBAG_ELEMID(1:NTGT), IXC, IXTG, NTGT,
410 . T_MONVOL(N)%ELTG, T_MONVOL(N)%MATTG, NUMNOD, .TRUE.)
412 . T_MONVOL(N)%NODES ,T_MONVOL(N)%ELEM,T_MONVOL(N)%IBAGHOL,
414 . T_MONVOL(N)%ITAGEL,NNS+NNI, NTG,
415 . T_MONVOL(N)%ID ,TAGVENT, TITR,
416 . T_MONVOL(N)%ELTG, NUMNOD)
419 DEALLOCATE(T_MONVOL(N)%FVBAG_ELEMID)
421 IF (TETRAMESHER_USED) THEN
423 . IXC, IXTG, NTGT, T_MONVOL(N)%ITAGEL, T_MONVOL(N)%ELTG,
424 . T_MONVOL(N)%IBAGHOL, ILVOUT, 0 )
427 . IXC, IXTG, NTGT, T_MONVOL(N)%ITAGEL, T_MONVOL(N)%ELTG,
428 . T_MONVOL(N)%IBAGHOL, ILVOUT, 0 )
433 IBRIC=T_MONVOL(N)%IVOLU(61)
434.OR..AND.
IF (IBRIC/=0 (IBRIC==0 KMESH(N)>=2)) THEN
436 IF (KMESH(N) >= 2) THEN
438 IADALE5=IADALE4+2*NTGT
439 IADALE6=IADALE5+2*NBRIC
440 IADALE7=IADALE6+12*NBRIC
441 IADALE8=IADALE7+2*NTGT
442 T_MONVOL(N)%IVOLU(19)=IADALE5
443 T_MONVOL(N)%IVOLU(20)=IADALE8
445!!! Now we're done et ready to go on filling bufalei
447 nbric=igrbric(ibric)%NENTITY
448 iadale5=iadale4+2*ntgt
449 iadale6=iadale5+2*nbric
450 iadale7=iadale6+12*nbric
451 iadale8=iadale7+2*ntgt
452 t_monvol(n)%IVOLU(19)=iadale5
453 t_monvol(n)%IVOLU(20)=iadale8
457 ALLOCATE(t_monvol(n)%TAGELS(t_monvol(n)%NTG + 2 * t_monvol(n)%NTGI))
458 t_monvol(n)%TAGELS(:) = 0
461 . t_monvol(n)%NODES, t_monvol(n)%ELEM,
ixs_temp,
462 . t_monvol(n)%TBRIC,ntg, ntga, nbric,
463 . t_monvol(n)%TFAC,t_monvol(n)%TAGELS, t_monvol(n)%ID, ntgi,
464 . nna, t_monvol(n)%IVOLU(44),
465 . t_monvol(n)%ELTG,node_coord, titr,
469 . t_monvol(n)%NODES, t_monvol(n)%ELEM, ixs,
470 . t_monvol(n)%TBRIC,ntg, ntga, nbric,
471 . t_monvol(n)%TFAC,t_monvol(n)%TAGELS, t_monvol(n)%ID, ntgi,
472 . nna, t_monvol(n)%IVOLU(44),
473 . t_monvol(n)%ELTG,x, titr, numnod)
477 iadale10=iadale9+3*ntga
478 iadale11=iadale10+ntga
481 . t_monvol(n)%ELEM,
ixs_temp, ntg+ntgi, nbric,
482 . t_monvol(n)%TBRIC, t_monvol(n)%TFAC, t_monvol(n)%TAGELS, ntga,
483 . t_monvol(n)%IBUFA, nna, t_monvol(n)%ELEMA,
484 . t_monvol(n)%TAGELA, t_monvol(n)%BRNA,
488 . t_monvol(n)%ELEM, ixs, ntg+ntgi, nbric,
489 . t_monvol(n)%TBRIC, t_monvol(n)%TFAC, t_monvol(n)%TAGELS, ntga,
490 . t_monvol(n)%IBUFA, nna, t_monvol(n)%ELEMA,
491 . t_monvol(n)%TAGELA, t_monvol(n)%BRNA, numnod)
494 iadale12=iadale11+8*nbric
497 . t_monvol(n)%NODES, t_monvol(n)%IBUFA, nns+nni, nbric, nna,
498 . t_monvol(n)%TBRIC, t_monvol(n)%BRNA, t_monvol(n)%NCONA,
itab_tmp,
503 . t_monvol(n)%NODES, t_monvol(n)%IBUFA, nns+nni, nbric,
504 . t_monvol(n)%TBRIC, t_monvol(n)%BRNA, t_monvol(n)%NCONA, itab,
505 . ilvout, numnod, t_monvol(n)%IVOLU(38),t_monvol(n)%RVOLU(67),
kmesh(n), v )
511 iadale5=iadale4+2*ntga
514 iadale8=iadale7+2*ntga
516 iadale10=iadale9+3*ntga
517 iadale11=iadale10+ntga
519 t_monvol(n)%IVOLU(19)=iadale5
520 t_monvol(n)%IVOLU(20)=iadale8
522 t_monvol(n)%NTGA = ntga
523 ALLOCATE(t_monvol(n)%TAGELS(ntg + 2 * ntgi))
524 DO i = 1, ntg + 2 * ntgi
525 t_monvol(n)%TAGELS(i) = 0
527 ALLOCATE(t_monvol(n)%ELEMA(3, ntga))
529 t_monvol(n)%ELEMA(1, i) = t_monvol(n)%ELEM(1, i)
530 t_monvol(n)%ELEMA(2, i) = t_monvol(n)%ELEM(2, i)
531 t_monvol(n)%ELEMA(3, i) = t_monvol(n)%ELEM(3, i)
533 ALLOCATE(t_monvol(n)%TAGELA(ntga))
535 t_monvol(n)%TAGELA(i) = i
538 t_monvol(n)%IVOLU(62) = nbric
539 t_monvol(n)%IVOLU(63) = ntga
540 t_monvol(n)%IVOLU(64) = nna
541 t_monvol(n)%NNA = nna
543 ALLOCATE(t_monvol(n)%VELOCITY(3, nna), t_monvol(n)%NODE_COORD(3, nna))
546 iadale13=iadale12+16*nna
547 t_monvol(n)%IVOLU(18)=iadale13-1
549 t_monvol(n)%IADALE = iadale
550 t_monvol(n)%IADALE2 = iadale2
551 t_monvol(n)%IADALE3 = iadale3
552 t_monvol(n)%IADALE4 = iadale4
553 t_monvol(n)%IADALE5 = iadale5
554 t_monvol(n)%IADALE6 = iadale6
555 t_monvol(n)%IADALE7 = iadale7
556 t_monvol(n)%IADALE8 = iadale8
557 t_monvol(n)%IADALE9 = iadale9
558 t_monvol(n)%IADALE10 = iadale10
559 t_monvol(n)%IADALE11 = iadale11
560 t_monvol(n)%IADALE12 = iadale12
561 t_monvol(n)%IADALE12 = iadale13
562 iadale=iadale13+nsurf*(ntgi+1)
563 radale=radale+7*(nns+nni)+4*ntg+13*nna+5*ntgi
564 mfi=mfi+ 7*(nns+nni)+4*ntg+13*nna+5*ntgi
566 t_monvol(n)%IVOLU(56)=0
580 comm_tag(1:nvolu) = 0
582 itype = t_monvol(nn)%TYPE
583 IF (itype == 5 .OR. itype == 9)
THEN
585 nca = t_monvol(nn)%NCA
587 id = t_monvol_metadata%ICBAG(1, ii + lca)
590 IF (id == t_monvol(jj)%ID)
THEN
591 t_monvol_metadata%ICBAG(1, ii + lca) = jj
596 IF (.NOT. found)
THEN
597 CALL ancmsg(msgid = 15, anmode = aninfo, msgtype = msgerror,
598 . i2 = id, i1 = t_monvol(nn)%ID, c1 = t_monvol(nn)%TITLE)
601 IF (itype == 5 .AND. t_monvol(jj)%TYPE /= 5 .OR.
602 . itype == 9 .AND. t_monvol(jj)%TYPE /= 9)
THEN
603 CALL ancmsg(msgid = 16, anmode = aninfo, msgtype = msgerror,
604 . i1 = t_monvol(nn)%ID, c1 = t_monvol(nn)%TITLE,
605 . i2 = t_monvol(nn)%TYPE, c2 = t_monvol(jj)%TITLE)
614 comm_tag(1:nvolu) = 0
617 itype = t_monvol(nn)%TYPE
618 IF (itype == 5 .OR. itype == 9)
THEN
619 nca = t_monvol(nn)%NCA
620 IF (comm_tag(nn) == 0)
THEN
623 id1 = t_monvol_metadata%ICBAG
624 IF (comm_tag(id1) /= 0)
THEN
625 comm_tag(nn) = comm_tag(id1)
627 id2 = t_monvol_metadata%ICBAG(1, jj + lca)
628 comm_tag(id2) = comm_tag(id1)
641 t_monvol(nn)%IVOLU(16) = nventtot
642 nvent = t_monvol(nn)%NVENT
643 nventtot = nventtot + nvent
648 itype = t_monvol(nn)%TYPE
649 IF (itype >= 3.AND.(itype <= 9 .OR. itype == 11))
THEN
650 t_monvol(nn)%IVOLU(12) = libhol
651 t_monvol(nn)%IVOLU(13) = lrbhol
652 nvent = t_monvol(nn)%NVENT
653 libhol = libhol + nvent * nibhol
654 lrbhol = lrbhol + nvent * nrbhol
661 itype=t_monvol(n)%IVOLU(2)
662 IF(itype==5.OR.itype==9.AND.n/=comm_tag(n))
THEN
663 gamai=t_monvol(comm_tag(n))%RVOLU(1)
664 cpai =t_monvol(comm_tag(n))%RVOLU(7)
665 cpbi =t_monvol(comm_tag(n))%RVOLU(8)
666 cpci =t_monvol(comm_tag(n))%RVOLU(9)
667 cpdi =t_monvol(comm_tag(n))%RVOLU(56)
668 cpei =t_monvol(comm_tag(n))%RVOLU(57)
669 cpfi =t_monvol(comm_tag(n))%RVOLU(58)
670 IF(t_monvol(n)%RVOLU(1) /= gamai.OR.
671 . t_monvol(n)%RVOLU(7)/=cpai.OR.
672 . t_monvol(n)%RVOLU(8)/=cpbi.OR.
673 . t_monvol(n)%RVOLU(9)/=cpci.OR.
674 . t_monvol(n)%RVOLU(56)/=cpdi.OR.
675 . t_monvol(n)%RVOLU(57)/=cpei.OR.
678 titr = t_monvol(n)%TITLE
679 id1 = t_monvol(comm_tag(n))%ID
680 titr1 = t_monvol(comm_tag(n))%TITLE
681 CALL ancmsg(msgid=474,anmode=aninfo,msgtype=msgerror,
691 njet_new(nn) = t_monvol(nn)%NJET
694 itype = t_monvol(nn)%TYPE
695 IF (itype == 5 .OR. itype == 9)
THEN
696 IF (comm_tag(nn) /= nn)
THEN
697 njet_new(comm_tag(nn)) = njet_new(comm_tag(nn)) + njet_new(nn)
702 itype = t_monvol(nn)%TYPE
703 IF (itype == 5 .OR. itype == 9)
THEN
704 IF (comm_tag(nn) /= nn)
THEN
705 njet_new(nn) = njet_new(comm_tag(nn))
711 IF (comm_tag(nn) == nn)
THEN
713 njet = t_monvol(nn)%NJET
715 ALLOCATE(ibagjet_save(nibjet, njet))
716 ALLOCATE(rbagjet_save(nrbjet, njet))
719 ibagjet_save(jj, ii) = t_monvol(nn)%IBAGJET(jj, ii)
722 rbagjet_save(jj, ii) = t_monvol(nn)%RBAGJET(jj, ii)
726 ALLOCATE(ibagjet_save(nibjet, 0))
727 ALLOCATE(rbagjet_save(nrbjet, 0))
729 IF (
ALLOCATED(t_monvol(nn)%RBAGJET))
DEALLOCATE(t_monvol(nn)%RBAGJET)
730 IF (
ALLOCATED(t_monvol(nn)%IBAGJET))
DEALLOCATE(t_monvol(nn)%IBAGJET)
731 IF (njet_new(nn) > 0)
THEN
732 ALLOCATE(t_monvol(nn)%RBAGJET(nrbjet, njet_new(nn)),
733 . t_monvol(nn)%IBAGJET(nibjet, njet_new(nn)))
734 t_monvol(nn)%RBAGJET(1:nrbjet, 1:njet_new(nn)) = zero
735 t_monvol(nn)%IBAGJET(1:nibjet, 1:njet_new(nn)) = 0
738 t_monvol(nn)%IBAGJET(jj, ii) = ibagjet_save(jj, ii)
741 t_monvol(nn)%RBAGJET(jj, ii) = rbagjet_save(jj, ii)
745 IF (
ALLOCATED(ibagjet_save))
DEALLOCATE(ibagjet_save)
746 IF (
ALLOCATED(rbagjet_save))
DEALLOCATE(rbagjet_save)
750 IF (comm_tag(nn) /= nn)
THEN
752 njet = t_monvol(nn)%NJET
754 ALLOCATE(ibagjet_save(nibjet, njet))
755 ALLOCATE(rbagjet_save(nrbjet, njet))
758 ibagjet_save(jj, ii) = t_monvol(nn)%IBAGJET(jj, ii)
761 rbagjet_save(jj, ii) = t_monvol(nn)%RBAGJET(jj, ii)
765 ALLOCATE(ibagjet_save(nibjet, 0))
766 ALLOCATE(rbagjet_save(nrbjet, 0))
768 IF (
ALLOCATED(t_monvol(nn)%RBAGJET))
DEALLOCATE(t_monvol(nn)%RBAGJET)
769 IF (
ALLOCATED(t_monvol(nn)%IBAGJET))
DEALLOCATE(t_monvol(nn)%IBAGJET)
770 IF (njet_new(nn) > 0)
THEN
771 ALLOCATE(t_monvol(nn)%RBAGJET(nrbjet, njet_new(nn)),
772 . t_monvol(nn)%IBAGJET(nibjet, njet_new(nn)))
773 t_monvol(nn)%RBAGJET(1:nrbjet, 1:njet_new(nn)) = zero
774 t_monvol(nn)%IBAGJET(1:nibjet, 1:njet_new(nn)) = 0
777 t_monvol(nn)%IBAGJET(jj, ii) = ibagjet_save(jj, ii)
780 t_monvol(nn)%RBAGJET(jj, ii) = rbagjet_save(jj, ii)
784 IF (
ALLOCATED(ibagjet_save))
DEALLOCATE(ibagjet_save)
785 IF (
ALLOCATED(rbagjet_save))
DEALLOCATE(rbagjet_save)
794 itype=t_monvol(n)%TYPE
795 IF((itype==5.OR.itype==9).AND.n/=comm_tag(n))
THEN
796 ngroot =t_monvol(comm_tag(n))%IVOLU(8)
797 njet =t_monvol(n)%IVOLU(8)
802 t_monvol(comm_tag(n))%RBAGJET(1, ngroot + j) = t_monvol(n)%RBAGJET(1, j)
803 t_monvol(comm_tag(n))%RBAGJET(2, ngroot + j) = t_monvol(n)%RBAGJET(2, j)
804 t_monvol(comm_tag(n))%RBAGJET(3, ngroot + j) = t_monvol(n)%RBAGJET(3, j)
805 t_monvol(comm_tag(n))%RBAGJET(4, ngroot + j) = t_monvol(n)%RBAGJET(4, j)
806 t_monvol(comm_tag(n))%RBAGJET(16, ngroot + j) = t_monvol(n)%RBAGJET(16, j)
807 t_monvol(comm_tag(n))%RBAGJET(17, ngroot + j) = t_monvol(n)%RBAGJET(17, j)
808 t_monvol(comm_tag(n))%RBAGJET(18, ngroot + j) = t_monvol(n)%RBAGJET(18, j)
809 t_monvol(comm_tag(n))%IBAGJET(4, ngroot + j) = t_monvol(n)%IBAGJET(4, j)
811 t_monvol(comm_tag(n))%IBAGJET(13, ngroot + j) = t_monvol(n)%IBAGJET(13, j)
818 t_monvol(n)%IBAGJET(k, ngroot + 1) = t_monvol(n)%IBAGJET(k, j)
819 t_monvol(n)%IBAGJET(k, j) = 0
822 t_monvol(n)%RBAGJET(k, ngroot + 1) = t_monvol(n)%RBAGJET(k, j)
823 t_monvol(n)%RBAGJET(k, j) = zero
828 t_monvol(comm_tag(n))%IVOLU(8)=ngroot
829 t_monvol(comm_tag(n))%NJET = ngroot
836 itype=t_monvol(n)%TYPE
837 IF(itype==5.OR.itype==9.AND.n/=comm_tag(n))
THEN
838 njet = t_monvol(comm_tag(n))%NJET
840 t_monvol(n)%IBAGJET(4, i) = t_monvol(comm_tag(n))%IBAGJET(4, i)
841 IF(itype==9 .AND. t_monvol(n)%IBAGJET(13, i)==0)
THEN
842 IF(t_monvol(comm_tag(n))%IBAGJET(13, i) > 0)
THEN
843 t_monvol(n)%IBAGJET(13, i) = -t_monvol(comm_tag(n))%IBAGJET(13, i)
845 t_monvol(n)%IBAGJET(13, i) = t_monvol(comm_tag(n))%IBAGJET(13, i)
849 t_monvol(n)%RBAGJET(1, i) = t_monvol(comm_tag(n))%RBAGJET(1, i)
850 t_monvol(n)%RBAGJET(2, i) = t_monvol(comm_tag(n))%RBAGJET(2, i)
851 t_monvol(n)%RBAGJET(3, i) = t_monvol(comm_tag(n))%RBAGJET(3, i)
852 t_monvol(n)%RBAGJET(4, i) = t_monvol(comm_tag(n))%RBAGJET(4, i)
853 t_monvol(n)%RBAGJET(16, i) = t_monvol(comm_tag(n))%RBAGJET(16, i)
854 t_monvol(n)%RBAGJET(17, i) = t_monvol(comm_tag(n))%RBAGJET(17, i)
855 t_monvol(n)%RBAGJET(18, i) = t_monvol(comm_tag(n))%RBAGJET(18, i)
857 t_monvol(n)%IVOLU(8)=t_monvol(comm_tag(n))%IVOLU(8)
858 t_monvol(n)%NJET = t_monvol(comm_tag(n))%NJET
868 itype = t_monvol(nn)%TYPE
869 IF (itype >= 4 .AND. (itype <= 9 .OR. itype == 11))
THEN
870 t_monvol(nn)%IVOLU(9) = libjet
871 t_monvol(nn)%IVOLU(10) = lrbjet
872 libjet = libjet + t_monvol(nn)%NJET * nibjet
873 lrbjet = lrbjet + t_monvol(nn)%NJET * nrbjet
880 itype=t_monvol(n)%TYPE
881 IF(itype==5.OR.itype==9)
THEN
882 WRITE(iout,1001)t_monvol(n)%ID,trim(titr),monvoltyp(itype)
884 ti =t_monvol(n)%RVOLU(13)
885 gamai=t_monvol(n)%RVOLU(1)
886 cpai =t_monvol(n)%RVOLU(7)
887 cpbi =t_monvol(n)%RVOLU(8)
888 cpci =t_monvol(n)%RVOLU(9)
889 WRITE(iout,1410)gamai,cpai,cpbi,cpci
892 njet=t_monvol(n)%IVOLU(8)
895 imass=t_monvol(n)%IBAGJET(1, i)
896 IF(imass/=0)imass=npc(imass)
897 iflu =t_monvol(n)%IBAGJET(2, i)
898 fmass=t_monvol(n)%RBAGJET(5, i)
899 itemp=t_monvol(n)%IBAGJET(3, i)
900 IF(itemp/=0)itemp=npc(itemp)
901 ftemp=t_monvol(n)%RBAGJET(6, i)
902 isens=t_monvol(n)%IBAGJET(4, i)
903 IF (isens > 0) isens = sensors%SENSOR_TAB(isens)%SENS_ID
905 . imass,iflu,fmass,itemp,ftemp,isens
907 rmwg=t_monvol(n)%RBAGJET(1, i)
908 cpa =t_monvol(n)%RBAGJET(2, i)
909 cpb =t_monvol(n)%RBAGJET(3, i)
910 cpc =t_monvol(n)%RBAGJET(4, i)
912 cpg =cpa+cpb*ti+cpc*ti*ti
915 WRITE(iout,1440)gama,cpa,cpb,cpc
917 nj1=t_monvol(n)%IBAGJET(5, i)
918 nj2=t_monvol(n)%IBAGJET(6, i)
919 nj3=t_monvol(n)%IBAGJET(7, i)
920 ipt=t_monvol(n)%IBAGJET(8, i)
921 ipa=t_monvol(n)%IBAGJET(9, i)
922 ipz=t_monvol(n)%IBAGJET(10, i)
930 IF(ipt/=0)ipt=npc(ipt)
931 IF(ipa/=0)ipa=npc(ipa)
932 IF(ipz/=0)ipz=npc(ipz)
933 WRITE(iout,1461)itab(nj1),itab(nj2),itab(nj3),ipt,ipa,ipz
944 itype=t_monvol(n)%TYPE
945 IF(itype == 6 .OR. itype == 8)
THEN
946 nfvmbags = nfvmbags + 1
949 t_monvol(n)%IVOLU(45) = nfvmbags
953 itype=t_monvol(n)%TYPE
954 IF(itype == 6 .OR. itype == 8)
THEN
956 t_monvol(n)%IVOLU(29) = nfvmbags
964 ALLOCATE( t_monvol(n)%NUMBER_TRI_PER_PROC(nspmd) )
965 t_monvol(n)%NUMBER_TRI_PER_PROC(1:nspmd) = 0
971 1001
FORMAT(//5x,
'VOLUME NUMBER ',i10,
972 . / 5x,
'------------------------',
974 . / 5x,
'TYPE OF MONITORED VOLUME. . . . . . . .=',a10)
976 . 5x,
'CHARACTERISTICS OF INITIAL GAZ ',
977 . /5x,
'------------------------------ ',
978 . /5x,
'GAMMA AT INITIAL TEMPERATURE. . . . . .=',1pg20.13,
979 . /5x,
'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,
980 . /5x,
'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,
981 . /5x,
'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13/)
986 . 5x,
'NUMBER OF INFLATORS . . . . . . . . . .=',i10/)
988 . 5x,
'INFLATOR NUMBER . . . . . . . . . . . .=',i10,
989 . /15x,
'TIME FUNCTION FOR INCOMING TOTAL MASS .=',i10,
990 . /15x,
' or MASS FLUX if IFLU=1 . . . . IFLU =',i10,
991 . /15x,
'SCALE FACTOR FOR INCOMING TOTAL MASS .=',1pg20.13,
992 . /15x,
'TIME FUNCTION FOR INCOMIMG GAS TEMP . .=',i10,
993 . /15x,
'SCALE FACTOR FOR INCOMIMG GAS TEMP . .=',1pg20.13,
994 . /15x,
'SENSOR NUMBER . . . . . . . . . . . . .=',i10)
996 . /15x,
'GAZ CHARACTERISTICS ',
997 . /15x,
'------------------- ',
998 . /15x,
'GAMMA AT INITIAL TEMPERATURE. . . . . .=',1pg20.13,
999 . /15x,
'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,
1000 . /15x,
'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,
1001 . /15x,
'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13)
1003 . /15x,
'JETTING OPTION. . . . . . . . . . . . .=',i10,
1004 . /15x,
'----------------------------------------')
1006 . 15x,
'DIHEDRAL JET. . . . . . . . . . . . . .',
1007 . /15x,
'NODE NUMBER DEFINING INJECTION CENTER .=',i10,
1008 . /15x,
'NODE NUMBER DEFINING INJECTION AXIS . .=',i10,
1009 . /15x,
'NODE NUMBER DEFINING BASE LINE. . . . .=',i10,
1010 . /15x,
'JETTING PRESSURE TIME CURVE NUMBER. . .=',i10,
1011 . /15x,
'JETTING PRESSURE THETA CURVE NUMBER . .=',i10,
1012 . /15x,
'JETTING PRESSURE DIST. CURVE NUMBER . .=',i10,
1013 . /15x,
'TIME FUNCTION SCALE FACTOR . .=',1pg20.13,
1014 . /15x,
'THETA FUNCTION SCALE FACTOR . .=',1pg20.13,
1015 . /15x,
'DIST FUNCTION SCALE FACTOR . .=',1pg20.13)
1016 1703
FORMAT(5x,
'FVMBAG MESHING, VOLUME NUMBER',i10,
1017 . /5x,
'----------------- ',
1018 . /15x,
'TETRAMESH CREATED AUTOMATICALLY',
1019 . /15x,
' NUMBER OF TETRAHEDRA',i10,
1020 . /15x,
' NUMBER OF ADDED INTERNAL NODES',i10)
1023 . //,
' MONITORED VOLUMES TYPE COMMU : GAS ORGANIZATION'/
1024 .
' -----------------------------------------------')