48
49
50
51
52
53
54
56 USE elbufdef_mod
61 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
62
63
64
65#include "implicit_f.inc"
66
67
68
69#include "scr07_c.inc"
70#include "spmd_c.inc"
71#include "com01_c.inc"
72#include "com04_c.inc"
73#include "vect01_c.inc"
74#include "param_c.inc"
75#include "task_c.inc"
76
77
78
79 INTEGER :: ITASK
80 INTEGER IPARG(NPARG,*), IXS(NIXS,*)
82 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
83 INTEGER :: LENCOM, NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*)
84 INTEGER :: IAD_ELEM(2, *), FR_ELEM(*)
85 TYPE(t_segvar) :: SEGVAR
86 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
87
88
89
90 INTEGER :: NG
91 INTEGER :: ITRIMAT
92 my_real,
DIMENSION(:),
POINTER :: volg, volp, uvar
93 INTEGER :: ADD
94 INTEGER :: K, I, II, JJ, NODE_ID, JMIN, JMAX
95 INTEGER :: ELEM_ID
96 INTEGER :: FIRST,LAST
97 my_real :: vol, a(3), b(3), c(3)
98
99
100
101 DO ng=itask+1,ngroup,nthread
102
103 IF (iparg(76, ng) == 1) cycle
105 2 mtn ,llt ,nft ,iad ,ity ,
106 3 npt ,jale ,ismstr ,jeul ,jtur ,
107 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
108 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
109 6 irep ,iint ,igtyp ,israt ,isrot ,
110 7 icsen ,isorth ,isorthg ,ifailure,jsms )
111 IF(jale+jeul == 0) cycle
112 IF(iparg(8,ng) == 1) cycle
113 IF(iparg(1,ng) /= 51) cycle
114 IF ((jale /= 0) .OR. ((jeul /= 0) .AND. (ncycle == 0 .OR. mcheck /= 0))) THEN
115
116 DO i=lft,llt
117 ii = i+nft
118
119
123 vol = zero
124
125
126 a = x(1:3, ixs(1+3, ii)) ; b = x(1:3, ixs(2+1, ii)) ; c = x(1:3, ixs(1+1, ii))
128
129 a = x(1:3, ixs(3+1, ii)) ; b = x(1:3, ixs(1+1, ii)) ; c = x(1:3, ixs(4+1, ii))
131
132
133
134 a = x(1:3, ixs(4+1, ii)) ; b = x(1:3, ixs(7+1, ii)) ; c = x(1:3
136
137
138 a = x(1:3, ixs(4+1, ii)) ; b = x(1:3, ixs(8+1, ii)) ; c = x(1:3, ixs(7+1, ii))
140
141
142
143 a = x(1:3, ixs(6+1, ii)) ; b = x(1:3, ixs(7+1, ii)) ; c = x(1:3, ixs(8+1, ii))
145
146
147 a = x(1:3, ixs(6+1, ii)) ; b = x(1:3, ixs(8+1, ii)) ; c = x(1:3, ixs(5+1, ii))
149
150
151
152 a = x(1:3, ixs(1+1, ii)) ; b = x(1:3, ixs(2+1, ii)) ; c = x(1:3, ixs(6+1, ii))
154
155
156 a = x(1:3, ixs(1+1, ii)) ; b = x(1:3, ixs(6+1, ii)) ; c = x(1:3, ixs(5+1, ii
158
159
160
161 a = x(1:3, ixs(2+1, ii)) ; b = x(1:3, ixs(3+1, ii)) ; c = x(1:3, ixs(6+1, ii))
163
164
165 a = x(1:3, ixs(3+1, ii)) ; b = x(1:3, ixs(7+1, ii)) ; c = x(1:3, ixs(6+1, ii))
167
168
169
170 a = x(1:3, ixs(1+1, ii)) ; b = x(1:3, ixs(5+1, ii)) ; c = x(1:3, ixs(4+1, ii))
172
173
174 a = x(1:3, ixs(4+1, ii)) ; b = x(1:3, ixs(5+1, ii)) ; c = x(1:3, ixs(8+1, ii))
176
177
178 vol = vol / 6.d0
180
181
182 ENDDO
183 ENDIF
184 ENDDO
185 DO ng=itask+1,ngroup,nthread
186
187 IF (iparg(76, ng) == 1) cycle
189 2 mtn ,llt ,nft ,iad ,ity ,
190 3 npt ,jale ,ismstr ,jeul ,jtur ,
191 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
192 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
193 6 irep ,iint ,igtyp ,israt ,isrot ,
194 7 icsen ,isorth ,isorthg ,ifailure,jsms )
195 IF(jale+jeul == 0) cycle
196 IF(iparg(8,ng) == 1) cycle
197 IF(iparg(1,ng) /= 51) cycle
198 volg => elbuf_tab(ng)%GBUF%VOL
199 uvar => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR
200 lft=1
201 DO itrimat = 1, trimat
202 add = m51_n0phas + (itrimat-1)*m51_nvphas
203 add = add + 11
204 k = llt*(add-1)
205 volp =>uvar(k+1:k+llt)
206
207 DO i=lft,llt
208 ii = i+nft
212
213 ENDDO
214 ENDDO
215 ENDDO
216
218
219
220 IF(nspmd > 1)THEN
221
222
223 DO itrimat = 1, trimat
225 . lercvois, lesdvois, lencom)
226 ENDDO
227
228 DO jj = 1, 3
230 . lercvois, lesdvois, lencom)
231 ENDDO
232
233 ENDIF
235
236 first = 1 + itask * numnod / nthread
237 last = (1 + itask) * numnod / nthread
240 DO itrimat = 1, trimat
241 DO node_id = first,last
244 DO jj = jmin, jmax
246 IF (elem_id /= 0 .AND. elem_id <= numels) THEN
251 ENDIF
252 ENDDO
253 ENDDO
254 ENDDO
256
257 IF(nspmd > 1)THEN
258
259 DO itrimat = 1, trimat
262 ENDDO
263
264 ENDIF
266
267 DO ng=itask+1,ngroup,nthread
268
269 IF (iparg(76, ng) == 1) cycle
271 2 mtn ,llt ,nft ,iad ,ity ,
272 3 npt ,jale ,ismstr ,jeul ,jtur ,
273 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
274 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
275 6 irep ,iint ,igtyp ,israt ,isrot ,
276 7 icsen ,isorth ,isorthg ,ifailure,jsms )
277 IF(jale+jeul == 0) cycle
278 IF(iparg(8,ng) == 1) cycle
279 IF(iparg(1,ng) /= 51) cycle
280 lft = 1
281
282 DO itrimat = 1, trimat
284 ENDDO
285 END DO
286
288
289 IF (nspmd > 1) THEN
290
291
292 DO itrimat = 1, trimat
294 . nercvois, nesdvois, lercvois, lesdvois, lencom)
295 ENDDO
296
297 ENDIF
299
300 DO ng=itask+1,ngroup,nthread
301
302 IF (iparg(76, ng) == 1) cycle
304 2 mtn ,llt ,nft ,iad ,ity ,
305 3 npt ,jale ,ismstr ,jeul ,jtur ,
306 4 jthe ,jlag ,jmult ,jhbe ,jivf
307 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
308 6 irep ,iint ,igtyp ,israt ,isrot ,
309 7 icsen ,isorth ,isorthg ,ifailure,jsms )
310 IF(jale+jeul == 0) cycle
311 IF(iparg(8,ng) == 1) cycle
312 IF(iparg(1,ng) /= 51) cycle
313 lft = 1
314
316 ENDDO
318
319
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)