FMS  2026.01.01-dev
Flexible Modeling System
mpp_comm.inc
1 ! -*-f90-*-
2 
3 !***********************************************************************
4 !* Apache License 2.0
5 !*
6 !* This file is part of the GFDL Flexible Modeling System (FMS).
7 !*
8 !* Licensed under the Apache License, Version 2.0 (the "License");
9 !* you may not use this file except in compliance with the License.
10 !* You may obtain a copy of the License at
11 !*
12 !* http://www.apache.org/licenses/LICENSE-2.0
13 !*
14 !* FMS is distributed in the hope that it will be useful, but WITHOUT
15 !* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied;
16 !* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
17 !* PARTICULAR PURPOSE. See the License for the specific language
18 !* governing permissions and limitations under the License.
19 !***********************************************************************
20 !> @file
21 !> @brief Imports checksum, gather, and scatter routines from other include files used
22 !! for communications and calculations between PE's in @ref mpp_mod
23 
24 !> @addtogroup mpp_mod
25 !> @{
26 
27 subroutine mpp_init_legacy( flags, localcomm, test_level, alt_input_nml_path )
28  integer, optional, intent(in) :: flags !< Flags for debug output, can be MPP_VERBOSE or MPP_DEBUG
29  integer, intent(in) :: localcomm !< MPI communicator to use. Only relevant if MPI has already
30  !! been initialized by an external call to mpi_init.
31  integer, optional, intent(in) :: test_level !< Used to exit initialization at certain stages
32  !! before completion for testing purposes
33  character(len=*), optional, intent(in) :: alt_input_nml_path !< Input path for namelist
34  type(mpi_comm) :: comm
35 
36  comm%mpi_val = localcomm
37  call mpp_init_f08(flags, comm, test_level, alt_input_nml_path)
38 end subroutine mpp_init_legacy
39 
40 #if defined(use_libMPI)
41 #include <mpp_comm_mpi.inc>
42 #else
43 #include <mpp_comm_nocomm.inc>
44 #endif
45 
46 #undef MPP_CHKSUM_INT_
47 #define MPP_CHKSUM_INT_ mpp_chksum_i8_1d
48 #undef MPP_CHKSUM_INT_RMASK_
49 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i8_1d_rmask
50 #undef MPP_TYPE_
51 #define MPP_TYPE_ integer(i8_kind)
52 #undef MPP_RANK_
53 #define MPP_RANK_ (:)
54 #include <mpp_chksum_int.fh>
55 
56 #undef MPP_CHKSUM_INT_
57 #define MPP_CHKSUM_INT_ mpp_chksum_i8_2d
58 #undef MPP_CHKSUM_INT_RMASK_
59 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i8_2d_rmask
60 #undef MPP_TYPE_
61 #define MPP_TYPE_ integer(i8_kind)
62 #undef MPP_RANK_
63 #define MPP_RANK_ (:,:)
64 #include <mpp_chksum_int.fh>
65 
66 #undef MPP_CHKSUM_INT_
67 #define MPP_CHKSUM_INT_ mpp_chksum_i8_3d
68 #undef MPP_CHKSUM_INT_RMASK_
69 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i8_3d_rmask
70 #undef MPP_TYPE_
71 #define MPP_TYPE_ integer(i8_kind)
72 #undef MPP_RANK_
73 #define MPP_RANK_ (:,:,:)
74 #include <mpp_chksum_int.fh>
75 
76 #undef MPP_CHKSUM_INT_
77 #define MPP_CHKSUM_INT_ mpp_chksum_i8_4d
78 #undef MPP_CHKSUM_INT_RMASK_
79 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i8_4d_rmask
80 #undef MPP_TYPE_
81 #define MPP_TYPE_ integer(i8_kind)
82 #undef MPP_RANK_
83 #define MPP_RANK_ (:,:,:,:)
84 #include <mpp_chksum_int.fh>
85 
86 #undef MPP_CHKSUM_INT_
87 #define MPP_CHKSUM_INT_ mpp_chksum_i8_5d
88 #undef MPP_CHKSUM_INT_RMASK_
89 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i8_5d_rmask
90 #undef MPP_TYPE_
91 #define MPP_TYPE_ integer(i8_kind)
92 #undef MPP_RANK_
93 #define MPP_RANK_ (:,:,:,:,:)
94 #include <mpp_chksum_int.fh>
95 
96 #undef MPP_CHKSUM_INT_
97 #define MPP_CHKSUM_INT_ mpp_chksum_i4_1d
98 #undef MPP_CHKSUM_INT_RMASK_
99 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i4_1d_rmask
100 #undef MPP_TYPE_
101 #define MPP_TYPE_ integer(i4_kind)
102 #undef MPP_RANK_
103 #define MPP_RANK_ (:)
104 #include <mpp_chksum_int.fh>
105 
106 #undef MPP_CHKSUM_INT_
107 #define MPP_CHKSUM_INT_ mpp_chksum_i4_2d
108 #undef MPP_CHKSUM_INT_RMASK_
109 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i4_2d_rmask
110 #undef MPP_TYPE_
111 #define MPP_TYPE_ integer(i4_kind)
112 #undef MPP_RANK_
113 #define MPP_RANK_ (:,:)
114 #include <mpp_chksum_int.fh>
115 
116 #undef MPP_CHKSUM_INT_
117 #define MPP_CHKSUM_INT_ mpp_chksum_i4_3d
118 #undef MPP_CHKSUM_INT_RMASK_
119 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i4_3d_rmask
120 #undef MPP_TYPE_
121 #define MPP_TYPE_ integer(i4_kind)
122 #undef MPP_RANK_
123 #define MPP_RANK_ (:,:,:)
124 #include <mpp_chksum_int.fh>
125 
126 #undef MPP_CHKSUM_INT_
127 #define MPP_CHKSUM_INT_ mpp_chksum_i4_4d
128 #undef MPP_CHKSUM_INT_RMASK_
129 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i4_4d_rmask
130 #undef MPP_TYPE_
131 #define MPP_TYPE_ integer(i4_kind)
132 #undef MPP_RANK_
133 #define MPP_RANK_ (:,:,:,:)
134 #include <mpp_chksum_int.fh>
135 
136 #undef MPP_CHKSUM_INT_
137 #define MPP_CHKSUM_INT_ mpp_chksum_i4_5d
138 #undef MPP_CHKSUM_INT_RMASK_
139 #define MPP_CHKSUM_INT_RMASK_ mpp_chksum_i4_5d_rmask
140 #undef MPP_TYPE_
141 #define MPP_TYPE_ integer(i4_kind)
142 #undef MPP_RANK_
143 #define MPP_RANK_ (:,:,:,:,:)
144 #include <mpp_chksum_int.fh>
145 
146 #undef MPP_CHKSUM_
147 #define MPP_CHKSUM_ mpp_chksum_r8_0d
148 #undef MPP_TYPE_
149 #define MPP_TYPE_ real(r8_kind)
150 #undef MPP_RANK_
151 #define MPP_RANK_ !
152 #include <mpp_chksum_scalar.fh>
153 
154 #undef MPP_CHKSUM_
155 #define MPP_CHKSUM_ mpp_chksum_r8_1d
156 #undef MPP_TRANSFER_KIND_
157 #define MPP_TRANSFER_KIND_ i8_kind
158 #undef MPP_TYPE_
159 #define MPP_TYPE_ real(r8_kind)
160 #undef MPP_RANK_
161 #define MPP_RANK_ (:)
162 #include <mpp_chksum.fh>
163 
164 #undef MPP_CHKSUM_
165 #define MPP_CHKSUM_ mpp_chksum_r8_2d
166 #undef MPP_TRANSFER_KIND_
167 #define MPP_TRANSFER_KIND_ i8_kind
168 #undef MPP_TYPE_
169 #define MPP_TYPE_ real(r8_kind)
170 #undef MPP_RANK_
171 #define MPP_RANK_ (:,:)
172 #include <mpp_chksum.fh>
173 
174 #undef MPP_CHKSUM_
175 #define MPP_CHKSUM_ mpp_chksum_r8_3d
176 #undef MPP_TRANSFER_KIND_
177 #define MPP_TRANSFER_KIND_ i8_kind
178 #undef MPP_TYPE_
179 #define MPP_TYPE_ real(r8_kind)
180 #undef MPP_RANK_
181 #define MPP_RANK_ (:,:,:)
182 #include <mpp_chksum.fh>
183 
184 #undef MPP_CHKSUM_
185 #define MPP_CHKSUM_ mpp_chksum_r8_4d
186 #undef MPP_TRANSFER_KIND_
187 #define MPP_TRANSFER_KIND_ i8_kind
188 #undef MPP_TYPE_
189 #define MPP_TYPE_ real(r8_kind)
190 #undef MPP_RANK_
191 #define MPP_RANK_ (:,:,:,:)
192 #include <mpp_chksum.fh>
193 
194 #undef MPP_CHKSUM_
195 #define MPP_CHKSUM_ mpp_chksum_r8_5d
196 #undef MPP_TRANSFER_KIND_
197 #define MPP_TRANSFER_KIND_ i8_kind
198 #undef MPP_TYPE_
199 #define MPP_TYPE_ real(r8_kind)
200 #undef MPP_RANK_
201 #define MPP_RANK_ (:,:,:,:,:)
202 #include <mpp_chksum.fh>
203 
204 #ifdef OVERLOAD_C8
205 #undef MPP_CHKSUM_
206 #define MPP_CHKSUM_ mpp_chksum_c8_0d
207 #undef MPP_TRANSFER_KIND_
208 #define MPP_TRANSFER_KIND_ i8_kind
209 #undef MPP_TYPE_
210 #define MPP_TYPE_ complex(c8_kind)
211 #undef MPP_RANK_
212 #define MPP_RANK_ !
213 #include <mpp_chksum_scalar.fh>
214 
215 #undef MPP_CHKSUM_
216 #define MPP_CHKSUM_ mpp_chksum_c8_1d
217 #undef MPP_TRANSFER_KIND_
218 #define MPP_TRANSFER_KIND_ i8_kind
219 #undef MPP_TYPE_
220 #define MPP_TYPE_ complex(c8_kind)
221 #undef MPP_RANK_
222 #define MPP_RANK_ (:)
223 #include <mpp_chksum.fh>
224 
225 #undef MPP_CHKSUM_
226 #define MPP_CHKSUM_ mpp_chksum_c8_2d
227 #undef MPP_TRANSFER_KIND_
228 #define MPP_TRANSFER_KIND_ i8_kind
229 #undef MPP_TYPE_
230 #define MPP_TYPE_ complex(c8_kind)
231 #undef MPP_RANK_
232 #define MPP_RANK_ (:,:)
233 #include <mpp_chksum.fh>
234 
235 #undef MPP_CHKSUM_
236 #define MPP_CHKSUM_ mpp_chksum_c8_3d
237 #undef MPP_TRANSFER_KIND_
238 #define MPP_TRANSFER_KIND_ i8_kind
239 #undef MPP_TYPE_
240 #define MPP_TYPE_ complex(c8_kind)
241 #undef MPP_RANK_
242 #define MPP_RANK_ (:,:,:)
243 #include <mpp_chksum.fh>
244 
245 #undef MPP_CHKSUM_
246 #define MPP_CHKSUM_ mpp_chksum_c8_4d
247 #undef MPP_TRANSFER_KIND_
248 #define MPP_TRANSFER_KIND_ i8_kind
249 #undef MPP_TYPE_
250 #define MPP_TYPE_ complex(c8_kind)
251 #undef MPP_RANK_
252 #define MPP_RANK_ (:,:,:,:)
253 #include <mpp_chksum.fh>
254 
255 #undef MPP_CHKSUM_
256 #define MPP_CHKSUM_ mpp_chksum_c8_5d
257 #undef MPP_TRANSFER_KIND_
258 #define MPP_TRANSFER_KIND_ i8_kind
259 #undef MPP_TYPE_
260 #define MPP_TYPE_ complex(c8_kind)
261 #undef MPP_RANK_
262 #define MPP_RANK_ (:,:,:,:,:)
263 #include <mpp_chksum.fh>
264 #endif
265 
266 #undef MPP_CHKSUM_
267 #define MPP_CHKSUM_ mpp_chksum_r4_0d
268 #undef MPP_TRANSFER_KIND_
269 #define MPP_TRANSFER_KIND_ i4_kind
270 #undef MPP_TYPE_
271 #define MPP_TYPE_ real(r4_kind)
272 #undef MPP_RANK_
273 #define MPP_RANK_ !
274 #include <mpp_chksum_scalar.fh>
275 
276 #undef MPP_CHKSUM_
277 #define MPP_CHKSUM_ mpp_chksum_r4_1d
278 #undef MPP_TRANSFER_KIND_
279 #define MPP_TRANSFER_KIND_ i4_kind
280 #undef MPP_TYPE_
281 #define MPP_TYPE_ real(r4_kind)
282 #undef MPP_RANK_
283 #define MPP_RANK_ (:)
284 #include <mpp_chksum.fh>
285 
286 #undef MPP_CHKSUM_
287 #define MPP_CHKSUM_ mpp_chksum_r4_2d
288 #undef MPP_TRANSFER_KIND_
289 #define MPP_TRANSFER_KIND_ i4_kind
290 #undef MPP_TYPE_
291 #define MPP_TYPE_ real(r4_kind)
292 #undef MPP_RANK_
293 #define MPP_RANK_ (:,:)
294 #include <mpp_chksum.fh>
295 
296 #undef MPP_CHKSUM_
297 #define MPP_CHKSUM_ mpp_chksum_r4_3d
298 #undef MPP_TRANSFER_KIND_
299 #define MPP_TRANSFER_KIND_ i4_kind
300 #undef MPP_TYPE_
301 #define MPP_TYPE_ real(r4_kind)
302 #undef MPP_RANK_
303 #define MPP_RANK_ (:,:,:)
304 #include <mpp_chksum.fh>
305 
306 #undef MPP_CHKSUM_
307 #define MPP_CHKSUM_ mpp_chksum_r4_4d
308 #undef MPP_TRANSFER_KIND_
309 #define MPP_TRANSFER_KIND_ i4_kind
310 #undef MPP_TYPE_
311 #define MPP_TYPE_ real(r4_kind)
312 #undef MPP_RANK_
313 #define MPP_RANK_ (:,:,:,:)
314 #include <mpp_chksum.fh>
315 
316 #undef MPP_CHKSUM_
317 #define MPP_CHKSUM_ mpp_chksum_r4_5d
318 #undef MPP_TRANSFER_KIND_
319 #define MPP_TRANSFER_KIND_ i4_kind
320 #undef MPP_TYPE_
321 #define MPP_TYPE_ real(r4_kind)
322 #undef MPP_RANK_
323 #define MPP_RANK_ (:,:,:,:,:)
324 #include <mpp_chksum.fh>
325 
326 #ifdef OVERLOAD_C4
327 #undef MPP_CHKSUM_
328 #define MPP_CHKSUM_ mpp_chksum_c4_0d
329 #undef MPP_TRANSFER_KIND_
330 #define MPP_TRANSFER_KIND_ i4_kind
331 #undef MPP_TYPE_
332 #define MPP_TYPE_ complex(c4_kind)
333 #undef MPP_RANK_
334 #define MPP_RANK_ !
335 #include <mpp_chksum_scalar.fh>
336 
337 #undef MPP_CHKSUM_
338 #define MPP_CHKSUM_ mpp_chksum_c4_1d
339 #undef MPP_TRANSFER_KIND_
340 #define MPP_TRANSFER_KIND_ i4_kind
341 #undef MPP_TYPE_
342 #define MPP_TYPE_ complex(c4_kind)
343 #undef MPP_RANK_
344 #define MPP_RANK_ (:)
345 #include <mpp_chksum.fh>
346 
347 #undef MPP_CHKSUM_
348 #define MPP_CHKSUM_ mpp_chksum_c4_2d
349 #undef MPP_TRANSFER_KIND_
350 #define MPP_TRANSFER_KIND_ i4_kind
351 #undef MPP_TYPE_
352 #define MPP_TYPE_ complex(c4_kind)
353 #undef MPP_RANK_
354 #define MPP_RANK_ (:,:)
355 #include <mpp_chksum.fh>
356 
357 #undef MPP_CHKSUM_
358 #define MPP_CHKSUM_ mpp_chksum_c4_3d
359 #undef MPP_TRANSFER_KIND_
360 #define MPP_TRANSFER_KIND_ i4_kind
361 #undef MPP_TYPE_
362 #define MPP_TYPE_ complex(c4_kind)
363 #undef MPP_RANK_
364 #define MPP_RANK_ (:,:,:)
365 #include <mpp_chksum.fh>
366 
367 #undef MPP_CHKSUM_
368 #define MPP_CHKSUM_ mpp_chksum_c4_4d
369 #undef MPP_TRANSFER_KIND_
370 #define MPP_TRANSFER_KIND_ i4_kind
371 #undef MPP_TYPE_
372 #define MPP_TYPE_ complex(c4_kind)
373 #undef MPP_RANK_
374 #define MPP_RANK_ (:,:,:,:)
375 #include <mpp_chksum.fh>
376 
377 #undef MPP_CHKSUM_
378 #define MPP_CHKSUM_ mpp_chksum_c4_5d
379 #undef MPP_TRANSFER_KIND_
380 #define MPP_TRANSFER_KIND_ i4_kind
381 #undef MPP_TYPE_
382 #define MPP_TYPE_ complex(c4_kind)
383 #undef MPP_RANK_
384 #define MPP_RANK_ (:,:,:,:,:)
385 #include <mpp_chksum.fh>
386 #endif
387 
388 !#################################################
389 #undef MPP_GATHER_1D_
390 #undef MPP_GATHER_1DV_
391 #undef MPP_TYPE_
392 #define MPP_TYPE_ logical
393 #define MPP_GATHER_1D_ mpp_gather_logical_1d
394 #define MPP_GATHER_1DV_ mpp_gather_logical_1dv
395 #undef MPP_GATHER_PELIST_2D_
396 #undef MPP_GATHER_PELIST_GEN_2D_
397 #undef MPP_GATHER_PELIST_3D_
398 #undef MPP_GATHER_PELIST_GEN_3D_
399 #define MPP_GATHER_PELIST_2D_ mpp_gather_pelist_logical_2d
400 #define MPP_GATHER_PELIST_GEN_2D_ mpp_gather_pelist_logical_gen_2d
401 #define MPP_GATHER_PELIST_3D_ mpp_gather_pelist_logical_3d
402 #define MPP_GATHER_PELIST_GEN_3D_ mpp_gather_pelist_logical_gen_3d
403 #undef MPI_TYPE_
404 #define MPI_TYPE_ MPI_LOGICAL
405 #include <mpp_gather.fh>
406 
407 #undef MPP_GATHER_1D_
408 #undef MPP_GATHER_1DV_
409 #undef MPP_TYPE_
410 #define MPP_TYPE_ integer(i4_kind)
411 #define MPP_GATHER_1D_ mpp_gather_int4_1d
412 #define MPP_GATHER_1DV_ mpp_gather_int4_1dv
413 #undef MPP_GATHER_PELIST_2D_
414 #undef MPP_GATHER_PELIST_GEN_2D_
415 #undef MPP_GATHER_PELIST_3D_
416 #undef MPP_GATHER_PELIST_GEN_3D_
417 #define MPP_GATHER_PELIST_2D_ mpp_gather_pelist_int4_2d
418 #define MPP_GATHER_PELIST_GEN_2D_ mpp_gather_pelist_int4_gen_2d
419 #define MPP_GATHER_PELIST_3D_ mpp_gather_pelist_int4_3d
420 #define MPP_GATHER_PELIST_GEN_3D_ mpp_gather_pelist_int4_gen_3d
421 #undef MPI_TYPE_
422 #define MPI_TYPE_ MPI_INTEGER4
423 #include <mpp_gather.fh>
424 
425 
426 #undef MPP_GATHER_1D_
427 #undef MPP_GATHER_1DV_
428 #undef MPP_TYPE_
429 #define MPP_TYPE_ integer(i8_kind)
430 #define MPP_GATHER_1D_ mpp_gather_int8_1d
431 #define MPP_GATHER_1DV_ mpp_gather_int8_1dv
432 #undef MPP_GATHER_PELIST_2D_
433 #undef MPP_GATHER_PELIST_GEN_2D_
434 #undef MPP_GATHER_PELIST_3D_
435 #undef MPP_GATHER_PELIST_GEN_3D_
436 #define MPP_GATHER_PELIST_2D_ mpp_gather_pelist_int8_2d
437 #define MPP_GATHER_PELIST_GEN_2D_ mpp_gather_pelist_int8_gen_2d
438 #define MPP_GATHER_PELIST_3D_ mpp_gather_pelist_int8_3d
439 #define MPP_GATHER_PELIST_GEN_3D_ mpp_gather_pelist_int8_gen_3d
440 #undef MPI_TYPE_
441 #define MPI_TYPE_ MPI_INTEGER8
442 #include <mpp_gather.fh>
443 
444 
445 #undef MPP_GATHER_1D_
446 #undef MPP_GATHER_1DV_
447 #undef MPP_TYPE_
448 #define MPP_TYPE_ real(r4_kind)
449 #define MPP_GATHER_1D_ mpp_gather_real4_1d
450 #define MPP_GATHER_1DV_ mpp_gather_real4_1dv
451 #undef MPP_GATHER_PELIST_2D_
452 #undef MPP_GATHER_PELIST_GEN_2D_
453 #undef MPP_GATHER_PELIST_3D_
454 #undef MPP_GATHER_PELIST_GEN_3D_
455 #define MPP_GATHER_PELIST_2D_ mpp_gather_pelist_real4_2d
456 #define MPP_GATHER_PELIST_GEN_2D_ mpp_gather_pelist_real4_gen_2d
457 #define MPP_GATHER_PELIST_3D_ mpp_gather_pelist_real4_3d
458 #define MPP_GATHER_PELIST_GEN_3D_ mpp_gather_pelist_real4_gen_3d
459 #undef MPI_TYPE_
460 #define MPI_TYPE_ MPI_REAL4
461 #include <mpp_gather.fh>
462 
463 #undef MPP_GATHER_1D_
464 #undef MPP_GATHER_1DV_
465 #undef MPP_TYPE_
466 #define MPP_TYPE_ real(r8_kind)
467 #define MPP_GATHER_1D_ mpp_gather_real8_1d
468 #define MPP_GATHER_1DV_ mpp_gather_real8_1dv
469 #undef MPP_GATHER_PELIST_2D_
470 #undef MPP_GATHER_PELIST_GEN_2D_
471 #undef MPP_GATHER_PELIST_3D_
472 #undef MPP_GATHER_PELIST_GEN_3D_
473 #define MPP_GATHER_PELIST_2D_ mpp_gather_pelist_real8_2d
474 #define MPP_GATHER_PELIST_GEN_2D_ mpp_gather_pelist_real8_gen_2d
475 #define MPP_GATHER_PELIST_3D_ mpp_gather_pelist_real8_3d
476 #define MPP_GATHER_PELIST_GEN_3D_ mpp_gather_pelist_real8_gen_3d
477 #undef MPI_TYPE_
478 #define MPI_TYPE_ MPI_REAL8
479 #include <mpp_gather.fh>
480 
481 !#################################################
482 #undef MPP_SCATTER_PELIST_2D_
483 #undef MPP_SCATTER_PELIST_GEN_2D_
484 #undef MPP_SCATTER_PELIST_3D_
485 #undef MPP_SCATTER_PELIST_GEN_3D_
486 #undef MPP_TYPE_
487 #define MPP_TYPE_ integer(i4_kind)
488 #define MPP_SCATTER_PELIST_2D_ mpp_scatter_pelist_int4_2d
489 #define MPP_SCATTER_PELIST_GEN_2D_ mpp_scatter_pelist_int4_gen_2d
490 #define MPP_SCATTER_PELIST_3D_ mpp_scatter_pelist_int4_3d
491 #define MPP_SCATTER_PELIST_GEN_3D_ mpp_scatter_pelist_int4_gen_3d
492 #undef MPI_TYPE_
493 #define MPI_TYPE_ MPI_INTEGER4
494 #include <mpp_scatter.fh>
495 
496 #undef MPP_SCATTER_PELIST_2D_
497 #undef MPP_SCATTER_PELIST_GEN_2D_
498 #undef MPP_SCATTER_PELIST_3D_
499 #undef MPP_SCATTER_PELIST_GEN_3D_
500 #undef MPP_TYPE_
501 #define MPP_TYPE_ integer(i8_kind)
502 #define MPP_SCATTER_PELIST_2D_ mpp_scatter_pelist_int8_2d
503 #define MPP_SCATTER_PELIST_GEN_2D_ mpp_scatter_pelist_int8_gen_2d
504 #define MPP_SCATTER_PELIST_3D_ mpp_scatter_pelist_int8_3d
505 #define MPP_SCATTER_PELIST_GEN_3D_ mpp_scatter_pelist_int8_gen_3d
506 #undef MPI_TYPE_
507 #define MPI_TYPE_ MPI_INTEGER8
508 #include <mpp_scatter.fh>
509 
510 #undef MPP_SCATTER_PELIST_2D_
511 #undef MPP_SCATTER_PELIST_GEN_2D_
512 #undef MPP_SCATTER_PELIST_3D_
513 #undef MPP_SCATTER_PELIST_GEN_3D_
514 #undef MPP_TYPE_
515 #define MPP_TYPE_ real(r4_kind)
516 #define MPP_SCATTER_PELIST_2D_ mpp_scatter_pelist_real4_2d
517 #define MPP_SCATTER_PELIST_GEN_2D_ mpp_scatter_pelist_real4_gen_2d
518 #define MPP_SCATTER_PELIST_3D_ mpp_scatter_pelist_real4_3d
519 #define MPP_SCATTER_PELIST_GEN_3D_ mpp_scatter_pelist_real4_gen_3d
520 #undef MPI_TYPE_
521 #define MPI_TYPE_ MPI_REAL4
522 #include <mpp_scatter.fh>
523 
524 #undef MPP_SCATTER_PELIST_2D_
525 #undef MPP_SCATTER_PELIST_GEN_2D_
526 #undef MPP_SCATTER_PELIST_3D_
527 #undef MPP_SCATTER_PELIST_GEN_3D_
528 #undef MPP_TYPE_
529 #define MPP_TYPE_ real(r8_kind)
530 #define MPP_SCATTER_PELIST_2D_ mpp_scatter_pelist_real8_2d
531 #define MPP_SCATTER_PELIST_GEN_2D_ mpp_scatter_pelist_real8_gen_2d
532 #define MPP_SCATTER_PELIST_3D_ mpp_scatter_pelist_real8_3d
533 #define MPP_SCATTER_PELIST_GEN_3D_ mpp_scatter_pelist_real8_gen_3d
534 #undef MPI_TYPE_
535 #define MPI_TYPE_ MPI_REAL8
536 #include <mpp_scatter.fh>
537 !> @}
subroutine mpp_init_legacy(flags, localcomm, test_level, alt_input_nml_path)
Definition: mpp_comm.inc:28
subroutine mpp_init_f08(flags, localcomm, test_level, alt_input_nml_path)
Initialize the mpp_mod module. Must be called before any usage.