OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
schlieren_buffer_gathering.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!|| schlieren_buffer_gathering ../engine/source/output/anim/generate/schlieren_buffer_gathering.F
25!||--- called by ------------------------------------------------------
26!|| dfunc0 ../engine/source/output/anim/generate/dfunc0.F
27!|| dfuncc ../engine/source/output/anim/generate/dfuncc.F
28!|| dfuncs ../engine/source/output/anim/generate/dfunc6.F
29!|| funct_python_update_elements ../engine/source/tools/curve/funct_python_update_elements.F90
30!|| h3d_quad_scalar ../engine/source/output/h3d/h3d_results/h3d_quad_scalar.F
31!|| h3d_shell_scalar ../engine/source/output/h3d/h3d_results/h3d_shell_scalar.F
32!|| h3d_solid_scalar ../engine/source/output/h3d/h3d_results/h3d_solid_scalar.F
33!||--- calls -----------------------------------------------------
34!|| spmd_e1vois ../engine/source/mpi/fluid/spmd_cfd.F
35!||--- uses -----------------------------------------------------
36!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
37!|| initbuf_mod ../engine/share/resol/initbuf.F
38!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
39!|| schlieren_mod ../engine/share/modules/schlieren_mod.F
40!||====================================================================
42 1 NERCVOIS , NESDVOIS ,LERCVOIS ,LESDVOIS ,
43 2 IPARG , ELBUF_TAB , MULTI_FVM, ITHERM)
44C-----------------------------------------------
45C D e s c r i p t i o n
46C-----------------------------------------------
47C This subroutine outputs is gathering density
48C from all SPMDdomains to calculate later
49C numerical schlieren from schlieren subroutine
50C-----------------------------------------------
51C P r e - C o n d i t i o n s
52C-----------------------------------------------
53C ALE/EULER element groups only.
54C this can be checked with IALEL =IPARG(7,NG)+IPARG(11,NG) > 0
55C-----------------------------------------------
56C M o d u l e s
57C-----------------------------------------------
58 USE initbuf_mod
59 USE elbufdef_mod
60 USE multi_fvm_mod
61 USE schlieren_mod
62C-----------------------------------------------
63C I m p l i c i t T y p e s
64C-----------------------------------------------
65#include "implicit_f.inc"
66C-----------------------------------------------
67C C o m m o n B l o c k s
68C-----------------------------------------------
69#include "com01_c.inc"
70#include "com04_c.inc"
71#include "param_c.inc"
72#include "tabsiz_c.inc"
73#include "spmd_c.inc"
74C-----------------------------------------------
75C D u m m y A r g u m e n t s
76C-----------------------------------------------
77 INTEGER, INTENT(INOUT) :: NERCVOIS(SNERCVOIS),NESDVOIS(SNESDVOIS),LERCVOIS(SLERCVOIS),LESDVOIS(SLESDVOIS)
78 INTEGER,INTENT(IN) :: IPARG(NPARG,NGROUP)
79 INTEGER, INTENT(IN) :: ITHERM
80 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
81 TYPE(multi_fvm_struct), INTENT(IN) :: MULTI_FVM
82C-----------------------------------------------
83C L o c a l V a r i a b l e s
84C-----------------------------------------------
85 INTEGER NG,MLW,IALEL,LENCOM,II,NEL,OFFSET,SWA_L
86 TYPE(G_BUFEL_) ,POINTER :: GBUF
87 INTEGER :: ITY !< group value : elem type
88 INTEGER :: NFT !< group value : shift (to inject local -> global)
89C-----------------------------------------------
90C S o u r c e L i n e s
91C-----------------------------------------------
92 ii=0
93 IF(n2d/=0)ii=1
94 swa_l = max(iale,itherm,ieuler,ialelag)*( numels + numelq + ii*numeltg + nsvois+ nqvois + ii*ntgvois + nsegflu )
95 IF(.NOT.ALLOCATED(wa_l))ALLOCATE(wa_l(swa_l)) ! work array for /ANIM/ELEM/SCHLIEREN or /H3D/ELEM/SCHLIEREN (DENSITY GATHERING)
96 DO ng=1,ngroup
97 mlw = iparg(01,ng)
98 nel = iparg(02,ng)
99 ity = iparg(05,ng)
100 IF (mlw /= 13) THEN
101 DO offset = 0,nel-1,nvsiz
102 nft = iparg(3,ng) + offset
103 nel = min(nvsiz,nel-offset)
104 ialel = iparg(7,ng) + iparg(11,ng)
105 IF (ialel == 0)cycle
106 IF (ity == 1 .OR. ity == 2 .OR. (ity == 7 .AND. n2d /= 0)) THEN
107 IF (mlw == 151) THEN
108 !-- COLLOCATED SCHEME
109 wa_l(nft+1:nft+nel) = multi_fvm%RHO(nft+1:nft+nel)
110 ELSE
111 !-- STAGGERED SCHEME
112 gbuf => elbuf_tab(ng)%GBUF
113 wa_l(nft+1:nft+nel) = gbuf%RHO(1:nel)
114 ENDIF
115 ENDIF
116 ENDDO
117 endif!(MLW /= 13)
118 enddo!next NG
119 !--------------------
120 ! SPMD EXCHANGE
121 !--------------------
122 IF(iale+ieuler+itherm /= 0)THEN
123 lencom = nercvois(nspmd+1)+nesdvois(nspmd+1)
124 IF (nspmd>1) THEN
125 CALL spmd_e1vois( wa_l,nercvois,nesdvois,lercvois,lesdvois,lencom )
126 END IF
127 ENDIF
128
129 END SUBROUTINE schlieren_buffer_gathering
130
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine schlieren_buffer_gathering(nercvois, nesdvois, lercvois, lesdvois, iparg, elbuf_tab, multi_fvm, itherm)
subroutine spmd_e1vois(phi, nercvois, nesdvois, lercvois, lesdvois, lencom)
Definition spmd_cfd.F:375