FMS  2024.03
Flexible Modeling System
mpp_domains_reduce.inc
1 ! -*-f90-*-
2 
3 !***********************************************************************
4 !* GNU Lesser General Public License
5 !*
6 !* This file is part of the GFDL Flexible Modeling System (FMS).
7 !*
8 !* FMS is free software: you can redistribute it and/or modify it under
9 !* the terms of the GNU Lesser General Public License as published by
10 !* the Free Software Foundation, either version 3 of the License, or (at
11 !* your option) any later version.
12 !*
13 !* FMS is distributed in the hope that it will be useful, but WITHOUT
14 !* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 !* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 !* for more details.
17 !*
18 !* You should have received a copy of the GNU Lesser General Public
19 !* License along with FMS. If not, see <http://www.gnu.org/licenses/>.
20 !***********************************************************************
21 !> @file
22 !> @brief Routines for calculating data from distributed arrays
23 
24 !> @addtogroup mpp_domains_mod
25 !> @{
26 
27 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28 ! !
29 ! MPP_GLOBAL_REDUCE: get global max/min of field !
30 ! !
31 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
32 
33 #undef MPP_GLOBAL_REDUCE_2D_
34 #define MPP_GLOBAL_REDUCE_2D_ mpp_global_max_r8_2d
35 #undef MPP_GLOBAL_REDUCE_3D_
36 #define MPP_GLOBAL_REDUCE_3D_ mpp_global_max_r8_3d
37 #undef MPP_GLOBAL_REDUCE_4D_
38 #define MPP_GLOBAL_REDUCE_4D_ mpp_global_max_r8_4d
39 #undef MPP_GLOBAL_REDUCE_5D_
40 #define MPP_GLOBAL_REDUCE_5D_ mpp_global_max_r8_5d
41 #undef MPP_TYPE_
42 #define MPP_TYPE_ real(r8_kind)
43 #undef REDUCE_VAL_
44 #define REDUCE_VAL_ maxval
45 #undef REDUCE_LOC_
46 #define REDUCE_LOC_ maxloc
47 #undef MPP_REDUCE_
48 #define MPP_REDUCE_ mpp_max
49 #include <mpp_global_reduce.fh>
50 
51 #undef MPP_GLOBAL_REDUCE_2D_
52 #define MPP_GLOBAL_REDUCE_2D_ mpp_global_min_r8_2d
53 #undef MPP_GLOBAL_REDUCE_3D_
54 #define MPP_GLOBAL_REDUCE_3D_ mpp_global_min_r8_3d
55 #undef MPP_GLOBAL_REDUCE_4D_
56 #define MPP_GLOBAL_REDUCE_4D_ mpp_global_min_r8_4d
57 #undef MPP_GLOBAL_REDUCE_5D_
58 #define MPP_GLOBAL_REDUCE_5D_ mpp_global_min_r8_5d
59 #undef MPP_TYPE_
60 #define MPP_TYPE_ real(r8_kind)
61 #undef REDUCE_VAL_
62 #define REDUCE_VAL_ minval
63 #undef REDUCE_LOC_
64 #define REDUCE_LOC_ minloc
65 #undef MPP_REDUCE_
66 #define MPP_REDUCE_ mpp_min
67 #include <mpp_global_reduce.fh>
68 
69 #undef MPP_GLOBAL_REDUCE_2D_
70 #define MPP_GLOBAL_REDUCE_2D_ mpp_global_max_r4_2d
71 #undef MPP_GLOBAL_REDUCE_3D_
72 #define MPP_GLOBAL_REDUCE_3D_ mpp_global_max_r4_3d
73 #undef MPP_GLOBAL_REDUCE_4D_
74 #define MPP_GLOBAL_REDUCE_4D_ mpp_global_max_r4_4d
75 #undef MPP_GLOBAL_REDUCE_5D_
76 #define MPP_GLOBAL_REDUCE_5D_ mpp_global_max_r4_5d
77 #undef MPP_TYPE_
78 #define MPP_TYPE_ real(r4_kind)
79 #undef REDUCE_VAL_
80 #define REDUCE_VAL_ maxval
81 #undef REDUCE_LOC_
82 #define REDUCE_LOC_ maxloc
83 #undef MPP_REDUCE_
84 #define MPP_REDUCE_ mpp_max
85 #include <mpp_global_reduce.fh>
86 
87 #undef MPP_GLOBAL_REDUCE_2D_
88 #define MPP_GLOBAL_REDUCE_2D_ mpp_global_min_r4_2d
89 #undef MPP_GLOBAL_REDUCE_3D_
90 #define MPP_GLOBAL_REDUCE_3D_ mpp_global_min_r4_3d
91 #undef MPP_GLOBAL_REDUCE_4D_
92 #define MPP_GLOBAL_REDUCE_4D_ mpp_global_min_r4_4d
93 #undef MPP_GLOBAL_REDUCE_5D_
94 #define MPP_GLOBAL_REDUCE_5D_ mpp_global_min_r4_5d
95 #undef MPP_TYPE_
96 #define MPP_TYPE_ real(r4_kind)
97 #undef REDUCE_VAL_
98 #define REDUCE_VAL_ minval
99 #undef REDUCE_LOC_
100 #define REDUCE_LOC_ minloc
101 #undef MPP_REDUCE_
102 #define MPP_REDUCE_ mpp_min
103 #include <mpp_global_reduce.fh>
104 
105 #undef MPP_GLOBAL_REDUCE_2D_
106 #define MPP_GLOBAL_REDUCE_2D_ mpp_global_max_i8_2d
107 #undef MPP_GLOBAL_REDUCE_3D_
108 #define MPP_GLOBAL_REDUCE_3D_ mpp_global_max_i8_3d
109 #undef MPP_GLOBAL_REDUCE_4D_
110 #define MPP_GLOBAL_REDUCE_4D_ mpp_global_max_i8_4d
111 #undef MPP_GLOBAL_REDUCE_5D_
112 #define MPP_GLOBAL_REDUCE_5D_ mpp_global_max_i8_5d
113 #undef MPP_TYPE_
114 #define MPP_TYPE_ integer(i8_kind)
115 #undef REDUCE_VAL_
116 #define REDUCE_VAL_ maxval
117 #undef REDUCE_LOC_
118 #define REDUCE_LOC_ maxloc
119 #undef MPP_REDUCE_
120 #define MPP_REDUCE_ mpp_max
121 #include <mpp_global_reduce.fh>
122 
123 #undef MPP_GLOBAL_REDUCE_2D_
124 #define MPP_GLOBAL_REDUCE_2D_ mpp_global_min_i8_2d
125 #undef MPP_GLOBAL_REDUCE_3D_
126 #define MPP_GLOBAL_REDUCE_3D_ mpp_global_min_i8_3d
127 #undef MPP_GLOBAL_REDUCE_4D_
128 #define MPP_GLOBAL_REDUCE_4D_ mpp_global_min_i8_4d
129 #undef MPP_GLOBAL_REDUCE_5D_
130 #define MPP_GLOBAL_REDUCE_5D_ mpp_global_min_i8_5d
131 #undef MPP_TYPE_
132 #define MPP_TYPE_ integer(i8_kind)
133 #undef REDUCE_VAL_
134 #define REDUCE_VAL_ minval
135 #undef REDUCE_LOC_
136 #define REDUCE_LOC_ minloc
137 #undef MPP_REDUCE_
138 #define MPP_REDUCE_ mpp_min
139 #include <mpp_global_reduce.fh>
140 
141 #undef MPP_GLOBAL_REDUCE_2D_
142 #define MPP_GLOBAL_REDUCE_2D_ mpp_global_max_i4_2d
143 #undef MPP_GLOBAL_REDUCE_3D_
144 #define MPP_GLOBAL_REDUCE_3D_ mpp_global_max_i4_3d
145 #undef MPP_GLOBAL_REDUCE_4D_
146 #define MPP_GLOBAL_REDUCE_4D_ mpp_global_max_i4_4d
147 #undef MPP_GLOBAL_REDUCE_5D_
148 #define MPP_GLOBAL_REDUCE_5D_ mpp_global_max_i4_5d
149 #undef MPP_TYPE_
150 #define MPP_TYPE_ integer(i4_kind)
151 #undef REDUCE_VAL_
152 #define REDUCE_VAL_ maxval
153 #undef REDUCE_LOC_
154 #define REDUCE_LOC_ maxloc
155 #undef MPP_REDUCE_
156 #define MPP_REDUCE_ mpp_max
157 #include <mpp_global_reduce.fh>
158 
159 #undef MPP_GLOBAL_REDUCE_2D_
160 #define MPP_GLOBAL_REDUCE_2D_ mpp_global_min_i4_2d
161 #undef MPP_GLOBAL_REDUCE_3D_
162 #define MPP_GLOBAL_REDUCE_3D_ mpp_global_min_i4_3d
163 #undef MPP_GLOBAL_REDUCE_4D_
164 #define MPP_GLOBAL_REDUCE_4D_ mpp_global_min_i4_4d
165 #undef MPP_GLOBAL_REDUCE_5D_
166 #define MPP_GLOBAL_REDUCE_5D_ mpp_global_min_i4_5d
167 #undef MPP_TYPE_
168 #define MPP_TYPE_ integer(i4_kind)
169 #undef REDUCE_VAL_
170 #define REDUCE_VAL_ minval
171 #undef REDUCE_LOC_
172 #define REDUCE_LOC_ minloc
173 #undef MPP_REDUCE_
174 #define MPP_REDUCE_ mpp_min
175 #include <mpp_global_reduce.fh>
176 
177 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
178 ! !
179 ! MPP_GLOBAL_SUM: global sum of field !
180 ! !
181 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
182 #define DO_EFP_SUM_
183 #undef MPP_GLOBAL_SUM_
184 #define MPP_GLOBAL_SUM_ mpp_global_sum_r8_2d
185 #undef MPP_EXTRA_INDICES_
186 #define MPP_EXTRA_INDICES_
187 #undef MPP_TYPE_
188 #define MPP_TYPE_ real(r8_kind)
189 #include <mpp_global_sum.fh>
190 
191 #undef MPP_GLOBAL_SUM_
192 #define MPP_GLOBAL_SUM_ mpp_global_sum_r8_3d
193 #undef MPP_EXTRA_INDICES_
194 #define MPP_EXTRA_INDICES_ ,:
195 #undef MPP_TYPE_
196 #define MPP_TYPE_ real(r8_kind)
197 #include <mpp_global_sum.fh>
198 
199 #undef MPP_GLOBAL_SUM_
200 #define MPP_GLOBAL_SUM_ mpp_global_sum_r8_4d
201 #undef MPP_EXTRA_INDICES_
202 #define MPP_EXTRA_INDICES_ ,:,:
203 #undef MPP_TYPE_
204 #define MPP_TYPE_ real(r8_kind)
205 #include <mpp_global_sum.fh>
206 
207 #undef MPP_GLOBAL_SUM_
208 #define MPP_GLOBAL_SUM_ mpp_global_sum_r8_5d
209 #undef MPP_EXTRA_INDICES_
210 #define MPP_EXTRA_INDICES_ ,:,:,:
211 #undef MPP_TYPE_
212 #define MPP_TYPE_ real(r8_kind)
213 #include <mpp_global_sum.fh>
214 
215 #undef MPP_GLOBAL_SUM_
216 #define MPP_GLOBAL_SUM_ mpp_global_sum_r4_2d
217 #undef MPP_EXTRA_INDICES_
218 #define MPP_EXTRA_INDICES_
219 #undef MPP_TYPE_
220 #define MPP_TYPE_ real(r4_kind)
221 #include <mpp_global_sum.fh>
222 
223 #undef MPP_GLOBAL_SUM_
224 #define MPP_GLOBAL_SUM_ mpp_global_sum_r4_3d
225 #undef MPP_EXTRA_INDICES_
226 #define MPP_EXTRA_INDICES_ ,:
227 #undef MPP_TYPE_
228 #define MPP_TYPE_ real(r4_kind)
229 #include <mpp_global_sum.fh>
230 
231 #undef MPP_GLOBAL_SUM_
232 #define MPP_GLOBAL_SUM_ mpp_global_sum_r4_4d
233 #undef MPP_EXTRA_INDICES_
234 #define MPP_EXTRA_INDICES_ ,:,:
235 #undef MPP_TYPE_
236 #define MPP_TYPE_ real(r4_kind)
237 #include <mpp_global_sum.fh>
238 
239 #undef MPP_GLOBAL_SUM_
240 #define MPP_GLOBAL_SUM_ mpp_global_sum_r4_5d
241 #undef MPP_EXTRA_INDICES_
242 #define MPP_EXTRA_INDICES_ ,:,:,:
243 #undef MPP_TYPE_
244 #define MPP_TYPE_ real(r4_kind)
245 #include <mpp_global_sum.fh>
246 
247 #undef DO_EFP_SUM_
248 
249 #ifdef OVERLOAD_C4
250 #undef MPP_GLOBAL_SUM_
251 #define MPP_GLOBAL_SUM_ mpp_global_sum_c4_2d
252 #undef MPP_EXTRA_INDICES_
253 #define MPP_EXTRA_INDICES_
254 #undef MPP_TYPE_
255 #define MPP_TYPE_ complex(c4_kind)
256 #include <mpp_global_sum.fh>
257 
258 #undef MPP_GLOBAL_SUM_
259 #define MPP_GLOBAL_SUM_ mpp_global_sum_c4_3d
260 #undef MPP_EXTRA_INDICES_
261 #define MPP_EXTRA_INDICES_ ,:
262 #undef MPP_TYPE_
263 #define MPP_TYPE_ complex(c4_kind)
264 #include <mpp_global_sum.fh>
265 
266 #undef MPP_GLOBAL_SUM_
267 #define MPP_GLOBAL_SUM_ mpp_global_sum_c4_4d
268 #undef MPP_EXTRA_INDICES_
269 #define MPP_EXTRA_INDICES_ ,:,:
270 #undef MPP_TYPE_
271 #define MPP_TYPE_ complex(c4_kind)
272 #include <mpp_global_sum.fh>
273 
274 #undef MPP_GLOBAL_SUM_
275 #define MPP_GLOBAL_SUM_ mpp_global_sum_c4_5d
276 #undef MPP_EXTRA_INDICES_
277 #define MPP_EXTRA_INDICES_ ,:,:,:
278 #undef MPP_TYPE_
279 #define MPP_TYPE_ complex(c4_kind)
280 #include <mpp_global_sum.fh>
281 #endif
282 
283 #ifdef OVERLOAD_C8
284 #undef MPP_GLOBAL_SUM_
285 #define MPP_GLOBAL_SUM_ mpp_global_sum_c8_2d
286 #undef MPP_EXTRA_INDICES_
287 #define MPP_EXTRA_INDICES_
288 #undef MPP_TYPE_
289 #define MPP_TYPE_ complex(c8_kind)
290 #include <mpp_global_sum.fh>
291 
292 #undef MPP_GLOBAL_SUM_
293 #define MPP_GLOBAL_SUM_ mpp_global_sum_c8_3d
294 #undef MPP_EXTRA_INDICES_
295 #define MPP_EXTRA_INDICES_ ,:
296 #undef MPP_TYPE_
297 #define MPP_TYPE_ complex(c8_kind)
298 #include <mpp_global_sum.fh>
299 
300 #undef MPP_GLOBAL_SUM_
301 #define MPP_GLOBAL_SUM_ mpp_global_sum_c8_4d
302 #undef MPP_EXTRA_INDICES_
303 #define MPP_EXTRA_INDICES_ ,:,:
304 #undef MPP_TYPE_
305 #define MPP_TYPE_ complex(c8_kind)
306 #include <mpp_global_sum.fh>
307 
308 #undef MPP_GLOBAL_SUM_
309 #define MPP_GLOBAL_SUM_ mpp_global_sum_c8_5d
310 #undef MPP_EXTRA_INDICES_
311 #define MPP_EXTRA_INDICES_ ,:,:,:
312 #undef MPP_TYPE_
313 #define MPP_TYPE_ complex(c8_kind)
314 #include <mpp_global_sum.fh>
315 #endif
316 
317 #undef MPP_GLOBAL_SUM_
318 #define MPP_GLOBAL_SUM_ mpp_global_sum_i8_2d
319 #undef MPP_EXTRA_INDICES_
320 #define MPP_EXTRA_INDICES_
321 #undef MPP_TYPE_
322 #define MPP_TYPE_ integer(i8_kind)
323 #include <mpp_global_sum.fh>
324 
325 #undef MPP_GLOBAL_SUM_
326 #define MPP_GLOBAL_SUM_ mpp_global_sum_i8_3d
327 #undef MPP_EXTRA_INDICES_
328 #define MPP_EXTRA_INDICES_ ,:
329 #undef MPP_TYPE_
330 #define MPP_TYPE_ integer(i8_kind)
331 #include <mpp_global_sum.fh>
332 
333 #undef MPP_GLOBAL_SUM_
334 #define MPP_GLOBAL_SUM_ mpp_global_sum_i8_4d
335 #undef MPP_EXTRA_INDICES_
336 #define MPP_EXTRA_INDICES_ ,:,:
337 #undef MPP_TYPE_
338 #define MPP_TYPE_ integer(i8_kind)
339 #include <mpp_global_sum.fh>
340 
341 #undef MPP_GLOBAL_SUM_
342 #define MPP_GLOBAL_SUM_ mpp_global_sum_i8_5d
343 #undef MPP_EXTRA_INDICES_
344 #define MPP_EXTRA_INDICES_ ,:,:,:
345 #undef MPP_TYPE_
346 #define MPP_TYPE_ integer(i8_kind)
347 #include <mpp_global_sum.fh>
348 
349 #undef MPP_GLOBAL_SUM_
350 #define MPP_GLOBAL_SUM_ mpp_global_sum_i4_2d
351 #undef MPP_EXTRA_INDICES_
352 #define MPP_EXTRA_INDICES_
353 #undef MPP_TYPE_
354 #define MPP_TYPE_ integer(i4_kind)
355 #include <mpp_global_sum.fh>
356 
357 #undef MPP_GLOBAL_SUM_
358 #define MPP_GLOBAL_SUM_ mpp_global_sum_i4_3d
359 #undef MPP_EXTRA_INDICES_
360 #define MPP_EXTRA_INDICES_ ,:
361 #undef MPP_TYPE_
362 #define MPP_TYPE_ integer(i4_kind)
363 #include <mpp_global_sum.fh>
364 
365 #undef MPP_GLOBAL_SUM_
366 #define MPP_GLOBAL_SUM_ mpp_global_sum_i4_4d
367 #undef MPP_EXTRA_INDICES_
368 #define MPP_EXTRA_INDICES_ ,:,:
369 #undef MPP_TYPE_
370 #define MPP_TYPE_ integer(i4_kind)
371 #include <mpp_global_sum.fh>
372 
373 #undef MPP_GLOBAL_SUM_
374 #define MPP_GLOBAL_SUM_ mpp_global_sum_i4_5d
375 #undef MPP_EXTRA_INDICES_
376 #define MPP_EXTRA_INDICES_ ,:,:,:
377 #undef MPP_TYPE_
378 #define MPP_TYPE_ integer(i4_kind)
379 #include <mpp_global_sum.fh>
380 
381 
382 !gag
383 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
384 ! !
385 ! MPP_GLOBAL_SUM_TL: global sum of forward and tangent-linear fields !
386 ! !
387 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
388 
389 #undef MPP_GLOBAL_SUM_TL_
390 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_r8_2d
391 #undef MPP_EXTRA_INDICES_
392 #define MPP_EXTRA_INDICES_
393 #undef MPP_TYPE_
394 #define MPP_TYPE_ real(r8_kind)
395 #include <mpp_global_sum_tl.fh>
396 
397 #undef MPP_GLOBAL_SUM_TL_
398 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_r8_3d
399 #undef MPP_EXTRA_INDICES_
400 #define MPP_EXTRA_INDICES_ ,:
401 #undef MPP_TYPE_
402 #define MPP_TYPE_ real(r8_kind)
403 #include <mpp_global_sum_tl.fh>
404 
405 #undef MPP_GLOBAL_SUM_TL_
406 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_r8_4d
407 #undef MPP_EXTRA_INDICES_
408 #define MPP_EXTRA_INDICES_ ,:,:
409 #undef MPP_TYPE_
410 #define MPP_TYPE_ real(r8_kind)
411 #include <mpp_global_sum_tl.fh>
412 
413 #undef MPP_GLOBAL_SUM_TL_
414 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_r8_5d
415 #undef MPP_EXTRA_INDICES_
416 #define MPP_EXTRA_INDICES_ ,:,:,:
417 #undef MPP_TYPE_
418 #define MPP_TYPE_ real(r8_kind)
419 #include <mpp_global_sum_tl.fh>
420 
421 #ifdef OVERLOAD_C8
422 #undef MPP_GLOBAL_SUM_TL_
423 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_c8_2d
424 #undef MPP_EXTRA_INDICES_
425 #define MPP_EXTRA_INDICES_
426 #undef MPP_TYPE_
427 #define MPP_TYPE_ complex(c8_kind)
428 #include <mpp_global_sum_tl.fh>
429 
430 #undef MPP_GLOBAL_SUM_TL_
431 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_c8_3d
432 #undef MPP_EXTRA_INDICES_
433 #define MPP_EXTRA_INDICES_ ,:
434 #undef MPP_TYPE_
435 #define MPP_TYPE_ complex(c8_kind)
436 #include <mpp_global_sum_tl.fh>
437 
438 #undef MPP_GLOBAL_SUM_TL_
439 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_c8_4d
440 #undef MPP_EXTRA_INDICES_
441 #define MPP_EXTRA_INDICES_ ,:,:
442 #undef MPP_TYPE_
443 #define MPP_TYPE_ complex(c8_kind)
444 #include <mpp_global_sum_tl.fh>
445 
446 #undef MPP_GLOBAL_SUM_TL_
447 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_c8_5d
448 #undef MPP_EXTRA_INDICES_
449 #define MPP_EXTRA_INDICES_ ,:,:,:
450 #undef MPP_TYPE_
451 #define MPP_TYPE_ complex(c8_kind)
452 #include <mpp_global_sum_tl.fh>
453 #endif
454 
455 #undef MPP_GLOBAL_SUM_TL_
456 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_r4_2d
457 #undef MPP_EXTRA_INDICES_
458 #define MPP_EXTRA_INDICES_
459 #undef MPP_TYPE_
460 #define MPP_TYPE_ real(r4_kind)
461 #include <mpp_global_sum_tl.fh>
462 
463 #undef MPP_GLOBAL_SUM_TL_
464 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_r4_3d
465 #undef MPP_EXTRA_INDICES_
466 #define MPP_EXTRA_INDICES_ ,:
467 #undef MPP_TYPE_
468 #define MPP_TYPE_ real(r4_kind)
469 #include <mpp_global_sum_tl.fh>
470 
471 #undef MPP_GLOBAL_SUM_TL_
472 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_r4_4d
473 #undef MPP_EXTRA_INDICES_
474 #define MPP_EXTRA_INDICES_ ,:,:
475 #undef MPP_TYPE_
476 #define MPP_TYPE_ real(r4_kind)
477 #include <mpp_global_sum_tl.fh>
478 
479 #undef MPP_GLOBAL_SUM_TL_
480 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_r4_5d
481 #undef MPP_EXTRA_INDICES_
482 #define MPP_EXTRA_INDICES_ ,:,:,:
483 #undef MPP_TYPE_
484 #define MPP_TYPE_ real(r4_kind)
485 #include <mpp_global_sum_tl.fh>
486 
487 #ifdef OVERLOAD_C4
488 #undef MPP_GLOBAL_SUM_TL_
489 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_c4_2d
490 #undef MPP_EXTRA_INDICES_
491 #define MPP_EXTRA_INDICES_
492 #undef MPP_TYPE_
493 #define MPP_TYPE_ complex(c4_kind)
494 #include <mpp_global_sum_tl.fh>
495 
496 #undef MPP_GLOBAL_SUM_TL_
497 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_c4_3d
498 #undef MPP_EXTRA_INDICES_
499 #define MPP_EXTRA_INDICES_ ,:
500 #undef MPP_TYPE_
501 #define MPP_TYPE_ complex(c4_kind)
502 #include <mpp_global_sum_tl.fh>
503 
504 #undef MPP_GLOBAL_SUM_TL_
505 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_c4_4d
506 #undef MPP_EXTRA_INDICES_
507 #define MPP_EXTRA_INDICES_ ,:,:
508 #undef MPP_TYPE_
509 #define MPP_TYPE_ complex(c4_kind)
510 #include <mpp_global_sum_tl.fh>
511 
512 #undef MPP_GLOBAL_SUM_TL_
513 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_c4_5d
514 #undef MPP_EXTRA_INDICES_
515 #define MPP_EXTRA_INDICES_ ,:,:,:
516 #undef MPP_TYPE_
517 #define MPP_TYPE_ complex(c4_kind)
518 #include <mpp_global_sum_tl.fh>
519 #endif
520 
521 #undef MPP_GLOBAL_SUM_TL_
522 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_i8_2d
523 #undef MPP_EXTRA_INDICES_
524 #define MPP_EXTRA_INDICES_
525 #undef MPP_TYPE_
526 #define MPP_TYPE_ integer(i8_kind)
527 #include <mpp_global_sum_tl.fh>
528 
529 #undef MPP_GLOBAL_SUM_TL_
530 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_i8_3d
531 #undef MPP_EXTRA_INDICES_
532 #define MPP_EXTRA_INDICES_ ,:
533 #undef MPP_TYPE_
534 #define MPP_TYPE_ integer(i8_kind)
535 #include <mpp_global_sum_tl.fh>
536 
537 #undef MPP_GLOBAL_SUM_TL_
538 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_i8_4d
539 #undef MPP_EXTRA_INDICES_
540 #define MPP_EXTRA_INDICES_ ,:,:
541 #undef MPP_TYPE_
542 #define MPP_TYPE_ integer(i8_kind)
543 #include <mpp_global_sum_tl.fh>
544 
545 #undef MPP_GLOBAL_SUM_TL_
546 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_i8_5d
547 #undef MPP_EXTRA_INDICES_
548 #define MPP_EXTRA_INDICES_ ,:,:,:
549 #undef MPP_TYPE_
550 #define MPP_TYPE_ integer(i8_kind)
551 #include <mpp_global_sum_tl.fh>
552 
553 #undef MPP_GLOBAL_SUM_TL_
554 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_i4_2d
555 #undef MPP_EXTRA_INDICES_
556 #define MPP_EXTRA_INDICES_
557 #undef MPP_TYPE_
558 #define MPP_TYPE_ integer(i4_kind)
559 #include <mpp_global_sum_tl.fh>
560 
561 #undef MPP_GLOBAL_SUM_TL_
562 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_i4_3d
563 #undef MPP_EXTRA_INDICES_
564 #define MPP_EXTRA_INDICES_ ,:
565 #undef MPP_TYPE_
566 #define MPP_TYPE_ integer(i4_kind)
567 #include <mpp_global_sum_tl.fh>
568 
569 #undef MPP_GLOBAL_SUM_TL_
570 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_i4_4d
571 #undef MPP_EXTRA_INDICES_
572 #define MPP_EXTRA_INDICES_ ,:,:
573 #undef MPP_TYPE_
574 #define MPP_TYPE_ integer(i4_kind)
575 #include <mpp_global_sum_tl.fh>
576 
577 #undef MPP_GLOBAL_SUM_TL_
578 #define MPP_GLOBAL_SUM_TL_ mpp_global_sum_tl_i4_5d
579 #undef MPP_EXTRA_INDICES_
580 #define MPP_EXTRA_INDICES_ ,:,:,:
581 #undef MPP_TYPE_
582 #define MPP_TYPE_ integer(i4_kind)
583 #include <mpp_global_sum_tl.fh>
584 !gag
585 
586 !bnc
587 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
588 ! !
589 ! MPP_GLOBAL_SUM_AD: global adjoint sum of field !
590 ! !
591 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
592 
593 #undef MPP_GLOBAL_SUM_AD_
594 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_r8_2d
595 #undef MPP_EXTRA_INDICES_
596 #define MPP_EXTRA_INDICES_
597 #undef MPP_TYPE_
598 #define MPP_TYPE_ real(r8_kind)
599 #include <mpp_global_sum_ad.fh>
600 
601 #undef MPP_GLOBAL_SUM_AD_
602 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_r8_3d
603 #undef MPP_EXTRA_INDICES_
604 #define MPP_EXTRA_INDICES_ ,:
605 #undef MPP_TYPE_
606 #define MPP_TYPE_ real(r8_kind)
607 #include <mpp_global_sum_ad.fh>
608 
609 #undef MPP_GLOBAL_SUM_AD_
610 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_r8_4d
611 #undef MPP_EXTRA_INDICES_
612 #define MPP_EXTRA_INDICES_ ,:,:
613 #undef MPP_TYPE_
614 #define MPP_TYPE_ real(r8_kind)
615 #include <mpp_global_sum_ad.fh>
616 
617 #undef MPP_GLOBAL_SUM_AD_
618 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_r8_5d
619 #undef MPP_EXTRA_INDICES_
620 #define MPP_EXTRA_INDICES_ ,:,:,:
621 #undef MPP_TYPE_
622 #define MPP_TYPE_ real(r8_kind)
623 #include <mpp_global_sum_ad.fh>
624 
625 #ifdef OVERLOAD_C8
626 #undef MPP_GLOBAL_SUM_AD_
627 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_c8_2d
628 #undef MPP_EXTRA_INDICES_
629 #define MPP_EXTRA_INDICES_
630 #undef MPP_TYPE_
631 #define MPP_TYPE_ complex(c8_kind)
632 #include <mpp_global_sum_ad.fh>
633 
634 #undef MPP_GLOBAL_SUM_AD_
635 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_c8_3d
636 #undef MPP_EXTRA_INDICES_
637 #define MPP_EXTRA_INDICES_ ,:
638 #undef MPP_TYPE_
639 #define MPP_TYPE_ complex(c8_kind)
640 #include <mpp_global_sum_ad.fh>
641 
642 #undef MPP_GLOBAL_SUM_AD_
643 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_c8_4d
644 #undef MPP_EXTRA_INDICES_
645 #define MPP_EXTRA_INDICES_ ,:,:
646 #undef MPP_TYPE_
647 #define MPP_TYPE_ complex(c8_kind)
648 #include <mpp_global_sum_ad.fh>
649 
650 #undef MPP_GLOBAL_SUM_AD_
651 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_c8_5d
652 #undef MPP_EXTRA_INDICES_
653 #define MPP_EXTRA_INDICES_ ,:,:,:
654 #undef MPP_TYPE_
655 #define MPP_TYPE_ complex(c8_kind)
656 #include <mpp_global_sum_ad.fh>
657 #endif
658 
659 #undef MPP_GLOBAL_SUM_AD_
660 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_r4_2d
661 #undef MPP_EXTRA_INDICES_
662 #define MPP_EXTRA_INDICES_
663 #undef MPP_TYPE_
664 #define MPP_TYPE_ real(r4_kind)
665 #include <mpp_global_sum_ad.fh>
666 
667 #undef MPP_GLOBAL_SUM_AD_
668 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_r4_3d
669 #undef MPP_EXTRA_INDICES_
670 #define MPP_EXTRA_INDICES_ ,:
671 #undef MPP_TYPE_
672 #define MPP_TYPE_ real(r4_kind)
673 #include <mpp_global_sum_ad.fh>
674 
675 #undef MPP_GLOBAL_SUM_AD_
676 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_r4_4d
677 #undef MPP_EXTRA_INDICES_
678 #define MPP_EXTRA_INDICES_ ,:,:
679 #undef MPP_TYPE_
680 #define MPP_TYPE_ real(r4_kind)
681 #include <mpp_global_sum_ad.fh>
682 
683 #undef MPP_GLOBAL_SUM_AD_
684 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_r4_5d
685 #undef MPP_EXTRA_INDICES_
686 #define MPP_EXTRA_INDICES_ ,:,:,:
687 #undef MPP_TYPE_
688 #define MPP_TYPE_ real(r4_kind)
689 #include <mpp_global_sum_ad.fh>
690 
691 #ifdef OVERLOAD_C4
692 #undef MPP_GLOBAL_SUM_AD_
693 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_c4_2d
694 #undef MPP_EXTRA_INDICES_
695 #define MPP_EXTRA_INDICES_
696 #undef MPP_TYPE_
697 #define MPP_TYPE_ complex(c4_kind)
698 #include <mpp_global_sum_ad.fh>
699 
700 #undef MPP_GLOBAL_SUM_AD_
701 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_c4_3d
702 #undef MPP_EXTRA_INDICES_
703 #define MPP_EXTRA_INDICES_ ,:
704 #undef MPP_TYPE_
705 #define MPP_TYPE_ complex(c4_kind)
706 #include <mpp_global_sum_ad.fh>
707 
708 #undef MPP_GLOBAL_SUM_AD_
709 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_c4_4d
710 #undef MPP_EXTRA_INDICES_
711 #define MPP_EXTRA_INDICES_ ,:,:
712 #undef MPP_TYPE_
713 #define MPP_TYPE_ complex(c4_kind)
714 #include <mpp_global_sum_ad.fh>
715 
716 #undef MPP_GLOBAL_SUM_AD_
717 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_c4_5d
718 #undef MPP_EXTRA_INDICES_
719 #define MPP_EXTRA_INDICES_ ,:,:,:
720 #undef MPP_TYPE_
721 #define MPP_TYPE_ complex(c4_kind)
722 #include <mpp_global_sum_ad.fh>
723 #endif
724 
725 #undef MPP_GLOBAL_SUM_AD_
726 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_i8_2d
727 #undef MPP_EXTRA_INDICES_
728 #define MPP_EXTRA_INDICES_
729 #undef MPP_TYPE_
730 #define MPP_TYPE_ integer(i8_kind)
731 #include <mpp_global_sum_ad.fh>
732 
733 #undef MPP_GLOBAL_SUM_AD_
734 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_i8_3d
735 #undef MPP_EXTRA_INDICES_
736 #define MPP_EXTRA_INDICES_ ,:
737 #undef MPP_TYPE_
738 #define MPP_TYPE_ integer(i8_kind)
739 #include <mpp_global_sum_ad.fh>
740 
741 #undef MPP_GLOBAL_SUM_AD_
742 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_i8_4d
743 #undef MPP_EXTRA_INDICES_
744 #define MPP_EXTRA_INDICES_ ,:,:
745 #undef MPP_TYPE_
746 #define MPP_TYPE_ integer(i8_kind)
747 #include <mpp_global_sum_ad.fh>
748 
749 #undef MPP_GLOBAL_SUM_AD_
750 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_i8_5d
751 #undef MPP_EXTRA_INDICES_
752 #define MPP_EXTRA_INDICES_ ,:,:,:
753 #undef MPP_TYPE_
754 #define MPP_TYPE_ integer(i8_kind)
755 #include <mpp_global_sum_ad.fh>
756 
757 #undef MPP_GLOBAL_SUM_AD_
758 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_i4_2d
759 #undef MPP_EXTRA_INDICES_
760 #define MPP_EXTRA_INDICES_
761 #undef MPP_TYPE_
762 #define MPP_TYPE_ integer(i4_kind)
763 #include <mpp_global_sum_ad.fh>
764 
765 #undef MPP_GLOBAL_SUM_AD_
766 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_i4_3d
767 #undef MPP_EXTRA_INDICES_
768 #define MPP_EXTRA_INDICES_ ,:
769 #undef MPP_TYPE_
770 #define MPP_TYPE_ integer(i4_kind)
771 #include <mpp_global_sum_ad.fh>
772 
773 #undef MPP_GLOBAL_SUM_AD_
774 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_i4_4d
775 #undef MPP_EXTRA_INDICES_
776 #define MPP_EXTRA_INDICES_ ,:,:
777 #undef MPP_TYPE_
778 #define MPP_TYPE_ integer(i4_kind)
779 #include <mpp_global_sum_ad.fh>
780 
781 #undef MPP_GLOBAL_SUM_AD_
782 #define MPP_GLOBAL_SUM_AD_ mpp_global_sum_ad_i4_5d
783 #undef MPP_EXTRA_INDICES_
784 #define MPP_EXTRA_INDICES_ ,:,:,:
785 #undef MPP_TYPE_
786 #define MPP_TYPE_ integer(i4_kind)
787 #include <mpp_global_sum_ad.fh>
788 !bnc
789 
790 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
791 ! !
792 ! MPP_GLOBAL_FIELD: get global field from domain field !
793 ! !
794 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
795 
796 #define MPP_TYPE_INIT_VALUE 0.
797 #undef MPP_GLOBAL_FIELD_2D_
798 #define MPP_GLOBAL_FIELD_2D_ mpp_global_field2D_r8_2d
799 #undef MPP_GLOBAL_FIELD_3D_
800 #define MPP_GLOBAL_FIELD_3D_ mpp_global_field2D_r8_3d
801 #undef MPP_GLOBAL_FIELD_4D_
802 #define MPP_GLOBAL_FIELD_4D_ mpp_global_field2D_r8_4d
803 #undef MPP_GLOBAL_FIELD_5D_
804 #define MPP_GLOBAL_FIELD_5D_ mpp_global_field2D_r8_5d
805 #undef MPP_TYPE_
806 #define MPP_TYPE_ real(r8_kind)
807 #include <mpp_global_field.fh>
808 
809 #ifdef OVERLOAD_C8
810 #undef MPP_GLOBAL_FIELD_2D_
811 #define MPP_GLOBAL_FIELD_2D_ mpp_global_field2D_c8_2d
812 #undef MPP_GLOBAL_FIELD_3D_
813 #define MPP_GLOBAL_FIELD_3D_ mpp_global_field2D_c8_3d
814 #undef MPP_GLOBAL_FIELD_4D_
815 #define MPP_GLOBAL_FIELD_4D_ mpp_global_field2D_c8_4d
816 #undef MPP_GLOBAL_FIELD_5D_
817 #define MPP_GLOBAL_FIELD_5D_ mpp_global_field2D_c8_5d
818 #undef MPP_TYPE_
819 #define MPP_TYPE_ complex(c8_kind)
820 #include <mpp_global_field.fh>
821 #endif
822 
823 #undef MPP_TYPE_INIT_VALUE
824 #define MPP_TYPE_INIT_VALUE 0
825 #undef MPP_GLOBAL_FIELD_2D_
826 #define MPP_GLOBAL_FIELD_2D_ mpp_global_field2D_i8_2d
827 #undef MPP_GLOBAL_FIELD_3D_
828 #define MPP_GLOBAL_FIELD_3D_ mpp_global_field2D_i8_3d
829 #undef MPP_GLOBAL_FIELD_4D_
830 #define MPP_GLOBAL_FIELD_4D_ mpp_global_field2D_i8_4d
831 #undef MPP_GLOBAL_FIELD_5D_
832 #define MPP_GLOBAL_FIELD_5D_ mpp_global_field2D_i8_5d
833 #undef MPP_TYPE_
834 #define MPP_TYPE_ integer(i8_kind)
835 #include <mpp_global_field.fh>
836 
837 #undef MPP_TYPE_INIT_VALUE
838 #define MPP_TYPE_INIT_VALUE .false.
839 #undef MPP_GLOBAL_FIELD_2D_
840 #define MPP_GLOBAL_FIELD_2D_ mpp_global_field2D_l8_2d
841 #undef MPP_GLOBAL_FIELD_3D_
842 #define MPP_GLOBAL_FIELD_3D_ mpp_global_field2D_l8_3d
843 #undef MPP_GLOBAL_FIELD_4D_
844 #define MPP_GLOBAL_FIELD_4D_ mpp_global_field2D_l8_4d
845 #undef MPP_GLOBAL_FIELD_5D_
846 #define MPP_GLOBAL_FIELD_5D_ mpp_global_field2D_l8_5d
847 #undef MPP_TYPE_
848 #define MPP_TYPE_ logical(l8_kind)
849 #include <mpp_global_field.fh>
850 
851 #undef MPP_TYPE_INIT_VALUE
852 #define MPP_TYPE_INIT_VALUE 0.
853 #undef MPP_GLOBAL_FIELD_2D_
854 #define MPP_GLOBAL_FIELD_2D_ mpp_global_field2D_r4_2d
855 #undef MPP_GLOBAL_FIELD_3D_
856 #define MPP_GLOBAL_FIELD_3D_ mpp_global_field2D_r4_3d
857 #undef MPP_GLOBAL_FIELD_4D_
858 #define MPP_GLOBAL_FIELD_4D_ mpp_global_field2D_r4_4d
859 #undef MPP_GLOBAL_FIELD_5D_
860 #define MPP_GLOBAL_FIELD_5D_ mpp_global_field2D_r4_5d
861 #undef MPP_TYPE_
862 #define MPP_TYPE_ real(r4_kind)
863 #include <mpp_global_field.fh>
864 
865 #ifdef OVERLOAD_C4
866 #undef MPP_GLOBAL_FIELD_2D_
867 #define MPP_GLOBAL_FIELD_2D_ mpp_global_field2D_c4_2d
868 #undef MPP_GLOBAL_FIELD_3D_
869 #define MPP_GLOBAL_FIELD_3D_ mpp_global_field2D_c4_3d
870 #undef MPP_GLOBAL_FIELD_4D_
871 #define MPP_GLOBAL_FIELD_4D_ mpp_global_field2D_c4_4d
872 #undef MPP_GLOBAL_FIELD_5D_
873 #define MPP_GLOBAL_FIELD_5D_ mpp_global_field2D_c4_5d
874 #undef MPP_TYPE_
875 #define MPP_TYPE_ complex(c4_kind)
876 #include <mpp_global_field.fh>
877 #endif
878 
879 #undef MPP_TYPE_INIT_VALUE
880 #define MPP_TYPE_INIT_VALUE 0
881 #undef MPP_GLOBAL_FIELD_2D_
882 #define MPP_GLOBAL_FIELD_2D_ mpp_global_field2D_i4_2d
883 #undef MPP_GLOBAL_FIELD_3D_
884 #define MPP_GLOBAL_FIELD_3D_ mpp_global_field2D_i4_3d
885 #undef MPP_GLOBAL_FIELD_4D_
886 #define MPP_GLOBAL_FIELD_4D_ mpp_global_field2D_i4_4d
887 #undef MPP_GLOBAL_FIELD_5D_
888 #define MPP_GLOBAL_FIELD_5D_ mpp_global_field2D_i4_5d
889 #undef MPP_TYPE_
890 #define MPP_TYPE_ integer(i4_kind)
891 #include <mpp_global_field.fh>
892 
893 #undef MPP_TYPE_INIT_VALUE
894 #define MPP_TYPE_INIT_VALUE .false.
895 #undef MPP_GLOBAL_FIELD_2D_
896 #define MPP_GLOBAL_FIELD_2D_ mpp_global_field2D_l4_2d
897 #undef MPP_GLOBAL_FIELD_3D_
898 #define MPP_GLOBAL_FIELD_3D_ mpp_global_field2D_l4_3d
899 #undef MPP_GLOBAL_FIELD_4D_
900 #define MPP_GLOBAL_FIELD_4D_ mpp_global_field2D_l4_4d
901 #undef MPP_GLOBAL_FIELD_5D_
902 #define MPP_GLOBAL_FIELD_5D_ mpp_global_field2D_l4_5d
903 #undef MPP_TYPE_
904 #define MPP_TYPE_ logical(l4_kind)
905 #include <mpp_global_field.fh>
906 #undef MPP_TYPE_INIT_VALUE
907 
908 !****************************************************
909 #define MPP_TYPE_INIT_VALUE 0.
910 #undef MPP_GLOBAL_FIELD_2D_AD_
911 #define MPP_GLOBAL_FIELD_2D_AD_ mpp_global_field2D_r8_2d_ad
912 #undef MPP_GLOBAL_FIELD_3D_AD_
913 #define MPP_GLOBAL_FIELD_3D_AD_ mpp_global_field2D_r8_3d_ad
914 #undef MPP_GLOBAL_FIELD_4D_AD_
915 #define MPP_GLOBAL_FIELD_4D_AD_ mpp_global_field2D_r8_4d_ad
916 #undef MPP_GLOBAL_FIELD_5D_AD_
917 #define MPP_GLOBAL_FIELD_5D_AD_ mpp_global_field2D_r8_5d_ad
918 #undef MPP_TYPE_
919 #define MPP_TYPE_ real(r8_kind)
920 #include <mpp_global_field_ad.fh>
921 
922 #ifdef OVERLOAD_C8
923 #undef MPP_GLOBAL_FIELD_2D_AD_
924 #define MPP_GLOBAL_FIELD_2D_AD_ mpp_global_field2D_c8_2d_ad
925 #undef MPP_GLOBAL_FIELD_3D_AD_
926 #define MPP_GLOBAL_FIELD_3D_AD_ mpp_global_field2D_c8_3d_ad
927 #undef MPP_GLOBAL_FIELD_4D_AD_
928 #define MPP_GLOBAL_FIELD_4D_AD_ mpp_global_field2D_c8_4d_ad
929 #undef MPP_GLOBAL_FIELD_5D_AD_
930 #define MPP_GLOBAL_FIELD_5D_AD_ mpp_global_field2D_c8_5d_ad
931 #undef MPP_TYPE_
932 #define MPP_TYPE_ complex(c8_kind)
933 #include <mpp_global_field_ad.fh>
934 #endif
935 
936 #undef MPP_TYPE_INIT_VALUE
937 #define MPP_TYPE_INIT_VALUE 0
938 #undef MPP_GLOBAL_FIELD_2D_AD_
939 #define MPP_GLOBAL_FIELD_2D_AD_ mpp_global_field2D_i8_2d_ad
940 #undef MPP_GLOBAL_FIELD_3D_AD_
941 #define MPP_GLOBAL_FIELD_3D_AD_ mpp_global_field2D_i8_3d_ad
942 #undef MPP_GLOBAL_FIELD_4D_AD_
943 #define MPP_GLOBAL_FIELD_4D_AD_ mpp_global_field2D_i8_4d_ad
944 #undef MPP_GLOBAL_FIELD_5D_AD_
945 #define MPP_GLOBAL_FIELD_5D_AD_ mpp_global_field2D_i8_5d_ad
946 #undef MPP_TYPE_
947 #define MPP_TYPE_ integer(i8_kind)
948 #include <mpp_global_field_ad.fh>
949 
950 #undef MPP_TYPE_INIT_VALUE
951 #define MPP_TYPE_INIT_VALUE .false.
952 #undef MPP_GLOBAL_FIELD_2D_AD_
953 #define MPP_GLOBAL_FIELD_2D_AD_ mpp_global_field2D_l8_2d_ad
954 #undef MPP_GLOBAL_FIELD_3D_AD_
955 #define MPP_GLOBAL_FIELD_3D_AD_ mpp_global_field2D_l8_3d_ad
956 #undef MPP_GLOBAL_FIELD_4D_AD_
957 #define MPP_GLOBAL_FIELD_4D_AD_ mpp_global_field2D_l8_4d_ad
958 #undef MPP_GLOBAL_FIELD_5D_AD_
959 #define MPP_GLOBAL_FIELD_5D_AD_ mpp_global_field2D_l8_5d_ad
960 #undef MPP_TYPE_
961 #define MPP_TYPE_ logical(l8_kind)
962 #include <mpp_global_field_ad.fh>
963 
964 #undef MPP_TYPE_INIT_VALUE
965 #define MPP_TYPE_INIT_VALUE 0.
966 #undef MPP_GLOBAL_FIELD_2D_AD_
967 #define MPP_GLOBAL_FIELD_2D_AD_ mpp_global_field2D_r4_2d_ad
968 #undef MPP_GLOBAL_FIELD_3D_AD_
969 #define MPP_GLOBAL_FIELD_3D_AD_ mpp_global_field2D_r4_3d_ad
970 #undef MPP_GLOBAL_FIELD_4D_AD_
971 #define MPP_GLOBAL_FIELD_4D_AD_ mpp_global_field2D_r4_4d_ad
972 #undef MPP_GLOBAL_FIELD_5D_AD_
973 #define MPP_GLOBAL_FIELD_5D_AD_ mpp_global_field2D_r4_5d_ad
974 #undef MPP_TYPE_
975 #define MPP_TYPE_ real(r4_kind)
976 #include <mpp_global_field_ad.fh>
977 
978 #ifdef OVERLOAD_C4
979 #undef MPP_GLOBAL_FIELD_2D_AD_
980 #define MPP_GLOBAL_FIELD_2D_AD_ mpp_global_field2D_c4_2d_ad
981 #undef MPP_GLOBAL_FIELD_3D_AD_
982 #define MPP_GLOBAL_FIELD_3D_AD_ mpp_global_field2D_c4_3d_ad
983 #undef MPP_GLOBAL_FIELD_4D_AD_
984 #define MPP_GLOBAL_FIELD_4D_AD_ mpp_global_field2D_c4_4d_ad
985 #undef MPP_GLOBAL_FIELD_5D_AD_
986 #define MPP_GLOBAL_FIELD_5D_AD_ mpp_global_field2D_c4_5d_ad
987 #undef MPP_TYPE_
988 #define MPP_TYPE_ complex(c4_kind)
989 #include <mpp_global_field_ad.fh>
990 #endif
991 
992 #undef MPP_TYPE_INIT_VALUE
993 #define MPP_TYPE_INIT_VALUE 0
994 #undef MPP_GLOBAL_FIELD_2D_AD_
995 #define MPP_GLOBAL_FIELD_2D_AD_ mpp_global_field2D_i4_2d_ad
996 #undef MPP_GLOBAL_FIELD_3D_AD_
997 #define MPP_GLOBAL_FIELD_3D_AD_ mpp_global_field2D_i4_3d_ad
998 #undef MPP_GLOBAL_FIELD_4D_AD_
999 #define MPP_GLOBAL_FIELD_4D_AD_ mpp_global_field2D_i4_4d_ad
1000 #undef MPP_GLOBAL_FIELD_5D_AD_
1001 #define MPP_GLOBAL_FIELD_5D_AD_ mpp_global_field2D_i4_5d_ad
1002 #undef MPP_TYPE_
1003 #define MPP_TYPE_ integer(i4_kind)
1004 #include <mpp_global_field_ad.fh>
1005 
1006 #undef MPP_TYPE_INIT_VALUE
1007 #define MPP_TYPE_INIT_VALUE .false.
1008 #undef MPP_GLOBAL_FIELD_2D_AD_
1009 #define MPP_GLOBAL_FIELD_2D_AD_ mpp_global_field2D_l4_2d_ad
1010 #undef MPP_GLOBAL_FIELD_3D_AD_
1011 #define MPP_GLOBAL_FIELD_3D_AD_ mpp_global_field2D_l4_3d_ad
1012 #undef MPP_GLOBAL_FIELD_4D_AD_
1013 #define MPP_GLOBAL_FIELD_4D_AD_ mpp_global_field2D_l4_4d_ad
1014 #undef MPP_GLOBAL_FIELD_5D_AD_
1015 #define MPP_GLOBAL_FIELD_5D_AD_ mpp_global_field2D_l4_5d_ad
1016 #undef MPP_TYPE_
1017 #define MPP_TYPE_ logical(l4_kind)
1018 #include <mpp_global_field_ad.fh>
1019 #undef MPP_TYPE_INIT_VALUE
1020 
1021 !****************************************************
1022 #undef MPP_DO_GLOBAL_FIELD_3D_
1023 #undef MPP_DO_GLOBAL_FIELD_A2A_3D_
1024 #define MPP_DO_GLOBAL_FIELD_3D_ mpp_do_global_field2D_r8_3d
1025 #define MPP_DO_GLOBAL_FIELD_A2A_3D_ mpp_do_global_field2D_a2a_r8_3d
1026 #undef MPP_TYPE_
1027 #define MPP_TYPE_ real(r8_kind)
1028 #include <mpp_do_global_field.fh>
1029 
1030 #ifdef OVERLOAD_C8
1031 #undef MPP_DO_GLOBAL_FIELD_3D_
1032 #undef MPP_DO_GLOBAL_FIELD_A2A_3D_
1033 #define MPP_DO_GLOBAL_FIELD_3D_ mpp_do_global_field2D_c8_3d
1034 #define MPP_DO_GLOBAL_FIELD_A2A_3D_ mpp_do_global_field2D_a2a_c8_3d
1035 #undef MPP_TYPE_
1036 #define MPP_TYPE_ complex(c8_kind)
1037 #include <mpp_do_global_field.fh>
1038 #endif
1039 
1040 #undef MPP_DO_GLOBAL_FIELD_3D_
1041 #undef MPP_DO_GLOBAL_FIELD_A2A_3D_
1042 #define MPP_DO_GLOBAL_FIELD_3D_ mpp_do_global_field2D_i8_3d
1043 #define MPP_DO_GLOBAL_FIELD_A2A_3D_ mpp_do_global_field2D_a2a_i8_3d
1044 #undef MPP_TYPE_
1045 #define MPP_TYPE_ integer(i8_kind)
1046 #include <mpp_do_global_field.fh>
1047 
1048 #undef MPP_DO_GLOBAL_FIELD_3D_
1049 #undef MPP_DO_GLOBAL_FIELD_A2A_3D_
1050 #define MPP_DO_GLOBAL_FIELD_3D_ mpp_do_global_field2D_l8_3d
1051 #define MPP_DO_GLOBAL_FIELD_A2A_3D_ mpp_do_global_field2D_a2a_l8_3d
1052 #define LOGICAL_VARIABLE
1053 #undef MPP_TYPE_
1054 #define MPP_TYPE_ logical(l8_kind)
1055 #include <mpp_do_global_field.fh>
1056 #undef LOGICAL_VARIABLE
1057 
1058 #undef MPP_DO_GLOBAL_FIELD_3D_
1059 #undef MPP_DO_GLOBAL_FIELD_A2A_3D_
1060 #define MPP_DO_GLOBAL_FIELD_3D_ mpp_do_global_field2D_r4_3d
1061 #define MPP_DO_GLOBAL_FIELD_A2A_3D_ mpp_do_global_field2D_a2a_r4_3d
1062 #undef MPP_TYPE_
1063 #define MPP_TYPE_ real(r4_kind)
1064 #include <mpp_do_global_field.fh>
1065 
1066 #ifdef OVERLOAD_C4
1067 #undef MPP_DO_GLOBAL_FIELD_3D_
1068 #undef MPP_DO_GLOBAL_FIELD_A2A_3D_
1069 #define MPP_DO_GLOBAL_FIELD_3D_ mpp_do_global_field2D_c4_3d
1070 #define MPP_DO_GLOBAL_FIELD_A2A_3D_ mpp_do_global_field2D_a2a_c4_3d
1071 #undef MPP_TYPE_
1072 #define MPP_TYPE_ complex(c4_kind)
1073 #include <mpp_do_global_field.fh>
1074 #endif
1075 
1076 #undef MPP_DO_GLOBAL_FIELD_3D_
1077 #undef MPP_DO_GLOBAL_FIELD_A2A_3D_
1078 #define MPP_DO_GLOBAL_FIELD_3D_ mpp_do_global_field2D_i4_3d
1079 #define MPP_DO_GLOBAL_FIELD_A2A_3D_ mpp_do_global_field2D_a2a_i4_3d
1080 #undef MPP_TYPE_
1081 #define MPP_TYPE_ integer(i4_kind)
1082 #include <mpp_do_global_field.fh>
1083 
1084 #undef MPP_DO_GLOBAL_FIELD_3D_
1085 #undef MPP_DO_GLOBAL_FIELD_A2A_3D_
1086 #define MPP_DO_GLOBAL_FIELD_3D_ mpp_do_global_field2D_l4_3d
1087 #define MPP_DO_GLOBAL_FIELD_A2A_3D_ mpp_do_global_field2D_a2a_l4_3d
1088 #define LOGICAL_VARIABLE
1089 #undef MPP_TYPE_
1090 #define MPP_TYPE_ logical(l4_kind)
1091 #include <mpp_do_global_field.fh>
1092 #undef LOGICAL_VARIABLE
1093 !****************************************************
1094 #undef MPP_DO_GLOBAL_FIELD_3D_AD_
1095 #define MPP_DO_GLOBAL_FIELD_3D_AD_ mpp_do_global_field2D_r8_3d_ad
1096 #undef MPP_TYPE_
1097 #define MPP_TYPE_ real(r8_kind)
1098 #include <mpp_do_global_field_ad.fh>
1099 
1100 #ifdef OVERLOAD_C8
1101 #undef MPP_DO_GLOBAL_FIELD_3D_AD_
1102 #define MPP_DO_GLOBAL_FIELD_3D_AD_ mpp_do_global_field2D_c8_3d_ad
1103 #undef MPP_TYPE_
1104 #define MPP_TYPE_ complex(c8_kind)
1105 #include <mpp_do_global_field_ad.fh>
1106 #endif
1107 
1108 #undef MPP_DO_GLOBAL_FIELD_3D_AD_
1109 #define MPP_DO_GLOBAL_FIELD_3D_AD_ mpp_do_global_field2D_i8_3d_ad
1110 #undef MPP_TYPE_
1111 #define MPP_TYPE_ integer(i8_kind)
1112 #include <mpp_do_global_field_ad.fh>
1113 
1114 #undef MPP_DO_GLOBAL_FIELD_3D_AD_
1115 #define MPP_DO_GLOBAL_FIELD_3D_AD_ mpp_do_global_field2D_l8_3d_ad
1116 #define LOGICAL_VARIABLE
1117 #undef MPP_TYPE_
1118 #define MPP_TYPE_ logical(l8_kind)
1119 #include <mpp_do_global_field_ad.fh>
1120 #undef LOGICAL_VARIABLE
1121 
1122 #undef MPP_DO_GLOBAL_FIELD_3D_AD_
1123 #define MPP_DO_GLOBAL_FIELD_3D_AD_ mpp_do_global_field2D_r4_3d_ad
1124 #undef MPP_TYPE_
1125 #define MPP_TYPE_ real(r4_kind)
1126 #include <mpp_do_global_field_ad.fh>
1127 
1128 #ifdef OVERLOAD_C4
1129 #undef MPP_DO_GLOBAL_FIELD_3D_AD_
1130 #define MPP_DO_GLOBAL_FIELD_3D_AD_ mpp_do_global_field2D_c4_3d_ad
1131 #undef MPP_TYPE_
1132 #define MPP_TYPE_ complex(c4_kind)
1133 #include <mpp_do_global_field_ad.fh>
1134 #endif
1135 
1136 #undef MPP_DO_GLOBAL_FIELD_3D_AD_
1137 #define MPP_DO_GLOBAL_FIELD_3D_AD_ mpp_do_global_field2D_i4_3d_ad
1138 #undef MPP_TYPE_
1139 #define MPP_TYPE_ integer(i4_kind)
1140 #include <mpp_do_global_field_ad.fh>
1141 
1142 #undef MPP_DO_GLOBAL_FIELD_3D_AD_
1143 #define MPP_DO_GLOBAL_FIELD_3D_AD_ mpp_do_global_field2D_l4_3d_ad
1144 #define LOGICAL_VARIABLE
1145 #undef MPP_TYPE_
1146 #define MPP_TYPE_ logical(l4_kind)
1147 #include <mpp_do_global_field_ad.fh>
1148 #undef LOGICAL_VARIABLE
1149 !> @}