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
79C-----------------------------------------------
80C I m p l i c i t T y p e s
81C-----------------------------------------------
82#include "implicit_f.inc"
83C-----------------------------------------------
84C C o m m o n B l o c k s
85C-----------------------------------------------
86#include "com01_c.inc"
87#include "com04_c.inc"
88#include "scr03_c.inc"
89#include "param_c.inc"
90#include "units_c.inc"
91C-----------------------------------------------
92C D u m m y A r g u m e n t s
93C-----------------------------------------------
94 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),NPC(*),ITAB(*),MFI,IXS(NIXS,*),LIBAGALE,LRBAGALE
95 my_real x(3,*), v(3,*)
96C-----------------------------------------------
97 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
98 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
99 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU), INTENT(INOUT) :: T_MONVOL
100 TYPE(MONVOL_METADATA_), INTENT(INOUT) :: T_MONVOL_METADATA
101 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
102C-----------------------------------------------
103C L o c a l V a r i a b l e s
104C-----------------------------------------------
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,
109 . NNI,NTGI,
110 . NJET,NVENT,
111 . NGROOT,
112 . NP,
113 . IBRIC, ILVOUT, IADALE,
114 . RADALE, NNS, IADALE2, NNO, NTG, IADALE3, IADALE4, NBRIC,
115 . IADALE5, IADALE6, IADALE7, IADALE8, NTGA, NNA, IADALE9,
116 . IADALE10, IADALE11,
117 . IADALE12,
118 . NVB,
119 . IADALE13, NTGT, II, IBID(1), JJ
120 INTEGER ID1,ID2
121 INTEGER MAX_ID
122 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGE, ITABINV, TAGVENT, ITABINV1, ITABINV2, INDEX
123 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGNODBR
124 INTEGER, DIMENSION(:), ALLOCATABLE :: ITAB_SAVE
125 INTEGER :: NFVMBAGS
126 INTEGER :: NJET_NEW(NVOLU)
127 TYPE(GROUP_) :: DUMMY(2)
128
129 my_real ti,gamai, cpai, cpbi, cpci, cpdi, cpei, cpfi, gama, cpa, cpb, cpc,rmwg, cpg, cvg, fmass, ftemp
130 CHARACTER MESS*40
131 CHARACTER(len=nchartitle) :: TITR,TITR1
132 CHARACTER*10 MONVOLTYP(11)
133 INTEGER :: NB_TETRA, NB_VERTICES, NB_EXTRA_VERTICES
134 LOGICAL :: FOUND
135 INTEGER :: SIZE1, SIZE2,LENGTH
136 INTEGER :: COMM_TAG(NVOLU), NCOMMU
137 INTEGER, DIMENSION(:, :), ALLOCATABLE :: IBAGJET_SAVE
138 my_real, DIMENSION(:, :), ALLOCATABLE :: rbagjet_save
139C-----------------------------------------------
140C E x t e r n a l F u n c t i o n s
141C-----------------------------------------------
142 INTEGER USR2SYS
143 EXTERNAL usr2sys
144C-----------------------------------------------
145C D a t a
146C-----------------------------------------------
147 DATA mess/'MONITORED VOLUME DEFINITION '/
148 DATA monvoltyp/' AREA',' PRES',' GAS',
149 . ' AIRBAG',' COMMU',' FVMBAG',
150 . ' AIRBAG1',' FVMBAG1',' COMMU1',
151 . ' LFLUID',' FVMBAG2'/
152C-----------------------------------------------
153 k = 0
154 mfi = 0
155 nvb = 0
156 ibid = 0
157C-------------------------------------
158C Allocate KMESH (for type 8 airbags)
159C-------------------------------------
160 IF(.NOT.(ALLOCATED(kmesh))) ALLOCATE(kmesh(nvolu))
161 tetramesher_used = .false.
162 nb_total_node = numnod
163 IF(.NOT.(ALLOCATED(node_coord))) ALLOCATE(node_coord(3, numnod))
164 DO i = 1, 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)
168 ENDDO
169 nb_total_solids = numels
170 IF(.NOT.(ALLOCATED(ixs_temp))) ALLOCATE(ixs_temp(nixs * numels))
171 DO i = 1, numels
172 DO ii = 1, nixs
173 ixs_temp(nixs * (i - 1) + ii) = ixs(ii, i)
174 ENDDO
175 ENDDO
176 IF(.NOT.(ALLOCATED(itab_tmp))) ALLOCATE(itab_tmp(numnod), itabm1_tmp(2 * numnod))
177 DO i = 1, numnod
178 itab_tmp(i) = itab(i)
179 ENDDO
180!!! Completion of ITAB
181 max_id = maxval(itab(1:numnod))
182
183 DO i = numnod + 1, nb_total_node
184 max_id = max_id + 1
185 itab_tmp(i) = max_id
186 ENDDO
187
189
190 iadale=1
191 radale=1
192
193 tetramesher_used = .false.
194 DO n = 1, nvolu
195 itype = t_monvol(n)%TYPE
196 IF (itype == 11) THEN
197C FVMABG2 are in fact FVMBAG1 with simplified input
198 t_monvol(n)%TYPE = 8
199 t_monvol(n)%IVOLU(2) = t_monvol(n)%TYPE
200 ENDIF
201 kmesh(n) = 0
202 IF (itype == 6) THEN
203 kmesh(n) = 1
204 ENDIF
205 IF (itype == 8 .OR. itype == 11) THEN
206 kmesh(n) = t_monvol(n)%IVOLU(30)
207 ENDIF
208 IF (kmesh(n) >= 2) tetramesher_used = .true.
209 ENDDO
210
211 DO n=1,nvolu
212 itype = t_monvol(n)%TYPE
213 id = t_monvol(n)%ID
214 ilvout = t_monvol(n)%IVOLU(44)
215 titr = t_monvol(n)%TITLE
216 nn =igrsurf(t_monvol(n)%EXT_SURFID)%NSEG
217 IF (itype == 6.OR.itype == 8) THEN
218C------------------------------------------
219C Elements de l'airbag et elements internes
220C------------------------------------------
221 t_monvol(n)%IVOLU(31)=iadale-1
222 t_monvol(n)%IVOLU(34)=radale-1
223C Tag les noeuds des briques additionnelles
224 ALLOCATE(tagnodbr(numnod))
225 tagnodbr(1:numnod)=0
226 ibric=t_monvol(n)%IVOLU(61)
227 IF (ibric/=0) THEN
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))
232 CALL fvbric0(
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)
236 ENDIF
237C
238 ALLOCATE(tage(nn),itabinv(numnod),tagvent(numnod))
239C
240
241 CALL aleno(nn ,igrsurf(t_monvol(n)%EXT_SURFID)%NODES, nns,itabinv,
242 . tage, tagvent, tagnodbr, t_monvol(n))
243
244 DEALLOCATE(tagnodbr)
245C
246 nni=0
247
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 ,
253 . t_monvol(n))
254 ENDIF
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
259
260 iadale2=iadale+nns+nni
261 nno=3
262
263
264! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- !
265! ***************************************************** !
266! ** Triangulation of external and internal surfaces ** !
267! ***************************************************** !
268! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- !
269 ntg = 0
270 ntgi = 0
271 size1 = 0
272 size2 = 0
273 IF (t_monvol(n)%EXT_SURFID > 0) THEN
274 size1 = igrsurf(t_monvol(n)%EXT_SURFID)%NSEG
275 ENDIF
276 IF (t_monvol(n)%INT_SURFID > 0) THEN
277 size2 = igrsurf(t_monvol(n)%INT_SURFID)%NSEG
278 ENDIF
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)
286
287! Check for duplicated triangles on internal + external surface of the airbag
288
289 CALL monvol_check_delete_duplicated(t_monvol(n), ntg, ntgi, itab)
290
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)
296
297 t_monvol(n)%IVOLU(33)=ntg
298 t_monvol(n)%IVOLU(69)=ntgi
299 iadale3=iadale2+nno*ntg
300
301 IF (ntgi > 0) THEN
302 ALLOCATE(t_monvol(n)%POROSITY(ntgi))
303 ALLOCATE(t_monvol(n)%THSURF_TAG(nsurf, ntgi + 1))
304 ENDIF
305
306 IF (t_monvol(n)%INT_SURFID /= 0) THEN
307 IF (.NOT. 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)
310 ENDIF
311 ENDIF
312 ALLOCATE(t_monvol(n)%ELAREA(ntg + ntgi))
313 iadale3=iadale3+nno*ntgi
314
315 IF (kmesh(n) >= 2) THEN
316! Automatic tetrameshing
317 SELECT CASE (kmesh(n))
318 CASE (12, 14)
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)
322 CASE DEFAULT
323
324 END SELECT
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))
329
330 DEALLOCATE(itab_tmp, itabm1_tmp)
331!!! First, determine max user ID (external ID)
333 DO i = 1, nb_total_node_old
334 itab_tmp(i) = itab_save(i)
335 ENDDO
336!!! Completion of ITAB
337 max_id = maxval(itab_tmp(1:nb_total_node_old))
338
340 max_id = max_id + 1
341 itab_tmp(i) = max_id
342 ENDDO
343
345
346!!! Output .inc file
347 IF (kmesh(n) == 4 .OR. kmesh(n) == 14) THEN
348 CALL writemesh(n)
349 ENDIF
350
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))
354
355 IF (ALLOCATED(ibufssg_temp)) DEALLOCATE(ibufssg_temp)
356 ALLOCATE(ibufssg_temp(nb_tetra))
357 DO i = 1, nb_tetra
359 ENDDO
360
361 IF (ALLOCATED(tagnodbr)) DEALLOCATE(tagnodbr)
362 ALLOCATE(tagnodbr(nb_total_node))
363 tagnodbr(1:nb_total_node)=0
364
365 CALL fvbric0(
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)
372 ENDIF
373
374 DEALLOCATE(tagnodbr)
375 ENDIF
376
377C--------------------------------------
378C Elements d'injecteur et de vent holes
379C--------------------------------------
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
385
386 CALL fvinject(
387 . t_monvol(n)%NODES , t_monvol(n)%ELEM, t_monvol(n)%IBAGJET,
388 . njet, igrsurf,
389 . t_monvol(n)%ITAGEL,nns+nni, ntg,
390 . t_monvol(n)%ID ,tagvent, titr,
391 . itab )
392
393 nvent=t_monvol(n)%IVOLU(11)
394 ntgt=ntg+ntgi
395 iadale4=iadale3+ntgt
396 iadale5=iadale4+ntgt
397 IF (tetramesher_used) THEN
398 CALL fvelsurf(
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.)
401 CALL fvventhole(
402 . t_monvol(n)%NODES ,t_monvol(n)%ELEM,t_monvol(n)%IBAGHOL,
403 . nvent, igrsurf,
404 . t_monvol(n)%ITAGEL,nns+nni, ntg,
405 . t_monvol(n)%ID ,tagvent, titr,
406 . t_monvol(n)%ELTG, nb_total_node)
407 ELSE
408 CALL fvelsurf(
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.)
411 CALL fvventhole(
412 . t_monvol(n)%NODES ,t_monvol(n)%ELEM,t_monvol(n)%IBAGHOL,
413 . nvent, igrsurf,
414 . t_monvol(n)%ITAGEL,nns+nni, ntg,
415 . t_monvol(n)%ID ,tagvent, titr,
416 . t_monvol(n)%ELTG, numnod)
417 ENDIF
418 DEALLOCATE(tagvent)
419 DEALLOCATE(t_monvol(n)%FVBAG_ELEMID)
420C
421 IF (tetramesher_used) THEN
422 CALL fvelprint(
423 . ixc, ixtg, ntgt, t_monvol(n)%ITAGEL, t_monvol(n)%ELTG,
424 . t_monvol(n)%IBAGHOL, ilvout, 0 )
425 ELSE
426 CALL fvelprint(
427 . ixc, ixtg, ntgt, t_monvol(n)%ITAGEL, t_monvol(n)%ELTG,
428 . t_monvol(n)%IBAGHOL, ilvout, 0 )
429 ENDIF
430C----------------------------------
431C Elements volumiques additionnels
432C----------------------------------
433 ibric=t_monvol(n)%IVOLU(61)
434 IF (ibric/=0 .OR. (ibric==0 .AND. kmesh(n)>=2)) THEN
435
436 IF (kmesh(n) >= 2) THEN
437 nbric = nb_tetra
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
444
445!!! Now we're done et ready to go on filling bufalei
446 ELSE
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
454
455 ENDIF
456
457 ALLOCATE(t_monvol(n)%TAGELS(t_monvol(n)%NTG + 2 * t_monvol(n)%NTGI))
458 t_monvol(n)%TAGELS(:) = 0
459 IF (tetramesher_used) THEN
460 CALL fvbric1(t_monvol(n),
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,
467 ELSE
468 CALL fvbric1(t_monvol(n),
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)
474 ENDIF
475C
476 iadale9 =iadale8+nna
477 iadale10=iadale9+3*ntga
478 iadale11=iadale10+ntga
479 IF (tetramesher_used) THEN
480 CALL fvbric2(
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,
486 ELSE
487 CALL fvbric2(
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)
492 ENDIF
493C
494 iadale12=iadale11+8*nbric
495 IF (tetramesher_used) THEN
496 CALL fvbric3(
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,
499 . ilvout, nb_total_node,t_monvol(n)%IVOLU(38),t_monvol(n)%RVOLU(67),kmesh(n), v )
500
501 ELSE
502 CALL fvbric3(
503 . t_monvol(n)%NODES, t_monvol(n)%IBUFA, nns+nni, nbric, nna,
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 )
506 ENDIF
507 ELSE
508 nbric=0
509 ntga=ntg+ntgi
510 nna=0
511 iadale5=iadale4+2*ntga
512 iadale6=iadale5
513 iadale7=iadale6
514 iadale8=iadale7+2*ntga
515 iadale9=iadale8
516 iadale10=iadale9+3*ntga
517 iadale11=iadale10+ntga
518 iadale12=iadale11
519 t_monvol(n)%IVOLU(19)=iadale5
520 t_monvol(n)%IVOLU(20)=iadale8
521
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
526 ENDDO
527 ALLOCATE(t_monvol(n)%ELEMA(3, ntga))
528 DO i = 1, 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)
532 ENDDO
533 ALLOCATE(t_monvol(n)%TAGELA(ntga))
534 DO i = 1, ntga
535 t_monvol(n)%TAGELA(i) = i
536 ENDDO
537 ENDIF
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
542 IF (nna > 0) THEN
543 ALLOCATE(t_monvol(n)%VELOCITY(3, nna), t_monvol(n)%NODE_COORD(3, nna))
544 ENDIF
545C
546 iadale13=iadale12+16*nna
547 t_monvol(n)%IVOLU(18)=iadale13-1
548! Copy addresses to structure
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
565C
566 t_monvol(n)%IVOLU(56)=0
567 libagale=iadale-1
568 ENDIF
569 ENDDO
570C
571 libagale=iadale-1
572 lrbagale=radale-1
573
574! ********************* !
575! Communicating airbags !
576! ********************* !
577! Change to local monvol ID
578 lca = 0
579 ncommu = 0
580 comm_tag(1:nvolu) = 0
581 DO nn = 1, nvolu
582 itype = t_monvol(nn)%TYPE
583 IF (itype == 5 .OR. itype == 9) THEN
584 ncommu = ncommu + 1
585 nca = t_monvol(nn)%NCA
586 DO ii = 1, nca
587 id = t_monvol_metadata%ICBAG(1, ii + lca)
588 found = .false.
589 DO jj = 1, nvolu
590 IF (id == t_monvol(jj)%ID) THEN
591 t_monvol_metadata%ICBAG(1, ii + lca) = jj
592 found = .true.
593 EXIT
594 ENDIF
595 ENDDO
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)
599 ELSE
600! Check compatibility : type 5 with type 5 only, and type 9 with type 9 only
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)
606 ENDIF
607 ENDIF
608 ENDDO
609 lca = lca + nca
610 ENDIF
611 ENDDO
612
613! Tag communicting airbags
614 comm_tag(1:nvolu) = 0
615 lca = 0
616 DO nn = 1, nvolu
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
621 comm_tag(nn) = nn
622 DO ii = 1, nca
623 id1 = t_monvol_metadata%ICBAG(1, ii + lca)
624 IF (comm_tag(id1) /= 0) THEN
625 comm_tag(nn) = comm_tag(id1)
626 DO jj = 1, nca
627 id2 = t_monvol_metadata%ICBAG(1, jj + lca)
628 comm_tag(id2) = comm_tag(id1)
629 ENDDO
630 ENDIF
631 ENDDO
632 ENDIF
633 lca = lca + nca
634 ENDIF
635 ENDDO
636! *************** !
637! Venthole adress !
638! *************** !
639 nventtot = 0
640 DO nn = 1, nvolu
641 t_monvol(nn)%IVOLU(16) = nventtot
642 nvent = t_monvol(nn)%NVENT
643 nventtot = nventtot + nvent
644 ENDDO
645 libhol = 0
646 lrbhol = 0
647 DO nn = 1, nvolu
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
655 ENDIF
656 ENDDO
657C----------------------------------------------------------------------------
658C airbags communiquants, verifie les caracteristiques du gaz a l'initial.
659C----------------------------------------------------------------------------
660 DO n=1,nvolu
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.
676 . t_monvol(n)%RVOLU(58)/=cpfi)THEN
677 id = t_monvol(n)%ID
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,
682 . i1=id,
683 . c1=titr,
684 . i2=id1,
685 . c2=titr1)
686 ENDIF
687 ENDIF
688 ENDDO
689
690 DO nn = 1, nvolu
691 njet_new(nn) = t_monvol(nn)%NJET
692 ENDDO
693 DO nn = 1, nvolu
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)
698 ENDIF
699 ENDIF
700 ENDDO
701 DO nn = 1, nvolu
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))
706 ENDIF
707 ENDIF
708 ENDDO
709
710 DO nn = 1, nvolu
711 IF (comm_tag(nn) == nn) THEN
712! Root communicating airbag
713 njet = t_monvol(nn)%NJET
714 IF (njet > 0) THEN
715 ALLOCATE(ibagjet_save(nibjet, njet))
716 ALLOCATE(rbagjet_save(nrbjet, njet))
717 DO ii = 1, njet
718 DO jj = 1, nibjet
719 ibagjet_save(jj, ii) = t_monvol(nn)%IBAGJET(jj, ii)
720 ENDDO
721 DO jj = 1, nrbjet
722 rbagjet_save(jj, ii) = t_monvol(nn)%RBAGJET(jj, ii)
723 ENDDO
724 ENDDO
725 ELSE
726 ALLOCATE(ibagjet_save(nibjet, 0))
727 ALLOCATE(rbagjet_save(nrbjet, 0))
728 ENDIF
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
736 DO ii = 1, njet
737 DO jj = 1, nibjet
738 t_monvol(nn)%IBAGJET(jj, ii) = ibagjet_save(jj, ii)
739 ENDDO
740 DO jj = 1, nrbjet
741 t_monvol(nn)%RBAGJET(jj, ii) = rbagjet_save(jj, ii)
742 ENDDO
743 ENDDO
744 ENDIF
745 IF (ALLOCATED(ibagjet_save)) DEALLOCATE(ibagjet_save)
746 IF (ALLOCATED(rbagjet_save)) DEALLOCATE(rbagjet_save)
747 ENDIF
748 ENDDO
749 DO nn = 1, nvolu
750 IF (comm_tag(nn) /= nn) THEN
751! Non root communicating airbag
752 njet = t_monvol(nn)%NJET
753 IF (njet > 0) THEN
754 ALLOCATE(ibagjet_save(nibjet, njet))
755 ALLOCATE(rbagjet_save(nrbjet, njet))
756 DO ii = 1, njet
757 DO jj = 1, nibjet
758 ibagjet_save(jj, ii) = t_monvol(nn)%IBAGJET(jj, ii)
759 ENDDO
760 DO jj = 1, nrbjet
761 rbagjet_save(jj, ii) = t_monvol(nn)%RBAGJET(jj, ii)
762 ENDDO
763 ENDDO
764 ELSE
765 ALLOCATE(ibagjet_save(nibjet, 0))
766 ALLOCATE(rbagjet_save(nrbjet, 0))
767 ENDIF
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
775 DO ii = 1, njet
776 DO jj = 1, nibjet
777 t_monvol(nn)%IBAGJET(jj, ii) = ibagjet_save(jj, ii)
778 ENDDO
779 DO jj = 1, nrbjet
780 t_monvol(nn)%RBAGJET(jj, ii) = rbagjet_save(jj, ii)
781 ENDDO
782 ENDDO
783 ENDIF
784 IF (ALLOCATED(ibagjet_save)) DEALLOCATE(ibagjet_save)
785 IF (ALLOCATED(rbagjet_save)) DEALLOCATE(rbagjet_save)
786 ENDIF
787 ENDDO
788
789
790C-------------------------------------
791C airbags communiquants, echange des caracteristiques des gaz.
792C-------------------------------------
793 DO n=1,nvolu
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)
798 DO j=1,njet
799C---------------------------------------------------------------------------------
800C informe le volume pere des caracteristiques du gaz injecte dans un fils
801C---------------------------------------------------------------------------------
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)
810 IF(itype==9) THEN
811 t_monvol(comm_tag(n))%IBAGJET(13, ngroot + j) = t_monvol(n)%IBAGJET(13, j)
812 ENDIF
813C----------------------------------------------------
814C deplace les infos relatives a l'injection.
815C----------------------------------------------------
816 IF(j-1/=ngroot)THEN
817 DO k=1,nibjet
818 t_monvol(n)%IBAGJET(k, ngroot + 1) = t_monvol(n)%IBAGJET(k, j)
819 t_monvol(n)%IBAGJET(k, j) = 0
820 ENDDO
821 DO k=1,nrbjet
822 t_monvol(n)%RBAGJET(k, ngroot + 1) = t_monvol(n)%RBAGJET(k, j)
823 t_monvol(n)%RBAGJET(k, j) = zero
824 ENDDO
825 ENDIF
826 ngroot = ngroot + 1
827 ENDDO
828 t_monvol(comm_tag(n))%IVOLU(8)=ngroot
829 t_monvol(comm_tag(n))%NJET = ngroot
830 ENDIF
831 ENDDO
832C----------------------------------------------------------
833C informe tous les volumes des caracteristiques des gaz.
834C----------------------------------------------------------
835 DO n=1,nvolu
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
839 DO i=1,njet
840 t_monvol(n)%IBAGJET(4, i) = t_monvol(comm_tag(n))%IBAGJET(4, i) ! sensor
841 IF(itype==9 .AND. t_monvol(n)%IBAGJET(13, i)==0) THEN ! property
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)
844 ELSE
845 t_monvol(n)%IBAGJET(13, i) = t_monvol(comm_tag(n))%IBAGJET(13, i)
846 ENDIF
847 ENDIF
848C
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)
856 ENDDO
857 t_monvol(n)%IVOLU(8)=t_monvol(comm_tag(n))%IVOLU(8)
858 t_monvol(n)%NJET = t_monvol(comm_tag(n))%NJET
859 ENDIF
860 ENDDO
861
862! *************** !
863! Injector adress !
864! *************** !
865 libjet = 0
866 lrbjet = 0
867 DO nn = 1, nvolu
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
874 ENDIF
875 ENDDO
876C-------------------------------------
877 IF(ipri>=7)THEN
878 WRITE(iout,3000)
879 DO n=1,nvolu
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)
883C
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
890C
891 WRITE(iout,1420)
892 njet=t_monvol(n)%IVOLU(8)
893 WRITE(iout,1421)njet
894 DO i=1,njet
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
904 WRITE(iout,1430)i,
905 . imass,iflu,fmass,itemp,ftemp,isens
906C
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)
911C
912 cpg =cpa+cpb*ti+cpc*ti*ti
913 cvg =cpg-rmwg
914 gama =cpg/cvg
915 WRITE(iout,1440)gama,cpa,cpb,cpc
916C
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)
923 IF(nj1==0)THEN
924 ijet=0
925 ELSE
926 ijet=1
927 ENDIF
928 WRITE(iout,1450)ijet
929 IF(ijet==1)THEN
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
934 ENDIF
935 ENDDO
936 ENDIF
937 ENDDO
938 ENDIF
939 WRITE(iout,2000)
940C-------------------------------------
941
942 nfvmbags = 0
943 DO n = 1, nvolu
944 itype=t_monvol(n)%TYPE
945 IF(itype == 6 .OR. itype == 8) THEN
946 nfvmbags = nfvmbags + 1
947! Local numbering of FVMBAGS
948! This numbering does not change when FVMBAGS are switched to UP
949 t_monvol(n)%IVOLU(45) = nfvmbags
950 ENDIF
951 ENDDO
952 DO n = 1, nvolu
953 itype=t_monvol(n)%TYPE
954 IF(itype == 6 .OR. itype == 8) THEN
955! Total number of FVMBAGS (including FVMBAGs switched to UP)
956 t_monvol(n)%IVOLU(29) = nfvmbags
957 ENDIF
958 ENDDO
959
960 ! --------------------
961 ! allocation of NUMBER_TRI_PER_PROC : number of tri element per processor
962 ! for each N nvolu
963 DO n = 1, nvolu
964 ALLOCATE( t_monvol(n)%NUMBER_TRI_PER_PROC(nspmd) )
965 t_monvol(n)%NUMBER_TRI_PER_PROC(1:nspmd) = 0
966 ENDDO
967 ! --------------------
968C
969 RETURN
970C
971 1001 FORMAT(//5x,'VOLUME NUMBER ',i10,
972 . / 5x,'------------------------',
973 . / 5x,'TITLE: ',a,
974 . / 5x,'TYPE OF MONITORED VOLUME. . . . . . . .=',a10)
975 1410 FORMAT(
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/)
982 1420 FORMAT(
983 . 5x,'INFLATORS ',
984 . /5x,'--------- ')
985 1421 FORMAT(
986 . 5x,'NUMBER OF INFLATORS . . . . . . . . . .=',i10/)
987 1430 FORMAT(
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)
995 1440 FORMAT(
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)
1002 1450 FORMAT(
1003 . /15x,'JETTING OPTION. . . . . . . . . . . . .=',i10,
1004 . /15x,'----------------------------------------')
1005 1461 FORMAT(
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)
1021 2000 FORMAT(/)
1022 3000 FORMAT(
1023 . //,' MONITORED VOLUMES TYPE COMMU : GAS ORGANIZATION'/
1024 . ' -----------------------------------------------')
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:31
subroutine fvelsurf(ibuf, elem, elem_id, ixc, ixtg, nel, eltg, mattg, nb_node, flag)
Definition fvelsurf.F:32
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:39
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:889
integer function usr2sys(iu, itabm1, mess, id)
Definition sysfus.F:160
subroutine hypermesh_tetra(t_monvoln, nixsl, n, km, nb_extra_vertices, nb_tetra, nb_vertices)
subroutine writemesh(volid)
Definition writeMesh.F:30