998 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
999 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
1000 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
1001 integer :: i, j, k, l, r, q
1002 integer :: buffer_counts(1:3), buffer_count
1003 type(int_bounds_info) :: boundary_conditions(1:3)
1004 integer :: beg_end(1:2), grid_dims(1:3)
1005 integer :: dst_proc, src_proc, recv_tag, send_tag
1006 logical :: beg_end_geq_0, qbmm_comm, chem_diff_comm
1007 integer :: pack_offset, unpack_offset
1008 type(scalar_field),
optional,
intent(inout) :: q_T_sf
1013 call nvtxstartrange(
"RHS-COMM-PACKBUF")
1016 chem_diff_comm = .false.
1018 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
1020 v_size = nvar + 2*nb*nnode
1021 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1022 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
1023#ifdef MFC_SIMULATION
1024 else if (
present(q_t_sf) .and. chemistry .and. chem_params%diffusion)
then
1026 else if (
present(q_t_sf) .and. chemistry)
then
1031 chem_diff_comm = .true.
1033 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1034 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
1037 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1038 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
1042# 592 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1043#if defined(MFC_OpenACC)
1044# 592 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1046# 592 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1047#elif defined(MFC_OpenMP)
1048# 592 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1050# 592 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1053 buffer_count = buffer_counts(mpi_dir)
1054 boundary_conditions = (/bc_x, bc_y, bc_z/)
1055 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
1056 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
1062 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
1063 recv_tag = f_logical_to_int(pbc_loc == 1)
1065 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
1066 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
1068 grid_dims = (/m, n, p/)
1071 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
1072 pack_offset = grid_dims(mpi_dir) - buff_size + 1
1076 if (pbc_loc == 1)
then
1077 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
1081# 623 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1082 if (mpi_dir == 1)
then
1083# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1085# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1087# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1088#if defined(MFC_OpenACC)
1089# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1091# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1092#elif defined(MFC_OpenMP)
1093# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1095# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1097# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1099# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1101# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1105 do j = 0, buff_size - 1
1107 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1108 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1114# 636 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1115#if defined(MFC_OpenACC)
1116# 636 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1118# 636 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1119#elif defined(MFC_OpenMP)
1120# 636 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1122# 636 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1124# 636 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1127 if (chem_diff_comm)
then
1129# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1131# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1132#if defined(MFC_OpenACC)
1133# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1135# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1136#elif defined(MFC_OpenMP)
1137# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1139# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1141# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1143# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1145# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1149 do j = 0, buff_size - 1
1150 r = nvar +
v_size*(j + buff_size*(k + (n + 1)*l))
1151 buff_send(r) = real(q_t_sf%sf(j + pack_offset, k, l), kind=wp)
1156# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1157#if defined(MFC_OpenACC)
1158# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1160# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1161#elif defined(MFC_OpenMP)
1162# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1164# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1166# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1172# 652 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1174# 652 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1175#if defined(MFC_OpenACC)
1176# 652 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1178# 652 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1179#elif defined(MFC_OpenMP)
1180# 652 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1182# 652 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1184# 652 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1186# 652 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1188# 652 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1192 do j = 0, buff_size - 1
1193 do i = nvar + 1, nvar + nnode
1195 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1196 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1203# 665 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1204#if defined(MFC_OpenACC)
1205# 665 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1207# 665 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1208#elif defined(MFC_OpenMP)
1209# 665 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1211# 665 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1213# 665 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1217# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1219# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1220#if defined(MFC_OpenACC)
1221# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1223# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1224#elif defined(MFC_OpenMP)
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"
1229# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1231# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1233# 667 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1237 do j = 0, buff_size - 1
1238 do i = nvar + 1, nvar + nnode
1240 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1241 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1248# 680 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1249#if defined(MFC_OpenACC)
1250# 680 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1252# 680 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1253#elif defined(MFC_OpenMP)
1254# 680 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1256# 680 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1258# 680 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1261# 805 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1263# 623 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1264 if (mpi_dir == 2)
then
1265# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1267# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1269# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1270#if defined(MFC_OpenACC)
1271# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1273# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1274#elif defined(MFC_OpenMP)
1275# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1277# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1279# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1281# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1283# 683 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1287 do k = 0, buff_size - 1
1288 do j = -buff_size, m + buff_size
1289 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1290 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1296# 694 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1297#if defined(MFC_OpenACC)
1298# 694 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1300# 694 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1301#elif defined(MFC_OpenMP)
1302# 694 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1304# 694 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1306# 694 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1309 if (chem_diff_comm)
then
1311# 697 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1313# 697 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1314#if defined(MFC_OpenACC)
1315# 697 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1317# 697 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1318#elif defined(MFC_OpenMP)
1319# 697 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1321# 697 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1323# 697 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1325# 697 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1327# 697 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1330 do k = 0, buff_size - 1
1331 do j = -buff_size, m + buff_size
1332 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1333 buff_send(r) = real(q_t_sf%sf(j, k + pack_offset, l), kind=wp)
1338# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1339#if defined(MFC_OpenACC)
1340# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1342# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1343#elif defined(MFC_OpenMP)
1344# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1346# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1348# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1354# 710 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1356# 710 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1357#if defined(MFC_OpenACC)
1358# 710 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1360# 710 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1361#elif defined(MFC_OpenMP)
1362# 710 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1364# 710 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1366# 710 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1368# 710 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1370# 710 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1372 do i = nvar + 1, nvar + nnode
1374 do k = 0, buff_size - 1
1375 do j = -buff_size, m + buff_size
1377 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k &
1379 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1386# 724 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1387#if defined(MFC_OpenACC)
1388# 724 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1390# 724 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1391#elif defined(MFC_OpenMP)
1392# 724 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1394# 724 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1396# 724 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1400# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1402# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1403#if defined(MFC_OpenACC)
1404# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1406# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1407#elif defined(MFC_OpenMP)
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"
1412# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1414# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1416# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1418 do i = nvar + 1, nvar + nnode
1420 do k = 0, buff_size - 1
1421 do j = -buff_size, m + buff_size
1423 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1424 & + 1)*(k + buff_size*l))
1425 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1432# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1433#if defined(MFC_OpenACC)
1434# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1436# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1437#elif defined(MFC_OpenMP)
1438# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1440# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1442# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1445# 805 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1447# 623 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1448 if (mpi_dir == 3)
then
1449# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1451# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1453# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1454#if defined(MFC_OpenACC)
1455# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1457# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1458#elif defined(MFC_OpenMP)
1459# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1461# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1463# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1465# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1467# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1470 do l = 0, buff_size - 1
1471 do k = -buff_size, n + buff_size
1472 do j = -buff_size, m + buff_size
1473 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1474 & + 2*buff_size + 1)*l))
1475 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1481# 755 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1482#if defined(MFC_OpenACC)
1483# 755 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1485# 755 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1486#elif defined(MFC_OpenMP)
1487# 755 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1489# 755 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1491# 755 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1494 if (chem_diff_comm)
then
1496# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1498# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1499#if defined(MFC_OpenACC)
1500# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1502# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1503#elif defined(MFC_OpenMP)
1504# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1506# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1508# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1510# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1512# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1514 do l = 0, buff_size - 1
1515 do k = -buff_size, n + buff_size
1516 do j = -buff_size, m + buff_size
1517 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1518 & + 2*buff_size + 1)*l))
1519 buff_send(r) = real(q_t_sf%sf(j, k, l + pack_offset), kind=wp)
1524# 768 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1525#if defined(MFC_OpenACC)
1526# 768 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1528# 768 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1529#elif defined(MFC_OpenMP)
1530# 768 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1532# 768 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1534# 768 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1540# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1542# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1543#if defined(MFC_OpenACC)
1544# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1546# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1547#elif defined(MFC_OpenMP)
1548# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1550# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1552# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1554# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1556# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1558 do i = nvar + 1, nvar + nnode
1559 do l = 0, buff_size - 1
1560 do k = -buff_size, n + buff_size
1561 do j = -buff_size, m + buff_size
1563 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1564 & + buff_size) + (n + 2*buff_size + 1)*l))
1565 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1572# 786 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1573#if defined(MFC_OpenACC)
1574# 786 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1576# 786 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1577#elif defined(MFC_OpenMP)
1578# 786 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1580# 786 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1582# 786 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1586# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1588# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1589#if defined(MFC_OpenACC)
1590# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1592# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1593#elif defined(MFC_OpenMP)
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"
1598# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1600# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1602# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1604 do i = nvar + 1, nvar + nnode
1605 do l = 0, buff_size - 1
1606 do k = -buff_size, n + buff_size
1607 do j = -buff_size, m + buff_size
1609 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1610 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*l))
1611 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1618# 802 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1619#if defined(MFC_OpenACC)
1620# 802 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1622# 802 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1623#elif defined(MFC_OpenMP)
1624# 802 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1626# 802 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1628# 802 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1631# 805 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1633# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1637#ifdef MFC_SIMULATION
1638# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1639 if (rdma_mpi .eqv. .false.)
then
1640# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1641 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1643# 825 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1644#if defined(MFC_OpenACC)
1645# 825 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1647# 825 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1648#elif defined(MFC_OpenMP)
1649# 825 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1651# 825 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1654 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1656 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1657 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1661 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1663# 835 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1664#if defined(MFC_OpenACC)
1665# 835 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1667# 835 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1668#elif defined(MFC_OpenMP)
1669# 835 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1671# 835 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1674# 838 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1676# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1677 if (rdma_mpi .eqv. .true.)
then
1678# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1680# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1681#if defined(MFC_OpenACC)
1682# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1684# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1685 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1686# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1688# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1689 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1690# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1691 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1692# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1694# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1696# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1698# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1699#elif defined(MFC_OpenMP)
1700# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1702# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1703 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1704# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1706# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1707 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1708# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1709 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1710# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1712# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1714# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1716# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1718# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1719 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1720# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1722# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1723 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1724# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1725 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1726# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1728# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1730# 814 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1732# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1734# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1735#if defined(MFC_OpenACC)
1736# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1738# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1739#elif defined(MFC_OpenMP)
1740# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1742# 822 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1744# 838 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1746# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1748 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1749 & mpi_comm_world, mpi_status_ignore, ierr)
1753 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1754# 848 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1755 if (mpi_dir == 1)
then
1756# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1758# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1760# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1761#if defined(MFC_OpenACC)
1762# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1764# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1765#elif defined(MFC_OpenMP)
1766# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1768# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1770# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1772# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1774# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1778 do j = -buff_size, -1
1780 r = (i - 1) +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1781 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1782#if defined(__INTEL_COMPILER)
1783 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l)))
then
1784 print *,
"Error", j, k, l, i
1793# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1794#if defined(MFC_OpenACC)
1795# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1797# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1798#elif defined(MFC_OpenMP)
1799# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1801# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1803# 867 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1806 if (chem_diff_comm)
then
1808# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1810# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1811#if defined(MFC_OpenACC)
1812# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1814# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1815#elif defined(MFC_OpenMP)
1816# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1818# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1820# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1822# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1824# 870 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1828 do j = -buff_size, -1
1829 r = nvar +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1830 q_t_sf%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1831#if defined(__INTEL_COMPILER)
1832 if (ieee_is_nan(q_t_sf%sf(j + unpack_offset, k, l)))
then
1833 print *,
"Error", j, k, l
1841# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1842#if defined(MFC_OpenACC)
1843# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1845# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1846#elif defined(MFC_OpenMP)
1847# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1849# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1851# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1857# 889 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1859# 889 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1860#if defined(MFC_OpenACC)
1861# 889 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1863# 889 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1864#elif defined(MFC_OpenMP)
1865# 889 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1867# 889 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1869# 889 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1871# 889 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1873# 889 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1877 do j = -buff_size, -1
1878 do i = nvar + 1, nvar + nnode
1880 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1881 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1888# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1889#if defined(MFC_OpenACC)
1890# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1892# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1893#elif defined(MFC_OpenMP)
1894# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1896# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1898# 902 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1902# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1904# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1905#if defined(MFC_OpenACC)
1906# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1908# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1909#elif defined(MFC_OpenMP)
1910# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1912# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1914# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1916# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1918# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1922 do j = -buff_size, -1
1923 do i = nvar + 1, nvar + nnode
1925 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1926 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1933# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1934#if defined(MFC_OpenACC)
1935# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1937# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1938#elif defined(MFC_OpenMP)
1939# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1941# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1943# 917 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1946# 1066 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1948# 848 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1949 if (mpi_dir == 2)
then
1950# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1952# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1954# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1955#if defined(MFC_OpenACC)
1956# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1958# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1959#elif defined(MFC_OpenMP)
1960# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1962# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1964# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1966# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1968# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1972 do k = -buff_size, -1
1973 do j = -buff_size, m + buff_size
1974 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1975 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1976#if defined(__INTEL_COMPILER)
1977 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l)))
then
1978 print *,
"Error", j, k, l, i
1987# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1988#if defined(MFC_OpenACC)
1989# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1991# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1992#elif defined(MFC_OpenMP)
1993# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1995# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1997# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2000 if (chem_diff_comm)
then
2002# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2004# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2005#if defined(MFC_OpenACC)
2006# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2008# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2009#elif defined(MFC_OpenMP)
2010# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2012# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2014# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2016# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2018# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2021 do k = -buff_size, -1
2022 do j = -buff_size, m + buff_size
2023 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
2024 q_t_sf%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
2025#if defined(__INTEL_COMPILER)
2026 if (ieee_is_nan(q_t_sf%sf(j, k + unpack_offset, l)))
then
2027 print *,
"Error", j, k, l
2035# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2036#if defined(MFC_OpenACC)
2037# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2039# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2040#elif defined(MFC_OpenMP)
2041# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2043# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2045# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2051# 959 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2053# 959 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2054#if defined(MFC_OpenACC)
2055# 959 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2057# 959 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2058#elif defined(MFC_OpenMP)
2059# 959 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2061# 959 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2063# 959 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2065# 959 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2067# 959 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2069 do i = nvar + 1, nvar + nnode
2071 do k = -buff_size, -1
2072 do j = -buff_size, m + buff_size
2074 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2075 & + buff_size) + buff_size*l))
2076 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2083# 973 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2084#if defined(MFC_OpenACC)
2085# 973 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2087# 973 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2088#elif defined(MFC_OpenMP)
2089# 973 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2091# 973 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2093# 973 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2097# 975 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2099# 975 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2100#if defined(MFC_OpenACC)
2101# 975 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2103# 975 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2104#elif defined(MFC_OpenMP)
2105# 975 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2107# 975 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2109# 975 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2111# 975 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2113# 975 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2115 do i = nvar + 1, nvar + nnode
2117 do k = -buff_size, -1
2118 do j = -buff_size, m + buff_size
2120 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2121 & + 1)*((k + buff_size) + buff_size*l))
2122 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2129# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2130#if defined(MFC_OpenACC)
2131# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2133# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2134#elif defined(MFC_OpenMP)
2135# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2137# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2139# 989 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2142# 1066 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2144# 848 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2145 if (mpi_dir == 3)
then
2146# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2148# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2150# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2151#if defined(MFC_OpenACC)
2152# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2154# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2155#elif defined(MFC_OpenMP)
2156# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2158# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2160# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2162# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2164# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2167 do l = -buff_size, -1
2168 do k = -buff_size, n + buff_size
2169 do j = -buff_size, m + buff_size
2170 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2171 & + 2*buff_size + 1)*(l + buff_size)))
2172 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2173#if defined(__INTEL_COMPILER)
2174 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset)))
then
2175 print *,
"Error", j, k, l, i
2184# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2185#if defined(MFC_OpenACC)
2186# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2188# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2189#elif defined(MFC_OpenMP)
2190# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2192# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2194# 1010 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2197 if (chem_diff_comm)
then
2199# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2201# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2202#if defined(MFC_OpenACC)
2203# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2205# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2206#elif defined(MFC_OpenMP)
2207# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2209# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2211# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2213# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2215# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2217 do l = -buff_size, -1
2218 do k = -buff_size, n + buff_size
2219 do j = -buff_size, m + buff_size
2220 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2221 & + 2*buff_size + 1)*(l + buff_size)))
2222 q_t_sf%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2223#if defined(__INTEL_COMPILER)
2224 if (ieee_is_nan(q_t_sf%sf(j, k, l + unpack_offset)))
then
2225 print *,
"Error", j, k, l
2233# 1029 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2234#if defined(MFC_OpenACC)
2235# 1029 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2237# 1029 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2238#elif defined(MFC_OpenMP)
2239# 1029 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2241# 1029 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2243# 1029 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2249# 1033 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2251# 1033 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2252#if defined(MFC_OpenACC)
2253# 1033 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2255# 1033 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2256#elif defined(MFC_OpenMP)
2257# 1033 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2259# 1033 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2261# 1033 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2263# 1033 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2265# 1033 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2267 do i = nvar + 1, nvar + nnode
2268 do l = -buff_size, -1
2269 do k = -buff_size, n + buff_size
2270 do j = -buff_size, m + buff_size
2272 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2273 & + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2274 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2281# 1047 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2282#if defined(MFC_OpenACC)
2283# 1047 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2285# 1047 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2286#elif defined(MFC_OpenMP)
2287# 1047 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2289# 1047 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2291# 1047 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2295# 1049 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2297# 1049 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2298#if defined(MFC_OpenACC)
2299# 1049 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2301# 1049 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2302#elif defined(MFC_OpenMP)
2303# 1049 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2305# 1049 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2307# 1049 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2309# 1049 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2311# 1049 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2313 do i = nvar + 1, nvar + nnode
2314 do l = -buff_size, -1
2315 do k = -buff_size, n + buff_size
2316 do j = -buff_size, m + buff_size
2318 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2319 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2320 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2327# 1063 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2328#if defined(MFC_OpenACC)
2329# 1063 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2331# 1063 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2332#elif defined(MFC_OpenMP)
2333# 1063 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2335# 1063 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2337# 1063 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2340# 1066 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2342# 1068 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2355 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
2356 type(scalar_field),
dimension(1:),
intent(inout) :: kahan_comp
2357 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
2358 integer :: i, j, k, l, r, q
2360 integer :: buffer_counts(1:3), buffer_count
2361 type(int_bounds_info) :: boundary_conditions(1:3)
2362 integer :: beg_end(1:2), grid_dims(1:3)
2363 integer :: dst_proc, src_proc, recv_tag, send_tag
2364 logical :: replace_buff
2365 integer :: pack_offset, unpack_offset
2366 real(wp) :: y_kahan, t_kahan
2371 call nvtxstartrange(
"BETA-COMM-PACKBUF")
2378 comm_coords(2)%beg = merge(-mapcells - 1, 0, n > 0)
2379 comm_coords(2)%end = merge(n + mapcells + 1, n, n > 0)
2380 comm_coords(3)%beg = merge(-mapcells - 1, 0, p > 0)
2381 comm_coords(3)%end = merge(p + mapcells + 1, p, p > 0)
2390 lb_size = 2*(mapcells + 1)
2395# 1119 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2396#if defined(MFC_OpenACC)
2397# 1119 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2399# 1119 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2400#elif defined(MFC_OpenMP)
2401# 1119 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2403# 1119 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2406 buffer_count = buffer_counts(mpi_dir)
2407 boundary_conditions = (/bc_x, bc_y, bc_z/)
2408 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
2409 grid_dims = (/m, n, p/)
2411 if (pbc_loc == -1)
then
2413 pack_offset = grid_dims(mpi_dir) + 1
2415 dst_proc = merge(beg_end(2), mpi_proc_null, beg_end(2) >= 0)
2416 src_proc = merge(beg_end(1), mpi_proc_null, beg_end(1) >= 0)
2419 replace_buff = .false.
2423 unpack_offset = grid_dims(mpi_dir) + 1
2424 dst_proc = merge(beg_end(1), mpi_proc_null, beg_end(1) >= 0)
2425 src_proc = merge(beg_end(2), mpi_proc_null, beg_end(2) >= 0)
2428 replace_buff = .true.
2432# 1148 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2433 if (mpi_dir == 1)
then
2434# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2436# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2438# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2439#if defined(MFC_OpenACC)
2440# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2442# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2443#elif defined(MFC_OpenMP)
2444# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2446# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2448# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2450# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2452# 1150 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2456 do j = -mapcells - 1, mapcells
2461 & kind=wp) - real(kahan_comp(
beta_vars(i))%sf(j + pack_offset, k, l), kind=wp)
2467# 1163 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2468#if defined(MFC_OpenACC)
2469# 1163 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2471# 1163 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2472#elif defined(MFC_OpenMP)
2473# 1163 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2475# 1163 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2477# 1163 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2479# 1195 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2481# 1148 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2482 if (mpi_dir == 2)
then
2483# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2485# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2487# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2488#if defined(MFC_OpenACC)
2489# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2491# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2492#elif defined(MFC_OpenMP)
2493# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2495# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2497# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2499# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2501# 1165 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2505 do k = -mapcells - 1, mapcells
2510 & kind=wp) - real(kahan_comp(
beta_vars(i))%sf(j, k + pack_offset, l), kind=wp)
2516# 1178 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2517#if defined(MFC_OpenACC)
2518# 1178 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2520# 1178 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2521#elif defined(MFC_OpenMP)
2522# 1178 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2524# 1178 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2526# 1178 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2528# 1195 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2530# 1148 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2531 if (mpi_dir == 3)
then
2532# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2534# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2536# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2537#if defined(MFC_OpenACC)
2538# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2540# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2541#elif defined(MFC_OpenMP)
2542# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2544# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2546# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2548# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2550# 1180 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2553 do l = -mapcells - 1, mapcells
2559 & kind=wp) - real(kahan_comp(
beta_vars(i))%sf(j, k, l + pack_offset), kind=wp)
2565# 1193 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2566#if defined(MFC_OpenACC)
2567# 1193 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2569# 1193 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2570#elif defined(MFC_OpenMP)
2571# 1193 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2573# 1193 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2575# 1193 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2577# 1195 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2579# 1197 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2583#ifdef MFC_SIMULATION
2584# 1202 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2585 if (rdma_mpi .eqv. .false.)
then
2586# 1214 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2587 call nvtxstartrange(
"BETA-COMM-DEV2HOST")
2589# 1215 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2590#if defined(MFC_OpenACC)
2591# 1215 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2593# 1215 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2594#elif defined(MFC_OpenMP)
2595# 1215 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2597# 1215 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2600 call nvtxstartrange(
"BETA-COMM-SENDRECV-NO-RMDA")
2602 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2603 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2607 call nvtxstartrange(
"BETA-COMM-HOST2DEV")
2609# 1225 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2610#if defined(MFC_OpenACC)
2611# 1225 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2613# 1225 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2614#elif defined(MFC_OpenMP)
2615# 1225 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2617# 1225 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2620# 1228 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2622# 1202 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2623 if (rdma_mpi .eqv. .true.)
then
2624# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2626# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2627#if defined(MFC_OpenACC)
2628# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2630# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2631 call nvtxstartrange(
"BETA-COMM-SENDRECV-RDMA")
2632# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2634# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2635 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2636# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2637 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2638# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2640# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2642# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2644# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2645#elif defined(MFC_OpenMP)
2646# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2648# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2649 call nvtxstartrange(
"BETA-COMM-SENDRECV-RDMA")
2650# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2652# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2653 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2654# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2655 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2656# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2658# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2660# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2662# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2664# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2665 call nvtxstartrange(
"BETA-COMM-SENDRECV-RDMA")
2666# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2668# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2669 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
2670# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2671 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
2672# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2674# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2676# 1204 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2678# 1212 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2680# 1212 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2681#if defined(MFC_OpenACC)
2682# 1212 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2684# 1212 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2685#elif defined(MFC_OpenMP)
2686# 1212 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2688# 1212 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2690# 1228 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2692# 1230 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2694 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
2695 & mpi_comm_world, mpi_status_ignore, ierr)
2699 call nvtxstartrange(
"BETA-COMM-UNPACKBUF")
2700 if (src_proc /= mpi_proc_null)
then
2701# 1239 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2702 if (mpi_dir == 1)
then
2703# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2705# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2707# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2708#if defined(MFC_OpenACC)
2709# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2711# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2712#elif defined(MFC_OpenMP)
2713# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2715# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2717# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2719# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2721# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2723# 1241 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2727 do j = -mapcells - 1, mapcells
2731 if (replace_buff)
then
2733 kahan_comp(
beta_vars(i))%sf(j + unpack_offset, k, &
2734 & l) = real(q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l), &
2737 y_kahan =
buff_recv(r) - real(kahan_comp(
beta_vars(i))%sf(j + unpack_offset, k, l), &
2739 t_kahan = real(q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l), kind=wp) + y_kahan
2740 kahan_comp(
beta_vars(i))%sf(j + unpack_offset, k, &
2741 & l) = (t_kahan - q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l)) - y_kahan
2742 q_comm(
beta_vars(i))%sf(j + unpack_offset, k, l) = t_kahan
2749# 1265 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2750#if defined(MFC_OpenACC)
2751# 1265 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2753# 1265 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2754#elif defined(MFC_OpenMP)
2755# 1265 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2757# 1265 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2759# 1265 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2761# 1320 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2763# 1239 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2764 if (mpi_dir == 2)
then
2765# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2767# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2769# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2770#if defined(MFC_OpenACC)
2771# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2773# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2774#elif defined(MFC_OpenMP)
2775# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2777# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2779# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2781# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2783# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2785# 1267 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2789 do k = -mapcells - 1, mapcells
2793 if (replace_buff)
then
2795 kahan_comp(
beta_vars(i))%sf(j, k + unpack_offset, &
2796 & l) = real(q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l), &
2799 y_kahan =
buff_recv(r) - real(kahan_comp(
beta_vars(i))%sf(j, k + unpack_offset, l), &
2801 t_kahan = real(q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l), kind=wp) + y_kahan
2802 kahan_comp(
beta_vars(i))%sf(j, k + unpack_offset, &
2803 & l) = (t_kahan - q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l)) - y_kahan
2804 q_comm(
beta_vars(i))%sf(j, k + unpack_offset, l) = t_kahan
2811# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2812#if defined(MFC_OpenACC)
2813# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2815# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2816#elif defined(MFC_OpenMP)
2817# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2819# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2821# 1291 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2823# 1320 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2825# 1239 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2826 if (mpi_dir == 3)
then
2827# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2829# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2831# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2832#if defined(MFC_OpenACC)
2833# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2835# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2836#elif defined(MFC_OpenMP)
2837# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2839# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2841# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2843# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2845# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2847# 1293 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2850 do l = -mapcells - 1, mapcells
2855 if (replace_buff)
then
2858 & l + unpack_offset) = real(q_comm(
beta_vars(i))%sf(j, k, &
2859 & l + unpack_offset), kind=wp) -
buff_recv(r)
2861 y_kahan =
buff_recv(r) - real(kahan_comp(
beta_vars(i))%sf(j, k, l + unpack_offset), &
2863 t_kahan = real(q_comm(
beta_vars(i))%sf(j, k, l + unpack_offset), kind=wp) + y_kahan
2865 & l + unpack_offset) = (t_kahan - q_comm(
beta_vars(i))%sf(j, k, &
2866 & l + unpack_offset)) - y_kahan
2867 q_comm(
beta_vars(i))%sf(j, k, l + unpack_offset) = t_kahan
2874# 1318 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2875#if defined(MFC_OpenACC)
2876# 1318 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2878# 1318 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2879#elif defined(MFC_OpenMP)
2880# 1318 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2882# 1318 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2884# 1318 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2886# 1320 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2888# 1322 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2902 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
2904 integer :: MPI_COMM_CART
2905 integer :: rem_cells
2906 integer :: recon_order
2911 integer,
dimension(1:num_dims) :: neighbor_coords
2914 nidx(1)%beg = 0; nidx(1)%end = 0
2915 nidx(2)%beg = 0; nidx(2)%end = 0
2916 nidx(3)%beg = 0; nidx(3)%end = 0
2918 if (recon_type == recon_type_weno)
then
2919 recon_order = weno_order
2921 recon_order = muscl_order
2924 if (num_procs == 1 .and. parallel_io)
then
2932 recon_order = igr_order
2942 num_procs_z = num_procs
2946 tmp_num_procs_y = num_procs_y
2947 tmp_num_procs_z = num_procs_z
2948 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2952 if (mod(num_procs, i) == 0 .and. (n + 1)/i >= num_stcls_min*recon_order)
then
2954 tmp_num_procs_z = num_procs/i
2956 if (fct_min >= abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2957 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2959 num_procs_z = num_procs/i
2960 fct_min = abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2966 if (cyl_coord .and. p > 0)
then
2971 num_procs_y = num_procs
2976 tmp_num_procs_x = num_procs_x
2977 tmp_num_procs_y = num_procs_y
2978 tmp_num_procs_z = num_procs_z
2979 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2983 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2985 tmp_num_procs_y = num_procs/i
2987 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2988 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2990 num_procs_y = num_procs/i
2991 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3000 num_procs_z = num_procs
3004 tmp_num_procs_x = num_procs_x
3005 tmp_num_procs_y = num_procs_y
3006 tmp_num_procs_z = num_procs_z
3007 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + 10._wp*abs((n + 1) &
3008 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
3012 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
3013 do j = 1, num_procs/i
3014 if (mod(num_procs/i, j) == 0 .and. (n + 1)/j >= num_stcls_min*recon_order)
then
3017 tmp_num_procs_z = num_procs/(i*j)
3019 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
3020 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
3021 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
3024 num_procs_z = num_procs/(i*j)
3025 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
3026 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
3038 if (proc_rank == 0 .and. ierr == -1)
then
3039 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n, p and ' &
3040 & //
'weno/muscl/igr_order. Exiting.')
3044 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, num_procs_y, num_procs_z/), (/.true., .true., .true./), &
3045 & .false., mpi_comm_cart, ierr)
3048 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, proc_coords, ierr)
3053 rem_cells = mod(p + 1, num_procs_z)
3056 p = (p + 1)/num_procs_z - 1
3060 if (proc_coords(3) == i - 1)
then
3066 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1))
then
3067 proc_coords(3) = proc_coords(3) - 1
3068 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%beg, ierr)
3069 proc_coords(3) = proc_coords(3) + 1
3074 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1))
then
3075 proc_coords(3) = proc_coords(3) + 1
3076 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%end, ierr)
3077 proc_coords(3) = proc_coords(3) - 1
3081#ifdef MFC_POST_PROCESS
3083 if (proc_coords(3) > 0 .and.
format == format_silo)
then
3090 if (proc_coords(3) < num_procs_z - 1 .and.
format == format_silo)
then
3098 if (parallel_io)
then
3099 if (proc_coords(3) < rem_cells)
then
3100 start_idx(3) = (p + 1)*proc_coords(3)
3102 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
3105#ifdef MFC_PRE_PROCESS
3106 if (old_grid .neqv. .true.)
then
3107 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
3109 if (proc_coords(3) < rem_cells)
then
3110 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3))
3111 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1) - (num_procs_z &
3114 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3) + rem_cells)
3115 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1))
3125 num_procs_y = num_procs
3129 tmp_num_procs_x = num_procs_x
3130 tmp_num_procs_y = num_procs_y
3131 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3135 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
3137 tmp_num_procs_y = num_procs/i
3139 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
3140 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
3142 num_procs_y = num_procs/i
3143 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
3151 if (proc_rank == 0 .and. ierr == -1)
then
3152 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n and ' &
3153 & //
'weno/muscl/igr_order. Exiting.')
3157 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, num_procs_y/), (/.true., .true./), .false., mpi_comm_cart, &
3161 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, proc_coords, ierr)
3167 rem_cells = mod(n + 1, num_procs_y)
3170 n = (n + 1)/num_procs_y - 1
3174 if (proc_coords(2) == i - 1)
then
3180 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1))
then
3181 proc_coords(2) = proc_coords(2) - 1
3182 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%beg, ierr)
3183 proc_coords(2) = proc_coords(2) + 1
3188 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1))
then
3189 proc_coords(2) = proc_coords(2) + 1
3190 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%end, ierr)
3191 proc_coords(2) = proc_coords(2) - 1
3195#ifdef MFC_POST_PROCESS
3197 if (proc_coords(2) > 0 .and.
format == format_silo)
then
3204 if (proc_coords(2) < num_procs_y - 1 .and.
format == format_silo)
then
3212 if (parallel_io)
then
3213 if (proc_coords(2) < rem_cells)
then
3214 start_idx(2) = (n + 1)*proc_coords(2)
3216 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
3219#ifdef MFC_PRE_PROCESS
3220 if (old_grid .neqv. .true.)
then
3221 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
3223 if (proc_coords(2) < rem_cells)
then
3224 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2))
3225 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1) - (num_procs_y &
3228 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2) + rem_cells)
3229 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1))
3238 num_procs_x = num_procs
3241 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), (/.true./), .false., mpi_comm_cart, ierr)
3244 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, proc_coords, ierr)
3250 rem_cells = mod(m + 1, num_procs_x)
3253 m = (m + 1)/num_procs_x - 1
3257 if (proc_coords(1) == i - 1)
then
3262 call s_update_cell_bounds(cells_bounds, m, n, p)
3265 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1))
then
3266 proc_coords(1) = proc_coords(1) - 1
3267 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
3268 proc_coords(1) = proc_coords(1) + 1
3273 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1))
then
3274 proc_coords(1) = proc_coords(1) + 1
3275 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
3276 proc_coords(1) = proc_coords(1) - 1
3280#ifdef MFC_POST_PROCESS
3282 if (proc_coords(1) > 0 .and.
format == format_silo)
then
3289 if (proc_coords(1) < num_procs_x - 1 .and.
format == format_silo)
then
3297 if (parallel_io)
then
3298 if (proc_coords(1) < rem_cells)
then
3299 start_idx(1) = (m + 1)*proc_coords(1)
3301 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
3304#ifdef MFC_PRE_PROCESS
3305 if (old_grid .neqv. .true.)
then
3306 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
3308 if (proc_coords(1) < rem_cells)
then
3309 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1))
3310 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1) - (num_procs_x - rem_cells))
3312 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1) + rem_cells)
3313 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1))
3320# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3322# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3323 use iso_fortran_env,
only: output_unit
3324# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3326# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3327 print *,
'm_mpi_common.fpp:1752: ',
'@:ALLOCATE(neighbor_ranks(nidx(1)%beg:nidx(1)%end, nidx(2)%beg:nidx(2)%end, nidx(3)%beg:nidx(3)%end))'
3328# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3330# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3331 call flush (output_unit)
3332# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3334# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3336# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3337 allocate (neighbor_ranks(nidx(1)%beg:nidx(1)%end, nidx(2)%beg:nidx(2)%end, nidx(3)%beg:nidx(3)%end))
3338# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3340# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3342# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3343#if defined(MFC_OpenACC)
3344# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3346# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3347#elif defined(MFC_OpenMP)
3348# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3350# 1752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
3352 do k = nidx(3)%beg, nidx(3)%end
3353 do j = nidx(2)%beg, nidx(2)%end
3354 do i = nidx(1)%beg, nidx(1)%end
3355 if (abs(i) + abs(
j) + abs(
k) > 0)
then
3356 neighbor_coords(1) = proc_coords(1) + i
3357 if (num_dims > 1) neighbor_coords(2) = proc_coords(2) +
j
3358 if (num_dims > 2) neighbor_coords(3) = proc_coords(3) +
k
3359 call mpi_cart_rank(mpi_comm_cart, neighbor_coords, neighbor_ranks(i,
j,
k), ierr)
3374 integer,
intent(in) :: mpi_dir
3375 integer,
intent(in) :: pbc_loc
3377 type(int_bounds_info),
intent(in) :: offset
3383 if (mpi_dir == 1)
then
3384 if (pbc_loc == -1)
then
3385 if (bc_x%end >= 0)
then
3386 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(-buff_size), buff_size, mpi_p, &
3387 & bc_x%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
3389 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(-buff_size), buff_size, mpi_p, bc_x%beg, 0, &
3390 & mpi_comm_world, mpi_status_ignore, ierr)
3392 do i = 1, offset%beg
3393 x_cb(-1 - i) = x_cb(-i) - dx(-i)
3396 x_cc(-i) = x_cc(1 - i) - (dx(1 - i) + dx(-i))/2._wp
3399 if (bc_x%beg >= 0)
then
3400 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(m + 1), buff_size, mpi_p, bc_x%end, 1, &
3401 & mpi_comm_world, mpi_status_ignore, ierr)
3403 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(m + 1), buff_size, mpi_p, &
3404 & bc_x%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
3406 do i = 1, offset%end
3407 x_cb(m + i) = x_cb(m + (i - 1)) + dx(m + i)
3410 x_cc(m + i) = x_cc(m + (i - 1)) + (dx(m + (i - 1)) + dx(m + i))/2._wp
3413 else if (mpi_dir == 2)
then
3414 if (pbc_loc == -1)
then
3415 if (bc_y%end >= 0)
then
3416 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(-buff_size), buff_size, mpi_p, &
3417 & bc_y%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
3419 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(-buff_size), buff_size, mpi_p, bc_y%beg, 0, &
3420 & mpi_comm_world, mpi_status_ignore, ierr)
3422 do i = 1, offset%beg
3423 y_cb(-1 - i) = y_cb(-i) - dy(-i)
3426 y_cc(-i) = y_cc(1 - i) - (dy(1 - i) + dy(-i))/2._wp
3429 if (bc_y%beg >= 0)
then
3430 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(n + 1), buff_size, mpi_p, bc_y%end, 1, &
3431 & mpi_comm_world, mpi_status_ignore, ierr)
3433 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(n + 1), buff_size, mpi_p, &
3434 & bc_y%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
3436 do i = 1, offset%end
3437 y_cb(n + i) = y_cb(n + (i - 1)) + dy(n + i)
3440 y_cc(n + i) = y_cc(n + (i - 1)) + (dy(n + (i - 1)) + dy(n + i))/2._wp
3444 if (pbc_loc == -1)
then
3445 if (bc_z%end >= 0)
then
3446 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(-buff_size), buff_size, mpi_p, &
3447 & bc_z%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
3449 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(-buff_size), buff_size, mpi_p, bc_z%beg, 0, &
3450 & mpi_comm_world, mpi_status_ignore, ierr)
3452 do i = 1, offset%beg
3453 z_cb(-1 - i) = z_cb(-i) - dz(-i)
3456 z_cc(-i) = z_cc(1 - i) - (dz(1 - i) + dz(-i))/2._wp
3459 if (bc_z%beg >= 0)
then
3460 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(p + 1), buff_size, mpi_p, bc_z%end, 1, &
3461 & mpi_comm_world, mpi_status_ignore, ierr)
3463 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(p + 1), buff_size, mpi_p, &
3464 & bc_z%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
3466 do i = 1, offset%end
3467 z_cb(p + i) = z_cb(p + (i - 1)) + dz(p + i)
3470 z_cc(p + i) = z_cc(p + (i - 1)) + (dz(p + (i - 1)) + dz(p + i))/2._wp