926 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
927 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
928 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
929 integer :: i, j, k, l, r, q
930 integer :: buffer_counts(1:3), buffer_count
931 type(int_bounds_info) :: boundary_conditions(1:3)
932 integer :: beg_end(1:2), grid_dims(1:3)
933 integer :: dst_proc, src_proc, recv_tag, send_tag
934 logical :: beg_end_geq_0, qbmm_comm, chem_diff_comm
935 integer :: pack_offset, unpack_offset
936 type(scalar_field),
optional,
intent(inout) :: q_T_sf
941 call nvtxstartrange(
"RHS-COMM-PACKBUF")
944 chem_diff_comm = .false.
946 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
948 v_size = nvar + 2*nb*nnode
949 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
950 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
951 else if (
present(q_t_sf) .and. chemistry .and. chem_params%diffusion)
then
952 chem_diff_comm = .true.
954 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
955 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
958 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
959 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
963# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
964#if defined(MFC_OpenACC)
965# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
967# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
968#elif defined(MFC_OpenMP)
969# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
971# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
974 buffer_count = buffer_counts(mpi_dir)
975 boundary_conditions = (/bc_x, bc_y, bc_z/)
976 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
977 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
983 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
984 recv_tag = f_logical_to_int(pbc_loc == 1)
986 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
987 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
989 grid_dims = (/m, n, p/)
992 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
993 pack_offset = grid_dims(mpi_dir) - buff_size + 1
997 if (pbc_loc == 1)
then
998 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
1002# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1003 if (mpi_dir == 1)
then
1004# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1006# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1008# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1009#if defined(MFC_OpenACC)
1010# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1012# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1013#elif defined(MFC_OpenMP)
1014# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1016# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1018# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1020# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1022# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1026 do j = 0, buff_size - 1
1028 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1029 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1035# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1036#if defined(MFC_OpenACC)
1037# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1039# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1040#elif defined(MFC_OpenMP)
1041# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1043# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1045# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1048 if (chem_diff_comm)
then
1050# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1052# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1053#if defined(MFC_OpenACC)
1054# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1056# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1057#elif defined(MFC_OpenMP)
1058# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1060# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1062# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1064# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1066# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1070 do j = 0, buff_size - 1
1071 r = nvar +
v_size*(j + buff_size*(k + (n + 1)*l))
1072 buff_send(r) = real(q_t_sf%sf(j + pack_offset, k, l), kind=wp)
1077# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1078#if defined(MFC_OpenACC)
1079# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1081# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1082#elif defined(MFC_OpenMP)
1083# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1085# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1087# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1093# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1095# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1096#if defined(MFC_OpenACC)
1097# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1099# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1100#elif defined(MFC_OpenMP)
1101# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1103# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1105# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1107# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1109# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1113 do j = 0, buff_size - 1
1114 do i = nvar + 1, nvar + nnode
1116 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1117 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1124# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1125#if defined(MFC_OpenACC)
1126# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1128# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1129#elif defined(MFC_OpenMP)
1130# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1132# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1134# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1138# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1140# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1141#if defined(MFC_OpenACC)
1142# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1144# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1145#elif defined(MFC_OpenMP)
1146# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1148# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1150# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1152# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1154# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1158 do j = 0, buff_size - 1
1159 do i = nvar + 1, nvar + nnode
1161 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1162 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1169# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1170#if defined(MFC_OpenACC)
1171# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1173# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1174#elif defined(MFC_OpenMP)
1175# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1177# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1179# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1182# 752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1184# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1185 if (mpi_dir == 2)
then
1186# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1188# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1190# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1191#if defined(MFC_OpenACC)
1192# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1194# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1195#elif defined(MFC_OpenMP)
1196# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1198# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1200# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1202# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1204# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1208 do k = 0, buff_size - 1
1209 do j = -buff_size, m + buff_size
1210 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1211 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1217# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1218#if defined(MFC_OpenACC)
1219# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1221# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1222#elif defined(MFC_OpenMP)
1223# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1225# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1227# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1230 if (chem_diff_comm)
then
1232# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1234# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1235#if defined(MFC_OpenACC)
1236# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1238# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1239#elif defined(MFC_OpenMP)
1240# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1242# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1244# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1246# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1248# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1251 do k = 0, buff_size - 1
1252 do j = -buff_size, m + buff_size
1253 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1254 buff_send(r) = real(q_t_sf%sf(j, k + pack_offset, l), kind=wp)
1259# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1260#if defined(MFC_OpenACC)
1261# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1263# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1264#elif defined(MFC_OpenMP)
1265# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1267# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1269# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1275# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1277# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1278#if defined(MFC_OpenACC)
1279# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1281# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1282#elif defined(MFC_OpenMP)
1283# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1285# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1287# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1289# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1291# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1293 do i = nvar + 1, nvar + nnode
1295 do k = 0, buff_size - 1
1296 do j = -buff_size, m + buff_size
1298 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k &
1300 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1307# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1308#if defined(MFC_OpenACC)
1309# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1311# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1312#elif defined(MFC_OpenMP)
1313# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1315# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1317# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1321# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1323# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1324#if defined(MFC_OpenACC)
1325# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1327# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1328#elif defined(MFC_OpenMP)
1329# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1331# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1333# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1335# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1337# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1339 do i = nvar + 1, nvar + nnode
1341 do k = 0, buff_size - 1
1342 do j = -buff_size, m + buff_size
1344 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1345 & + 1)*(k + buff_size*l))
1346 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1353# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1354#if defined(MFC_OpenACC)
1355# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1357# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1358#elif defined(MFC_OpenMP)
1359# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1361# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1363# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1366# 752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1368# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1369 if (mpi_dir == 3)
then
1370# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1372# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1374# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1375#if defined(MFC_OpenACC)
1376# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1378# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1379#elif defined(MFC_OpenMP)
1380# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1382# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1384# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1386# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1388# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1391 do l = 0, buff_size - 1
1392 do k = -buff_size, n + buff_size
1393 do j = -buff_size, m + buff_size
1394 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1395 & + 2*buff_size + 1)*l))
1396 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1402# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1403#if defined(MFC_OpenACC)
1404# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1406# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1407#elif defined(MFC_OpenMP)
1408# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1410# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1412# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1415 if (chem_diff_comm)
then
1417# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1419# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1420#if defined(MFC_OpenACC)
1421# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1423# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1424#elif defined(MFC_OpenMP)
1425# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1427# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1429# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1431# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1433# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1435 do l = 0, buff_size - 1
1436 do k = -buff_size, n + buff_size
1437 do j = -buff_size, m + buff_size
1438 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1439 & + 2*buff_size + 1)*l))
1440 buff_send(r) = real(q_t_sf%sf(j, k, l + pack_offset), kind=wp)
1445# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1446#if defined(MFC_OpenACC)
1447# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1449# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1450#elif defined(MFC_OpenMP)
1451# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1453# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1455# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1461# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1463# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1464#if defined(MFC_OpenACC)
1465# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1467# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1468#elif defined(MFC_OpenMP)
1469# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1471# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1473# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1475# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1477# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1479 do i = nvar + 1, nvar + nnode
1480 do l = 0, buff_size - 1
1481 do k = -buff_size, n + buff_size
1482 do j = -buff_size, m + buff_size
1484 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1485 & + buff_size) + (n + 2*buff_size + 1)*l))
1486 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1493# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1494#if defined(MFC_OpenACC)
1495# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1497# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1498#elif defined(MFC_OpenMP)
1499# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1501# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1503# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1507# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1509# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1510#if defined(MFC_OpenACC)
1511# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1513# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1514#elif defined(MFC_OpenMP)
1515# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1517# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1519# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1521# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1523# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1525 do i = nvar + 1, nvar + nnode
1526 do l = 0, buff_size - 1
1527 do k = -buff_size, n + buff_size
1528 do j = -buff_size, m + buff_size
1530 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1531 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*l))
1532 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1539# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1540#if defined(MFC_OpenACC)
1541# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1543# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1544#elif defined(MFC_OpenMP)
1545# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1547# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1549# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1552# 752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1554# 754 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1558#ifdef MFC_SIMULATION
1559# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1560 if (rdma_mpi .eqv. .false.)
then
1561# 771 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1562 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1564# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1565#if defined(MFC_OpenACC)
1566# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1568# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1569#elif defined(MFC_OpenMP)
1570# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1572# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1575 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1577 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1578 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1582 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1584# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1585#if defined(MFC_OpenACC)
1586# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1588# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1589#elif defined(MFC_OpenMP)
1590# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1592# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1595# 785 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1597# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1598 if (rdma_mpi .eqv. .true.)
then
1599# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1601# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1602#if defined(MFC_OpenACC)
1603# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1605# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1606 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1607# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1609# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1610 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1611# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1612 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1613# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1615# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1617# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1619# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1620#elif defined(MFC_OpenMP)
1621# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1623# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1624 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1625# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1627# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1628 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1629# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1630 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1631# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1633# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1635# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1637# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1639# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1640 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1641# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1643# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1644 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1645# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1646 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1647# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1649# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1651# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1653# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1655# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1656#if defined(MFC_OpenACC)
1657# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1659# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1660#elif defined(MFC_OpenMP)
1661# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1663# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1665# 785 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1667# 787 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1669 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1670 & mpi_comm_world, mpi_status_ignore, ierr)
1674 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1675# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1676 if (mpi_dir == 1)
then
1677# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1679# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1681# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1682#if defined(MFC_OpenACC)
1683# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1685# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1686#elif defined(MFC_OpenMP)
1687# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1689# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1691# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1693# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1695# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1699 do j = -buff_size, -1
1701 r = (i - 1) +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1702 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1703#if defined(__INTEL_COMPILER)
1704 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l)))
then
1705 print *,
"Error", j, k, l, i
1714# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1715#if defined(MFC_OpenACC)
1716# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1718# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1719#elif defined(MFC_OpenMP)
1720# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1722# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1724# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1727 if (chem_diff_comm)
then
1729# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1731# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1732#if defined(MFC_OpenACC)
1733# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1735# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1736#elif defined(MFC_OpenMP)
1737# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1739# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1741# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1743# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1745# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1749 do j = -buff_size, -1
1750 r = nvar +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1751 q_t_sf%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1752#if defined(__INTEL_COMPILER)
1753 if (ieee_is_nan(q_t_sf%sf(j + unpack_offset, k, l)))
then
1754 print *,
"Error", j, k, l
1762# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1763#if defined(MFC_OpenACC)
1764# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1766# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1767#elif defined(MFC_OpenMP)
1768# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1770# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1772# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1778# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1780# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1781#if defined(MFC_OpenACC)
1782# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1784# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1785#elif defined(MFC_OpenMP)
1786# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1788# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1790# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1792# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1794# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1798 do j = -buff_size, -1
1799 do i = nvar + 1, nvar + nnode
1801 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1802 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1809# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1810#if defined(MFC_OpenACC)
1811# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1813# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1814#elif defined(MFC_OpenMP)
1815# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1817# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1819# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1823# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1825# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1826#if defined(MFC_OpenACC)
1827# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1829# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1830#elif defined(MFC_OpenMP)
1831# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1833# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1835# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1837# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1839# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1843 do j = -buff_size, -1
1844 do i = nvar + 1, nvar + nnode
1846 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1847 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1854# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1855#if defined(MFC_OpenACC)
1856# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1858# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1859#elif defined(MFC_OpenMP)
1860# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1862# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1864# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1867# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1869# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1870 if (mpi_dir == 2)
then
1871# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1873# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1875# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1876#if defined(MFC_OpenACC)
1877# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1879# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1880#elif defined(MFC_OpenMP)
1881# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1883# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1885# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1887# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1889# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1893 do k = -buff_size, -1
1894 do j = -buff_size, m + buff_size
1895 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1896 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1897#if defined(__INTEL_COMPILER)
1898 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l)))
then
1899 print *,
"Error", j, k, l, i
1908# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1909#if defined(MFC_OpenACC)
1910# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1912# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1913#elif defined(MFC_OpenMP)
1914# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1916# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1918# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1921 if (chem_diff_comm)
then
1923# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1925# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1926#if defined(MFC_OpenACC)
1927# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1929# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1930#elif defined(MFC_OpenMP)
1931# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1933# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1935# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1937# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1939# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1942 do k = -buff_size, -1
1943 do j = -buff_size, m + buff_size
1944 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1945 q_t_sf%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1946#if defined(__INTEL_COMPILER)
1947 if (ieee_is_nan(q_t_sf%sf(j, k + unpack_offset, l)))
then
1948 print *,
"Error", j, k, l
1956# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1957#if defined(MFC_OpenACC)
1958# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1960# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1961#elif defined(MFC_OpenMP)
1962# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1964# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1966# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1972# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1974# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1975#if defined(MFC_OpenACC)
1976# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1978# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1979#elif defined(MFC_OpenMP)
1980# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1982# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1984# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1986# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1988# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1990 do i = nvar + 1, nvar + nnode
1992 do k = -buff_size, -1
1993 do j = -buff_size, m + buff_size
1995 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1996 & + buff_size) + buff_size*l))
1997 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2004# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2005#if defined(MFC_OpenACC)
2006# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2008# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2009#elif defined(MFC_OpenMP)
2010# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2012# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2014# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2018# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2020# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2021#if defined(MFC_OpenACC)
2022# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2024# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2025#elif defined(MFC_OpenMP)
2026# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2028# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2030# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2032# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2034# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2036 do i = nvar + 1, nvar + nnode
2038 do k = -buff_size, -1
2039 do j = -buff_size, m + buff_size
2041 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2042 & + 1)*((k + buff_size) + buff_size*l))
2043 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2050# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2051#if defined(MFC_OpenACC)
2052# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2054# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2055#elif defined(MFC_OpenMP)
2056# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2058# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2060# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2063# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2065# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2066 if (mpi_dir == 3)
then
2067# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2069# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2071# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2072#if defined(MFC_OpenACC)
2073# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2075# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2076#elif defined(MFC_OpenMP)
2077# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2079# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2081# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2083# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2085# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2088 do l = -buff_size, -1
2089 do k = -buff_size, n + buff_size
2090 do j = -buff_size, m + buff_size
2091 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2092 & + 2*buff_size + 1)*(l + buff_size)))
2093 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2094#if defined(__INTEL_COMPILER)
2095 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset)))
then
2096 print *,
"Error", j, k, l, i
2105# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2106#if defined(MFC_OpenACC)
2107# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2109# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2110#elif defined(MFC_OpenMP)
2111# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2113# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2115# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2118 if (chem_diff_comm)
then
2120# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2122# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2123#if defined(MFC_OpenACC)
2124# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2126# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2127#elif defined(MFC_OpenMP)
2128# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2130# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2132# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2134# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2136# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2138 do l = -buff_size, -1
2139 do k = -buff_size, n + buff_size
2140 do j = -buff_size, m + buff_size
2141 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2142 & + 2*buff_size + 1)*(l + buff_size)))
2143 q_t_sf%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2144#if defined(__INTEL_COMPILER)
2145 if (ieee_is_nan(q_t_sf%sf(j, k, l + unpack_offset)))
then
2146 print *,
"Error", j, k, l
2154# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2155#if defined(MFC_OpenACC)
2156# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2158# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2159#elif defined(MFC_OpenMP)
2160# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2162# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2164# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2170# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2172# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2173#if defined(MFC_OpenACC)
2174# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2176# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2177#elif defined(MFC_OpenMP)
2178# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2180# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2182# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2184# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2186# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2188 do i = nvar + 1, nvar + nnode
2189 do l = -buff_size, -1
2190 do k = -buff_size, n + buff_size
2191 do j = -buff_size, m + buff_size
2193 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2194 & + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2195 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2202# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2203#if defined(MFC_OpenACC)
2204# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2206# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2207#elif defined(MFC_OpenMP)
2208# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2210# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2212# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2216# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2218# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2219#if defined(MFC_OpenACC)
2220# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2222# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2223#elif defined(MFC_OpenMP)
2224# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2226# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2228# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2230# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2232# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2234 do i = nvar + 1, nvar + nnode
2235 do l = -buff_size, -1
2236 do k = -buff_size, n + buff_size
2237 do j = -buff_size, m + buff_size
2239 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2240 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2241 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2248# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2249#if defined(MFC_OpenACC)
2250# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2252# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2253#elif defined(MFC_OpenMP)
2254# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2256# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2258# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2261# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2263# 1015 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2273 integer :: num_procs_x, num_procs_y, num_procs_z
2275 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
2277 integer :: MPI_COMM_CART
2278 integer :: rem_cells
2279 integer :: recon_order
2283 if (recon_type == weno_type)
then
2284 recon_order = weno_order
2286 recon_order = muscl_order
2289 if (num_procs == 1 .and. parallel_io)
then
2297 recon_order = igr_order
2307 num_procs_z = num_procs
2311 tmp_num_procs_y = num_procs_y
2312 tmp_num_procs_z = num_procs_z
2313 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2317 if (mod(num_procs, i) == 0 .and. (n + 1)/i >= num_stcls_min*recon_order)
then
2319 tmp_num_procs_z = num_procs/i
2321 if (fct_min >= abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2322 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2324 num_procs_z = num_procs/i
2325 fct_min = abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2331 if (cyl_coord .and. p > 0)
then
2336 num_procs_y = num_procs
2341 tmp_num_procs_x = num_procs_x
2342 tmp_num_procs_y = num_procs_y
2343 tmp_num_procs_z = num_procs_z
2344 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2348 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2350 tmp_num_procs_y = num_procs/i
2352 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2353 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2355 num_procs_y = num_procs/i
2356 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2365 num_procs_z = num_procs
2369 tmp_num_procs_x = num_procs_x
2370 tmp_num_procs_y = num_procs_y
2371 tmp_num_procs_z = num_procs_z
2372 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + 10._wp*abs((n + 1) &
2373 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2377 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2378 do j = 1, num_procs/i
2379 if (mod(num_procs/i, j) == 0 .and. (n + 1)/j >= num_stcls_min*recon_order)
then
2382 tmp_num_procs_z = num_procs/(i*j)
2384 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
2385 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2386 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2389 num_procs_z = num_procs/(i*j)
2390 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
2391 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2403 if (proc_rank == 0 .and. ierr == -1)
then
2404 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n, p and ' &
2405 & //
'weno/muscl/igr_order. Exiting.')
2409 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, num_procs_y, num_procs_z/), (/.true., .true., .true./), &
2410 & .false., mpi_comm_cart, ierr)
2413 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, proc_coords, ierr)
2418 rem_cells = mod(p + 1, num_procs_z)
2421 p = (p + 1)/num_procs_z - 1
2425 if (proc_coords(3) == i - 1)
then
2431 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1))
then
2432 proc_coords(3) = proc_coords(3) - 1
2433 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%beg, ierr)
2434 proc_coords(3) = proc_coords(3) + 1
2438 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1))
then
2439 proc_coords(3) = proc_coords(3) + 1
2440 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%end, ierr)
2441 proc_coords(3) = proc_coords(3) - 1
2444#ifdef MFC_POST_PROCESS
2446 if (proc_coords(3) > 0 .and.
format == 1)
then
2453 if (proc_coords(3) < num_procs_z - 1 .and.
format == 1)
then
2461 if (parallel_io)
then
2462 if (proc_coords(3) < rem_cells)
then
2463 start_idx(3) = (p + 1)*proc_coords(3)
2465 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
2468#ifdef MFC_PRE_PROCESS
2469 if (old_grid .neqv. .true.)
then
2470 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
2472 if (proc_coords(3) < rem_cells)
then
2473 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3))
2474 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1) - (num_procs_z &
2477 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3) + rem_cells)
2478 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1))
2488 num_procs_y = num_procs
2492 tmp_num_procs_x = num_procs_x
2493 tmp_num_procs_y = num_procs_y
2494 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2498 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2500 tmp_num_procs_y = num_procs/i
2502 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2503 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2505 num_procs_y = num_procs/i
2506 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2514 if (proc_rank == 0 .and. ierr == -1)
then
2515 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n and ' &
2516 & //
'weno/muscl/igr_order. Exiting.')
2520 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, num_procs_y/), (/.true., .true./), .false., mpi_comm_cart, &
2524 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, proc_coords, ierr)
2530 rem_cells = mod(n + 1, num_procs_y)
2533 n = (n + 1)/num_procs_y - 1
2537 if (proc_coords(2) == i - 1)
then
2543 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1))
then
2544 proc_coords(2) = proc_coords(2) - 1
2545 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%beg, ierr)
2546 proc_coords(2) = proc_coords(2) + 1
2550 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1))
then
2551 proc_coords(2) = proc_coords(2) + 1
2552 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%end, ierr)
2553 proc_coords(2) = proc_coords(2) - 1
2556#ifdef MFC_POST_PROCESS
2558 if (proc_coords(2) > 0 .and.
format == 1)
then
2565 if (proc_coords(2) < num_procs_y - 1 .and.
format == 1)
then
2573 if (parallel_io)
then
2574 if (proc_coords(2) < rem_cells)
then
2575 start_idx(2) = (n + 1)*proc_coords(2)
2577 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
2580#ifdef MFC_PRE_PROCESS
2581 if (old_grid .neqv. .true.)
then
2582 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
2584 if (proc_coords(2) < rem_cells)
then
2585 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2))
2586 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1) - (num_procs_y &
2589 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2) + rem_cells)
2590 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1))
2599 num_procs_x = num_procs
2602 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), (/.true./), .false., mpi_comm_cart, ierr)
2605 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, proc_coords, ierr)
2611 rem_cells = mod(m + 1, num_procs_x)
2614 m = (m + 1)/num_procs_x - 1
2618 if (proc_coords(1) == i - 1)
then
2623 call s_update_cell_bounds(cells_bounds, m, n, p)
2626 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1))
then
2627 proc_coords(1) = proc_coords(1) - 1
2628 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
2629 proc_coords(1) = proc_coords(1) + 1
2633 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1))
then
2634 proc_coords(1) = proc_coords(1) + 1
2635 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
2636 proc_coords(1) = proc_coords(1) - 1
2639#ifdef MFC_POST_PROCESS
2641 if (proc_coords(1) > 0 .and.
format == 1)
then
2648 if (proc_coords(1) < num_procs_x - 1 .and.
format == 1)
then
2656 if (parallel_io)
then
2657 if (proc_coords(1) < rem_cells)
then
2658 start_idx(1) = (m + 1)*proc_coords(1)
2660 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
2663#ifdef MFC_PRE_PROCESS
2664 if (old_grid .neqv. .true.)
then
2665 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
2667 if (proc_coords(1) < rem_cells)
then
2668 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1))
2669 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1) - (num_procs_x - rem_cells))
2671 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1) + rem_cells)
2672 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1))
2687 integer,
intent(in) :: mpi_dir
2688 integer,
intent(in) :: pbc_loc
2693 if (mpi_dir == 1)
then
2694 if (pbc_loc == -1)
then
2696 if (bc_x%end >= 0)
then
2697 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(-buff_size), buff_size, mpi_p, &
2698 & bc_x%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2700 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(-buff_size), buff_size, mpi_p, bc_x%beg, 0, &
2701 & mpi_comm_world, mpi_status_ignore, ierr)
2704 if (bc_x%beg >= 0)
then
2705 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(m + 1), buff_size, mpi_p, bc_x%end, 1, &
2706 & mpi_comm_world, mpi_status_ignore, ierr)
2708 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(m + 1), buff_size, mpi_p, &
2709 & bc_x%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2712 else if (mpi_dir == 2)
then
2713 if (pbc_loc == -1)
then
2715 if (bc_y%end >= 0)
then
2716 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(-buff_size), buff_size, mpi_p, &
2717 & bc_y%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2719 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(-buff_size), buff_size, mpi_p, bc_y%beg, 0, &
2720 & mpi_comm_world, mpi_status_ignore, ierr)
2723 if (bc_y%beg >= 0)
then
2724 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(n + 1), buff_size, mpi_p, bc_y%end, 1, &
2725 & mpi_comm_world, mpi_status_ignore, ierr)
2727 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(n + 1), buff_size, mpi_p, &
2728 & bc_y%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2732 if (pbc_loc == -1)
then
2734 if (bc_z%end >= 0)
then
2735 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(-buff_size), buff_size, mpi_p, &
2736 & bc_z%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2738 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(-buff_size), buff_size, mpi_p, bc_z%beg, 0, &
2739 & mpi_comm_world, mpi_status_ignore, ierr)
2742 if (bc_z%beg >= 0)
then
2743 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(p + 1), buff_size, mpi_p, bc_z%end, 1, &
2744 & mpi_comm_world, mpi_status_ignore, ierr)
2746 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(p + 1), buff_size, mpi_p, &
2747 & bc_z%end, 1, mpi_comm_world, mpi_status_ignore, ierr)