64
65
66
67
68
69
70
71
72 USE elbufdef_mod
78 USE multi_fvm_mod , ONLY : multi_fvm_struct
79 USE output_mod
80 USE anim_monvol_mod
81 use element_mod , only : nixs,nixq,nixc,nixt,nixr,nixp,nixtg
82
83
84
85#include "implicit_f.inc"
86
87
88
89#include "com01_c.inc"
90#include "com04_c.inc"
91#include "scr14_c.inc"
92#include "param_c.inc"
93#include "sphcom.inc"
94#include "sms_c.inc"
95#include "intstamp_c.inc"
96
97
98
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
107 my_real,
INTENT(INOUT) :: nodal_scalar_fvm
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),,MONVOL(*),NPBY(NNPBY,*),
112 . NODGLOB(*),
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(FVBAG_DATA), INTENT(IN) :: FVDATA_P(NFVBAG)
129 TYPE (MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
130
131
132
133 INTEGER I,J,K,M,N
134
135
136 INTEGER (NUMNOD)
137 INTEGER IS_WRITTEN_VALUE(NUMNOD)
140 REAL VALUE_NUMNOD_REAL(NUMNOD)
141
142
143 INTEGER IOK_PART_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
146 REAL VALUE_NUMNOD_REAL_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
147
148
149 value(1:numnod) = zero
150 value_numnod_real
151 value_numnod(1:numnod) = zero
152
157
158 DO i=1,numnod
159 node_id(i) = itab(i)
160 iok_part(i) = 0
161 is_written_node(i) = 0
162 ENDDO
163
164 IF(n_h3d_part_list .NE. 0)THEN
165 DO i=1,numsph
166 IF ( h3d_part(ipartsp(i)) == 1) THEN
167 IF(kxsp(2,i) > 0 )iok_part(kxsp(2,i)) = 1
168 ENDIF
169 ENDDO
170
171 DO i=1,numelr
172 IF ( h3d_part(ipartr(i)) == 1) THEN
173 DO j=2,4
174 IF(ixr(j,i) > 0 )iok_part(ixr(j,i)) = 1
175 ENDDO
176 ENDIF
177 ENDDO
178
179 DO i=1,numelp
180 IF ( h3d_part(ipartp(i)) == 1) THEN
181 DO j=2,4
182 IF(ixp(j,i) > 0 )iok_part(ixp(j,i)) = 1
183 ENDDO
184 ENDIF
185 ENDDO
186
187 DO i=1,numelt
188 IF ( h3d_part(ipartt(i)) == 1) THEN
189 DO j=2,4
190 IF(ixt(j,i) > 0 )iok_part(ixt(j,i)) = 1
191 ENDDO
192 ENDIF
193 ENDDO
194
195 DO i=1,numelc
196 IF ( h3d_part(ipartc(i)) == 1) THEN
197 DO j=2,5
198 IF(ixc(j,i) > 0 )iok_part(ixc(j,i)) = 1
199 ENDDO
200 ENDIF
201 ENDDO
202
203 DO i=1,numeltg
204 IF ( h3d_part(iparttg(i)) == 1) THEN
205DO
206 IF(ixtg(j,i) > 0 )iok_part(ixtg(j,i)) = 1
207 ENDDO
208 ENDIF
209 ENDDO
210
211 DO i=1,numels
212 IF ( h3d_part(iparts(i)) == 1) THEN
213 DO j=2,9
214 IF(ixs(j,i) > 0 )iok_part(ixs(j,i)) = 1
215 ENDDO
216 ENDIF
217 ENDDO
218
219 DO i=1,numelq
220 IF ( h3d_part(ipartq(i)) == 1) THEN
221 DO j=2,5
222 IF(ixq(j,i) > 0 )iok_part(ixq(j,i)) = 1
223 ENDDO
224 ENDIF
225 ENDDO
226 ELSE
227 iok_part(1:numnod) = 1
228 ENDIF
229
230
231 IF(keyword == 'DMASS') THEN
232 value(1:numnod) = output%DATA%SCAL_DMAS(1:numnod)
233 DO i=1,numnod
234 is_written_value(i) = 1
235 ENDDO
236 ELSE IF(keyword == 'DINER')THEN
237 value(1:numnod) = output%DATA%SCAL_DINER(1:numnod)
238 DO i=1,numnod
239 is_written_value(i) = 1
240 ENDDO
241 ELSEIF(keyword == 'MASS')THEN
242 DO i=1,numnod
243 value(i) = ms(i)
244 is_written_value(i) = 1
245 ENDDO
246 DO n=1,nrbykin
247 m=npby(1,n)
248 IF (m>0) THEN
249 value(m) = value(m) +(rby(15,n)-ms(m))
250 ENDIF
251 ENDDO
252
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
258
259 IF(keyword == 'TEMP' .AND. (itherm_fe > 0 )) THEN
260 DO i=1,numnod
261 value(i)=temp(i)
262 is_written_value(i) = 1
263 ENDDO
264 ELSE
265
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
277 IF(keyword == 'DT') THEN
278 ifunc = 0
279 k = 0
280 DO i=1,numnod
281 value(i) = output%DATA%SCAL_DT(i)
282 is_written_value(i) = 1
283 ENDDO
284 ENDIF
285
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,
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,
295 . is_written_node ,is_written_node_fvm ,ispmd, fvdata_p,
296 . numnod ,airbags_node_id_shift)
297 ENDIF
298
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,
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,
308 . is_written_node ,is_written_node_fvm ,ispmd, fvdata_p
309 . numnod ,airbags_node_id_shift)
310 ENDIF
311
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,
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,
321 . is_written_node ,is_written_node_fvm ,ispmd, fvdata_p,
322 . numnod ,airbags_node_id_shift)
323 ENDIF
324
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,
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,
334 . is_written_node ,is_written_node_fvm ,ispmd ,fvdata_p,
335 . numnod ,airbags_node_id_shift,multi_fvm)
336 ENDIF
337
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,
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,
347 . is_written_node ,is_written_node_fvm ,ispmd ,fvdata_p,
348 . numnod ,airbags_node_id_shift)
349 ENDIF
350
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,
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,
360 . is_written_node ,is_written_node_fvm ,ispmd, fvdata_p,
361 . numnod ,airbags_node_id_shift)
362 ENDIF
363
364 IF (keyword == 'PEXT')THEN
365 value(1:numnod) = zero
366 IF(output%DATA%H3D_HAS_NODA_PEXT == 1) THEN
367 DO i=1,numnod
368 IF(output%DATA%NODA_SURF(i) > zero)THEN
369 value_numnod_real(i)=output%DATA%NODA_PEXT(i)/output%DATA%NODA_SURF(i)
370 ENDIF
371 is_written_node(i) = 1
372 ENDDO
373 ENDIF
374 ENDIF
375
376
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)
380
381 DO i=1,numnod
382 IF(is_written_node(i) == 1) THEN
383 value(i) = value_numnod_real(i)
384 is_written_value(i) = is_written_node(i)
385 ENDIF
386 ENDDO
387
388 ENDIF
389
390 ELSEIF (keyword == 'FPOT') THEN
391
392 CALL nodalp(13 , nodal_scalar , value_numnod_real_fvm, iflow , rflow,
393 . iparg , elbuf_tab , ixs , nixs , numels,
395 . is_written_node , is_written_node_fvm , ispmd , fvdata_p ,
396 . numnod , airbags_node_id_shift)
397 DO i=1,numnod
398 is_written_value(i) = 1
399 ENDDO
400
401 ELSEIF(keyword == 'NDMASS')THEN
402
403 IF(idtmins /= 0)THEN
404 DO i=1,numnod
405 VALUE(i)=
max(zero,diag_sms(i)/
max(em20,ms(i))-one)
406 is_written_value(i) = 1
407 ENDDO
408 ENDIF
409
410 ELSEIF(keyword == 'DAMA2/NORMAL')THEN
411
412 DO i=1,numnod
413 value(i)=pdama2(1,i)
414 is_written_value(i) = 1
415 ENDDO
416
417 ELSEIF(keyword == 'DAMA2/TANGENT')THEN
418
419 DO i=1,numnod
420 value(i)=pdama2(2,i)
421 is_written_value(i) = 1
422 ENDDO
423
424 ELSEIF(keyword == 'SCHLI')THEN
425
426 CALL nodal_schlieren(
VALUE,x,ixs,ixq,itab,iparg,0,elbuf_tab,ale_connect)
427 DO i=1,numnod
428 is_written_value(i) = 1
429 ENDDO
430
431 ELSEIF(keyword == 'STIFR')THEN
432
433 IF(iroddl/=0)THEN
434 DO i=1,numnod
435 value(i)=stifr(i)
436 is_written_value(i) = 1
437 ENDDO
438 ENDIF
439
440 ELSEIF(keyword == 'STIF')THEN
441
442 DO i=1,numnod
443 value(i)=stifn(i)
444 is_written_value(i) = 1
445 ENDDO
446
447 ELSEIF(keyword == 'SKID_LINE')THEN
448
449 IF(ityskid == 21 ) THEN
450 DO i=1,numnod
451 k=nodglob(i)
452 value(i)=pskids(interskid,k)
453 is_written_value(i) = 1
454 ENDDO
455 ELSE
456 DO i=1,numnod
457 value(i)=pskids(interskid,i)
458 is_written_value(i) = 1
459 ENDDO
460 ENDIF
461
462 ELSEIF(keyword == 'INTERNAL.ID')THEN
463
464 DO i=1,numnod
465 value(i) = i
466 is_written_value(i) = 1
467 ENDDO
468
469 ELSEIF(keyword == 'CSE_FRIC')THEN
470
471 IF(interfric > 0) THEN
472 IF(interfric <= output%DATA%NINEFRIC ) THEN
473 DO i=1,numnod
474 value(i)=csefric(interfric,i)
475 is_written_value(i) = 1
476 ENDDO
477 ELSE
478 DO i=1,numnod
479 k=nodglob(i)
480 value(i)=csefric_stamp(interfric-output%DATA%NINEFRIC,k)
481 is_written_value(i) = 1
482 ENDDO
483 ENDIF
484 ELSE
485 IF(nintstamp==0) THEN
486 DO i=1,numnod
487 value(i)=csefricg(i)
488 is_written_value(i) = 1
489 ENDDO
490 ELSE
491 IF(nspmd > 1 ) THEN
492 DO i=1,numnod
493 value(i)=csefricg(i)
494 is_written_value(i) = 1
495 ENDDO
496 ELSE
497 DO i=1,numnod
498 k=nodglob(i)
499 value(i)=csefricg(i) + csefricg_stamp(k)
500 is_written_value(i) = 1
501 ENDDO
502 ENDIF
503 ENDIF
504 ENDIF
505
506 ELSEIF(keyword == 'CSE_FRICG')THEN
507
508 IF(nintstamp==0) THEN
509 DO i=1,numnod
510 value(i)=csefricg(i)
511 is_written_value(i) = 1
512 ENDDO
513 ELSE
514 IF(nspmd > 1 ) THEN
515 DO i=1,numnod
516 value(i)=csefricg(i)
517 is_written_value(i) = 1
518 ENDDO
519 ELSE
520 DO i=1,numnod
521 k=nodglob(i)
522 value(i)=csefricg(i) + csefricg_stamp(k)
523 is_written_value(i) = 1
524 ENDDO
525 ENDIF
526 ENDIF
527 ENDIF
528
529 CALL h3d_write_scalar(iok_part,is_written_node,nodal_scalar,numnod,0,0,
VALUE,is_written_value)
530
533 value_fvm(i)=value_numnod_real_fvm(i)
534 ENDDO
536 . value_fvm , is_written_node_fvm)
537 ENDIF
538
539
540 RETURN
subroutine h3d_write_scalar(iok_part, is_written, scalar, nel, offset, nft, value, is_written_value)
integer airbags_total_fvm_in_h3d
integer, parameter ncharline100
subroutine nodal_schlieren(wa4, x, ixs, ixq, itab, iparg, ibid, elbuf_tab, ale_connectivity)
subroutine nodald(ifunc, wa4, wa4_fvm, iflow, rflow, iparg, elbuf_tab, ix, nix, numel, itab, nv46, monvol, volmon, airbags_total_fvm_in_h3d, is_written_node, is_written_node_fvm, ispmd, fvdata_p, swa4, airbags_node_id_shift)
subroutine nodaldt(ifunc, wa4, wa4_fvm, iflow, rflow, iparg, elbuf_tab, ix, nix, numel, itab, nv46, monvol, volmon, airbags_total_fvm_in_h3d, is_written_node, is_written_node_fvm, ispmd, fvdata_p, swa4, airbags_node_id_shift)
subroutine nodalp(ifunc, wa4, wa4_fvm, iflow, rflow, iparg, elbuf_tab, ix, nix, numel, itab, nv46, monvol, volmon, airbags_total_fvm_in_h3d, is_written_node, is_written_node_fvm, ispmd, fvdata_p, swa4, airbags_node_id_shift)
subroutine nodalssp(ifunc, wa4, wa4_fvm, iflow, rflow, iparg, elbuf_tab, ix, nix, numel, itab, nv46, monvol, volmon, airbags_total_fvm_in_h3d, is_written_node, is_written_node_fvm, ispmd, fvdata_p, swa4, airbags_node_id_shift, multi_fvm)
subroutine nodalt(ifunc, wa4, wa4_fvm, iflow, rflow, iparg, elbuf_tab, ix, nix, numel, itab, nv46, monvol, volmon, airbags_total_fvm_in_h3d, is_written_node, is_written_node_fvm, ispmd, fvdata_p, swa4, airbags_node_id_shift)
subroutine nodalvol(ifunc, wa4, wa4_fvm, iflow, rflow, iparg, elbuf_tab, ix, nix, numel, itab, nv46, monvol, volmon, airbags_total_fvm_in_h3d, is_written_node, is_written_node_fvm, ispmd, fvdata_p, swa4, airbags_node_id_shift)