131 #include <fms_platform.h> 133 #if defined(use_libMPI) && defined(sgi_mipspro) 151 use mpp_data_mod,
only : mpp_domains_stack, ptr_domains_stack
152 use mpp_data_mod,
only : mpp_domains_stack_nonblock, ptr_domains_stack_nonblock
153 use mpp_mod,
only : mpp_pe, mpp_root_pe, mpp_npes,
mpp_error, fatal, warning, note
155 use mpp_mod,
only : mpp_clock_id, mpp_clock_begin, mpp_clock_end
158 use mpp_mod,
only : mpp_sync, mpp_init, mpp_malloc, lowercase
162 use mpp_mod,
only : comm_tag_1, comm_tag_2, comm_tag_3, comm_tag_4
169 #if defined(use_libMPI) && !defined(sgi_mipspro) 175 public :: global_data_domain, cyclic_global_domain, bgrid_ne, bgrid_sw, cgrid_ne, cgrid_sw, agrid
176 public :: dgrid_ne, dgrid_sw, fold_west_edge, fold_east_edge, fold_south_edge, fold_north_edge
177 public :: wupdate, eupdate, supdate, nupdate, xupdate, yupdate
178 public :: non_bitwise_exact_sum, bitwise_exact_sum, mpp_domain_time, bitwise_efp_sum
179 public :: center, corner, scalar_pair
180 public :: north, north_east, east, south_east
181 public :: south, south_west, west, north_west
182 public ::
zero, ninety, minus_ninety, one_hundred_eighty
195 public :: mpp_domain_is_symmetry, mpp_domain_is_initialized
200 public :: mpp_get_tile_list
201 public :: mpp_get_tile_npes, mpp_get_domain_root_pe, mpp_get_tile_pelist, mpp_get_tile_compute_domains
202 public :: mpp_get_num_overlap, mpp_get_overlap
203 public :: mpp_get_io_domain, mpp_get_domain_pe, mpp_get_domain_tile_root_pe
204 public :: mpp_get_domain_name, mpp_get_io_domain_layout
206 public :: mpp_get_update_pelist, mpp_get_update_size
207 public :: mpp_get_domain_npes, mpp_get_domain_pelist
208 public :: mpp_clear_group_update
209 public :: mpp_group_update_initialized, mpp_group_update_is_set
230 public :: mpp_compute_extent, mpp_compute_block_extent
233 public :: mpp_define_unstruct_domain,
domainug, mpp_get_ug_io_domain
234 public :: mpp_get_ug_domain_npes, mpp_get_ug_compute_domain, mpp_get_ug_domain_tile_id
235 public :: mpp_get_ug_domain_pelist, mpp_get_ug_domain_grid_index
236 public :: mpp_get_ug_domain_ntiles, mpp_get_ug_global_domain
238 public :: mpp_define_null_ug_domain,
null_domainug, mpp_get_ug_domains_index
239 public :: mpp_get_ug_sg_domain, mpp_get_ug_domain_tile_pe_inf
242 public :: mpp_define_nest_domains, mpp_get_c2f_index, mpp_get_f2c_index
246 public :: mpp_domain_ug_is_tile_root_pe
247 public :: mpp_deallocate_domainug
248 public :: mpp_get_io_domain_ug_layout
262 integer :: begin, end,
size, max_size
263 integer :: begin_index, end_index
278 integer,
pointer :: i(:)=>null()
279 integer,
pointer :: j(:)=>null()
284 integer :: nsend, nrecv
296 integer,
pointer :: grid_index(:) => null()
302 integer :: tile_root_pe
304 integer :: npes_io_group
305 integer(INT_KIND) :: io_layout
310 integer :: begin, end,
size, max_size
321 integer :: goffset, loffset
334 integer,
pointer :: tile_id(:) => null()
337 integer :: tile_root_pe
346 integer ,
pointer :: msgsize(:) => null()
347 integer,
pointer :: tileme(:) => null()
348 integer,
pointer :: tilenbr(:) => null()
349 integer,
pointer :: is(:) => null()
350 integer,
pointer :: ie(:) => null()
351 integer,
pointer :: js(:) => null()
352 integer,
pointer :: je(:) => null()
353 integer,
pointer :: dir(:) => null()
354 integer,
pointer :: rotation(:) => null()
355 integer,
pointer :: index(:) => null()
356 logical,
pointer :: from_contact(:) => null()
361 integer :: whalo, ehalo, shalo, nhalo
362 integer :: xbegin, xend, ybegin, yend
363 integer :: nsend, nrecv
364 integer :: sendsize, recvsize
371 integer :: xbegin, xend, ybegin, yend
380 character(len=NAME_LENGTH) :: name=
'unnamed' 381 integer(LONG_KIND) :: id
386 integer :: whalo, ehalo
387 integer :: shalo, nhalo
389 integer :: max_ntile_pe
391 logical :: rotated_ninety
392 logical :: initialized=.false.
393 integer :: tile_root_pe
394 integer :: io_layout(2)
396 integer,
pointer :: pearray(:,:) => null()
397 integer,
pointer :: tile_id(:) => null()
420 integer,
pointer :: tile(:) =>null()
421 integer,
pointer :: align1(:)=>null(), align2(:)=>null()
422 real,
pointer :: refine1(:)=>null(), refine2(:)=>null()
423 integer,
pointer :: is1(:)=>null(), ie1(:)=>null()
424 integer,
pointer :: js1(:)=>null(), je1(:)=>null()
425 integer,
pointer :: is2(:)=>null(), ie2(:)=>null()
426 integer,
pointer :: js2(:)=>null(), je2(:)=>null()
431 integer :: is_me, ie_me, js_me, je_me
432 integer :: is_you, ie_you, js_you, je_you
437 integer :: xbegin, xend, ybegin, yend
439 integer :: nsend, nrecv
440 integer :: extra_halo
451 integer :: tile_fine, tile_coarse
452 integer :: istart_fine, iend_fine, jstart_fine, jend_fine
453 integer :: istart_coarse, iend_coarse, jstart_coarse, jend_coarse
454 integer :: x_refine, y_refine
455 logical :: is_fine_pe, is_coarse_pe
456 integer,
pointer :: pelist_fine(:) => null()
457 integer,
pointer :: pelist_coarse(:) => null()
458 character(len=NAME_LENGTH) :: name
475 logical :: initialized=.false.
476 integer(LONG_KIND) :: id=-9999
477 integer(LONG_KIND) :: l_addr =-9999
478 integer(LONG_KIND) :: l_addrx =-9999
479 integer(LONG_KIND) :: l_addry =-9999
485 integer,
dimension(:,:), _allocatable :: sendis _null
486 integer,
dimension(:,:), _allocatable :: sendie _null
487 integer,
dimension(:,:), _allocatable :: sendjs _null
488 integer,
dimension(:,:), _allocatable :: sendje _null
489 integer,
dimension(:,:), _allocatable :: recvis _null
490 integer,
dimension(:,:), _allocatable :: recvie _null
491 integer,
dimension(:,:), _allocatable :: recvjs _null
492 integer,
dimension(:,:), _allocatable :: recvje _null
493 logical,
dimension(:), _allocatable :: s_do_buf _null
494 logical,
dimension(:), _allocatable :: r_do_buf _null
495 integer,
dimension(:), _allocatable :: cto_pe _null
496 integer,
dimension(:), _allocatable :: cfrom_pe _null
497 integer,
dimension(:), _allocatable :: s_msize _null
498 integer,
dimension(:), _allocatable :: r_msize _null
499 integer :: slist_size=0, rlist_size=0
500 integer :: isize=0, jsize=0, ke=0
501 integer :: isize_in=0, jsize_in=0
502 integer :: isize_out=0, jsize_out=0
503 integer :: isize_max=0, jsize_max=0
504 integer :: gf_ioff=0, gf_joff=0
506 integer,
dimension(:) , _allocatable :: isizer _null
507 integer,
dimension(:) , _allocatable :: jsizer _null
508 integer,
dimension(:,:), _allocatable :: sendisr _null
509 integer,
dimension(:,:), _allocatable :: sendjsr _null
510 integer(LONG_KIND),
dimension(:), _allocatable :: rem_addr _null
511 integer(LONG_KIND),
dimension(:), _allocatable :: rem_addrx _null
512 integer(LONG_KIND),
dimension(:), _allocatable :: rem_addry _null
513 integer(LONG_KIND),
dimension(:,:), _allocatable :: rem_addrl _null
514 integer(LONG_KIND),
dimension(:,:), _allocatable :: rem_addrlx _null
515 integer(LONG_KIND),
dimension(:,:), _allocatable :: rem_addrly _null
524 integer :: recv_msgsize
525 integer :: send_msgsize
526 integer :: update_flags
527 integer :: update_position
528 integer :: update_gridtype
529 integer :: update_whalo
530 integer :: update_ehalo
531 integer :: update_shalo
532 integer :: update_nhalo
533 integer :: request_send_count
534 integer :: request_recv_count
535 integer,
dimension(MAX_REQUEST) :: request_send
536 integer,
dimension(MAX_REQUEST) :: request_recv
537 integer,
dimension(MAX_REQUEST) :: size_recv
538 integer,
dimension(MAX_REQUEST) :: type_recv
539 integer,
dimension(MAX_REQUEST) :: buffer_pos_send
540 integer,
dimension(MAX_REQUEST) :: buffer_pos_recv
541 integer(LONG_KIND) :: field_addrs(max_domain_fields)
542 integer(LONG_KIND) :: field_addrs2(max_domain_fields)
548 logical :: initialized = .false.
549 logical :: k_loop_inside = .true.
550 logical :: nonsym_edge = .false.
551 integer :: nscalar = 0
552 integer :: nvector = 0
553 integer :: flags_s=0, flags_v=0
554 integer :: whalo_s=0, ehalo_s=0, shalo_s=0, nhalo_s=0
555 integer :: isize_s=0, jsize_s=0, ksize_s=1
556 integer :: whalo_v=0, ehalo_v=0, shalo_v=0, nhalo_v=0
557 integer :: isize_x=0, jsize_x=0, ksize_v=1
558 integer :: isize_y=0, jsize_y=0
559 integer :: position=0, gridtype=0
560 logical :: recv_s(8), recv_x(8), recv_y(8)
561 integer :: is_s=0, ie_s=0, js_s=0, je_s=0
562 integer :: is_x=0, ie_x=0, js_x=0, je_x=0
563 integer :: is_y=0, ie_y=0, js_y=0, je_y=0
564 integer :: nrecv=0, nsend=0
565 integer :: npack=0, nunpack=0
566 integer :: reset_index_s = 0
567 integer :: reset_index_v = 0
568 integer :: tot_msgsize = 0
591 integer(LONG_KIND) :: addrs_s(max_domain_fields)
592 integer(LONG_KIND) :: addrs_x(max_domain_fields)
593 integer(LONG_KIND) :: addrs_y(max_domain_fields)
594 integer :: buffer_start_pos = -1
633 integer,
dimension(-1:MAX_ADDRS),
save ::
addrs_idx=-9999
638 integer(LONG_KIND),
parameter ::
addr2_base=z
'0000000000010000' 647 integer(LONG_KIND),
dimension(MAX_DOM_IDS),
save ::
ids_sorted=-9999
648 integer,
dimension(-1:MAX_DOM_IDS),
save ::
ids_idx=-9999
663 integer(LONG_KIND),
parameter ::
gt_base=z
'0000000000000100' 666 integer(LONG_KIND),
parameter ::
ke_base=z
'0001000000000000' 743 module procedure mpp_define_layout2d
914 module procedure mpp_define_domains1d
915 module procedure mpp_define_domains2d
919 module procedure mpp_define_null_domain1d
920 module procedure mpp_define_null_domain2d
924 module procedure mpp_copy_domain1d
925 module procedure mpp_copy_domain2d
929 module procedure mpp_deallocate_domain1d
930 module procedure mpp_deallocate_domain2d
971 module procedure mpp_modify_domain1d
972 module procedure mpp_modify_domain2d
1069 module procedure mpp_update_domain2d_r8_2d
1070 module procedure mpp_update_domain2d_r8_3d
1071 module procedure mpp_update_domain2d_r8_4d
1072 module procedure mpp_update_domain2d_r8_5d
1073 module procedure mpp_update_domain2d_r8_2dv
1074 module procedure mpp_update_domain2d_r8_3dv
1075 module procedure mpp_update_domain2d_r8_4dv
1076 module procedure mpp_update_domain2d_r8_5dv
1078 module procedure mpp_update_domain2d_c8_2d
1079 module procedure mpp_update_domain2d_c8_3d
1080 module procedure mpp_update_domain2d_c8_4d
1081 module procedure mpp_update_domain2d_c8_5d
1083 #ifndef no_8byte_integers 1084 module procedure mpp_update_domain2d_i8_2d
1085 module procedure mpp_update_domain2d_i8_3d
1086 module procedure mpp_update_domain2d_i8_4d
1087 module procedure mpp_update_domain2d_i8_5d
1090 module procedure mpp_update_domain2d_r4_2d
1091 module procedure mpp_update_domain2d_r4_3d
1092 module procedure mpp_update_domain2d_r4_4d
1093 module procedure mpp_update_domain2d_r4_5d
1094 module procedure mpp_update_domain2d_r4_2dv
1095 module procedure mpp_update_domain2d_r4_3dv
1096 module procedure mpp_update_domain2d_r4_4dv
1097 module procedure mpp_update_domain2d_r4_5dv
1100 module procedure mpp_update_domain2d_c4_2d
1101 module procedure mpp_update_domain2d_c4_3d
1102 module procedure mpp_update_domain2d_c4_4d
1103 module procedure mpp_update_domain2d_c4_5d
1105 module procedure mpp_update_domain2d_i4_2d
1106 module procedure mpp_update_domain2d_i4_3d
1107 module procedure mpp_update_domain2d_i4_4d
1108 module procedure mpp_update_domain2d_i4_5d
1262 module procedure mpp_start_update_domain2d_r8_2d
1263 module procedure mpp_start_update_domain2d_r8_3d
1264 module procedure mpp_start_update_domain2d_r8_4d
1265 module procedure mpp_start_update_domain2d_r8_5d
1266 module procedure mpp_start_update_domain2d_r8_2dv
1267 module procedure mpp_start_update_domain2d_r8_3dv
1268 module procedure mpp_start_update_domain2d_r8_4dv
1269 module procedure mpp_start_update_domain2d_r8_5dv
1271 module procedure mpp_start_update_domain2d_c8_2d
1272 module procedure mpp_start_update_domain2d_c8_3d
1273 module procedure mpp_start_update_domain2d_c8_4d
1274 module procedure mpp_start_update_domain2d_c8_5d
1276 #ifndef no_8byte_integers 1277 module procedure mpp_start_update_domain2d_i8_2d
1278 module procedure mpp_start_update_domain2d_i8_3d
1279 module procedure mpp_start_update_domain2d_i8_4d
1280 module procedure mpp_start_update_domain2d_i8_5d
1283 module procedure mpp_start_update_domain2d_r4_2d
1284 module procedure mpp_start_update_domain2d_r4_3d
1285 module procedure mpp_start_update_domain2d_r4_4d
1286 module procedure mpp_start_update_domain2d_r4_5d
1287 module procedure mpp_start_update_domain2d_r4_2dv
1288 module procedure mpp_start_update_domain2d_r4_3dv
1289 module procedure mpp_start_update_domain2d_r4_4dv
1290 module procedure mpp_start_update_domain2d_r4_5dv
1293 module procedure mpp_start_update_domain2d_c4_2d
1294 module procedure mpp_start_update_domain2d_c4_3d
1295 module procedure mpp_start_update_domain2d_c4_4d
1296 module procedure mpp_start_update_domain2d_c4_5d
1298 module procedure mpp_start_update_domain2d_i4_2d
1299 module procedure mpp_start_update_domain2d_i4_3d
1300 module procedure mpp_start_update_domain2d_i4_4d
1301 module procedure mpp_start_update_domain2d_i4_5d
1305 module procedure mpp_complete_update_domain2d_r8_2d
1306 module procedure mpp_complete_update_domain2d_r8_3d
1307 module procedure mpp_complete_update_domain2d_r8_4d
1308 module procedure mpp_complete_update_domain2d_r8_5d
1309 module procedure mpp_complete_update_domain2d_r8_2dv
1310 module procedure mpp_complete_update_domain2d_r8_3dv
1311 module procedure mpp_complete_update_domain2d_r8_4dv
1312 module procedure mpp_complete_update_domain2d_r8_5dv
1314 module procedure mpp_complete_update_domain2d_c8_2d
1315 module procedure mpp_complete_update_domain2d_c8_3d
1316 module procedure mpp_complete_update_domain2d_c8_4d
1317 module procedure mpp_complete_update_domain2d_c8_5d
1319 #ifndef no_8byte_integers 1320 module procedure mpp_complete_update_domain2d_i8_2d
1321 module procedure mpp_complete_update_domain2d_i8_3d
1322 module procedure mpp_complete_update_domain2d_i8_4d
1323 module procedure mpp_complete_update_domain2d_i8_5d
1326 module procedure mpp_complete_update_domain2d_r4_2d
1327 module procedure mpp_complete_update_domain2d_r4_3d
1328 module procedure mpp_complete_update_domain2d_r4_4d
1329 module procedure mpp_complete_update_domain2d_r4_5d
1330 module procedure mpp_complete_update_domain2d_r4_2dv
1331 module procedure mpp_complete_update_domain2d_r4_3dv
1332 module procedure mpp_complete_update_domain2d_r4_4dv
1333 module procedure mpp_complete_update_domain2d_r4_5dv
1336 module procedure mpp_complete_update_domain2d_c4_2d
1337 module procedure mpp_complete_update_domain2d_c4_3d
1338 module procedure mpp_complete_update_domain2d_c4_4d
1339 module procedure mpp_complete_update_domain2d_c4_5d
1341 module procedure mpp_complete_update_domain2d_i4_2d
1342 module procedure mpp_complete_update_domain2d_i4_3d
1343 module procedure mpp_complete_update_domain2d_i4_4d
1344 module procedure mpp_complete_update_domain2d_i4_5d
1348 module procedure mpp_start_do_update_r8_3d
1349 module procedure mpp_start_do_update_r8_3dv
1351 module procedure mpp_start_do_update_c8_3d
1353 #ifndef no_8byte_integers 1354 module procedure mpp_start_do_update_i8_3d
1357 module procedure mpp_start_do_update_r4_3d
1358 module procedure mpp_start_do_update_r4_3dv
1361 module procedure mpp_start_do_update_c4_3d
1363 module procedure mpp_start_do_update_i4_3d
1367 module procedure mpp_complete_do_update_r8_3d
1368 module procedure mpp_complete_do_update_r8_3dv
1370 module procedure mpp_complete_do_update_c8_3d
1372 #ifndef no_8byte_integers 1373 module procedure mpp_complete_do_update_i8_3d
1376 module procedure mpp_complete_do_update_r4_3d
1377 module procedure mpp_complete_do_update_r4_3dv
1380 module procedure mpp_complete_do_update_c4_3d
1382 module procedure mpp_complete_do_update_i4_3d
1387 module procedure mpp_create_group_update_r4_2d
1388 module procedure mpp_create_group_update_r4_3d
1389 module procedure mpp_create_group_update_r4_4d
1390 module procedure mpp_create_group_update_r4_2dv
1391 module procedure mpp_create_group_update_r4_3dv
1392 module procedure mpp_create_group_update_r4_4dv
1393 module procedure mpp_create_group_update_r8_2d
1394 module procedure mpp_create_group_update_r8_3d
1395 module procedure mpp_create_group_update_r8_4d
1396 module procedure mpp_create_group_update_r8_2dv
1397 module procedure mpp_create_group_update_r8_3dv
1398 module procedure mpp_create_group_update_r8_4dv
1402 module procedure mpp_do_group_update_r4
1403 module procedure mpp_do_group_update_r8
1407 module procedure mpp_start_group_update_r4
1408 module procedure mpp_start_group_update_r8
1412 module procedure mpp_complete_group_update_r4
1413 module procedure mpp_complete_group_update_r8
1417 module procedure mpp_reset_group_update_field_r4_2d
1418 module procedure mpp_reset_group_update_field_r4_3d
1419 module procedure mpp_reset_group_update_field_r4_4d
1420 module procedure mpp_reset_group_update_field_r4_2dv
1421 module procedure mpp_reset_group_update_field_r4_3dv
1422 module procedure mpp_reset_group_update_field_r4_4dv
1423 module procedure mpp_reset_group_update_field_r8_2d
1424 module procedure mpp_reset_group_update_field_r8_3d
1425 module procedure mpp_reset_group_update_field_r8_4d
1426 module procedure mpp_reset_group_update_field_r8_2dv
1427 module procedure mpp_reset_group_update_field_r8_3dv
1428 module procedure mpp_reset_group_update_field_r8_4dv
1682 module procedure mpp_update_nest_fine_r8_2d
1683 module procedure mpp_update_nest_fine_r8_3d
1684 module procedure mpp_update_nest_fine_r8_4d
1686 module procedure mpp_update_nest_fine_c8_2d
1687 module procedure mpp_update_nest_fine_c8_3d
1688 module procedure mpp_update_nest_fine_c8_4d
1690 #ifndef no_8byte_integers 1691 module procedure mpp_update_nest_fine_i8_2d
1692 module procedure mpp_update_nest_fine_i8_3d
1693 module procedure mpp_update_nest_fine_i8_4d
1696 module procedure mpp_update_nest_fine_r4_2d
1697 module procedure mpp_update_nest_fine_r4_3d
1698 module procedure mpp_update_nest_fine_r4_4d
1701 module procedure mpp_update_nest_fine_c4_2d
1702 module procedure mpp_update_nest_fine_c4_3d
1703 module procedure mpp_update_nest_fine_c4_4d
1705 module procedure mpp_update_nest_fine_i4_2d
1706 module procedure mpp_update_nest_fine_i4_3d
1707 module procedure mpp_update_nest_fine_i4_4d
1711 module procedure mpp_do_update_nest_fine_r8_3d
1713 module procedure mpp_do_update_nest_fine_c8_3d
1715 #ifndef no_8byte_integers 1716 module procedure mpp_do_update_nest_fine_i8_3d
1719 module procedure mpp_do_update_nest_fine_r4_3d
1722 module procedure mpp_do_update_nest_fine_c4_3d
1724 module procedure mpp_do_update_nest_fine_i4_3d
1728 module procedure mpp_update_nest_coarse_r8_2d
1729 module procedure mpp_update_nest_coarse_r8_3d
1730 module procedure mpp_update_nest_coarse_r8_4d
1732 module procedure mpp_update_nest_coarse_c8_2d
1733 module procedure mpp_update_nest_coarse_c8_3d
1734 module procedure mpp_update_nest_coarse_c8_4d
1736 #ifndef no_8byte_integers 1737 module procedure mpp_update_nest_coarse_i8_2d
1738 module procedure mpp_update_nest_coarse_i8_3d
1739 module procedure mpp_update_nest_coarse_i8_4d
1742 module procedure mpp_update_nest_coarse_r4_2d
1743 module procedure mpp_update_nest_coarse_r4_3d
1744 module procedure mpp_update_nest_coarse_r4_4d
1747 module procedure mpp_update_nest_coarse_c4_2d
1748 module procedure mpp_update_nest_coarse_c4_3d
1749 module procedure mpp_update_nest_coarse_c4_4d
1751 module procedure mpp_update_nest_coarse_i4_2d
1752 module procedure mpp_update_nest_coarse_i4_3d
1753 module procedure mpp_update_nest_coarse_i4_4d
1757 module procedure mpp_do_update_nest_coarse_r8_3d
1759 module procedure mpp_do_update_nest_coarse_c8_3d
1761 #ifndef no_8byte_integers 1762 module procedure mpp_do_update_nest_coarse_i8_3d
1765 module procedure mpp_do_update_nest_coarse_r4_3d
1768 module procedure mpp_do_update_nest_coarse_c4_3d
1770 module procedure mpp_do_update_nest_coarse_i4_3d
1775 module procedure mpp_broadcast_domain_1
1776 module procedure mpp_broadcast_domain_2
1777 module procedure mpp_broadcast_domain_ug
1784 module procedure mpp_update_domains_ad_2d_r8_2d
1785 module procedure mpp_update_domains_ad_2d_r8_3d
1786 module procedure mpp_update_domains_ad_2d_r8_4d
1787 module procedure mpp_update_domains_ad_2d_r8_5d
1788 module procedure mpp_update_domains_ad_2d_r8_2dv
1789 module procedure mpp_update_domains_ad_2d_r8_3dv
1790 module procedure mpp_update_domains_ad_2d_r8_4dv
1791 module procedure mpp_update_domains_ad_2d_r8_5dv
1793 module procedure mpp_update_domains_ad_2d_r4_2d
1794 module procedure mpp_update_domains_ad_2d_r4_3d
1795 module procedure mpp_update_domains_ad_2d_r4_4d
1796 module procedure mpp_update_domains_ad_2d_r4_5d
1797 module procedure mpp_update_domains_ad_2d_r4_2dv
1798 module procedure mpp_update_domains_ad_2d_r4_3dv
1799 module procedure mpp_update_domains_ad_2d_r4_4dv
1800 module procedure mpp_update_domains_ad_2d_r4_5dv
1806 module procedure mpp_do_update_r8_3d
1807 module procedure mpp_do_update_r8_3dv
1809 module procedure mpp_do_update_c8_3d
1811 #ifndef no_8byte_integers 1812 module procedure mpp_do_update_i8_3d
1815 module procedure mpp_do_update_r4_3d
1816 module procedure mpp_do_update_r4_3dv
1819 module procedure mpp_do_update_c4_3d
1821 module procedure mpp_do_update_i4_3d
1825 module procedure mpp_do_check_r8_3d
1826 module procedure mpp_do_check_r8_3dv
1828 module procedure mpp_do_check_c8_3d
1830 #ifndef no_8byte_integers 1831 module procedure mpp_do_check_i8_3d
1834 module procedure mpp_do_check_r4_3d
1835 module procedure mpp_do_check_r4_3dv
1838 module procedure mpp_do_check_c4_3d
1840 module procedure mpp_do_check_i4_3d
1845 module procedure mpp_pass_sg_to_ug_r8_2d
1846 module procedure mpp_pass_sg_to_ug_r8_3d
1848 module procedure mpp_pass_sg_to_ug_r4_2d
1849 module procedure mpp_pass_sg_to_ug_r4_3d
1851 module procedure mpp_pass_sg_to_ug_i4_2d
1852 module procedure mpp_pass_sg_to_ug_i4_3d
1853 module procedure mpp_pass_sg_to_ug_l4_2d
1854 module procedure mpp_pass_sg_to_ug_l4_3d
1858 module procedure mpp_pass_ug_to_sg_r8_2d
1859 module procedure mpp_pass_ug_to_sg_r8_3d
1861 module procedure mpp_pass_ug_to_sg_r4_2d
1862 module procedure mpp_pass_ug_to_sg_r4_3d
1864 module procedure mpp_pass_ug_to_sg_i4_2d
1865 module procedure mpp_pass_ug_to_sg_i4_3d
1866 module procedure mpp_pass_ug_to_sg_l4_2d
1867 module procedure mpp_pass_ug_to_sg_l4_3d
1875 module procedure mpp_do_update_ad_r8_3d
1876 module procedure mpp_do_update_ad_r8_3dv
1878 module procedure mpp_do_update_ad_r4_3d
1879 module procedure mpp_do_update_ad_r4_3dv
1901 module procedure mpp_get_boundary_r8_2d
1902 module procedure mpp_get_boundary_r8_3d
1905 module procedure mpp_get_boundary_r8_2dv
1906 module procedure mpp_get_boundary_r8_3dv
1910 module procedure mpp_get_boundary_r4_2d
1911 module procedure mpp_get_boundary_r4_3d
1914 module procedure mpp_get_boundary_r4_2dv
1915 module procedure mpp_get_boundary_r4_3dv
1922 module procedure mpp_get_boundary_ad_r8_2d
1923 module procedure mpp_get_boundary_ad_r8_3d
1924 module procedure mpp_get_boundary_ad_r8_2dv
1925 module procedure mpp_get_boundary_ad_r8_3dv
1927 module procedure mpp_get_boundary_ad_r4_2d
1928 module procedure mpp_get_boundary_ad_r4_3d
1929 module procedure mpp_get_boundary_ad_r4_2dv
1930 module procedure mpp_get_boundary_ad_r4_3dv
1935 module procedure mpp_do_get_boundary_r8_3d
1936 module procedure mpp_do_get_boundary_r8_3dv
1938 module procedure mpp_do_get_boundary_r4_3d
1939 module procedure mpp_do_get_boundary_r4_3dv
1944 module procedure mpp_do_get_boundary_ad_r8_3d
1945 module procedure mpp_do_get_boundary_ad_r8_3dv
1947 module procedure mpp_do_get_boundary_ad_r4_3d
1948 module procedure mpp_do_get_boundary_ad_r4_3dv
1973 module procedure mpp_redistribute_r8_2d
1974 module procedure mpp_redistribute_r8_3d
1975 module procedure mpp_redistribute_r8_4d
1976 module procedure mpp_redistribute_r8_5d
1978 module procedure mpp_redistribute_c8_2d
1979 module procedure mpp_redistribute_c8_3d
1980 module procedure mpp_redistribute_c8_4d
1981 module procedure mpp_redistribute_c8_5d
1983 #ifndef no_8byte_integers 1984 module procedure mpp_redistribute_i8_2d
1985 module procedure mpp_redistribute_i8_3d
1986 module procedure mpp_redistribute_i8_4d
1987 module procedure mpp_redistribute_i8_5d
1994 module procedure mpp_redistribute_r4_2d
1995 module procedure mpp_redistribute_r4_3d
1996 module procedure mpp_redistribute_r4_4d
1997 module procedure mpp_redistribute_r4_5d
2000 module procedure mpp_redistribute_c4_2d
2001 module procedure mpp_redistribute_c4_3d
2002 module procedure mpp_redistribute_c4_4d
2003 module procedure mpp_redistribute_c4_5d
2005 module procedure mpp_redistribute_i4_2d
2006 module procedure mpp_redistribute_i4_3d
2007 module procedure mpp_redistribute_i4_4d
2008 module procedure mpp_redistribute_i4_5d
2016 module procedure mpp_do_redistribute_r8_3d
2018 module procedure mpp_do_redistribute_c8_3d
2020 #ifndef no_8byte_integers 2021 module procedure mpp_do_redistribute_i8_3d
2022 module procedure mpp_do_redistribute_l8_3d
2025 module procedure mpp_do_redistribute_r4_3d
2028 module procedure mpp_do_redistribute_c4_3d
2030 module procedure mpp_do_redistribute_i4_3d
2031 module procedure mpp_do_redistribute_l4_3d
2070 module procedure mpp_check_field_2d
2071 module procedure mpp_check_field_3d
2112 module procedure mpp_global_field2d_r8_2d
2113 module procedure mpp_global_field2d_r8_3d
2114 module procedure mpp_global_field2d_r8_4d
2115 module procedure mpp_global_field2d_r8_5d
2117 module procedure mpp_global_field2d_c8_2d
2118 module procedure mpp_global_field2d_c8_3d
2119 module procedure mpp_global_field2d_c8_4d
2120 module procedure mpp_global_field2d_c8_5d
2122 #ifndef no_8byte_integers 2123 module procedure mpp_global_field2d_i8_2d
2124 module procedure mpp_global_field2d_i8_3d
2125 module procedure mpp_global_field2d_i8_4d
2126 module procedure mpp_global_field2d_i8_5d
2127 module procedure mpp_global_field2d_l8_2d
2128 module procedure mpp_global_field2d_l8_3d
2129 module procedure mpp_global_field2d_l8_4d
2130 module procedure mpp_global_field2d_l8_5d
2133 module procedure mpp_global_field2d_r4_2d
2134 module procedure mpp_global_field2d_r4_3d
2135 module procedure mpp_global_field2d_r4_4d
2136 module procedure mpp_global_field2d_r4_5d
2139 module procedure mpp_global_field2d_c4_2d
2140 module procedure mpp_global_field2d_c4_3d
2141 module procedure mpp_global_field2d_c4_4d
2142 module procedure mpp_global_field2d_c4_5d
2144 module procedure mpp_global_field2d_i4_2d
2145 module procedure mpp_global_field2d_i4_3d
2146 module procedure mpp_global_field2d_i4_4d
2147 module procedure mpp_global_field2d_i4_5d
2148 module procedure mpp_global_field2d_l4_2d
2149 module procedure mpp_global_field2d_l4_3d
2150 module procedure mpp_global_field2d_l4_4d
2151 module procedure mpp_global_field2d_l4_5d
2155 module procedure mpp_global_field2d_r8_2d_ad
2156 module procedure mpp_global_field2d_r8_3d_ad
2157 module procedure mpp_global_field2d_r8_4d_ad
2158 module procedure mpp_global_field2d_r8_5d_ad
2160 module procedure mpp_global_field2d_c8_2d_ad
2161 module procedure mpp_global_field2d_c8_3d_ad
2162 module procedure mpp_global_field2d_c8_4d_ad
2163 module procedure mpp_global_field2d_c8_5d_ad
2165 #ifndef no_8byte_integers 2166 module procedure mpp_global_field2d_i8_2d_ad
2167 module procedure mpp_global_field2d_i8_3d_ad
2168 module procedure mpp_global_field2d_i8_4d_ad
2169 module procedure mpp_global_field2d_i8_5d_ad
2170 module procedure mpp_global_field2d_l8_2d_ad
2171 module procedure mpp_global_field2d_l8_3d_ad
2172 module procedure mpp_global_field2d_l8_4d_ad
2173 module procedure mpp_global_field2d_l8_5d_ad
2176 module procedure mpp_global_field2d_r4_2d_ad
2177 module procedure mpp_global_field2d_r4_3d_ad
2178 module procedure mpp_global_field2d_r4_4d_ad
2179 module procedure mpp_global_field2d_r4_5d_ad
2182 module procedure mpp_global_field2d_c4_2d_ad
2183 module procedure mpp_global_field2d_c4_3d_ad
2184 module procedure mpp_global_field2d_c4_4d_ad
2185 module procedure mpp_global_field2d_c4_5d_ad
2187 module procedure mpp_global_field2d_i4_2d_ad
2188 module procedure mpp_global_field2d_i4_3d_ad
2189 module procedure mpp_global_field2d_i4_4d_ad
2190 module procedure mpp_global_field2d_i4_5d_ad
2191 module procedure mpp_global_field2d_l4_2d_ad
2192 module procedure mpp_global_field2d_l4_3d_ad
2193 module procedure mpp_global_field2d_l4_4d_ad
2194 module procedure mpp_global_field2d_l4_5d_ad
2198 module procedure mpp_do_global_field2d_r8_3d
2200 module procedure mpp_do_global_field2d_c8_3d
2202 #ifndef no_8byte_integers 2203 module procedure mpp_do_global_field2d_i8_3d
2204 module procedure mpp_do_global_field2d_l8_3d
2207 module procedure mpp_do_global_field2d_r4_3d
2210 module procedure mpp_do_global_field2d_c4_3d
2212 module procedure mpp_do_global_field2d_i4_3d
2213 module procedure mpp_do_global_field2d_l4_3d
2217 module procedure mpp_do_global_field2d_a2a_r8_3d
2219 module procedure mpp_do_global_field2d_a2a_c8_3d
2221 #ifndef no_8byte_integers 2222 module procedure mpp_do_global_field2d_a2a_i8_3d
2223 module procedure mpp_do_global_field2d_a2a_l8_3d
2226 module procedure mpp_do_global_field2d_a2a_r4_3d
2229 module procedure mpp_do_global_field2d_a2a_c4_3d
2231 module procedure mpp_do_global_field2d_a2a_i4_3d
2232 module procedure mpp_do_global_field2d_a2a_l4_3d
2236 module procedure mpp_global_field2d_ug_r8_2d
2237 module procedure mpp_global_field2d_ug_r8_3d
2238 module procedure mpp_global_field2d_ug_r8_4d
2239 module procedure mpp_global_field2d_ug_r8_5d
2240 #ifndef no_8byte_integers 2241 module procedure mpp_global_field2d_ug_i8_2d
2242 module procedure mpp_global_field2d_ug_i8_3d
2243 module procedure mpp_global_field2d_ug_i8_4d
2244 module procedure mpp_global_field2d_ug_i8_5d
2247 module procedure mpp_global_field2d_ug_r4_2d
2248 module procedure mpp_global_field2d_ug_r4_3d
2249 module procedure mpp_global_field2d_ug_r4_4d
2250 module procedure mpp_global_field2d_ug_r4_5d
2252 module procedure mpp_global_field2d_ug_i4_2d
2253 module procedure mpp_global_field2d_ug_i4_3d
2254 module procedure mpp_global_field2d_ug_i4_4d
2255 module procedure mpp_global_field2d_ug_i4_5d
2259 module procedure mpp_do_global_field2d_r8_3d_ad
2261 module procedure mpp_do_global_field2d_c8_3d_ad
2263 #ifndef no_8byte_integers 2264 module procedure mpp_do_global_field2d_i8_3d_ad
2265 module procedure mpp_do_global_field2d_l8_3d_ad
2268 module procedure mpp_do_global_field2d_r4_3d_ad
2271 module procedure mpp_do_global_field2d_c4_3d_ad
2273 module procedure mpp_do_global_field2d_i4_3d_ad
2274 module procedure mpp_do_global_field2d_l4_3d_ad
2309 module procedure mpp_global_max_r8_2d
2310 module procedure mpp_global_max_r8_3d
2311 module procedure mpp_global_max_r8_4d
2312 module procedure mpp_global_max_r8_5d
2314 module procedure mpp_global_max_r4_2d
2315 module procedure mpp_global_max_r4_3d
2316 module procedure mpp_global_max_r4_4d
2317 module procedure mpp_global_max_r4_5d
2319 #ifndef no_8byte_integers 2320 module procedure mpp_global_max_i8_2d
2321 module procedure mpp_global_max_i8_3d
2322 module procedure mpp_global_max_i8_4d
2323 module procedure mpp_global_max_i8_5d
2325 module procedure mpp_global_max_i4_2d
2326 module procedure mpp_global_max_i4_3d
2327 module procedure mpp_global_max_i4_4d
2328 module procedure mpp_global_max_i4_5d
2332 module procedure mpp_global_min_r8_2d
2333 module procedure mpp_global_min_r8_3d
2334 module procedure mpp_global_min_r8_4d
2335 module procedure mpp_global_min_r8_5d
2337 module procedure mpp_global_min_r4_2d
2338 module procedure mpp_global_min_r4_3d
2339 module procedure mpp_global_min_r4_4d
2340 module procedure mpp_global_min_r4_5d
2342 #ifndef no_8byte_integers 2343 module procedure mpp_global_min_i8_2d
2344 module procedure mpp_global_min_i8_3d
2345 module procedure mpp_global_min_i8_4d
2346 module procedure mpp_global_min_i8_5d
2348 module procedure mpp_global_min_i4_2d
2349 module procedure mpp_global_min_i4_3d
2350 module procedure mpp_global_min_i4_4d
2351 module procedure mpp_global_min_i4_5d
2391 module procedure mpp_global_sum_r8_2d
2392 module procedure mpp_global_sum_r8_3d
2393 module procedure mpp_global_sum_r8_4d
2394 module procedure mpp_global_sum_r8_5d
2396 module procedure mpp_global_sum_c8_2d
2397 module procedure mpp_global_sum_c8_3d
2398 module procedure mpp_global_sum_c8_4d
2399 module procedure mpp_global_sum_c8_5d
2402 module procedure mpp_global_sum_r4_2d
2403 module procedure mpp_global_sum_r4_3d
2404 module procedure mpp_global_sum_r4_4d
2405 module procedure mpp_global_sum_r4_5d
2408 module procedure mpp_global_sum_c4_2d
2409 module procedure mpp_global_sum_c4_3d
2410 module procedure mpp_global_sum_c4_4d
2411 module procedure mpp_global_sum_c4_5d
2413 #ifndef no_8byte_integers 2414 module procedure mpp_global_sum_i8_2d
2415 module procedure mpp_global_sum_i8_3d
2416 module procedure mpp_global_sum_i8_4d
2417 module procedure mpp_global_sum_i8_5d
2419 module procedure mpp_global_sum_i4_2d
2420 module procedure mpp_global_sum_i4_3d
2421 module procedure mpp_global_sum_i4_4d
2422 module procedure mpp_global_sum_i4_5d
2427 module procedure mpp_global_sum_tl_r8_2d
2428 module procedure mpp_global_sum_tl_r8_3d
2429 module procedure mpp_global_sum_tl_r8_4d
2430 module procedure mpp_global_sum_tl_r8_5d
2432 module procedure mpp_global_sum_tl_c8_2d
2433 module procedure mpp_global_sum_tl_c8_3d
2434 module procedure mpp_global_sum_tl_c8_4d
2435 module procedure mpp_global_sum_tl_c8_5d
2438 module procedure mpp_global_sum_tl_r4_2d
2439 module procedure mpp_global_sum_tl_r4_3d
2440 module procedure mpp_global_sum_tl_r4_4d
2441 module procedure mpp_global_sum_tl_r4_5d
2444 module procedure mpp_global_sum_tl_c4_2d
2445 module procedure mpp_global_sum_tl_c4_3d
2446 module procedure mpp_global_sum_tl_c4_4d
2447 module procedure mpp_global_sum_tl_c4_5d
2449 #ifndef no_8byte_integers 2450 module procedure mpp_global_sum_tl_i8_2d
2451 module procedure mpp_global_sum_tl_i8_3d
2452 module procedure mpp_global_sum_tl_i8_4d
2453 module procedure mpp_global_sum_tl_i8_5d
2455 module procedure mpp_global_sum_tl_i4_2d
2456 module procedure mpp_global_sum_tl_i4_3d
2457 module procedure mpp_global_sum_tl_i4_4d
2458 module procedure mpp_global_sum_tl_i4_5d
2464 module procedure mpp_global_sum_ad_r8_2d
2465 module procedure mpp_global_sum_ad_r8_3d
2466 module procedure mpp_global_sum_ad_r8_4d
2467 module procedure mpp_global_sum_ad_r8_5d
2469 module procedure mpp_global_sum_ad_c8_2d
2470 module procedure mpp_global_sum_ad_c8_3d
2471 module procedure mpp_global_sum_ad_c8_4d
2472 module procedure mpp_global_sum_ad_c8_5d
2475 module procedure mpp_global_sum_ad_r4_2d
2476 module procedure mpp_global_sum_ad_r4_3d
2477 module procedure mpp_global_sum_ad_r4_4d
2478 module procedure mpp_global_sum_ad_r4_5d
2481 module procedure mpp_global_sum_ad_c4_2d
2482 module procedure mpp_global_sum_ad_c4_3d
2483 module procedure mpp_global_sum_ad_c4_4d
2484 module procedure mpp_global_sum_ad_c4_5d
2486 #ifndef no_8byte_integers 2487 module procedure mpp_global_sum_ad_i8_2d
2488 module procedure mpp_global_sum_ad_i8_3d
2489 module procedure mpp_global_sum_ad_i8_4d
2490 module procedure mpp_global_sum_ad_i8_5d
2492 module procedure mpp_global_sum_ad_i4_2d
2493 module procedure mpp_global_sum_ad_i4_3d
2494 module procedure mpp_global_sum_ad_i4_4d
2495 module procedure mpp_global_sum_ad_i4_5d
2525 module procedure mpp_get_neighbor_pe_1d
2526 module procedure mpp_get_neighbor_pe_2d
2553 interface operator(.EQ.)
2554 module procedure mpp_domain1d_eq
2555 module procedure mpp_domain2d_eq
2556 module procedure mpp_domainug_eq
2559 interface operator(.NE.)
2560 module procedure mpp_domain1d_ne
2561 module procedure mpp_domain2d_ne
2562 module procedure mpp_domainug_ne
2579 module procedure mpp_get_compute_domain1d
2580 module procedure mpp_get_compute_domain2d
2600 module procedure mpp_get_compute_domains1d
2601 module procedure mpp_get_compute_domains2d
2618 module procedure mpp_get_data_domain1d
2619 module procedure mpp_get_data_domain2d
2636 module procedure mpp_get_global_domain1d
2637 module procedure mpp_get_global_domain2d
2654 module procedure mpp_get_memory_domain1d
2655 module procedure mpp_get_memory_domain2d
2659 module procedure mpp_get_domain_extents1d
2660 module procedure mpp_get_domain_extents2d
2677 module procedure mpp_set_compute_domain1d
2678 module procedure mpp_set_compute_domain2d
2695 module procedure mpp_set_data_domain1d
2696 module procedure mpp_set_data_domain2d
2713 module procedure mpp_set_global_domain1d
2714 module procedure mpp_set_global_domain2d
2735 module procedure mpp_get_pelist1d
2736 module procedure mpp_get_pelist2d
2755 module procedure mpp_get_layout1d
2756 module procedure mpp_get_layout2d
2773 module procedure nullify_domain2d_list
2777 #include<file_version.h> 2783 #include <mpp_define_nest_domains.inc> 2784 #include <mpp_domains_util.inc> 2785 #include <mpp_domains_comm.inc> 2786 #include <mpp_domains_define.inc> 2787 #include <mpp_domains_misc.inc> 2788 #include <mpp_domains_reduce.inc> 2789 #include <mpp_unstruct_domain.inc> integer, parameter maxoverlap
logical efp_sum_overflow_check
integer mpp_domains_stack_hwm
integer, parameter, public nonblock_update_tag
integer, parameter, public bgrid_ne
integer, parameter, public nupdate
integer, parameter, public cgrid_sw
integer, parameter field_s
integer nonblock_group_unpk_clock
integer, parameter, public one_hundred_eighty
logical module_is_initialized
real(fp), parameter, public zero
integer, parameter, public null_pe
integer, parameter, public dgrid_ne
integer, parameter maxlist
integer, parameter, public non_bitwise_exact_sum
subroutine, public mpp_memuse_begin
integer, parameter field_y
integer, parameter, public global_data_domain
integer, parameter field_x
integer nonblock_group_send_clock
integer nonblock_buffer_pos
integer, parameter, public corner
integer, parameter max_addrs
integer(long_kind), dimension(max_fields), save dckey_sorted
integer, parameter, public mpp_domain_time
integer nonblock_group_pack_clock
integer, parameter, public scalar_bit
integer, parameter, public bgrid_sw
integer(long_kind), parameter gt_base
integer, parameter max_nonblock_update
integer, parameter, public bitwise_exact_sum
integer, parameter, public event_send
integer, dimension(max_addrs2), save a2_salvage
integer, parameter, public wupdate
integer, parameter, public fold_south_edge
integer(long_kind), parameter ke_base
integer current_id_update
integer, parameter max_fields
integer, parameter, public yupdate
integer, parameter, public west
subroutine, public mpp_pset_init
integer nonblock_group_buffer_pos
character(len=input_str_length), dimension(:), allocatable, target, public input_nml_file
integer, dimension(-1:max_addrs), save addrs_idx
integer(long_kind), dimension(max_addrs2), save addrs2_sorted
integer, parameter, public agrid
integer recv_clock_nonblock
integer send_pack_clock_nonblock
integer, parameter, public global
integer(long_kind), dimension(max_addrs), save addrs_sorted
integer, dimension(-1:max_fields), save d_comm_idx
integer, parameter, public mpp_debug
integer, parameter max_request
integer, dimension(max_addrs), save a_salvage
integer, save dc_sort_len
integer(long_kind) domain_cnt
integer, parameter, public center
type(domain2d), save, public null_domain2d
integer, save a2_sort_len
integer, parameter, public south_west
integer nonblock_group_wait_clock
integer, parameter max_addrs2
integer, parameter, public cyclic_global_domain
integer group_update_buffer_pos
integer, parameter, public fold_east_edge
integer, parameter, public nonsymedge
integer, parameter, public nonsymedgeupdate
integer, parameter, public east
subroutine, public mpp_memuse_end(text, unit)
integer mpp_domains_stack_size
integer, parameter, public supdate
integer, parameter, public fold_north_edge
integer, parameter, public max_tiles
type(domainug), save, public null_domainug
logical debug_message_passing
logical complete_group_update_on
integer, parameter, public event_recv
integer, parameter name_length
integer, parameter, public edgeupdate
integer, parameter, public mpp_verbose
integer, parameter, public xupdate
integer(long_kind), parameter, public domain_id_base
************************************************************************GNU Lesser General Public License **This file is part of the GFDL Flexible Modeling System(FMS). ! *! *FMS is free software without even the implied warranty of MERCHANTABILITY or *FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public License *for more details **You should have received a copy of the GNU Lesser General Public *License along with FMS If see< http:! ***********************************************************************subroutine READ_RECORD_CORE_(unit, field, nwords, data, start, axsiz) integer, intent(in) ::unit type(fieldtype), intent(in) ::field integer, intent(in) ::nwords MPP_TYPE_, intent(inout) ::data(nwords) integer, intent(in) ::start(:), axsiz(:) integer(SHORT_KIND) ::i2vals(nwords)!rab used in conjunction with transfer intrinsic to determine size of a variable integer(KIND=1) ::one_byte(8) integer ::word_sz!#ifdef __sgi integer(INT_KIND) ::ivals(nwords) real(FLOAT_KIND) ::rvals(nwords)!#else! integer ::ivals(nwords)! real ::rvals(nwords)!#endif real(DOUBLE_KIND) ::r8vals(nwords) pointer(ptr1, i2vals) pointer(ptr2, ivals) pointer(ptr3, rvals) pointer(ptr4, r8vals) if(mpp_io_stack_size< nwords) call mpp_io_set_stack_size(nwords) call mpp_error(FATAL, 'MPP_READ currently requires use_netCDF option') end subroutine READ_RECORD_CORE_ subroutine READ_RECORD_(unit, field, nwords, data, time_level, domain, position, tile_count, start_in, axsiz_in)!routine that is finally called by all mpp_read routines to perform the read!a non-netCDF record contains:! field ID! a set of 4 coordinates(is:ie, js:je) giving the data subdomain! a timelevel and a timestamp(=NULLTIME if field is static)! 3D real data(stored as 1D)!if you are using direct access I/O, the RECL argument to OPEN must be large enough for the above!in a global direct access file, record position on PE is given by %record.!Treatment of timestamp:! We assume that static fields have been passed without a timestamp.! Here that is converted into a timestamp of NULLTIME.! For non-netCDF fields, field is treated no differently, but is written! with a timestamp of NULLTIME. There is no check in the code to prevent! the user from repeatedly writing a static field. integer, intent(in) ::unit, nwords type(fieldtype), intent(in) ::field MPP_TYPE_, intent(inout) ::data(nwords) integer, intent(in), optional ::time_level type(domain2D), intent(in), optional ::domain integer, intent(in), optional ::position, tile_count integer, intent(in), optional ::start_in(:), axsiz_in(:) integer, dimension(size(field%axes(:))) ::start, axsiz integer ::tlevel !, subdomain(4) integer ::i, error, is, ie, js, je, isg, ieg, jsg, jeg type(domain2d), pointer ::io_domain=> tlevel if(PRESENT(start_in) .AND. PRESENT(axsiz_in)) then if(size(start(! the data domain and compute domain must refer to the subdomain being passed ! In this ! since that attempts to gather all data on PE size(field%axes(:)) axsiz(i)
character(len=32) debug_update_domain
integer, parameter, public fold_west_edge
integer, parameter, public minus_ninety
integer wait_clock_nonblock
integer, parameter, public north
type(nonblock_type), dimension(:), allocatable nonblock_data
integer, parameter, public cyclic
type(domaincommunicator2d), dimension(:), allocatable, target, save d_comm
integer(long_kind), parameter addr2_base
integer, parameter no_check
integer, parameter, public eupdate
integer, parameter, public max_domain_fields
integer, parameter, public edgeonly
integer, parameter, public bitwise_efp_sum
integer, parameter, public root_global
integer, dimension(max_fields), save dc_salvage
integer, dimension(-1:max_addrs2), save addrs2_idx
integer, parameter, public north_east
integer, parameter, public south
integer nthread_control_loop
integer(long_kind), dimension(max_dom_ids), save ids_sorted
integer, parameter, public ninety
integer, parameter max_dom_ids
integer nonblock_group_recv_clock
integer, parameter, public north_west
integer, parameter, public scalar_pair
type(mpp_type), target, public mpp_byte
integer, dimension(-1:max_dom_ids), save ids_idx
integer, parameter, public cgrid_ne
integer num_nonblock_group_update
integer unpk_clock_nonblock
integer debug_update_level
integer, parameter, public south_east
integer, parameter, public dgrid_sw
type(domain1d), save, public null_domain1d