OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
h3d_nodal_scalar.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_scalar ../engine/source/output/h3d/h3d_results/h3d_nodal_scalar.F
25!||--- called by ------------------------------------------------------
26!|| genh3d ../engine/source/output/h3d/h3d_results/genh3d.F
27!||--- calls -----------------------------------------------------
28!|| animbale ../engine/source/output/anim/generate/monvol_anim.F90
29!|| h3d_write_scalar ../engine/source/output/h3d/h3d_results/h3d_write_scalar.f
30!|| nodal_schlieren ../engine/source/output/anim/generate/nodal_schlieren.F
31!|| nodald ../engine/source/output/anim/generate/nodald.F
32!|| nodaldt ../engine/source/output/anim/generate/nodaldt.F
33!|| nodalp ../engine/source/output/anim/generate/nodalp.F
34!|| nodalssp ../engine/source/output/anim/generate/nodalssp.F
35!|| nodalt ../engine/source/output/anim/generate/nodalt.F
36!|| nodalvol ../engine/source/output/anim/generate/nodalvol.F
37!||--- uses -----------------------------------------------------
38!|| ale_connectivity_mod ../common_source/modules/ale/ale_connectivity_mod.F
39!|| anim_monvol_mod ../engine/source/output/anim/generate/monvol_anim.F90
40!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
41!|| element_mod ../common_source/modules/elements/element_mod.F90
42!|| fvbag_mod ../engine/share/modules/fvbag_mod.F
43!|| groupdef_mod ../common_source/modules/groupdef_mod.F
44!|| h3d_mod ../engine/share/modules/h3d_mod.F
45!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
46!|| names_and_titles_mod ../common_source/modules/names_and_titles_mod.F
47!|| output_mod ../common_source/modules/output/output_mod.F90
48!||====================================================================
49 SUBROUTINE h3d_nodal_scalar( OUTPUT,
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,
63 . ITHERM_FE ,NFVBAG )
64C-----------------------------------------------
65C D e s c r i p t i o n
66C-----------------------------------------------
67C This subroutine is storing relevant scalar values requested
68C for H3D export by /H3D/NODA/... keywords
69C-----------------------------------------------
70C M o d u l e s
71C-----------------------------------------------
72 USE elbufdef_mod
73 USE h3d_mod
75 USE groupdef_mod , only: group_
76 USE fvbag_mod , only : fvbag_data
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
82C-----------------------------------------------
83C I m p l i c i t T y p e s
84C-----------------------------------------------
85#include "implicit_f.inc"
86C-----------------------------------------------
87C C o m m o n B l o c k s
88C-----------------------------------------------
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"
96C-----------------------------------------------
97C D u m m y A r g u m e n t s
98C-----------------------------------------------
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
103 my_real
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,*),
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
130C-----------------------------------------------
131C L o c a l V a r i a b l e s
132C-----------------------------------------------
133 INTEGER I,J,K,M,N
134
135 ! H3D export for /NODE entities. Number : NUMNOD
136 INTEGER IOK_PART(NUMNOD)
137 INTEGER IS_WRITTEN_VALUE(NUMNOD)
138 my_real VALUE(NUMNOD)
139 my_real VALUE_NUMNOD(NUMNOD)
140 REAL VALUE_NUMNOD_REAL(NUMNOD)
141
142 ! H3D export for FVMBAG (virtual nodes located at polyhedra centroids). Number : AIRBAGS_TOTAL_FVM_IN_H3D
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)
147C-----------------------------------------------
148C
149 value(1:numnod) = zero
150 value_numnod_real(1:numnod) = zero
151 value_numnod(1:numnod) = zero
152c
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
157c
158 DO i=1,numnod
159 node_id(i) = itab(i)
160 iok_part(i) = 0
161 is_written_node(i) = 0
162 ENDDO
163C
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
170c
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
178c
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
186c
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
194c
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
202c
203 DO i=1,numeltg
204 IF ( h3d_part(iparttg(i)) == 1) THEN
205 DO j=2,4
206 IF(ixtg(j,i) > 0 )iok_part(ixtg(j,i)) = 1
207 ENDDO
208 ENDIF
209 ENDDO
210c
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
218c
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
229C
230C--------------------------------------------------
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 ! IFUNC<3.OR.IFUNC==12)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
252C--------------------------------------------------
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
258C--------------------------------------------------
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
265c
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
278 IFUNC = 0 !not
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 !Nodal Pressure
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)
297 ENDIF
298 !Nodal Density
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)
310 ENDIF
311 !Nodal Temperature
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)
323 ENDIF
324 !Nodal Sound Speed
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)
336 ENDIF
337 !Nodal Sound Speed
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)
349 ENDIF
350 !Nodal Sound Speed
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)
362 ENDIF
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
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
375C--------------------------------------------------
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)
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
387c
388 ENDIF
389C--------------------------------------------------
390 ELSEIF (KEYWORD == 'fpot') THEN !potential
391C--------------------------------------------------
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)
397 DO I=1,NUMNOD
398 IS_WRITTEN_VALUE(I) = 1
399 ENDDO
400C--------------------------------------------------
401 ELSEIF(KEYWORD == 'ndmass')THEN
402C--------------------------------------------------
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
409C--------------------------------------------------
410 ELSEIF(KEYWORD == 'dama2/normal')THEN
411C--------------------------------------------------
412 DO I=1,NUMNOD
413 VALUE(I)=PDAMA2(1,I)
414 IS_WRITTEN_VALUE(I) = 1
415 ENDDO
416C--------------------------------------------------
417 ELSEIF(KEYWORD == 'dama2/tangent')THEN
418C--------------------------------------------------
419 DO I=1,NUMNOD
420 VALUE(I)=PDAMA2(2,I)
421 IS_WRITTEN_VALUE(I) = 1
422 ENDDO
423C--------------------------------------------------
424 ELSEIF(KEYWORD == 'schli')THEN
425C--------------------------------------------------
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
430C--------------------------------------------------
431 ELSEIF(KEYWORD == 'stifr')THEN
432C--------------------------------------------------
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
439C--------------------------------------------------
440 ELSEIF(KEYWORD == 'stif')THEN
441C--------------------------------------------------
442 DO I=1,NUMNOD
443 VALUE(I)=STIFN(I)
444 IS_WRITTEN_VALUE(I) = 1
445 ENDDO
446C--------------------------------------------------
447 ELSEIF(KEYWORD == 'skid_line')THEN
448C--------------------------------------------------
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
461C--------------------------------------------------
462 ELSEIF(KEYWORD == 'internal.id')THEN
463C--------------------------------------------------
464 DO I=1,NUMNOD
465 VALUE(I) = I
466 IS_WRITTEN_VALUE(I) = 1
467 ENDDO
468C--------------------------------------------------
469 ELSEIF(KEYWORD == 'cse_fric')THEN
470C--------------------------------------------------
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
505C--------------------------------------------------
506 ELSEIF(KEYWORD == 'cse_fricg')THEN
507C--------------------------------------------------
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
528c
529 CALL H3D_WRITE_SCALAR(IOK_PART,IS_WRITTEN_NODE,NODAL_SCALAR,NUMNOD,0,0,VALUE,IS_WRITTEN_VALUE)
530
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)
534 ENDDO
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)
537 ENDIF
538
539
540 RETURN
541 END
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)
subroutine h3d_write_scalar(iok_part, is_written, scalar, nel, offset, nft, value, is_written_value)
initmumps id
integer, parameter ncharline100