49
50
51
52
53
54
55
57 USE elbufdef_mod
62 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
63 use element_mod , only :nixs
64
65
66
67#include "implicit_f.inc"
68
69
70
71#include "scr07_c.inc"
72#include "spmd_c.inc"
73#include "com01_c.inc"
74#include "com04_c.inc"
75#include "vect01_c.inc"
76#include "param_c.inc"
77#include "task_c.inc"
78
79
80
81 INTEGER :: ITASK
82 INTEGER IPARG(NPARG,*), IXS(NIXS,*)
84 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
85 INTEGER :: LENCOM, NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*)
86 INTEGER :: IAD_ELEM(2, *), FR_ELEM(*)
87 TYPE(t_segvar) :: SEGVAR
88 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
89
90
91
92 INTEGER :: NG
93 INTEGER :: ITRIMAT
94 my_real,
DIMENSION(:),
POINTER :: volg, volp, uvar
95 INTEGER :: ADD
96 INTEGER :: K, I, II, JJ, NODE_ID, JMIN, JMAX
97 INTEGER :: ELEM_ID
98 INTEGER :: FIRST,LAST
99 my_real :: vol, a(3), b(3), c(3)
100
101
102
103 DO ng=itask+1,ngroup,nthread
104
105 IF (iparg(76, ng) == 1) cycle
107 2 mtn ,llt ,nft ,iad ,ity ,
108 3 npt ,jale ,ismstr ,jeul ,jtur ,
109 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
110 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
111 6 irep ,iint ,igtyp ,israt ,isrot ,
112 7 icsen ,isorth ,isorthg ,ifailure,jsms )
113 IF(jale+jeul == 0) cycle
114 IF(iparg(8,ng) == 1) cycle
115 IF(iparg(1,ng) /= 51) cycle
116 IF ((jale /= 0) .OR. ((jeul /= 0) .AND. (ncycle == 0 .OR. mcheck /= 0))) THEN
117
118 DO i=lft,llt
119 ii = i+nft
120
121
125 vol = zero
126
127
128 a = x(1:3, ixs(1+3, ii)) ; b = x(1:3, ixs(2+1, ii)) ; c = x(1:3, ixs(1+1, ii))
130
131 a = x(1:3, ixs(3+1, ii)) ; b = x(1:3, ixs(1+1, ii)) ; c = x(1:3, ixs
133
134
135
136 a = x(1:3, ixs(4+1, ii)) ; b = x(1:3, ixs(7+1, ii)) ; c = x(1:3, ixs(3+1, ii))
138
139
140 a = x(1:3, ixs(4+1, ii)) ; b = x(1:3, ixs(8+1, ii)) ; c = x(1:3, ixs(7+1, ii))
142
143
144
145 a = x(1:3, ixs(6+1, ii)) ; b = x(1:3, ixs(7+1, ii)) ; c = x(1:3, ixs(8+1, ii))
147
148
149 a = x(1:3, ixs(6+1, ii)) ; b = x(1:3, ixs(8+1, ii)) ; c = x(1:3, ixs(5+1, ii))
151
152
153
154 a = x(1:3, ixs(1+1, ii)) ; b = x(1:3, ixs(2+1, ii)) ; c = x(1:3, ixs(6+1, ii))
156
157
158 a = x(1:3, ixs(1+1, ii)) ; b = x(1:3, ixs(6+1, ii)) ; c = x(1:3, ixs(5+1, ii))
160
161
162
163 a = x(1:3, ixs(2+1, ii)) ; b = x(1:3, ixs(3+1, ii)) ; c = x(1:3, ixs(6+1, ii))
165
166
167 a = x(1:3, ixs(3+1, ii)) ; b = x(1:3, ixs(7+1, ii)) ; c = x(1:3, ixs(6+1, ii))
169
170
171
172 a = x(1:3, ixs(1+1, ii)) ; b = x(1:3, ixs(5+1, ii)) ; c = x(1:3, ixs(4+1, ii))
174
175
176 a = x(1:3, ixs(4+1, ii)) ; b = x(1:3, ixs(5+1, ii)) ; c = x(1:3, ixs(8+1, ii))
178
179
180 vol = vol / 6.d0
182
183
184 ENDDO
185 ENDIF
186 ENDDO
187 DO ng=itask+1,ngroup,nthread
188
189 IF (iparg(76, ng) == 1) cycle
191 2 mtn ,llt ,nft ,iad ,ity ,
192 3 npt ,jale ,ismstr ,jeul ,jtur ,
193 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
194 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
195 6 irep ,iint ,igtyp ,israt ,isrot ,
196 7 icsen ,isorth ,isorthg ,ifailure,jsms )
197 IF(jale+jeul == 0) cycle
198 IF(iparg(8,ng) == 1) cycle
199 IF(iparg(1,ng) /= 51) cycle
200 volg => elbuf_tab(ng)%GBUF%VOL
201 uvar => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR
202 lft=1
203 DO itrimat = 1, trimat
204 add = m51_n0phas + (itrimat-1)*m51_nvphas
205 add = add + 11
206 k = llt*(add-1)
207 volp =>uvar(k+1:k+llt)
208
209 DO i=lft,llt
210 ii = i+nft
214
215 ENDDO
216 ENDDO
217 ENDDO
218
220
221
222 IF(nspmd > 1)THEN
223
224
225 DO itrimat = 1, trimat
227 . lercvois, lesdvois, lencom)
228 ENDDO
229
230 DO jj = 1, 3
232 . lercvois, lesdvois, lencom)
233 ENDDO
234
235 ENDIF
237
238 first = 1 + itask * numnod / nthread
239 last = (1 + itask) * numnod / nthread
242 DO itrimat = 1, trimat
243 DO node_id = first,last
246 DO jj = jmin, jmax
248 IF (elem_id /= 0 .AND. elem_id <= numels) THEN
253 ENDIF
254 ENDDO
255 ENDDO
256 ENDDO
258
259 IF(nspmd > 1)THEN
260
261 DO itrimat = 1, trimat
264 ENDDO
265
266 ENDIF
268
269 DO ng=itask+1,ngroup,nthread
270
271 IF (iparg(76, ng) == 1) cycle
273 2 mtn ,llt ,nft ,iad ,ity ,
274 3 npt ,jale ,ismstr ,jeul ,jtur ,
275 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
276 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
277 6 irep ,iint ,igtyp ,israt ,isrot ,
278 7 icsen ,isorth ,isorthg ,ifailure,jsms )
279 IF(jale+jeul == 0) cycle
280 IF(iparg(8,ng) == 1) cycle
281 IF(iparg(1,ng) /= 51) cycle
282 lft = 1
283
284 DO itrimat = 1, trimat
286 ENDDO
287 END DO
288
290
291 IF (nspmd > 1) THEN
292
293
294 DO itrimat = 1, trimat
296 . nercvois, nesdvois, lercvois, lesdvois, lencom)
297 ENDDO
298
299 ENDIF
301
302 DO ng=itask+1,ngroup,nthread
303
304 IF (iparg(76, ng) == 1) cycle
306 2 mtn ,llt ,nft ,iad ,ity ,
307 3 npt ,jale ,ismstr ,jeul ,jtur ,
308 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
309 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
310 6 irep ,iint ,igtyp ,israt ,isrot ,
311 7 icsen ,isorth ,isorthg ,ifailure,jsms )
312 IF(jale+jeul == 0) cycle
313 IF(iparg(8,ng) == 1) cycle
314 IF(iparg(1,ng) /= 51) cycle
315 lft = 1
316
318 ENDDO
320
321
subroutine geom(a, b, c, center_x, center_y, center_z, vol)
subroutine gradient_limitation(ixs, x, trimat)
subroutine gradient_reconstruction(ixs, x, ale_connect, itrimat, segvar)
type(alemuscl_buffer_) alemuscl_buffer
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
subroutine spmd_e1vois(phi, nercvois, nesdvois, lercvois, lesdvois, lencom)
subroutine spmd_exch_min_max(iad_elem, fr_elem, min_array, max_array)
subroutine spmd_exchange_grad(dim, dim1, dim2, phi, nercvois, nesdvois, lercvois, lesdvois, lencom)