1015 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
1016 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
1017 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
1018 integer :: i, j, k, l, r, q
1019 integer :: buffer_counts(1:3), buffer_count
1020 type(int_bounds_info) :: boundary_conditions(1:3)
1021 integer :: beg_end(1:2), grid_dims(1:3)
1022 integer :: dst_proc, src_proc, recv_tag, send_tag
1023 logical :: beg_end_geq_0, qbmm_comm, chem_diff_comm
1024 integer :: pack_offset, unpack_offset
1025 type(scalar_field),
optional,
intent(inout) :: q_T_sf
1030 call nvtxstartrange(
"RHS-COMM-PACKBUF")
1033 chem_diff_comm = .false.
1035 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
1037 v_size = nvar + 2*nb*nnode
1038 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1039 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
1040 else if (
present(q_t_sf) .and. (heat_conduction .or. (chemistry .and. (chem_params%diffusion &
1045 chem_diff_comm = .true.
1047 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1048 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
1051 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1052 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
1056# 594 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1057#if defined(MFC_OpenACC)
1058# 594 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1060# 594 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1061#elif defined(MFC_OpenMP)
1062# 594 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1064# 594 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1067 buffer_count = buffer_counts(mpi_dir)
1068 boundary_conditions = (/bc_x, bc_y, bc_z/)
1069 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
1070 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
1076 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
1077 recv_tag = f_logical_to_int(pbc_loc == 1)
1079 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
1080 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
1082 grid_dims = (/m, n, p/)
1085 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
1086 pack_offset = grid_dims(mpi_dir) - buff_size + 1
1090 if (pbc_loc == 1)
then
1091 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
1095# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1096 if (mpi_dir == 1)
then
1097# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1099# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1101# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1102#if defined(MFC_OpenACC)
1103# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1105# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1106#elif defined(MFC_OpenMP)
1107# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1109# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1111# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1113# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1115# 627 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1119 do j = 0, buff_size - 1
1121 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1122 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1128# 638 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1129#if defined(MFC_OpenACC)
1130# 638 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1132# 638 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1133#elif defined(MFC_OpenMP)
1134# 638 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1136# 638 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1138# 638 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1141 if (chem_diff_comm)
then
1143# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1145# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1146#if defined(MFC_OpenACC)
1147# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1149# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1150#elif defined(MFC_OpenMP)
1151# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1153# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1155# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1157# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1159# 641 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1163 do j = 0, buff_size - 1
1164 r = nvar +
v_size*(j + buff_size*(k + (n + 1)*l))
1165 buff_send(r) = real(q_t_sf%sf(j + pack_offset, k, l), kind=wp)
1170# 650 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1171#if defined(MFC_OpenACC)
1172# 650 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1174# 650 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1175#elif defined(MFC_OpenMP)
1176# 650 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1178# 650 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1180# 650 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1186# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1188# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1189#if defined(MFC_OpenACC)
1190# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1192# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1193#elif defined(MFC_OpenMP)
1194# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1196# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1198# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1200# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1202# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1206 do j = 0, buff_size - 1
1207 do i = nvar + 1, nvar + nnode
1209 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1210 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1217# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1218#if defined(MFC_OpenACC)
1219# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1221# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1222#elif defined(MFC_OpenMP)
1223# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1225# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1227# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1231# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1233# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1234#if defined(MFC_OpenACC)
1235# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1237# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1238#elif defined(MFC_OpenMP)
1239# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1241# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1243# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1245# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1247# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1251 do j = 0, buff_size - 1
1252 do i = nvar + 1, nvar + nnode
1254 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1255 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1262# 682 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1263#if defined(MFC_OpenACC)
1264# 682 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1266# 682 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1267#elif defined(MFC_OpenMP)
1268# 682 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1270# 682 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1272# 682 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1275# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1277# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1278 if (mpi_dir == 2)
then
1279# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1281# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1283# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1284#if defined(MFC_OpenACC)
1285# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1287# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1288#elif defined(MFC_OpenMP)
1289# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1291# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1293# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1295# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1297# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1301 do k = 0, buff_size - 1
1302 do j = -buff_size, m + buff_size
1303 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1304 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1310# 696 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1311#if defined(MFC_OpenACC)
1312# 696 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1314# 696 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1315#elif defined(MFC_OpenMP)
1316# 696 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1318# 696 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1320# 696 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1323 if (chem_diff_comm)
then
1325# 699 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1327# 699 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1328#if defined(MFC_OpenACC)
1329# 699 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1331# 699 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1332#elif defined(MFC_OpenMP)
1333# 699 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1335# 699 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1337# 699 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1339# 699 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1341# 699 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1344 do k = 0, buff_size - 1
1345 do j = -buff_size, m + buff_size
1346 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1347 buff_send(r) = real(q_t_sf%sf(j, k + pack_offset, l), kind=wp)
1352# 708 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1353#if defined(MFC_OpenACC)
1354# 708 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1356# 708 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1357#elif defined(MFC_OpenMP)
1358# 708 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1360# 708 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1362# 708 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1368# 712 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1370# 712 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1371#if defined(MFC_OpenACC)
1372# 712 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1374# 712 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1375#elif defined(MFC_OpenMP)
1376# 712 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1378# 712 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1380# 712 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1382# 712 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1384# 712 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1386 do i = nvar + 1, nvar + nnode
1388 do k = 0, buff_size - 1
1389 do j = -buff_size, m + buff_size
1391 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k &
1393 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1400# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1401#if defined(MFC_OpenACC)
1402# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1404# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1405#elif defined(MFC_OpenMP)
1406# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1408# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1410# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1414# 728 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1416# 728 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1417#if defined(MFC_OpenACC)
1418# 728 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1420# 728 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1421#elif defined(MFC_OpenMP)
1422# 728 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1424# 728 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1426# 728 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1428# 728 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1430# 728 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1432 do i = nvar + 1, nvar + nnode
1434 do k = 0, buff_size - 1
1435 do j = -buff_size, m + buff_size
1437 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1438 & + 1)*(k + buff_size*l))
1439 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1446# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1447#if defined(MFC_OpenACC)
1448# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1450# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1451#elif defined(MFC_OpenMP)
1452# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1454# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1456# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1459# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1461# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1462 if (mpi_dir == 3)
then
1463# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1465# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1467# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1468#if defined(MFC_OpenACC)
1469# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1471# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1472#elif defined(MFC_OpenMP)
1473# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1475# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1477# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1479# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1481# 745 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1484 do l = 0, buff_size - 1
1485 do k = -buff_size, n + buff_size
1486 do j = -buff_size, m + buff_size
1487 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1488 & + 2*buff_size + 1)*l))
1489 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1495# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1496#if defined(MFC_OpenACC)
1497# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1499# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1500#elif defined(MFC_OpenMP)
1501# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1503# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1505# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1508 if (chem_diff_comm)
then
1510# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1512# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1513#if defined(MFC_OpenACC)
1514# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1516# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1517#elif defined(MFC_OpenMP)
1518# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1520# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1522# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1524# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1526# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1528 do l = 0, buff_size - 1
1529 do k = -buff_size, n + buff_size
1530 do j = -buff_size, m + buff_size
1531 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1532 & + 2*buff_size + 1)*l))
1533 buff_send(r) = real(q_t_sf%sf(j, k, l + pack_offset), kind=wp)
1538# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1539#if defined(MFC_OpenACC)
1540# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1542# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1543#elif defined(MFC_OpenMP)
1544# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1546# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1548# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1554# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1556# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1557#if defined(MFC_OpenACC)
1558# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1560# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1561#elif defined(MFC_OpenMP)
1562# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1564# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1566# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1568# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1570# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1572 do i = nvar + 1, nvar + nnode
1573 do l = 0, buff_size - 1
1574 do k = -buff_size, n + buff_size
1575 do j = -buff_size, m + buff_size
1577 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1578 & + buff_size) + (n + 2*buff_size + 1)*l))
1579 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1586# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1587#if defined(MFC_OpenACC)
1588# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1590# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1591#elif defined(MFC_OpenMP)
1592# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1594# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1596# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1600# 790 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1602# 790 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1603#if defined(MFC_OpenACC)
1604# 790 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1606# 790 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1607#elif defined(MFC_OpenMP)
1608# 790 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1610# 790 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1612# 790 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1614# 790 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1616# 790 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1618 do i = nvar + 1, nvar + nnode
1619 do l = 0, buff_size - 1
1620 do k = -buff_size, n + buff_size
1621 do j = -buff_size, m + buff_size
1623 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1624 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*l))
1625 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1632# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1633#if defined(MFC_OpenACC)
1634# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1636# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1637#elif defined(MFC_OpenMP)
1638# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1640# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1642# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1645# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1647# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1651# 813 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1653# 825 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1654 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1656# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1657#if defined(MFC_OpenACC)
1658# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1660# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1661#elif defined(MFC_OpenMP)
1662# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1664# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1667 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1669 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1670 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1674 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1676# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1677#if defined(MFC_OpenACC)
1678# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1680# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1681#elif defined(MFC_OpenMP)
1682# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1684# 836 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1687# 839 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1689# 813 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1691# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1693# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1694#if defined(MFC_OpenACC)
1695# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1697# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1698 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1699# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1701# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1702 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1703# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1704 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1705# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1707# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1709# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1711# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1712#elif defined(MFC_OpenMP)
1713# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1715# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1716 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1717# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1719# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1720 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1721# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1722 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1723# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1725# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1727# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1729# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1731# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1732 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1733# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1735# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1736 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1737# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1738 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1739# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1741# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1743# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1745# 823 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1747# 823 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1748#if defined(MFC_OpenACC)
1749# 823 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1751# 823 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1752#elif defined(MFC_OpenMP)
1753# 823 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1755# 823 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1757# 839 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1759# 841 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1762 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1763# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1764 if (mpi_dir == 1)
then
1765# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1767# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1769# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1770#if defined(MFC_OpenACC)
1771# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1773# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1774#elif defined(MFC_OpenMP)
1775# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1777# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1779# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1781# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1783# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1787 do j = -buff_size, -1
1789 r = (i - 1) +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1790 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1791#if defined(__INTEL_COMPILER)
1792 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l)))
then
1793 print *,
"Error", j, k, l, i
1802# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1803#if defined(MFC_OpenACC)
1804# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1806# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1807#elif defined(MFC_OpenMP)
1808# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1810# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1812# 864 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1815 if (chem_diff_comm)
then
1817# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1819# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1820#if defined(MFC_OpenACC)
1821# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1823# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1824#elif defined(MFC_OpenMP)
1825# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1827# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1829# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1831# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1833# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1837 do j = -buff_size, -1
1838 r = nvar +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1839 q_t_sf%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1840#if defined(__INTEL_COMPILER)
1841 if (ieee_is_nan(q_t_sf%sf(j + unpack_offset, k, l)))
then
1842 print *,
"Error", j, k, l
1850# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1851#if defined(MFC_OpenACC)
1852# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1854# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1855#elif defined(MFC_OpenMP)
1856# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1858# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1860# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1866# 886 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1868# 886 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1869#if defined(MFC_OpenACC)
1870# 886 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1872# 886 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1873#elif defined(MFC_OpenMP)
1874# 886 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1876# 886 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1878# 886 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1880# 886 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1882# 886 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1886 do j = -buff_size, -1
1887 do i = nvar + 1, nvar + nnode
1889 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1890 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1897# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1898#if defined(MFC_OpenACC)
1899# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1901# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1902#elif defined(MFC_OpenMP)
1903# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1905# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1907# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1911# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1913# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1914#if defined(MFC_OpenACC)
1915# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1917# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1918#elif defined(MFC_OpenMP)
1919# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1921# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1923# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1925# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1927# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1931 do j = -buff_size, -1
1932 do i = nvar + 1, nvar + nnode
1934 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1935 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1942# 914 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1943#if defined(MFC_OpenACC)
1944# 914 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1946# 914 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1947#elif defined(MFC_OpenMP)
1948# 914 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1950# 914 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1952# 914 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1955# 1063 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1957# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1958 if (mpi_dir == 2)
then
1959# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1961# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1963# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1964#if defined(MFC_OpenACC)
1965# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1967# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1968#elif defined(MFC_OpenMP)
1969# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1971# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1973# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1975# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1977# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1981 do k = -buff_size, -1
1982 do j = -buff_size, m + buff_size
1983 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1984 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1985#if defined(__INTEL_COMPILER)
1986 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l)))
then
1987 print *,
"Error", j, k, l, i
1996# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1997#if defined(MFC_OpenACC)
1998# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2000# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2001#elif defined(MFC_OpenMP)
2002# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2004# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2006# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2009 if (chem_diff_comm)
then
2011# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2013# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2014#if defined(MFC_OpenACC)
2015# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2017# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2018#elif defined(MFC_OpenMP)
2019# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2021# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2023# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2025# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2027# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2030 do k = -buff_size, -1
2031 do j = -buff_size, m + buff_size
2032 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
2033 q_t_sf%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
2034#if defined(__INTEL_COMPILER)
2035 if (ieee_is_nan(q_t_sf%sf(j, k + unpack_offset, l)))
then
2036 print *,
"Error", j, k, l
2044# 952 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2045#if defined(MFC_OpenACC)
2046# 952 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2048# 952 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2049#elif defined(MFC_OpenMP)
2050# 952 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2052# 952 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2054# 952 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2060# 956 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2062# 956 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2063#if defined(MFC_OpenACC)
2064# 956 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2066# 956 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2067#elif defined(MFC_OpenMP)
2068# 956 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2070# 956 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2072# 956 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2074# 956 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2076# 956 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2078 do i = nvar + 1, nvar + nnode
2080 do k = -buff_size, -1
2081 do j = -buff_size, m + buff_size
2083 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2084 & + buff_size) + buff_size*l))
2085 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2092# 970 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2093#if defined(MFC_OpenACC)
2094# 970 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2096# 970 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2097#elif defined(MFC_OpenMP)
2098# 970 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2100# 970 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2102# 970 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2106# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2108# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2109#if defined(MFC_OpenACC)
2110# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2112# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2113#elif defined(MFC_OpenMP)
2114# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2116# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2118# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2120# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2122# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2124 do i = nvar + 1, nvar + nnode
2126 do k = -buff_size, -1
2127 do j = -buff_size, m + buff_size
2129 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2130 & + 1)*((k + buff_size) + buff_size*l))
2131 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2138# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2139#if defined(MFC_OpenACC)
2140# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2142# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2143#elif defined(MFC_OpenMP)
2144# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2146# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2148# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2151# 1063 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2153# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2154 if (mpi_dir == 3)
then
2155# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2157# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2159# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2160#if defined(MFC_OpenACC)
2161# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2163# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2164#elif defined(MFC_OpenMP)
2165# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2167# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2169# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2171# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2173# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2176 do l = -buff_size, -1
2177 do k = -buff_size, n + buff_size
2178 do j = -buff_size, m + buff_size
2179 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2180 & + 2*buff_size + 1)*(l + buff_size)))
2181 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2182#if defined(__INTEL_COMPILER)
2183 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset)))
then
2184 print *,
"Error", j, k, l, i
2193# 1007 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2194#if defined(MFC_OpenACC)
2195# 1007 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2197# 1007 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2198#elif defined(MFC_OpenMP)
2199# 1007 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2201# 1007 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2203# 1007 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2206 if (chem_diff_comm)
then
2208# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2210# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2211#if defined(MFC_OpenACC)
2212# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2214# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2215#elif defined(MFC_OpenMP)
2216# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2218# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2220# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2222# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2224# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2226 do l = -buff_size, -1
2227 do k = -buff_size, n + buff_size
2228 do j = -buff_size, m + buff_size
2229 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2230 & + 2*buff_size + 1)*(l + buff_size)))
2231 q_t_sf%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2232#if defined(__INTEL_COMPILER)
2233 if (ieee_is_nan(q_t_sf%sf(j, k, l + unpack_offset)))
then
2234 print *,
"Error", j, k, l
2242# 1026 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2243#if defined(MFC_OpenACC)
2244# 1026 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2246# 1026 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2247#elif defined(MFC_OpenMP)
2248# 1026 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2250# 1026 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2252# 1026 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2258# 1030 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2260# 1030 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2261#if defined(MFC_OpenACC)
2262# 1030 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2264# 1030 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2265#elif defined(MFC_OpenMP)
2266# 1030 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2268# 1030 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2270# 1030 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2272# 1030 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2274# 1030 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2276 do i = nvar + 1, nvar + nnode
2277 do l = -buff_size, -1
2278 do k = -buff_size, n + buff_size
2279 do j = -buff_size, m + buff_size
2281 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2282 & + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2283 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2290# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2291#if defined(MFC_OpenACC)
2292# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2294# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2295#elif defined(MFC_OpenMP)
2296# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2298# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2300# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2304# 1046 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2306# 1046 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2307#if defined(MFC_OpenACC)
2308# 1046 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2310# 1046 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2311#elif defined(MFC_OpenMP)
2312# 1046 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2314# 1046 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2316# 1046 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2318# 1046 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2320# 1046 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2322 do i = nvar + 1, nvar + nnode
2323 do l = -buff_size, -1
2324 do k = -buff_size, n + buff_size
2325 do j = -buff_size, m + buff_size
2327 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2328 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2329 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2336# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2337#if defined(MFC_OpenACC)
2338# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2340# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2341#elif defined(MFC_OpenMP)
2342# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2344# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2346# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2349# 1063 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2351# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2364 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
2365 type(scalar_field),
dimension(1:),
intent(inout) :: kahan_comp
2366 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
2367 integer :: i, j, k, l, r, q
2369 integer :: buffer_counts(1:3), buffer_count
2370 type(int_bounds_info) :: boundary_conditions(1:3)
2371 integer :: beg_end(1:2), grid_dims(1:3)
2372 integer :: dst_proc, src_proc, recv_tag, send_tag
2373 logical :: replace_buff
2374 integer :: pack_offset, unpack_offset
2375 real(wp) :: y_kahan, t_kahan
2380 call nvtxstartrange(
"BETA-COMM-PACKBUF")
2387 comm_coords(2)%beg = merge(-mapcells - 1, 0, n > 0)
2388 comm_coords(2)%end = merge(n + mapcells + 1, n, n > 0)
2389 comm_coords(3)%beg = merge(-mapcells - 1, 0, p > 0)
2390 comm_coords(3)%end = merge(p + mapcells + 1, p, p > 0)
2399 lb_size = 2*(mapcells + 1)
2404# 1116 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2405#if defined(MFC_OpenACC)
2406# 1116 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2408# 1116 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2409#elif defined(MFC_OpenMP)
2410# 1116 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2412# 1116 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2415 buffer_count = buffer_counts(mpi_dir)
2416 boundary_conditions = (/bc_x, bc_y, bc_z/)
2417 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
2418 grid_dims = (/m, n, p/)
2420 if (pbc_loc == -1)
then
2422 pack_offset = grid_dims(mpi_dir) + 1
2424 dst_proc = merge(beg_end(2), mpi_proc_null, beg_end(2) >= 0)
2425 src_proc = merge(beg_end(1), mpi_proc_null, beg_end(1) >= 0)
2428 replace_buff = .false.
2432 unpack_offset = grid_dims(mpi_dir) + 1
2433 dst_proc = merge(beg_end(1), mpi_proc_null, beg_end(1) >= 0)
2434 src_proc = merge(beg_end(2), mpi_proc_null, beg_end(2) >= 0)
2437 replace_buff = .true.
2441# 1145 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2442 if (mpi_dir == 1)
then
2443# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2445# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2447# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2448#if defined(MFC_OpenACC)
2449# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2451# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2452#elif defined(MFC_OpenMP)
2453# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2455# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2457# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2459# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2461# 1147 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2465 do j = -mapcells - 1, mapcells
2470 & kind=wp) - real(kahan_comp(
beta_vars(i))%sf(j + pack_offset, k, l), kind=wp)
2476# 1160 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2477#if defined(MFC_OpenACC)
2478# 1160 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2480# 1160 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2481#elif defined(MFC_OpenMP)
2482# 1160 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2484# 1160 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2486# 1160 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2488# 1192 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2490# 1145 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2491 if (mpi_dir == 2)
then
2492# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2494# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2496# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2497#if defined(MFC_OpenACC)
2498# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2500# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2501#elif defined(MFC_OpenMP)
2502# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2504# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2506# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2508# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2510# 1162 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2514 do k = -mapcells - 1, mapcells
2519 & kind=wp) - real(kahan_comp(
beta_vars(i))%sf(j, k + pack_offset, l), kind=wp)
2525# 1175 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2526#if defined(MFC_OpenACC)
2527# 1175 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2529# 1175 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2530#elif defined(MFC_OpenMP)
2531# 1175 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2533# 1175 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2535# 1175 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2537# 1192 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2539# 1145 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2540 if (mpi_dir == 3)
then
2541# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2543# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2545# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2546#if defined(MFC_OpenACC)
2547# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2549# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2550#elif defined(MFC_OpenMP)
2551# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2553# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2555# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2557# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2559# 1177 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2562 do l = -mapcells - 1, mapcells
2568 & kind=wp) - real(kahan_comp(
beta_vars(i))%sf(j, k, l + pack_offset), kind=wp)
2574# 1190 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2575#if defined(MFC_OpenACC)
2576# 1190 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2578# 1190 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2579#elif defined(MFC_OpenMP)
2580# 1190 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2582# 1190 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2584# 1190 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2586# 1192 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2588# 1194 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2592# 1198 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2594# 1210 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2595 call nvtxstartrange(
"BETA-COMM-DEV2HOST")
2597# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2598#if defined(MFC_OpenACC)
2599# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2601# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2602#elif defined(MFC_OpenMP)
2603# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2605# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2608 call nvtxstartrange(
"BETA-COMM-SENDRECV-NO-RMDA")
2610 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2611 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2615 call nvtxstartrange(
"BETA-COMM-HOST2DEV")
2617# 1221 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2618#if defined(MFC_OpenACC)
2619# 1221 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2621# 1221 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2622#elif defined(MFC_OpenMP)
2623# 1221 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2625# 1221 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2628# 1224 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2630# 1198 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2632# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2634# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2635#if defined(MFC_OpenACC)
2636# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2638# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2639 call nvtxstartrange(
"BETA-COMM-SENDRECV-RDMA")
2640# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2642# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2643 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2644# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2645 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2646# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2648# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2650# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2652# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2653#elif defined(MFC_OpenMP)
2654# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2656# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2657 call nvtxstartrange(
"BETA-COMM-SENDRECV-RDMA")
2658# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2660# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2661 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2662# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2663 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2664# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2666# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2668# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2670# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2672# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2673 call nvtxstartrange(
"BETA-COMM-SENDRECV-RDMA")
2674# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2676# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2677 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2678# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2679 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2680# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2682# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2684# 1200 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2686# 1208 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2688# 1208 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2689#if defined(MFC_OpenACC)
2690# 1208 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2692# 1208 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2693#elif defined(MFC_OpenMP)
2694# 1208 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2696# 1208 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2698# 1224 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2700# 1226 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2703 call nvtxstartrange(
"BETA-COMM-UNPACKBUF")
2704 if (src_proc /= mpi_proc_null)
then
2705# 1231 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2706 if (mpi_dir == 1)
then
2707# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2709# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2711# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2712#if defined(MFC_OpenACC)
2713# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2715# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2716#elif defined(MFC_OpenMP)
2717# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2719# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2721# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2723# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2725# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2727# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2731 do j = -mapcells - 1, mapcells
2735 if (replace_buff)
then
2737 kahan_comp(
beta_vars(i))%sf(j + unpack_offset, k, &
2738 & l) = real(q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l), &
2741 y_kahan =
buff_recv(r) - real(kahan_comp(
beta_vars(i))%sf(j + unpack_offset, k, l), &
2743 t_kahan = real(q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l), kind=wp) + y_kahan
2744 kahan_comp(
beta_vars(i))%sf(j + unpack_offset, k, &
2745 & l) = (t_kahan - q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l)) - y_kahan
2746 q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l) = t_kahan
2753# 1257 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2754#if defined(MFC_OpenACC)
2755# 1257 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2757# 1257 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2758#elif defined(MFC_OpenMP)
2759# 1257 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2761# 1257 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2763# 1257 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2765# 1312 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2767# 1231 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2768 if (mpi_dir == 2)
then
2769# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2771# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2773# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2774#if defined(MFC_OpenACC)
2775# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2777# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2778#elif defined(MFC_OpenMP)
2779# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2781# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2783# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2785# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2787# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2789# 1259 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2793 do k = -mapcells - 1, mapcells
2797 if (replace_buff)
then
2799 kahan_comp(
beta_vars(i))%sf(j, k + unpack_offset, &
2800 & l) = real(q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l), &
2803 y_kahan =
buff_recv(r) - real(kahan_comp(
beta_vars(i))%sf(j, k + unpack_offset, l), &
2805 t_kahan = real(q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l), kind=wp) + y_kahan
2806 kahan_comp(
beta_vars(i))%sf(j, k + unpack_offset, &
2807 & l) = (t_kahan - q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l)) - y_kahan
2808 q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l) = t_kahan
2815# 1283 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2816#if defined(MFC_OpenACC)
2817# 1283 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2819# 1283 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2820#elif defined(MFC_OpenMP)
2821# 1283 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2823# 1283 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2825# 1283 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2827# 1312 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2829# 1231 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2830 if (mpi_dir == 3)
then
2831# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2833# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2835# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2836#if defined(MFC_OpenACC)
2837# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2839# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2840#elif defined(MFC_OpenMP)
2841# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2843# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2845# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2847# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2849# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2851# 1285 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2854 do l = -mapcells - 1, mapcells
2859 if (replace_buff)
then
2862 & l + unpack_offset) = real(q_comm(
beta_vars(i))%sf(j, k, &
2863 & l + unpack_offset), kind=wp) -
buff_recv(r)
2865 y_kahan =
buff_recv(r) - real(kahan_comp(
beta_vars(i))%sf(j, k, l + unpack_offset), &
2867 t_kahan = real(q_comm(
beta_vars(i))%sf(j, k, l + unpack_offset), kind=wp) + y_kahan
2869 & l + unpack_offset) = (t_kahan - q_comm(
beta_vars(i))%sf(j, k, &
2870 & l + unpack_offset)) - y_kahan
2871 q_comm(
beta_vars(i))%sf(j, k, l + unpack_offset) = t_kahan
2878# 1310 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2879#if defined(MFC_OpenACC)
2880# 1310 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2882# 1310 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2883#elif defined(MFC_OpenMP)
2884# 1310 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2886# 1310 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2888# 1310 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2890# 1312 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2892# 1314 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2904 logical,
intent(in) :: write_silo_ghost_offsets
2905 logical,
intent(in) :: adjust_local_domains
2906 type(int_bounds_info),
dimension(3),
intent(inout),
optional :: output_offsets
2907 type(bounds_info),
dimension(3),
intent(inout),
optional :: local_domains
2911 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
2913 integer :: MPI_COMM_CART
2914 integer :: rem_cells
2915 integer :: rem_cells_by_dim(3)
2916 integer :: recon_order
2921 integer,
dimension(1:num_dims) :: neighbor_coords
2923 rem_cells_by_dim = 0
2926 nidx(1)%beg = 0; nidx(1)%end = 0
2927 nidx(2)%beg = 0; nidx(2)%end = 0
2928 nidx(3)%beg = 0; nidx(3)%end = 0
2930 if (recon_type == recon_type_weno)
then
2931 recon_order = weno_order
2933 recon_order = muscl_order
2936 if (num_procs == 1 .and. parallel_io)
then
2944 recon_order = igr_order
2954 num_procs_z = num_procs
2958 tmp_num_procs_y = num_procs_y
2959 tmp_num_procs_z = num_procs_z
2960 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2964 if (mod(num_procs, i) == 0 .and. (n + 1)/i >= num_stcls_min*recon_order)
then
2966 tmp_num_procs_z = num_procs/i
2968 if (fct_min >= abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2969 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2971 num_procs_z = num_procs/i
2972 fct_min = abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2978 if (cyl_coord .and. p > 0)
then
2983 num_procs_y = num_procs
2988 tmp_num_procs_x = num_procs_x
2989 tmp_num_procs_y = num_procs_y
2990 tmp_num_procs_z = num_procs_z
2991 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2995 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2997 tmp_num_procs_y = num_procs/i
2999 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
3000 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
3002 num_procs_y = num_procs/i
3003 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3012 num_procs_z = num_procs
3016 tmp_num_procs_x = num_procs_x
3017 tmp_num_procs_y = num_procs_y
3018 tmp_num_procs_z = num_procs_z
3019 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + 10._wp*abs((n + 1) &
3020 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
3024 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
3025 do j = 1, num_procs/i
3026 if (mod(num_procs/i, j) == 0 .and. (n + 1)/j >= num_stcls_min*recon_order)
then
3029 tmp_num_procs_z = num_procs/(i*j)
3031 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
3032 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
3033 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
3036 num_procs_z = num_procs/(i*j)
3037 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
3038 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
3050 if (proc_rank == 0 .and. ierr == -1)
then
3051 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n, p and ' &
3052 & //
'weno/muscl/igr_order. Exiting.')
3056 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, num_procs_y, num_procs_z/), (/.true., .true., .true./), &
3057 & .false., mpi_comm_cart, ierr)
3060 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, proc_coords, ierr)
3065 rem_cells = mod(p + 1, num_procs_z)
3066 rem_cells_by_dim(3) = rem_cells
3069 p = (p + 1)/num_procs_z - 1
3073 if (proc_coords(3) == i - 1)
then
3079 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1))
then
3080 proc_coords(3) = proc_coords(3) - 1
3081 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%beg, ierr)
3082 proc_coords(3) = proc_coords(3) + 1
3087 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1))
then
3088 proc_coords(3) = proc_coords(3) + 1
3089 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%end, ierr)
3090 proc_coords(3) = proc_coords(3) - 1
3095 if (parallel_io)
then
3096 if (proc_coords(3) < rem_cells)
then
3097 start_idx(3) = (p + 1)*proc_coords(3)
3099 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
3107 num_procs_y = num_procs
3111 tmp_num_procs_x = num_procs_x
3112 tmp_num_procs_y = num_procs_y
3113 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3117 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
3119 tmp_num_procs_y = num_procs/i
3121 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
3122 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
3124 num_procs_y = num_procs/i
3125 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3133 if (proc_rank == 0 .and. ierr == -1)
then
3134 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n and ' &
3135 & //
'weno/muscl/igr_order. Exiting.')
3139 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, num_procs_y/), (/.true., .true./), .false., mpi_comm_cart, &
3143 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, proc_coords, ierr)
3149 rem_cells = mod(n + 1, num_procs_y)
3150 rem_cells_by_dim(2) = rem_cells
3153 n = (n + 1)/num_procs_y - 1
3157 if (proc_coords(2) == i - 1)
then
3163 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1))
then
3164 proc_coords(2) = proc_coords(2) - 1
3165 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%beg, ierr)
3166 proc_coords(2) = proc_coords(2) + 1
3171 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1))
then
3172 proc_coords(2) = proc_coords(2) + 1
3173 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%end, ierr)
3174 proc_coords(2) = proc_coords(2) - 1
3179 if (parallel_io)
then
3180 if (proc_coords(2) < rem_cells)
then
3181 start_idx(2) = (n + 1)*proc_coords(2)
3183 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
3190 num_procs_x = num_procs
3193 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), (/.true./), .false., mpi_comm_cart, ierr)
3196 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, proc_coords, ierr)
3202 rem_cells = mod(m + 1, num_procs_x)
3203 rem_cells_by_dim(1) = rem_cells
3206 m = (m + 1)/num_procs_x - 1
3210 if (proc_coords(1) == i - 1)
then
3215 call s_update_cell_bounds(cells_bounds, m, n, p)
3218 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1))
then
3219 proc_coords(1) = proc_coords(1) - 1
3220 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
3221 proc_coords(1) = proc_coords(1) + 1
3226 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1))
then
3227 proc_coords(1) = proc_coords(1) + 1
3228 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
3229 proc_coords(1) = proc_coords(1) - 1
3234 if (parallel_io)
then
3235 if (proc_coords(1) < rem_cells)
then
3236 start_idx(1) = (m + 1)*proc_coords(1)
3238 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
3243 & n_glb, p_glb/), write_silo_ghost_offsets, &
3244 & adjust_local_domains .and. (.not. parallel_io), output_offsets, local_domains)
3247# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3249# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3250 use iso_fortran_env,
only: output_unit
3251# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3253# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3254 print *,
'm_mpi_common.fpp:1667: ',
'@:ALLOCATE(neighbor_ranks(nidx(1)%beg:nidx(1)%end, nidx(2)%beg:nidx(2)%end, nidx(3)%beg:nidx(3)%end))'
3255# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3257# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3258 call flush (output_unit)
3259# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3261# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3263# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3264 allocate (neighbor_ranks(nidx(1)%beg:nidx(1)%end, nidx(2)%beg:nidx(2)%end, nidx(3)%beg:nidx(3)%end))
3265# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3267# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3269# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3270#if defined(MFC_OpenACC)
3271# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3273# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3274#elif defined(MFC_OpenMP)
3275# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3277# 1667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3279 do k = nidx(3)%beg, nidx(3)%end
3280 do j = nidx(2)%beg, nidx(2)%end
3281 do i = nidx(1)%beg, nidx(1)%end
3282 if (abs(i) + abs(
j) + abs(
k) > 0)
then
3283 neighbor_coords(1) = proc_coords(1) + i
3284 if (num_dims > 1) neighbor_coords(2) = proc_coords(2) +
j
3285 if (num_dims > 2) neighbor_coords(3) = proc_coords(3) +
k
3286 call mpi_cart_rank(mpi_comm_cart, neighbor_coords, neighbor_ranks(i,
j,
k), ierr)