50 . ELBUF_TAB ,NODAL_SCALAR ,IFUNC ,IPARG ,GEO ,
51 . MASS ,PM ,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,
78 USE multi_fvm_mod ,
ONLY : multi_fvm_struct
81 use element_mod ,
only : nixs,nixq,nixc,nixt,nixr,nixp,nixtg
85#include "implicit_f.inc"
95#include "intstamp_c.inc"
99 TYPE(output_),
INTENT(INOUT) :: OUTPUT
100 INTEGER,
INTENT(IN) :: AIRBAGS_TOTAL_FVM_IN_H3D,ISPMD, AIRBAGS_NODE_ID_SHIFT
101 INTEGER,
INTENT(IN) :: ITHERM_FE
102 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
104 . NODAL_SCALAR(NUMNOD),MASS(*),GEO(NPROPG,NUMGEO),
105 . PM(NPROPM,NUMMAT),TEMP(*),RFLOW(*),VOLMON(*), DIAG_SMS(*),MS(*),
106 . PDAMA2(2,*),X(*),STIFR(*),STIFN(*),RBY(NRBY,*),PSKIDS(NINTERSKID,*)
107 my_real,
INTENT(INOUT) :: NODAL_SCALAR_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
108 INTEGER IPARG(NPARG,*),IFUNC,NODE_ID(*),
109 . INFO1,INFO2,IS_WRITTEN_NODE(NUMNOD),H3D_PART(*),ITAB(NUMNOD),
110 . IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),IPARTC(*),IPARTTG(*),IFLOW(*),
111 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),NV46,MONVOL(*),NPBY(NNPBY,*),
113 . interskid,ninterskid,ityskid
114 INTEGER ,
INTENT(IN) :: IPARTSP(NUMSPH),IPARTR(NUMELR),IPARTP(NUMELP),
115 . ipartt(numelt),iparts(numels),ipartq(numelq)
116 INTEGER ,
INTENT(IN) :: KXSP(NISP,NUMSPH),IXR(NIXR,NUMELR),
117 . ixp(nixp,numelp),ixt(nixt,numelt)
118 CHARACTER(LEN=NCHARLINE100) :: KEYWORD
119 TYPE (H3D_DATABASE) :: H3D_DATA
120 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
121 INTEGER ,
INTENT(IN) :: N_H3D_PART_LIST
122 INTEGER ,
INTENT(IN) :: INTERFRIC
123 my_real ,
INTENT(IN) :: CSEFRIC(OUTPUT%DATA%NINEFRIC,OUTPUT%DATA%S_EFRICINT),
124 . CSEFRICG(OUTPUT%DATA%S_EFRIC),
125 . CSEFRIC_STAMP(OUTPUT%DATA%NINEFRIC_STAMP,OUTPUT%DATA%S_EFRICINTG) ,CSEFRICG_STAMP(OUTPUT%DATA%S_EFRICG)
126 INTEGER,
INTENT(INOUT) :: IS_WRITTEN_NODE_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
127 INTEGER,
INTENT(IN) :: NFVBAG
128 TYPE(),
INTENT(IN) :: FVDATA_P(NFVBAG)
129 TYPE (MULTI_FVM_STRUCT),
INTENT(IN) :: MULTI_FVM
136 INTEGER IOK_PART(NUMNOD)
137 INTEGER IS_WRITTEN_VALUE(NUMNOD)
139 my_real VALUE_NUMNOD(NUMNOD)
140 REAL VALUE_NUMNOD_REAL(NUMNOD)
143 INTEGER IOK_PART_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
144 my_real VALUE_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
145 my_real VALUE_NUMNOD_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
146 REAL VALUE_NUMNOD_REAL_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
149 value(1:numnod) = zero
150 value_numnod_real(1:numnod) = zero
151 value_numnod(1:numnod) = zero
153 value_fvm(1:airbags_total_fvm_in_h3d) = zero
154 value_numnod_real_fvm(1:airbags_total_fvm_in_h3d) = zero
155 value_numnod_fvm(1:airbags_total_fvm_in_h3d) = zero
156 iok_part_fvm(1:airbags_total_fvm_in_h3d) = 1
161 is_written_node(i) = 0
164 IF(n_h3d_part_list .NE. 0)
THEN
166 IF ( h3d_part(ipartsp(i)) == 1)
THEN
167 IF(kxsp(2,i) > 0 )iok_part(kxsp(2,i)) = 1
172 IF ( h3d_part(ipartr(i)) == 1)
THEN
174 IF(ixr(j,i) > 0 )iok_part(ixr(j,i)) = 1
180 IF ( h3d_part(ipartp(i)) == 1)
THEN
182 IF(ixp(j,i) > 0 )iok_part(ixp(j,i)) = 1
188 IF ( h3d_part(ipartt(i)) == 1)
THEN
190 IF(ixt(j,i) > 0 )iok_part(ixt(j,i)) = 1
196 IF ( h3d_part(ipartc(i)) == 1)
THEN
198 IF(ixc(j,i) > 0 )iok_part(ixc(j,i)) = 1
204 IF ( h3d_part(iparttg(i)) == 1)
THEN
206 IF(ixtg(j,i) > 0 )iok_part(ixtg(j,i)) = 1
212 IF ( h3d_part(iparts(i)) == 1)
THEN
214 IF(ixs(j,i) > 0 )iok_part(ixs(j,i)) = 1
220 IF ( h3d_part(ipartq(i)) == 1)
THEN
222 IF(ixq(j,i) > 0 )iok_part(ixq(j,i)) = 1
227 iok_part(1:numnod) = 1
231 IF(keyword ==
'DMASS')
THEN
232 value(1:numnod) = output%DATA%SCAL_DMAS(1:numnod)
234 is_written_value(i) = 1
236 ELSE IF(keyword ==
'DINER')
THEN
237 value(1:numnod) = output%DATA%SCAL_DINER(1:numnod)
239 is_written_value(i) = 1
241 ELSEIF(keyword ==
'MASS')
THEN
244 is_written_value(i) = 1
249 value(m) = value(m) +(rby(15,n)-ms(m))
253 ELSEIF( keyword ==
'P ' .OR. keyword ==
'DENS' .OR. keyword ==
'ENER' .OR.
254 . keyword == 'temp.OR.
' KEYWORD == 'ssp.OR.
' KEYWORD == 'dt.OR.
'
255 . KEYWORD == 'nvar1.OR.
' KEYWORD == 'nvar2.OR.
' KEYWORD == 'nvar3.OR.
'
256 . KEYWORD == 'nvar4.OR.
' KEYWORD == 'nvar5.OR.
' KEYWORD == 'vol.OR.
'
257 . KEYWORD == 'pext
') THEN
259 IF(KEYWORD == 'temp.AND.
' (ITHERM_FE > 0 )) THEN
262 IS_WRITTEN_VALUE(I) = 1
266 IF(KEYWORD == 'p
') IFUNC = 3
267 IF(KEYWORD == 'dens
') IFUNC = 4
268 IF(KEYWORD == 'ener
') IFUNC = 5
269 IF(KEYWORD == 'temp
') IFUNC = 6
270 IF(KEYWORD == 'nvar1
') IFUNC = 7
271 IF(KEYWORD == 'nvar2
') IFUNC = 8
272 IF(KEYWORD == 'nvar3
') IFUNC = 9
273 IF(KEYWORD == 'nvar4
') IFUNC = 10
274 IF(KEYWORD == 'nvar5
') IFUNC = 11
275 IF(KEYWORD == 'ssp
') IFUNC = 30
276 IF(KEYWORD == 'vol
') IFUNC = 0 !useless
277 IF(KEYWORD == 'dt
') THEN
281 VALUE(I) = OUTPUT%DATA%SCAL_DT(I)
282 IS_WRITTEN_VALUE(I) = 1
286 IF (KEYWORD == 'p
') THEN
287 IF(N2D==0)CALL NODALP(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
288 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
289 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
290 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
291 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
292 IF(N2D/=0)CALL NODALP(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
293 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
294 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
295 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
296 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
299 IF (KEYWORD == 'dens
') THEN
300 IF(N2D==0)CALL NODALD(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
301 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
302 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
303 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
304 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
305 IF(N2D/=0)CALL NODALD(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
306 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
307 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
308 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
309 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
312 IF (KEYWORD == 'temp
') THEN
313 IF(N2D==0)CALL NODALT(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
314 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
315 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
316 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
317 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
318 IF(N2D/=0)CALL NODALT(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
319 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
320 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
321 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
322 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
325 IF (KEYWORD == 'ssp
') THEN
326 IF(N2D==0)CALL NODALSSP(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
327 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
328 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
329 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
330 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT,MULTI_FVM)
331 IF(N2D/=0)CALL NODALSSP(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
332 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
333 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
334 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
335 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT,MULTI_FVM)
338 IF (KEYWORD == 'dt
') THEN
339 IF(N2D==0)CALL NODALDT(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
340 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
341 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
342 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
343 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
344 IF(N2D/=0)CALL NODALDT(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
345 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
346 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
347 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
348 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
351 IF (KEYWORD == 'vol
') THEN
352 IF(N2D==0)CALL NODALVOL(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW,
353 . IPARG,ELBUF_TAB ,IXS ,NIXS ,NUMELS,
354 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
355 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
356 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
357 IF(N2D/=0)CALL NODALVOL(IFUNC,VALUE_NUMNOD_REAL,VALUE_NUMNOD_REAL_FVM,IFLOW ,RFLOW ,
358 . IPARG,ELBUF_TAB ,IXQ ,NIXQ ,NUMELQ,
359 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
360 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
361 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
363 ! Nodal External Pressure (Elements to Nodes -> Averaged)
364 IF (KEYWORD == 'pext
')THEN
365 VALUE(1:NUMNOD) = ZERO
366 IF(OUTPUT%DATA%H3D_HAS_NODA_PEXT == 1) THEN
368 IF(OUTPUT%DATA%NODA_SURF(I) > ZERO)THEN
369 VALUE_NUMNOD_REAL(I)=OUTPUT%DATA%NODA_PEXT(I)/OUTPUT%DATA%NODA_SURF(I)
371 IS_WRITTEN_NODE(I) = 1
376 !Then Monitored Volumes (Pressure,Density,Temperature,Sound Speed)
377 IF(NVOLU > 0)CALL ANIMBALE(IFUNC, VALUE_NUMNOD_REAL, IS_WRITTEN_NODE , MONVOL, VOLMON, 1,
378 . NUMNOD, NIMV, NVOLU, NRVOLU, LICBAG, LIBAGJET,
379 . LIBAGHOL, LRCBAG, LRBAGJET, LRBAGHOL, NSPMD)
382 IF(IS_WRITTEN_NODE(I) == 1) THEN
383 VALUE(I) = VALUE_NUMNOD_REAL(I)
384 IS_WRITTEN_VALUE(I) = IS_WRITTEN_NODE(I)
390 ELSEIF (KEYWORD == 'fpot
') THEN !potential
392 CALL NODALP(13 , NODAL_SCALAR , VALUE_NUMNOD_REAL_FVM, IFLOW , RFLOW,
393 . IPARG , ELBUF_TAB , IXS , NIXS , NUMELS,
394 . ITAB , NV46 , MONVOL , VOLMON , AIRBAGS_TOTAL_FVM_IN_H3D,
395 . IS_WRITTEN_NODE , IS_WRITTEN_NODE_FVM , ISPMD , FVDATA_P ,
396 . NUMNOD , AIRBAGS_NODE_ID_SHIFT)
398 IS_WRITTEN_VALUE(I) = 1
401 ELSEIF(KEYWORD == 'ndmass
')THEN
405 VALUE(I)=MAX(ZERO,DIAG_SMS(I)/MAX(EM20,MS(I))-ONE)
406 IS_WRITTEN_VALUE(I) = 1
410 ELSEIF(KEYWORD == 'dama2/normal
')THEN
414 IS_WRITTEN_VALUE(I) = 1
417 ELSEIF(KEYWORD == 'dama2/tangent
')THEN
421 IS_WRITTEN_VALUE(I) = 1
424 ELSEIF(KEYWORD == 'schli
')THEN
426 CALL NODAL_SCHLIEREN(VALUE,X,IXS,IXQ,ITAB,IPARG,0,ELBUF_TAB,ALE_CONNECT)
428 IS_WRITTEN_VALUE(I) = 1
431 ELSEIF(KEYWORD == 'stifr
')THEN
436 IS_WRITTEN_VALUE(I) = 1
440 ELSEIF(KEYWORD == 'stif
')THEN
444 IS_WRITTEN_VALUE(I) = 1
447 ELSEIF(KEYWORD == 'skid_line
')THEN
449 IF(ITYSKID == 21 ) THEN
452 VALUE(I)=PSKIDS(INTERSKID,K)
453 IS_WRITTEN_VALUE(I) = 1
457 VALUE(I)=PSKIDS(INTERSKID,I)
458 IS_WRITTEN_VALUE(I) = 1
462 ELSEIF(KEYWORD == 'internal.
id')THEN
466 IS_WRITTEN_VALUE(I) = 1
469 ELSEIF(KEYWORD == 'cse_fric
')THEN
471 IF(INTERFRIC > 0) THEN
472 IF(INTERFRIC <= OUTPUT%DATA%NINEFRIC ) THEN
474 VALUE(I)=CSEFRIC(INTERFRIC,I)
475 IS_WRITTEN_VALUE(I) = 1
480 VALUE(I)=CSEFRIC_STAMP(INTERFRIC-OUTPUT%DATA%NINEFRIC,K)
481 IS_WRITTEN_VALUE(I) = 1
485 IF(NINTSTAMP==0) THEN
488 IS_WRITTEN_VALUE(I) = 1
494 IS_WRITTEN_VALUE(I) = 1
499 VALUE(I)=CSEFRICG(I) + CSEFRICG_STAMP(K)
500 IS_WRITTEN_VALUE(I) = 1
506 ELSEIF(KEYWORD == 'cse_fricg
')THEN
508 IF(NINTSTAMP==0) THEN
511 IS_WRITTEN_VALUE(I) = 1
517 IS_WRITTEN_VALUE(I) = 1
522 VALUE(I)=CSEFRICG(I) + CSEFRICG_STAMP(K)
523 IS_WRITTEN_VALUE(I) = 1
529 CALL H3D_WRITE_SCALAR(IOK_PART,IS_WRITTEN_NODE,NODAL_SCALAR,NUMNOD,0,0,VALUE,IS_WRITTEN_VALUE)
531 IF(AIRBAGS_TOTAL_FVM_IN_H3D > 0)THEN
532 DO I=1,AIRBAGS_TOTAL_FVM_IN_H3D
533 VALUE_FVM(I)=VALUE_NUMNOD_REAL_FVM(I)
535 CALL H3D_WRITE_SCALAR(IOK_PART_FVM, IS_WRITTEN_NODE_FVM, NODAL_SCALAR_FVM, AIRBAGS_TOTAL_FVM_IN_H3D,0, 0,
536 . VALUE_FVM , IS_WRITTEN_NODE_FVM)
subroutine h3d_nodal_scalar(output, elbuf_tab, nodal_scalar, ifunc, iparg, geo, mass, pm, 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)