28 integer,
optional,
intent(in) :: flags
29 integer,
intent(in) :: localcomm
31 integer,
optional,
intent(in) :: test_level
33 character(len=*),
optional,
intent(in) :: alt_input_nml_path
34 type(mpi_comm) :: comm
36 comm%mpi_val = localcomm
37 call mpp_init_f08(flags, comm, test_level, alt_input_nml_path)
40 #if defined(use_libMPI)
41 #include <mpp_comm_mpi.inc>
43 #include <mpp_comm_nocomm.inc>
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
51 #define MPP_TYPE_ integer(i8_kind)
54 #include <mpp_chksum_int.fh>
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
61 #define MPP_TYPE_ integer(i8_kind)
63 #define MPP_RANK_ (:,:)
64 #include <mpp_chksum_int.fh>
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
71 #define MPP_TYPE_ integer(i8_kind)
73 #define MPP_RANK_ (:,:,:)
74 #include <mpp_chksum_int.fh>
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
81 #define MPP_TYPE_ integer(i8_kind)
83 #define MPP_RANK_ (:,:,:,:)
84 #include <mpp_chksum_int.fh>
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
91 #define MPP_TYPE_ integer(i8_kind)
93 #define MPP_RANK_ (:,:,:,:,:)
94 #include <mpp_chksum_int.fh>
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
101 #define MPP_TYPE_ integer(i4_kind)
103 #define MPP_RANK_ (:)
104 #include <mpp_chksum_int.fh>
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
111 #define MPP_TYPE_ integer(i4_kind)
113 #define MPP_RANK_ (:,:)
114 #include <mpp_chksum_int.fh>
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
121 #define MPP_TYPE_ integer(i4_kind)
123 #define MPP_RANK_ (:,:,:)
124 #include <mpp_chksum_int.fh>
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
131 #define MPP_TYPE_ integer(i4_kind)
133 #define MPP_RANK_ (:,:,:,:)
134 #include <mpp_chksum_int.fh>
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
141 #define MPP_TYPE_ integer(i4_kind)
143 #define MPP_RANK_ (:,:,:,:,:)
144 #include <mpp_chksum_int.fh>
147 #define MPP_CHKSUM_ mpp_chksum_r8_0d
149 #define MPP_TYPE_ real(r8_kind)
152 #include <mpp_chksum_scalar.fh>
155 #define MPP_CHKSUM_ mpp_chksum_r8_1d
156 #undef MPP_TRANSFER_KIND_
157 #define MPP_TRANSFER_KIND_ i8_kind
159 #define MPP_TYPE_ real(r8_kind)
161 #define MPP_RANK_ (:)
162 #include <mpp_chksum.fh>
165 #define MPP_CHKSUM_ mpp_chksum_r8_2d
166 #undef MPP_TRANSFER_KIND_
167 #define MPP_TRANSFER_KIND_ i8_kind
169 #define MPP_TYPE_ real(r8_kind)
171 #define MPP_RANK_ (:,:)
172 #include <mpp_chksum.fh>
175 #define MPP_CHKSUM_ mpp_chksum_r8_3d
176 #undef MPP_TRANSFER_KIND_
177 #define MPP_TRANSFER_KIND_ i8_kind
179 #define MPP_TYPE_ real(r8_kind)
181 #define MPP_RANK_ (:,:,:)
182 #include <mpp_chksum.fh>
185 #define MPP_CHKSUM_ mpp_chksum_r8_4d
186 #undef MPP_TRANSFER_KIND_
187 #define MPP_TRANSFER_KIND_ i8_kind
189 #define MPP_TYPE_ real(r8_kind)
191 #define MPP_RANK_ (:,:,:,:)
192 #include <mpp_chksum.fh>
195 #define MPP_CHKSUM_ mpp_chksum_r8_5d
196 #undef MPP_TRANSFER_KIND_
197 #define MPP_TRANSFER_KIND_ i8_kind
199 #define MPP_TYPE_ real(r8_kind)
201 #define MPP_RANK_ (:,:,:,:,:)
202 #include <mpp_chksum.fh>
206 #define MPP_CHKSUM_ mpp_chksum_c8_0d
207 #undef MPP_TRANSFER_KIND_
208 #define MPP_TRANSFER_KIND_ i8_kind
210 #define MPP_TYPE_ complex(c8_kind)
213 #include <mpp_chksum_scalar.fh>
216 #define MPP_CHKSUM_ mpp_chksum_c8_1d
217 #undef MPP_TRANSFER_KIND_
218 #define MPP_TRANSFER_KIND_ i8_kind
220 #define MPP_TYPE_ complex(c8_kind)
222 #define MPP_RANK_ (:)
223 #include <mpp_chksum.fh>
226 #define MPP_CHKSUM_ mpp_chksum_c8_2d
227 #undef MPP_TRANSFER_KIND_
228 #define MPP_TRANSFER_KIND_ i8_kind
230 #define MPP_TYPE_ complex(c8_kind)
232 #define MPP_RANK_ (:,:)
233 #include <mpp_chksum.fh>
236 #define MPP_CHKSUM_ mpp_chksum_c8_3d
237 #undef MPP_TRANSFER_KIND_
238 #define MPP_TRANSFER_KIND_ i8_kind
240 #define MPP_TYPE_ complex(c8_kind)
242 #define MPP_RANK_ (:,:,:)
243 #include <mpp_chksum.fh>
246 #define MPP_CHKSUM_ mpp_chksum_c8_4d
247 #undef MPP_TRANSFER_KIND_
248 #define MPP_TRANSFER_KIND_ i8_kind
250 #define MPP_TYPE_ complex(c8_kind)
252 #define MPP_RANK_ (:,:,:,:)
253 #include <mpp_chksum.fh>
256 #define MPP_CHKSUM_ mpp_chksum_c8_5d
257 #undef MPP_TRANSFER_KIND_
258 #define MPP_TRANSFER_KIND_ i8_kind
260 #define MPP_TYPE_ complex(c8_kind)
262 #define MPP_RANK_ (:,:,:,:,:)
263 #include <mpp_chksum.fh>
267 #define MPP_CHKSUM_ mpp_chksum_r4_0d
268 #undef MPP_TRANSFER_KIND_
269 #define MPP_TRANSFER_KIND_ i4_kind
271 #define MPP_TYPE_ real(r4_kind)
274 #include <mpp_chksum_scalar.fh>
277 #define MPP_CHKSUM_ mpp_chksum_r4_1d
278 #undef MPP_TRANSFER_KIND_
279 #define MPP_TRANSFER_KIND_ i4_kind
281 #define MPP_TYPE_ real(r4_kind)
283 #define MPP_RANK_ (:)
284 #include <mpp_chksum.fh>
287 #define MPP_CHKSUM_ mpp_chksum_r4_2d
288 #undef MPP_TRANSFER_KIND_
289 #define MPP_TRANSFER_KIND_ i4_kind
291 #define MPP_TYPE_ real(r4_kind)
293 #define MPP_RANK_ (:,:)
294 #include <mpp_chksum.fh>
297 #define MPP_CHKSUM_ mpp_chksum_r4_3d
298 #undef MPP_TRANSFER_KIND_
299 #define MPP_TRANSFER_KIND_ i4_kind
301 #define MPP_TYPE_ real(r4_kind)
303 #define MPP_RANK_ (:,:,:)
304 #include <mpp_chksum.fh>
307 #define MPP_CHKSUM_ mpp_chksum_r4_4d
308 #undef MPP_TRANSFER_KIND_
309 #define MPP_TRANSFER_KIND_ i4_kind
311 #define MPP_TYPE_ real(r4_kind)
313 #define MPP_RANK_ (:,:,:,:)
314 #include <mpp_chksum.fh>
317 #define MPP_CHKSUM_ mpp_chksum_r4_5d
318 #undef MPP_TRANSFER_KIND_
319 #define MPP_TRANSFER_KIND_ i4_kind
321 #define MPP_TYPE_ real(r4_kind)
323 #define MPP_RANK_ (:,:,:,:,:)
324 #include <mpp_chksum.fh>
328 #define MPP_CHKSUM_ mpp_chksum_c4_0d
329 #undef MPP_TRANSFER_KIND_
330 #define MPP_TRANSFER_KIND_ i4_kind
332 #define MPP_TYPE_ complex(c4_kind)
335 #include <mpp_chksum_scalar.fh>
338 #define MPP_CHKSUM_ mpp_chksum_c4_1d
339 #undef MPP_TRANSFER_KIND_
340 #define MPP_TRANSFER_KIND_ i4_kind
342 #define MPP_TYPE_ complex(c4_kind)
344 #define MPP_RANK_ (:)
345 #include <mpp_chksum.fh>
348 #define MPP_CHKSUM_ mpp_chksum_c4_2d
349 #undef MPP_TRANSFER_KIND_
350 #define MPP_TRANSFER_KIND_ i4_kind
352 #define MPP_TYPE_ complex(c4_kind)
354 #define MPP_RANK_ (:,:)
355 #include <mpp_chksum.fh>
358 #define MPP_CHKSUM_ mpp_chksum_c4_3d
359 #undef MPP_TRANSFER_KIND_
360 #define MPP_TRANSFER_KIND_ i4_kind
362 #define MPP_TYPE_ complex(c4_kind)
364 #define MPP_RANK_ (:,:,:)
365 #include <mpp_chksum.fh>
368 #define MPP_CHKSUM_ mpp_chksum_c4_4d
369 #undef MPP_TRANSFER_KIND_
370 #define MPP_TRANSFER_KIND_ i4_kind
372 #define MPP_TYPE_ complex(c4_kind)
374 #define MPP_RANK_ (:,:,:,:)
375 #include <mpp_chksum.fh>
378 #define MPP_CHKSUM_ mpp_chksum_c4_5d
379 #undef MPP_TRANSFER_KIND_
380 #define MPP_TRANSFER_KIND_ i4_kind
382 #define MPP_TYPE_ complex(c4_kind)
384 #define MPP_RANK_ (:,:,:,:,:)
385 #include <mpp_chksum.fh>
389 #undef MPP_GATHER_1D_
390 #undef MPP_GATHER_1DV_
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
404 #define MPI_TYPE_ MPI_LOGICAL
405 #include <mpp_gather.fh>
407 #undef MPP_GATHER_1D_
408 #undef MPP_GATHER_1DV_
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
422 #define MPI_TYPE_ MPI_INTEGER4
423 #include <mpp_gather.fh>
426 #undef MPP_GATHER_1D_
427 #undef MPP_GATHER_1DV_
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
441 #define MPI_TYPE_ MPI_INTEGER8
442 #include <mpp_gather.fh>
445 #undef MPP_GATHER_1D_
446 #undef MPP_GATHER_1DV_
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
460 #define MPI_TYPE_ MPI_REAL4
461 #include <mpp_gather.fh>
463 #undef MPP_GATHER_1D_
464 #undef MPP_GATHER_1DV_
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
478 #define MPI_TYPE_ MPI_REAL8
479 #include <mpp_gather.fh>
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_
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
493 #define MPI_TYPE_ MPI_INTEGER4
494 #include <mpp_scatter.fh>
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_
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
507 #define MPI_TYPE_ MPI_INTEGER8
508 #include <mpp_scatter.fh>
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_
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
521 #define MPI_TYPE_ MPI_REAL4
522 #include <mpp_scatter.fh>
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_
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
535 #define MPI_TYPE_ MPI_REAL8
536 #include <mpp_scatter.fh>
subroutine mpp_init_legacy(flags, localcomm, test_level, alt_input_nml_path)
subroutine mpp_init_f08(flags, localcomm, test_level, alt_input_nml_path)
Initialize the mpp_mod module. Must be called before any usage.