50 . ELBUF_TAB ,NODAL_SCALAR ,IFUNC ,IPARG ,GEO ,
51 . MASS ,PM ,ANIN ,ITAB ,NODE_ID ,
52 . INFO1 ,INFO2 ,IS_WRITTEN_NODE ,H3D_PART ,IPARTC ,
53 . IPARTTG ,IXC ,IXTG ,TEMP ,IFLOW ,
54 . RFLOW ,IXS ,IXQ ,NV46 ,MONVOL ,
55 . VOLMON ,ALE_CONNECT ,DIAG_SMS ,MS ,PDAMA2 ,
56 . X ,STIFR ,STIFN ,KEYWORD ,H3D_DATA,
57 . NPBY ,RBY ,INTERSKID ,NINTERSKID ,PSKIDS ,
58 . NODGLOB ,ITYSKID ,IPARTSP ,IPARTR ,IPARTP ,
59 . IPARTT ,IPARTS ,IPARTQ ,KXSP ,IXR ,
60 . IXP ,IXT ,N_H3D_PART_LIST ,INTERFRIC ,CSEFRIC ,
61 . CSEFRICG ,CSEFRIC_STAMP,CSEFRICG_STAMP ,NODAL_SCALAR_FVM ,AIRBAGS_TOTAL_FVM_IN_H3D,
62 . IS_WRITTEN_NODE_FVM,ISPMD ,FVDATA_P ,AIRBAGS_NODE_ID_SHIFT ,MULTI_FVM,
79 USE multi_fvm_mod ,
ONLY : multi_fvm_struct
80 USE output_mod ,
ONLY : noda_surf, noda_pext, h3d_has_noda_pext
85#include "implicit_f.inc"
95#include "intstamp_c.inc"
99 INTEGER,
INTENT(IN) :: AIRBAGS_TOTAL_FVM_IN_H3D,ISPMD, AIRBAGS_NODE_ID_SHIFT
100 INTEGER,
INTENT(IN) :: ITHERM_FE
101 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
103 . NODAL_SCALAR(NUMNOD),MASS(*),GEO(,NUMGEO),
104 . PM(NPROPM,NUMMAT),ANIN(*),TEMP(*),RFLOW(*),VOLMON(*), DIAG_SMS(*),MS(*),
105 . PDAMA2(2,*),X(*),STIFR(*),STIFN(*),RBY(NRBY,*),PSKIDS(NINTERSKID,*)
106 my_real,
INTENT(INOUT) :: NODAL_SCALAR_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
107 INTEGER IPARG(NPARG,*),IFUNC,NODE_ID(*),
108 . INFO1,INFO2,IS_WRITTEN_NODE(NUMNOD),H3D_PART(*),ITAB(NUMNOD),
109 . IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),IPARTC(*),IPARTTG(*),IFLOW(*),
110 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),NV46,MONVOL(*),NPBY(NNPBY,*),
112 . INTERSKID,NINTERSKID,ITYSKID
113 INTEGER ,
INTENT(IN) :: IPARTSP(NUMSPH),IPARTR(NUMELR),IPARTP(NUMELP),
114 . ipartt(numelt),iparts(numels),ipartq(numelq)
115 INTEGER ,
INTENT(IN) :: KXSP(NISP,NUMSPH),IXR(NIXR,NUMELR),
116 . ixp(nixp,numelp),ixt(nixt,numelt)
117 CHARACTER(LEN=NCHARLINE100) ::
118 TYPE (H3D_DATABASE) :: H3D_DATA
119 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
120 INTEGER ,
INTENT(IN) :: N_H3D_PART_LIST
121 INTEGER ,
INTENT(IN) :: INTERFRIC
122 my_real ,
INTENT(IN) :: CSEFRIC(NINEFRIC,S_EFRICINT) ,CSEFRICG(S_EFRIC),
123 . CSEFRIC_STAMP(NINEFRIC_STAMP,S_EFRICINTG) ,CSEFRICG_STAMP(S_EFRICG)
124 INTEGER,
INTENT(INOUT) :: IS_WRITTEN_NODE_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
125 INTEGER,
INTENT(IN) :: NFVBAG
126 TYPE(FVBAG_DATA),
INTENT(IN) :: FVDATA_P(NFVBAG)
127 TYPE (MULTI_FVM_STRUCT),
INTENT(IN) :: MULTI_FVM
135 INTEGER IS_WRITTEN_VALUE(NUMNOD)
136 my_real value(numnod)
137 my_real value_numnod(numnod)
138 REAL VALUE_NUMNOD_REAL(NUMNOD)
141 INTEGER IOK_PART_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
142 my_real VALUE_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
143 my_real VALUE_NUMNOD_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
144 REAL VALUE_NUMNOD_REAL_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
147 value(1:numnod) = zero
148 value_numnod_real(1:numnod) = zero
149 value_numnod(1:numnod) = zero
151 value_fvm(1:airbags_total_fvm_in_h3d) = zero
152 value_numnod_real_fvm(1:airbags_total_fvm_in_h3d) = zero
153 value_numnod_fvm(1:airbags_total_fvm_in_h3d) = zero
154 iok_part_fvm(1:airbags_total_fvm_in_h3d) = 1
159 is_written_node(i) = 0
162 IF(n_h3d_part_list .NE. 0)
THEN
164 IF ( h3d_part(ipartsp(i)) == 1)
THEN
165 IF(kxsp(2,i) > 0 )iok_part(kxsp(2,i)) = 1
170 IF ( h3d_part(ipartr(i)) == 1)
THEN
172 IF(ixr(j,i) > 0 )iok_part(ixr(j,i)) = 1
178 IF ( h3d_part(ipartp(i)) == 1)
THEN
180 IF(ixp(j,i) > 0 )iok_part(ixp(j,i)) = 1
186 IF ( h3d_part(ipartt(i)) == 1)
THEN
188 IF(ixt(j,i) > 0 )iok_part(ixt(j,i)) = 1
194 IF ( h3d_part(ipartc(i)) == 1)
THEN
196 IF(ixc(j,i) > 0 )iok_part(ixc(j,i)) = 1
202 IF ( h3d_part(iparttg(i)) == 1)
THEN
204 IF(ixtg(j,i) > 0 )iok_part(ixtg(j,i)) = 1
210 IF ( h3d_part(iparts(i)) == 1)
THEN
212 IF(ixs(j,i) > 0 )iok_part(ixs(j,i)) = 1
218 IF ( h3d_part(ipartq(i)) == 1)
THEN
220 IF(ixq(j,i) > 0 )iok_part(ixq(j,i)) = 1
225 iok_part(1:numnod) = 1
229 IF(keyword ==
'DMASS' .OR. keyword ==
'DINER')
THEN
232 IF(keyword ==
'DMASS') k =
min(1,anim_n(1)+h3d_data%N_SCAL_DT) * numnod
233 IF(keyword ==
'DINER') k =(
min(1,anim_n(1)+h3d_data%N_SCAL_DT) +
234 .
min(1,anim_n(2)+h3d_data%N_SCAL_DMAS) ) * numnod
237 is_written_value(i) = 1
239 ELSEIF(keyword ==
'MASS')
THEN
242 is_written_value(i) = 1
247 value(m) = value(m) +(rby(15,n)-ms(m))
251 ELSEIF( keyword ==
'P ' .OR. keyword ==
'DENS' .OR. keyword ==
'ENER' .OR.
252 . keyword ==
'TEMP' .OR. keyword ==
'SSP' .OR. keyword ==
'DT' .OR.
253 . keyword ==
'NVAR1' .OR. keyword ==
'NVAR2' .OR. keyword ==
'NVAR3' .OR.
254 . keyword ==
'NVAR4' .OR. keyword ==
'NVAR5' .OR. keyword ==
'VOL' .OR.
255 . keyword ==
'PEXT')
THEN
257 IF(keyword ==
'TEMP' .AND. (itherm_fe > 0 ))
THEN
260 is_written_value(i) = 1
264 IF(keyword ==
'P') ifunc = 3
265 IF(keyword ==
'DENS') ifunc = 4
266 IF(keyword ==
'ENER') ifunc = 5
267 IF(keyword ==
'TEMP') ifunc = 6
268 IF(keyword ==
'NVAR1') ifunc = 7
269 IF(keyword ==
'NVAR2') ifunc = 8
270 IF(keyword ==
'NVAR3') ifunc = 9
271 IF(keyword ==
'NVAR4') ifunc = 10
272 IF(keyword == 'nvar5
') IFUNC = 11
273 IF(KEYWORD == 'ssp
') IFUNC = 30
274 IF(KEYWORD == 'vol
') IFUNC = 0 !useless
275 IF(KEYWORD == 'dt
') THEN
280 IS_WRITTEN_VALUE(I) = 1
284 IF (KEYWORD == 'p
') THEN
285 IF(N2D==0)CALL NODALP(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
286 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
287 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
288 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
289 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
290 IF(N2D/=0)CALL NODALP(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
291 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
292 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
293 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
294 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
297 IF (KEYWORD == 'dens
') THEN
298 IF(N2D==0)CALL NODALD(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
299 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
300 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
301 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
302 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
303 IF(N2D/=0)CALL NODALD(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
304 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
305 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
306 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
307 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
310 IF (KEYWORD == 'temp
') THEN
311 IF(N2D==0)CALL NODALT(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
312 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
313 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
314 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
315 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
316 IF(N2D/=0)CALL NODALT(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
317 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
318 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
319 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
320 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
323 IF (KEYWORD == 'ssp
') THEN
324 IF(N2D==0)CALL NODALSSP(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
325 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
326 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
327 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
328 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT,MULTI_FVM)
329 IF(N2D/=0)CALL NODALSSP(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
330 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
331 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
332 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
333 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT,MULTI_FVM)
336 IF (KEYWORD == 'dt
') THEN
337 IF(N2D==0)CALL NODALDT(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
338 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
339 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
340 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
341 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
342 IF(N2D/=0)CALL NODALDT(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
343 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
344 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
345 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
346 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
349 IF (KEYWORD == 'vol
') THEN
350 IF(N2D==0)CALL NODALVOL(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
351 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
352 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
353 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
354 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
355 IF(N2D/=0)CALL NODALVOL(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
356 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
357 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
358 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
359 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
361 ! Nodal External Pressure (Elements to Nodes -> Averaged)
362 IF (KEYWORD == 'pext
')THEN
363 VALUE(1:NUMNOD) = ZERO
364 IF(H3D_HAS_NODA_PEXT == 1) THEN
366 IF(NODA_SURF(I) > ZERO)THEN
367 VALUE_NUMNOD_REAL(I)=NODA_PEXT(I)/NODA_SURF(I)
369 IS_WRITTEN_NODE(I) = 1
374 !Then Monitored Volumes (Pressure,Density,Temperature,Sound Speed)
375 IF(NVOLU > 0)CALL ANIMBALE(IFUNC, VALUE_NUMNOD_REAL, IS_WRITTEN_NODE , MONVOL, VOLMON, 1,
376 . NUMNOD, NIMV, NVOLU, NRVOLU, LICBAG, LIBAGJET,
377 . LIBAGHOL, LRCBAG, LRBAGJET, LRBAGHOL, NSPMD)
380 IF(IS_WRITTEN_NODE(I) == 1) THEN
381 VALUE(I) = VALUE_NUMNOD_REAL(I)
382 IS_WRITTEN_VALUE(I) = IS_WRITTEN_NODE(I)
388 ELSEIF (KEYWORD == 'fpot
') THEN !potential
390 CALL NODALP(13 , NODAL_SCALAR , VALUE_NUMNOD_REAL_FVM, IFLOW , RFLOW,
391 . IPARG , ELBUF_TAB , IXS , NIXS , NUMELS,
392 . ITAB , NV46 , MONVOL , VOLMON , AIRBAGS_TOTAL_FVM_IN_H3D,
393 . IS_WRITTEN_NODE , IS_WRITTEN_NODE_FVM , ISPMD , FVDATA_P ,
394 . NUMNOD , AIRBAGS_NODE_ID_SHIFT)
396 IS_WRITTEN_VALUE(I) = 1
399 ELSEIF(KEYWORD == 'ndmass
')THEN
403 VALUE(I)=MAX(ZERO,DIAG_SMS(I)/MAX(EM20,MS(I))-ONE)
404 IS_WRITTEN_VALUE(I) = 1
408 ELSEIF(KEYWORD == 'dama2/normal
')THEN
412 IS_WRITTEN_VALUE(I) = 1
415 ELSEIF(KEYWORD == 'dama2/tangent
')THEN
419 IS_WRITTEN_VALUE(I) = 1
422 ELSEIF(KEYWORD == 'schli
')THEN
424 CALL NODAL_SCHLIEREN(VALUE,X,IXS,IXQ,ITAB,IPARG,0,ELBUF_TAB,ALE_CONNECT)
426 IS_WRITTEN_VALUE(I) = 1
429 ELSEIF(KEYWORD == 'stifr
')THEN
434 IS_WRITTEN_VALUE(I) = 1
438 ELSEIF(KEYWORD == 'stif
')THEN
442 IS_WRITTEN_VALUE(I) = 1
445 ELSEIF(KEYWORD == 'skid_line
')THEN
447 IF(ITYSKID == 21 ) THEN
450 VALUE(I)=PSKIDS(INTERSKID,K)
451 IS_WRITTEN_VALUE(I) = 1
455 VALUE(I)=PSKIDS(INTERSKID,I)
456 IS_WRITTEN_VALUE(I) = 1
460 ELSEIF(KEYWORD == 'internal.
id')THEN
464 IS_WRITTEN_VALUE(I) = 1
467 ELSEIF(KEYWORD == 'cse_fric
')THEN
469 IF(INTERFRIC > 0) THEN
470 IF(INTERFRIC <= NINEFRIC ) THEN
472 VALUE(I)=CSEFRIC(INTERFRIC,I)
473 IS_WRITTEN_VALUE(I) = 1
478 VALUE(I)=CSEFRIC_STAMP(INTERFRIC-NINEFRIC,K)
479 IS_WRITTEN_VALUE(I) = 1
483 IF(NINTSTAMP==0) THEN
486 IS_WRITTEN_VALUE(I) = 1
492 IS_WRITTEN_VALUE(I) = 1
497 VALUE(I)=CSEFRICG(I) + CSEFRICG_STAMP(K)
498 IS_WRITTEN_VALUE(I) = 1
504 ELSEIF(KEYWORD == 'cse_fricg
')THEN
506 IF(NINTSTAMP==0) THEN
509 IS_WRITTEN_VALUE(I) = 1
515 IS_WRITTEN_VALUE(I) = 1
520 VALUE(I)=CSEFRICG(I) + CSEFRICG_STAMP(K)
521 IS_WRITTEN_VALUE(I) = 1
527 CALL H3D_WRITE_SCALAR(IOK_PART,IS_WRITTEN_NODE,NODAL_SCALAR,NUMNOD,0,0,VALUE,IS_WRITTEN_VALUE)
529 IF(AIRBAGS_TOTAL_FVM_IN_H3D > 0)THEN
530 DO I=1,AIRBAGS_TOTAL_FVM_IN_H3D
531 VALUE_FVM(I)=VALUE_NUMNOD_REAL_FVM(I)
533 CALL H3D_WRITE_SCALAR(IOK_PART_FVM, IS_WRITTEN_NODE_FVM, NODAL_SCALAR_FVM, AIRBAGS_TOTAL_FVM_IN_H3D,0, 0,
534 . VALUE_FVM , IS_WRITTEN_NODE_FVM)
subroutine h3d_nodal_scalar(elbuf_tab, nodal_scalar, ifunc, iparg, geo, mass, pm, anin, itab, node_id, info1, info2, is_written_node, h3d_part, ipartc, iparttg, ixc, ixtg, temp, iflow, rflow, ixs, ixq, nv46, monvol, volmon, ale_connect, diag_sms, ms, pdama2, x, stifr, stifn, keyword, h3d_data, npby, rby, interskid, ninterskid, pskids, nodglob, ityskid, ipartsp, ipartr, ipartp, ipartt, iparts, ipartq, kxsp, ixr, ixp, ixt, n_h3d_part_list, interfric, csefric, csefricg, csefric_stamp, csefricg_stamp, nodal_scalar_fvm, airbags_total_fvm_in_h3d, is_written_node_fvm, ispmd, fvdata_p, airbags_node_id_shift, multi_fvm, itherm_fe, nfvbag)