OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
schlieren_buffer_gathering.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "param_c.inc"
#include "tabsiz_c.inc"
#include "spmd_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine schlieren_buffer_gathering (nercvois, nesdvois, lercvois, lesdvois, iparg, elbuf_tab, multi_fvm, itherm)

Function/Subroutine Documentation

◆ schlieren_buffer_gathering()

subroutine schlieren_buffer_gathering ( integer, dimension(snercvois), intent(inout) nercvois,
integer, dimension(snesdvois), intent(inout) nesdvois,
integer, dimension(slercvois), intent(inout) lercvois,
integer, dimension(slesdvois), intent(inout) lesdvois,
integer, dimension(nparg,ngroup), intent(in) iparg,
type (elbuf_struct_), dimension(ngroup), target elbuf_tab,
type(multi_fvm_struct), intent(in) multi_fvm,
integer, intent(in) itherm )

Definition at line 41 of file schlieren_buffer_gathering.F.

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
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine spmd_e1vois(phi, nercvois, nesdvois, lercvois, lesdvois, lencom)
Definition spmd_cfd.F:375