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!|| fvbag_mod ../engine/share/modules/fvbag_mod.F
42!|| groupdef_mod ../common_source/modules/groupdef_mod.F
43!|| h3d_mod ../engine/share/modules/h3d_mod.F
44!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
45!|| names_and_titles_mod ../common_source/modules/names_and_titles_mod.F
46!|| output_mod ../common_source/modules/output/output_mod.F90
47!|| outputs_mod ../common_source/modules/outputs_mod.F
48!||====================================================================
49 SUBROUTINE h3d_nodal_scalar(
50 . ELBUF_TAB ,NODAL_SCALAR ,IFUNC ,IPARG ,GEO ,
51 . MASS ,PM ,ANIN ,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 outputs_mod
76 USE groupdef_mod , only: group_
77 USE fvbag_mod , only : fvbag_data
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
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 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
102 my_real
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,*)
106 my_real,INTENT(INOUT) :: NODAL_SCALAR_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
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),iparts(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
122 my_real , INTENT(IN) :: CSEFRIC(NINEFRIC,S_EFRICINT) ,CSEFRICG(S_EFRIC),
123 . CSEFRIC_STAMP(NINEFRIC_STAMP,S_EFRICINTG) ,CSEFRICG_STAMP(S_EFRICG)
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
128C-----------------------------------------------
129C L o c a l V a r i a b l e s
130C-----------------------------------------------
131 INTEGER I,J,K,M,N
132
133 ! H3D export for /NODE entities. Number : NUMNOD
134 INTEGER IOK_PART(NUMNOD)
135 INTEGER IS_WRITTEN_VALUE(NUMNOD)
136 my_real value(numnod)
137 my_real value_numnod(numnod)
138 REAL VALUE_NUMNOD_REAL(NUMNOD)
139
140 ! H3D export for FVMBAG (virtual nodes located at polyhedra centroids). Number : AIRBAGS_TOTAL_FVM_IN_H3D
141 INTEGER IOK_PART_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
142 my_real VALUE_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
143 my_real VALUE_NUMNOD_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
144 REAL VALUE_NUMNOD_REAL_FVM(AIRBAGS_TOTAL_FVM_IN_H3D)
145C-----------------------------------------------
146C
147 value(1:numnod) = zero
148 value_numnod_real(1:numnod) = zero
149 value_numnod(1:numnod) = zero
150c
151 value_fvm(1:airbags_total_fvm_in_h3d) = zero
152 value_numnod_real_fvm(1:airbags_total_fvm_in_h3d) = zero
153 value_numnod_fvm(1:airbags_total_fvm_in_h3d) = zero
154 iok_part_fvm(1:airbags_total_fvm_in_h3d) = 1
155c
156 DO i=1,numnod
157 node_id(i) = itab(i)
158 iok_part(i) = 0
159 is_written_node(i) = 0
160 ENDDO
161C
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
168c
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
176c
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
184c
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
192c
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(ixc(j,i)) = 1
197 ENDDO
198 ENDIF
199 ENDDO
200c
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
208c
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
216c
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
227C
228C--------------------------------------------------
229 IF(keyword == 'DMASS' .OR. keyword == 'DINER')THEN
230C--------------------------------------------------
231 !IF(KEYWORD == 'DT') K = 0
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 ! IFUNC<3.OR.IFUNC==12)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
250C--------------------------------------------------
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
256C--------------------------------------------------
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
263c
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 !useless
275 IF(KEYWORD == 'dt') THEN
276 IFUNC = 0 !not
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 !Nodal Pressure
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,
287 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
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,
292 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
293 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
294 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
295 ENDIF
296 !Nodal Density
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 ,IXS ,NIXS ,NUMELS,
300 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
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,
305 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
306 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
307 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
308 ENDIF
309 !Nodal Temperature
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,
313 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
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,
318 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
319 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
320 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
321 ENDIF
322 !Nodal Sound Speed
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,
326 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
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,
331 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
332 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
333 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT,MULTI_FVM)
334 ENDIF
335 !Nodal Sound Speed
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,
339 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
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,
344 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
345 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD ,FVDATA_P,
346 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
347 ENDIF
348 !Nodal Sound Speed
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,
352 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
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,
357 . ITAB ,NV46 ,MONVOL ,VOLMON ,AIRBAGS_TOTAL_FVM_IN_H3D,
358 . IS_WRITTEN_NODE ,IS_WRITTEN_NODE_FVM ,ISPMD, FVDATA_P,
359 . NUMNOD ,AIRBAGS_NODE_ID_SHIFT)
360 ENDIF
361 ! Nodal External Pressure (Elements to Nodes -> Averaged)
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
373C--------------------------------------------------
374 !Then Monitored Volumes (Pressure,Density,Temperature,Sound Speed)
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
385c
386 ENDIF
387C--------------------------------------------------
388 ELSEIF (KEYWORD == 'fpot') THEN !potential
389C--------------------------------------------------
390 CALL NODALP(13 , NODAL_SCALAR , VALUE_NUMNOD_REAL_FVM, IFLOW , RFLOW,
391 . IPARG , ELBUF_TAB , IXS , NIXS , NUMELS,
392 . ITAB , NV46 , MONVOL , VOLMON , AIRBAGS_TOTAL_FVM_IN_H3D,
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
398C--------------------------------------------------
399 ELSEIF(KEYWORD == 'ndmass')THEN
400C--------------------------------------------------
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
407C--------------------------------------------------
408 ELSEIF(KEYWORD == 'dama2/normal')THEN
409C--------------------------------------------------
410 DO I=1,NUMNOD
411 VALUE(I)=PDAMA2(1,I)
412 IS_WRITTEN_VALUE(I) = 1
413 ENDDO
414C--------------------------------------------------
415 ELSEIF(KEYWORD == 'dama2/tangent')THEN
416C--------------------------------------------------
417 DO I=1,NUMNOD
418 VALUE(I)=PDAMA2(2,I)
419 IS_WRITTEN_VALUE(I) = 1
420 ENDDO
421C--------------------------------------------------
422 ELSEIF(KEYWORD == 'schli')THEN
423C--------------------------------------------------
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
428C--------------------------------------------------
429 ELSEIF(KEYWORD == 'stifr')THEN
430C--------------------------------------------------
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
437C--------------------------------------------------
438 ELSEIF(KEYWORD == 'stif')THEN
439C--------------------------------------------------
440 DO I=1,NUMNOD
441 VALUE(I)=STIFN(I)
442 IS_WRITTEN_VALUE(I) = 1
443 ENDDO
444C--------------------------------------------------
445 ELSEIF(KEYWORD == 'skid_line')THEN
446C--------------------------------------------------
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
459C--------------------------------------------------
460 ELSEIF(KEYWORD == 'internal.id')THEN
461C--------------------------------------------------
462 DO I=1,NUMNOD
463 VALUE(I) = I
464 IS_WRITTEN_VALUE(I) = 1
465 ENDDO
466C--------------------------------------------------
467 ELSEIF(KEYWORD == 'cse_fric')THEN
468C--------------------------------------------------
469 IF(INTERFRIC > 0) THEN
470 IF(INTERFRIC <= NINEFRIC ) 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
503C--------------------------------------------------
504 ELSEIF(KEYWORD == 'cse_fricg')THEN
505C--------------------------------------------------
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
526c
527 CALL H3D_WRITE_SCALAR(IOK_PART,IS_WRITTEN_NODE,NODAL_SCALAR,NUMNOD,0,0,VALUE,IS_WRITTEN_VALUE)
528
529 IF(AIRBAGS_TOTAL_FVM_IN_H3D > 0)THEN
530 DO I=1,AIRBAGS_TOTAL_FVM_IN_H3D
531 VALUE_FVM(I)=VALUE_NUMNOD_REAL_FVM(I)
532 ENDDO
533 CALL H3D_WRITE_SCALAR(IOK_PART_FVM, IS_WRITTEN_NODE_FVM, NODAL_SCALAR_FVM, AIRBAGS_TOTAL_FVM_IN_H3D,0, 0,
534 . VALUE_FVM , IS_WRITTEN_NODE_FVM)
535 ENDIF
536
537
538 RETURN
539 END
subroutine h3d_nodal_scalar(elbuf_tab, nodal_scalar, ifunc, iparg, geo, mass, pm, anin, 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)
#define min(a, b)
Definition macros.h:20
initmumps id
integer, parameter ncharline100
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)
Definition nodalp.F:43