932 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
933 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
934 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
935 integer :: i, j, k, l, r, q
936 integer :: buffer_counts(1:3), buffer_count
937 type(int_bounds_info) :: boundary_conditions(1:3)
938 integer :: beg_end(1:2), grid_dims(1:3)
939 integer :: dst_proc, src_proc, recv_tag, send_tag
940 logical :: beg_end_geq_0, qbmm_comm, chem_diff_comm
941 integer :: pack_offset, unpack_offset
942 type(scalar_field),
optional,
intent(inout) :: q_T_sf
947 call nvtxstartrange(
"RHS-COMM-PACKBUF")
950 chem_diff_comm = .false.
952 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
954 v_size = nvar + 2*nb*nnode
955 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
956 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
957 else if (
present(q_t_sf) .and. chemistry .and. chem_params%diffusion)
then
958 chem_diff_comm = .true.
960 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
961 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
964 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
965 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
969# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
970#if defined(MFC_OpenACC)
971# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
973# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
974#elif defined(MFC_OpenMP)
975# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
977# 539 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
980 buffer_count = buffer_counts(mpi_dir)
981 boundary_conditions = (/bc_x, bc_y, bc_z/)
982 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
983 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
989 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
990 recv_tag = f_logical_to_int(pbc_loc == 1)
992 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
993 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
995 grid_dims = (/m, n, p/)
998 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
999 pack_offset = grid_dims(mpi_dir) - buff_size + 1
1003 if (pbc_loc == 1)
then
1004 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
1008# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1009 if (mpi_dir == 1)
then
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"
1014# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1015#if defined(MFC_OpenACC)
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"
1019#elif defined(MFC_OpenMP)
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"
1024# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1026# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1028# 572 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1032 do j = 0, buff_size - 1
1034 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1035 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1041# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1042#if defined(MFC_OpenACC)
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"
1046#elif defined(MFC_OpenMP)
1047# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1049# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1051# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1054 if (chem_diff_comm)
then
1056# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1058# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1059#if defined(MFC_OpenACC)
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"
1063#elif defined(MFC_OpenMP)
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"
1068# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1070# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1072# 586 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1076 do j = 0, buff_size - 1
1077 r = nvar +
v_size*(j + buff_size*(k + (n + 1)*l))
1078 buff_send(r) = real(q_t_sf%sf(j + pack_offset, k, l), kind=wp)
1083# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1084#if defined(MFC_OpenACC)
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"
1088#elif defined(MFC_OpenMP)
1089# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1091# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1093# 595 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1099# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1101# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1102#if defined(MFC_OpenACC)
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"
1106#elif defined(MFC_OpenMP)
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"
1111# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1113# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1115# 599 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1119 do j = 0, buff_size - 1
1120 do i = nvar + 1, nvar + nnode
1122 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1123 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1130# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1131#if defined(MFC_OpenACC)
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"
1135#elif defined(MFC_OpenMP)
1136# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1138# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1140# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1144# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1146# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1147#if defined(MFC_OpenACC)
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"
1151#elif defined(MFC_OpenMP)
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"
1156# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1158# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1160# 614 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1164 do j = 0, buff_size - 1
1165 do i = nvar + 1, nvar + nnode
1167 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1168 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1175# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1176#if defined(MFC_OpenACC)
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"
1180#elif defined(MFC_OpenMP)
1181# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1183# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1185# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1188# 752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1190# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1191 if (mpi_dir == 2)
then
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"
1196# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1197#if defined(MFC_OpenACC)
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"
1201#elif defined(MFC_OpenMP)
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"
1206# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1208# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1210# 630 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1214 do k = 0, buff_size - 1
1215 do j = -buff_size, m + buff_size
1216 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1217 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1223# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1224#if defined(MFC_OpenACC)
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"
1228#elif defined(MFC_OpenMP)
1229# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1231# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1233# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1236 if (chem_diff_comm)
then
1238# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1240# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1241#if defined(MFC_OpenACC)
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"
1245#elif defined(MFC_OpenMP)
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"
1250# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1252# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1254# 644 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1257 do k = 0, buff_size - 1
1258 do j = -buff_size, m + buff_size
1259 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1260 buff_send(r) = real(q_t_sf%sf(j, k + pack_offset, l), kind=wp)
1265# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1266#if defined(MFC_OpenACC)
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"
1270#elif defined(MFC_OpenMP)
1271# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1273# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1275# 653 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1281# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1283# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1284#if defined(MFC_OpenACC)
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"
1288#elif defined(MFC_OpenMP)
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# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1295# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1297# 657 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1299 do i = nvar + 1, nvar + nnode
1301 do k = 0, buff_size - 1
1302 do j = -buff_size, m + buff_size
1304 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k &
1306 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1313# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1314#if defined(MFC_OpenACC)
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"
1318#elif defined(MFC_OpenMP)
1319# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1321# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1323# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1327# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1329# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1330#if defined(MFC_OpenACC)
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"
1334#elif defined(MFC_OpenMP)
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# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1341# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1343# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1345 do i = nvar + 1, nvar + nnode
1347 do k = 0, buff_size - 1
1348 do j = -buff_size, m + buff_size
1350 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1351 & + 1)*(k + buff_size*l))
1352 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1359# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1360#if defined(MFC_OpenACC)
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"
1364#elif defined(MFC_OpenMP)
1365# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1367# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1369# 687 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1372# 752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1374# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1375 if (mpi_dir == 3)
then
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"
1380# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1381#if defined(MFC_OpenACC)
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"
1385#elif defined(MFC_OpenMP)
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"
1390# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1392# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1394# 690 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1397 do l = 0, buff_size - 1
1398 do k = -buff_size, n + buff_size
1399 do j = -buff_size, m + buff_size
1400 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1401 & + 2*buff_size + 1)*l))
1402 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1408# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1409#if defined(MFC_OpenACC)
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"
1413#elif defined(MFC_OpenMP)
1414# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1416# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1418# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1421 if (chem_diff_comm)
then
1423# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1425# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1426#if defined(MFC_OpenACC)
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"
1430#elif defined(MFC_OpenMP)
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# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1437# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1439# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1441 do l = 0, buff_size - 1
1442 do k = -buff_size, n + buff_size
1443 do j = -buff_size, m + buff_size
1444 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1445 & + 2*buff_size + 1)*l))
1446 buff_send(r) = real(q_t_sf%sf(j, k, l + pack_offset), kind=wp)
1451# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1452#if defined(MFC_OpenACC)
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"
1456#elif defined(MFC_OpenMP)
1457# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1459# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1461# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1467# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1469# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1470#if defined(MFC_OpenACC)
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"
1474#elif defined(MFC_OpenMP)
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# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1481# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1483# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1485 do i = nvar + 1, nvar + nnode
1486 do l = 0, buff_size - 1
1487 do k = -buff_size, n + buff_size
1488 do j = -buff_size, m + buff_size
1490 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1491 & + buff_size) + (n + 2*buff_size + 1)*l))
1492 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1499# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1500#if defined(MFC_OpenACC)
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"
1504#elif defined(MFC_OpenMP)
1505# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1507# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1509# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1513# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1515# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1516#if defined(MFC_OpenACC)
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"
1520#elif defined(MFC_OpenMP)
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# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1527# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1529# 735 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1531 do i = nvar + 1, nvar + nnode
1532 do l = 0, buff_size - 1
1533 do k = -buff_size, n + buff_size
1534 do j = -buff_size, m + buff_size
1536 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1537 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*l))
1538 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1545# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1546#if defined(MFC_OpenACC)
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"
1550#elif defined(MFC_OpenMP)
1551# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1553# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1555# 749 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1558# 752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1560# 754 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1564#ifdef MFC_SIMULATION
1565# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1566 if (rdma_mpi .eqv. .false.)
then
1567# 771 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1568 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1570# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1571#if defined(MFC_OpenACC)
1572# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1574# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1575#elif defined(MFC_OpenMP)
1576# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1578# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1581 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1583 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1584 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1588 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1590# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1591#if defined(MFC_OpenACC)
1592# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1594# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1595#elif defined(MFC_OpenMP)
1596# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1598# 782 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1601# 785 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1603# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1604 if (rdma_mpi .eqv. .true.)
then
1605# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1607# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1608#if defined(MFC_OpenACC)
1609# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1611# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1612 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
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"
1616 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1617# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1618 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1619# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1625# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1626#elif defined(MFC_OpenMP)
1627# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1629# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1630 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
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"
1634 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1635# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1636 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
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"
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"
1645# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1646 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
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"
1650 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1651# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1652 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1653# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1655# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1657# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1659# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1661# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1662#if defined(MFC_OpenACC)
1663# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1665# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1666#elif defined(MFC_OpenMP)
1667# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1669# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1671# 785 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1673# 787 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1675 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1676 & mpi_comm_world, mpi_status_ignore, ierr)
1680 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1681# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1682 if (mpi_dir == 1)
then
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"
1687# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1688#if defined(MFC_OpenACC)
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"
1692#elif defined(MFC_OpenMP)
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"
1697# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1699# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1701# 797 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1705 do j = -buff_size, -1
1707 r = (i - 1) +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1708 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1709#if defined(__INTEL_COMPILER)
1710 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l)))
then
1711 print *,
"Error", j, k, l, i
1720# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1721#if defined(MFC_OpenACC)
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"
1725#elif defined(MFC_OpenMP)
1726# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1728# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1730# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1733 if (chem_diff_comm)
then
1735# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1737# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1738#if defined(MFC_OpenACC)
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"
1742#elif defined(MFC_OpenMP)
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"
1747# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1749# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1751# 817 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1755 do j = -buff_size, -1
1756 r = nvar +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1757 q_t_sf%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1758#if defined(__INTEL_COMPILER)
1759 if (ieee_is_nan(q_t_sf%sf(j + unpack_offset, k, l)))
then
1760 print *,
"Error", j, k, l
1768# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1769#if defined(MFC_OpenACC)
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"
1773#elif defined(MFC_OpenMP)
1774# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1776# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1778# 832 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1784# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1786# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1787#if defined(MFC_OpenACC)
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"
1791#elif defined(MFC_OpenMP)
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"
1796# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1798# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1800# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1804 do j = -buff_size, -1
1805 do i = nvar + 1, nvar + nnode
1807 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1808 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1815# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1816#if defined(MFC_OpenACC)
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"
1820#elif defined(MFC_OpenMP)
1821# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1823# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1825# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1829# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1831# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1832#if defined(MFC_OpenACC)
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"
1836#elif defined(MFC_OpenMP)
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"
1841# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1843# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1845# 851 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1849 do j = -buff_size, -1
1850 do i = nvar + 1, nvar + nnode
1852 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1853 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1860# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1861#if defined(MFC_OpenACC)
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"
1865#elif defined(MFC_OpenMP)
1866# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1868# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1870# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1873# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1875# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1876 if (mpi_dir == 2)
then
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"
1881# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1882#if defined(MFC_OpenACC)
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"
1886#elif defined(MFC_OpenMP)
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"
1891# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1893# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1895# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1899 do k = -buff_size, -1
1900 do j = -buff_size, m + buff_size
1901 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1902 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1903#if defined(__INTEL_COMPILER)
1904 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l)))
then
1905 print *,
"Error", j, k, l, i
1914# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1915#if defined(MFC_OpenACC)
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"
1919#elif defined(MFC_OpenMP)
1920# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1922# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1924# 884 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1927 if (chem_diff_comm)
then
1929# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1931# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1932#if defined(MFC_OpenACC)
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"
1936#elif defined(MFC_OpenMP)
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"
1941# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1943# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1945# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1948 do k = -buff_size, -1
1949 do j = -buff_size, m + buff_size
1950 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1951 q_t_sf%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1952#if defined(__INTEL_COMPILER)
1953 if (ieee_is_nan(q_t_sf%sf(j, k + unpack_offset, l)))
then
1954 print *,
"Error", j, k, l
1962# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1963#if defined(MFC_OpenACC)
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"
1967#elif defined(MFC_OpenMP)
1968# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1970# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1972# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1978# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1980# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1981#if defined(MFC_OpenACC)
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"
1985#elif defined(MFC_OpenMP)
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# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1992# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1994# 906 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1996 do i = nvar + 1, nvar + nnode
1998 do k = -buff_size, -1
1999 do j = -buff_size, m + buff_size
2001 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2002 & + buff_size) + buff_size*l))
2003 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2010# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2011#if defined(MFC_OpenACC)
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"
2015#elif defined(MFC_OpenMP)
2016# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2018# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2020# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2024# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2026# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2027#if defined(MFC_OpenACC)
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"
2031#elif defined(MFC_OpenMP)
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# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2038# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2040# 922 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2042 do i = nvar + 1, nvar + nnode
2044 do k = -buff_size, -1
2045 do j = -buff_size, m + buff_size
2047 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2048 & + 1)*((k + buff_size) + buff_size*l))
2049 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2056# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2057#if defined(MFC_OpenACC)
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"
2061#elif defined(MFC_OpenMP)
2062# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2064# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2066# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2069# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2071# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2072 if (mpi_dir == 3)
then
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"
2077# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2078#if defined(MFC_OpenACC)
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"
2082#elif defined(MFC_OpenMP)
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"
2087# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2089# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2091# 939 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2094 do l = -buff_size, -1
2095 do k = -buff_size, n + buff_size
2096 do j = -buff_size, m + buff_size
2097 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2098 & + 2*buff_size + 1)*(l + buff_size)))
2099 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2100#if defined(__INTEL_COMPILER)
2101 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset)))
then
2102 print *,
"Error", j, k, l, i
2111# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2112#if defined(MFC_OpenACC)
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"
2116#elif defined(MFC_OpenMP)
2117# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2119# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2121# 957 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2124 if (chem_diff_comm)
then
2126# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2128# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2129#if defined(MFC_OpenACC)
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"
2133#elif defined(MFC_OpenMP)
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# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2140# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2142# 960 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2144 do l = -buff_size, -1
2145 do k = -buff_size, n + buff_size
2146 do j = -buff_size, m + buff_size
2147 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2148 & + 2*buff_size + 1)*(l + buff_size)))
2149 q_t_sf%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2150#if defined(__INTEL_COMPILER)
2151 if (ieee_is_nan(q_t_sf%sf(j, k, l + unpack_offset)))
then
2152 print *,
"Error", j, k, l
2160# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2161#if defined(MFC_OpenACC)
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"
2165#elif defined(MFC_OpenMP)
2166# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2168# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2170# 976 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2176# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2178# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2179#if defined(MFC_OpenACC)
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"
2183#elif defined(MFC_OpenMP)
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# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2190# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2192# 980 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2194 do i = nvar + 1, nvar + nnode
2195 do l = -buff_size, -1
2196 do k = -buff_size, n + buff_size
2197 do j = -buff_size, m + buff_size
2199 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2200 & + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2201 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2208# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2209#if defined(MFC_OpenACC)
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"
2213#elif defined(MFC_OpenMP)
2214# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2216# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2218# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2222# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2224# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2225#if defined(MFC_OpenACC)
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"
2229#elif defined(MFC_OpenMP)
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# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2236# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2238# 996 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2240 do i = nvar + 1, nvar + nnode
2241 do l = -buff_size, -1
2242 do k = -buff_size, n + buff_size
2243 do j = -buff_size, m + buff_size
2245 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2246 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2247 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2254# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2255#if defined(MFC_OpenACC)
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"
2259#elif defined(MFC_OpenMP)
2260# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2262# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2264# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2267# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2269# 1015 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2279 integer :: num_procs_x, num_procs_y, num_procs_z
2281 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
2283 integer :: MPI_COMM_CART
2284 integer :: rem_cells
2285 integer :: recon_order
2289 if (recon_type == recon_type_weno)
then
2290 recon_order = weno_order
2292 recon_order = muscl_order
2295 if (num_procs == 1 .and. parallel_io)
then
2303 recon_order = igr_order
2313 num_procs_z = num_procs
2317 tmp_num_procs_y = num_procs_y
2318 tmp_num_procs_z = num_procs_z
2319 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2323 if (mod(num_procs, i) == 0 .and. (n + 1)/i >= num_stcls_min*recon_order)
then
2325 tmp_num_procs_z = num_procs/i
2327 if (fct_min >= abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2328 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2330 num_procs_z = num_procs/i
2331 fct_min = abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2337 if (cyl_coord .and. p > 0)
then
2342 num_procs_y = num_procs
2347 tmp_num_procs_x = num_procs_x
2348 tmp_num_procs_y = num_procs_y
2349 tmp_num_procs_z = num_procs_z
2350 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2354 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2356 tmp_num_procs_y = num_procs/i
2358 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2359 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2361 num_procs_y = num_procs/i
2362 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2371 num_procs_z = num_procs
2375 tmp_num_procs_x = num_procs_x
2376 tmp_num_procs_y = num_procs_y
2377 tmp_num_procs_z = num_procs_z
2378 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + 10._wp*abs((n + 1) &
2379 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2383 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2384 do j = 1, num_procs/i
2385 if (mod(num_procs/i, j) == 0 .and. (n + 1)/j >= num_stcls_min*recon_order)
then
2388 tmp_num_procs_z = num_procs/(i*j)
2390 if (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) .and. (p + 1) &
2392 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2395 num_procs_z = num_procs/(i*j)
2396 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
2397 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2409 if (proc_rank == 0 .and. ierr == -1)
then
2410 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n, p and ' &
2411 & //
'weno/muscl/igr_order. Exiting.')
2415 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, num_procs_y, num_procs_z/), (/.true., .true., .true./), &
2416 & .false., mpi_comm_cart, ierr)
2419 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, proc_coords, ierr)
2424 rem_cells = mod(p + 1, num_procs_z)
2427 p = (p + 1)/num_procs_z - 1
2431 if (proc_coords(3) == i - 1)
then
2437 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1))
then
2438 proc_coords(3) = proc_coords(3) - 1
2439 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%beg, ierr)
2440 proc_coords(3) = proc_coords(3) + 1
2444 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1))
then
2445 proc_coords(3) = proc_coords(3) + 1
2446 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%end, ierr)
2447 proc_coords(3) = proc_coords(3) - 1
2450#ifdef MFC_POST_PROCESS
2452 if (proc_coords(3) > 0 .and.
format == format_silo)
then
2459 if (proc_coords(3) < num_procs_z - 1 .and.
format == format_silo)
then
2467 if (parallel_io)
then
2468 if (proc_coords(3) < rem_cells)
then
2469 start_idx(3) = (p + 1)*proc_coords(3)
2471 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
2474#ifdef MFC_PRE_PROCESS
2475 if (old_grid .neqv. .true.)
then
2476 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
2478 if (proc_coords(3) < rem_cells)
then
2479 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3))
2480 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1) - (num_procs_z &
2483 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3) + rem_cells)
2484 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1))
2494 num_procs_y = num_procs
2498 tmp_num_procs_x = num_procs_x
2499 tmp_num_procs_y = num_procs_y
2500 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2504 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2506 tmp_num_procs_y = num_procs/i
2508 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2509 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2511 num_procs_y = num_procs/i
2512 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2520 if (proc_rank == 0 .and. ierr == -1)
then
2521 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n and ' &
2522 & //
'weno/muscl/igr_order. Exiting.')
2526 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, num_procs_y/), (/.true., .true./), .false., mpi_comm_cart, &
2530 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, proc_coords, ierr)
2536 rem_cells = mod(n + 1, num_procs_y)
2539 n = (n + 1)/num_procs_y - 1
2543 if (proc_coords(2) == i - 1)
then
2549 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1))
then
2550 proc_coords(2) = proc_coords(2) - 1
2551 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%beg, ierr)
2552 proc_coords(2) = proc_coords(2) + 1
2556 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1))
then
2557 proc_coords(2) = proc_coords(2) + 1
2558 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%end, ierr)
2559 proc_coords(2) = proc_coords(2) - 1
2562#ifdef MFC_POST_PROCESS
2564 if (proc_coords(2) > 0 .and.
format == format_silo)
then
2571 if (proc_coords(2) < num_procs_y - 1 .and.
format == format_silo)
then
2579 if (parallel_io)
then
2580 if (proc_coords(2) < rem_cells)
then
2581 start_idx(2) = (n + 1)*proc_coords(2)
2583 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
2586#ifdef MFC_PRE_PROCESS
2587 if (old_grid .neqv. .true.)
then
2588 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
2590 if (proc_coords(2) < rem_cells)
then
2591 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2))
2592 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1) - (num_procs_y &
2595 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2) + rem_cells)
2596 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1))
2605 num_procs_x = num_procs
2608 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), (/.true./), .false., mpi_comm_cart, ierr)
2611 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, proc_coords, ierr)
2617 rem_cells = mod(m + 1, num_procs_x)
2620 m = (m + 1)/num_procs_x - 1
2624 if (proc_coords(1) == i - 1)
then
2629 call s_update_cell_bounds(cells_bounds, m, n, p)
2632 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1))
then
2633 proc_coords(1) = proc_coords(1) - 1
2634 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
2635 proc_coords(1) = proc_coords(1) + 1
2639 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1))
then
2640 proc_coords(1) = proc_coords(1) + 1
2641 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
2642 proc_coords(1) = proc_coords(1) - 1
2645#ifdef MFC_POST_PROCESS
2647 if (proc_coords(1) > 0 .and.
format == format_silo)
then
2654 if (proc_coords(1) < num_procs_x - 1 .and.
format == format_silo)
then
2662 if (parallel_io)
then
2663 if (proc_coords(1) < rem_cells)
then
2664 start_idx(1) = (m + 1)*proc_coords(1)
2666 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
2669#ifdef MFC_PRE_PROCESS
2670 if (old_grid .neqv. .true.)
then
2671 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
2673 if (proc_coords(1) < rem_cells)
then
2674 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1))
2675 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1) - (num_procs_x - rem_cells))
2677 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1) + rem_cells)
2678 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1))
2693 integer,
intent(in) :: mpi_dir
2694 integer,
intent(in) :: pbc_loc
2699 if (mpi_dir == 1)
then
2700 if (pbc_loc == -1)
then
2701 if (bc_x%end >= 0)
then
2702 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(-buff_size), buff_size, mpi_p, &
2703 & bc_x%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2705 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(-buff_size), buff_size, mpi_p, bc_x%beg, 0, &
2706 & mpi_comm_world, mpi_status_ignore, ierr)
2709 if (bc_x%beg >= 0)
then
2710 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(m + 1), buff_size, mpi_p, bc_x%end, 1, &
2711 & mpi_comm_world, mpi_status_ignore, ierr)
2713 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(m + 1), buff_size, mpi_p, &
2714 & bc_x%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2717 else if (mpi_dir == 2)
then
2718 if (pbc_loc == -1)
then
2719 if (bc_y%end >= 0)
then
2720 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(-buff_size), buff_size, mpi_p, &
2721 & bc_y%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2723 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(-buff_size), buff_size, mpi_p, bc_y%beg, 0, &
2724 & mpi_comm_world, mpi_status_ignore, ierr)
2727 if (bc_y%beg >= 0)
then
2728 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(n + 1), buff_size, mpi_p, bc_y%end, 1, &
2729 & mpi_comm_world, mpi_status_ignore, ierr)
2731 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(n + 1), buff_size, mpi_p, &
2732 & bc_y%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2736 if (pbc_loc == -1)
then
2737 if (bc_z%end >= 0)
then
2738 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(-buff_size), buff_size, mpi_p, &
2739 & bc_z%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2741 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(-buff_size), buff_size, mpi_p, bc_z%beg, 0, &
2742 & mpi_comm_world, mpi_status_ignore, ierr)
2745 if (bc_z%beg >= 0)
then
2746 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(p + 1), buff_size, mpi_p, bc_z%end, 1, &
2747 & mpi_comm_world, mpi_status_ignore, ierr)
2749 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(p + 1), buff_size, mpi_p, &
2750 & bc_z%end, 1, mpi_comm_world, mpi_status_ignore, ierr)