64
65
66
67
68
69
70
71
72 USE elbufdef_mod
79 USE multi_fvm_mod , ONLY : multi_fvm_struct
80 USE output_mod , ONLY : noda_surf, noda_pext, h3d_has_noda_pext
81 USE anim_monvol_mod
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 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(npropg,numgeo),
104 . pm(npropm,nummat),anin(*),temp(*),rflow(*),volmon(*), diag_sms(*),ms(*),
105 . pdama2(2,*),x(*),stifr(*),stifn(*),rby(nrby,*),pskids(ninterskid,*)
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,*),
111 . NODGLOB(*),
112 . INTERSKID,NINTERSKID,ITYSKID
113 INTEGER ,INTENT(IN) :: IPARTSP(NUMSPH),IPARTR(NUMELR),IPARTP(NUMELP),
114 . IPARTT(NUMELT),(NUMELS),IPARTQ(NUMELQ)
115 INTEGER ,INTENT(IN) :: KXSP(NISP,NUMSPH),IXR(NIXR,NUMELR),
116 . IXP(NIXP,NUMELP),IXT(NIXT,NUMELT)
117 CHARACTER(LEN=NCHARLINE100) :: KEYWORD
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
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
128
129
130
131 INTEGER I,J,K,M,N
132
133
134 INTEGER IOK_PART(NUMNOD)
135 INTEGER IS_WRITTEN_VALUE(NUMNOD)
138 REAL VALUE_NUMNOD_REAL(NUMNOD)
139
140
141 INTEGER IOK_PART_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
144 REAL VALUE_NUMNOD_REAL_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
145
146
147 value(1:numnod) = zero
148 value_numnod_real(1:numnod) = zero
149 value_numnod(1:numnod) = zero
150
155
156 DO i=1,numnod
157 node_id(i) = itab(i)
158 iok_part(i) = 0
159 is_written_node(i) = 0
160 ENDDO
161
162 IF(n_h3d_part_list .NE. 0)THEN
163 DO i=1,numsph
164 IF ( h3d_part(ipartsp(i)) == 1) THEN
165 IF(kxsp(2,i) > 0 )iok_part(kxsp(2,i)) = 1
166 ENDIF
167 ENDDO
168
169 DO i=1,numelr
170 IF ( h3d_part(ipartr(i)) == 1) THEN
171 DO j=2,4
172 IF(ixr(j,i) > 0 )iok_part(ixr(j,i)) = 1
173 ENDDO
174 ENDIF
175 ENDDO
176
177 DO i=1,numelp
178 IF ( h3d_part(ipartp(i)) == 1) THEN
179 DO j=2,4
180 IF(ixp(j,i) > 0 )iok_part(ixp(j,i)) = 1
181 ENDDO
182 ENDIF
183 ENDDO
184
185 DO i=1,numelt
186 IF ( h3d_part(ipartt(i)) == 1) THEN
187 DO j=2,4
188 IF(ixt(j,i) > 0 )iok_part(ixt(j,i)) = 1
189 ENDDO
190 ENDIF
191 ENDDO
192
193 DO i=1,numelc
194 IF ( h3d_part(ipartc(i)) == 1) THEN
195 DO j=2,5
196 IF(ixc(j,i) > 0 )iok_part
197 ENDDO
198 ENDIF
199 ENDDO
200
201 DO i=1,numeltg
202 IF ( h3d_part(iparttg(i)) == 1) THEN
203 DO j=2,4
204 IF(ixtg(j,i) > 0 )iok_part(ixtg(j,i)) = 1
205 ENDDO
206 ENDIF
207 ENDDO
208
209 DO i=1,numels
210 IF ( h3d_part(iparts(i)) == 1) THEN
211 DO j=2,9
212 IF(ixs(j,i) > 0 )iok_part(ixs(j,i)) = 1
213 ENDDO
214 ENDIF
215 ENDDO
216
217 DO i=1,numelq
218 IF ( h3d_part(ipartq(i)) == 1) THEN
219 DO j=2,5
220 IF(ixq(j,i) > 0 )iok_part(ixq(j,i)) = 1
221 ENDDO
222 ENDIF
223 ENDDO
224 ELSE
225 iok_part(1:numnod) = 1
226 ENDIF
227
228
229 IF(keyword == 'DMASS' .OR. keyword == 'DINER')THEN
230
231
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
235 DO i=1,numnod
236 value(i) = anin(i+k)
237 is_written_value(i) = 1
238 ENDDO
239 ELSEIF(keyword == 'MASS')THEN
240 DO i=1,numnod
241 value(i) = ms(i)
242 is_written_value(i) = 1
243 ENDDO
244 DO n=1,nrbykin
245 m=npby(1,n)
246 IF (m>0) THEN
247 value(m) = value(m) +(rby(15,n)-ms(m))
248 ENDIF
249 ENDDO
250
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
256
257 IF(keyword == 'TEMP' .AND. (itherm_fe > 0 )) THEN
258 DO i=1,numnod
259 value(i)=temp(i)
260 is_written_value(i) = 1
261 ENDDO
262 ELSE
263
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
275 IF(keyword == 'DT') THEN
276 ifunc = 0
277 k = 0
278 DO i=1,numnod
279 value(i) = anin(i+k)
280 is_written_value(i) = 1
281 ENDDO
282 ENDIF
283
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,
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,
293 . is_written_node ,is_written_node_fvm ,ispmd, fvdata_p,
294 . numnod ,airbags_node_id_shift)
295 ENDIF
296
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
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,
306 . is_written_node ,is_written_node_fvm ,ispmd, fvdata_p,
307 . numnod ,airbags_node_id_shift)
308 ENDIF
309
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,
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,
319 . is_written_node ,is_written_node_fvm ,ispmd, fvdata_p,
320 . numnod ,airbags_node_id_shift)
321 ENDIF
322
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,
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,
332 . is_written_node ,is_written_node_fvm ,ispmd ,fvdata_p,
333 . numnod ,airbags_node_id_shift,multi_fvm)
334 ENDIF
335
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,
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,
345 . is_written_node ,is_written_node_fvm ,ispmd ,fvdata_p,
346 . numnod ,airbags_node_id_shift)
347 ENDIF
348
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,
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,
358 . is_written_node ,is_written_node_fvm ,ispmd, fvdata_p,
359 . numnod ,airbags_node_id_shift)
360 ENDIF
361
362 IF (keyword == 'PEXT')THEN
363 value(1:numnod) = zero
364 IF(h3d_has_noda_pext == 1) THEN
365 DO i=1,numnod
366 IF(noda_surf(i) > zero)THEN
367 value_numnod_real(i)=noda_pext(i)/noda_surf(i)
368 ENDIF
369 is_written_node(i) = 1
370 ENDDO
371 ENDIF
372 ENDIF
373
374
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)
378
379 DO i=1,numnod
380 IF(is_written_node(i) == 1) THEN
381 value(i) = value_numnod_real(i)
382 is_written_value(i) = is_written_node(i)
383 ENDIF
384 ENDDO
385
386 ENDIF
387
388 ELSEIF (keyword == 'FPOT') THEN
389
390 CALL nodalp(13 , nodal_scalar , value_numnod_real_fvm, iflow , rflow,
391 . iparg , elbuf_tab , ixs , nixs , numels,
393 . is_written_node , is_written_node_fvm , ispmd , fvdata_p ,
394 . numnod , airbags_node_id_shift)
395 DO i=1,numnod
396 is_written_value(i) = 1
397 ENDDO
398
399 ELSEIF(keyword == 'NDMASS')THEN
400
401 IF(idtmins /= 0)THEN
402 DO i=1,numnod
403 value(i)=
max(zero,diag_sms(i)/
max(em20,ms(i))-one)
404 is_written_value(i) = 1
405 ENDDO
406 ENDIF
407
408 ELSEIF(keyword == 'DAMA2/NORMAL')THEN
409
410 DO i=1,numnod
411 value(i)=pdama2(1,i)
412 is_written_value(i) = 1
413 ENDDO
414
415 ELSEIF(keyword == 'DAMA2/TANGENT')THEN
416
417 DO i=1,numnod
418 value(i)=pdama2(2,i)
419 is_written_value(i) = 1
420 ENDDO
421
422 ELSEIF(keyword == 'SCHLI')THEN
423
424 CALL nodal_schlieren(
VALUE,x,ixs,ixq,itab,iparg,0,elbuf_tab,ale_connect)
425 DO i=1,numnod
426 is_written_value(i) = 1
427 ENDDO
428
429 ELSEIF(keyword == 'STIFR')THEN
430
431 IF(iroddl/=0)THEN
432 DO i=1,numnod
433 value(i)=stifr(i)
434 is_written_value(i) = 1
435 ENDDO
436 ENDIF
437
438 ELSEIF(keyword == 'STIF')THEN
439
440 DO i=1,numnod
441 value(i)=stifn(i)
442 is_written_value(i) = 1
443 ENDDO
444
445 ELSEIF(keyword == 'SKID_LINE')THEN
446
447 IF(ityskid == 21 ) THEN
448 DO i=1,numnod
449 k=nodglob(i)
450 value(i)=pskids(interskid,k)
451 is_written_value(i) = 1
452 ENDDO
453 ELSE
454 DO i=1,numnod
455 value(i)=pskids(interskid,i)
456 is_written_value(i) = 1
457 ENDDO
458 ENDIF
459
460 ELSEIF(keyword == 'INTERNAL.ID')THEN
461
462 DO i=1,numnod
463 value(i) = i
464 is_written_value(i) = 1
465 ENDDO
466
467 ELSEIF(keyword == 'CSE_FRIC')THEN
468
469 IF(interfric > 0) THEN
471 DO i=1,numnod
472 value(i)=csefric(interfric,i)
473 is_written_value(i) = 1
474 ENDDO
475 ELSE
476 DO i=1,numnod
477 k=nodglob(i)
478 value(i)=csefric_stamp(interfric-
ninefric,k)
479 is_written_value(i) = 1
480 ENDDO
481 ENDIF
482 ELSE
483 IF(nintstamp==0) THEN
484 DO i=1,numnod
485 value(i)=csefricg(i)
486 is_written_value(i) = 1
487 ENDDO
488 ELSE
489 IF(nspmd > 1 ) THEN
490 DO i=1,numnod
491 value(i)=csefricg(i)
492 is_written_value(i) = 1
493 ENDDO
494 ELSE
495 DO i=1,numnod
496 k=nodglob(i)
497 value(i)=csefricg(i) + csefricg_stamp(k)
498 is_written_value(i) = 1
499 ENDDO
500 ENDIF
501 ENDIF
502 ENDIF
503
504 ELSEIF(keyword == 'CSE_FRICG')THEN
505
506 IF(nintstamp==0) THEN
507 DO i=1,numnod
508 value(i)=csefricg(i)
509 is_written_value(i) = 1
510 ENDDO
511 ELSE
512 IF(nspmd > 1 ) THEN
513 DO i=1,numnod
514 value(i)=csefricg(i)
515 is_written_value(i) = 1
516 ENDDO
517 ELSE
518 DO i=1,numnod
519 k=nodglob(i)
520 value(i)=csefricg(i) + csefricg_stamp(k)
521 is_written_value(i) = 1
522 ENDDO
523 ENDIF
524 ENDIF
525 ENDIF
526
527 CALL h3d_write_scalar(iok_part,is_written_node,nodal_scalar,numnod,0,0,
VALUE,is_written_value)
528
531 value_fvm(i)=value_numnod_real_fvm(i)
532 ENDDO
534 . value_fvm , is_written_node_fvm)
535 ENDIF
536
537
538 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)