OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
h3d_nodal_vector.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| h3d_nodal_vector ../engine/source/output/h3d/h3d_results/h3d_nodal_vector.F
25!||--- called by ------------------------------------------------------
26!|| genh3d ../engine/source/output/h3d/h3d_results/genh3d.F
27!||--- calls -----------------------------------------------------
28!|| anim_nodal_vector_fvmbags ../engine/source/output/anim/generate/anim_nodal_vector_fvmbags.F
29!|| h3d_velvecc22 ../engine/source/output/h3d/h3d_results/h3d_velvecc22.F
30!|| h3d_velvecz22 ../engine/source/output/h3d/h3d_results/h3d_velvecz22.F
31!|| h3d_write_vector ../engine/source/output/h3d/h3d_results/h3d_write_vector.F
32!||--- uses -----------------------------------------------------
33!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
34!|| element_mod ../common_source/modules/elements/element_mod.f90
35!|| fvbag_mod ../engine/share/modules/fvbag_mod.f
36!|| groupdef_mod ../common_source/modules/groupdef_mod.F
37!|| names_and_titles_mod ../common_source/modules/names_and_titles_mod.F
38!|| outmax_mod ../common_source/modules/outmax_mod.F
39!||====================================================================
40 SUBROUTINE h3d_nodal_vector(
41 . ELBUF_TAB ,NODAL_VECTOR ,IFUNC ,IPARG ,GEO ,
42 . MASS ,PM ,ITAB ,NODE_ID ,
43 . INFO1 ,INFO2 ,IS_WRITTEN_NODE,H3D_PART ,IPARTC ,
44 . IPARTTG ,IXC ,IXTG ,TEMP ,IFLOW ,
45 . RFLOW ,IXS ,IXQ ,NV46 ,MONVOL ,
46 . DIAG_SMS ,MS ,PDAMA2 ,X ,VOLMON ,
47 . STIFR ,STIFN ,A ,D ,V ,
48 . CONT ,FCONTG ,FINT ,FEXT ,KEYWORD ,
49 . FNCONT ,FNCONTG ,FTCONT ,FTCONTG ,FNCONT2 ,
50 . DR ,DXANCG ,FANREAC ,FCLUSTER ,MCLUSTER ,
51 . VR ,FOPT ,NPBY ,VGAZ ,
52 . IPARI ,IGRNOD ,WEIGHT ,NODGLOB ,FCONT_MAX ,
53 . FNCONTP2 ,FTCONTP2 ,AR ,IPARTSP ,IPARTR ,
54 . IPARTP ,IPARTT ,IPARTS ,IPARTQ ,KXSP ,
55 . IXR ,IXP ,IXT ,N_H3D_PART_LIST ,NODAL_VECTOR_FVM,
56 . IS_WRITTEN_NODE_FVM,AIRBAGS_TOTAL_FVM_IN_H3D,SMONVOL ,SVOLMON ,ISPMD ,
57 . FVDATA_P ,AIRBAGS_NODE_ID_SHIFT ,W ,SW ,X_C )
58C-----------------------------------------------
59C D e s c r i p t i o n
60C-----------------------------------------------
61C This subroutine is storing relevant vector values requested
62C for H3D export by /H3D/NODA/... keywords
63C-----------------------------------------------
64C M o d u l e s
65C-----------------------------------------------
66 USE elbufdef_mod
67 USE groupdef_mod
68 USE outmax_mod
69 USE fvbag_mod , only : fvbag_data, nfvbag
71 use element_mod , only : nixs,nixq,nixc,nixt,nixr,nixp,nixtg
72C-----------------------------------------------
73C I m p l i c i t T y p e s
74C-----------------------------------------------
75#include "implicit_f.inc"
76C-----------------------------------------------
77C C o m m o n B l o c k s
78C-----------------------------------------------
79#include "com01_c.inc"
80#include "com04_c.inc"
81#include "intstamp_c.inc"
82#include "scr03_c.inc"
83#include "scr16_c.inc"
84#include "param_c.inc"
85#include "sphcom.inc"
86C-----------------------------------------------
87C D u m m y A r g u m e n t s
88C-----------------------------------------------
89 INTEGER,INTENT(IN) :: SMONVOL, SVOLMON, ISPMD,AIRBAGS_NODE_ID_SHIFT, AIRBAGS_TOTAL_FVM_IN_H3D
90 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
91 INTEGER,INTENT(IN) :: SW
92 my_real
93 . NODAL_VECTOR(3*NUMNOD),MASS(*),GEO(NPROPG,NUMGEO),
94 . PM(NPROPM,NUMMAT),TEMP(*),RFLOW(*),VOLMON(SVOLMON), DIAG_SMS(*),MS(NUMNOD),
95 . PDAMA2(2,*),X(3,NUMNOD),STIFR(*),STIFN(NUMNOD),A(3,NUMNOD),D(3,NUMNOD),V(3,NUMNOD), CONT(3,*),
96 . FCONTG(3,*), FINT(3,NUMNOD), FEXT(3,NUMNOD),FNCONT(3,*),FNCONTG(3,*),
97 . FTCONT(3,*),FTCONTG(3,*),FNCONT2(3,*), DR(3,NUMNOD),DXANCG(3,*),
98 . FANREAC(6,*),FCLUSTER(3,*),MCLUSTER(3,*),VR(3,NUMNOD),FOPT(6,*),VGAZ(3,*),
99 . FCONT_MAX(3,*),FNCONTP2(3,*),FTCONTP2(3,*)
100 my_real,INTENT(IN) :: W(3,SW/3)
101 INTEGER IPARG(NPARG,*),IFUNC,NODE_ID(*),
102 . INFO1,INFO2,IS_WRITTEN_NODE(NUMNOD),H3D_PART(*),ITAB(NUMNOD),
103 . IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),IPARTC(*),IPARTTG(*),IFLOW(*),
104 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),NV46,MONVOL(SMONVOL),NPBY(NNPBY,*),
105 . IPARI(NPARI,NINTER),WEIGHT(*),NODGLOB(*)
106 CHARACTER(LEN=NCHARLINE100):: KEYWORD
107 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
108 my_real , INTENT(IN) :: ar(3,numnod)
109 my_real , INTENT(IN) , DIMENSION(3,NUMNOD) :: x_c
110 INTEGER ,INTENT(IN) :: IPARTSP(NUMSPH),IPARTR(NUMELR),IPARTP(NUMELP),
111 . IPARTT(NUMELT),IPARTS(NUMELS),IPARTQ(NUMELQ)
112 INTEGER ,INTENT(IN) :: KXSP(NISP,NUMSPH),IXR(NIXR,NUMELR),IXP(NIXP,NUMELP),
113 . IXT(NIXT,NUMELT)
114 INTEGER ,INTENT(IN) :: N_H3D_PART_LIST
115 my_real, INTENT(INOUT) :: NODAL_VECTOR_FVM(3,AIRBAGS_TOTAL_FVM_IN_H3D)
116 INTEGER, INTENT(INOUT) :: IS_WRITTEN_NODE_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
117 TYPE(fvbag_data),INTENT(IN) :: FVDATA_P(NFVBAG)
118C-----------------------------------------------
119C L o c a l V a r i a b l e s
120C-----------------------------------------------
121 INTEGER I,J,K,N,IOK_PART(NUMNOD)
122 my_real VALUE(3)
123C-----------------------------------------------
124
125 VALUE = zero
126
127 DO i=1,numnod
128 node_id(i) = itab(i)
129 iok_part(i) = 0
130 is_written_node(i) = 0
131 ENDDO
132
133 IF(n_h3d_part_list /= 0)THEN
134 DO i=1,numsph
135 IF ( h3d_part(ipartsp(i)) == 1) THEN
136 IF(kxsp(2,i) > 0 )iok_part(kxsp(2,i)) = 1
137 ENDIF
138 ENDDO
139
140 DO i=1,numelr
141 IF ( h3d_part(ipartr(i)) == 1) THEN
142 DO j=2,4
143 IF(ixr(j,i) > 0 )iok_part(ixr(j,i)) = 1
144 ENDDO
145 ENDIF
146 ENDDO
147
148 DO i=1,numelp
149 IF ( h3d_part(ipartp(i)) == 1) THEN
150 DO j=2,4
151 IF(ixp(j,i) > 0 )iok_part(ixp(j,i)) = 1
152 ENDDO
153 ENDIF
154 ENDDO
155
156 DO i=1,numelt
157 IF ( h3d_part(ipartt(i)) == 1) THEN
158 DO j=2,4
159 IF(ixt(j,i) > 0 )iok_part(ixt(j,i)) = 1
160 ENDDO
161 ENDIF
162 ENDDO
163
164 DO i=1,numelc
165 IF ( h3d_part(ipartc(i)) == 1) THEN
166 DO j=2,5
167 IF(ixc(j,i) > 0 )iok_part(ixc(j,i)) = 1
168 ENDDO
169 ENDIF
170 ENDDO
171
172 DO i=1,numeltg
173 IF ( h3d_part(iparttg(i)) == 1) THEN
174 DO j=2,4
175 IF(ixtg(j,i) > 0 )iok_part(ixtg(j,i)) = 1
176 ENDDO
177 ENDIF
178 ENDDO
179
180 DO i=1,numels
181 IF ( h3d_part(iparts(i)) == 1) THEN
182 DO j=2,9
183 IF(ixs(j,i) > 0 )iok_part(ixs(j,i)) = 1
184 ENDDO
185 ENDIF
186 ENDDO
187
188 DO i=1,numelq
189 IF ( h3d_part(ipartq(i)) == 1) THEN
190 DO j=2,5
191 IF(ixq(j,i) > 0 )iok_part(ixq(j,i)) = 1
192 ENDDO
193 ENDIF
194 ENDDO
195 ELSE
196 iok_part(1:numnod) = 1
197 ENDIF
198C
199C--------------------------------------------------
200 IF(keyword == 'VEL') THEN
201C--------------------------------------------------
202 DO i=1,numnod
203 value(1) = v(1,i)
204 value(2) = v(2,i)
205 value(3) = v(3,i)
206 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
207 ENDDO
208
209 !------------------------------------------
210 ! /MONVOL/FVMBAG*
211 ! set velocity from polyhedra centroids
212 !------------------------------------------
213 IF(airbags_total_fvm_in_h3d > 0)THEN
214 is_written_node_fvm(1:airbags_total_fvm_in_h3d)=0
215 IF(nfvbag>0 .AND. ispmd == 0 .AND. airbags_total_fvm_in_h3d > 0)THEN
216 CALL anim_nodal_vector_fvmbags('VEL ' , nodal_vector_fvm,monvol,volmon ,fvdata_p, nfvbag ,
217 . smonvol, svolmon ,airbags_total_fvm_in_h3d,is_written_node_fvm,
218 . airbags_node_id_shift )
219 ENDIF
220 ENDIF
221
222C--------------------------------------------------
223 ELSEIF(keyword == 'DIS') THEN
224C--------------------------------------------------
225 DO i=1,numnod
226 value(1) = d(1,i)
227 value(2) = d(2,i)
228 value(3) = d(3,i)
229 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
230 ENDDO
231C--------------------------------------------------
232 ELSEIF(keyword == 'ACC') THEN
233C--------------------------------------------------
234 DO i=1,numnod
235 value(1) = a(1,i)
236 value(2) = a(2,i)
237 value(3) = a(3,i)
238 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
239 ENDDO
240C--------------------------------------------------
241 ELSEIF(keyword == 'CONT'.AND.keyword /= 'CONT/TMAX')THEN
242C--------------------------------------------------
243 IF(nintstamp==0)THEN
244 DO i=1,numnod
245 value(1) = cont(1,i)
246 value(2) = cont(2,i)
247 value(3) = cont(3,i)
248 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
249 ENDDO
250 ELSE
251 DO i=1,numnod
252 k=nodglob(i)
253 value(1) = cont(1,i) + fcontg(1,k)
254 value(2) = cont(2,i) + fcontg(2,k)
255 value(3) = cont(3,i) + fcontg(3,k)
256 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
257 ENDDO
258 END IF
259C------------------------------------------------------------------------------
260 ELSEIF(keyword == 'CONT/TMAX')THEN
261C------------------------------------------------------------------------------
262 IF(nintstamp==0.OR.nspmd==1)THEN
263 DO i=1,numnod
264 value(1) = fcont_max(1,i)
265 value(2) = fcont_max(2,i)
266 value(3) = fcont_max(3,i)
267 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
268 ENDDO
269 ELSE
270 DO i=1,numnod
271 value(1) = zero
272 value(2) = zero
273 value(3) = zero
274 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
275 ENDDO
276 ENDIF
277C--------------------------------------------------
278 ELSEIF(keyword == 'FINT') THEN
279C--------------------------------------------------
280 DO i=1,numnod
281 value(1) = fint(1,i)
282 value(2) = fint(2,i)
283 value(3) = fint(3,i)
284 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
285 ENDDO
286C--------------------------------------------------
287 ELSEIF(keyword == 'FEXT') THEN
288C--------------------------------------------------
289 DO i=1,numnod
290 value(1) = fext(1,i)
291 value(2) = fext(2,i)
292 value(3) = fext(3,i)
293 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
294 ENDDO
295C--------------------------------------------------
296 ELSEIF(keyword == 'FOPT/FORCE') THEN
297C--------------------------------------------------
298 DO i=1,numnod
299 is_written_node(i) = 0
300 ENDDO
301 DO n=1,nrbody
302 i = npby(1,n)
303 IF (i>0) THEN
304 IF (weight(i)==1) THEN
305 value(1) = fopt(1,nsect+n)
306 value(2) = fopt(2,nsect+n)
307 value(3) = fopt(3,nsect+n)
308 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
309 ENDIF
310 ENDIF
311 ENDDO
312C--------------------------------------------------
313 ELSEIF(keyword == 'FOPT/MOMENT') THEN
314C--------------------------------------------------
315 DO i=1,numnod
316 is_written_node(i) = 0
317 ENDDO
318 DO n=1,nrbody
319 i = npby(1,n)
320 IF (i>0) THEN
321 IF (weight(i)==1) THEN
322 value(1) = fopt(4,nsect+n)
323 VALUE(2) = fopt(5,nsect+n)
324 value(3) = fopt(6,nsect+n)
325 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
326 ENDIF
327 ENDIF
328 ENDDO
329C--------------------------------------------------
330 ELSEIF(keyword == 'VROT') THEN
331C--------------------------------------------------
332 IF(iroddl/=0) THEN
333 DO i=1,numnod
334 value(1) = vr(1,i)
335 value(2) = vr(2,i)
336 value(3) = vr(3,i)
337 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
338 ENDDO
339 ENDIF
340C--------------------------------------------------
341 ELSEIF(keyword == 'FVEL') THEN
342C--------------------------------------------------
343C--------------------------------------------------
344 ELSEIF(keyword == 'FRES') THEN
345C--------------------------------------------------
346C--------------------------------------------------
347 ELSEIF(keyword == 'PCONT/NORMAL') THEN
348C--------------------------------------------------
349 IF(nintstamp==0)THEN
350 DO i=1,numnod
351 value(1) = fncont(1,i)
352 value(2) = fncont(2,i)
353 value(3) = fncont(3,i)
354 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
355 ENDDO
356 ELSE
357 DO i=1,numnod
358 k=nodglob(i)
359 value(1) = fncont(1,i)+fncontg(1,k)
360 value(2) = fncont(2,i)+fncontg(2,k)
361 value(3) = fncont(3,i)+fncontg(3,k)
362 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
363 ENDDO
364 ENDIF
365C------------------------------------------------------------------------------
366 ELSEIF(keyword == 'MAXPCONT/NORMAL')THEN
367C------------------------------------------------------------------------------
368 IF(nintstamp==0.OR.nspmd==1)THEN
369 DO i=1,numnod
370 value(1) = fncont_max(3*(i-1)+1)
371 value(2) = fncont_max(3*(i-1)+2)
372 value(3) = fncont_max(3*(i-1)+3)
373 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
374 ENDDO
375 ELSE
376 DO i=1,numnod
377 value(1) = zero
378 value(2) = zero
379 value(3) = zero
380 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
381 ENDDO
382 ENDIF
383C--------------------------------------------------
384 ELSEIF(keyword == 'PCONT/TANGENT') THEN
385C--------------------------------------------------
386 IF(nintstamp==0)THEN
387 DO i=1,numnod
388 value(1) = ftcont(1,i)
389 value(2) = ftcont(2,i)
390 value(3) = ftcont(3,i)
391 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
392 ENDDO
393 ELSE
394 DO i=1,numnod
395 k=nodglob(i)
396 value(1) = ftcont(1,i)+ftcontg(1,k)
397 value(2) = ftcont(2,i)+ftcontg(2,k)
398 value(3) = ftcont(3,i)+ftcontg(3,k)
399 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
400 ENDDO
401 ENDIF
402C------------------------------------------------------------------------------
403 ELSEIF(keyword == 'MAXPCONT/TANGENT')THEN
404C------------------------------------------------------------------------------
405 IF(nintstamp==0.OR.nspmd==1)THEN
406 DO i=1,numnod
407 value(1) = ftcont_max(3*(i-1)+1)
408 value(2) = ftcont_max(3*(i-1)+2)
409 value(3) = ftcont_max(3*(i-1)+3)
410 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
411 ENDDO
412 ELSE
413 DO i=1,numnod
414 value(1) = zero
415 value(2) = zero
416 value(3) = zero
417 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
418 ENDDO
419 ENDIF
420C--------------------------------------------------
421 ELSEIF(keyword == 'CONT2') THEN
422C--------------------------------------------------
423 DO i=1,numnod
424 value(1) = fncont2(1,i)
425 value(2) = fncont2(2,i)
426 value(3) = fncont2(3,i)
427 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
428 ENDDO
429C--------------------------------------------------
430 ELSEIF(keyword == 'CONT2/MOMENT') THEN
431C--------------------------------------------------
432 DO i=1,numnod
433 value(1) = mcont2(1,i)
434 value(2) = mcont2(2,i)
435 value(3) = mcont2(3,i)
436 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
437 ENDDO
438C--------------------------------------------------
439 ELSEIF(keyword == 'PCONT2/NORMAL') THEN
440C--------------------------------------------------
441 DO i=1,numnod
442 value(1) = fncontp2(1,i)
443 value(2) = fncontp2(2,i)
444 value(3) = fncontp2(3,i)
445 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
446 ENDDO
447C--------------------------------------------------
448 ELSEIF(keyword == 'PCONT2/TANGENT') THEN
449C--------------------------------------------------
450 DO i=1,numnod
451 value(1) = ftcontp2(1,i)
452 value(2) = ftcontp2(2,i)
453 value(3) = ftcontp2(3,i)
454 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
455 ENDDO
456C--------------------------------------------------
457 ELSEIF(keyword == 'CONT2/TMAX') THEN
458C--------------------------------------------------
459 DO i=1,numnod
460 value(1) = fcont2_max(3*(i-1)+1)
461 value(2) = fcont2_max(3*(i-1)+2)
462 value(3) = fcont2_max(3*(i-1)+3)
463 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
464 ENDDO
465C--------------------------------------------------
466 ELSEIF(keyword == 'CONT2/TMIN') THEN
467C--------------------------------------------------
468 DO i=1,numnod
469 value(1) = fcont2_min(3*(i-1)+1)
470 value(2) = fcont2_min(3*(i-1)+2)
471 value(3) = fcont2_min(3*(i-1)+3)
472 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
473 ENDDO
474C--------------------------------------------------
475 ELSEIF(keyword == 'MAXPCONT2/NORMAL') THEN
476C--------------------------------------------------
477 DO i=1,numnod
478 value(1) = fncont2_max(3*(i-1)+1)
479 value(2) = fncont2_max(3*(i-1)+2)
480 value(3) = fncont2_max(3*(i-1)+3)
481 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
482 ENDDO
483C--------------------------------------------------
484 ELSEIF(keyword == 'MAXPCONT2/TANGENT') THEN
485C--------------------------------------------------
486 DO i=1,numnod
487 value(1) = ftcont2_max(3*(i-1)+1)
488 value(2) = ftcont2_max(3*(i-1)+2)
489 value(3) = ftcont2_max(3*(i-1)+3)
490 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
491 ENDDO
492C--------------------------------------------------
493 ELSEIF(keyword == 'MINPCONT2/NORMAL') THEN
494C--------------------------------------------------
495 DO i=1,numnod
496 value(1) = fncont2_min(3*(i-1)+1)
497 value(2) = fncont2_min(3*(i-1)+2)
498 value(3) = fncont2_min(3*(i-1)+3)
499 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
500 ENDDO
501C--------------------------------------------------
502 ELSEIF(keyword == 'MINPCONT2/TANGENT') THEN
503C--------------------------------------------------
504 DO i=1,numnod
505 value(1) = ftcont2_min(3*(i-1)+1)
506 value(2) = ftcont2_min(3*(i-1)+2)
507 value(3) = ftcont2_min(3*(i-1)+3)
508 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
509 ENDDO
510C--------------------------------------------------
511 ELSEIF(keyword == 'DROT')THEN
512C--------------------------------------------------
513 IF( (idrot == 1 .OR. isecut>0 .OR. iisrot>0 .OR. impose_dr>0) .AND. iroddl/=0) THEN
514 DO i=1,numnod
515 value(1) = dr(1,i)
516 value(2) = dr(2,i)
517 value(3) = dr(3,i)
518 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
519 ENDDO
520 ENDIF
521C--------------------------------------------------
522 ELSEIF (keyword == 'DXANC') THEN
523C--------------------------------------------------
524 DO i=1,numnod
525 value(1) = dxancg(1,i)
526 value(2) = dxancg(2,i)
527 value(3) = dxancg(3,i)
528 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
529 ENDDO
530C--------------------------------------------------
531 ELSEIF (keyword == 'GVEL') THEN
532C--------------------------------------------------
533 IF(ialelag > 0 ) THEN
534 DO i=1,numnod
535 value(1) = vgaz(1,i)
536 value(2) = vgaz(2,i)
537 value(3) = vgaz(3,i)
538 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
539 ENDDO
540 ENDIF
541C--------------------------------------------------
542 ELSEIF(keyword == 'FREAC') THEN
543C--------------------------------------------------
544 DO i=1,numnod
545 value(1)=fanreac(1,i)
546 value(2)=fanreac(2,i)
547 value(3)=fanreac(3,i)
548 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
549 ENDDO
550C--------------------------------------------------
551 ELSEIF(keyword == 'MREAC') THEN
552C--------------------------------------------------
553 DO i=1,numnod
554 value(1)=fanreac(4,i)
555 value(2)=fanreac(5,i)
556 value(3)=fanreac(6,i)
557 CALL h3d_write_vector(iok_part,is_written_node,nodal_vector,i,0,0,VALUE)
558 ENDDO
559C--------------------------------------------------
560 ELSEIF(keyword == 'cluster/force') THEN
561C--------------------------------------------------
562 DO I=1,NUMNOD
563 VALUE(1)=FCLUSTER(1,I)
564 VALUE(2)=FCLUSTER(2,I)
565 VALUE(3)=FCLUSTER(3,I)
566 CALL H3D_WRITE_VECTOR(IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR,I,0,0,VALUE)
567 ENDDO
568C--------------------------------------------------
569 ELSEIF(KEYWORD == 'cluster/moment') THEN
570C--------------------------------------------------
571 DO I=1,NUMNOD
572 VALUE(1)=MCLUSTER(1,I)
573 VALUE(2)=MCLUSTER(2,I)
574 VALUE(3)=MCLUSTER(3,I)
575 CALL H3D_WRITE_VECTOR(IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR,I,0,0,VALUE)
576 ENDDO
577C--------------------------------------------------
578 ELSEIF(KEYWORD == 'zvel') THEN
579 CALL H3D_VELVECC22(ELBUF_TAB,IPARG,1,IXS,IXQ,ITAB,IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR)
580C--------------------------------------------------
581C--------------------------------------------------
582 ELSEIF(KEYWORD == 'zfvel') THEN
583 CALL H3D_VELVECZ22(ELBUF_TAB,IPARG,IPARI,IGRNOD,X,IXS,IXQ,ITAB,1,IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR)
584C--------------------------------------------------
585C--------------------------------------------------
586 ELSEIF(KEYWORD == 'zmom') THEN
587 CALL H3D_VELVECC22(ELBUF_TAB,IPARG,2,IXS,IXQ,ITAB,IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR)
588C--------------------------------------------------
589C--------------------------------------------------
590 ELSEIF(KEYWORD == 'zfp') THEN
591 CALL H3D_VELVECZ22(ELBUF_TAB,IPARG,IPARI,IGRNOD,X,IXS,IXQ,ITAB,2,IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR)
592C--------------------------------------------------
593C--------------------------------------------------
594 ELSEIF(KEYWORD == 'zfint') THEN
595 CALL H3D_VELVECC22(ELBUF_TAB,IPARG,3,IXS,IXQ,ITAB,IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR)
596C--------------------------------------------------
597 ELSEIF(KEYWORD == 'vel/tmax') THEN
598C--------------------------------------------------
599 DO I=1,NUMNOD
600 J = 3*(I-1)+1
601 VALUE(1) = TM_VEL(J)
602 VALUE(2) = TM_VEL(J+1)
603 VALUE(3) = TM_VEL(J+2)
604 CALL H3D_WRITE_VECTOR(IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR,I,0,0,VALUE)
605 ENDDO
606C--------------------------------------------------
607 ELSEIF(KEYWORD == 'dis/tmax') THEN
608C--------------------------------------------------
609 DO I=1,NUMNOD
610 J = 3*(I-1)+1
611 VALUE(1) = TM_DIS(J)
612 VALUE(2) = TM_DIS(J+1)
613 VALUE(3) = TM_DIS(J+2)
614 CALL H3D_WRITE_VECTOR(IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR,I,0,0,VALUE)
615 ENDDO
616C--------------------------------------------------
617 ELSEIF(KEYWORD == 'arot') THEN
618C--------------------------------------------------
619 IF(IRODDL/=0) THEN
620 DO I=1,NUMNOD
621 VALUE(1) = AR(1,I)
622 VALUE(2) = AR(2,I)
623 VALUE(3) = AR(3,I)
624 CALL H3D_WRITE_VECTOR(IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR,I,0,0,VALUE)
625 ENDDO
626 ENDIF
627C--------------------------------------------------
628 ELSEIF(KEYWORD == 'vel/grid') THEN
629C--------------------------------------------------
630 IF(SW > 0) THEN
631 DO I=1,NUMNOD
632 VALUE(1) = W(1,I)
633 VALUE(2) = W(2,I)
634 VALUE(3) = W(3,I)
635 CALL H3D_WRITE_VECTOR(IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR,I,0,0,VALUE)
636 ENDDO
637 ENDIF
638C--------------------------------------------------
639 ELSEIF(KEYWORD == 'shell_offset') THEN
640C--------------------------------------------------
641 DO I=1,NUMNOD
642 VALUE(1:3) = X_C(1:3,I) - X(1:3,I)
643 CALL H3D_WRITE_VECTOR(IOK_PART,IS_WRITTEN_NODE,NODAL_VECTOR,I,0,0,VALUE)
644 ENDDO
645C--------------------------------------------------
646 ENDIF
647C--------------------------------------------------
648 RETURN
649 END SUBROUTINE H3D_NODAL_VECTOR
subroutine anim_nodal_vector_fvmbags(key, wa4, monvol, volmon, fvdata, nfvbag, smonvol, svolmon, airbags_total_fvm_in_h3d, is_written_node_fvm, airbags_node_id_shift)
subroutine h3d_nodal_vector(elbuf_tab, nodal_vector, 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, diag_sms, ms, pdama2, x, volmon, stifr, stifn, a, d, v, cont, fcontg, fint, fext, keyword, fncont, fncontg, ftcont, ftcontg, fncont2, dr, dxancg, fanreac, fcluster, mcluster, vr, fopt, npby, vgaz, ipari, igrnod, weight, nodglob, fcont_max, fncontp2, ftcontp2, ar, ipartsp, ipartr, ipartp, ipartt, iparts, ipartq, kxsp, ixr, ixp, ixt, n_h3d_part_list, nodal_vector_fvm, is_written_node_fvm, airbags_total_fvm_in_h3d, smonvol, svolmon, ispmd, fvdata_p, airbags_node_id_shift, w, sw, x_c)
subroutine h3d_write_vector(iok_part, is_written, vector, i, offset, nft, value)
integer nfvbag
Definition fvbag_mod.F:127
integer, parameter ncharline100