Directory: | ./ |
---|---|
File: | phy_common/mod_phys_lmdz_mpi_transfert.f90 |
Date: | 2022-01-11 19:19:34 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 88 | 544 | 16.2% |
Branches: | 80 | 938 | 8.5% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | ! | ||
2 | !$Id: mod_phys_lmdz_mpi_transfert.F90 3465 2019-03-14 09:34:31Z fairhead $ | ||
3 | ! | ||
4 | MODULE mod_phys_lmdz_mpi_transfert | ||
5 | |||
6 | |||
7 | INTERFACE bcast_mpi | ||
8 | MODULE PROCEDURE bcast_mpi_c, & | ||
9 | bcast_mpi_i,bcast_mpi_i1,bcast_mpi_i2,bcast_mpi_i3,bcast_mpi_i4, & | ||
10 | bcast_mpi_r,bcast_mpi_r1,bcast_mpi_r2,bcast_mpi_r3,bcast_mpi_r4, & | ||
11 | bcast_mpi_l,bcast_mpi_l1,bcast_mpi_l2,bcast_mpi_l3,bcast_mpi_l4 | ||
12 | END INTERFACE | ||
13 | |||
14 | INTERFACE scatter_mpi | ||
15 | MODULE PROCEDURE scatter_mpi_i,scatter_mpi_i1,scatter_mpi_i2,scatter_mpi_i3, & | ||
16 | scatter_mpi_r,scatter_mpi_r1,scatter_mpi_r2,scatter_mpi_r3, & | ||
17 | scatter_mpi_l,scatter_mpi_l1,scatter_mpi_l2,scatter_mpi_l3 | ||
18 | END INTERFACE | ||
19 | |||
20 | |||
21 | INTERFACE gather_mpi | ||
22 | MODULE PROCEDURE gather_mpi_i,gather_mpi_i1,gather_mpi_i2,gather_mpi_i3, & | ||
23 | gather_mpi_r,gather_mpi_r1,gather_mpi_r2,gather_mpi_r3, & | ||
24 | gather_mpi_l,gather_mpi_l1,gather_mpi_l2,gather_mpi_l3 | ||
25 | END INTERFACE | ||
26 | |||
27 | INTERFACE scatter2D_mpi | ||
28 | MODULE PROCEDURE scatter2D_mpi_i,scatter2D_mpi_i1,scatter2D_mpi_i2,scatter2D_mpi_i3, & | ||
29 | scatter2D_mpi_r,scatter2D_mpi_r1,scatter2D_mpi_r2,scatter2D_mpi_r3, & | ||
30 | scatter2D_mpi_l,scatter2D_mpi_l1,scatter2D_mpi_l2,scatter2D_mpi_l3 | ||
31 | END INTERFACE | ||
32 | |||
33 | INTERFACE gather2D_mpi | ||
34 | MODULE PROCEDURE gather2D_mpi_i,gather2D_mpi_i1,gather2D_mpi_i2,gather2D_mpi_i3, & | ||
35 | gather2D_mpi_r,gather2D_mpi_r1,gather2D_mpi_r2,gather2D_mpi_r3, & | ||
36 | gather2D_mpi_l,gather2D_mpi_l1,gather2D_mpi_l2,gather2D_mpi_l3 | ||
37 | END INTERFACE | ||
38 | |||
39 | INTERFACE reduce_sum_mpi | ||
40 | MODULE PROCEDURE reduce_sum_mpi_i,reduce_sum_mpi_i1,reduce_sum_mpi_i2,reduce_sum_mpi_i3,reduce_sum_mpi_i4, & | ||
41 | reduce_sum_mpi_r,reduce_sum_mpi_r1,reduce_sum_mpi_r2,reduce_sum_mpi_r3,reduce_sum_mpi_r4 | ||
42 | END INTERFACE | ||
43 | |||
44 | INTERFACE reduce_min_mpi | ||
45 | MODULE PROCEDURE reduce_min_mpi_i,reduce_min_mpi_i1,reduce_min_mpi_i2,reduce_min_mpi_i3,reduce_min_mpi_i4, & | ||
46 | reduce_min_mpi_r,reduce_min_mpi_r1,reduce_min_mpi_r2,reduce_min_mpi_r3,reduce_min_mpi_r4 | ||
47 | END INTERFACE | ||
48 | |||
49 | INTERFACE grid1dTo2d_mpi | ||
50 | MODULE PROCEDURE grid1dTo2d_mpi_i,grid1dTo2d_mpi_i1,grid1dTo2d_mpi_i2,grid1dTo2d_mpi_i3, & | ||
51 | grid1dTo2d_mpi_r,grid1dTo2d_mpi_r1,grid1dTo2d_mpi_r2,grid1dTo2d_mpi_r3, & | ||
52 | grid1dTo2d_mpi_l,grid1dTo2d_mpi_l1,grid1dTo2d_mpi_l2,grid1dTo2d_mpi_l3 | ||
53 | END INTERFACE | ||
54 | |||
55 | INTERFACE grid2dTo1d_mpi | ||
56 | MODULE PROCEDURE grid2dTo1d_mpi_i,grid2dTo1d_mpi_i1,grid2dTo1d_mpi_i2,grid2dTo1d_mpi_i3, & | ||
57 | grid2dTo1d_mpi_r,grid2dTo1d_mpi_r1,grid2dTo1d_mpi_r2,grid2dTo1d_mpi_r3, & | ||
58 | grid2dTo1d_mpi_l,grid2dTo1d_mpi_l1,grid2dTo1d_mpi_l2,grid2dTo1d_mpi_l3 | ||
59 | END INTERFACE | ||
60 | |||
61 | CONTAINS | ||
62 | |||
63 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
64 | !! Definition des Broadcast --> 4D !! | ||
65 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
66 | |||
67 | !! -- Les chaine de charact�re -- !! | ||
68 | |||
69 | 2 | SUBROUTINE bcast_mpi_c(var1) | |
70 | IMPLICIT NONE | ||
71 | CHARACTER(LEN=*),INTENT(INOUT) :: Var1 | ||
72 | |||
73 | CALL bcast_mpi_cgen(Var1,len(Var1)) | ||
74 | |||
75 | 2 | END SUBROUTINE bcast_mpi_c | |
76 | |||
77 | !! -- Les entiers -- !! | ||
78 | |||
79 | 757 | SUBROUTINE bcast_mpi_i(var) | |
80 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
81 | IMPLICIT NONE | ||
82 | INTEGER,INTENT(INOUT) :: Var | ||
83 | |||
84 | INTEGER :: var_tmp(1) | ||
85 | |||
86 |
1/2✓ Branch 0 taken 757 times.
✗ Branch 1 not taken.
|
757 | IF (is_mpi_root) var_tmp(1)=var |
87 | CALL bcast_mpi_igen(Var_tmp,1) | ||
88 | 757 | var=var_tmp(1) | |
89 | |||
90 | 757 | END SUBROUTINE bcast_mpi_i | |
91 | |||
92 | ✗ | SUBROUTINE bcast_mpi_i1(var) | |
93 | IMPLICIT NONE | ||
94 | INTEGER,INTENT(INOUT) :: Var(:) | ||
95 | |||
96 | ✗ | CALL bcast_mpi_igen(Var,size(Var)) | |
97 | |||
98 | ✗ | END SUBROUTINE bcast_mpi_i1 | |
99 | |||
100 | ✗ | SUBROUTINE bcast_mpi_i2(var) | |
101 | IMPLICIT NONE | ||
102 | INTEGER,INTENT(INOUT) :: Var(:,:) | ||
103 | |||
104 | ✗ | CALL bcast_mpi_igen(Var,size(Var)) | |
105 | |||
106 | ✗ | END SUBROUTINE bcast_mpi_i2 | |
107 | |||
108 | ✗ | SUBROUTINE bcast_mpi_i3(var) | |
109 | IMPLICIT NONE | ||
110 | INTEGER,INTENT(INOUT) :: Var(:,:,:) | ||
111 | |||
112 | ✗ | CALL bcast_mpi_igen(Var,size(Var)) | |
113 | |||
114 | ✗ | END SUBROUTINE bcast_mpi_i3 | |
115 | |||
116 | ✗ | SUBROUTINE bcast_mpi_i4(var) | |
117 | IMPLICIT NONE | ||
118 | INTEGER,INTENT(INOUT) :: Var(:,:,:,:) | ||
119 | |||
120 | ✗ | CALL bcast_mpi_igen(Var,size(Var)) | |
121 | |||
122 | ✗ | END SUBROUTINE bcast_mpi_i4 | |
123 | |||
124 | |||
125 | !! -- Les reels -- !! | ||
126 | |||
127 | 540 | SUBROUTINE bcast_mpi_r(var) | |
128 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
129 | IMPLICIT NONE | ||
130 | REAL,INTENT(INOUT) :: Var | ||
131 | REAL :: var_tmp(1) | ||
132 | |||
133 |
1/2✓ Branch 0 taken 540 times.
✗ Branch 1 not taken.
|
540 | IF (is_mpi_root) var_tmp(1)=var |
134 | CALL bcast_mpi_rgen(Var_tmp,1) | ||
135 | 540 | var=var_tmp(1) | |
136 | |||
137 | 540 | END SUBROUTINE bcast_mpi_r | |
138 | |||
139 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
|
5 | SUBROUTINE bcast_mpi_r1(var) |
140 | IMPLICIT NONE | ||
141 | REAL,INTENT(INOUT) :: Var(:) | ||
142 | |||
143 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
|
5 | CALL bcast_mpi_rgen(Var,size(Var)) |
144 | |||
145 | 5 | END SUBROUTINE bcast_mpi_r1 | |
146 | |||
147 | ✗ | SUBROUTINE bcast_mpi_r2(var) | |
148 | IMPLICIT NONE | ||
149 | REAL,INTENT(INOUT) :: Var(:,:) | ||
150 | |||
151 | ✗ | CALL bcast_mpi_rgen(Var,size(Var)) | |
152 | |||
153 | ✗ | END SUBROUTINE bcast_mpi_r2 | |
154 | |||
155 | ✗ | SUBROUTINE bcast_mpi_r3(var) | |
156 | IMPLICIT NONE | ||
157 | REAL,INTENT(INOUT) :: Var(:,:,:) | ||
158 | |||
159 | ✗ | CALL bcast_mpi_rgen(Var,size(Var)) | |
160 | |||
161 | ✗ | END SUBROUTINE bcast_mpi_r3 | |
162 | |||
163 | ✗ | SUBROUTINE bcast_mpi_r4(var) | |
164 | IMPLICIT NONE | ||
165 | REAL,INTENT(INOUT) :: Var(:,:,:,:) | ||
166 | |||
167 | ✗ | CALL bcast_mpi_rgen(Var,size(Var)) | |
168 | |||
169 | ✗ | END SUBROUTINE bcast_mpi_r4 | |
170 | |||
171 | !! -- Les booleans -- !! | ||
172 | |||
173 | 855 | SUBROUTINE bcast_mpi_l(var) | |
174 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
175 | IMPLICIT NONE | ||
176 | LOGICAL,INTENT(INOUT) :: Var | ||
177 | LOGICAL :: var_tmp(1) | ||
178 | |||
179 |
1/2✓ Branch 0 taken 855 times.
✗ Branch 1 not taken.
|
855 | IF (is_mpi_root) var_tmp(1)=var |
180 | CALL bcast_mpi_lgen(Var_tmp,1) | ||
181 | 855 | var=var_tmp(1) | |
182 | |||
183 | 855 | END SUBROUTINE bcast_mpi_l | |
184 | |||
185 | ✗ | SUBROUTINE bcast_mpi_l1(var) | |
186 | IMPLICIT NONE | ||
187 | LOGICAL,INTENT(INOUT) :: Var(:) | ||
188 | |||
189 | ✗ | CALL bcast_mpi_lgen(Var,size(Var)) | |
190 | |||
191 | ✗ | END SUBROUTINE bcast_mpi_l1 | |
192 | |||
193 | ✗ | SUBROUTINE bcast_mpi_l2(var) | |
194 | IMPLICIT NONE | ||
195 | LOGICAL,INTENT(INOUT) :: Var(:,:) | ||
196 | |||
197 | ✗ | CALL bcast_mpi_lgen(Var,size(Var)) | |
198 | |||
199 | ✗ | END SUBROUTINE bcast_mpi_l2 | |
200 | |||
201 | ✗ | SUBROUTINE bcast_mpi_l3(var) | |
202 | IMPLICIT NONE | ||
203 | LOGICAL,INTENT(INOUT) :: Var(:,:,:) | ||
204 | |||
205 | ✗ | CALL bcast_mpi_lgen(Var,size(Var)) | |
206 | |||
207 | ✗ | END SUBROUTINE bcast_mpi_l3 | |
208 | |||
209 | ✗ | SUBROUTINE bcast_mpi_l4(var) | |
210 | IMPLICIT NONE | ||
211 | LOGICAL,INTENT(INOUT) :: Var(:,:,:,:) | ||
212 | |||
213 | ✗ | CALL bcast_mpi_lgen(Var,size(Var)) | |
214 | |||
215 | ✗ | END SUBROUTINE bcast_mpi_l4 | |
216 | |||
217 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
218 | !! Definition des Scatter --> 4D !! | ||
219 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
220 | |||
221 | ✗ | SUBROUTINE scatter_mpi_i(VarIn, VarOut) | |
222 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
223 | IMPLICIT NONE | ||
224 | |||
225 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
226 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
227 | |||
228 | ✗ | CALL scatter_mpi_igen(VarIn,Varout,1) | |
229 | |||
230 | ✗ | END SUBROUTINE scatter_mpi_i | |
231 | |||
232 | ✗ | SUBROUTINE scatter_mpi_i1(VarIn, VarOut) | |
233 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
234 | IMPLICIT NONE | ||
235 | |||
236 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
237 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
238 | |||
239 | ✗ | CALL scatter_mpi_igen(VarIn,Varout,Size(VarOut,2)) | |
240 | |||
241 | ✗ | END SUBROUTINE scatter_mpi_i1 | |
242 | |||
243 | ✗ | SUBROUTINE scatter_mpi_i2(VarIn, VarOut) | |
244 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
245 | IMPLICIT NONE | ||
246 | |||
247 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
248 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
249 | |||
250 | ✗ | CALL scatter_mpi_igen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)) | |
251 | |||
252 | ✗ | END SUBROUTINE scatter_mpi_i2 | |
253 | |||
254 | ✗ | SUBROUTINE scatter_mpi_i3(VarIn, VarOut) | |
255 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
256 | IMPLICIT NONE | ||
257 | |||
258 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
259 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
260 | |||
261 | ✗ | CALL scatter_mpi_igen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4)) | |
262 | |||
263 | ✗ | END SUBROUTINE scatter_mpi_i3 | |
264 | |||
265 | |||
266 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 52 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 52 times.
|
52 | SUBROUTINE scatter_mpi_r(VarIn, VarOut) |
267 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
268 | IMPLICIT NONE | ||
269 | |||
270 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
271 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
272 | |||
273 |
2/4✗ Branch 3 not taken.
✓ Branch 4 taken 52 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 52 times.
|
52 | CALL scatter_mpi_rgen(VarIn,Varout,1) |
274 | |||
275 | 52 | END SUBROUTINE scatter_mpi_r | |
276 | |||
277 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 322 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 322 times.
|
322 | SUBROUTINE scatter_mpi_r1(VarIn, VarOut) |
278 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
279 | IMPLICIT NONE | ||
280 | |||
281 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
282 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
283 | |||
284 |
2/4✗ Branch 3 not taken.
✓ Branch 4 taken 322 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 322 times.
|
322 | CALL scatter_mpi_rgen(VarIn,Varout,Size(VarOut,2)) |
285 | |||
286 | 322 | END SUBROUTINE scatter_mpi_r1 | |
287 | |||
288 | ✗ | SUBROUTINE scatter_mpi_r2(VarIn, VarOut) | |
289 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
290 | IMPLICIT NONE | ||
291 | |||
292 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
293 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
294 | |||
295 | ✗ | CALL scatter_mpi_rgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)) | |
296 | |||
297 | ✗ | END SUBROUTINE scatter_mpi_r2 | |
298 | |||
299 | ✗ | SUBROUTINE scatter_mpi_r3(VarIn, VarOut) | |
300 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
301 | IMPLICIT NONE | ||
302 | |||
303 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
304 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
305 | |||
306 | ✗ | CALL scatter_mpi_rgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4)) | |
307 | |||
308 | ✗ | END SUBROUTINE scatter_mpi_r3 | |
309 | |||
310 | |||
311 | ✗ | SUBROUTINE scatter_mpi_l(VarIn, VarOut) | |
312 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
313 | IMPLICIT NONE | ||
314 | |||
315 | LOGICAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
316 | LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
317 | |||
318 | ✗ | CALL scatter_mpi_lgen(VarIn,Varout,1) | |
319 | |||
320 | ✗ | END SUBROUTINE scatter_mpi_l | |
321 | |||
322 | ✗ | SUBROUTINE scatter_mpi_l1(VarIn, VarOut) | |
323 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
324 | IMPLICIT NONE | ||
325 | |||
326 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
327 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
328 | |||
329 | ✗ | CALL scatter_mpi_lgen(VarIn,Varout,Size(VarOut,2)) | |
330 | |||
331 | ✗ | END SUBROUTINE scatter_mpi_l1 | |
332 | |||
333 | ✗ | SUBROUTINE scatter_mpi_l2(VarIn, VarOut) | |
334 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
335 | IMPLICIT NONE | ||
336 | |||
337 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
338 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
339 | |||
340 | ✗ | CALL scatter_mpi_lgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)) | |
341 | |||
342 | ✗ | END SUBROUTINE scatter_mpi_l2 | |
343 | |||
344 | ✗ | SUBROUTINE scatter_mpi_l3(VarIn, VarOut) | |
345 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
346 | IMPLICIT NONE | ||
347 | |||
348 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
349 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
350 | |||
351 | ✗ | CALL scatter_mpi_lgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4)) | |
352 | |||
353 | ✗ | END SUBROUTINE scatter_mpi_l3 | |
354 | |||
355 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
356 | !! Definition des Gather --> 4D !! | ||
357 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
358 | |||
359 | !!!!! --> Les entiers | ||
360 | |||
361 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 563 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 563 times.
|
563 | SUBROUTINE gather_mpi_i(VarIn, VarOut) |
362 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
363 | IMPLICIT NONE | ||
364 | |||
365 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
366 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
367 | |||
368 |
2/4✗ Branch 3 not taken.
✓ Branch 4 taken 563 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 563 times.
|
563 | CALL gather_mpi_igen(VarIn,VarOut,1) |
369 | |||
370 | 563 | END SUBROUTINE gather_mpi_i | |
371 | |||
372 | |||
373 | !!!!! | ||
374 | |||
375 | ✗ | SUBROUTINE gather_mpi_i1(VarIn, VarOut) | |
376 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
377 | IMPLICIT NONE | ||
378 | |||
379 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
380 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
381 | |||
382 | ✗ | CALL gather_mpi_igen(VarIn,VarOut,Size(VarIn,2)) | |
383 | |||
384 | ✗ | END SUBROUTINE gather_mpi_i1 | |
385 | |||
386 | !!!!! | ||
387 | |||
388 | ✗ | SUBROUTINE gather_mpi_i2(VarIn, VarOut) | |
389 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
390 | IMPLICIT NONE | ||
391 | |||
392 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
393 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
394 | |||
395 | ✗ | CALL gather_mpi_igen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)) | |
396 | |||
397 | ✗ | END SUBROUTINE gather_mpi_i2 | |
398 | |||
399 | !!!!! | ||
400 | |||
401 | ✗ | SUBROUTINE gather_mpi_i3(VarIn, VarOut) | |
402 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
403 | IMPLICIT NONE | ||
404 | |||
405 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
406 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
407 | |||
408 | ✗ | CALL gather_mpi_igen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) | |
409 | |||
410 | ✗ | END SUBROUTINE gather_mpi_i3 | |
411 | |||
412 | !!!!! --> Les reels | ||
413 | |||
414 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
|
4 | SUBROUTINE gather_mpi_r(VarIn, VarOut) |
415 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
416 | IMPLICIT NONE | ||
417 | |||
418 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
419 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
420 | |||
421 |
2/4✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
|
4 | CALL gather_mpi_rgen(VarIn,VarOut,1) |
422 | |||
423 | 4 | END SUBROUTINE gather_mpi_r | |
424 | |||
425 | !!!!! | ||
426 | |||
427 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 214 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 214 times.
|
214 | SUBROUTINE gather_mpi_r1(VarIn, VarOut) |
428 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
429 | IMPLICIT NONE | ||
430 | |||
431 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
432 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
433 | |||
434 |
2/4✗ Branch 3 not taken.
✓ Branch 4 taken 214 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 214 times.
|
214 | CALL gather_mpi_rgen(VarIn,VarOut,Size(VarIn,2)) |
435 | |||
436 | 214 | END SUBROUTINE gather_mpi_r1 | |
437 | |||
438 | !!!!! | ||
439 | |||
440 | ✗ | SUBROUTINE gather_mpi_r2(VarIn, VarOut) | |
441 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
442 | IMPLICIT NONE | ||
443 | |||
444 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
445 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
446 | |||
447 | ✗ | CALL gather_mpi_rgen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)) | |
448 | |||
449 | ✗ | END SUBROUTINE gather_mpi_r2 | |
450 | |||
451 | !!!!! | ||
452 | |||
453 | ✗ | SUBROUTINE gather_mpi_r3(VarIn, VarOut) | |
454 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
455 | IMPLICIT NONE | ||
456 | |||
457 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
458 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
459 | |||
460 | ✗ | CALL gather_mpi_rgen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) | |
461 | |||
462 | ✗ | END SUBROUTINE gather_mpi_r3 | |
463 | |||
464 | !!!!! --> Les booleen | ||
465 | |||
466 | ✗ | SUBROUTINE gather_mpi_l(VarIn, VarOut) | |
467 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
468 | IMPLICIT NONE | ||
469 | |||
470 | LOGICAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
471 | LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
472 | |||
473 | ✗ | CALL gather_mpi_lgen(VarIn,VarOut,1) | |
474 | |||
475 | ✗ | END SUBROUTINE gather_mpi_l | |
476 | |||
477 | !!!!! | ||
478 | |||
479 | ✗ | SUBROUTINE gather_mpi_l1(VarIn, VarOut) | |
480 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
481 | IMPLICIT NONE | ||
482 | |||
483 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
484 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
485 | |||
486 | ✗ | CALL gather_mpi_lgen(VarIn,VarOut,Size(VarIn,2)) | |
487 | |||
488 | ✗ | END SUBROUTINE gather_mpi_l1 | |
489 | |||
490 | !!!!! | ||
491 | |||
492 | ✗ | SUBROUTINE gather_mpi_l2(VarIn, VarOut) | |
493 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
494 | IMPLICIT NONE | ||
495 | |||
496 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
497 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
498 | |||
499 | ✗ | CALL gather_mpi_lgen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)) | |
500 | |||
501 | ✗ | END SUBROUTINE gather_mpi_l2 | |
502 | |||
503 | !!!!! | ||
504 | |||
505 | ✗ | SUBROUTINE gather_mpi_l3(VarIn, VarOut) | |
506 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
507 | IMPLICIT NONE | ||
508 | |||
509 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
510 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
511 | |||
512 | ✗ | CALL gather_mpi_lgen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) | |
513 | |||
514 | ✗ | END SUBROUTINE gather_mpi_l3 | |
515 | |||
516 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
517 | !! Definition des Scatter2D --> 4D !! | ||
518 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
519 | |||
520 | ✗ | SUBROUTINE scatter2D_mpi_i(VarIn, VarOut) | |
521 | USE mod_grid_phy_lmdz | ||
522 | IMPLICIT NONE | ||
523 | |||
524 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
525 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
526 | |||
527 | ✗ | INTEGER,DIMENSION(klon_glo) :: Var_tmp | |
528 | |||
529 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
530 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
531 | |||
532 | ✗ | END SUBROUTINE scatter2D_mpi_i | |
533 | |||
534 | ✗ | SUBROUTINE scatter2D_mpi_i1(VarIn, VarOut) | |
535 | USE mod_grid_phy_lmdz | ||
536 | IMPLICIT NONE | ||
537 | |||
538 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
539 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
540 | ✗ | INTEGER,DIMENSION(klon_glo,size(VarOut,2)) :: Var_tmp | |
541 | |||
542 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
543 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
544 | |||
545 | ✗ | END SUBROUTINE scatter2D_mpi_i1 | |
546 | |||
547 | ✗ | SUBROUTINE scatter2D_mpi_i2(VarIn, VarOut) | |
548 | USE mod_grid_phy_lmdz | ||
549 | IMPLICIT NONE | ||
550 | |||
551 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
552 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
553 | |||
554 | ✗ | INTEGER,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3)) :: Var_tmp | |
555 | |||
556 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
557 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
558 | |||
559 | ✗ | END SUBROUTINE scatter2D_mpi_i2 | |
560 | |||
561 | ✗ | SUBROUTINE scatter2D_mpi_i3(VarIn, VarOut) | |
562 | USE mod_grid_phy_lmdz | ||
563 | IMPLICIT NONE | ||
564 | |||
565 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn | ||
566 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
567 | ✗ | INTEGER,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3),size(VarOut,4)) :: Var_tmp | |
568 | |||
569 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
570 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
571 | |||
572 | ✗ | END SUBROUTINE scatter2D_mpi_i3 | |
573 | |||
574 | |||
575 | |||
576 | ✗ | SUBROUTINE scatter2D_mpi_r(VarIn, VarOut) | |
577 | USE mod_grid_phy_lmdz | ||
578 | IMPLICIT NONE | ||
579 | |||
580 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
581 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
582 | |||
583 | ✗ | REAL,DIMENSION(klon_glo) :: Var_tmp | |
584 | |||
585 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
586 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
587 | |||
588 | ✗ | END SUBROUTINE scatter2D_mpi_R | |
589 | |||
590 | |||
591 | ✗ | SUBROUTINE scatter2D_mpi_r1(VarIn, VarOut) | |
592 | USE mod_grid_phy_lmdz | ||
593 | IMPLICIT NONE | ||
594 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
595 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
596 | |||
597 | ✗ | REAL,DIMENSION(klon_glo,size(VarOut,2)) :: Var_tmp | |
598 | |||
599 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
600 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
601 | |||
602 | ✗ | END SUBROUTINE scatter2D_mpi_r1 | |
603 | |||
604 | |||
605 | ✗ | SUBROUTINE scatter2D_mpi_r2(VarIn, VarOut) | |
606 | USE mod_grid_phy_lmdz | ||
607 | IMPLICIT NONE | ||
608 | |||
609 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
610 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
611 | |||
612 | ✗ | REAL,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3)) :: Var_tmp | |
613 | |||
614 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
615 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
616 | |||
617 | ✗ | END SUBROUTINE scatter2D_mpi_r2 | |
618 | |||
619 | ✗ | SUBROUTINE scatter2D_mpi_r3(VarIn, VarOut) | |
620 | USE mod_grid_phy_lmdz | ||
621 | IMPLICIT NONE | ||
622 | |||
623 | REAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn | ||
624 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
625 | |||
626 | ✗ | REAL,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3),size(VarOut,4)) :: Var_tmp | |
627 | |||
628 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
629 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
630 | |||
631 | ✗ | END SUBROUTINE scatter2D_mpi_r3 | |
632 | |||
633 | |||
634 | ✗ | SUBROUTINE scatter2D_mpi_l(VarIn, VarOut) | |
635 | USE mod_grid_phy_lmdz | ||
636 | IMPLICIT NONE | ||
637 | |||
638 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
639 | LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
640 | |||
641 | ✗ | LOGICAL,DIMENSION(klon_glo) :: Var_tmp | |
642 | |||
643 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
644 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
645 | |||
646 | ✗ | END SUBROUTINE scatter2D_mpi_l | |
647 | |||
648 | |||
649 | ✗ | SUBROUTINE scatter2D_mpi_l1(VarIn, VarOut) | |
650 | USE mod_grid_phy_lmdz | ||
651 | IMPLICIT NONE | ||
652 | |||
653 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
654 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
655 | |||
656 | ✗ | LOGICAL,DIMENSION(klon_glo,size(VarOut,2)) :: Var_tmp | |
657 | |||
658 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
659 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
660 | |||
661 | ✗ | END SUBROUTINE scatter2D_mpi_l1 | |
662 | |||
663 | |||
664 | ✗ | SUBROUTINE scatter2D_mpi_l2(VarIn, VarOut) | |
665 | USE mod_grid_phy_lmdz | ||
666 | IMPLICIT NONE | ||
667 | |||
668 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
669 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
670 | |||
671 | ✗ | LOGICAL, DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3)) :: Var_tmp | |
672 | |||
673 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
674 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
675 | |||
676 | ✗ | END SUBROUTINE scatter2D_mpi_l2 | |
677 | |||
678 | ✗ | SUBROUTINE scatter2D_mpi_l3(VarIn, VarOut) | |
679 | USE mod_grid_phy_lmdz | ||
680 | IMPLICIT NONE | ||
681 | |||
682 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn | ||
683 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
684 | |||
685 | ✗ | LOGICAL,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3),size(VarOut,4)) :: Var_tmp | |
686 | |||
687 | ✗ | CALL grid2dTo1d_glo(VarIn,Var_tmp) | |
688 | ✗ | CALL scatter_mpi(Var_tmp,VarOut) | |
689 | |||
690 | ✗ | END SUBROUTINE scatter2D_mpi_l3 | |
691 | |||
692 | |||
693 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
694 | !! Definition des Gather2D --> 4D !! | ||
695 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
696 | |||
697 | ✗ | SUBROUTINE gather2D_mpi_i(VarIn, VarOut) | |
698 | USE mod_grid_phy_lmdz | ||
699 | IMPLICIT NONE | ||
700 | |||
701 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
702 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
703 | |||
704 | ✗ | INTEGER,DIMENSION(klon_glo) :: Var_tmp | |
705 | |||
706 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
707 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
708 | |||
709 | ✗ | END SUBROUTINE gather2D_mpi_i | |
710 | |||
711 | ✗ | SUBROUTINE gather2D_mpi_i1(VarIn, VarOut) | |
712 | USE mod_grid_phy_lmdz | ||
713 | IMPLICIT NONE | ||
714 | |||
715 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
716 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
717 | |||
718 | ✗ | INTEGER,DIMENSION(klon_glo,size(VarOut,3)) :: Var_tmp | |
719 | |||
720 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
721 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
722 | |||
723 | ✗ | END SUBROUTINE gather2D_mpi_i1 | |
724 | |||
725 | ✗ | SUBROUTINE gather2D_mpi_i2(VarIn, VarOut) | |
726 | USE mod_grid_phy_lmdz | ||
727 | IMPLICIT NONE | ||
728 | |||
729 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
730 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
731 | |||
732 | ✗ | INTEGER,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4)) :: Var_tmp | |
733 | |||
734 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
735 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
736 | |||
737 | ✗ | END SUBROUTINE gather2D_mpi_i2 | |
738 | |||
739 | ✗ | SUBROUTINE gather2D_mpi_i3(VarIn, VarOut) | |
740 | USE mod_grid_phy_lmdz | ||
741 | IMPLICIT NONE | ||
742 | |||
743 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
744 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut | ||
745 | |||
746 | ✗ | INTEGER,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) :: Var_tmp | |
747 | |||
748 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
749 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
750 | |||
751 | ✗ | END SUBROUTINE gather2D_mpi_i3 | |
752 | |||
753 | |||
754 | |||
755 | ✗ | SUBROUTINE gather2D_mpi_r(VarIn, VarOut) | |
756 | USE mod_grid_phy_lmdz | ||
757 | IMPLICIT NONE | ||
758 | |||
759 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
760 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
761 | |||
762 | ✗ | REAL,DIMENSION(klon_glo) :: Var_tmp | |
763 | |||
764 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
765 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
766 | |||
767 | ✗ | END SUBROUTINE gather2D_mpi_r | |
768 | |||
769 | ✗ | SUBROUTINE gather2D_mpi_r1(VarIn, VarOut) | |
770 | USE mod_grid_phy_lmdz | ||
771 | IMPLICIT NONE | ||
772 | |||
773 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
774 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
775 | |||
776 | ✗ | REAL,DIMENSION(klon_glo,size(VarOut,3)) :: Var_tmp | |
777 | |||
778 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
779 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
780 | |||
781 | ✗ | END SUBROUTINE gather2D_mpi_r1 | |
782 | |||
783 | ✗ | SUBROUTINE gather2D_mpi_r2(VarIn, VarOut) | |
784 | USE mod_grid_phy_lmdz | ||
785 | IMPLICIT NONE | ||
786 | |||
787 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
788 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
789 | |||
790 | ✗ | REAL,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4)) :: Var_tmp | |
791 | |||
792 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
793 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
794 | |||
795 | ✗ | END SUBROUTINE gather2D_mpi_r2 | |
796 | |||
797 | ✗ | SUBROUTINE gather2D_mpi_r3(VarIn, VarOut) | |
798 | USE mod_grid_phy_lmdz | ||
799 | IMPLICIT NONE | ||
800 | |||
801 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
802 | REAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut | ||
803 | |||
804 | ✗ | REAL,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) :: Var_tmp | |
805 | |||
806 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
807 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
808 | |||
809 | ✗ | END SUBROUTINE gather2D_mpi_r3 | |
810 | |||
811 | |||
812 | |||
813 | ✗ | SUBROUTINE gather2D_mpi_l(VarIn, VarOut) | |
814 | USE mod_grid_phy_lmdz | ||
815 | IMPLICIT NONE | ||
816 | |||
817 | LOGICAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
818 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
819 | |||
820 | ✗ | LOGICAL,DIMENSION(klon_glo) :: Var_tmp | |
821 | |||
822 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
823 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
824 | |||
825 | ✗ | END SUBROUTINE gather2D_mpi_l | |
826 | |||
827 | ✗ | SUBROUTINE gather2D_mpi_l1(VarIn, VarOut) | |
828 | USE mod_grid_phy_lmdz | ||
829 | IMPLICIT NONE | ||
830 | |||
831 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
832 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
833 | |||
834 | ✗ | LOGICAL,DIMENSION(klon_glo,size(VarOut,3)) :: Var_tmp | |
835 | |||
836 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
837 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
838 | |||
839 | ✗ | END SUBROUTINE gather2D_mpi_l1 | |
840 | |||
841 | ✗ | SUBROUTINE gather2D_mpi_l2(VarIn, VarOut) | |
842 | USE mod_grid_phy_lmdz | ||
843 | IMPLICIT NONE | ||
844 | |||
845 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
846 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
847 | |||
848 | ✗ | LOGICAL,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4)) :: Var_tmp | |
849 | |||
850 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
851 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
852 | |||
853 | ✗ | END SUBROUTINE gather2D_mpi_l2 | |
854 | |||
855 | ✗ | SUBROUTINE gather2D_mpi_l3(VarIn, VarOut) | |
856 | USE mod_grid_phy_lmdz | ||
857 | IMPLICIT NONE | ||
858 | |||
859 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
860 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut | ||
861 | |||
862 | ✗ | LOGICAL,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) :: Var_tmp | |
863 | |||
864 | ✗ | CALL gather_mpi(VarIn,Var_tmp) | |
865 | ✗ | CALL grid1dTo2d_glo(Var_tmp,VarOut) | |
866 | |||
867 | ✗ | END SUBROUTINE gather2D_mpi_l3 | |
868 | |||
869 | |||
870 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
871 | !! Definition des reduce_sum --> 4D !! | ||
872 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
873 | |||
874 | 2 | SUBROUTINE reduce_sum_mpi_i(VarIn, VarOut) | |
875 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
876 | IMPLICIT NONE | ||
877 | |||
878 | INTEGER,INTENT(IN) :: VarIn | ||
879 | INTEGER,INTENT(OUT) :: VarOut | ||
880 | INTEGER :: VarIn_tmp(1) | ||
881 | INTEGER :: VarOut_tmp(1) | ||
882 | |||
883 | 2 | VarIn_tmp(1)=VarIn | |
884 | CALL reduce_sum_mpi_igen(VarIn_tmp,Varout_tmp,1) | ||
885 | 2 | VarOut=VarOut_tmp(1) | |
886 | |||
887 | 2 | END SUBROUTINE reduce_sum_mpi_i | |
888 | |||
889 | ✗ | SUBROUTINE reduce_sum_mpi_i1(VarIn, VarOut) | |
890 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
891 | IMPLICIT NONE | ||
892 | |||
893 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
894 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
895 | |||
896 | ✗ | CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) | |
897 | |||
898 | ✗ | END SUBROUTINE reduce_sum_mpi_i1 | |
899 | |||
900 | ✗ | SUBROUTINE reduce_sum_mpi_i2(VarIn, VarOut) | |
901 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
902 | IMPLICIT NONE | ||
903 | |||
904 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
905 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
906 | |||
907 | ✗ | CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) | |
908 | |||
909 | ✗ | END SUBROUTINE reduce_sum_mpi_i2 | |
910 | |||
911 | ✗ | SUBROUTINE reduce_sum_mpi_i3(VarIn, VarOut) | |
912 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
913 | IMPLICIT NONE | ||
914 | |||
915 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
916 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
917 | |||
918 | ✗ | CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) | |
919 | |||
920 | ✗ | END SUBROUTINE reduce_sum_mpi_i3 | |
921 | |||
922 | ✗ | SUBROUTINE reduce_sum_mpi_i4(VarIn, VarOut) | |
923 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
924 | IMPLICIT NONE | ||
925 | |||
926 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
927 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
928 | |||
929 | ✗ | CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) | |
930 | |||
931 | ✗ | END SUBROUTINE reduce_sum_mpi_i4 | |
932 | |||
933 | |||
934 | ✗ | SUBROUTINE reduce_sum_mpi_r(VarIn, VarOut) | |
935 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
936 | IMPLICIT NONE | ||
937 | |||
938 | REAL,INTENT(IN) :: VarIn | ||
939 | REAL,INTENT(OUT) :: VarOut | ||
940 | REAL :: VarIn_tmp(1) | ||
941 | REAL :: VarOut_tmp(1) | ||
942 | |||
943 | ✗ | VarIn_tmp(1)=VarIn | |
944 | CALL reduce_sum_mpi_rgen(VarIn_tmp,Varout_tmp,1) | ||
945 | ✗ | VarOut=VarOut_tmp(1) | |
946 | |||
947 | ✗ | END SUBROUTINE reduce_sum_mpi_r | |
948 | |||
949 | ✗ | SUBROUTINE reduce_sum_mpi_r1(VarIn, VarOut) | |
950 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
951 | IMPLICIT NONE | ||
952 | |||
953 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
954 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
955 | |||
956 | ✗ | CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) | |
957 | |||
958 | ✗ | END SUBROUTINE reduce_sum_mpi_r1 | |
959 | |||
960 | ✗ | SUBROUTINE reduce_sum_mpi_r2(VarIn, VarOut) | |
961 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
962 | IMPLICIT NONE | ||
963 | |||
964 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
965 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
966 | |||
967 | ✗ | CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) | |
968 | |||
969 | ✗ | END SUBROUTINE reduce_sum_mpi_r2 | |
970 | |||
971 | ✗ | SUBROUTINE reduce_sum_mpi_r3(VarIn, VarOut) | |
972 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
973 | IMPLICIT NONE | ||
974 | |||
975 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
976 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
977 | |||
978 | ✗ | CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) | |
979 | |||
980 | ✗ | END SUBROUTINE reduce_sum_mpi_r3 | |
981 | |||
982 | ✗ | SUBROUTINE reduce_sum_mpi_r4(VarIn, VarOut) | |
983 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
984 | IMPLICIT NONE | ||
985 | |||
986 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
987 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
988 | |||
989 | ✗ | CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) | |
990 | |||
991 | ✗ | END SUBROUTINE reduce_sum_mpi_r4 | |
992 | |||
993 | |||
994 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
995 | !! Definition des reduce_min --> 4D !! | ||
996 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
997 | |||
998 | ✗ | SUBROUTINE reduce_min_mpi_i(VarIn, VarOut) | |
999 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1000 | IMPLICIT NONE | ||
1001 | |||
1002 | INTEGER,INTENT(IN) :: VarIn | ||
1003 | INTEGER,INTENT(OUT) :: VarOut | ||
1004 | INTEGER :: VarIn_tmp(1) | ||
1005 | INTEGER :: VarOut_tmp(1) | ||
1006 | |||
1007 | ✗ | VarIn_tmp(1)=VarIn | |
1008 | CALL reduce_min_mpi_igen(VarIn_tmp,Varout_tmp,1) | ||
1009 | ✗ | VarOut=VarOut_tmp(1) | |
1010 | |||
1011 | ✗ | END SUBROUTINE reduce_min_mpi_i | |
1012 | |||
1013 | ✗ | SUBROUTINE reduce_min_mpi_i1(VarIn, VarOut) | |
1014 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1015 | IMPLICIT NONE | ||
1016 | |||
1017 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
1018 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
1019 | |||
1020 | ✗ | CALL reduce_min_mpi_igen(VarIn,Varout,SIZE(VarIn)) | |
1021 | |||
1022 | ✗ | END SUBROUTINE reduce_min_mpi_i1 | |
1023 | |||
1024 | ✗ | SUBROUTINE reduce_min_mpi_i2(VarIn, VarOut) | |
1025 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1026 | IMPLICIT NONE | ||
1027 | |||
1028 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1029 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1030 | |||
1031 | ✗ | CALL reduce_min_mpi_igen(VarIn,Varout,SIZE(VarIn)) | |
1032 | |||
1033 | ✗ | END SUBROUTINE reduce_min_mpi_i2 | |
1034 | |||
1035 | ✗ | SUBROUTINE reduce_min_mpi_i3(VarIn, VarOut) | |
1036 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1037 | IMPLICIT NONE | ||
1038 | |||
1039 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1040 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1041 | |||
1042 | ✗ | CALL reduce_min_mpi_igen(VarIn,Varout,SIZE(VarIn)) | |
1043 | |||
1044 | ✗ | END SUBROUTINE reduce_min_mpi_i3 | |
1045 | |||
1046 | ✗ | SUBROUTINE reduce_min_mpi_i4(VarIn, VarOut) | |
1047 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1048 | IMPLICIT NONE | ||
1049 | |||
1050 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1051 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1052 | |||
1053 | ✗ | CALL reduce_min_mpi_igen(VarIn,Varout,SIZE(VarIn)) | |
1054 | |||
1055 | ✗ | END SUBROUTINE reduce_min_mpi_i4 | |
1056 | |||
1057 | |||
1058 | 1 | SUBROUTINE reduce_min_mpi_r(VarIn, VarOut) | |
1059 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1060 | IMPLICIT NONE | ||
1061 | |||
1062 | REAL,INTENT(IN) :: VarIn | ||
1063 | REAL,INTENT(OUT) :: VarOut | ||
1064 | REAL :: VarIn_tmp(1) | ||
1065 | REAL :: VarOut_tmp(1) | ||
1066 | |||
1067 | 1 | VarIn_tmp(1)=VarIn | |
1068 | CALL reduce_min_mpi_rgen(VarIn_tmp,Varout_tmp,1) | ||
1069 | 1 | VarOut=VarOut_tmp(1) | |
1070 | |||
1071 | 1 | END SUBROUTINE reduce_min_mpi_r | |
1072 | |||
1073 | ✗ | SUBROUTINE reduce_min_mpi_r1(VarIn, VarOut) | |
1074 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1075 | IMPLICIT NONE | ||
1076 | |||
1077 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
1078 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
1079 | |||
1080 | ✗ | CALL reduce_min_mpi_rgen(VarIn,Varout,SIZE(VarIn)) | |
1081 | |||
1082 | ✗ | END SUBROUTINE reduce_min_mpi_r1 | |
1083 | |||
1084 | ✗ | SUBROUTINE reduce_min_mpi_r2(VarIn, VarOut) | |
1085 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1086 | IMPLICIT NONE | ||
1087 | |||
1088 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1089 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1090 | |||
1091 | ✗ | CALL reduce_min_mpi_rgen(VarIn,Varout,SIZE(VarIn)) | |
1092 | |||
1093 | ✗ | END SUBROUTINE reduce_min_mpi_r2 | |
1094 | |||
1095 | ✗ | SUBROUTINE reduce_min_mpi_r3(VarIn, VarOut) | |
1096 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1097 | IMPLICIT NONE | ||
1098 | |||
1099 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1100 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1101 | |||
1102 | ✗ | CALL reduce_min_mpi_rgen(VarIn,Varout,SIZE(VarIn)) | |
1103 | |||
1104 | ✗ | END SUBROUTINE reduce_min_mpi_r3 | |
1105 | |||
1106 | ✗ | SUBROUTINE reduce_min_mpi_r4(VarIn, VarOut) | |
1107 | USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root | ||
1108 | IMPLICIT NONE | ||
1109 | |||
1110 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1111 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1112 | |||
1113 | ✗ | CALL reduce_min_mpi_rgen(VarIn,Varout,SIZE(VarIn)) | |
1114 | |||
1115 | ✗ | END SUBROUTINE reduce_min_mpi_r4 | |
1116 | |||
1117 | |||
1118 | |||
1119 | |||
1120 | !!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
1121 | !! SUBROUTINE grid1dTo2d !! | ||
1122 | !!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
1123 | |||
1124 | |||
1125 | ✗ | SUBROUTINE grid1dTo2d_mpi_i(VarIn,VarOut) | |
1126 | IMPLICIT NONE | ||
1127 | INTEGER,INTENT(IN),DIMENSION(:) :: VarIn | ||
1128 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1129 | |||
1130 | ✗ | CALL grid1dTo2d_mpi_igen(VarIn,VarOut,1) | |
1131 | |||
1132 | ✗ | END SUBROUTINE grid1dTo2d_mpi_i | |
1133 | |||
1134 | |||
1135 | ✗ | SUBROUTINE grid1dTo2d_mpi_i1(VarIn,VarOut) | |
1136 | IMPLICIT NONE | ||
1137 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1138 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1139 | |||
1140 | ✗ | CALL grid1dTo2d_mpi_igen(VarIn,VarOut,size(VarIn,2)) | |
1141 | |||
1142 | ✗ | END SUBROUTINE grid1dTo2d_mpi_i1 | |
1143 | |||
1144 | ✗ | SUBROUTINE grid1dTo2d_mpi_i2(VarIn,VarOut) | |
1145 | IMPLICIT NONE | ||
1146 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1147 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1148 | |||
1149 | ✗ | CALL grid1dTo2d_mpi_igen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)) | |
1150 | |||
1151 | ✗ | END SUBROUTINE grid1dTo2d_mpi_i2 | |
1152 | |||
1153 | ✗ | SUBROUTINE grid1dTo2d_mpi_i3(VarIn,VarOut) | |
1154 | IMPLICIT NONE | ||
1155 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1156 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut | ||
1157 | |||
1158 | ✗ | CALL grid1dTo2d_mpi_igen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)*size(VarIn,4)) | |
1159 | |||
1160 | ✗ | END SUBROUTINE grid1dTo2d_mpi_i3 | |
1161 | |||
1162 | |||
1163 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 363840 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 363840 times.
|
363840 | SUBROUTINE grid1dTo2d_mpi_r(VarIn,VarOut) |
1164 | IMPLICIT NONE | ||
1165 | REAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
1166 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1167 | |||
1168 |
2/4✗ Branch 3 not taken.
✓ Branch 4 taken 363840 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 363840 times.
|
363840 | CALL grid1dTo2d_mpi_rgen(VarIn,VarOut,1) |
1169 | |||
1170 | 363840 | END SUBROUTINE grid1dTo2d_mpi_r | |
1171 | |||
1172 | |||
1173 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 121920 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 121920 times.
|
121920 | SUBROUTINE grid1dTo2d_mpi_r1(VarIn,VarOut) |
1174 | IMPLICIT NONE | ||
1175 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1176 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1177 | |||
1178 |
2/4✗ Branch 3 not taken.
✓ Branch 4 taken 121920 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 121920 times.
|
121920 | CALL grid1dTo2d_mpi_rgen(VarIn,VarOut,size(VarIn,2)) |
1179 | |||
1180 | 121920 | END SUBROUTINE grid1dTo2d_mpi_r1 | |
1181 | |||
1182 | ✗ | SUBROUTINE grid1dTo2d_mpi_r2(VarIn,VarOut) | |
1183 | IMPLICIT NONE | ||
1184 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1185 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1186 | |||
1187 | ✗ | CALL grid1dTo2d_mpi_rgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)) | |
1188 | |||
1189 | ✗ | END SUBROUTINE grid1dTo2d_mpi_r2 | |
1190 | |||
1191 | ✗ | SUBROUTINE grid1dTo2d_mpi_r3(VarIn,VarOut) | |
1192 | IMPLICIT NONE | ||
1193 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1194 | REAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut | ||
1195 | |||
1196 | ✗ | CALL grid1dTo2d_mpi_rgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)*size(VarIn,4)) | |
1197 | |||
1198 | ✗ | END SUBROUTINE grid1dTo2d_mpi_r3 | |
1199 | |||
1200 | |||
1201 | |||
1202 | ✗ | SUBROUTINE grid1dTo2d_mpi_l(VarIn,VarOut) | |
1203 | IMPLICIT NONE | ||
1204 | LOGICAL,INTENT(IN),DIMENSION(:) :: VarIn | ||
1205 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1206 | |||
1207 | ✗ | CALL grid1dTo2d_mpi_lgen(VarIn,VarOut,1) | |
1208 | |||
1209 | ✗ | END SUBROUTINE grid1dTo2d_mpi_l | |
1210 | |||
1211 | |||
1212 | ✗ | SUBROUTINE grid1dTo2d_mpi_l1(VarIn,VarOut) | |
1213 | IMPLICIT NONE | ||
1214 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1215 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1216 | |||
1217 | ✗ | CALL grid1dTo2d_mpi_lgen(VarIn,VarOut,size(VarIn,2)) | |
1218 | |||
1219 | ✗ | END SUBROUTINE grid1dTo2d_mpi_l1 | |
1220 | |||
1221 | ✗ | SUBROUTINE grid1dTo2d_mpi_l2(VarIn,VarOut) | |
1222 | IMPLICIT NONE | ||
1223 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1224 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1225 | |||
1226 | ✗ | CALL grid1dTo2d_mpi_lgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)) | |
1227 | |||
1228 | ✗ | END SUBROUTINE grid1dTo2d_mpi_l2 | |
1229 | |||
1230 | ✗ | SUBROUTINE grid1dTo2d_mpi_l3(VarIn,VarOut) | |
1231 | IMPLICIT NONE | ||
1232 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1233 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut | ||
1234 | |||
1235 | ✗ | CALL grid1dTo2d_mpi_lgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)*size(VarIn,4)) | |
1236 | |||
1237 | ✗ | END SUBROUTINE grid1dTo2d_mpi_l3 | |
1238 | |||
1239 | |||
1240 | ✗ | SUBROUTINE grid2dTo1d_mpi_i(VarIn,VarOut) | |
1241 | IMPLICIT NONE | ||
1242 | INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1243 | INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut | ||
1244 | |||
1245 | ✗ | CALL grid2dTo1d_mpi_igen(VarIn,VarOut,1) | |
1246 | |||
1247 | ✗ | END SUBROUTINE grid2dTo1d_mpi_i | |
1248 | |||
1249 | |||
1250 | ✗ | SUBROUTINE grid2dTo1d_mpi_i1(VarIn,VarOut) | |
1251 | IMPLICIT NONE | ||
1252 | INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1253 | INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1254 | |||
1255 | ✗ | CALL grid2dTo1d_mpi_igen(VarIn,VarOut,size(VarIn,3)) | |
1256 | |||
1257 | ✗ | END SUBROUTINE grid2dTo1d_mpi_i1 | |
1258 | |||
1259 | ✗ | SUBROUTINE grid2dTo1d_mpi_i2(VarIn,VarOut) | |
1260 | IMPLICIT NONE | ||
1261 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1262 | INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1263 | |||
1264 | ✗ | CALL grid2dTo1d_mpi_igen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)) | |
1265 | |||
1266 | ✗ | END SUBROUTINE grid2dTo1d_mpi_i2 | |
1267 | |||
1268 | ✗ | SUBROUTINE grid2dTo1d_mpi_i3(VarIn,VarOut) | |
1269 | IMPLICIT NONE | ||
1270 | INTEGER,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn | ||
1271 | INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1272 | |||
1273 | ✗ | CALL grid2dTo1d_mpi_igen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)*size(VarIn,5)) | |
1274 | |||
1275 | ✗ | END SUBROUTINE grid2dTo1d_mpi_i3 | |
1276 | |||
1277 | |||
1278 | |||
1279 | |||
1280 | ✗ | SUBROUTINE grid2dTo1d_mpi_r(VarIn,VarOut) | |
1281 | IMPLICIT NONE | ||
1282 | REAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1283 | REAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
1284 | |||
1285 | ✗ | CALL grid2dTo1d_mpi_rgen(VarIn,VarOut,1) | |
1286 | |||
1287 | ✗ | END SUBROUTINE grid2dTo1d_mpi_r | |
1288 | |||
1289 | |||
1290 | ✗ | SUBROUTINE grid2dTo1d_mpi_r1(VarIn,VarOut) | |
1291 | IMPLICIT NONE | ||
1292 | REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1293 | REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1294 | |||
1295 | ✗ | CALL grid2dTo1d_mpi_rgen(VarIn,VarOut,size(VarIn,3)) | |
1296 | |||
1297 | ✗ | END SUBROUTINE grid2dTo1d_mpi_r1 | |
1298 | |||
1299 | ✗ | SUBROUTINE grid2dTo1d_mpi_r2(VarIn,VarOut) | |
1300 | IMPLICIT NONE | ||
1301 | REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1302 | REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1303 | |||
1304 | ✗ | CALL grid2dTo1d_mpi_rgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)) | |
1305 | |||
1306 | ✗ | END SUBROUTINE grid2dTo1d_mpi_r2 | |
1307 | |||
1308 | ✗ | SUBROUTINE grid2dTo1d_mpi_r3(VarIn,VarOut) | |
1309 | IMPLICIT NONE | ||
1310 | REAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn | ||
1311 | REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1312 | |||
1313 | ✗ | CALL grid2dTo1d_mpi_rgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)*size(VarIn,5)) | |
1314 | |||
1315 | ✗ | END SUBROUTINE grid2dTo1d_mpi_r3 | |
1316 | |||
1317 | |||
1318 | |||
1319 | ✗ | SUBROUTINE grid2dTo1d_mpi_l(VarIn,VarOut) | |
1320 | IMPLICIT NONE | ||
1321 | LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn | ||
1322 | LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut | ||
1323 | |||
1324 | ✗ | CALL grid2dTo1d_mpi_lgen(VarIn,VarOut,1) | |
1325 | |||
1326 | ✗ | END SUBROUTINE grid2dTo1d_mpi_l | |
1327 | |||
1328 | |||
1329 | ✗ | SUBROUTINE grid2dTo1d_mpi_l1(VarIn,VarOut) | |
1330 | IMPLICIT NONE | ||
1331 | LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn | ||
1332 | LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut | ||
1333 | |||
1334 | ✗ | CALL grid2dTo1d_mpi_lgen(VarIn,VarOut,size(VarIn,3)) | |
1335 | |||
1336 | ✗ | END SUBROUTINE grid2dTo1d_mpi_l1 | |
1337 | |||
1338 | |||
1339 | |||
1340 | ✗ | SUBROUTINE grid2dTo1d_mpi_l2(VarIn,VarOut) | |
1341 | IMPLICIT NONE | ||
1342 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn | ||
1343 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut | ||
1344 | |||
1345 | ✗ | CALL grid2dTo1d_mpi_lgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)) | |
1346 | |||
1347 | ✗ | END SUBROUTINE grid2dTo1d_mpi_l2 | |
1348 | |||
1349 | |||
1350 | ✗ | SUBROUTINE grid2dTo1d_mpi_l3(VarIn,VarOut) | |
1351 | IMPLICIT NONE | ||
1352 | LOGICAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn | ||
1353 | LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut | ||
1354 | |||
1355 | ✗ | CALL grid2dTo1d_mpi_lgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)*size(VarIn,5)) | |
1356 | |||
1357 | ✗ | END SUBROUTINE grid2dTo1d_mpi_l3 | |
1358 | |||
1359 | |||
1360 | |||
1361 | |||
1362 | |||
1363 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
1364 | !! DEFINITION DES FONCTIONS DE TRANSFERT GENERIQUES ! | ||
1365 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
1366 | |||
1367 | ✗ | SUBROUTINE bcast_mpi_cgen(var,nb) | |
1368 | USE mod_phys_lmdz_mpi_data | ||
1369 | IMPLICIT NONE | ||
1370 | |||
1371 | CHARACTER(LEN=*),INTENT(INOUT) :: Var | ||
1372 | INTEGER,INTENT(IN) :: nb | ||
1373 | |||
1374 | INTEGER :: ierr | ||
1375 | |||
1376 | IF (.not.is_using_mpi) RETURN | ||
1377 | |||
1378 | |||
1379 | END SUBROUTINE bcast_mpi_cgen | ||
1380 | |||
1381 | |||
1382 | |||
1383 | ✗ | SUBROUTINE bcast_mpi_igen(var,nb) | |
1384 | USE mod_phys_lmdz_mpi_data | ||
1385 | IMPLICIT NONE | ||
1386 | |||
1387 | INTEGER,INTENT(IN) :: nb | ||
1388 | INTEGER,DIMENSION(nb),INTENT(INOUT) :: Var | ||
1389 | |||
1390 | INTEGER :: ierr | ||
1391 | |||
1392 | IF (.not.is_using_mpi) RETURN | ||
1393 | |||
1394 | |||
1395 | END SUBROUTINE bcast_mpi_igen | ||
1396 | |||
1397 | |||
1398 | |||
1399 | |||
1400 | ✗ | SUBROUTINE bcast_mpi_rgen(var,nb) | |
1401 | USE mod_phys_lmdz_mpi_data | ||
1402 | IMPLICIT NONE | ||
1403 | |||
1404 | INTEGER,INTENT(IN) :: nb | ||
1405 | REAL,DIMENSION(nb),INTENT(INOUT) :: Var | ||
1406 | |||
1407 | INTEGER :: ierr | ||
1408 | |||
1409 | IF (.not.is_using_mpi) RETURN | ||
1410 | |||
1411 | |||
1412 | END SUBROUTINE bcast_mpi_rgen | ||
1413 | |||
1414 | |||
1415 | |||
1416 | |||
1417 | ✗ | SUBROUTINE bcast_mpi_lgen(var,nb) | |
1418 | USE mod_phys_lmdz_mpi_data | ||
1419 | IMPLICIT NONE | ||
1420 | |||
1421 | INTEGER,INTENT(IN) :: nb | ||
1422 | LOGICAL,DIMENSION(nb),INTENT(INOUT) :: Var | ||
1423 | |||
1424 | INTEGER :: ierr | ||
1425 | |||
1426 | IF (.not.is_using_mpi) RETURN | ||
1427 | |||
1428 | |||
1429 | END SUBROUTINE bcast_mpi_lgen | ||
1430 | |||
1431 | |||
1432 | |||
1433 | ✗ | SUBROUTINE scatter_mpi_igen(VarIn, VarOut, dimsize) | |
1434 | USE mod_phys_lmdz_mpi_data | ||
1435 | USE mod_grid_phy_lmdz | ||
1436 | IMPLICIT NONE | ||
1437 | |||
1438 | INTEGER,INTENT(IN) :: dimsize | ||
1439 | INTEGER,INTENT(IN),DIMENSION(klon_glo,dimsize) :: VarIn | ||
1440 | INTEGER,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut | ||
1441 | |||
1442 | INTEGER,DIMENSION(0:mpi_size-1) :: displs | ||
1443 | INTEGER,DIMENSION(0:mpi_size-1) :: counts | ||
1444 | INTEGER,DIMENSION(dimsize*klon_glo) :: VarTmp | ||
1445 | INTEGER :: nb,i,index,rank | ||
1446 | INTEGER :: ierr | ||
1447 | |||
1448 | |||
1449 | ✗ | IF (.not.is_using_mpi) THEN | |
1450 | ✗ | VarOut(:,:)=VarIn(:,:) | |
1451 | RETURN | ||
1452 | ENDIF | ||
1453 | |||
1454 | |||
1455 | IF (is_mpi_root) THEN | ||
1456 | Index=1 | ||
1457 | DO rank=0,mpi_size-1 | ||
1458 | nb=klon_mpi_para_nb(rank) | ||
1459 | displs(rank)=Index-1 | ||
1460 | counts(rank)=nb*dimsize | ||
1461 | DO i=1,dimsize | ||
1462 | VarTmp(Index:Index+nb-1)=VarIn(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),i) | ||
1463 | Index=Index+nb | ||
1464 | ENDDO | ||
1465 | ENDDO | ||
1466 | ENDIF | ||
1467 | |||
1468 | |||
1469 | ✗ | END SUBROUTINE scatter_mpi_igen | |
1470 | |||
1471 | 374 | SUBROUTINE scatter_mpi_rgen(VarIn, VarOut, dimsize) | |
1472 | USE mod_phys_lmdz_mpi_data | ||
1473 | USE mod_grid_phy_lmdz | ||
1474 | IMPLICIT NONE | ||
1475 | |||
1476 | INTEGER,INTENT(IN) :: dimsize | ||
1477 | REAL,INTENT(IN),DIMENSION(klon_glo,dimsize) :: VarIn | ||
1478 | REAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut | ||
1479 | |||
1480 | |||
1481 | INTEGER,DIMENSION(0:mpi_size-1) :: displs | ||
1482 | INTEGER,DIMENSION(0:mpi_size-1) :: counts | ||
1483 | REAL,DIMENSION(dimsize*klon_glo) :: VarTmp | ||
1484 | INTEGER :: nb,i,index,rank | ||
1485 | INTEGER :: ierr | ||
1486 | |||
1487 |
1/2✓ Branch 0 taken 374 times.
✗ Branch 1 not taken.
|
374 | IF (.not.is_using_mpi) THEN |
1488 |
4/4✓ Branch 0 taken 1219 times.
✓ Branch 1 taken 374 times.
✓ Branch 2 taken 1211686 times.
✓ Branch 3 taken 1219 times.
|
1213279 | VarOut(:,:)=VarIn(:,:) |
1489 | RETURN | ||
1490 | ENDIF | ||
1491 | |||
1492 | IF (is_mpi_root) THEN | ||
1493 | Index=1 | ||
1494 | DO rank=0,mpi_size-1 | ||
1495 | nb=klon_mpi_para_nb(rank) | ||
1496 | displs(rank)=Index-1 | ||
1497 | counts(rank)=nb*dimsize | ||
1498 | DO i=1,dimsize | ||
1499 | VarTmp(Index:Index+nb-1)=VarIn(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),i) | ||
1500 | Index=Index+nb | ||
1501 | ENDDO | ||
1502 | ENDDO | ||
1503 | ENDIF | ||
1504 | |||
1505 | |||
1506 | ✗ | END SUBROUTINE scatter_mpi_rgen | |
1507 | |||
1508 | |||
1509 | ✗ | SUBROUTINE scatter_mpi_lgen(VarIn, VarOut, dimsize) | |
1510 | USE mod_phys_lmdz_mpi_data | ||
1511 | USE mod_grid_phy_lmdz | ||
1512 | IMPLICIT NONE | ||
1513 | |||
1514 | INTEGER,INTENT(IN) :: dimsize | ||
1515 | LOGICAL,INTENT(IN),DIMENSION(klon_glo,dimsize) :: VarIn | ||
1516 | LOGICAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut | ||
1517 | |||
1518 | |||
1519 | INTEGER,DIMENSION(0:mpi_size-1) :: displs | ||
1520 | INTEGER,DIMENSION(0:mpi_size-1) :: counts | ||
1521 | LOGICAL,DIMENSION(dimsize*klon_glo) :: VarTmp | ||
1522 | INTEGER :: nb,i,index,rank | ||
1523 | INTEGER :: ierr | ||
1524 | |||
1525 | ✗ | IF (.not.is_using_mpi) THEN | |
1526 | ✗ | VarOut(:,:)=VarIn(:,:) | |
1527 | RETURN | ||
1528 | ENDIF | ||
1529 | |||
1530 | IF (is_mpi_root) THEN | ||
1531 | Index=1 | ||
1532 | DO rank=0,mpi_size-1 | ||
1533 | nb=klon_mpi_para_nb(rank) | ||
1534 | displs(rank)=Index-1 | ||
1535 | counts(rank)=nb*dimsize | ||
1536 | DO i=1,dimsize | ||
1537 | VarTmp(Index:Index+nb-1)=VarIn(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),i) | ||
1538 | Index=Index+nb | ||
1539 | ENDDO | ||
1540 | ENDDO | ||
1541 | ENDIF | ||
1542 | |||
1543 | |||
1544 | ✗ | END SUBROUTINE scatter_mpi_lgen | |
1545 | |||
1546 | |||
1547 | |||
1548 | |||
1549 | 563 | SUBROUTINE gather_mpi_igen(VarIn, VarOut, dimsize) | |
1550 | USE mod_phys_lmdz_mpi_data | ||
1551 | USE mod_grid_phy_lmdz | ||
1552 | IMPLICIT NONE | ||
1553 | |||
1554 | |||
1555 | INTEGER,INTENT(IN) :: dimsize | ||
1556 | INTEGER,INTENT(IN),DIMENSION(klon_mpi,dimsize) :: VarIn | ||
1557 | INTEGER,INTENT(OUT),DIMENSION(klon_glo,dimsize) :: VarOut | ||
1558 | |||
1559 | 1126 | INTEGER,DIMENSION(0:mpi_size-1) :: displs | |
1560 | 1126 | INTEGER,DIMENSION(0:mpi_size-1) :: counts | |
1561 | 563 | INTEGER,DIMENSION(dimsize*klon_glo) :: VarTmp | |
1562 | INTEGER :: nb,i,index,rank | ||
1563 | INTEGER :: ierr | ||
1564 | |||
1565 |
1/2✓ Branch 0 taken 563 times.
✗ Branch 1 not taken.
|
563 | IF (.not.is_using_mpi) THEN |
1566 |
4/4✓ Branch 0 taken 563 times.
✓ Branch 1 taken 563 times.
✓ Branch 2 taken 559622 times.
✓ Branch 3 taken 563 times.
|
560748 | VarOut(:,:)=VarIn(:,:) |
1567 | RETURN | ||
1568 | ENDIF | ||
1569 | |||
1570 | ✗ | IF (is_mpi_root) THEN | |
1571 | Index=1 | ||
1572 | ✗ | DO rank=0,mpi_size-1 | |
1573 | ✗ | nb=klon_mpi_para_nb(rank) | |
1574 | ✗ | displs(rank)=Index-1 | |
1575 | ✗ | counts(rank)=nb*dimsize | |
1576 | ✗ | Index=Index+nb*dimsize | |
1577 | ENDDO | ||
1578 | |||
1579 | ENDIF | ||
1580 | |||
1581 | |||
1582 | |||
1583 | ✗ | IF (is_mpi_root) THEN | |
1584 | Index=1 | ||
1585 | ✗ | DO rank=0,mpi_size-1 | |
1586 | ✗ | nb=klon_mpi_para_nb(rank) | |
1587 | ✗ | DO i=1,dimsize | |
1588 | ✗ | VarOut(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),i)=VarTmp(Index:Index+nb-1) | |
1589 | ✗ | Index=Index+nb | |
1590 | ENDDO | ||
1591 | ENDDO | ||
1592 | ENDIF | ||
1593 | |||
1594 | ✗ | END SUBROUTINE gather_mpi_igen | |
1595 | |||
1596 | 218 | SUBROUTINE gather_mpi_rgen(VarIn, VarOut, dimsize) | |
1597 | USE mod_phys_lmdz_mpi_data | ||
1598 | USE mod_grid_phy_lmdz | ||
1599 | IMPLICIT NONE | ||
1600 | |||
1601 | |||
1602 | INTEGER,INTENT(IN) :: dimsize | ||
1603 | REAL,INTENT(IN),DIMENSION(klon_mpi,dimsize) :: VarIn | ||
1604 | REAL,INTENT(OUT),DIMENSION(klon_glo,dimsize) :: VarOut | ||
1605 | |||
1606 | 436 | INTEGER,DIMENSION(0:mpi_size-1) :: displs | |
1607 | 436 | INTEGER,DIMENSION(0:mpi_size-1) :: counts | |
1608 | 218 | REAL,DIMENSION(dimsize*klon_glo) :: VarTmp | |
1609 | INTEGER :: nb,i,index,rank | ||
1610 | INTEGER :: ierr | ||
1611 | |||
1612 |
1/2✓ Branch 0 taken 218 times.
✗ Branch 1 not taken.
|
218 | IF (is_mpi_root) THEN |
1613 | Index=1 | ||
1614 |
2/2✓ Branch 0 taken 218 times.
✓ Branch 1 taken 218 times.
|
436 | DO rank=0,mpi_size-1 |
1615 | 218 | nb=klon_mpi_para_nb(rank) | |
1616 | 218 | displs(rank)=Index-1 | |
1617 | 218 | counts(rank)=nb*dimsize | |
1618 | 436 | Index=Index+nb*dimsize | |
1619 | ENDDO | ||
1620 | ENDIF | ||
1621 | |||
1622 |
1/2✓ Branch 0 taken 218 times.
✗ Branch 1 not taken.
|
218 | IF (.not.is_using_mpi) THEN |
1623 |
4/4✓ Branch 0 taken 1445 times.
✓ Branch 1 taken 218 times.
✓ Branch 2 taken 1436330 times.
✓ Branch 3 taken 1445 times.
|
1437993 | VarOut(:,:)=VarIn(:,:) |
1624 | RETURN | ||
1625 | ENDIF | ||
1626 | |||
1627 | |||
1628 | ✗ | IF (is_mpi_root) THEN | |
1629 | Index=1 | ||
1630 | ✗ | DO rank=0,mpi_size-1 | |
1631 | ✗ | nb=klon_mpi_para_nb(rank) | |
1632 | ✗ | DO i=1,dimsize | |
1633 | ✗ | VarOut(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),i)=VarTmp(Index:Index+nb-1) | |
1634 | ✗ | Index=Index+nb | |
1635 | ENDDO | ||
1636 | ENDDO | ||
1637 | ENDIF | ||
1638 | |||
1639 | ✗ | END SUBROUTINE gather_mpi_rgen | |
1640 | |||
1641 | ✗ | SUBROUTINE gather_mpi_lgen(VarIn, VarOut, dimsize) | |
1642 | USE mod_phys_lmdz_mpi_data | ||
1643 | USE mod_grid_phy_lmdz | ||
1644 | IMPLICIT NONE | ||
1645 | |||
1646 | INTEGER,INTENT(IN) :: dimsize | ||
1647 | LOGICAL,INTENT(IN),DIMENSION(klon_mpi,dimsize) :: VarIn | ||
1648 | LOGICAL,INTENT(OUT),DIMENSION(klon_glo,dimsize) :: VarOut | ||
1649 | |||
1650 | |||
1651 | ✗ | INTEGER,DIMENSION(0:mpi_size-1) :: displs | |
1652 | ✗ | INTEGER,DIMENSION(0:mpi_size-1) :: counts | |
1653 | ✗ | LOGICAL,DIMENSION(dimsize*klon_glo) :: VarTmp | |
1654 | INTEGER :: nb,i,index,rank | ||
1655 | INTEGER :: ierr | ||
1656 | |||
1657 | ✗ | IF (.not.is_using_mpi) THEN | |
1658 | ✗ | VarOut(:,:)=VarIn(:,:) | |
1659 | RETURN | ||
1660 | ENDIF | ||
1661 | |||
1662 | ✗ | IF (is_mpi_root) THEN | |
1663 | Index=1 | ||
1664 | ✗ | DO rank=0,mpi_size-1 | |
1665 | ✗ | nb=klon_mpi_para_nb(rank) | |
1666 | ✗ | displs(rank)=Index-1 | |
1667 | ✗ | counts(rank)=nb*dimsize | |
1668 | ✗ | Index=Index+nb*dimsize | |
1669 | ENDDO | ||
1670 | ENDIF | ||
1671 | |||
1672 | |||
1673 | |||
1674 | ✗ | IF (is_mpi_root) THEN | |
1675 | Index=1 | ||
1676 | ✗ | DO rank=0,mpi_size-1 | |
1677 | ✗ | nb=klon_mpi_para_nb(rank) | |
1678 | ✗ | DO i=1,dimsize | |
1679 | ✗ | VarOut(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),i)=VarTmp(Index:Index+nb-1) | |
1680 | ✗ | Index=Index+nb | |
1681 | ENDDO | ||
1682 | ENDDO | ||
1683 | ENDIF | ||
1684 | |||
1685 | ✗ | END SUBROUTINE gather_mpi_lgen | |
1686 | |||
1687 | |||
1688 | |||
1689 | ✗ | SUBROUTINE reduce_sum_mpi_igen(VarIn,VarOut,nb) | |
1690 | USE mod_phys_lmdz_mpi_data | ||
1691 | USE mod_grid_phy_lmdz | ||
1692 | IMPLICIT NONE | ||
1693 | |||
1694 | |||
1695 | INTEGER,INTENT(IN) :: nb | ||
1696 | INTEGER,DIMENSION(nb),INTENT(IN) :: VarIn | ||
1697 | INTEGER,DIMENSION(nb),INTENT(OUT) :: VarOut | ||
1698 | INTEGER :: ierr | ||
1699 | |||
1700 |
1/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
2 | IF (.not.is_using_mpi) THEN |
1701 |
2/12✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
4 | VarOut(:)=VarIn(:) |
1702 | RETURN | ||
1703 | ENDIF | ||
1704 | |||
1705 | |||
1706 | |||
1707 | END SUBROUTINE reduce_sum_mpi_igen | ||
1708 | |||
1709 | ✗ | SUBROUTINE reduce_sum_mpi_rgen(VarIn,VarOut,nb) | |
1710 | USE mod_phys_lmdz_mpi_data | ||
1711 | USE mod_grid_phy_lmdz | ||
1712 | |||
1713 | IMPLICIT NONE | ||
1714 | |||
1715 | |||
1716 | INTEGER,INTENT(IN) :: nb | ||
1717 | REAL,DIMENSION(nb),INTENT(IN) :: VarIn | ||
1718 | REAL,DIMENSION(nb),INTENT(OUT) :: VarOut | ||
1719 | INTEGER :: ierr | ||
1720 | |||
1721 | ✗ | IF (.not.is_using_mpi) THEN | |
1722 | ✗ | VarOut(:)=VarIn(:) | |
1723 | RETURN | ||
1724 | ENDIF | ||
1725 | |||
1726 | |||
1727 | END SUBROUTINE reduce_sum_mpi_rgen | ||
1728 | |||
1729 | |||
1730 | |||
1731 | ✗ | SUBROUTINE reduce_min_mpi_igen(VarIn,VarOut,nb) | |
1732 | USE mod_phys_lmdz_mpi_data | ||
1733 | USE mod_grid_phy_lmdz | ||
1734 | IMPLICIT NONE | ||
1735 | |||
1736 | |||
1737 | INTEGER,INTENT(IN) :: nb | ||
1738 | INTEGER,DIMENSION(nb),INTENT(IN) :: VarIn | ||
1739 | INTEGER,DIMENSION(nb),INTENT(OUT) :: VarOut | ||
1740 | INTEGER :: ierr | ||
1741 | |||
1742 | ✗ | IF (.not.is_using_mpi) THEN | |
1743 | ✗ | VarOut(:)=VarIn(:) | |
1744 | RETURN | ||
1745 | ENDIF | ||
1746 | |||
1747 | |||
1748 | |||
1749 | END SUBROUTINE reduce_min_mpi_igen | ||
1750 | |||
1751 | ✗ | SUBROUTINE reduce_min_mpi_rgen(VarIn,VarOut,nb) | |
1752 | USE mod_phys_lmdz_mpi_data | ||
1753 | USE mod_grid_phy_lmdz | ||
1754 | |||
1755 | IMPLICIT NONE | ||
1756 | |||
1757 | |||
1758 | INTEGER,INTENT(IN) :: nb | ||
1759 | REAL,DIMENSION(nb),INTENT(IN) :: VarIn | ||
1760 | REAL,DIMENSION(nb),INTENT(OUT) :: VarOut | ||
1761 | INTEGER :: ierr | ||
1762 | |||
1763 |
1/12✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
1 | IF (.not.is_using_mpi) THEN |
1764 |
2/12✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
2 | VarOut(:)=VarIn(:) |
1765 | RETURN | ||
1766 | ENDIF | ||
1767 | |||
1768 | |||
1769 | END SUBROUTINE reduce_min_mpi_rgen | ||
1770 | |||
1771 | |||
1772 | |||
1773 | |||
1774 | |||
1775 | |||
1776 | |||
1777 | ✗ | SUBROUTINE grid1dTo2d_mpi_igen(VarIn,VarOut,dimsize) | |
1778 | USE mod_phys_lmdz_mpi_data | ||
1779 | USE mod_grid_phy_lmdz | ||
1780 | IMPLICIT NONE | ||
1781 | |||
1782 | INTEGER,INTENT(IN) :: dimsize | ||
1783 | INTEGER,INTENT(IN) ,DIMENSION(klon_mpi,dimsize) :: VarIn | ||
1784 | INTEGER,INTENT(OUT),DIMENSION(nbp_lon*jj_nb,dimsize) :: VarOut | ||
1785 | INTEGER :: i,ij,Offset | ||
1786 | |||
1787 | |||
1788 | ✗ | VarOut(1:nbp_lon,:)=0 | |
1789 | ✗ | VarOut(nbp_lon*(jj_nb-1)+1:nbp_lon*jj_nb,:)=0 | |
1790 | |||
1791 | ✗ | offset=ii_begin | |
1792 | ✗ | IF (is_north_pole_dyn) Offset=nbp_lon | |
1793 | |||
1794 | |||
1795 | ✗ | DO i=1,dimsize | |
1796 | ✗ | DO ij=1,klon_mpi | |
1797 | ✗ | VarOut(ij+offset-1,i)=VarIn(ij,i) | |
1798 | ENDDO | ||
1799 | ENDDO | ||
1800 | |||
1801 | |||
1802 | ✗ | IF (is_north_pole_dyn) THEN | |
1803 | ✗ | DO i=1,dimsize | |
1804 | ✗ | DO ij=1,nbp_lon | |
1805 | ✗ | VarOut(ij,i)=VarIn(1,i) | |
1806 | ENDDO | ||
1807 | ENDDO | ||
1808 | ENDIF | ||
1809 | |||
1810 | ✗ | IF (is_south_pole_dyn) THEN | |
1811 | ✗ | DO i=1,dimsize | |
1812 | ✗ | DO ij=nbp_lon*(jj_nb-1)+1,nbp_lon*jj_nb | |
1813 | ✗ | VarOut(ij,i)=VarIn(klon_mpi,i) | |
1814 | ENDDO | ||
1815 | ENDDO | ||
1816 | ENDIF | ||
1817 | |||
1818 | ✗ | END SUBROUTINE grid1dTo2d_mpi_igen | |
1819 | |||
1820 | |||
1821 | 485760 | SUBROUTINE grid1dTo2d_mpi_rgen(VarIn,VarOut,dimsize) | |
1822 | USE mod_phys_lmdz_mpi_data | ||
1823 | USE mod_grid_phy_lmdz | ||
1824 | IMPLICIT NONE | ||
1825 | |||
1826 | INTEGER,INTENT(IN) :: dimsize | ||
1827 | REAL,INTENT(IN) ,DIMENSION(klon_mpi,dimsize) :: VarIn | ||
1828 | REAL,INTENT(OUT),DIMENSION(nbp_lon*jj_nb,dimsize) :: VarOut | ||
1829 | INTEGER :: i,ij,Offset | ||
1830 | |||
1831 | |||
1832 |
4/4✓ Branch 0 taken 4524960 times.
✓ Branch 1 taken 485760 times.
✓ Branch 2 taken 144798720 times.
✓ Branch 3 taken 4524960 times.
|
149809440 | VarOut(1:nbp_lon,:)=0 |
1833 |
4/4✓ Branch 0 taken 4524960 times.
✓ Branch 1 taken 485760 times.
✓ Branch 2 taken 144798720 times.
✓ Branch 3 taken 4524960 times.
|
149809440 | VarOut(nbp_lon*(jj_nb-1)+1:nbp_lon*jj_nb,:)=0 |
1834 | |||
1835 | 485760 | offset=ii_begin | |
1836 |
1/2✓ Branch 0 taken 485760 times.
✗ Branch 1 not taken.
|
485760 | IF (is_north_pole_dyn) Offset=nbp_lon |
1837 | |||
1838 | |||
1839 |
2/2✓ Branch 0 taken 4524960 times.
✓ Branch 1 taken 485760 times.
|
5010720 | DO i=1,dimsize |
1840 |
2/2✓ Branch 0 taken 4497810240 times.
✓ Branch 1 taken 4524960 times.
|
4502820960 | DO ij=1,klon_mpi |
1841 | 4502335200 | VarOut(ij+offset-1,i)=VarIn(ij,i) | |
1842 | ENDDO | ||
1843 | ENDDO | ||
1844 | |||
1845 | |||
1846 |
1/2✓ Branch 0 taken 485760 times.
✗ Branch 1 not taken.
|
485760 | IF (is_north_pole_dyn) THEN |
1847 |
2/2✓ Branch 0 taken 4524960 times.
✓ Branch 1 taken 485760 times.
|
5010720 | DO i=1,dimsize |
1848 |
2/2✓ Branch 0 taken 144798720 times.
✓ Branch 1 taken 4524960 times.
|
149809440 | DO ij=1,nbp_lon |
1849 | 149323680 | VarOut(ij,i)=VarIn(1,i) | |
1850 | ENDDO | ||
1851 | ENDDO | ||
1852 | ENDIF | ||
1853 | |||
1854 |
1/2✓ Branch 0 taken 485760 times.
✗ Branch 1 not taken.
|
485760 | IF (is_south_pole_dyn) THEN |
1855 |
2/2✓ Branch 0 taken 4524960 times.
✓ Branch 1 taken 485760 times.
|
5010720 | DO i=1,dimsize |
1856 |
2/2✓ Branch 0 taken 144798720 times.
✓ Branch 1 taken 4524960 times.
|
149809440 | DO ij=nbp_lon*(jj_nb-1)+1,nbp_lon*jj_nb |
1857 | 149323680 | VarOut(ij,i)=VarIn(klon_mpi,i) | |
1858 | ENDDO | ||
1859 | ENDDO | ||
1860 | ENDIF | ||
1861 | |||
1862 | 485760 | END SUBROUTINE grid1dTo2d_mpi_rgen | |
1863 | |||
1864 | |||
1865 | |||
1866 | ✗ | SUBROUTINE grid1dTo2d_mpi_lgen(VarIn,VarOut,dimsize) | |
1867 | USE mod_phys_lmdz_mpi_data | ||
1868 | USE mod_grid_phy_lmdz | ||
1869 | IMPLICIT NONE | ||
1870 | |||
1871 | INTEGER,INTENT(IN) :: dimsize | ||
1872 | LOGICAL,INTENT(IN) ,DIMENSION(klon_mpi,dimsize) :: VarIn | ||
1873 | LOGICAL,INTENT(OUT),DIMENSION(nbp_lon*jj_nb,dimsize) :: VarOut | ||
1874 | INTEGER :: i,ij,Offset | ||
1875 | |||
1876 | |||
1877 | ✗ | VarOut(1:nbp_lon,:)=.FALSE. | |
1878 | ✗ | VarOut(nbp_lon*(jj_nb-1)+1:nbp_lon*jj_nb,:)=.FALSE. | |
1879 | |||
1880 | ✗ | offset=ii_begin | |
1881 | ✗ | IF (is_north_pole_dyn) Offset=nbp_lon | |
1882 | |||
1883 | |||
1884 | ✗ | DO i=1,dimsize | |
1885 | ✗ | DO ij=1,klon_mpi | |
1886 | ✗ | VarOut(ij+offset-1,i)=VarIn(ij,i) | |
1887 | ENDDO | ||
1888 | ENDDO | ||
1889 | |||
1890 | |||
1891 | ✗ | IF (is_north_pole_dyn) THEN | |
1892 | ✗ | DO i=1,dimsize | |
1893 | ✗ | DO ij=1,nbp_lon | |
1894 | ✗ | VarOut(ij,i)=VarIn(1,i) | |
1895 | ENDDO | ||
1896 | ENDDO | ||
1897 | ENDIF | ||
1898 | |||
1899 | ✗ | IF (is_south_pole_dyn) THEN | |
1900 | ✗ | DO i=1,dimsize | |
1901 | ✗ | DO ij=nbp_lon*(jj_nb-1)+1,nbp_lon*jj_nb | |
1902 | ✗ | VarOut(ij,i)=VarIn(klon_mpi,i) | |
1903 | ENDDO | ||
1904 | ENDDO | ||
1905 | ENDIF | ||
1906 | |||
1907 | ✗ | END SUBROUTINE grid1dTo2d_mpi_lgen | |
1908 | |||
1909 | |||
1910 | |||
1911 | |||
1912 | ✗ | SUBROUTINE grid2dTo1d_mpi_igen(VarIn,VarOut,dimsize) | |
1913 | USE mod_phys_lmdz_mpi_data | ||
1914 | USE mod_grid_phy_lmdz | ||
1915 | IMPLICIT NONE | ||
1916 | |||
1917 | INTEGER,INTENT(IN) :: dimsize | ||
1918 | INTEGER,INTENT(IN) ,DIMENSION(nbp_lon*jj_nb,dimsize) :: VarIn | ||
1919 | INTEGER,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut | ||
1920 | INTEGER :: i,ij,offset | ||
1921 | |||
1922 | ✗ | offset=ii_begin | |
1923 | ✗ | IF (is_north_pole_dyn) offset=nbp_lon | |
1924 | |||
1925 | ✗ | DO i=1,dimsize | |
1926 | ✗ | DO ij=1,klon_mpi | |
1927 | ✗ | VarOut(ij,i)=VarIn(ij+offset-1,i) | |
1928 | ENDDO | ||
1929 | ENDDO | ||
1930 | |||
1931 | ✗ | IF (is_north_pole_dyn) THEN | |
1932 | ✗ | DO i=1,dimsize | |
1933 | ✗ | VarOut(1,i)=VarIn(1,i) | |
1934 | ENDDO | ||
1935 | ENDIF | ||
1936 | |||
1937 | |||
1938 | ✗ | END SUBROUTINE grid2dTo1d_mpi_igen | |
1939 | |||
1940 | |||
1941 | |||
1942 | ✗ | SUBROUTINE grid2dTo1d_mpi_rgen(VarIn,VarOut,dimsize) | |
1943 | USE mod_phys_lmdz_mpi_data | ||
1944 | USE mod_grid_phy_lmdz | ||
1945 | IMPLICIT NONE | ||
1946 | |||
1947 | INTEGER,INTENT(IN) :: dimsize | ||
1948 | REAL,INTENT(IN) ,DIMENSION(nbp_lon*jj_nb,dimsize) :: VarIn | ||
1949 | REAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut | ||
1950 | INTEGER :: i,ij,offset | ||
1951 | |||
1952 | ✗ | offset=ii_begin | |
1953 | ✗ | IF (is_north_pole_dyn) offset=nbp_lon | |
1954 | |||
1955 | ✗ | DO i=1,dimsize | |
1956 | ✗ | DO ij=1,klon_mpi | |
1957 | ✗ | VarOut(ij,i)=VarIn(ij+offset-1,i) | |
1958 | ENDDO | ||
1959 | ENDDO | ||
1960 | |||
1961 | ✗ | IF (is_north_pole_dyn) THEN | |
1962 | ✗ | DO i=1,dimsize | |
1963 | ✗ | VarOut(1,i)=VarIn(1,i) | |
1964 | ENDDO | ||
1965 | ENDIF | ||
1966 | |||
1967 | |||
1968 | ✗ | END SUBROUTINE grid2dTo1d_mpi_rgen | |
1969 | |||
1970 | |||
1971 | ✗ | SUBROUTINE grid2dTo1d_mpi_lgen(VarIn,VarOut,dimsize) | |
1972 | USE mod_phys_lmdz_mpi_data | ||
1973 | USE mod_grid_phy_lmdz | ||
1974 | IMPLICIT NONE | ||
1975 | |||
1976 | INTEGER,INTENT(IN) :: dimsize | ||
1977 | LOGICAL,INTENT(IN) ,DIMENSION(nbp_lon*jj_nb,dimsize) :: VarIn | ||
1978 | LOGICAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut | ||
1979 | INTEGER :: i,ij,offset | ||
1980 | |||
1981 | ✗ | offset=ii_begin | |
1982 | ✗ | IF (is_north_pole_dyn) offset=nbp_lon | |
1983 | |||
1984 | ✗ | DO i=1,dimsize | |
1985 | ✗ | DO ij=1,klon_mpi | |
1986 | ✗ | VarOut(ij,i)=VarIn(ij+offset-1,i) | |
1987 | ENDDO | ||
1988 | ENDDO | ||
1989 | |||
1990 | ✗ | IF (is_north_pole_dyn) THEN | |
1991 | ✗ | DO i=1,dimsize | |
1992 | ✗ | VarOut(1,i)=VarIn(1,i) | |
1993 | ENDDO | ||
1994 | ENDIF | ||
1995 | |||
1996 | |||
1997 | ✗ | END SUBROUTINE grid2dTo1d_mpi_lgen | |
1998 | |||
1999 | END MODULE mod_phys_lmdz_mpi_transfert | ||
2000 | |||
2001 |