Directory: | ./ |
---|---|
File: | phy_common/mod_phys_lmdz_transfert_para.f90 |
Date: | 2022-01-11 19:19:34 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 53 | 400 | 13.2% |
Branches: | 11 | 280 | 3.9% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | ! | ||
2 | !$Id: mod_phys_lmdz_transfert_para.F90 3465 2019-03-14 09:34:31Z fairhead $ | ||
3 | ! | ||
4 | MODULE mod_phys_lmdz_transfert_para | ||
5 | |||
6 | USE mod_phys_lmdz_mpi_transfert | ||
7 | USE mod_phys_lmdz_omp_transfert | ||
8 | |||
9 | |||
10 | |||
11 | INTERFACE bcast | ||
12 | MODULE PROCEDURE bcast_c, & | ||
13 | bcast_i,bcast_i1,bcast_i2,bcast_i3,bcast_i4, & | ||
14 | bcast_r,bcast_r1,bcast_r2,bcast_r3,bcast_r4, & | ||
15 | bcast_l,bcast_l1,bcast_l2,bcast_l3,bcast_l4 | ||
16 | END INTERFACE | ||
17 | |||
18 | INTERFACE scatter | ||
19 | MODULE PROCEDURE scatter_i,scatter_i1,scatter_i2,scatter_i3, & | ||
20 | scatter_r,scatter_r1,scatter_r2,scatter_r3, & | ||
21 | scatter_l,scatter_l1,scatter_l2,scatter_l3 | ||
22 | END INTERFACE | ||
23 | |||
24 | |||
25 | INTERFACE gather | ||
26 | MODULE PROCEDURE gather_i,gather_i1,gather_i2,gather_i3, & | ||
27 | gather_r,gather_r1,gather_r2,gather_r3, & | ||
28 | gather_l,gather_l1,gather_l2,gather_l3 | ||
29 | END INTERFACE | ||
30 | |||
31 | INTERFACE scatter2D | ||
32 | MODULE PROCEDURE scatter2D_i,scatter2D_i1,scatter2D_i2,scatter2D_i3, & | ||
33 | scatter2D_r,scatter2D_r1,scatter2D_r2,scatter2D_r3, & | ||
34 | scatter2D_l,scatter2D_l1,scatter2D_l2,scatter2D_l3 | ||
35 | END INTERFACE | ||
36 | |||
37 | INTERFACE gather2D | ||
38 | MODULE PROCEDURE gather2D_i,gather2D_i1,gather2D_i2,gather2D_i3, & | ||
39 | gather2D_r,gather2D_r1,gather2D_r2,gather2D_r3, & | ||
40 | gather2D_l,gather2D_l1,gather2D_l2,gather2D_l3 | ||
41 | END INTERFACE | ||
42 | |||
43 | INTERFACE reduce_sum | ||
44 | MODULE PROCEDURE reduce_sum_i,reduce_sum_i1,reduce_sum_i2,reduce_sum_i3,reduce_sum_i4, & | ||
45 | reduce_sum_r,reduce_sum_r1,reduce_sum_r2,reduce_sum_r3,reduce_sum_r4 | ||
46 | END INTERFACE | ||
47 | |||
48 | INTERFACE reduce_min | ||
49 | MODULE PROCEDURE reduce_min_i,reduce_min_i1,reduce_min_i2,reduce_min_i3,reduce_min_i4, & | ||
50 | reduce_min_r,reduce_min_r1,reduce_min_r2,reduce_min_r3,reduce_min_r4 | ||
51 | END INTERFACE | ||
52 | |||
53 | CONTAINS | ||
54 | |||
55 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
56 | !! Definition des Broadcast --> 4D !! | ||
57 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
58 | |||
59 | !! -- Les chaine de charact�re -- !! | ||
60 | |||
61 | 2 | SUBROUTINE bcast_c(var) | |
62 | IMPLICIT NONE | ||
63 | CHARACTER(LEN=*),INTENT(INOUT) :: Var | ||
64 | |||
65 | !$OMP MASTER | ||
66 | 2 | CALL bcast_mpi(Var) | |
67 | !$OMP END MASTER | ||
68 | 2 | CALL bcast_omp(Var) | |
69 | |||
70 | 2 | END SUBROUTINE bcast_c | |
71 | |||
72 | !! -- Les entiers -- !! | ||
73 | |||
74 | 757 | SUBROUTINE bcast_i(var) | |
75 | IMPLICIT NONE | ||
76 | INTEGER,INTENT(INOUT) :: Var | ||
77 | !$OMP MASTER | ||
78 | 757 | CALL bcast_mpi(Var) | |
79 | !$OMP END MASTER | ||
80 | 757 | CALL bcast_omp(Var) | |
81 | |||
82 | 757 | END SUBROUTINE bcast_i | |
83 | |||
84 | ✗ | SUBROUTINE bcast_i1(var) | |
85 | IMPLICIT NONE | ||
86 | INTEGER,INTENT(INOUT) :: Var(:) | ||
87 | |||
88 | !$OMP MASTER | ||
89 | ✗ | CALL bcast_mpi(Var) | |
90 | !$OMP END MASTER | ||
91 | ✗ | CALL bcast_omp(Var) | |
92 | |||
93 | ✗ | END SUBROUTINE bcast_i1 | |
94 | |||
95 | |||
96 | ✗ | SUBROUTINE bcast_i2(var) | |
97 | IMPLICIT NONE | ||
98 | INTEGER,INTENT(INOUT) :: Var(:,:) | ||
99 | |||
100 | !$OMP MASTER | ||
101 | ✗ | CALL bcast_mpi(Var) | |
102 | !$OMP END MASTER | ||
103 | ✗ | CALL bcast_omp(Var) | |
104 | |||
105 | ✗ | END SUBROUTINE bcast_i2 | |
106 | |||
107 | |||
108 | ✗ | SUBROUTINE bcast_i3(var) | |
109 | IMPLICIT NONE | ||
110 | INTEGER,INTENT(INOUT) :: Var(:,:,:) | ||
111 | |||
112 | !$OMP MASTER | ||
113 | ✗ | CALL bcast_mpi(Var) | |
114 | !$OMP END MASTER | ||
115 | ✗ | CALL bcast_omp(Var) | |
116 | |||
117 | ✗ | END SUBROUTINE bcast_i3 | |
118 | |||
119 | |||
120 | ✗ | SUBROUTINE bcast_i4(var) | |
121 | IMPLICIT NONE | ||
122 | INTEGER,INTENT(INOUT) :: Var(:,:,:,:) | ||
123 | |||
124 | !$OMP MASTER | ||
125 | ✗ | CALL bcast_mpi(Var) | |
126 | !$OMP END MASTER | ||
127 | ✗ | CALL bcast_omp(Var) | |
128 | |||
129 | ✗ | END SUBROUTINE bcast_i4 | |
130 | |||
131 | |||
132 | !! -- Les reels -- !! | ||
133 | |||
134 | 540 | SUBROUTINE bcast_r(var) | |
135 | IMPLICIT NONE | ||
136 | REAL,INTENT(INOUT) :: Var | ||
137 | |||
138 | !$OMP MASTER | ||
139 | 540 | CALL bcast_mpi(Var) | |
140 | !$OMP END MASTER | ||
141 | 540 | CALL bcast_omp(Var) | |
142 | |||
143 | 540 | END SUBROUTINE bcast_r | |
144 | |||
145 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
|
5 | SUBROUTINE bcast_r1(var) |
146 | IMPLICIT NONE | ||
147 | REAL,INTENT(INOUT) :: Var(:) | ||
148 | |||
149 | !$OMP MASTER | ||
150 | 5 | CALL bcast_mpi(Var) | |
151 | !$OMP END MASTER | ||
152 | 5 | CALL bcast_omp(Var) | |
153 | |||
154 | 5 | END SUBROUTINE bcast_r1 | |
155 | |||
156 | |||
157 | ✗ | SUBROUTINE bcast_r2(var) | |
158 | IMPLICIT NONE | ||
159 | REAL,INTENT(INOUT) :: Var(:,:) | ||
160 | |||
161 | !$OMP MASTER | ||
162 | ✗ | CALL bcast_mpi(Var) | |
163 | !$OMP END MASTER | ||
164 | ✗ | CALL bcast_omp(Var) | |
165 | |||
166 | ✗ | END SUBROUTINE bcast_r2 | |
167 | |||
168 | |||
169 | ✗ | SUBROUTINE bcast_r3(var) | |
170 | IMPLICIT NONE | ||
171 | REAL,INTENT(INOUT) :: Var(:,:,:) | ||
172 | |||
173 | !$OMP MASTER | ||
174 | ✗ | CALL bcast_mpi(Var) | |
175 | !$OMP END MASTER | ||
176 | ✗ | CALL bcast_omp(Var) | |
177 | |||
178 | ✗ | END SUBROUTINE bcast_r3 | |
179 | |||
180 | |||
181 | ✗ | SUBROUTINE bcast_r4(var) | |
182 | IMPLICIT NONE | ||
183 | REAL,INTENT(INOUT) :: Var(:,:,:,:) | ||
184 | |||
185 | !$OMP MASTER | ||
186 | ✗ | CALL bcast_mpi(Var) | |
187 | !$OMP END MASTER | ||
188 | ✗ | CALL bcast_omp(Var) | |
189 | |||
190 | ✗ | END SUBROUTINE bcast_r4 | |
191 | |||
192 | |||
193 | !! -- Les booleens -- !! | ||
194 | |||
195 | 855 | SUBROUTINE bcast_l(var) | |
196 | IMPLICIT NONE | ||
197 | LOGICAL,INTENT(INOUT) :: Var | ||
198 | !$OMP MASTER | ||
199 | 855 | CALL bcast_mpi(Var) | |
200 | !$OMP END MASTER | ||
201 | 855 | CALL bcast_omp(Var) | |
202 | |||
203 | 855 | END SUBROUTINE bcast_l | |
204 | |||
205 | ✗ | SUBROUTINE bcast_l1(var) | |
206 | IMPLICIT NONE | ||
207 | LOGICAL,INTENT(INOUT) :: Var(:) | ||
208 | |||
209 | !$OMP MASTER | ||
210 | ✗ | CALL bcast_mpi(Var) | |
211 | !$OMP END MASTER | ||
212 | ✗ | CALL bcast_omp(Var) | |
213 | |||
214 | ✗ | END SUBROUTINE bcast_l1 | |
215 | |||
216 | |||
217 | ✗ | SUBROUTINE bcast_l2(var) | |
218 | IMPLICIT NONE | ||
219 | LOGICAL,INTENT(INOUT) :: Var(:,:) | ||
220 | |||
221 | !$OMP MASTER | ||
222 | ✗ | CALL bcast_mpi(Var) | |
223 | !$OMP END MASTER | ||
224 | ✗ | CALL bcast_omp(Var) | |
225 | |||
226 | ✗ | END SUBROUTINE bcast_l2 | |
227 | |||
228 | |||
229 | ✗ | SUBROUTINE bcast_l3(var) | |
230 | IMPLICIT NONE | ||
231 | LOGICAL,INTENT(INOUT) :: Var(:,:,:) | ||
232 | |||
233 | !$OMP MASTER | ||
234 | ✗ | CALL bcast_mpi(Var) | |
235 | !$OMP END MASTER | ||
236 | ✗ | CALL bcast_omp(Var) | |
237 | |||
238 | ✗ | END SUBROUTINE bcast_l3 | |
239 | |||
240 | |||
241 | ✗ | SUBROUTINE bcast_l4(var) | |
242 | IMPLICIT NONE | ||
243 | LOGICAL,INTENT(INOUT) :: Var(:,:,:,:) | ||
244 | |||
245 | !$OMP MASTER | ||
246 | ✗ | CALL bcast_mpi(Var) | |
247 | !$OMP END MASTER | ||
248 | ✗ | CALL bcast_omp(Var) | |
249 | |||
250 | ✗ | END SUBROUTINE bcast_l4 | |
251 | |||
252 | |||
253 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
254 | !! Definition des Scatter --> 4D !! | ||
255 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
256 | |||
257 | ✗ | SUBROUTINE scatter_i(VarIn, VarOut) | |
258 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
259 | IMPLICIT NONE | ||
260 | |||
261 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
262 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
263 | |||
264 | ✗ | INTEGER,DIMENSION(klon_mpi) :: Var_tmp | |
265 | |||
266 | !$OMP MASTER | ||
267 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
268 | !$OMP END MASTER | ||
269 | |||
270 | ✗ | CALL scatter_omp(Var_tmp,Varout) | |
271 | |||
272 | ✗ | END SUBROUTINE scatter_i | |
273 | |||
274 | |||
275 | ✗ | SUBROUTINE scatter_i1(VarIn, VarOut) | |
276 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
277 | IMPLICIT NONE | ||
278 | |||
279 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
280 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
281 | |||
282 | ✗ | INTEGER,DIMENSION(klon_mpi,SIZE(Varout,2)) :: Var_tmp | |
283 | |||
284 | !$OMP MASTER | ||
285 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
286 | !$OMP END MASTER | ||
287 | ✗ | CALL scatter_omp(Var_tmp,Varout) | |
288 | |||
289 | ✗ | END SUBROUTINE scatter_i1 | |
290 | |||
291 | |||
292 | ✗ | SUBROUTINE scatter_i2(VarIn, VarOut) | |
293 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
294 | IMPLICIT NONE | ||
295 | |||
296 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
297 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
298 | |||
299 | ✗ | INTEGER,DIMENSION(klon_mpi,SIZE(Varout,2),SIZE(Varout,3)) :: Var_tmp | |
300 | |||
301 | !$OMP MASTER | ||
302 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
303 | !$OMP END MASTER | ||
304 | ✗ | CALL scatter_omp(Var_tmp,Varout) | |
305 | |||
306 | ✗ | END SUBROUTINE scatter_i2 | |
307 | |||
308 | |||
309 | ✗ | SUBROUTINE scatter_i3(VarIn, VarOut) | |
310 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
311 | IMPLICIT NONE | ||
312 | |||
313 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
314 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
315 | |||
316 | ✗ | INTEGER,DIMENSION(klon_mpi,SIZE(Varout,2),SIZE(Varout,3),SIZE(Varout,4)) :: Var_tmp | |
317 | |||
318 | !$OMP MASTER | ||
319 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
320 | !$OMP END MASTER | ||
321 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
322 | |||
323 | ✗ | END SUBROUTINE scatter_i3 | |
324 | |||
325 | |||
326 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 52 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 52 times.
|
52 | SUBROUTINE scatter_r(VarIn, VarOut) |
327 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
328 | IMPLICIT NONE | ||
329 | |||
330 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
331 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
332 | |||
333 | 104 | REAL,DIMENSION(klon_mpi) :: Var_tmp | |
334 | |||
335 | !$OMP MASTER | ||
336 | 52 | CALL scatter_mpi(VarIn,Var_tmp) | |
337 | !$OMP END MASTER | ||
338 | |||
339 | 52 | CALL scatter_omp(Var_tmp,Varout) | |
340 | |||
341 | 52 | END SUBROUTINE scatter_r | |
342 | |||
343 | |||
344 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 322 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 322 times.
|
322 | SUBROUTINE scatter_r1(VarIn, VarOut) |
345 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
346 | IMPLICIT NONE | ||
347 | |||
348 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
349 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
350 | |||
351 | 644 | REAL,DIMENSION(klon_mpi,SIZE(Varout,2)) :: Var_tmp | |
352 | |||
353 | !$OMP MASTER | ||
354 | 322 | CALL scatter_mpi(VarIn,Var_tmp) | |
355 | !$OMP END MASTER | ||
356 | 322 | CALL scatter_omp(Var_tmp,Varout) | |
357 | |||
358 | 322 | END SUBROUTINE scatter_r1 | |
359 | |||
360 | |||
361 | ✗ | SUBROUTINE scatter_r2(VarIn, VarOut) | |
362 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
363 | IMPLICIT NONE | ||
364 | |||
365 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
366 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
367 | |||
368 | ✗ | REAL,DIMENSION(klon_mpi,SIZE(Varout,2),SIZE(Varout,3)) :: Var_tmp | |
369 | |||
370 | !$OMP MASTER | ||
371 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
372 | !$OMP END MASTER | ||
373 | ✗ | CALL scatter_omp(Var_tmp,Varout) | |
374 | |||
375 | ✗ | END SUBROUTINE scatter_r2 | |
376 | |||
377 | |||
378 | ✗ | SUBROUTINE scatter_r3(VarIn, VarOut) | |
379 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
380 | IMPLICIT NONE | ||
381 | |||
382 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
383 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
384 | |||
385 | ✗ | REAL,DIMENSION(klon_mpi,SIZE(Varout,2),SIZE(Varout,3),SIZE(Varout,4)) :: Var_tmp | |
386 | |||
387 | !$OMP MASTER | ||
388 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
389 | !$OMP END MASTER | ||
390 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
391 | |||
392 | ✗ | END SUBROUTINE scatter_r3 | |
393 | |||
394 | |||
395 | |||
396 | ✗ | SUBROUTINE scatter_l(VarIn, VarOut) | |
397 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
398 | IMPLICIT NONE | ||
399 | |||
400 | LOGICAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
401 | LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
402 | |||
403 | ✗ | LOGICAL,DIMENSION(klon_mpi) :: Var_tmp | |
404 | |||
405 | !$OMP MASTER | ||
406 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
407 | !$OMP END MASTER | ||
408 | |||
409 | ✗ | CALL scatter_omp(Var_tmp,Varout) | |
410 | |||
411 | ✗ | END SUBROUTINE scatter_l | |
412 | |||
413 | |||
414 | ✗ | SUBROUTINE scatter_l1(VarIn, VarOut) | |
415 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
416 | IMPLICIT NONE | ||
417 | |||
418 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
419 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
420 | |||
421 | ✗ | LOGICAL,DIMENSION(klon_mpi,SIZE(Varout,2)) :: Var_tmp | |
422 | |||
423 | !$OMP MASTER | ||
424 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
425 | !$OMP END MASTER | ||
426 | ✗ | CALL scatter_omp(Var_tmp,Varout) | |
427 | |||
428 | ✗ | END SUBROUTINE scatter_l1 | |
429 | |||
430 | |||
431 | ✗ | SUBROUTINE scatter_l2(VarIn, VarOut) | |
432 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
433 | IMPLICIT NONE | ||
434 | |||
435 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
436 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
437 | |||
438 | ✗ | LOGICAL,DIMENSION(klon_mpi,SIZE(Varout,2),SIZE(Varout,3)) :: Var_tmp | |
439 | |||
440 | !$OMP MASTER | ||
441 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
442 | !$OMP END MASTER | ||
443 | ✗ | CALL scatter_omp(Var_tmp,Varout) | |
444 | |||
445 | ✗ | END SUBROUTINE scatter_l2 | |
446 | |||
447 | |||
448 | ✗ | SUBROUTINE scatter_l3(VarIn, VarOut) | |
449 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
450 | IMPLICIT NONE | ||
451 | |||
452 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
453 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
454 | |||
455 | ✗ | LOGICAL,DIMENSION(klon_mpi,SIZE(Varout,2),SIZE(Varout,3),SIZE(Varout,4)) :: Var_tmp | |
456 | |||
457 | !$OMP MASTER | ||
458 | ✗ | CALL scatter_mpi(VarIn,Var_tmp) | |
459 | !$OMP END MASTER | ||
460 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
461 | |||
462 | ✗ | END SUBROUTINE scatter_l3 | |
463 | |||
464 | |||
465 | |||
466 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
467 | !! Definition des Gather --> 4D !! | ||
468 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
469 | |||
470 | !!!!! --> Les entiers | ||
471 | |||
472 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 563 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 563 times.
|
563 | SUBROUTINE gather_i(VarIn, VarOut) |
473 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
474 | IMPLICIT NONE | ||
475 | |||
476 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
477 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
478 | |||
479 | 1126 | INTEGER, DIMENSION(klon_mpi) :: Var_tmp | |
480 | |||
481 | 563 | CALL gather_omp(VarIn,Var_tmp) | |
482 | !$OMP MASTER | ||
483 | 563 | CALL gather_mpi(Var_tmp,Varout) | |
484 | !$OMP END MASTER | ||
485 | |||
486 | 563 | END SUBROUTINE gather_i | |
487 | |||
488 | |||
489 | ✗ | SUBROUTINE gather_i1(VarIn, VarOut) | |
490 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
491 | IMPLICIT NONE | ||
492 | |||
493 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
494 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
495 | |||
496 | ✗ | INTEGER, DIMENSION(klon_mpi,SIZE(VarIn,2)) :: Var_tmp | |
497 | |||
498 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
499 | !$OMP MASTER | ||
500 | ✗ | CALL gather_mpi(Var_tmp,Varout) | |
501 | !$OMP END MASTER | ||
502 | |||
503 | ✗ | END SUBROUTINE gather_i1 | |
504 | |||
505 | |||
506 | ✗ | SUBROUTINE gather_i2(VarIn, VarOut) | |
507 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
508 | IMPLICIT NONE | ||
509 | |||
510 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
511 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
512 | |||
513 | ✗ | INTEGER, DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
514 | |||
515 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
516 | !$OMP MASTER | ||
517 | ✗ | CALL gather_mpi(Var_tmp,VarOut) | |
518 | !$OMP END MASTER | ||
519 | |||
520 | ✗ | END SUBROUTINE gather_i2 | |
521 | |||
522 | |||
523 | ✗ | SUBROUTINE gather_i3(VarIn, VarOut) | |
524 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
525 | IMPLICIT NONE | ||
526 | |||
527 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
528 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
529 | |||
530 | ✗ | INTEGER, DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
531 | |||
532 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
533 | !$OMP MASTER | ||
534 | ✗ | CALL gather_mpi(Var_tmp,VarOut) | |
535 | !$OMP END MASTER | ||
536 | |||
537 | ✗ | END SUBROUTINE gather_i3 | |
538 | |||
539 | |||
540 | !!!!! --> Les reels | ||
541 | |||
542 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
|
4 | SUBROUTINE gather_r(VarIn, VarOut) |
543 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
544 | IMPLICIT NONE | ||
545 | |||
546 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
547 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
548 | |||
549 | 8 | REAL, DIMENSION(klon_mpi) :: Var_tmp | |
550 | |||
551 | 4 | CALL gather_omp(VarIn,Var_tmp) | |
552 | !$OMP MASTER | ||
553 | 4 | CALL gather_mpi(Var_tmp,VarOut) | |
554 | !$OMP END MASTER | ||
555 | |||
556 | 4 | END SUBROUTINE gather_r | |
557 | |||
558 | |||
559 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 214 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 214 times.
|
214 | SUBROUTINE gather_r1(VarIn, VarOut) |
560 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
561 | IMPLICIT NONE | ||
562 | |||
563 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
564 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
565 | |||
566 | 428 | REAL, DIMENSION(klon_mpi,SIZE(VarIn,2)) :: Var_tmp | |
567 | |||
568 | 214 | CALL gather_omp(VarIn,Var_tmp) | |
569 | !$OMP MASTER | ||
570 | 214 | CALL gather_mpi(Var_tmp,VarOut) | |
571 | !$OMP END MASTER | ||
572 | |||
573 | 214 | END SUBROUTINE gather_r1 | |
574 | |||
575 | |||
576 | ✗ | SUBROUTINE gather_r2(VarIn, VarOut) | |
577 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
578 | IMPLICIT NONE | ||
579 | |||
580 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
581 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
582 | |||
583 | ✗ | REAL, DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
584 | |||
585 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
586 | !$OMP MASTER | ||
587 | ✗ | CALL gather_mpi(Var_tmp,VarOut) | |
588 | !$OMP END MASTER | ||
589 | |||
590 | ✗ | END SUBROUTINE gather_r2 | |
591 | |||
592 | |||
593 | ✗ | SUBROUTINE gather_r3(VarIn, VarOut) | |
594 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
595 | IMPLICIT NONE | ||
596 | |||
597 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
598 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
599 | |||
600 | ✗ | REAL, DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
601 | |||
602 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
603 | !$OMP MASTER | ||
604 | ✗ | CALL gather_mpi(Var_tmp,VarOut) | |
605 | !$OMP END MASTER | ||
606 | |||
607 | ✗ | END SUBROUTINE gather_r3 | |
608 | |||
609 | |||
610 | !!!!! --> Les booleens | ||
611 | |||
612 | ✗ | SUBROUTINE gather_l(VarIn, VarOut) | |
613 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
614 | IMPLICIT NONE | ||
615 | |||
616 | LOGICAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
617 | LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
618 | |||
619 | ✗ | LOGICAL, DIMENSION(klon_mpi) :: Var_tmp | |
620 | |||
621 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
622 | !$OMP MASTER | ||
623 | ✗ | CALL gather_mpi(Var_tmp,VarOut) | |
624 | !$OMP END MASTER | ||
625 | |||
626 | ✗ | END SUBROUTINE gather_l | |
627 | |||
628 | |||
629 | ✗ | SUBROUTINE gather_l1(VarIn, VarOut) | |
630 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
631 | IMPLICIT NONE | ||
632 | |||
633 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
634 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
635 | |||
636 | ✗ | LOGICAL, DIMENSION(klon_mpi,SIZE(VarIn,2)) :: Var_tmp | |
637 | |||
638 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
639 | !$OMP MASTER | ||
640 | ✗ | CALL gather_mpi(Var_tmp,VarOut) | |
641 | !$OMP END MASTER | ||
642 | |||
643 | ✗ | END SUBROUTINE gather_l1 | |
644 | |||
645 | |||
646 | ✗ | SUBROUTINE gather_l2(VarIn, VarOut) | |
647 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
648 | IMPLICIT NONE | ||
649 | |||
650 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
651 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
652 | |||
653 | ✗ | LOGICAL, DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
654 | |||
655 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
656 | !$OMP MASTER | ||
657 | ✗ | CALL gather_mpi(Var_tmp,VarOut) | |
658 | !$OMP END MASTER | ||
659 | |||
660 | ✗ | END SUBROUTINE gather_l2 | |
661 | |||
662 | |||
663 | ✗ | SUBROUTINE gather_l3(VarIn, VarOut) | |
664 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
665 | IMPLICIT NONE | ||
666 | |||
667 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
668 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
669 | |||
670 | ✗ | LOGICAL, DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
671 | |||
672 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
673 | !$OMP MASTER | ||
674 | ✗ | CALL gather_mpi(Var_tmp,VarOut) | |
675 | !$OMP END MASTER | ||
676 | |||
677 | ✗ | END SUBROUTINE gather_l3 | |
678 | |||
679 | |||
680 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
681 | !! Definition des Scatter2D --> 4D !! | ||
682 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
683 | |||
684 | |||
685 | !!!!! --> Les entiers | ||
686 | |||
687 | ✗ | SUBROUTINE scatter2D_i(VarIn, VarOut) | |
688 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
689 | IMPLICIT NONE | ||
690 | |||
691 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
692 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
693 | |||
694 | ✗ | INTEGER,DIMENSION(klon_mpi) :: Var_tmp | |
695 | |||
696 | !$OMP MASTER | ||
697 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
698 | !$OMP END MASTER | ||
699 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
700 | |||
701 | ✗ | END SUBROUTINE scatter2D_i | |
702 | |||
703 | |||
704 | ✗ | SUBROUTINE scatter2D_i1(VarIn, VarOut) | |
705 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
706 | IMPLICIT NONE | ||
707 | |||
708 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
709 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
710 | |||
711 | ✗ | INTEGER,DIMENSION(klon_mpi,SIZE(VarOut,2)) :: Var_tmp | |
712 | |||
713 | !$OMP MASTER | ||
714 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
715 | !$OMP END MASTER | ||
716 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
717 | |||
718 | ✗ | END SUBROUTINE scatter2D_i1 | |
719 | |||
720 | |||
721 | ✗ | SUBROUTINE scatter2D_i2(VarIn, VarOut) | |
722 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
723 | IMPLICIT NONE | ||
724 | |||
725 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
726 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
727 | |||
728 | ✗ | INTEGER,DIMENSION(klon_mpi,SIZE(VarOut,2),SIZE(VarOut,3)) :: Var_tmp | |
729 | |||
730 | !$OMP MASTER | ||
731 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
732 | !$OMP END MASTER | ||
733 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
734 | |||
735 | ✗ | END SUBROUTINE scatter2D_i2 | |
736 | |||
737 | |||
738 | ✗ | SUBROUTINE scatter2D_i3(VarIn, VarOut) | |
739 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
740 | IMPLICIT NONE | ||
741 | |||
742 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn | ||
743 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
744 | |||
745 | ✗ | INTEGER,DIMENSION(klon_mpi,SIZE(VarOut,2),SIZE(VarOut,3),SIZE(VarOut,4)) :: Var_tmp | |
746 | |||
747 | !$OMP MASTER | ||
748 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
749 | !$OMP END MASTER | ||
750 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
751 | |||
752 | ✗ | END SUBROUTINE scatter2D_i3 | |
753 | |||
754 | |||
755 | !!!!! --> Les reels | ||
756 | |||
757 | ✗ | SUBROUTINE scatter2D_r(VarIn, VarOut) | |
758 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
759 | IMPLICIT NONE | ||
760 | |||
761 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
762 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
763 | |||
764 | ✗ | REAL,DIMENSION(klon_mpi) :: Var_tmp | |
765 | |||
766 | !$OMP MASTER | ||
767 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
768 | !$OMP END MASTER | ||
769 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
770 | |||
771 | ✗ | END SUBROUTINE scatter2D_r | |
772 | |||
773 | |||
774 | ✗ | SUBROUTINE scatter2D_r1(VarIn, VarOut) | |
775 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
776 | IMPLICIT NONE | ||
777 | |||
778 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
779 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
780 | |||
781 | ✗ | REAL,DIMENSION(klon_mpi,SIZE(VarOut,2)) :: Var_tmp | |
782 | |||
783 | !$OMP MASTER | ||
784 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
785 | !$OMP END MASTER | ||
786 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
787 | |||
788 | ✗ | END SUBROUTINE scatter2D_r1 | |
789 | |||
790 | |||
791 | ✗ | SUBROUTINE scatter2D_r2(VarIn, VarOut) | |
792 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
793 | IMPLICIT NONE | ||
794 | |||
795 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
796 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
797 | |||
798 | ✗ | REAL,DIMENSION(klon_mpi,SIZE(VarOut,2),SIZE(VarOut,3)) :: Var_tmp | |
799 | |||
800 | !$OMP MASTER | ||
801 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
802 | !$OMP END MASTER | ||
803 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
804 | |||
805 | ✗ | END SUBROUTINE scatter2D_r2 | |
806 | |||
807 | |||
808 | ✗ | SUBROUTINE scatter2D_r3(VarIn, VarOut) | |
809 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
810 | IMPLICIT NONE | ||
811 | |||
812 | REAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn | ||
813 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
814 | |||
815 | ✗ | REAL,DIMENSION(klon_mpi,SIZE(VarOut,2),SIZE(VarOut,3),SIZE(VarOut,4)) :: Var_tmp | |
816 | |||
817 | !$OMP MASTER | ||
818 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
819 | !$OMP END MASTER | ||
820 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
821 | |||
822 | ✗ | END SUBROUTINE scatter2D_r3 | |
823 | |||
824 | |||
825 | !!!!! --> Les booleens | ||
826 | |||
827 | |||
828 | ✗ | SUBROUTINE scatter2D_l(VarIn, VarOut) | |
829 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
830 | IMPLICIT NONE | ||
831 | |||
832 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
833 | LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
834 | |||
835 | ✗ | LOGICAL,DIMENSION(klon_mpi) :: Var_tmp | |
836 | |||
837 | !$OMP MASTER | ||
838 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
839 | !$OMP END MASTER | ||
840 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
841 | |||
842 | ✗ | END SUBROUTINE scatter2D_l | |
843 | |||
844 | |||
845 | ✗ | SUBROUTINE scatter2D_l1(VarIn, VarOut) | |
846 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
847 | IMPLICIT NONE | ||
848 | |||
849 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
850 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
851 | |||
852 | ✗ | LOGICAL,DIMENSION(klon_mpi,SIZE(VarOut,2)) :: Var_tmp | |
853 | |||
854 | !$OMP MASTER | ||
855 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
856 | !$OMP END MASTER | ||
857 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
858 | |||
859 | ✗ | END SUBROUTINE scatter2D_l1 | |
860 | |||
861 | |||
862 | ✗ | SUBROUTINE scatter2D_l2(VarIn, VarOut) | |
863 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
864 | IMPLICIT NONE | ||
865 | |||
866 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
867 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
868 | |||
869 | ✗ | LOGICAL,DIMENSION(klon_mpi,SIZE(VarOut,2),SIZE(VarOut,3)) :: Var_tmp | |
870 | |||
871 | !$OMP MASTER | ||
872 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
873 | !$OMP END MASTER | ||
874 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
875 | |||
876 | ✗ | END SUBROUTINE scatter2D_l2 | |
877 | |||
878 | |||
879 | ✗ | SUBROUTINE scatter2D_l3(VarIn, VarOut) | |
880 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
881 | IMPLICIT NONE | ||
882 | |||
883 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn | ||
884 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
885 | |||
886 | ✗ | LOGICAL,DIMENSION(klon_mpi,SIZE(VarOut,2),SIZE(VarOut,3),SIZE(VarOut,4)) :: Var_tmp | |
887 | |||
888 | !$OMP MASTER | ||
889 | ✗ | CALL scatter2D_mpi(VarIn,Var_tmp) | |
890 | !$OMP END MASTER | ||
891 | ✗ | CALL scatter_omp(Var_tmp,VarOut) | |
892 | |||
893 | ✗ | END SUBROUTINE scatter2D_l3 | |
894 | |||
895 | |||
896 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
897 | !! Definition des Gather2D --> 4D !! | ||
898 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
899 | |||
900 | !!!!! --> Les entiers | ||
901 | |||
902 | ✗ | SUBROUTINE gather2D_i(VarIn, VarOut) | |
903 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
904 | IMPLICIT NONE | ||
905 | |||
906 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
907 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
908 | |||
909 | ✗ | INTEGER,DIMENSION(klon_mpi) :: Var_tmp | |
910 | |||
911 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
912 | !$OMP MASTER | ||
913 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
914 | !$OMP END MASTER | ||
915 | |||
916 | ✗ | END SUBROUTINE gather2D_i | |
917 | |||
918 | |||
919 | ✗ | SUBROUTINE gather2D_i1(VarIn, VarOut) | |
920 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
921 | IMPLICIT NONE | ||
922 | |||
923 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
924 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
925 | |||
926 | ✗ | INTEGER,DIMENSION(klon_mpi,SIZE(VarIn,2)) :: Var_tmp | |
927 | |||
928 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
929 | !$OMP MASTER | ||
930 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
931 | !$OMP END MASTER | ||
932 | |||
933 | ✗ | END SUBROUTINE gather2D_i1 | |
934 | |||
935 | |||
936 | ✗ | SUBROUTINE gather2D_i2(VarIn, VarOut) | |
937 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
938 | IMPLICIT NONE | ||
939 | |||
940 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
941 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
942 | |||
943 | ✗ | INTEGER,DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
944 | |||
945 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
946 | !$OMP MASTER | ||
947 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
948 | !$OMP END MASTER | ||
949 | |||
950 | ✗ | END SUBROUTINE gather2D_i2 | |
951 | |||
952 | |||
953 | ✗ | SUBROUTINE gather2D_i3(VarIn, VarOut) | |
954 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
955 | IMPLICIT NONE | ||
956 | |||
957 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
958 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut | ||
959 | |||
960 | ✗ | INTEGER,DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
961 | |||
962 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
963 | !$OMP MASTER | ||
964 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
965 | !$OMP END MASTER | ||
966 | |||
967 | ✗ | END SUBROUTINE gather2D_i3 | |
968 | |||
969 | |||
970 | !!!!! --> Les reels | ||
971 | |||
972 | ✗ | SUBROUTINE gather2D_r(VarIn, VarOut) | |
973 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
974 | IMPLICIT NONE | ||
975 | |||
976 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
977 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
978 | |||
979 | ✗ | REAL,DIMENSION(klon_mpi) :: Var_tmp | |
980 | |||
981 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
982 | !$OMP MASTER | ||
983 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
984 | !$OMP END MASTER | ||
985 | |||
986 | ✗ | END SUBROUTINE gather2D_r | |
987 | |||
988 | |||
989 | ✗ | SUBROUTINE gather2D_r1(VarIn, VarOut) | |
990 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
991 | IMPLICIT NONE | ||
992 | |||
993 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
994 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
995 | |||
996 | ✗ | REAL,DIMENSION(klon_mpi,SIZE(VarIn,2)) :: Var_tmp | |
997 | |||
998 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
999 | !$OMP MASTER | ||
1000 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
1001 | !$OMP END MASTER | ||
1002 | |||
1003 | ✗ | END SUBROUTINE gather2D_r1 | |
1004 | |||
1005 | |||
1006 | ✗ | SUBROUTINE gather2D_r2(VarIn, VarOut) | |
1007 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
1008 | IMPLICIT NONE | ||
1009 | |||
1010 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1011 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1012 | |||
1013 | ✗ | REAL,DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
1014 | |||
1015 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
1016 | !$OMP MASTER | ||
1017 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
1018 | !$OMP END MASTER | ||
1019 | |||
1020 | ✗ | END SUBROUTINE gather2D_r2 | |
1021 | |||
1022 | |||
1023 | ✗ | SUBROUTINE gather2D_r3(VarIn, VarOut) | |
1024 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
1025 | IMPLICIT NONE | ||
1026 | |||
1027 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1028 | REAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut | ||
1029 | |||
1030 | ✗ | REAL,DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
1031 | |||
1032 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
1033 | !$OMP MASTER | ||
1034 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
1035 | !$OMP END MASTER | ||
1036 | |||
1037 | ✗ | END SUBROUTINE gather2D_r3 | |
1038 | |||
1039 | |||
1040 | !!!!! --> Les booleens | ||
1041 | |||
1042 | ✗ | SUBROUTINE gather2D_l(VarIn, VarOut) | |
1043 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
1044 | IMPLICIT NONE | ||
1045 | |||
1046 | LOGICAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
1047 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1048 | |||
1049 | ✗ | LOGICAL,DIMENSION(klon_mpi) :: Var_tmp | |
1050 | |||
1051 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
1052 | !$OMP MASTER | ||
1053 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
1054 | !$OMP END MASTER | ||
1055 | |||
1056 | ✗ | END SUBROUTINE gather2D_l | |
1057 | |||
1058 | |||
1059 | ✗ | SUBROUTINE gather2D_l1(VarIn, VarOut) | |
1060 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
1061 | IMPLICIT NONE | ||
1062 | |||
1063 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1064 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1065 | |||
1066 | ✗ | LOGICAL,DIMENSION(klon_mpi,SIZE(VarIn,2)) :: Var_tmp | |
1067 | |||
1068 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
1069 | !$OMP MASTER | ||
1070 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
1071 | !$OMP END MASTER | ||
1072 | |||
1073 | ✗ | END SUBROUTINE gather2D_l1 | |
1074 | |||
1075 | |||
1076 | ✗ | SUBROUTINE gather2D_l2(VarIn, VarOut) | |
1077 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
1078 | IMPLICIT NONE | ||
1079 | |||
1080 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1081 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1082 | |||
1083 | ✗ | LOGICAL,DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
1084 | |||
1085 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
1086 | !$OMP MASTER | ||
1087 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
1088 | !$OMP END MASTER | ||
1089 | |||
1090 | ✗ | END SUBROUTINE gather2D_l2 | |
1091 | |||
1092 | |||
1093 | ✗ | SUBROUTINE gather2D_l3(VarIn, VarOut) | |
1094 | USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi | ||
1095 | IMPLICIT NONE | ||
1096 | |||
1097 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1098 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut | ||
1099 | |||
1100 | ✗ | LOGICAL,DIMENSION(klon_mpi,SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
1101 | |||
1102 | ✗ | CALL gather_omp(VarIn,Var_tmp) | |
1103 | !$OMP MASTER | ||
1104 | ✗ | CALL gather2D_mpi(Var_tmp,VarOut) | |
1105 | !$OMP END MASTER | ||
1106 | |||
1107 | ✗ | END SUBROUTINE gather2D_l3 | |
1108 | |||
1109 | |||
1110 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
1111 | !! Definition des reduce_sum --> 4D !! | ||
1112 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
1113 | |||
1114 | ! Les entiers | ||
1115 | |||
1116 | 2 | SUBROUTINE reduce_sum_i(VarIn, VarOut) | |
1117 | IMPLICIT NONE | ||
1118 | |||
1119 | INTEGER,INTENT(IN) :: VarIn | ||
1120 | INTEGER,INTENT(OUT) :: VarOut | ||
1121 | |||
1122 | INTEGER :: Var_tmp | ||
1123 | |||
1124 | 2 | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1125 | !$OMP MASTER | ||
1126 | 2 | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1127 | !$OMP END MASTER | ||
1128 | |||
1129 | 2 | END SUBROUTINE reduce_sum_i | |
1130 | |||
1131 | |||
1132 | ✗ | SUBROUTINE reduce_sum_i1(VarIn, VarOut) | |
1133 | IMPLICIT NONE | ||
1134 | |||
1135 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
1136 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
1137 | |||
1138 | ✗ | INTEGER,DIMENSION(SIZE(VarIn)) :: Var_tmp | |
1139 | |||
1140 | ✗ | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1141 | !$OMP MASTER | ||
1142 | ✗ | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1143 | !$OMP END MASTER | ||
1144 | |||
1145 | ✗ | END SUBROUTINE reduce_sum_i1 | |
1146 | |||
1147 | |||
1148 | ✗ | SUBROUTINE reduce_sum_i2(VarIn, VarOut) | |
1149 | IMPLICIT NONE | ||
1150 | |||
1151 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1152 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1153 | |||
1154 | ✗ | INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2)) :: Var_tmp | |
1155 | |||
1156 | ✗ | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1157 | !$OMP MASTER | ||
1158 | ✗ | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1159 | !$OMP END MASTER | ||
1160 | |||
1161 | ✗ | END SUBROUTINE reduce_sum_i2 | |
1162 | |||
1163 | |||
1164 | ✗ | SUBROUTINE reduce_sum_i3(VarIn, VarOut) | |
1165 | IMPLICIT NONE | ||
1166 | |||
1167 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1168 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1169 | |||
1170 | ✗ | INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
1171 | |||
1172 | ✗ | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1173 | !$OMP MASTER | ||
1174 | ✗ | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1175 | !$OMP END MASTER | ||
1176 | |||
1177 | ✗ | END SUBROUTINE reduce_sum_i3 | |
1178 | |||
1179 | |||
1180 | ✗ | SUBROUTINE reduce_sum_i4(VarIn, VarOut) | |
1181 | IMPLICIT NONE | ||
1182 | |||
1183 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1184 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1185 | |||
1186 | ✗ | INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
1187 | |||
1188 | ✗ | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1189 | !$OMP MASTER | ||
1190 | ✗ | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1191 | !$OMP END MASTER | ||
1192 | |||
1193 | ✗ | END SUBROUTINE reduce_sum_i4 | |
1194 | |||
1195 | |||
1196 | ! Les reels | ||
1197 | |||
1198 | ✗ | SUBROUTINE reduce_sum_r(VarIn, VarOut) | |
1199 | IMPLICIT NONE | ||
1200 | |||
1201 | REAL,INTENT(IN) :: VarIn | ||
1202 | REAL,INTENT(OUT) :: VarOut | ||
1203 | |||
1204 | REAL :: Var_tmp | ||
1205 | |||
1206 | ✗ | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1207 | !$OMP MASTER | ||
1208 | ✗ | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1209 | !$OMP END MASTER | ||
1210 | |||
1211 | ✗ | END SUBROUTINE reduce_sum_r | |
1212 | |||
1213 | |||
1214 | ✗ | SUBROUTINE reduce_sum_r1(VarIn, VarOut) | |
1215 | IMPLICIT NONE | ||
1216 | |||
1217 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
1218 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
1219 | |||
1220 | ✗ | REAL,DIMENSION(SIZE(VarIn)) :: Var_tmp | |
1221 | |||
1222 | ✗ | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1223 | !$OMP MASTER | ||
1224 | ✗ | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1225 | !$OMP END MASTER | ||
1226 | |||
1227 | ✗ | END SUBROUTINE reduce_sum_r1 | |
1228 | |||
1229 | |||
1230 | ✗ | SUBROUTINE reduce_sum_r2(VarIn, VarOut) | |
1231 | IMPLICIT NONE | ||
1232 | |||
1233 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1234 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1235 | |||
1236 | ✗ | REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2)) :: Var_tmp | |
1237 | |||
1238 | ✗ | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1239 | !$OMP MASTER | ||
1240 | ✗ | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1241 | !$OMP END MASTER | ||
1242 | |||
1243 | ✗ | END SUBROUTINE reduce_sum_r2 | |
1244 | |||
1245 | |||
1246 | ✗ | SUBROUTINE reduce_sum_r3(VarIn, VarOut) | |
1247 | IMPLICIT NONE | ||
1248 | |||
1249 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1250 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1251 | |||
1252 | ✗ | REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
1253 | |||
1254 | ✗ | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1255 | !$OMP MASTER | ||
1256 | ✗ | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1257 | !$OMP END MASTER | ||
1258 | |||
1259 | ✗ | END SUBROUTINE reduce_sum_r3 | |
1260 | |||
1261 | |||
1262 | ✗ | SUBROUTINE reduce_sum_r4(VarIn, VarOut) | |
1263 | IMPLICIT NONE | ||
1264 | |||
1265 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1266 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1267 | |||
1268 | ✗ | REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
1269 | |||
1270 | ✗ | CALL reduce_sum_omp(VarIn,Var_tmp) | |
1271 | !$OMP MASTER | ||
1272 | ✗ | CALL reduce_sum_mpi(Var_tmp,VarOut) | |
1273 | !$OMP END MASTER | ||
1274 | |||
1275 | ✗ | END SUBROUTINE reduce_sum_r4 | |
1276 | |||
1277 | |||
1278 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
1279 | !! Definition des reduce_min --> 4D !! | ||
1280 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
1281 | |||
1282 | ! Les entiers | ||
1283 | |||
1284 | ✗ | SUBROUTINE reduce_min_i(VarIn, VarOut) | |
1285 | IMPLICIT NONE | ||
1286 | |||
1287 | INTEGER,INTENT(IN) :: VarIn | ||
1288 | INTEGER,INTENT(OUT) :: VarOut | ||
1289 | |||
1290 | INTEGER :: Var_tmp | ||
1291 | |||
1292 | ✗ | CALL reduce_min_omp(VarIn,Var_tmp) | |
1293 | !$OMP MASTER | ||
1294 | ✗ | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1295 | !$OMP END MASTER | ||
1296 | |||
1297 | ✗ | END SUBROUTINE reduce_min_i | |
1298 | |||
1299 | |||
1300 | ✗ | SUBROUTINE reduce_min_i1(VarIn, VarOut) | |
1301 | IMPLICIT NONE | ||
1302 | |||
1303 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
1304 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
1305 | |||
1306 | ✗ | INTEGER,DIMENSION(SIZE(VarIn)) :: Var_tmp | |
1307 | |||
1308 | ✗ | CALL reduce_min_omp(VarIn,Var_tmp) | |
1309 | !$OMP MASTER | ||
1310 | ✗ | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1311 | !$OMP END MASTER | ||
1312 | |||
1313 | ✗ | END SUBROUTINE reduce_min_i1 | |
1314 | |||
1315 | |||
1316 | ✗ | SUBROUTINE reduce_min_i2(VarIn, VarOut) | |
1317 | IMPLICIT NONE | ||
1318 | |||
1319 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1320 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1321 | |||
1322 | ✗ | INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2)) :: Var_tmp | |
1323 | |||
1324 | ✗ | CALL reduce_min_omp(VarIn,Var_tmp) | |
1325 | !$OMP MASTER | ||
1326 | ✗ | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1327 | !$OMP END MASTER | ||
1328 | |||
1329 | ✗ | END SUBROUTINE reduce_min_i2 | |
1330 | |||
1331 | |||
1332 | ✗ | SUBROUTINE reduce_min_i3(VarIn, VarOut) | |
1333 | IMPLICIT NONE | ||
1334 | |||
1335 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1336 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1337 | |||
1338 | ✗ | INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
1339 | |||
1340 | ✗ | CALL reduce_min_omp(VarIn,Var_tmp) | |
1341 | !$OMP MASTER | ||
1342 | ✗ | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1343 | !$OMP END MASTER | ||
1344 | |||
1345 | ✗ | END SUBROUTINE reduce_min_i3 | |
1346 | |||
1347 | |||
1348 | ✗ | SUBROUTINE reduce_min_i4(VarIn, VarOut) | |
1349 | IMPLICIT NONE | ||
1350 | |||
1351 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1352 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1353 | |||
1354 | ✗ | INTEGER,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
1355 | |||
1356 | ✗ | CALL reduce_min_omp(VarIn,Var_tmp) | |
1357 | !$OMP MASTER | ||
1358 | ✗ | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1359 | !$OMP END MASTER | ||
1360 | |||
1361 | ✗ | END SUBROUTINE reduce_min_i4 | |
1362 | |||
1363 | |||
1364 | ! Les reels | ||
1365 | |||
1366 | 1 | SUBROUTINE reduce_min_r(VarIn, VarOut) | |
1367 | IMPLICIT NONE | ||
1368 | |||
1369 | REAL,INTENT(IN) :: VarIn | ||
1370 | REAL,INTENT(OUT) :: VarOut | ||
1371 | |||
1372 | REAL :: Var_tmp | ||
1373 | |||
1374 | 1 | CALL reduce_min_omp(VarIn,Var_tmp) | |
1375 | !$OMP MASTER | ||
1376 | 1 | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1377 | !$OMP END MASTER | ||
1378 | |||
1379 | 1 | END SUBROUTINE reduce_min_r | |
1380 | |||
1381 | |||
1382 | ✗ | SUBROUTINE reduce_min_r1(VarIn, VarOut) | |
1383 | IMPLICIT NONE | ||
1384 | |||
1385 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
1386 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
1387 | |||
1388 | ✗ | REAL,DIMENSION(SIZE(VarIn)) :: Var_tmp | |
1389 | |||
1390 | ✗ | CALL reduce_min_omp(VarIn,Var_tmp) | |
1391 | !$OMP MASTER | ||
1392 | ✗ | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1393 | !$OMP END MASTER | ||
1394 | |||
1395 | ✗ | END SUBROUTINE reduce_min_r1 | |
1396 | |||
1397 | |||
1398 | ✗ | SUBROUTINE reduce_min_r2(VarIn, VarOut) | |
1399 | IMPLICIT NONE | ||
1400 | |||
1401 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1402 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1403 | |||
1404 | ✗ | REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2)) :: Var_tmp | |
1405 | |||
1406 | ✗ | CALL reduce_min_omp(VarIn,Var_tmp) | |
1407 | !$OMP MASTER | ||
1408 | ✗ | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1409 | !$OMP END MASTER | ||
1410 | |||
1411 | ✗ | END SUBROUTINE reduce_min_r2 | |
1412 | |||
1413 | |||
1414 | ✗ | SUBROUTINE reduce_min_r3(VarIn, VarOut) | |
1415 | IMPLICIT NONE | ||
1416 | |||
1417 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1418 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1419 | |||
1420 | ✗ | REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3)) :: Var_tmp | |
1421 | |||
1422 | ✗ | CALL reduce_min_omp(VarIn,Var_tmp) | |
1423 | !$OMP MASTER | ||
1424 | ✗ | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1425 | !$OMP END MASTER | ||
1426 | |||
1427 | ✗ | END SUBROUTINE reduce_min_r3 | |
1428 | |||
1429 | |||
1430 | ✗ | SUBROUTINE reduce_min_r4(VarIn, VarOut) | |
1431 | IMPLICIT NONE | ||
1432 | |||
1433 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1434 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1435 | |||
1436 | ✗ | REAL,DIMENSION(SIZE(VarIn,1),SIZE(VarIn,2),SIZE(VarIn,3),SIZE(VarIn,4)) :: Var_tmp | |
1437 | |||
1438 | ✗ | CALL reduce_min_omp(VarIn,Var_tmp) | |
1439 | !$OMP MASTER | ||
1440 | ✗ | CALL reduce_min_mpi(Var_tmp,VarOut) | |
1441 | !$OMP END MASTER | ||
1442 | |||
1443 | ✗ | END SUBROUTINE reduce_min_r4 | |
1444 | |||
1445 | |||
1446 | |||
1447 | END MODULE mod_phys_lmdz_transfert_para | ||
1448 | |||
1449 |