154#if defined( __PGI) || defined (__FLANG)
155#define rank(X) size(shape(X))
159#if defined(use_libMPI)
163 use iso_fortran_env,
only : input_unit, output_unit, error_unit
164 use mpp_parameter_mod,
only : mpp_verbose, mpp_debug, all_pes, any_pe, null_pe
165 use mpp_parameter_mod,
only : note, warning, fatal, mpp_clock_detailed,mpp_clock_sync
166 use mpp_parameter_mod,
only : clock_component, clock_subcomponent, clock_module_driver
167 use mpp_parameter_mod,
only : clock_module, clock_routine, clock_loop, clock_infra
168 use mpp_parameter_mod,
only : max_events, max_bins, max_event_types, max_clocks
169 use mpp_parameter_mod,
only : maxpes, event_wait, event_allreduce, event_broadcast
170 use mpp_parameter_mod,
only : event_alltoall
171 use mpp_parameter_mod,
only : event_type_create, event_type_free
172 use mpp_parameter_mod,
only : event_recv, event_send, mpp_ready, mpp_wait
173 use mpp_parameter_mod,
only : mpp_parameter_version=>version
174 use mpp_parameter_mod,
only : default_tag
175 use mpp_parameter_mod,
only : comm_tag_1, comm_tag_2, comm_tag_3, comm_tag_4
176 use mpp_parameter_mod,
only : comm_tag_5, comm_tag_6, comm_tag_7, comm_tag_8
177 use mpp_parameter_mod,
only : comm_tag_9, comm_tag_10, comm_tag_11, comm_tag_12
178 use mpp_parameter_mod,
only : comm_tag_13, comm_tag_14, comm_tag_15, comm_tag_16
179 use mpp_parameter_mod,
only : comm_tag_17, comm_tag_18, comm_tag_19, comm_tag_20
180 use mpp_parameter_mod,
only : mpp_fill_int,mpp_fill_double
181 use mpp_data_mod,
only : stat, mpp_stack, ptr_stack, status, ptr_status, sync, ptr_sync
182 use mpp_data_mod,
only : mpp_from_pe, ptr_from, remote_data_loc, ptr_remote
183 use mpp_data_mod,
only : mpp_data_version=>version
190 public :: mpp_verbose, mpp_debug, all_pes, any_pe, null_pe, note, warning, fatal
191 public :: mpp_clock_sync, mpp_clock_detailed, clock_component, clock_subcomponent
192 public :: clock_module_driver, clock_module, clock_routine, clock_loop, clock_infra
193 public :: maxpes, event_recv, event_send
194 public :: comm_tag_1, comm_tag_2, comm_tag_3, comm_tag_4
195 public :: comm_tag_5, comm_tag_6, comm_tag_7, comm_tag_8
196 public :: comm_tag_9, comm_tag_10, comm_tag_11, comm_tag_12
197 public :: comm_tag_13, comm_tag_14, comm_tag_15, comm_tag_16
198 public :: comm_tag_17, comm_tag_18, comm_tag_19, comm_tag_20
200 public :: mpp_init_test_full_init, mpp_init_test_init_true_only, mpp_init_test_peset_allocated
201 public :: mpp_init_test_clocks_init, mpp_init_test_datatype_list_init, mpp_init_test_logfile_init
202 public :: mpp_init_test_read_namelist, mpp_init_test_etc_unit, mpp_init_test_requests_allocated
205 public :: stdin, stdout, stderr, stdlog, warnlog, lowercase, uppercase,
mpp_error, mpp_error_state
207 public :: mpp_npes, mpp_root_pe, mpp_set_root_pe, mpp_declare_pelist
208 public :: mpp_get_current_pelist, mpp_set_current_pelist, mpp_get_current_pelist_name
209 public :: mpp_clock_id, mpp_clock_set_grain, mpp_record_timing_data, get_unit
210 public :: read_ascii_file, read_input_nml, mpp_clock_begin, mpp_clock_end
211 public :: get_ascii_file_num_lines, get_ascii_file_num_lines_and_length
212 public :: mpp_record_time_start, mpp_record_time_end
232 character(len=32) :: name
233 integer,
pointer :: list(:) =>null()
235 integer :: start, log2stride
243 character(len=16) :: name
244 integer(i8_kind),
dimension(MAX_EVENTS) :: ticks, bytes
252 character(len=32) :: name
253 integer(i8_kind) :: hits
254 integer(i8_kind) :: tick
255 integer(i8_kind) :: total_ticks
257 logical :: sync_on_begin, detailed
259 type(event),
pointer :: events(:) =>null()
268 character(len=16) :: name
269 real(r8_kind) :: msg_size_sums(MAX_BINS)
270 real(r8_kind) :: msg_time_sums(MAX_BINS)
271 real(r8_kind) :: total_data
272 real(r8_kind) :: total_time
273 integer(i8_kind) :: msg_size_cnts(MAX_BINS)
274 integer(i8_kind) :: total_cnts
281 character(len=16) :: name
282 type (Clock_Data_Summary) :: event(MAX_EVENT_TYPES)
291 integer,
allocatable :: sizes(:)
292 integer,
allocatable :: subsizes(:)
293 integer,
allocatable :: starts(:)
297 type(mpp_type),
pointer :: prev => null()
298 type(mpp_type),
pointer :: next => null()
305 type(mpp_type),
pointer :: head => null()
306 type(mpp_type),
pointer :: tail => null()
384 module procedure mpp_error_mesg
385 module procedure mpp_error_noargs
386 module procedure mpp_error_is
387 module procedure mpp_error_rs
388 module procedure mpp_error_ia
389 module procedure mpp_error_ra
390 module procedure mpp_error_ia_ia
391 module procedure mpp_error_ia_ra
392 module procedure mpp_error_ra_ia
393 module procedure mpp_error_ra_ra
394 module procedure mpp_error_ia_is
395 module procedure mpp_error_ia_rs
396 module procedure mpp_error_ra_is
397 module procedure mpp_error_ra_rs
398 module procedure mpp_error_is_ia
399 module procedure mpp_error_is_ra
400 module procedure mpp_error_rs_ia
401 module procedure mpp_error_rs_ra
402 module procedure mpp_error_is_is
403 module procedure mpp_error_is_rs
404 module procedure mpp_error_rs_is
405 module procedure mpp_error_rs_rs
412 module procedure iarray_to_char
413 module procedure rarray_to_char
495 public :: mpp_set_stack_size
511 module procedure mpp_type_create_int4
512 module procedure mpp_type_create_int8
513 module procedure mpp_type_create_real4
514 module procedure mpp_type_create_real8
515 module procedure mpp_type_create_cmplx4
516 module procedure mpp_type_create_cmplx8
517 module procedure mpp_type_create_logical4
518 module procedure mpp_type_create_logical8
539 module procedure mpp_max_real8_0d
540 module procedure mpp_max_real8_1d
541 module procedure mpp_max_int8_0d
542 module procedure mpp_max_int8_1d
543 module procedure mpp_max_real4_0d
544 module procedure mpp_max_real4_1d
545 module procedure mpp_max_int4_0d
546 module procedure mpp_max_int4_1d
561 module procedure mpp_min_real8_0d
562 module procedure mpp_min_real8_1d
563 module procedure mpp_min_int8_0d
564 module procedure mpp_min_int8_1d
565 module procedure mpp_min_real4_0d
566 module procedure mpp_min_real4_1d
567 module procedure mpp_min_int4_0d
568 module procedure mpp_min_int4_1d
598 module procedure mpp_sum_int8
599 module procedure mpp_sum_int8_scalar
600 module procedure mpp_sum_int8_2d
601 module procedure mpp_sum_int8_3d
602 module procedure mpp_sum_int8_4d
603 module procedure mpp_sum_int8_5d
604 module procedure mpp_sum_real8
605 module procedure mpp_sum_real8_scalar
606 module procedure mpp_sum_real8_2d
607 module procedure mpp_sum_real8_3d
608 module procedure mpp_sum_real8_4d
609 module procedure mpp_sum_real8_5d
611 module procedure mpp_sum_cmplx8
612 module procedure mpp_sum_cmplx8_scalar
613 module procedure mpp_sum_cmplx8_2d
614 module procedure mpp_sum_cmplx8_3d
615 module procedure mpp_sum_cmplx8_4d
616 module procedure mpp_sum_cmplx8_5d
618 module procedure mpp_sum_int4
619 module procedure mpp_sum_int4_scalar
620 module procedure mpp_sum_int4_2d
621 module procedure mpp_sum_int4_3d
622 module procedure mpp_sum_int4_4d
623 module procedure mpp_sum_int4_5d
624 module procedure mpp_sum_real4
625 module procedure mpp_sum_real4_scalar
626 module procedure mpp_sum_real4_2d
627 module procedure mpp_sum_real4_3d
628 module procedure mpp_sum_real4_4d
629 module procedure mpp_sum_real4_5d
631 module procedure mpp_sum_cmplx4
632 module procedure mpp_sum_cmplx4_scalar
633 module procedure mpp_sum_cmplx4_2d
634 module procedure mpp_sum_cmplx4_3d
635 module procedure mpp_sum_cmplx4_4d
636 module procedure mpp_sum_cmplx4_5d
643 module procedure mpp_sum_int8_ad
644 module procedure mpp_sum_int8_scalar_ad
645 module procedure mpp_sum_int8_2d_ad
646 module procedure mpp_sum_int8_3d_ad
647 module procedure mpp_sum_int8_4d_ad
648 module procedure mpp_sum_int8_5d_ad
649 module procedure mpp_sum_real8_ad
650 module procedure mpp_sum_real8_scalar_ad
651 module procedure mpp_sum_real8_2d_ad
652 module procedure mpp_sum_real8_3d_ad
653 module procedure mpp_sum_real8_4d_ad
654 module procedure mpp_sum_real8_5d_ad
656 module procedure mpp_sum_cmplx8_ad
657 module procedure mpp_sum_cmplx8_scalar_ad
658 module procedure mpp_sum_cmplx8_2d_ad
659 module procedure mpp_sum_cmplx8_3d_ad
660 module procedure mpp_sum_cmplx8_4d_ad
661 module procedure mpp_sum_cmplx8_5d_ad
663 module procedure mpp_sum_int4_ad
664 module procedure mpp_sum_int4_scalar_ad
665 module procedure mpp_sum_int4_2d_ad
666 module procedure mpp_sum_int4_3d_ad
667 module procedure mpp_sum_int4_4d_ad
668 module procedure mpp_sum_int4_5d_ad
669 module procedure mpp_sum_real4_ad
670 module procedure mpp_sum_real4_scalar_ad
671 module procedure mpp_sum_real4_2d_ad
672 module procedure mpp_sum_real4_3d_ad
673 module procedure mpp_sum_real4_4d_ad
674 module procedure mpp_sum_real4_5d_ad
676 module procedure mpp_sum_cmplx4_ad
677 module procedure mpp_sum_cmplx4_scalar_ad
678 module procedure mpp_sum_cmplx4_2d_ad
679 module procedure mpp_sum_cmplx4_3d_ad
680 module procedure mpp_sum_cmplx4_4d_ad
681 module procedure mpp_sum_cmplx4_5d_ad
699 module procedure mpp_gather_logical_1d
700 module procedure mpp_gather_int4_1d
701 module procedure mpp_gather_int8_1d
702 module procedure mpp_gather_real4_1d
703 module procedure mpp_gather_real8_1d
704 module procedure mpp_gather_logical_1dv
705 module procedure mpp_gather_int4_1dv
706 module procedure mpp_gather_int8_1dv
707 module procedure mpp_gather_real4_1dv
708 module procedure mpp_gather_real8_1dv
709 module procedure mpp_gather_pelist_logical_2d
710 module procedure mpp_gather_pelist_logical_3d
711 module procedure mpp_gather_pelist_int4_2d
712 module procedure mpp_gather_pelist_int4_3d
713 module procedure mpp_gather_pelist_int8_2d
714 module procedure mpp_gather_pelist_int8_3d
715 module procedure mpp_gather_pelist_real4_2d
716 module procedure mpp_gather_pelist_real4_3d
717 module procedure mpp_gather_pelist_real8_2d
718 module procedure mpp_gather_pelist_real8_3d
739 module procedure mpp_scatter_pelist_int4_2d
740 module procedure mpp_scatter_pelist_int4_3d
741 module procedure mpp_scatter_pelist_int8_2d
742 module procedure mpp_scatter_pelist_int8_3d
743 module procedure mpp_scatter_pelist_real4_2d
744 module procedure mpp_scatter_pelist_real4_3d
745 module procedure mpp_scatter_pelist_real8_2d
746 module procedure mpp_scatter_pelist_real8_3d
763 module procedure mpp_alltoall_int4
764 module procedure mpp_alltoall_int8
765 module procedure mpp_alltoall_real4
766 module procedure mpp_alltoall_real8
768 module procedure mpp_alltoall_cmplx4
771 module procedure mpp_alltoall_cmplx8
773 module procedure mpp_alltoall_logical4
774 module procedure mpp_alltoall_logical8
775 module procedure mpp_alltoall_int4_v
776 module procedure mpp_alltoall_int8_v
777 module procedure mpp_alltoall_real4_v
778 module procedure mpp_alltoall_real8_v
780 module procedure mpp_alltoall_cmplx4_v
783 module procedure mpp_alltoall_cmplx8_v
785 module procedure mpp_alltoall_logical4_v
786 module procedure mpp_alltoall_logical8_v
787 module procedure mpp_alltoall_int4_w
788 module procedure mpp_alltoall_int8_w
789 module procedure mpp_alltoall_real4_w
790 module procedure mpp_alltoall_real8_w
792 module procedure mpp_alltoall_cmplx4_w
795 module procedure mpp_alltoall_cmplx8_w
797 module procedure mpp_alltoall_logical4_w
798 module procedure mpp_alltoall_logical8_w
873 module procedure mpp_transmit_real8
874 module procedure mpp_transmit_real8_scalar
875 module procedure mpp_transmit_real8_2d
876 module procedure mpp_transmit_real8_3d
877 module procedure mpp_transmit_real8_4d
878 module procedure mpp_transmit_real8_5d
880 module procedure mpp_transmit_cmplx8
881 module procedure mpp_transmit_cmplx8_scalar
882 module procedure mpp_transmit_cmplx8_2d
883 module procedure mpp_transmit_cmplx8_3d
884 module procedure mpp_transmit_cmplx8_4d
885 module procedure mpp_transmit_cmplx8_5d
887 module procedure mpp_transmit_int8
888 module procedure mpp_transmit_int8_scalar
889 module procedure mpp_transmit_int8_2d
890 module procedure mpp_transmit_int8_3d
891 module procedure mpp_transmit_int8_4d
892 module procedure mpp_transmit_int8_5d
893 module procedure mpp_transmit_logical8
894 module procedure mpp_transmit_logical8_scalar
895 module procedure mpp_transmit_logical8_2d
896 module procedure mpp_transmit_logical8_3d
897 module procedure mpp_transmit_logical8_4d
898 module procedure mpp_transmit_logical8_5d
900 module procedure mpp_transmit_real4
901 module procedure mpp_transmit_real4_scalar
902 module procedure mpp_transmit_real4_2d
903 module procedure mpp_transmit_real4_3d
904 module procedure mpp_transmit_real4_4d
905 module procedure mpp_transmit_real4_5d
908 module procedure mpp_transmit_cmplx4
909 module procedure mpp_transmit_cmplx4_scalar
910 module procedure mpp_transmit_cmplx4_2d
911 module procedure mpp_transmit_cmplx4_3d
912 module procedure mpp_transmit_cmplx4_4d
913 module procedure mpp_transmit_cmplx4_5d
915 module procedure mpp_transmit_int4
916 module procedure mpp_transmit_int4_scalar
917 module procedure mpp_transmit_int4_2d
918 module procedure mpp_transmit_int4_3d
919 module procedure mpp_transmit_int4_4d
920 module procedure mpp_transmit_int4_5d
921 module procedure mpp_transmit_logical4
922 module procedure mpp_transmit_logical4_scalar
923 module procedure mpp_transmit_logical4_2d
924 module procedure mpp_transmit_logical4_3d
925 module procedure mpp_transmit_logical4_4d
926 module procedure mpp_transmit_logical4_5d
938 module procedure mpp_recv_real8
939 module procedure mpp_recv_real8_scalar
940 module procedure mpp_recv_real8_2d
941 module procedure mpp_recv_real8_3d
942 module procedure mpp_recv_real8_4d
943 module procedure mpp_recv_real8_5d
945 module procedure mpp_recv_cmplx8
946 module procedure mpp_recv_cmplx8_scalar
947 module procedure mpp_recv_cmplx8_2d
948 module procedure mpp_recv_cmplx8_3d
949 module procedure mpp_recv_cmplx8_4d
950 module procedure mpp_recv_cmplx8_5d
952 module procedure mpp_recv_int8
953 module procedure mpp_recv_int8_scalar
954 module procedure mpp_recv_int8_2d
955 module procedure mpp_recv_int8_3d
956 module procedure mpp_recv_int8_4d
957 module procedure mpp_recv_int8_5d
958 module procedure mpp_recv_logical8
959 module procedure mpp_recv_logical8_scalar
960 module procedure mpp_recv_logical8_2d
961 module procedure mpp_recv_logical8_3d
962 module procedure mpp_recv_logical8_4d
963 module procedure mpp_recv_logical8_5d
965 module procedure mpp_recv_real4
966 module procedure mpp_recv_real4_scalar
967 module procedure mpp_recv_real4_2d
968 module procedure mpp_recv_real4_3d
969 module procedure mpp_recv_real4_4d
970 module procedure mpp_recv_real4_5d
973 module procedure mpp_recv_cmplx4
974 module procedure mpp_recv_cmplx4_scalar
975 module procedure mpp_recv_cmplx4_2d
976 module procedure mpp_recv_cmplx4_3d
977 module procedure mpp_recv_cmplx4_4d
978 module procedure mpp_recv_cmplx4_5d
980 module procedure mpp_recv_int4
981 module procedure mpp_recv_int4_scalar
982 module procedure mpp_recv_int4_2d
983 module procedure mpp_recv_int4_3d
984 module procedure mpp_recv_int4_4d
985 module procedure mpp_recv_int4_5d
986 module procedure mpp_recv_logical4
987 module procedure mpp_recv_logical4_scalar
988 module procedure mpp_recv_logical4_2d
989 module procedure mpp_recv_logical4_3d
990 module procedure mpp_recv_logical4_4d
991 module procedure mpp_recv_logical4_5d
1005 module procedure mpp_send_real8
1006 module procedure mpp_send_real8_scalar
1007 module procedure mpp_send_real8_2d
1008 module procedure mpp_send_real8_3d
1009 module procedure mpp_send_real8_4d
1010 module procedure mpp_send_real8_5d
1012 module procedure mpp_send_cmplx8
1013 module procedure mpp_send_cmplx8_scalar
1014 module procedure mpp_send_cmplx8_2d
1015 module procedure mpp_send_cmplx8_3d
1016 module procedure mpp_send_cmplx8_4d
1017 module procedure mpp_send_cmplx8_5d
1019 module procedure mpp_send_int8
1020 module procedure mpp_send_int8_scalar
1021 module procedure mpp_send_int8_2d
1022 module procedure mpp_send_int8_3d
1023 module procedure mpp_send_int8_4d
1024 module procedure mpp_send_int8_5d
1025 module procedure mpp_send_logical8
1026 module procedure mpp_send_logical8_scalar
1027 module procedure mpp_send_logical8_2d
1028 module procedure mpp_send_logical8_3d
1029 module procedure mpp_send_logical8_4d
1030 module procedure mpp_send_logical8_5d
1032 module procedure mpp_send_real4
1033 module procedure mpp_send_real4_scalar
1034 module procedure mpp_send_real4_2d
1035 module procedure mpp_send_real4_3d
1036 module procedure mpp_send_real4_4d
1037 module procedure mpp_send_real4_5d
1040 module procedure mpp_send_cmplx4
1041 module procedure mpp_send_cmplx4_scalar
1042 module procedure mpp_send_cmplx4_2d
1043 module procedure mpp_send_cmplx4_3d
1044 module procedure mpp_send_cmplx4_4d
1045 module procedure mpp_send_cmplx4_5d
1047 module procedure mpp_send_int4
1048 module procedure mpp_send_int4_scalar
1049 module procedure mpp_send_int4_2d
1050 module procedure mpp_send_int4_3d
1051 module procedure mpp_send_int4_4d
1052 module procedure mpp_send_int4_5d
1053 module procedure mpp_send_logical4
1054 module procedure mpp_send_logical4_scalar
1055 module procedure mpp_send_logical4_2d
1056 module procedure mpp_send_logical4_3d
1057 module procedure mpp_send_logical4_4d
1058 module procedure mpp_send_logical4_5d
1092 module procedure mpp_broadcast_char
1093 module procedure mpp_broadcast_real8
1094 module procedure mpp_broadcast_real8_scalar
1095 module procedure mpp_broadcast_real8_2d
1096 module procedure mpp_broadcast_real8_3d
1097 module procedure mpp_broadcast_real8_4d
1098 module procedure mpp_broadcast_real8_5d
1100 module procedure mpp_broadcast_cmplx8
1101 module procedure mpp_broadcast_cmplx8_scalar
1102 module procedure mpp_broadcast_cmplx8_2d
1103 module procedure mpp_broadcast_cmplx8_3d
1104 module procedure mpp_broadcast_cmplx8_4d
1105 module procedure mpp_broadcast_cmplx8_5d
1107 module procedure mpp_broadcast_int8
1108 module procedure mpp_broadcast_int8_scalar
1109 module procedure mpp_broadcast_int8_2d
1110 module procedure mpp_broadcast_int8_3d
1111 module procedure mpp_broadcast_int8_4d
1112 module procedure mpp_broadcast_int8_5d
1113 module procedure mpp_broadcast_logical8
1114 module procedure mpp_broadcast_logical8_scalar
1115 module procedure mpp_broadcast_logical8_2d
1116 module procedure mpp_broadcast_logical8_3d
1117 module procedure mpp_broadcast_logical8_4d
1118 module procedure mpp_broadcast_logical8_5d
1120 module procedure mpp_broadcast_real4
1121 module procedure mpp_broadcast_real4_scalar
1122 module procedure mpp_broadcast_real4_2d
1123 module procedure mpp_broadcast_real4_3d
1124 module procedure mpp_broadcast_real4_4d
1125 module procedure mpp_broadcast_real4_5d
1128 module procedure mpp_broadcast_cmplx4
1129 module procedure mpp_broadcast_cmplx4_scalar
1130 module procedure mpp_broadcast_cmplx4_2d
1131 module procedure mpp_broadcast_cmplx4_3d
1132 module procedure mpp_broadcast_cmplx4_4d
1133 module procedure mpp_broadcast_cmplx4_5d
1135 module procedure mpp_broadcast_int4
1136 module procedure mpp_broadcast_int4_scalar
1137 module procedure mpp_broadcast_int4_2d
1138 module procedure mpp_broadcast_int4_3d
1139 module procedure mpp_broadcast_int4_4d
1140 module procedure mpp_broadcast_int4_5d
1141 module procedure mpp_broadcast_logical4
1142 module procedure mpp_broadcast_logical4_scalar
1143 module procedure mpp_broadcast_logical4_2d
1144 module procedure mpp_broadcast_logical4_3d
1145 module procedure mpp_broadcast_logical4_4d
1146 module procedure mpp_broadcast_logical4_5d
1201 module procedure mpp_chksum_i8_1d
1202 module procedure mpp_chksum_i8_2d
1203 module procedure mpp_chksum_i8_3d
1204 module procedure mpp_chksum_i8_4d
1205 module procedure mpp_chksum_i8_5d
1206 module procedure mpp_chksum_i8_1d_rmask
1207 module procedure mpp_chksum_i8_2d_rmask
1208 module procedure mpp_chksum_i8_3d_rmask
1209 module procedure mpp_chksum_i8_4d_rmask
1210 module procedure mpp_chksum_i8_5d_rmask
1212 module procedure mpp_chksum_i4_1d
1213 module procedure mpp_chksum_i4_2d
1214 module procedure mpp_chksum_i4_3d
1215 module procedure mpp_chksum_i4_4d
1216 module procedure mpp_chksum_i4_5d
1217 module procedure mpp_chksum_i4_1d_rmask
1218 module procedure mpp_chksum_i4_2d_rmask
1219 module procedure mpp_chksum_i4_3d_rmask
1220 module procedure mpp_chksum_i4_4d_rmask
1221 module procedure mpp_chksum_i4_5d_rmask
1223 module procedure mpp_chksum_r8_0d
1224 module procedure mpp_chksum_r8_1d
1225 module procedure mpp_chksum_r8_2d
1226 module procedure mpp_chksum_r8_3d
1227 module procedure mpp_chksum_r8_4d
1228 module procedure mpp_chksum_r8_5d
1230 module procedure mpp_chksum_r4_0d
1231 module procedure mpp_chksum_r4_1d
1232 module procedure mpp_chksum_r4_2d
1233 module procedure mpp_chksum_r4_3d
1234 module procedure mpp_chksum_r4_4d
1235 module procedure mpp_chksum_r4_5d
1237 module procedure mpp_chksum_c8_0d
1238 module procedure mpp_chksum_c8_1d
1239 module procedure mpp_chksum_c8_2d
1240 module procedure mpp_chksum_c8_3d
1241 module procedure mpp_chksum_c8_4d
1242 module procedure mpp_chksum_c8_5d
1245 module procedure mpp_chksum_c4_0d
1246 module procedure mpp_chksum_c4_1d
1247 module procedure mpp_chksum_c4_2d
1248 module procedure mpp_chksum_c4_3d
1249 module procedure mpp_chksum_c4_4d
1250 module procedure mpp_chksum_c4_5d
1261 integer,
parameter :: PESET_MAX = 10000
1262 integer :: current_peset_max = 32
1265 logical :: module_is_initialized = .false.
1266 logical :: debug = .false.
1267 integer :: npes=1, root_pe=0, pe=0
1268 integer(i8_kind) :: tick, ticks_per_sec, max_ticks, start_tick, end_tick, tick0=0
1269 integer :: mpp_comm_private
1270 logical :: first_call_system_clock_mpi=.true.
1273 logical :: mpp_record_timing_data=.true.
1274 type(
clock),
save :: clocks(max_clocks)
1275 integer :: log_unit, etc_unit
1277 character(len=32),
parameter :: configfile=
'logfile'
1279 integer :: peset_num=0, current_peset_num=0
1282 integer :: clock_num=0, num_clock_ids=0,current_clock=0, previous_clock(max_clocks)=0
1288 integer :: cur_send_request = 0
1289 integer :: cur_recv_request = 0
1290 integer,
allocatable :: request_send(:)
1291 integer,
allocatable :: request_recv(:)
1292 integer,
allocatable :: size_recv(:)
1293 integer,
allocatable :: type_recv(:)
1297 character(len=32) :: etcfile=
'._mpp.nonrootpe.msgs'
1299 character(len=32) :: etcfile=
'/dev/null'
1303 integer ::
in_unit=input_unit, out_unit=output_unit, err_unit=error_unit
1304 integer :: stdout_unit
1308 logical :: warnings_are_fatal = .false.
1309 integer :: error_state=0
1310 integer :: clock_grain=clock_loop-1
1314 integer :: mpp_stack_size=0, mpp_stack_hwm=0
1315 logical :: verbose=.false.
1320 integer,
parameter :: mpp_init_test_full_init = -1
1321 integer,
parameter :: mpp_init_test_init_true_only = 0
1322 integer,
parameter :: mpp_init_test_peset_allocated = 1
1323 integer,
parameter :: mpp_init_test_clocks_init = 2
1324 integer,
parameter :: mpp_init_test_datatype_list_init = 3
1325 integer,
parameter :: mpp_init_test_logfile_init = 4
1326 integer,
parameter :: mpp_init_test_read_namelist = 5
1327 integer,
parameter :: mpp_init_test_etc_unit = 6
1328 integer,
parameter :: mpp_init_test_requests_allocated = 7
1333#if defined(use_libMPI)
1342#if defined(use_libMPI)
1352 character(len=:),
dimension(:),
allocatable,
target,
public :: input_nml_file
1353 logical :: read_ascii_file_on = .false.
1357#include<file_version.h>
1360 integer,
parameter :: max_request_min = 10000
1361 integer :: request_multiply = 20
1363 logical :: etc_unit_is_stderr = .false.
1364 integer :: max_request = 0
1365 logical :: sync_all_clocks = .false.
1366 namelist /mpp_nml/ etc_unit_is_stderr, request_multiply, mpp_record_timing_data, sync_all_clocks
1369#include <system_clock.fh>
1370#include <mpp_util.inc>
1371#include <mpp_comm.inc>
subroutine mpp_sync_self(pelist, check, request, msg_size, msg_type)
This is to check if current PE's outstanding puts are complete but we can't use shmem_fence because w...
integer warn_unit
unit number of the warning log
subroutine mpp_error_basic(errortype, errormsg)
A very basic error handler uses ABORT and FLUSH calls, may need to use cpp to rename.
integer, parameter, public mpp_comm_null
MPP_COMM_NULL acts as an analagous mpp-macro for MPI_COMM_NULL to share with fms2_io NetCDF4 mpi-io....
integer get_len_nocomm
needed for mpp_transmit_nocomm.h
character(len=32), parameter warnfile
base name for warninglog (appends ".<PE>.out")
type(communicator), dimension(:), allocatable peset
Will be allocated starting from 0, 0 is a dummy used to hold single-PE "self" communicator.
integer, parameter, public mpp_info_null
MPP_INFO_NULL acts as an analagous mpp-macro for MPI_INFO_NULL to share with fms2_io NetCDF4 mpi-io....
integer clock0
measures total runtime from mpp_init to mpp_exit
real(r8_kind) mpi_tick_rate
clock rate for mpi_wtick()
integer world_peset_num
the world communicator
integer in_unit
Use the intrinsics in iso_fortran_env.
real(r8_kind) mpi_count0
use to prevent integer overflow
subroutine mpp_sync(pelist, do_self)
Synchronize PEs in list.
Takes a given integer or real array and returns it as a string.
Scatter a vector across all PEs.
Perform parallel broadcasts.
Calculate parallel checksums.
Gather data sent from pelist onto the root pe Wrapper for MPI_gather, can be used with and without in...
Reduction operations. Find the max of scalar a from the PEs in pelist result is also automatically br...
Reduction operations. Find the min of scalar a from the PEs in pelist result is also automatically br...
Recieve data from another PE.
Scatter (ie - is) * (je - js) contiguous elements of array data from the designated root pe into cont...
Send data to a receiving PE.
Calculates sum of a given numerical array across pe's for adjoint domains.
Basic message-passing call.
Create a mpp_type variable.
a clock contains an array of event profiles for a region
Summary of information from a clock run.
Communication information for message passing libraries.
Communication event profile.
Data types for generalized data transfer (e.g. MPI_Type)
Persisent elements for linked list interaction.
holds name and clock data for use in mpp_util.h