OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
init_monvol_mod Module Reference

Functions/Subroutines

subroutine init_monvol (t_monvol, t_monvol_metadata, ixc, ixtg, x, npc, itab, igrsurf, sensors, igrbric, mfi, ixs, v, libagale, lrbagale)

Function/Subroutine Documentation

◆ init_monvol()

subroutine init_monvol_mod::init_monvol ( type(monvol_struct_), dimension(nvolu), intent(inout) t_monvol,
type(monvol_metadata_), intent(inout) t_monvol_metadata,
integer, dimension(nixc,*) ixc,
integer, dimension(nixtg,*) ixtg,
x,
integer, dimension(*) npc,
integer, dimension(*) itab,
type (surf_), dimension(nsurf) igrsurf,
type (sensors_), intent(in) sensors,
type (group_), dimension(ngrbric) igrbric,
integer mfi,
integer, dimension(nixs,*) ixs,
v,
integer libagale,
integer lrbagale )

Definition at line 60 of file init_monvol.F.

66C-----------------------------------------------
67C M o d u l e s
68C-----------------------------------------------
69 USE r2r_mod
70 USE message_mod
72 USE groupdef_mod
74 USE sensor_mod
75 USE my_alloc_mod
77 USE fvbric1_mod , ONLY : fvbric1
78 USE fvbric2_mod , ONLY : fvbric2
79 use element_mod , only : nixs,nixc,nixtg
80C-----------------------------------------------
81C I m p l i c i t T y p e s
82C-----------------------------------------------
83#include "implicit_f.inc"
84C-----------------------------------------------
85C C o m m o n B l o c k s
86C-----------------------------------------------
87#include "com01_c.inc"
88#include "com04_c.inc"
89#include "scr03_c.inc"
90#include "param_c.inc"
91#include "units_c.inc"
92C-----------------------------------------------
93C D u m m y A r g u m e n t s
94C-----------------------------------------------
95 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),NPC(*),ITAB(*),MFI,IXS(NIXS,*),LIBAGALE,LRBAGALE
96 my_real x(3,*), v(3,*)
97C-----------------------------------------------
98 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
99 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
100 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU), INTENT(INOUT) :: T_MONVOL
101 TYPE(MONVOL_METADATA_), INTENT(INOUT) :: T_MONVOL_METADATA
102 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
103C-----------------------------------------------
104C L o c a l V a r i a b l e s
105C-----------------------------------------------
106 INTEGER :: NN, LCA, LIBJET, LRBJET, LIBHOL, LRBHOL
107 INTEGER I, J, ID, ITYPE, K, NCA, N,
108 . IMASS, ITEMP, IFLU, ISENS,
109 . IJET,NJ1,NJ2,NJ3,IPT,IPA,IPZ,
110 . NNI,NTGI,
111 . NJET,NVENT,
112 . NGROOT,
113 . NP,
114 . IBRIC, ILVOUT, IADALE,
115 . RADALE, NNS, IADALE2, NNO, NTG, IADALE3, IADALE4, NBRIC,
116 . IADALE5, IADALE6, IADALE7, IADALE8, NTGA, NNA, IADALE9,
117 . IADALE10, IADALE11,
118 . IADALE12,
119 . NVB,
120 . IADALE13, NTGT, II, IBID(1), JJ
121 INTEGER ID1,ID2
122 INTEGER MAX_ID
123 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGE, ITABINV, TAGVENT, ITABINV1, ITABINV2, INDEX
124 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGNODBR
125 INTEGER, DIMENSION(:), ALLOCATABLE :: ITAB_SAVE
126 INTEGER :: NFVMBAGS
127 INTEGER :: NJET_NEW(NVOLU)
128 TYPE(GROUP_) :: DUMMY(2)
129
130 my_real ti,gamai, cpai, cpbi, cpci, cpdi, cpei, cpfi, gama, cpa, cpb, cpc,rmwg, cpg, cvg, fmass, ftemp
131 CHARACTER MESS*40
132 CHARACTER(len=nchartitle) :: TITR,TITR1
133 CHARACTER*10 MONVOLTYP(11)
134 INTEGER :: NB_TETRA, NB_VERTICES, NB_EXTRA_VERTICES
135 LOGICAL :: FOUND
136 INTEGER :: SIZE1, SIZE2,LENGTH
137 INTEGER :: COMM_TAG(NVOLU), NCOMMU
138 INTEGER, DIMENSION(:, :), ALLOCATABLE :: IBAGJET_SAVE
139 my_real, DIMENSION(:, :), ALLOCATABLE :: rbagjet_save
140C-----------------------------------------------
141C E x t e r n a l F u n c t i o n s
142C-----------------------------------------------
143 INTEGER USR2SYS
144 EXTERNAL usr2sys
145C-----------------------------------------------
146C D a t a
147C-----------------------------------------------
148 DATA mess/'MONITORED VOLUME DEFINITION '/
149 DATA monvoltyp/' AREA',' PRES',' GAS',
150 . ' AIRBAG',' COMMU',' FVMBAG',
151 . ' AIRBAG1',' FVMBAG1',' COMMU1',
152 . ' LFLUID',' FVMBAG2'/
153C-----------------------------------------------
154 k = 0
155 mfi = 0
156 nvb = 0
157 ibid = 0
158C-------------------------------------
159C Allocate KMESH (for type 8 airbags)
160C-------------------------------------
161 IF(.NOT.(ALLOCATED(kmesh))) ALLOCATE(kmesh(nvolu))
162 tetramesher_used = .false.
163 nb_total_node = numnod
164 IF(.NOT.(ALLOCATED(node_coord))) ALLOCATE(node_coord(3, numnod))
165 DO i = 1, numnod
166 node_coord(1, i) = x(1, i)
167 node_coord(2, i) = x(2, i)
168 node_coord(3, i) = x(3, i)
169 ENDDO
170 nb_total_solids = numels
171 IF(.NOT.(ALLOCATED(ixs_temp))) ALLOCATE(ixs_temp(nixs * numels))
172 DO i = 1, numels
173 DO ii = 1, nixs
174 ixs_temp(nixs * (i - 1) + ii) = ixs(ii, i)
175 ENDDO
176 ENDDO
177 IF(.NOT.(ALLOCATED(itab_tmp))) ALLOCATE(itab_tmp(numnod), itabm1_tmp(2 * numnod))
178 DO i = 1, numnod
179 itab_tmp(i) = itab(i)
180 ENDDO
181!!! Completion of ITAB
182 max_id = maxval(itab(1:numnod))
183
184 DO i = numnod + 1, nb_total_node
185 max_id = max_id + 1
186 itab_tmp(i) = max_id
187 ENDDO
188
190
191 iadale=1
192 radale=1
193
194 tetramesher_used = .false.
195 DO n = 1, nvolu
196 itype = t_monvol(n)%TYPE
197 IF (itype == 11) THEN
198C FVMABG2 are in fact FVMBAG1 with simplified input
199 t_monvol(n)%TYPE = 8
200 t_monvol(n)%IVOLU(2) = t_monvol(n)%TYPE
201 ENDIF
202 kmesh(n) = 0
203 IF (itype == 6) THEN
204 kmesh(n) = 1
205 ENDIF
206 IF (itype == 8 .OR. itype == 11) THEN
207 kmesh(n) = t_monvol(n)%IVOLU(30)
208 ENDIF
209 IF (kmesh(n) >= 2) tetramesher_used = .true.
210 ENDDO
211
212 DO n=1,nvolu
213 itype = t_monvol(n)%TYPE
214 id = t_monvol(n)%ID
215 ilvout = t_monvol(n)%IVOLU(44)
216 titr = t_monvol(n)%TITLE
217 nn =igrsurf(t_monvol(n)%EXT_SURFID)%NSEG
218 IF (itype == 6.OR.itype == 8) THEN
219C------------------------------------------
220C Elements of airbag and internal elements
221C------------------------------------------
222 t_monvol(n)%IVOLU(31)=iadale-1
223 t_monvol(n)%IVOLU(34)=radale-1
224C Tag the nodes of additional bricks
225 ALLOCATE(tagnodbr(numnod))
226 tagnodbr(1:numnod)=0
227 ibric=t_monvol(n)%IVOLU(61)
228 IF (ibric/=0) THEN
229 nbric=igrbric(ibric)%NENTITY
230 t_monvol(n)%NBRIC = nbric
231 ALLOCATE(t_monvol(n)%TBRIC(2, nbric))
232 ALLOCATE(t_monvol(n)%TFAC(12, nbric))
233 CALL fvbric0(
234 . ibid ,ixs ,1 ,nbric ,
235 . t_monvol(n)%ID,t_monvol(n)%IVOLU(44) ,titr ,tagnodbr,
236 . t_monvol(n)%TBRIC ,t_monvol(n)%TFAC,numnod ,igrbric,ibric,itype)
237 ENDIF
238C
239 ALLOCATE(tage(nn),itabinv(numnod),tagvent(numnod))
240C
241
242 CALL aleno(nn ,igrsurf(t_monvol(n)%EXT_SURFID)%NODES, nns,itabinv,
243 . tage, tagvent, tagnodbr, t_monvol(n))
244
245 DEALLOCATE(tagnodbr)
246C
247 nni=0
248
249 IF (t_monvol(n)%INT_SURFID /= 0) THEN
250 ALLOCATE(itabinv1(numnod))
251 itabinv1(1:numnod) = 0
252 np = igrsurf(t_monvol(n)%INT_SURFID)%NSEG
253 CALL fvnodi(np ,igrsurf(t_monvol(n)%INT_SURFID)%NODES, nni,itabinv1 ,
254 . t_monvol(n))
255 ENDIF
256! Number of nodes on external surface
257 t_monvol(n)%IVOLU(32)=nns
258! Number of nodes on internal surface
259 t_monvol(n)%IVOLU(68)=nni
260
261 iadale2=iadale+nns+nni
262 nno=3
263
264
265! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- !
266! ***************************************************** !
267! ** Triangulation of external and internal surfaces ** !
268! ***************************************************** !
269! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- !
270 ntg = 0
271 ntgi = 0
272 size1 = 0
273 size2 = 0
274 IF (t_monvol(n)%EXT_SURFID > 0) THEN
275 size1 = igrsurf(t_monvol(n)%EXT_SURFID)%NSEG
276 ENDIF
277 IF (t_monvol(n)%INT_SURFID > 0) THEN
278 size2 = igrsurf(t_monvol(n)%INT_SURFID)%NSEG
279 ENDIF
280! Keep track of original elements ids
281 length=2 * (size1 + size2 + t_monvol(n)%NB_FILL_TRI)
282 CALL my_alloc(t_monvol(n)%FVBAG_ELEMID,length)
283 CALL my_alloc(t_monvol(n)%ELTG, (2 * (size1 + size2)))
284 t_monvol(n)%ELTG(1:size1 + size2) = 0
285 CALL monvol_triangulate_surface(t_monvol(n), igrsurf, itabinv, itabinv1, tage,
286 . x, kmesh(n), nns, nni, ntg, ntgi, size1, size2, t_monvol(n)%FVBAG_ELEMID)
287
288! Check for duplicated triangles on internal + external surface of the airbag
289
290 CALL monvol_check_delete_duplicated(t_monvol(n), ntg, ntgi, itab)
291
292 IF (ALLOCATED(itabinv1)) DEALLOCATE(itabinv1)
293 IF (ALLOCATED(itabinv)) DEALLOCATE(itabinv)
294 IF (ALLOCATED(itabinv2)) DEALLOCATE(itabinv2)
295 IF (ALLOCATED(index)) DEALLOCATE(index)
296 IF (ALLOCATED(tage)) DEALLOCATE(tage)
297
298 t_monvol(n)%IVOLU(33)=ntg
299 t_monvol(n)%IVOLU(69)=ntgi
300 iadale3=iadale2+nno*ntg
301
302 IF (ntgi > 0) THEN
303 ALLOCATE(t_monvol(n)%POROSITY(ntgi))
304 ALLOCATE(t_monvol(n)%THSURF_TAG(nsurf, ntgi + 1))
305 ENDIF
306
307 IF (t_monvol(n)%INT_SURFID /= 0) THEN
308 IF (.NOT. tetramesher_used) THEN
309 CALL fvbric01(t_monvol(n)%NODES, t_monvol(n)%ELEM(1, ntg + 1), ntgi, numnod, nbric, ixs,
310 . t_monvol(n)%TBRIC, t_monvol(n)%TFAC)
311 ENDIF
312 ENDIF
313 ALLOCATE(t_monvol(n)%ELAREA(ntg + ntgi))
314 iadale3=iadale3+nno*ntgi
315
316 IF (kmesh(n) >= 2) THEN
317! Automatic tetrameshing
318 SELECT CASE (kmesh(n))
319 CASE (12, 14)
320! Hypermesh (12), Hypermesh + writing of mesh as an include file (14)
321 CALL hypermesh_tetra(t_monvol(n), nixs, n, kmesh(n),
322 . nb_extra_vertices, nb_tetra, nb_vertices)
323 CASE DEFAULT
324
325 END SELECT
326 WRITE(iout,1703) id,nb_tetra, nb_extra_vertices
327 IF (ALLOCATED(itab_save)) DEALLOCATE(itab_save)
328 ALLOCATE(itab_save(nb_total_node_old))
330
331 DEALLOCATE(itab_tmp, itabm1_tmp)
332!!! First, determine max user ID (external ID)
334 DO i = 1, nb_total_node_old
335 itab_tmp(i) = itab_save(i)
336 ENDDO
337!!! Completion of ITAB
338 max_id = maxval(itab_tmp(1:nb_total_node_old))
339
341 max_id = max_id + 1
342 itab_tmp(i) = max_id
343 ENDDO
344
346
347!!! Output .inc file
348 IF (kmesh(n) == 4 .OR. kmesh(n) == 14) THEN
349 CALL writemesh(n)
350 ENDIF
351
352 t_monvol(n)%NBRIC = nb_tetra
353 ALLOCATE(t_monvol(n)%TBRIC(2, nb_tetra))
354 ALLOCATE(t_monvol(n)%TFAC(12, nb_tetra))
355
356 IF (ALLOCATED(ibufssg_temp)) DEALLOCATE(ibufssg_temp)
357 ALLOCATE(ibufssg_temp(nb_tetra))
358 DO i = 1, nb_tetra
360 ENDDO
361
362 IF (ALLOCATED(tagnodbr)) DEALLOCATE(tagnodbr)
363 ALLOCATE(tagnodbr(nb_total_node))
364 tagnodbr(1:nb_total_node)=0
365
366 CALL fvbric0(
367 . ibufssg_temp,ixs_temp ,2 ,nb_tetra,
368 . t_monvol(n)%ID ,t_monvol(n)%IVOLU(44) ,titr ,tagnodbr,
369 . t_monvol(n)%TBRIC ,t_monvol(n)%TFAC,nb_total_node ,dummy,ibric,itype)
370 IF (t_monvol(n)%INT_SURFID > 0) THEN
371 CALL fvbric01(t_monvol(n)%NODES, t_monvol(n)%ELEM(1, ntg + 1), ntgi, nb_total_node,
372 . nb_tetra, ixs_temp, t_monvol(n)%TBRIC, t_monvol(n)%TFAC)
373 ENDIF
374
375 DEALLOCATE(tagnodbr)
376 ENDIF
377
378C--------------------------------------
379C Holes injector and wind elements
380C--------------------------------------
381 njet=t_monvol(n)%IVOLU(8)
382 ALLOCATE(t_monvol(n)%ITAGEL(t_monvol(n)%NTG +t_monvol(n)%NTGI))
383 t_monvol(n)%ITAGEL(:) = 0
384 ALLOCATE(t_monvol(n)%MATTG(t_monvol(n)%NTG +t_monvol(n)%NTGI))
385 t_monvol(n)%MATTG(:) = 0
386
387 CALL fvinject(
388 . t_monvol(n)%NODES , t_monvol(n)%ELEM, t_monvol(n)%IBAGJET,
389 . njet, igrsurf,
390 . t_monvol(n)%ITAGEL,nns+nni, ntg,
391 . t_monvol(n)%ID ,tagvent, titr,
392 . itab )
393
394 nvent=t_monvol(n)%IVOLU(11)
395 ntgt=ntg+ntgi
396 iadale4=iadale3+ntgt
397 iadale5=iadale4+ntgt
398 IF (tetramesher_used) THEN
399 CALL fvelsurf(
400 . t_monvol(n)%NODES, t_monvol(n)%ELEM, t_monvol(n)%FVBAG_ELEMID(1:ntgt), ixc, ixtg, ntgt,
401 . t_monvol(n)%ELTG, t_monvol(n)%MATTG, nb_total_node, .true.)
402 CALL fvventhole(
403 . t_monvol(n)%NODES ,t_monvol(n)%ELEM,t_monvol(n)%IBAGHOL,
404 . nvent, igrsurf,
405 . t_monvol(n)%ITAGEL,nns+nni, ntg,
406 . t_monvol(n)%ID ,tagvent, titr,
407 . t_monvol(n)%ELTG, nb_total_node)
408 ELSE
409 CALL fvelsurf(
410 . t_monvol(n)%NODES, t_monvol(n)%ELEM, t_monvol(n)%FVBAG_ELEMID(1:ntgt), ixc, ixtg, ntgt,
411 . t_monvol(n)%ELTG, t_monvol(n)%MATTG, numnod, .true.)
412 CALL fvventhole(
413 . t_monvol(n)%NODES ,t_monvol(n)%ELEM,t_monvol(n)%IBAGHOL,
414 . nvent, igrsurf,
415 . t_monvol(n)%ITAGEL,nns+nni, ntg,
416 . t_monvol(n)%ID ,tagvent, titr,
417 . t_monvol(n)%ELTG, numnod)
418 ENDIF
419 DEALLOCATE(tagvent)
420 DEALLOCATE(t_monvol(n)%FVBAG_ELEMID)
421C
422 IF (tetramesher_used) THEN
423 CALL fvelprint(
424 . ixc, ixtg, ntgt, t_monvol(n)%ITAGEL, t_monvol(n)%ELTG,
425 . t_monvol(n)%IBAGHOL, ilvout, 0 )
426 ELSE
427 CALL fvelprint(
428 . ixc, ixtg, ntgt, t_monvol(n)%ITAGEL, t_monvol(n)%ELTG,
429 . t_monvol(n)%IBAGHOL, ilvout, 0 )
430 ENDIF
431C----------------------------------
432C Additional volume elements
433C----------------------------------
434 ibric=t_monvol(n)%IVOLU(61)
435 IF (ibric/=0 .OR. (ibric==0 .AND. kmesh(n)>=2)) THEN
436
437 IF (kmesh(n) >= 2) THEN
438 nbric = nb_tetra
439 iadale5=iadale4+2*ntgt
440 iadale6=iadale5+2*nbric
441 iadale7=iadale6+12*nbric
442 iadale8=iadale7+2*ntgt
443 t_monvol(n)%IVOLU(19)=iadale5
444 t_monvol(n)%IVOLU(20)=iadale8
445
446!!! Now we're done et ready to go on filling bufalei
447 ELSE
448 nbric=igrbric(ibric)%NENTITY
449 iadale5=iadale4+2*ntgt
450 iadale6=iadale5+2*nbric
451 iadale7=iadale6+12*nbric
452 iadale8=iadale7+2*ntgt
453 t_monvol(n)%IVOLU(19)=iadale5
454 t_monvol(n)%IVOLU(20)=iadale8
455
456 ENDIF
457
458 ALLOCATE(t_monvol(n)%TAGELS(t_monvol(n)%NTG + 2 * t_monvol(n)%NTGI))
459 t_monvol(n)%TAGELS(:) = 0
460 IF (tetramesher_used) THEN
461 CALL fvbric1(t_monvol(n),
462 . t_monvol(n)%NODES, t_monvol(n)%ELEM, ixs_temp,
463 . t_monvol(n)%TBRIC,ntg, ntga, nbric,
464 . t_monvol(n)%TFAC,t_monvol(n)%TAGELS, t_monvol(n)%ID, ntgi,
465 . nna, t_monvol(n)%IVOLU(44),
466 . t_monvol(n)%ELTG,node_coord, titr,
468 ELSE
469 CALL fvbric1(t_monvol(n),
470 . t_monvol(n)%NODES, t_monvol(n)%ELEM, ixs,
471 . t_monvol(n)%TBRIC,ntg, ntga, nbric,
472 . t_monvol(n)%TFAC,t_monvol(n)%TAGELS, t_monvol(n)%ID, ntgi,
473 . nna, t_monvol(n)%IVOLU(44),
474 . t_monvol(n)%ELTG,x, titr, numnod)
475 ENDIF
476C
477 iadale9 =iadale8+nna
478 iadale10=iadale9+3*ntga
479 iadale11=iadale10+ntga
480 IF (tetramesher_used) THEN
481 CALL fvbric2(
482 . t_monvol(n)%ELEM, ixs_temp, ntg+ntgi, nbric,
483 . t_monvol(n)%TBRIC, t_monvol(n)%TFAC, t_monvol(n)%TAGELS, ntga,
484 . t_monvol(n)%IBUFA, nna, t_monvol(n)%ELEMA,
485 . t_monvol(n)%TAGELA, t_monvol(n)%BRNA,
487 ELSE
488 CALL fvbric2(
489 . t_monvol(n)%ELEM, ixs, ntg+ntgi, nbric,
490 . t_monvol(n)%TBRIC, t_monvol(n)%TFAC, t_monvol(n)%TAGELS, ntga,
491 . t_monvol(n)%IBUFA, nna, t_monvol(n)%ELEMA,
492 . t_monvol(n)%TAGELA, t_monvol(n)%BRNA, numnod)
493 ENDIF
494C
495 iadale12=iadale11+8*nbric
496 IF (tetramesher_used) THEN
497 CALL fvbric3(
498 . t_monvol(n)%NODES, t_monvol(n)%IBUFA, nns+nni, nbric, nna,
499 . t_monvol(n)%TBRIC, t_monvol(n)%BRNA, t_monvol(n)%NCONA, itab_tmp,
500 . ilvout, nb_total_node,t_monvol(n)%IVOLU(38),t_monvol(n)%RVOLU(67),kmesh(n), v )
501
502 ELSE
503 CALL fvbric3(
504 . t_monvol(n)%NODES, t_monvol(n)%IBUFA, nns+nni, nbric, nna,
505 . t_monvol(n)%TBRIC, t_monvol(n)%BRNA, t_monvol(n)%NCONA, itab,
506 . ilvout, numnod, t_monvol(n)%IVOLU(38),t_monvol(n)%RVOLU(67),kmesh(n), v )
507 ENDIF
508 ELSE
509 nbric=0
510 ntga=ntg+ntgi
511 nna=0
512 iadale5=iadale4+2*ntga
513 iadale6=iadale5
514 iadale7=iadale6
515 iadale8=iadale7+2*ntga
516 iadale9=iadale8
517 iadale10=iadale9+3*ntga
518 iadale11=iadale10+ntga
519 iadale12=iadale11
520 t_monvol(n)%IVOLU(19)=iadale5
521 t_monvol(n)%IVOLU(20)=iadale8
522
523 t_monvol(n)%NTGA = ntga
524 ALLOCATE(t_monvol(n)%TAGELS(ntg + 2 * ntgi))
525 DO i = 1, ntg + 2 * ntgi
526 t_monvol(n)%TAGELS(i) = 0
527 ENDDO
528 ALLOCATE(t_monvol(n)%ELEMA(3, ntga))
529 DO i = 1, ntga
530 t_monvol(n)%ELEMA(1, i) = t_monvol(n)%ELEM(1, i)
531 t_monvol(n)%ELEMA(2, i) = t_monvol(n)%ELEM(2, i)
532 t_monvol(n)%ELEMA(3, i) = t_monvol(n)%ELEM(3, i)
533 ENDDO
534 ALLOCATE(t_monvol(n)%TAGELA(ntga))
535 DO i = 1, ntga
536 t_monvol(n)%TAGELA(i) = i
537 ENDDO
538 ENDIF
539 t_monvol(n)%IVOLU(62) = nbric
540 t_monvol(n)%IVOLU(63) = ntga
541 t_monvol(n)%IVOLU(64) = nna
542 t_monvol(n)%NNA = nna
543 IF (nna > 0) THEN
544 ALLOCATE(t_monvol(n)%VELOCITY(3, nna), t_monvol(n)%NODE_COORD(3, nna))
545 ENDIF
546C
547 iadale13=iadale12+16*nna
548 t_monvol(n)%IVOLU(18)=iadale13-1
549! Copy addresses to structure
550 t_monvol(n)%IADALE = iadale
551 t_monvol(n)%IADALE2 = iadale2
552 t_monvol(n)%IADALE3 = iadale3
553 t_monvol(n)%IADALE4 = iadale4
554 t_monvol(n)%IADALE5 = iadale5
555 t_monvol(n)%IADALE6 = iadale6
556 t_monvol(n)%IADALE7 = iadale7
557 t_monvol(n)%IADALE8 = iadale8
558 t_monvol(n)%IADALE9 = iadale9
559 t_monvol(n)%IADALE10 = iadale10
560 t_monvol(n)%IADALE11 = iadale11
561 t_monvol(n)%IADALE12 = iadale12
562 t_monvol(n)%IADALE12 = iadale13
563 iadale=iadale13+nsurf*(ntgi+1)
564 radale=radale+7*(nns+nni)+4*ntg+13*nna+5*ntgi
565 mfi=mfi+ 7*(nns+nni)+4*ntg+13*nna+5*ntgi
566C
567 t_monvol(n)%IVOLU(56)=0
568 libagale=iadale-1
569 ENDIF
570 ENDDO
571C
572 libagale=iadale-1
573 lrbagale=radale-1
574
575! ********************* !
576! Communicating airbags !
577! ********************* !
578! Change to local monvol ID
579 lca = 0
580 ncommu = 0
581 comm_tag(1:nvolu) = 0
582 DO nn = 1, nvolu
583 itype = t_monvol(nn)%TYPE
584 IF (itype == 5 .OR. itype == 9) THEN
585 ncommu = ncommu + 1
586 nca = t_monvol(nn)%NCA
587 DO ii = 1, nca
588 id = t_monvol_metadata%ICBAG(1, ii + lca)
589 found = .false.
590 DO jj = 1, nvolu
591 IF (id == t_monvol(jj)%ID) THEN
592 t_monvol_metadata%ICBAG(1, ii + lca) = jj
593 found = .true.
594 EXIT
595 ENDIF
596 ENDDO
597 IF (.NOT. found) THEN
598 CALL ancmsg(msgid = 15, anmode = aninfo, msgtype = msgerror,
599 . i2 = id, i1 = t_monvol(nn)%ID, c1 = t_monvol(nn)%TITLE)
600 ELSE
601! Check compatibility : type 5 with type 5 only, and type 9 with type 9 only
602 IF (itype == 5 .AND. t_monvol(jj)%TYPE /= 5 .OR.
603 . itype == 9 .AND. t_monvol(jj)%TYPE /= 9) THEN
604 CALL ancmsg(msgid = 16, anmode = aninfo, msgtype = msgerror,
605 . i1 = t_monvol(nn)%ID, c1 = t_monvol(nn)%TITLE,
606 . i2 = t_monvol(nn)%TYPE, c2 = t_monvol(jj)%TITLE)
607 ENDIF
608 ENDIF
609 ENDDO
610 lca = lca + nca
611 ENDIF
612 ENDDO
613
614! Tag communicting airbags
615 comm_tag(1:nvolu) = 0
616 lca = 0
617 DO nn = 1, nvolu
618 itype = t_monvol(nn)%TYPE
619 IF (itype == 5 .OR. itype == 9) THEN
620 nca = t_monvol(nn)%NCA
621 IF (comm_tag(nn) == 0) THEN
622 comm_tag(nn) = nn
623 DO ii = 1, nca
624 id1 = t_monvol_metadata%ICBAG(1, ii + lca)
625 IF (comm_tag(id1) /= 0) THEN
626 comm_tag(nn) = comm_tag(id1)
627 DO jj = 1, nca
628 id2 = t_monvol_metadata%ICBAG(1, jj + lca)
629 comm_tag(id2) = comm_tag(id1)
630 ENDDO
631 ENDIF
632 ENDDO
633 ENDIF
634 lca = lca + nca
635 ENDIF
636 ENDDO
637! *************** !
638! Venthole Address!
639! *************** !
640 nventtot = 0
641 DO nn = 1, nvolu
642 t_monvol(nn)%IVOLU(16) = nventtot
643 nvent = t_monvol(nn)%NVENT
644 nventtot = nventtot + nvent
645 ENDDO
646 libhol = 0
647 lrbhol = 0
648 DO nn = 1, nvolu
649 itype = t_monvol(nn)%TYPE
650 IF (itype >= 3.AND.(itype <= 9 .OR. itype == 11))THEN
651 t_monvol(nn)%IVOLU(12) = libhol
652 t_monvol(nn)%IVOLU(13) = lrbhol
653 nvent = t_monvol(nn)%NVENT
654 libhol = libhol + nvent * nibhol
655 lrbhol = lrbhol + nvent * nrbhol
656 ENDIF
657 ENDDO
658C----------------------------------------------------------------------------
659C Airbags communicators, check the characteristics of the gas at the initial.
660C----------------------------------------------------------------------------
661 DO n=1,nvolu
662 itype=t_monvol(n)%IVOLU(2)
663 IF(itype==5.OR.itype==9.AND.n/=comm_tag(n))THEN
664 gamai=t_monvol(comm_tag(n))%RVOLU(1)
665 cpai =t_monvol(comm_tag(n))%RVOLU(7)
666 cpbi =t_monvol(comm_tag(n))%RVOLU(8)
667 cpci =t_monvol(comm_tag(n))%RVOLU(9)
668 cpdi =t_monvol(comm_tag(n))%RVOLU(56)
669 cpei =t_monvol(comm_tag(n))%RVOLU(57)
670 cpfi =t_monvol(comm_tag(n))%RVOLU(58)
671 IF(t_monvol(n)%RVOLU(1) /= gamai.OR.
672 . t_monvol(n)%RVOLU(7)/=cpai.OR.
673 . t_monvol(n)%RVOLU(8)/=cpbi.OR.
674 . t_monvol(n)%RVOLU(9)/=cpci.OR.
675 . t_monvol(n)%RVOLU(56)/=cpdi.OR.
676 . t_monvol(n)%RVOLU(57)/=cpei.OR.
677 . t_monvol(n)%RVOLU(58)/=cpfi)THEN
678 id = t_monvol(n)%ID
679 titr = t_monvol(n)%TITLE
680 id1 = t_monvol(comm_tag(n))%ID
681 titr1 = t_monvol(comm_tag(n))%TITLE
682 CALL ancmsg(msgid=474,anmode=aninfo,msgtype=msgerror,
683 . i1=id,
684 . c1=titr,
685 . i2=id1,
686 . c2=titr1)
687 ENDIF
688 ENDIF
689 ENDDO
690
691 DO nn = 1, nvolu
692 njet_new(nn) = t_monvol(nn)%NJET
693 ENDDO
694 DO nn = 1, nvolu
695 itype = t_monvol(nn)%TYPE
696 IF (itype == 5 .OR. itype == 9) THEN
697 IF (comm_tag(nn) /= nn) THEN
698 njet_new(comm_tag(nn)) = njet_new(comm_tag(nn)) + njet_new(nn)
699 ENDIF
700 ENDIF
701 ENDDO
702 DO nn = 1, nvolu
703 itype = t_monvol(nn)%TYPE
704 IF (itype == 5 .OR. itype == 9) THEN
705 IF (comm_tag(nn) /= nn) THEN
706 njet_new(nn) = njet_new(comm_tag(nn))
707 ENDIF
708 ENDIF
709 ENDDO
710
711 DO nn = 1, nvolu
712 IF (comm_tag(nn) == nn) THEN
713! Root communicating airbag
714 njet = t_monvol(nn)%NJET
715 IF (njet > 0) THEN
716 ALLOCATE(ibagjet_save(nibjet, njet))
717 ALLOCATE(rbagjet_save(nrbjet, njet))
718 DO ii = 1, njet
719 DO jj = 1, nibjet
720 ibagjet_save(jj, ii) = t_monvol(nn)%IBAGJET(jj, ii)
721 ENDDO
722 DO jj = 1, nrbjet
723 rbagjet_save(jj, ii) = t_monvol(nn)%RBAGJET(jj, ii)
724 ENDDO
725 ENDDO
726 ELSE
727 ALLOCATE(ibagjet_save(nibjet, 0))
728 ALLOCATE(rbagjet_save(nrbjet, 0))
729 ENDIF
730 IF (ALLOCATED(t_monvol(nn)%RBAGJET)) DEALLOCATE(t_monvol(nn)%RBAGJET)
731 IF (ALLOCATED(t_monvol(nn)%IBAGJET)) DEALLOCATE(t_monvol(nn)%IBAGJET)
732 IF (njet_new(nn) > 0) THEN
733 ALLOCATE(t_monvol(nn)%RBAGJET(nrbjet, njet_new(nn)),
734 . t_monvol(nn)%IBAGJET(nibjet, njet_new(nn)))
735 t_monvol(nn)%RBAGJET(1:nrbjet, 1:njet_new(nn)) = zero
736 t_monvol(nn)%IBAGJET(1:nibjet, 1:njet_new(nn)) = 0
737 DO ii = 1, njet
738 DO jj = 1, nibjet
739 t_monvol(nn)%IBAGJET(jj, ii) = ibagjet_save(jj, ii)
740 ENDDO
741 DO jj = 1, nrbjet
742 t_monvol(nn)%RBAGJET(jj, ii) = rbagjet_save(jj, ii)
743 ENDDO
744 ENDDO
745 ENDIF
746 IF (ALLOCATED(ibagjet_save)) DEALLOCATE(ibagjet_save)
747 IF (ALLOCATED(rbagjet_save)) DEALLOCATE(rbagjet_save)
748 ENDIF
749 ENDDO
750 DO nn = 1, nvolu
751 IF (comm_tag(nn) /= nn) THEN
752! Non root communicating airbag
753 njet = t_monvol(nn)%NJET
754 IF (njet > 0) THEN
755 ALLOCATE(ibagjet_save(nibjet, njet))
756 ALLOCATE(rbagjet_save(nrbjet, njet))
757 DO ii = 1, njet
758 DO jj = 1, nibjet
759 ibagjet_save(jj, ii) = t_monvol(nn)%IBAGJET(jj, ii)
760 ENDDO
761 DO jj = 1, nrbjet
762 rbagjet_save(jj, ii) = t_monvol(nn)%RBAGJET(jj, ii)
763 ENDDO
764 ENDDO
765 ELSE
766 ALLOCATE(ibagjet_save(nibjet, 0))
767 ALLOCATE(rbagjet_save(nrbjet, 0))
768 ENDIF
769 IF (ALLOCATED(t_monvol(nn)%RBAGJET)) DEALLOCATE(t_monvol(nn)%RBAGJET)
770 IF (ALLOCATED(t_monvol(nn)%IBAGJET)) DEALLOCATE(t_monvol(nn)%IBAGJET)
771 IF (njet_new(nn) > 0) THEN
772 ALLOCATE(t_monvol(nn)%RBAGJET(nrbjet, njet_new(nn)),
773 . t_monvol(nn)%IBAGJET(nibjet, njet_new(nn)))
774 t_monvol(nn)%RBAGJET(1:nrbjet, 1:njet_new(nn)) = zero
775 t_monvol(nn)%IBAGJET(1:nibjet, 1:njet_new(nn)) = 0
776 DO ii = 1, njet
777 DO jj = 1, nibjet
778 t_monvol(nn)%IBAGJET(jj, ii) = ibagjet_save(jj, ii)
779 ENDDO
780 DO jj = 1, nrbjet
781 t_monvol(nn)%RBAGJET(jj, ii) = rbagjet_save(jj, ii)
782 ENDDO
783 ENDDO
784 ENDIF
785 IF (ALLOCATED(ibagjet_save)) DEALLOCATE(ibagjet_save)
786 IF (ALLOCATED(rbagjet_save)) DEALLOCATE(rbagjet_save)
787 ENDIF
788 ENDDO
789
790
791C-------------------------------------
792C Airbags communicators, exchange of gas characteristics.
793C-------------------------------------
794 DO n=1,nvolu
795 itype=t_monvol(n)%TYPE
796 IF((itype==5.OR.itype==9).AND.n/=comm_tag(n))THEN
797 ngroot =t_monvol(comm_tag(n))%IVOLU(8)
798 njet =t_monvol(n)%IVOLU(8)
799 DO j=1,njet
800C---------------------------------------------------------------------------------
801C informs the pere volume of the gas characteristics injects into a son
802C---------------------------------------------------------------------------------
803 t_monvol(comm_tag(n))%RBAGJET(1, ngroot + j) = t_monvol(n)%RBAGJET(1, j)
804 t_monvol(comm_tag(n))%RBAGJET(2, ngroot + j) = t_monvol(n)%RBAGJET(2, j)
805 t_monvol(comm_tag(n))%RBAGJET(3, ngroot + j) = t_monvol(n)%RBAGJET(3, j)
806 t_monvol(comm_tag(n))%RBAGJET(4, ngroot + j) = t_monvol(n)%RBAGJET(4, j)
807 t_monvol(comm_tag(n))%RBAGJET(16, ngroot + j) = t_monvol(n)%RBAGJET(16, j)
808 t_monvol(comm_tag(n))%RBAGJET(17, ngroot + j) = t_monvol(n)%RBAGJET(17, j)
809 t_monvol(comm_tag(n))%RBAGJET(18, ngroot + j) = t_monvol(n)%RBAGJET(18, j)
810 t_monvol(comm_tag(n))%IBAGJET(4, ngroot + j) = t_monvol(n)%IBAGJET(4, j)
811 IF(itype==9) THEN
812 t_monvol(comm_tag(n))%IBAGJET(13, ngroot + j) = t_monvol(n)%IBAGJET(13, j)
813 ENDIF
814C----------------------------------------------------
815C DEPLACE INJECTION INFOS.
816C----------------------------------------------------
817 IF(j-1/=ngroot)THEN
818 DO k=1,nibjet
819 t_monvol(n)%IBAGJET(k, ngroot + 1) = t_monvol(n)%IBAGJET(k, j)
820 t_monvol(n)%IBAGJET(k, j) = 0
821 ENDDO
822 DO k=1,nrbjet
823 t_monvol(n)%RBAGJET(k, ngroot + 1) = t_monvol(n)%RBAGJET(k, j)
824 t_monvol(n)%RBAGJET(k, j) = zero
825 ENDDO
826 ENDIF
827 ngroot = ngroot + 1
828 ENDDO
829 t_monvol(comm_tag(n))%IVOLU(8)=ngroot
830 t_monvol(comm_tag(n))%NJET = ngroot
831 ENDIF
832 ENDDO
833C----------------------------------------------------------
834C informs all the volumes of the gas characteristics.
835C----------------------------------------------------------
836 DO n=1,nvolu
837 itype=t_monvol(n)%TYPE
838 IF(itype==5.OR.itype==9.AND.n/=comm_tag(n))THEN
839 njet = t_monvol(comm_tag(n))%NJET
840 DO i=1,njet
841 t_monvol(n)%IBAGJET(4, i) = t_monvol(comm_tag(n))%IBAGJET(4, i) ! sensor
842 IF(itype==9 .AND. t_monvol(n)%IBAGJET(13, i)==0) THEN ! property
843 IF(t_monvol(comm_tag(n))%IBAGJET(13, i) > 0) THEN
844 t_monvol(n)%IBAGJET(13, i) = -t_monvol(comm_tag(n))%IBAGJET(13, i)
845 ELSE
846 t_monvol(n)%IBAGJET(13, i) = t_monvol(comm_tag(n))%IBAGJET(13, i)
847 ENDIF
848 ENDIF
849C
850 t_monvol(n)%RBAGJET(1, i) = t_monvol(comm_tag(n))%RBAGJET(1, i)
851 t_monvol(n)%RBAGJET(2, i) = t_monvol(comm_tag(n))%RBAGJET(2, i)
852 t_monvol(n)%RBAGJET(3, i) = t_monvol(comm_tag(n))%RBAGJET(3, i)
853 t_monvol(n)%RBAGJET(4, i) = t_monvol(comm_tag(n))%RBAGJET(4, i)
854 t_monvol(n)%RBAGJET(16, i) = t_monvol(comm_tag(n))%RBAGJET(16, i)
855 t_monvol(n)%RBAGJET(17, i) = t_monvol(comm_tag(n))%RBAGJET(17, i)
856 t_monvol(n)%RBAGJET(18, i) = t_monvol(comm_tag(n))%RBAGJET(18, i)
857 ENDDO
858 t_monvol(n)%IVOLU(8)=t_monvol(comm_tag(n))%IVOLU(8)
859 t_monvol(n)%NJET = t_monvol(comm_tag(n))%NJET
860 ENDIF
861 ENDDO
862
863! *************** !
864! Injector address !
865! *************** !
866 libjet = 0
867 lrbjet = 0
868 DO nn = 1, nvolu
869 itype = t_monvol(nn)%TYPE
870 IF (itype >= 4 .AND. (itype <= 9 .OR. itype == 11)) THEN
871 t_monvol(nn)%IVOLU(9) = libjet
872 t_monvol(nn)%IVOLU(10) = lrbjet
873 libjet = libjet + t_monvol(nn)%NJET * nibjet
874 lrbjet = lrbjet + t_monvol(nn)%NJET * nrbjet
875 ENDIF
876 ENDDO
877C-------------------------------------
878 IF(ipri>=7)THEN
879 WRITE(iout,3000)
880 DO n=1,nvolu
881 itype=t_monvol(n)%TYPE
882 IF(itype==5.OR.itype==9)THEN
883 WRITE(iout,1001)t_monvol(n)%ID,trim(titr),monvoltyp(itype)
884C
885 ti =t_monvol(n)%RVOLU(13)
886 gamai=t_monvol(n)%RVOLU(1)
887 cpai =t_monvol(n)%RVOLU(7)
888 cpbi =t_monvol(n)%RVOLU(8)
889 cpci =t_monvol(n)%RVOLU(9)
890 WRITE(iout,1410)gamai,cpai,cpbi,cpci
891C
892 WRITE(iout,1420)
893 njet=t_monvol(n)%IVOLU(8)
894 WRITE(iout,1421)njet
895 DO i=1,njet
896 imass=t_monvol(n)%IBAGJET(1, i)
897 IF(imass/=0)imass=npc(imass)
898 iflu =t_monvol(n)%IBAGJET(2, i)
899 fmass=t_monvol(n)%RBAGJET(5, i)
900 itemp=t_monvol(n)%IBAGJET(3, i)
901 IF(itemp/=0)itemp=npc(itemp)
902 ftemp=t_monvol(n)%RBAGJET(6, i)
903 isens=t_monvol(n)%IBAGJET(4, i)
904 IF (isens > 0) isens = sensors%SENSOR_TAB(isens)%SENS_ID
905 WRITE(iout,1430)i,
906 . imass,iflu,fmass,itemp,ftemp,isens
907C
908 rmwg=t_monvol(n)%RBAGJET(1, i)
909 cpa =t_monvol(n)%RBAGJET(2, i)
910 cpb =t_monvol(n)%RBAGJET(3, i)
911 cpc =t_monvol(n)%RBAGJET(4, i)
912C
913 cpg =cpa+cpb*ti+cpc*ti*ti
914 cvg =cpg-rmwg
915 gama =cpg/cvg
916 WRITE(iout,1440)gama,cpa,cpb,cpc
917C
918 nj1=t_monvol(n)%IBAGJET(5, i)
919 nj2=t_monvol(n)%IBAGJET(6, i)
920 nj3=t_monvol(n)%IBAGJET(7, i)
921 ipt=t_monvol(n)%IBAGJET(8, i)
922 ipa=t_monvol(n)%IBAGJET(9, i)
923 ipz=t_monvol(n)%IBAGJET(10, i)
924 IF(nj1==0)THEN
925 ijet=0
926 ELSE
927 ijet=1
928 ENDIF
929 WRITE(iout,1450)ijet
930 IF(ijet==1)THEN
931 IF(ipt/=0)ipt=npc(ipt)
932 IF(ipa/=0)ipa=npc(ipa)
933 IF(ipz/=0)ipz=npc(ipz)
934 WRITE(iout,1461)itab(nj1),itab(nj2),itab(nj3),ipt,ipa,ipz
935 ENDIF
936 ENDDO
937 ENDIF
938 ENDDO
939 ENDIF
940 WRITE(iout,2000)
941C-------------------------------------
942
943 nfvmbags = 0
944 DO n = 1, nvolu
945 itype=t_monvol(n)%TYPE
946 IF(itype == 6 .OR. itype == 8) THEN
947 nfvmbags = nfvmbags + 1
948! Local numbering of FVMBAGS
949! This numbering does not change when FVMBAGS are switched to UP
950 t_monvol(n)%IVOLU(45) = nfvmbags
951 ENDIF
952 ENDDO
953 DO n = 1, nvolu
954 itype=t_monvol(n)%TYPE
955 IF(itype == 6 .OR. itype == 8) THEN
956! Total number of FVMBAGS (including FVMBAGs switched to UP)
957 t_monvol(n)%IVOLU(29) = nfvmbags
958 ENDIF
959 ENDDO
960
961 ! --------------------
962 ! allocation of NUMBER_TRI_PER_PROC : number of tri element per processor
963 ! for each N nvolu
964 DO n = 1, nvolu
965 ALLOCATE( t_monvol(n)%NUMBER_TRI_PER_PROC(nspmd) )
966 t_monvol(n)%NUMBER_TRI_PER_PROC(1:nspmd) = 0
967 ENDDO
968 ! --------------------
969C
970 RETURN
971C
972 1001 FORMAT(//5x,'VOLUME NUMBER ',i10,
973 . / 5x,'------------------------',
974 . / 5x,'TITLE: ',a,
975 . / 5x,'TYPE OF MONITORED VOLUME. . . . . . . .=',a10)
976 1410 FORMAT(
977 . 5x,'CHARACTERISTICS OF INITIAL GAZ ',
978 . /5x,'------------------------------ ',
979 . /5x,'GAMMA AT INITIAL TEMPERATURE. . . . . .=',1pg20.13,
980 . /5x,'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,
981 . /5x,'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,
982 . /5x,'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13/)
983 1420 FORMAT(
984 . 5x,'INFLATORS ',
985 . /5x,'--------- ')
986 1421 FORMAT(
987 . 5x,'NUMBER OF INFLATORS . . . . . . . . . .=',i10/)
988 1430 FORMAT(
989 . 5x,'INFLATOR NUMBER . . . . . . . . . . . .=',i10,
990 . /15x,'TIME FUNCTION FOR INCOMING TOTAL MASS .=',i10,
991 . /15x,' or MASS FLUX if IFLU=1 . . . . IFLU =',i10,
992 . /15x,'SCALE FACTOR FOR INCOMING TOTAL MASS .=',1pg20.13,
993 . /15x,'TIME FUNCTION FOR INCOMIMG GAS TEMP . .=',i10,
994 . /15x,'SCALE FACTOR FOR INCOMIMG GAS TEMP . .=',1pg20.13,
995 . /15x,'SENSOR NUMBER . . . . . . . . . . . . .=',i10)
996 1440 FORMAT(
997 . /15x,'GAZ CHARACTERISTICS ',
998 . /15x,'------------------- ',
999 . /15x,'GAMMA AT INITIAL TEMPERATURE. . . . . .=',1pg20.13,
1000 . /15x,'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,
1001 . /15x,'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,
1002 . /15x,'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13)
1003 1450 FORMAT(
1004 . /15x,'JETTING OPTION. . . . . . . . . . . . .=',i10,
1005 . /15x,'----------------------------------------')
1006 1461 FORMAT(
1007 . 15x,'DIHEDRAL JET. . . . . . . . . . . . . .',
1008 . /15x,'NODE NUMBER DEFINING INJECTION CENTER .=',i10,
1009 . /15x,'NODE NUMBER DEFINING INJECTION AXIS . .=',i10,
1010 . /15x,'NODE NUMBER DEFINING BASE LINE. . . . .=',i10,
1011 . /15x,'JETTING PRESSURE TIME CURVE NUMBER. . .=',i10,
1012 . /15x,'JETTING PRESSURE THETA CURVE NUMBER . .=',i10,
1013 . /15x,'JETTING PRESSURE DIST. CURVE NUMBER . .=',i10,
1014 . /15x,'TIME FUNCTION SCALE FACTOR . .=',1pg20.13,
1015 . /15x,'THETA FUNCTION SCALE FACTOR . .=',1pg20.13,
1016 . /15x,'DIST FUNCTION SCALE FACTOR . .=',1pg20.13)
1017 1703 FORMAT(5x,'FVMBAG MESHING, VOLUME NUMBER',i10,
1018 . /5x,'----------------- ',
1019 . /15x,'TETRAMESH CREATED AUTOMATICALLY',
1020 . /15x,' NUMBER OF TETRAHEDRA',i10,
1021 . /15x,' NUMBER OF ADDED INTERNAL NODES',i10)
1022 2000 FORMAT(/)
1023 3000 FORMAT(
1024 . //,' MONITORED VOLUMES TYPE COMMU : GAS ORGANIZATION'/
1025 . ' -----------------------------------------------')
subroutine constit(itab, itabm1, numnod)
Definition constit.F:35
#define my_real
Definition cppsort.cpp:32
subroutine fvbric01(ibuf, elem, ntgi, nb_node, nbric, ixs, tbric, tfac)
Definition fvbric01.F:34
subroutine fvbric0(ibuf, ixs, ityp, nbric, monvid, ilvout, titr, tagnodbr, tbric, tfac, nb_node, igrbric, ibric, fvtype)
Definition fvbric0.F:36
subroutine fvbric3(ibuf, ibufa, nnt, nbric, nna, tbric, brna, ncona, itab, ilvout, nb_node, ivini, vini, kmesh, v)
Definition fvbric3.F:31
subroutine fvelprint(ixc, ixtg, nel, itagel, eltg, ibaghol, ilvout, iflag)
Definition fvelprint.F:32
subroutine fvelsurf(ibuf, elem, elem_id, ixc, ixtg, nel, eltg, mattg, nb_node, flag)
Definition fvelsurf.F:33
subroutine fvinject(ibuf, elem, ibagjet, njet, igrsurf, itagel, nn, nel, id, tagvent, titr, itab)
Definition fvinject.F:37
subroutine fvnodi(nn, surf_nodes, nnb, itabinv, t_monvoln)
Definition fvmbag1.F:429
subroutine aleno(nn, surf_nodes, nnb, itabinv, tage, tagvent, tagnodbr, t_monvoln)
Definition fvmbag1.F:32
subroutine fvventhole(ibuf, elem, ibaghol, nvent, igrsurf, itagel, nn, nel, id, tagvent, titr, eltg, nb_node)
Definition fvventhole.F:37
subroutine monvol_check_delete_duplicated(t_monvoln, ntg, ntgi, itab)
subroutine monvol_triangulate_surface(t_monvoln, igrsurf, local_nodeid, local_int_nodeid, tage, x, kmesh, nns, nni, ntg, ntgi, size1, size2, fvbag_elemid)
initmumps id
subroutine fvbric1(t_monvoln, ibuf, elem, ixs, tbric, nel, nela, nbric, tfac, tagels, monvid, neli, nna, ilvout, eltg, x, titr, nb_node)
Definition fvbric1.F:46
subroutine fvbric2(elem, ixs, nel, nbric, tbric, tfac, tagels, nela, ibufa, nna, elema, tagela, brna, nb_node)
Definition fvbric2.F:40
integer, dimension(:), allocatable itabm1_tmp
integer, dimension(:), allocatable kmesh
integer, dimension(:), allocatable ixs_temp
integer, dimension(:), allocatable ibufssg_temp
integer, dimension(:), allocatable itab_tmp
integer, parameter nchartitle
integer, parameter ncharkey
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)
Definition message.F:895
integer function usr2sys(iu, itabm1, mess, id)
Definition sysfus.F:146
subroutine hypermesh_tetra(t_monvoln, nixsl, n, km, nb_extra_vertices, nb_tetra, nb_vertices)
subroutine writemesh(volid)
Definition writeMesh.F:30