1080 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
1081 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
1082 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
1083 integer :: i, j, k, l, r, q
1084 integer :: buffer_counts(1:3), buffer_count
1085 type(int_bounds_info) :: boundary_conditions(1:3)
1086 integer :: beg_end(1:2), grid_dims(1:3)
1087 integer :: dst_proc, src_proc, recv_tag, send_tag
1088 logical :: beg_end_geq_0, qbmm_comm, chem_diff_comm
1089 integer :: pack_offset, unpack_offset
1090 type(scalar_field),
optional,
intent(inout) :: q_T_sf
1095 call nvtxstartrange(
"RHS-COMM-PACKBUF")
1098 chem_diff_comm = .false.
1100 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
1102 v_size = nvar + 2*nb*nnode
1103 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1104 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
1105 else if (
present(q_t_sf) .and. (heat_conduction .or. (chemistry .and. (chem_params%diffusion &
1110 chem_diff_comm = .true.
1112 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1113 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
1116 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1117 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
1121# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1122#if defined(MFC_OpenACC)
1123# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1125# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1126#elif defined(MFC_OpenMP)
1127# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1129# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1131# 629 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1133 buffer_count = buffer_counts(mpi_dir)
1134 boundary_conditions = (/bc_x, bc_y, bc_z/)
1135 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
1136 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
1142 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
1143 recv_tag = f_logical_to_int(pbc_loc == 1)
1145 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
1146 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
1148 grid_dims = (/m, n, p/)
1151 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
1152 pack_offset = grid_dims(mpi_dir) - buff_size + 1
1156 if (pbc_loc == 1)
then
1157 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
1161# 659 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1162 if (mpi_dir == 1)
then
1163# 660 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1164# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1166# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1168# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1169#if defined(MFC_OpenACC)
1170# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1172# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1173#elif defined(MFC_OpenMP)
1174# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1176# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1178# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1180# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1182# 661 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1184# 662 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1187 do j = 0, buff_size - 1
1189 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1190 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1196# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1197#if defined(MFC_OpenACC)
1198# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1200# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1201#elif defined(MFC_OpenMP)
1202# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1204# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1206# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1208# 673 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1210 if (chem_diff_comm)
then
1212# 675 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1214# 675 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1215#if defined(MFC_OpenACC)
1216# 675 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1218# 675 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1219#elif defined(MFC_OpenMP)
1220# 675 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1222# 675 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1224# 675 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1226# 675 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1228# 675 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1230# 676 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1233 do j = 0, buff_size - 1
1234 r = nvar +
v_size*(j + buff_size*(k + (n + 1)*l))
1235 buff_send(r) = real(q_t_sf%sf(j + pack_offset, k, l), kind=wp)
1240# 684 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1241#if defined(MFC_OpenACC)
1242# 684 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1244# 684 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1245#elif defined(MFC_OpenMP)
1246# 684 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1248# 684 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1250# 684 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1252# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1257# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1259# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1260#if defined(MFC_OpenACC)
1261# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1263# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1264#elif defined(MFC_OpenMP)
1265# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1267# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1269# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1271# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1273# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1275# 689 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1278 do j = 0, buff_size - 1
1279 do i = nvar + 1, nvar + nnode
1281 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1282 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1289# 701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1290#if defined(MFC_OpenACC)
1291# 701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1293# 701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1294#elif defined(MFC_OpenMP)
1295# 701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1297# 701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1299# 701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1301# 702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1304# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1306# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1307#if defined(MFC_OpenACC)
1308# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1310# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1311#elif defined(MFC_OpenMP)
1312# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1314# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1316# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1318# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1320# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1322# 704 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1325 do j = 0, buff_size - 1
1326 do i = nvar + 1, nvar + nnode
1328 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1329 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1336# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1337#if defined(MFC_OpenACC)
1338# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1340# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1341#elif defined(MFC_OpenMP)
1342# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1344# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1346# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1348# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1350# 841 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1352# 659 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1353 if (mpi_dir == 2)
then
1354# 660 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1355# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1357# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1359# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1360#if defined(MFC_OpenACC)
1361# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1363# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1364#elif defined(MFC_OpenMP)
1365# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1367# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1369# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1371# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1373# 719 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1375# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1378 do k = 0, buff_size - 1
1379 do j = -buff_size, m + buff_size
1380 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1381 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1387# 730 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1388#if defined(MFC_OpenACC)
1389# 730 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1391# 730 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1392#elif defined(MFC_OpenMP)
1393# 730 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1395# 730 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1397# 730 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1399# 731 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1401 if (chem_diff_comm)
then
1403# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1405# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1406#if defined(MFC_OpenACC)
1407# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1409# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1410#elif defined(MFC_OpenMP)
1411# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1413# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1415# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1417# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1419# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1421# 734 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1423 do k = 0, buff_size - 1
1424 do j = -buff_size, m + buff_size
1425 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1426 buff_send(r) = real(q_t_sf%sf(j, k + pack_offset, l), kind=wp)
1431# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1432#if defined(MFC_OpenACC)
1433# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1435# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1436#elif defined(MFC_OpenMP)
1437# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1439# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1441# 742 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1443# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1448# 746 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1450# 746 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1451#if defined(MFC_OpenACC)
1452# 746 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1454# 746 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1455#elif defined(MFC_OpenMP)
1456# 746 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1458# 746 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1460# 746 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1462# 746 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1464# 746 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1466# 747 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1467 do i = nvar + 1, nvar + nnode
1469 do k = 0, buff_size - 1
1470 do j = -buff_size, m + buff_size
1472 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k &
1474 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1481# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1482#if defined(MFC_OpenACC)
1483# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1485# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1486#elif defined(MFC_OpenMP)
1487# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1489# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1491# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1493# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1496# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1498# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1499#if defined(MFC_OpenACC)
1500# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1502# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1503#elif defined(MFC_OpenMP)
1504# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1506# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1508# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1510# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1512# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1514# 763 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1515 do i = nvar + 1, nvar + nnode
1517 do k = 0, buff_size - 1
1518 do j = -buff_size, m + buff_size
1520 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1521 & + 1)*(k + buff_size*l))
1522 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1529# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1530#if defined(MFC_OpenACC)
1531# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1533# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1534#elif defined(MFC_OpenMP)
1535# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1537# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1539# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1541# 777 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1543# 841 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1545# 659 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1546 if (mpi_dir == 3)
then
1547# 660 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1548# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1550# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1552# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1553#if defined(MFC_OpenACC)
1554# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1556# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1557#elif defined(MFC_OpenMP)
1558# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1560# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1562# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1564# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1566# 779 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1568# 780 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1570 do l = 0, buff_size - 1
1571 do k = -buff_size, n + buff_size
1572 do j = -buff_size, m + buff_size
1573 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1574 & + 2*buff_size + 1)*l))
1575 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1581# 791 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1582#if defined(MFC_OpenACC)
1583# 791 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1585# 791 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1586#elif defined(MFC_OpenMP)
1587# 791 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1589# 791 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1591# 791 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1593# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1595 if (chem_diff_comm)
then
1597# 794 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1599# 794 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1600#if defined(MFC_OpenACC)
1601# 794 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1603# 794 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1604#elif defined(MFC_OpenMP)
1605# 794 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1607# 794 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1609# 794 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1611# 794 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1613# 794 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1615# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1616 do l = 0, buff_size - 1
1617 do k = -buff_size, n + buff_size
1618 do j = -buff_size, m + buff_size
1619 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1620 & + 2*buff_size + 1)*l))
1621 buff_send(r) = real(q_t_sf%sf(j, k, l + pack_offset), kind=wp)
1626# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1627#if defined(MFC_OpenACC)
1628# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1630# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1631#elif defined(MFC_OpenMP)
1632# 804 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1638# 805 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1643# 808 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1645# 808 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1646#if defined(MFC_OpenACC)
1647# 808 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1649# 808 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1650#elif defined(MFC_OpenMP)
1651# 808 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1653# 808 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1655# 808 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1657# 808 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1659# 808 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1661# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1662 do i = nvar + 1, nvar + nnode
1663 do l = 0, buff_size - 1
1664 do k = -buff_size, n + buff_size
1665 do j = -buff_size, m + buff_size
1667 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1668 & + buff_size) + (n + 2*buff_size + 1)*l))
1669 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1676# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1677#if defined(MFC_OpenACC)
1678# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1680# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1681#elif defined(MFC_OpenMP)
1682# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1684# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1686# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1688# 823 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1691# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1693# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1694#if defined(MFC_OpenACC)
1695# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1697# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1698#elif defined(MFC_OpenMP)
1699# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1701# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1703# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1705# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1707# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1709# 825 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1710 do i = nvar + 1, nvar + nnode
1711 do l = 0, buff_size - 1
1712 do k = -buff_size, n + buff_size
1713 do j = -buff_size, m + buff_size
1715 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1716 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*l))
1717 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1724# 838 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1725#if defined(MFC_OpenACC)
1726# 838 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1728# 838 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1729#elif defined(MFC_OpenMP)
1730# 838 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1732# 838 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1734# 838 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1736# 839 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1738# 841 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1740# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1744# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1746# 848 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1747# 859 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1748 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1750# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1751#if defined(MFC_OpenACC)
1752# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1754# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1755#elif defined(MFC_OpenMP)
1756# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1758# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1760# 861 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1762 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1764 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1765 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1769 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1771# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1772#if defined(MFC_OpenACC)
1773# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1775# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1776#elif defined(MFC_OpenMP)
1777# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1779# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1781# 871 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1783# 873 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1785# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1787# 848 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1788# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1790# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1791#if defined(MFC_OpenACC)
1792# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1794# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1795 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1796# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1798# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1799 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1800# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1801 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1802# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1804# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1806# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1808# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1809#elif defined(MFC_OpenMP)
1810# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1812# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1813 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1814# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1816# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1817 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1818# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1819 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1820# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1822# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1824# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1826# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1828# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1829 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1830# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1832# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1833 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1834# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1835 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1836# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1838# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1840# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1842# 857 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1844# 857 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1845#if defined(MFC_OpenACC)
1846# 857 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1848# 857 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1849#elif defined(MFC_OpenMP)
1850# 857 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1852# 857 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1854# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1855# 873 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1857# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1860 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1861# 879 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1862 if (mpi_dir == 1)
then
1863# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1864# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1866# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1868# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1869#if defined(MFC_OpenACC)
1870# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1872# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1873#elif defined(MFC_OpenMP)
1874# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1876# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1878# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1880# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1882# 881 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1884# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1887 do j = -buff_size, -1
1889 r = (i - 1) +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1890 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1891#if defined(__INTEL_COMPILER)
1892 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l)))
then
1893 print *,
"Error", j, k, l, i
1902# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1903#if defined(MFC_OpenACC)
1904# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1906# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1907#elif defined(MFC_OpenMP)
1908# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1910# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1912# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1914# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1916 if (chem_diff_comm)
then
1918# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1920# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1921#if defined(MFC_OpenACC)
1922# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1924# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1925#elif defined(MFC_OpenMP)
1926# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1928# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1930# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1932# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1934# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1936# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1939 do j = -buff_size, -1
1940 r = nvar +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1941 q_t_sf%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1942#if defined(__INTEL_COMPILER)
1943 if (ieee_is_nan(q_t_sf%sf(j + unpack_offset, k, l)))
then
1944 print *,
"Error", j, k, l
1952# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1953#if defined(MFC_OpenACC)
1954# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1956# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1957#elif defined(MFC_OpenMP)
1958# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1960# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1962# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1964# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1969# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1971# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1972#if defined(MFC_OpenACC)
1973# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1975# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1976#elif defined(MFC_OpenMP)
1977# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1979# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1981# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1983# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1985# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1987# 921 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1990 do j = -buff_size, -1
1991 do i = nvar + 1, nvar + nnode
1993 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1994 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2001# 933 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2002#if defined(MFC_OpenACC)
2003# 933 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2005# 933 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2006#elif defined(MFC_OpenMP)
2007# 933 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2009# 933 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2011# 933 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2013# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2016# 935 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2018# 935 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2019#if defined(MFC_OpenACC)
2020# 935 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2022# 935 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2023#elif defined(MFC_OpenMP)
2024# 935 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2026# 935 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2028# 935 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2030# 935 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2032# 935 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2034# 936 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2037 do j = -buff_size, -1
2038 do i = nvar + 1, nvar + nnode
2040 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
2041 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2048# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2049#if defined(MFC_OpenACC)
2050# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2052# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2053#elif defined(MFC_OpenMP)
2054# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2056# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2058# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2060# 949 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2062# 1097 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2064# 879 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2065 if (mpi_dir == 2)
then
2066# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2067# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2069# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2071# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2072#if defined(MFC_OpenACC)
2073# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2075# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2076#elif defined(MFC_OpenMP)
2077# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2079# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2081# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2083# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2085# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2087# 952 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2090 do k = -buff_size, -1
2091 do j = -buff_size, m + buff_size
2092 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
2093 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
2094#if defined(__INTEL_COMPILER)
2095 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l)))
then
2096 print *,
"Error", j, k, l, i
2105# 968 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2106#if defined(MFC_OpenACC)
2107# 968 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2109# 968 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2110#elif defined(MFC_OpenMP)
2111# 968 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2113# 968 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2115# 968 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2117# 969 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2119 if (chem_diff_comm)
then
2121# 971 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2123# 971 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2124#if defined(MFC_OpenACC)
2125# 971 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2127# 971 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2128#elif defined(MFC_OpenMP)
2129# 971 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2131# 971 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2133# 971 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2135# 971 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2137# 971 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2139# 972 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2141 do k = -buff_size, -1
2142 do j = -buff_size, m + buff_size
2143 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
2144 q_t_sf%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
2145#if defined(__INTEL_COMPILER)
2146 if (ieee_is_nan(q_t_sf%sf(j, k + unpack_offset, l)))
then
2147 print *,
"Error", j, k, l
2155# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2156#if defined(MFC_OpenACC)
2157# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2159# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2160#elif defined(MFC_OpenMP)
2161# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2163# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2165# 986 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2167# 987 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2172# 990 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2174# 990 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2175#if defined(MFC_OpenACC)
2176# 990 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2178# 990 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2179#elif defined(MFC_OpenMP)
2180# 990 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2182# 990 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2184# 990 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2186# 990 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2188# 990 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2190# 991 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2191 do i = nvar + 1, nvar + nnode
2193 do k = -buff_size, -1
2194 do j = -buff_size, m + buff_size
2196 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2197 & + buff_size) + buff_size*l))
2198 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2205# 1004 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2206#if defined(MFC_OpenACC)
2207# 1004 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2209# 1004 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2210#elif defined(MFC_OpenMP)
2211# 1004 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2213# 1004 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2215# 1004 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2217# 1005 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2220# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2222# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2223#if defined(MFC_OpenACC)
2224# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2226# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2227#elif defined(MFC_OpenMP)
2228# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2230# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2232# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2234# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2236# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2238# 1007 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2239 do i = nvar + 1, nvar + nnode
2241 do k = -buff_size, -1
2242 do j = -buff_size, m + buff_size
2244 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2245 & + 1)*((k + buff_size) + buff_size*l))
2246 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2253# 1020 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2254#if defined(MFC_OpenACC)
2255# 1020 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2257# 1020 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2258#elif defined(MFC_OpenMP)
2259# 1020 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2261# 1020 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2263# 1020 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2265# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2267# 1097 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2269# 879 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2270 if (mpi_dir == 3)
then
2271# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2272# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2274# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2276# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2277#if defined(MFC_OpenACC)
2278# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2280# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2281#elif defined(MFC_OpenMP)
2282# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2284# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2286# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2288# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2290# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2292# 1024 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2294 do l = -buff_size, -1
2295 do k = -buff_size, n + buff_size
2296 do j = -buff_size, m + buff_size
2297 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2298 & + 2*buff_size + 1)*(l + buff_size)))
2299 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2300#if defined(__INTEL_COMPILER)
2301 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset)))
then
2302 print *,
"Error", j, k, l, i
2311# 1041 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2312#if defined(MFC_OpenACC)
2313# 1041 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2315# 1041 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2316#elif defined(MFC_OpenMP)
2317# 1041 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2319# 1041 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2321# 1041 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2323# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2325 if (chem_diff_comm)
then
2327# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2329# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2330#if defined(MFC_OpenACC)
2331# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2333# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2334#elif defined(MFC_OpenMP)
2335# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2337# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2339# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2341# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2343# 1044 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2345# 1045 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2346 do l = -buff_size, -1
2347 do k = -buff_size, n + buff_size
2348 do j = -buff_size, m + buff_size
2349 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2350 & + 2*buff_size + 1)*(l + buff_size)))
2351 q_t_sf%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2352#if defined(__INTEL_COMPILER)
2353 if (ieee_is_nan(q_t_sf%sf(j, k, l + unpack_offset)))
then
2354 print *,
"Error", j, k, l
2362# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2363#if defined(MFC_OpenACC)
2364# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2366# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2367#elif defined(MFC_OpenMP)
2368# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2370# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2372# 1060 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2374# 1061 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2379# 1064 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2381# 1064 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2382#if defined(MFC_OpenACC)
2383# 1064 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2385# 1064 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2386#elif defined(MFC_OpenMP)
2387# 1064 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2389# 1064 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2391# 1064 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2393# 1064 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2395# 1064 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2397# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2398 do i = nvar + 1, nvar + nnode
2399 do l = -buff_size, -1
2400 do k = -buff_size, n + buff_size
2401 do j = -buff_size, m + buff_size
2403 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2404 & + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2405 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2412# 1078 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2413#if defined(MFC_OpenACC)
2414# 1078 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2416# 1078 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2417#elif defined(MFC_OpenMP)
2418# 1078 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2420# 1078 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2422# 1078 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2424# 1079 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2427# 1080 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2429# 1080 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2430#if defined(MFC_OpenACC)
2431# 1080 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2433# 1080 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2434#elif defined(MFC_OpenMP)
2435# 1080 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2437# 1080 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2439# 1080 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2441# 1080 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2443# 1080 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2445# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2446 do i = nvar + 1, nvar + nnode
2447 do l = -buff_size, -1
2448 do k = -buff_size, n + buff_size
2449 do j = -buff_size, m + buff_size
2451 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2452 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2453 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2460# 1094 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2461#if defined(MFC_OpenACC)
2462# 1094 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2464# 1094 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2465#elif defined(MFC_OpenMP)
2466# 1094 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2468# 1094 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2470# 1094 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2472# 1095 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2474# 1097 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2476# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2489 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
2490 type(scalar_field),
dimension(1:),
intent(inout) :: kahan_comp
2491 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
2492 integer :: i, j, k, l, r, q
2494 integer :: buffer_counts(1:3), buffer_count
2495 type(int_bounds_info) :: boundary_conditions(1:3)
2496 integer :: beg_end(1:2), grid_dims(1:3)
2497 integer :: dst_proc, src_proc, recv_tag, send_tag
2498 logical :: replace_buff
2499 integer :: pack_offset, unpack_offset
2500 real(wp) :: y_kahan, t_kahan
2505 call nvtxstartrange(
"BETA-COMM-PACKBUF")
2512 comm_coords(2)%beg = merge(-mapcells - 1, 0, n > 0)
2513 comm_coords(2)%end = merge(n + mapcells + 1, n, n > 0)
2514 comm_coords(3)%beg = merge(-mapcells - 1, 0, p > 0)
2515 comm_coords(3)%end = merge(p + mapcells + 1, p, p > 0)
2524 lb_size = 2*(mapcells + 1)
2529# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2530#if defined(MFC_OpenACC)
2531# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2533# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2534#elif defined(MFC_OpenMP)
2535# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2537# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2539# 1151 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2541 buffer_count = buffer_counts(mpi_dir)
2542 boundary_conditions = (/bc_x, bc_y, bc_z/)
2543 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
2544 grid_dims = (/m, n, p/)
2546 if (pbc_loc == -1)
then
2548 pack_offset = grid_dims(mpi_dir) + 1
2550 dst_proc = merge(beg_end(2), mpi_proc_null, beg_end(2) >= 0)
2551 src_proc = merge(beg_end(1), mpi_proc_null, beg_end(1) >= 0)
2554 replace_buff = .false.
2558 unpack_offset = grid_dims(mpi_dir) + 1
2559 dst_proc = merge(beg_end(1), mpi_proc_null, beg_end(1) >= 0)
2560 src_proc = merge(beg_end(2), mpi_proc_null, beg_end(2) >= 0)
2563 replace_buff = .true.
2567# 1179 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2568 if (mpi_dir == 1)
then
2569# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2570# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2572# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2574# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2575#if defined(MFC_OpenACC)
2576# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2578# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2579#elif defined(MFC_OpenMP)
2580# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2582# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2584# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2586# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2588# 1181 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2590# 1182 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2593 do j = -mapcells - 1, mapcells
2598 & kind=wp) - real(kahan_comp(
beta_vars(i))%sf(j + pack_offset, k, l), kind=wp)
2604# 1194 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2605#if defined(MFC_OpenACC)
2606# 1194 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2608# 1194 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2609#elif defined(MFC_OpenMP)
2610# 1194 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2612# 1194 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2614# 1194 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2616# 1195 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2617# 1226 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2619# 1179 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2620 if (mpi_dir == 2)
then
2621# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2622# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2624# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2626# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2627#if defined(MFC_OpenACC)
2628# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2630# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2631#elif defined(MFC_OpenMP)
2632# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2634# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2636# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2638# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2640# 1196 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2642# 1197 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2645 do k = -mapcells - 1, mapcells
2650 & kind=wp) - real(kahan_comp(
beta_vars(i))%sf(j, k + pack_offset, l), kind=wp)
2656# 1209 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2657#if defined(MFC_OpenACC)
2658# 1209 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2660# 1209 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2661#elif defined(MFC_OpenMP)
2662# 1209 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2664# 1209 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2666# 1209 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2668# 1210 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2669# 1226 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2671# 1179 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2672 if (mpi_dir == 3)
then
2673# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2674# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2676# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2678# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2679#if defined(MFC_OpenACC)
2680# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2682# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2683#elif defined(MFC_OpenMP)
2684# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2686# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2688# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2690# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2692# 1211 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2694# 1212 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2696 do l = -mapcells - 1, mapcells
2702 & kind=wp) - real(kahan_comp(
beta_vars(i))%sf(j, k, l + pack_offset), kind=wp)
2708# 1224 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2709#if defined(MFC_OpenACC)
2710# 1224 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2712# 1224 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2713#elif defined(MFC_OpenMP)
2714# 1224 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2716# 1224 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2718# 1224 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2720# 1225 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2721# 1226 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2723# 1228 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2727# 1232 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2729# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2730# 1244 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2731 call nvtxstartrange(
"BETA-COMM-DEV2HOST")
2733# 1245 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2734#if defined(MFC_OpenACC)
2735# 1245 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2737# 1245 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2738#elif defined(MFC_OpenMP)
2739# 1245 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2741# 1245 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2743# 1246 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2745 call nvtxstartrange(
"BETA-COMM-SENDRECV-NO-RMDA")
2747 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2748 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2752 call nvtxstartrange(
"BETA-COMM-HOST2DEV")
2754# 1255 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2755#if defined(MFC_OpenACC)
2756# 1255 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2758# 1255 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2759#elif defined(MFC_OpenMP)
2760# 1255 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2762# 1255 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2764# 1256 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2766# 1258 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2768# 1232 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2770# 1233 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2771# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2773# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2774#if defined(MFC_OpenACC)
2775# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2777# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2778 call nvtxstartrange(
"BETA-COMM-SENDRECV-RDMA")
2779# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2781# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2782 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2783# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2784 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2785# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2787# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2789# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2791# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2792#elif defined(MFC_OpenMP)
2793# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2795# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2796 call nvtxstartrange(
"BETA-COMM-SENDRECV-RDMA")
2797# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2799# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2800 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2801# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2802 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2803# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2805# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2807# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2809# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2811# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2812 call nvtxstartrange(
"BETA-COMM-SENDRECV-RDMA")
2813# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2815# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2816 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2817# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2818 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2819# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2821# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2823# 1234 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2825# 1242 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2827# 1242 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2828#if defined(MFC_OpenACC)
2829# 1242 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2831# 1242 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2832#elif defined(MFC_OpenMP)
2833# 1242 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2835# 1242 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2837# 1243 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2838# 1258 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2840# 1260 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2843 call nvtxstartrange(
"BETA-COMM-UNPACKBUF")
2844 if (src_proc /= mpi_proc_null)
then
2845# 1265 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2846 if (mpi_dir == 1)
then
2847# 1266 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2848# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2850# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2852# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2853#if defined(MFC_OpenACC)
2854# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2856# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2857#elif defined(MFC_OpenMP)
2858# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2860# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2862# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2864# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2866# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2868# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2870# 1268 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2873 do j = -mapcells - 1, mapcells
2877 if (replace_buff)
then
2879 kahan_comp(
beta_vars(i))%sf(j + unpack_offset, k, &
2880 & l) = real(q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l), &
2883 y_kahan =
buff_recv(r) - real(kahan_comp(
beta_vars(i))%sf(j + unpack_offset, k, l), &
2885 t_kahan = real(q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l), kind=wp) + y_kahan
2886 kahan_comp(
beta_vars(i))%sf(j + unpack_offset, k, &
2887 & l) = (t_kahan - q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l)) - y_kahan
2888 q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l) = t_kahan
2895# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2896#if defined(MFC_OpenACC)
2897# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2899# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2900#elif defined(MFC_OpenMP)
2901# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2903# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2905# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2907# 1292 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2908# 1346 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2910# 1265 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2911 if (mpi_dir == 2)
then
2912# 1266 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2913# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2915# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2917# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2918#if defined(MFC_OpenACC)
2919# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2921# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2922#elif defined(MFC_OpenMP)
2923# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2925# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2927# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2929# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2931# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2933# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2935# 1294 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2938 do k = -mapcells - 1, mapcells
2942 if (replace_buff)
then
2944 kahan_comp(
beta_vars(i))%sf(j, k + unpack_offset, &
2945 & l) = real(q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l), &
2948 y_kahan =
buff_recv(r) - real(kahan_comp(
beta_vars(i))%sf(j, k + unpack_offset, l), &
2950 t_kahan = real(q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l), kind=wp) + y_kahan
2951 kahan_comp(
beta_vars(i))%sf(j, k + unpack_offset, &
2952 & l) = (t_kahan - q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l)) - y_kahan
2953 q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l) = t_kahan
2960# 1317 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2961#if defined(MFC_OpenACC)
2962# 1317 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2964# 1317 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2965#elif defined(MFC_OpenMP)
2966# 1317 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2968# 1317 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2970# 1317 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2972# 1318 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2973# 1346 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2975# 1265 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2976 if (mpi_dir == 3)
then
2977# 1266 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2978# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2980# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2982# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2983#if defined(MFC_OpenACC)
2984# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2986# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2987#elif defined(MFC_OpenMP)
2988# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2990# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2992# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2994# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2996# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2998# 1319 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3000# 1320 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3002 do l = -mapcells - 1, mapcells
3007 if (replace_buff)
then
3010 & l + unpack_offset) = real(q_comm(
beta_vars(i))%sf(j, k, &
3011 & l + unpack_offset), kind=wp) -
buff_recv(r)
3013 y_kahan =
buff_recv(r) - real(kahan_comp(
beta_vars(i))%sf(j, k, l + unpack_offset), &
3015 t_kahan = real(q_comm(
beta_vars(i))%sf(j, k, l + unpack_offset), kind=wp) + y_kahan
3017 & l + unpack_offset) = (t_kahan - q_comm(
beta_vars(i))%sf(j, k, &
3018 & l + unpack_offset)) - y_kahan
3019 q_comm(
beta_vars(i))%sf(j, k, l + unpack_offset) = t_kahan
3026# 1344 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3027#if defined(MFC_OpenACC)
3028# 1344 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3030# 1344 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3031#elif defined(MFC_OpenMP)
3032# 1344 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3034# 1344 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3036# 1344 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3038# 1345 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3039# 1346 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3041# 1348 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3053 logical,
intent(in) :: write_silo_ghost_offsets
3054 logical,
intent(in) :: adjust_local_domains
3055 type(int_bounds_info),
dimension(3),
intent(inout),
optional :: output_offsets
3056 type(bounds_info),
dimension(3),
intent(inout),
optional :: local_domains
3060 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
3062 integer :: MPI_COMM_CART
3063 integer :: rem_cells
3064 integer :: rem_cells_by_dim(3)
3065 integer :: recon_order
3070 integer,
dimension(1:num_dims) :: neighbor_coords
3072 rem_cells_by_dim = 0
3075 nidx(1)%beg = 0; nidx(1)%end = 0
3076 nidx(2)%beg = 0; nidx(2)%end = 0
3077 nidx(3)%beg = 0; nidx(3)%end = 0
3079 if (recon_type == recon_type_weno)
then
3080 recon_order = weno_order
3082 recon_order = muscl_order
3085 if (num_procs == 1 .and. parallel_io)
then
3093 recon_order = igr_order
3103 num_procs_z = num_procs
3107 tmp_num_procs_y = num_procs_y
3108 tmp_num_procs_z = num_procs_z
3109 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
3113 if (mod(num_procs, i) == 0 .and. (n + 1)/i >= num_stcls_min*recon_order)
then
3115 tmp_num_procs_z = num_procs/i
3117 if (fct_min >= abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
3118 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
3120 num_procs_z = num_procs/i
3121 fct_min = abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
3127 if (cyl_coord .and. p > 0)
then
3132 num_procs_y = num_procs
3137 tmp_num_procs_x = num_procs_x
3138 tmp_num_procs_y = num_procs_y
3139 tmp_num_procs_z = num_procs_z
3140 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3144 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
3146 tmp_num_procs_y = num_procs/i
3148 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
3149 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
3151 num_procs_y = num_procs/i
3152 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3161 num_procs_z = num_procs
3165 tmp_num_procs_x = num_procs_x
3166 tmp_num_procs_y = num_procs_y
3167 tmp_num_procs_z = num_procs_z
3168 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + 10._wp*abs((n + 1) &
3169 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
3173 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
3174 do j = 1, num_procs/i
3175 if (mod(num_procs/i, j) == 0 .and. (n + 1)/j >= num_stcls_min*recon_order)
then
3178 tmp_num_procs_z = num_procs/(i*j)
3180 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
3181 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
3182 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
3185 num_procs_z = num_procs/(i*j)
3186 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
3187 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
3199 if (proc_rank == 0 .and. ierr == -1)
then
3200 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n, p and ' &
3201 & //
'weno/muscl/igr_order. Exiting.')
3205 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, num_procs_y, num_procs_z/), (/.true., .true., .true./), &
3206 & .false., mpi_comm_cart, ierr)
3209 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, proc_coords, ierr)
3214 rem_cells = mod(p + 1, num_procs_z)
3215 rem_cells_by_dim(3) = rem_cells
3218 p = (p + 1)/num_procs_z - 1
3222 if (proc_coords(3) == i - 1)
then
3228 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1))
then
3229 proc_coords(3) = proc_coords(3) - 1
3230 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%beg, ierr)
3231 proc_coords(3) = proc_coords(3) + 1
3236 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1))
then
3237 proc_coords(3) = proc_coords(3) + 1
3238 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%end, ierr)
3239 proc_coords(3) = proc_coords(3) - 1
3244 if (parallel_io)
then
3245 if (proc_coords(3) < rem_cells)
then
3246 start_idx(3) = (p + 1)*proc_coords(3)
3248 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
3256 num_procs_y = num_procs
3260 tmp_num_procs_x = num_procs_x
3261 tmp_num_procs_y = num_procs_y
3262 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3266 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
3268 tmp_num_procs_y = num_procs/i
3270 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
3271 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
3273 num_procs_y = num_procs/i
3274 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3282 if (proc_rank == 0 .and. ierr == -1)
then
3283 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n and ' &
3284 & //
'weno/muscl/igr_order. Exiting.')
3288 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, num_procs_y/), (/.true., .true./), .false., mpi_comm_cart, &
3292 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, proc_coords, ierr)
3298 rem_cells = mod(n + 1, num_procs_y)
3299 rem_cells_by_dim(2) = rem_cells
3302 n = (n + 1)/num_procs_y - 1
3306 if (proc_coords(2) == i - 1)
then
3312 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1))
then
3313 proc_coords(2) = proc_coords(2) - 1
3314 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%beg, ierr)
3315 proc_coords(2) = proc_coords(2) + 1
3320 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1))
then
3321 proc_coords(2) = proc_coords(2) + 1
3322 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%end, ierr)
3323 proc_coords(2) = proc_coords(2) - 1
3328 if (parallel_io)
then
3329 if (proc_coords(2) < rem_cells)
then
3330 start_idx(2) = (n + 1)*proc_coords(2)
3332 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
3339 num_procs_x = num_procs
3342 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), (/.true./), .false., mpi_comm_cart, ierr)
3345 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, proc_coords, ierr)
3351 rem_cells = mod(m + 1, num_procs_x)
3352 rem_cells_by_dim(1) = rem_cells
3355 m = (m + 1)/num_procs_x - 1
3359 if (proc_coords(1) == i - 1)
then
3364 call s_update_cell_bounds(cells_bounds, m, n, p)
3367 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1))
then
3368 proc_coords(1) = proc_coords(1) - 1
3369 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
3370 proc_coords(1) = proc_coords(1) + 1
3375 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1))
then
3376 proc_coords(1) = proc_coords(1) + 1
3377 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
3378 proc_coords(1) = proc_coords(1) - 1
3383 if (parallel_io)
then
3384 if (proc_coords(1) < rem_cells)
then
3385 start_idx(1) = (m + 1)*proc_coords(1)
3387 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
3392 & n_glb, p_glb/), write_silo_ghost_offsets, &
3393 & adjust_local_domains .and. (.not. parallel_io), output_offsets, local_domains)
3396# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3398# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3399 use iso_fortran_env,
only: output_unit
3400# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3402# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3403 print *,
'm_mpi_common.fpp:1701: ',
'@:ALLOCATE(neighbor_ranks(nidx(1)%beg:nidx(1)%end, nidx(2)%beg:nidx(2)%end, nidx(3)%beg:nidx(3)%end))'
3404# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3406# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3407 call flush (output_unit)
3408# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3410# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3412# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3413 allocate (neighbor_ranks(nidx(1)%beg:nidx(1)%end, nidx(2)%beg:nidx(2)%end, nidx(3)%beg:nidx(3)%end))
3414# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3416# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3418# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3419#if defined(MFC_OpenACC)
3420# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3422# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3423#elif defined(MFC_OpenMP)
3424# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3426# 1701 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3428# 1702 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3429 do k = nidx(3)%beg, nidx(3)%end
3430 do j = nidx(2)%beg, nidx(2)%end
3431 do i = nidx(1)%beg, nidx(1)%end
3432 if (abs(i) + abs(
j) + abs(
k) > 0)
then
3433 neighbor_coords(1) = proc_coords(1) + i
3434 if (num_dims > 1) neighbor_coords(2) = proc_coords(2) +
j
3435 if (num_dims > 2) neighbor_coords(3) = proc_coords(3) +
k
3436 call mpi_cart_rank(mpi_comm_cart, neighbor_coords, neighbor_ranks(i,
j,
k), ierr)