44
45
46
47
48
49
50
51
52
53
54
55
56
57
59 USE elbufdef_mod
60 USE multi_fvm_mod
62
63
64
65#include "implicit_f.inc"
66
67
68
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"
74
75
76
77 INTEGER, INTENT(INOUT) :: NERCVOIS(SNERCVOIS),NESDVOIS(SNESDVOIS),LERCVOIS(SLERCVOIS),LESDVOIS(SLESDVOIS)
78 INTEGER,INTENT(IN) :: IPARG(NPARG,)
79 INTEGER, INTENT(IN) :: ITHERM
80 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
81 TYPE(MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
82
83
84
85 INTEGER NG,MLW,IALEL,LENCOM,II,NEL,OFFSET,SWA_L
86 TYPE(G_BUFEL_) ,POINTER :: GBUF
87 INTEGER :: ITY
88 INTEGER :: NFT
89
90
91
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))
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
109 wa_l(nft+1:nft+nel) = multi_fvm%RHO(nft+1:nft+nel)
110 ELSE
111
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
118 enddo
119
120
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
subroutine spmd_e1vois(phi, nercvois, nesdvois, lercvois, lesdvois, lencom)