914 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
915 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
916 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
917 integer :: i, j, k, l, r, q
918 integer :: buffer_counts(1:3), buffer_count
919 type(int_bounds_info) :: boundary_conditions(1:3)
920 integer :: beg_end(1:2), grid_dims(1:3)
921 integer :: dst_proc, src_proc, recv_tag, send_tag
922 logical :: beg_end_geq_0, qbmm_comm, chem_diff_comm
923 integer :: pack_offset, unpack_offset
924 type(scalar_field),
optional,
intent(inout) :: q_T_sf
929 call nvtxstartrange(
"RHS-COMM-PACKBUF")
932 chem_diff_comm = .false.
934 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
936 v_size = nvar + 2*nb*nnode
937 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
938 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
939 else if (
present(q_t_sf) .and. chemistry .and. chem_params%diffusion)
then
940 chem_diff_comm = .true.
942 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
943 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
946 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
947 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
951# 537 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
952#if defined(MFC_OpenACC)
953# 537 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
955# 537 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
956#elif defined(MFC_OpenMP)
957# 537 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
959# 537 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
962 buffer_count = buffer_counts(mpi_dir)
963 boundary_conditions = (/bc_x, bc_y, bc_z/)
964 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
965 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
971 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
972 recv_tag = f_logical_to_int(pbc_loc == 1)
974 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
975 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
977 grid_dims = (/m, n, p/)
980 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
981 pack_offset = grid_dims(mpi_dir) - buff_size + 1
985 if (pbc_loc == 1)
then
986 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
990# 568 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
991 if (mpi_dir == 1)
then
992# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
994# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
996# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
997#if defined(MFC_OpenACC)
998# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1000# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1001#elif defined(MFC_OpenMP)
1002# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1004# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1006# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1008# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1010# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1014 do j = 0, buff_size - 1
1016 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1017 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1023# 581 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1024#if defined(MFC_OpenACC)
1025# 581 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1027# 581 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1028#elif defined(MFC_OpenMP)
1029# 581 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1031# 581 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1033# 581 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1036 if (chem_diff_comm)
then
1038# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1040# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1041#if defined(MFC_OpenACC)
1042# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1044# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1045#elif defined(MFC_OpenMP)
1046# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1048# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1050# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1052# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1054# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1058 do j = 0, buff_size - 1
1059 r = nvar +
v_size*(j + buff_size*(k + (n + 1)*l))
1060 buff_send(r) = real(q_t_sf%sf(j + pack_offset, k, l), kind=wp)
1065# 593 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1066#if defined(MFC_OpenACC)
1067# 593 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1069# 593 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1070#elif defined(MFC_OpenMP)
1071# 593 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1073# 593 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1075# 593 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1081# 597 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1083# 597 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1084#if defined(MFC_OpenACC)
1085# 597 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1087# 597 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1088#elif defined(MFC_OpenMP)
1089# 597 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1091# 597 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1093# 597 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1095# 597 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1097# 597 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1101 do j = 0, buff_size - 1
1102 do i = nvar + 1, nvar + nnode
1104 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1105 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1112# 610 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1113#if defined(MFC_OpenACC)
1114# 610 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1116# 610 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1117#elif defined(MFC_OpenMP)
1118# 610 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1120# 610 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1122# 610 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1126# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1128# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1129#if defined(MFC_OpenACC)
1130# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1132# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1133#elif defined(MFC_OpenMP)
1134# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1136# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1138# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1140# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1142# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1146 do j = 0, buff_size - 1
1147 do i = nvar + 1, nvar + nnode
1149 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1150 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1157# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1158#if defined(MFC_OpenACC)
1159# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1161# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1162#elif defined(MFC_OpenMP)
1163# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1165# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1167# 625 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1170# 750 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1172# 568 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1173 if (mpi_dir == 2)
then
1174# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1176# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1178# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1179#if defined(MFC_OpenACC)
1180# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1182# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1183#elif defined(MFC_OpenMP)
1184# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1186# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1188# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1190# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1192# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1196 do k = 0, buff_size - 1
1197 do j = -buff_size, m + buff_size
1198 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1199 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1205# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1206#if defined(MFC_OpenACC)
1207# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1209# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1210#elif defined(MFC_OpenMP)
1211# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1213# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1215# 639 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1218 if (chem_diff_comm)
then
1220# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1222# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1223#if defined(MFC_OpenACC)
1224# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1226# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1227#elif defined(MFC_OpenMP)
1228# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1230# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1232# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1234# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1236# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1239 do k = 0, buff_size - 1
1240 do j = -buff_size, m + buff_size
1241 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1242 buff_send(r) = real(q_t_sf%sf(j, k + pack_offset, l), kind=wp)
1247# 651 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1248#if defined(MFC_OpenACC)
1249# 651 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1251# 651 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1252#elif defined(MFC_OpenMP)
1253# 651 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1255# 651 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1257# 651 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1263# 655 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1265# 655 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1266#if defined(MFC_OpenACC)
1267# 655 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1269# 655 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1270#elif defined(MFC_OpenMP)
1271# 655 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1273# 655 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1275# 655 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1277# 655 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1279# 655 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1281 do i = nvar + 1, nvar + nnode
1283 do k = 0, buff_size - 1
1284 do j = -buff_size, m + buff_size
1286 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k &
1288 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1295# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1296#if defined(MFC_OpenACC)
1297# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1299# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1300#elif defined(MFC_OpenMP)
1301# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1303# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1305# 669 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1309# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1311# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1312#if defined(MFC_OpenACC)
1313# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1315# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1316#elif defined(MFC_OpenMP)
1317# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1319# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1321# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1323# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1325# 671 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1327 do i = nvar + 1, nvar + nnode
1329 do k = 0, buff_size - 1
1330 do j = -buff_size, m + buff_size
1332 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1333 & + 1)*(k + buff_size*l))
1334 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1341# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1342#if defined(MFC_OpenACC)
1343# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1345# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1346#elif defined(MFC_OpenMP)
1347# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1349# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1351# 685 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1354# 750 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1356# 568 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1357 if (mpi_dir == 3)
then
1358# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1360# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1362# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1363#if defined(MFC_OpenACC)
1364# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1366# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1367#elif defined(MFC_OpenMP)
1368# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1370# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1372# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1374# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1376# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1379 do l = 0, buff_size - 1
1380 do k = -buff_size, n + buff_size
1381 do j = -buff_size, m + buff_size
1382 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1383 & + 2*buff_size + 1)*l))
1384 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1390# 700 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1391#if defined(MFC_OpenACC)
1392# 700 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1394# 700 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1395#elif defined(MFC_OpenMP)
1396# 700 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1398# 700 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1400# 700 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1403 if (chem_diff_comm)
then
1405# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1407# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1408#if defined(MFC_OpenACC)
1409# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1411# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1412#elif defined(MFC_OpenMP)
1413# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1415# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1417# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1419# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1421# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1423 do l = 0, buff_size - 1
1424 do k = -buff_size, n + buff_size
1425 do j = -buff_size, m + buff_size
1426 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1427 & + 2*buff_size + 1)*l))
1428 buff_send(r) = real(q_t_sf%sf(j, k, l + pack_offset), kind=wp)
1433# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1434#if defined(MFC_OpenACC)
1435# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1437# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1438#elif defined(MFC_OpenMP)
1439# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1441# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1443# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1449# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1451# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1452#if defined(MFC_OpenACC)
1453# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1455# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1456#elif defined(MFC_OpenMP)
1457# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1459# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1461# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1463# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1465# 717 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1467 do i = nvar + 1, nvar + nnode
1468 do l = 0, buff_size - 1
1469 do k = -buff_size, n + buff_size
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 &
1473 & + buff_size) + (n + 2*buff_size + 1)*l))
1474 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1481# 731 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1482#if defined(MFC_OpenACC)
1483# 731 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1485# 731 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1486#elif defined(MFC_OpenMP)
1487# 731 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1489# 731 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1491# 731 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1495# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1497# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1498#if defined(MFC_OpenACC)
1499# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1501# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1502#elif defined(MFC_OpenMP)
1503# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1505# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1507# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1509# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1511# 733 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1513 do i = nvar + 1, nvar + nnode
1514 do l = 0, buff_size - 1
1515 do k = -buff_size, n + buff_size
1516 do j = -buff_size, m + buff_size
1518 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1519 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*l))
1520 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1527# 747 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1528#if defined(MFC_OpenACC)
1529# 747 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1531# 747 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1532#elif defined(MFC_OpenMP)
1533# 747 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1535# 747 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1537# 747 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1540# 750 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1542# 752 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1546#ifdef MFC_SIMULATION
1547# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1548 if (rdma_mpi .eqv. .false.)
then
1549# 769 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1550 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1552# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1553#if defined(MFC_OpenACC)
1554# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1556# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1557#elif defined(MFC_OpenMP)
1558# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1560# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1563 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1565 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1566 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1570 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1572# 780 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1573#if defined(MFC_OpenACC)
1574# 780 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1576# 780 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1577#elif defined(MFC_OpenMP)
1578# 780 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1580# 780 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1583# 783 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1585# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1586 if (rdma_mpi .eqv. .true.)
then
1587# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1589# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1590#if defined(MFC_OpenACC)
1591# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1593# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1594 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1595# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1597# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1598 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1599# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1600 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1601# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1603# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1605# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1607# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1608#elif defined(MFC_OpenMP)
1609# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1611# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1612 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1613# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1615# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1616 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1617# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1618 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1619# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1621# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1623# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1625# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1627# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1628 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1629# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1631# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1632 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1633# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1634 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1635# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1637# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1639# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1641# 767 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1643# 767 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1644#if defined(MFC_OpenACC)
1645# 767 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1647# 767 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1648#elif defined(MFC_OpenMP)
1649# 767 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1651# 767 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1653# 783 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1655# 785 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1657 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1658 & mpi_comm_world, mpi_status_ignore, ierr)
1662 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1663# 793 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1664 if (mpi_dir == 1)
then
1665# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1667# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1669# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1670#if defined(MFC_OpenACC)
1671# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1673# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1674#elif defined(MFC_OpenMP)
1675# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1677# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1679# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1681# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1683# 795 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1687 do j = -buff_size, -1
1689 r = (i - 1) +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1690 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1691#if defined(__INTEL_COMPILER)
1692 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l)))
then
1693 print *,
"Error", j, k, l, i
1702# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1703#if defined(MFC_OpenACC)
1704# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1706# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1707#elif defined(MFC_OpenMP)
1708# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1710# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1712# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1715 if (chem_diff_comm)
then
1717# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1719# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1720#if defined(MFC_OpenACC)
1721# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1723# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1724#elif defined(MFC_OpenMP)
1725# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1727# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1729# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1731# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1733# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1737 do j = -buff_size, -1
1738 r = nvar +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1739 q_t_sf%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1740#if defined(__INTEL_COMPILER)
1741 if (ieee_is_nan(q_t_sf%sf(j + unpack_offset, k, l)))
then
1742 print *,
"Error", j, k, l
1750# 830 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1751#if defined(MFC_OpenACC)
1752# 830 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1754# 830 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1755#elif defined(MFC_OpenMP)
1756# 830 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1758# 830 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1760# 830 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1766# 834 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1768# 834 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1769#if defined(MFC_OpenACC)
1770# 834 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1772# 834 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1773#elif defined(MFC_OpenMP)
1774# 834 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1776# 834 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1778# 834 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1780# 834 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1782# 834 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1786 do j = -buff_size, -1
1787 do i = nvar + 1, nvar + nnode
1789 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1790 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1797# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1798#if defined(MFC_OpenACC)
1799# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1801# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1802#elif defined(MFC_OpenMP)
1803# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1805# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1807# 847 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1811# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1813# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1814#if defined(MFC_OpenACC)
1815# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1817# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1818#elif defined(MFC_OpenMP)
1819# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1821# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1823# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1825# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1827# 849 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1831 do j = -buff_size, -1
1832 do i = nvar + 1, nvar + nnode
1834 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1835 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1842# 862 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1843#if defined(MFC_OpenACC)
1844# 862 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1846# 862 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1847#elif defined(MFC_OpenMP)
1848# 862 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1850# 862 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1852# 862 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1855# 1011 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1857# 793 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1858 if (mpi_dir == 2)
then
1859# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1861# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1863# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1864#if defined(MFC_OpenACC)
1865# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1867# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1868#elif defined(MFC_OpenMP)
1869# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1871# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1873# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1875# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1877# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1881 do k = -buff_size, -1
1882 do j = -buff_size, m + buff_size
1883 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1884 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1885#if defined(__INTEL_COMPILER)
1886 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l)))
then
1887 print *,
"Error", j, k, l, i
1896# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1897#if defined(MFC_OpenACC)
1898# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1900# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1901#elif defined(MFC_OpenMP)
1902# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1904# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1906# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1909 if (chem_diff_comm)
then
1911# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1913# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1914#if defined(MFC_OpenACC)
1915# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1917# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1918#elif defined(MFC_OpenMP)
1919# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1921# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1923# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1925# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1927# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1930 do k = -buff_size, -1
1931 do j = -buff_size, m + buff_size
1932 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1933 q_t_sf%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1934#if defined(__INTEL_COMPILER)
1935 if (ieee_is_nan(q_t_sf%sf(j, k + unpack_offset, l)))
then
1936 print *,
"Error", j, k, l
1944# 900 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1945#if defined(MFC_OpenACC)
1946# 900 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1948# 900 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1949#elif defined(MFC_OpenMP)
1950# 900 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1952# 900 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1954# 900 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1960# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1962# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1963#if defined(MFC_OpenACC)
1964# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1966# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1967#elif defined(MFC_OpenMP)
1968# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1970# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1972# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1974# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1976# 904 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1978 do i = nvar + 1, nvar + nnode
1980 do k = -buff_size, -1
1981 do j = -buff_size, m + buff_size
1983 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1984 & + buff_size) + buff_size*l))
1985 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1992# 918 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1993#if defined(MFC_OpenACC)
1994# 918 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1996# 918 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1997#elif defined(MFC_OpenMP)
1998# 918 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2000# 918 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2002# 918 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2006# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2008# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2009#if defined(MFC_OpenACC)
2010# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2012# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2013#elif defined(MFC_OpenMP)
2014# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2016# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2018# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2020# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2022# 920 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2024 do i = nvar + 1, nvar + nnode
2026 do k = -buff_size, -1
2027 do j = -buff_size, m + buff_size
2029 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2030 & + 1)*((k + buff_size) + buff_size*l))
2031 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2038# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2039#if defined(MFC_OpenACC)
2040# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2042# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2043#elif defined(MFC_OpenMP)
2044# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2046# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2048# 934 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2051# 1011 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2053# 793 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2054 if (mpi_dir == 3)
then
2055# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2057# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2059# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2060#if defined(MFC_OpenACC)
2061# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2063# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2064#elif defined(MFC_OpenMP)
2065# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2067# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2069# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2071# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2073# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2076 do l = -buff_size, -1
2077 do k = -buff_size, n + buff_size
2078 do j = -buff_size, m + buff_size
2079 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2080 & + 2*buff_size + 1)*(l + buff_size)))
2081 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2082#if defined(__INTEL_COMPILER)
2083 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset)))
then
2084 print *,
"Error", j, k, l, i
2093# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2094#if defined(MFC_OpenACC)
2095# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2097# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2098#elif defined(MFC_OpenMP)
2099# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2101# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2103# 955 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2106 if (chem_diff_comm)
then
2108# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2110# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2111#if defined(MFC_OpenACC)
2112# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2114# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2115#elif defined(MFC_OpenMP)
2116# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2118# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2120# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2122# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2124# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2126 do l = -buff_size, -1
2127 do k = -buff_size, n + buff_size
2128 do j = -buff_size, m + buff_size
2129 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2130 & + 2*buff_size + 1)*(l + buff_size)))
2131 q_t_sf%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2132#if defined(__INTEL_COMPILER)
2133 if (ieee_is_nan(q_t_sf%sf(j, k, l + unpack_offset)))
then
2134 print *,
"Error", j, k, l
2142# 974 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2143#if defined(MFC_OpenACC)
2144# 974 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2146# 974 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2147#elif defined(MFC_OpenMP)
2148# 974 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2150# 974 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2152# 974 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2158# 978 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2160# 978 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2161#if defined(MFC_OpenACC)
2162# 978 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2164# 978 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2165#elif defined(MFC_OpenMP)
2166# 978 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2168# 978 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2170# 978 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2172# 978 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2174# 978 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2176 do i = nvar + 1, nvar + nnode
2177 do l = -buff_size, -1
2178 do k = -buff_size, n + buff_size
2179 do j = -buff_size, m + buff_size
2181 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2182 & + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2183 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2190# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2191#if defined(MFC_OpenACC)
2192# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2194# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2195#elif defined(MFC_OpenMP)
2196# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2198# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2200# 992 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2204# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2206# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2207#if defined(MFC_OpenACC)
2208# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2210# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2211#elif defined(MFC_OpenMP)
2212# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2214# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2216# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2218# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2220# 994 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2222 do i = nvar + 1, nvar + nnode
2223 do l = -buff_size, -1
2224 do k = -buff_size, n + buff_size
2225 do j = -buff_size, m + buff_size
2227 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2228 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2229 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2236# 1008 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2237#if defined(MFC_OpenACC)
2238# 1008 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2240# 1008 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2241#elif defined(MFC_OpenMP)
2242# 1008 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2244# 1008 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2246# 1008 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2249# 1011 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2251# 1013 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2261 integer :: num_procs_x, num_procs_y, num_procs_z
2263 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
2265 integer :: MPI_COMM_CART
2266 integer :: rem_cells
2267 integer :: recon_order
2271 if (recon_type == weno_type)
then
2272 recon_order = weno_order
2274 recon_order = muscl_order
2277 if (num_procs == 1 .and. parallel_io)
then
2285 recon_order = igr_order
2295 num_procs_z = num_procs
2299 tmp_num_procs_y = num_procs_y
2300 tmp_num_procs_z = num_procs_z
2301 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2305 if (mod(num_procs, i) == 0 .and. (n + 1)/i >= num_stcls_min*recon_order)
then
2307 tmp_num_procs_z = num_procs/i
2309 if (fct_min >= abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2310 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2312 num_procs_z = num_procs/i
2313 fct_min = abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2319 if (cyl_coord .and. p > 0)
then
2324 num_procs_y = num_procs
2329 tmp_num_procs_x = num_procs_x
2330 tmp_num_procs_y = num_procs_y
2331 tmp_num_procs_z = num_procs_z
2332 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2336 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2338 tmp_num_procs_y = num_procs/i
2340 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2341 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2343 num_procs_y = num_procs/i
2344 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2353 num_procs_z = num_procs
2357 tmp_num_procs_x = num_procs_x
2358 tmp_num_procs_y = num_procs_y
2359 tmp_num_procs_z = num_procs_z
2360 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + 10._wp*abs((n + 1) &
2361 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2365 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2366 do j = 1, num_procs/i
2367 if (mod(num_procs/i, j) == 0 .and. (n + 1)/j >= num_stcls_min*recon_order)
then
2370 tmp_num_procs_z = num_procs/(i*j)
2372 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
2373 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2374 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2377 num_procs_z = num_procs/(i*j)
2378 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
2379 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2391 if (proc_rank == 0 .and. ierr == -1)
then
2392 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n, p and ' &
2393 & //
'weno/muscl/igr_order. Exiting.')
2397 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, num_procs_y, num_procs_z/), (/.true., .true., .true./), &
2398 & .false., mpi_comm_cart, ierr)
2401 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, proc_coords, ierr)
2406 rem_cells = mod(p + 1, num_procs_z)
2409 p = (p + 1)/num_procs_z - 1
2413 if (proc_coords(3) == i - 1)
then
2419 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1))
then
2420 proc_coords(3) = proc_coords(3) - 1
2421 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%beg, ierr)
2422 proc_coords(3) = proc_coords(3) + 1
2426 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1))
then
2427 proc_coords(3) = proc_coords(3) + 1
2428 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%end, ierr)
2429 proc_coords(3) = proc_coords(3) - 1
2432#ifdef MFC_POST_PROCESS
2434 if (proc_coords(3) > 0 .and.
format == 1)
then
2441 if (proc_coords(3) < num_procs_z - 1 .and.
format == 1)
then
2449 if (parallel_io)
then
2450 if (proc_coords(3) < rem_cells)
then
2451 start_idx(3) = (p + 1)*proc_coords(3)
2453 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
2456#ifdef MFC_PRE_PROCESS
2457 if (old_grid .neqv. .true.)
then
2458 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
2460 if (proc_coords(3) < rem_cells)
then
2461 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3))
2462 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1) - (num_procs_z &
2465 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3) + rem_cells)
2466 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1))
2476 num_procs_y = num_procs
2480 tmp_num_procs_x = num_procs_x
2481 tmp_num_procs_y = num_procs_y
2482 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2486 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2488 tmp_num_procs_y = num_procs/i
2490 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2491 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2493 num_procs_y = num_procs/i
2494 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2502 if (proc_rank == 0 .and. ierr == -1)
then
2503 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n and ' &
2504 & //
'weno/muscl/igr_order. Exiting.')
2508 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, num_procs_y/), (/.true., .true./), .false., mpi_comm_cart, &
2512 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, proc_coords, ierr)
2518 rem_cells = mod(n + 1, num_procs_y)
2521 n = (n + 1)/num_procs_y - 1
2525 if (proc_coords(2) == i - 1)
then
2531 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1))
then
2532 proc_coords(2) = proc_coords(2) - 1
2533 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%beg, ierr)
2534 proc_coords(2) = proc_coords(2) + 1
2538 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1))
then
2539 proc_coords(2) = proc_coords(2) + 1
2540 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%end, ierr)
2541 proc_coords(2) = proc_coords(2) - 1
2544#ifdef MFC_POST_PROCESS
2546 if (proc_coords(2) > 0 .and.
format == 1)
then
2553 if (proc_coords(2) < num_procs_y - 1 .and.
format == 1)
then
2561 if (parallel_io)
then
2562 if (proc_coords(2) < rem_cells)
then
2563 start_idx(2) = (n + 1)*proc_coords(2)
2565 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
2568#ifdef MFC_PRE_PROCESS
2569 if (old_grid .neqv. .true.)
then
2570 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
2572 if (proc_coords(2) < rem_cells)
then
2573 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2))
2574 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1) - (num_procs_y &
2577 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2) + rem_cells)
2578 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1))
2587 num_procs_x = num_procs
2590 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), (/.true./), .false., mpi_comm_cart, ierr)
2593 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, proc_coords, ierr)
2599 rem_cells = mod(m + 1, num_procs_x)
2602 m = (m + 1)/num_procs_x - 1
2606 if (proc_coords(1) == i - 1)
then
2611 call s_update_cell_bounds(cells_bounds, m, n, p)
2614 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1))
then
2615 proc_coords(1) = proc_coords(1) - 1
2616 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
2617 proc_coords(1) = proc_coords(1) + 1
2621 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1))
then
2622 proc_coords(1) = proc_coords(1) + 1
2623 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
2624 proc_coords(1) = proc_coords(1) - 1
2627#ifdef MFC_POST_PROCESS
2629 if (proc_coords(1) > 0 .and.
format == 1)
then
2636 if (proc_coords(1) < num_procs_x - 1 .and.
format == 1)
then
2644 if (parallel_io)
then
2645 if (proc_coords(1) < rem_cells)
then
2646 start_idx(1) = (m + 1)*proc_coords(1)
2648 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
2651#ifdef MFC_PRE_PROCESS
2652 if (old_grid .neqv. .true.)
then
2653 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
2655 if (proc_coords(1) < rem_cells)
then
2656 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1))
2657 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1) - (num_procs_x - rem_cells))
2659 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1) + rem_cells)
2660 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1))
2675 integer,
intent(in) :: mpi_dir
2676 integer,
intent(in) :: pbc_loc
2681 if (mpi_dir == 1)
then
2682 if (pbc_loc == -1)
then
2684 if (bc_x%end >= 0)
then
2685 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(-buff_size), buff_size, mpi_p, &
2686 & bc_x%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2688 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(-buff_size), buff_size, mpi_p, bc_x%beg, 0, &
2689 & mpi_comm_world, mpi_status_ignore, ierr)
2692 if (bc_x%beg >= 0)
then
2693 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(m + 1), buff_size, mpi_p, bc_x%end, 1, &
2694 & mpi_comm_world, mpi_status_ignore, ierr)
2696 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(m + 1), buff_size, mpi_p, &
2697 & bc_x%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2700 else if (mpi_dir == 2)
then
2701 if (pbc_loc == -1)
then
2703 if (bc_y%end >= 0)
then
2704 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(-buff_size), buff_size, mpi_p, &
2705 & bc_y%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2707 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(-buff_size), buff_size, mpi_p, bc_y%beg, 0, &
2708 & mpi_comm_world, mpi_status_ignore, ierr)
2711 if (bc_y%beg >= 0)
then
2712 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(n + 1), buff_size, mpi_p, bc_y%end, 1, &
2713 & mpi_comm_world, mpi_status_ignore, ierr)
2715 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(n + 1), buff_size, mpi_p, &
2716 & bc_y%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2720 if (pbc_loc == -1)
then
2722 if (bc_z%end >= 0)
then
2723 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(-buff_size), buff_size, mpi_p, &
2724 & bc_z%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2726 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(-buff_size), buff_size, mpi_p, bc_z%beg, 0, &
2727 & mpi_comm_world, mpi_status_ignore, ierr)
2730 if (bc_z%beg >= 0)
then
2731 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(p + 1), buff_size, mpi_p, bc_z%end, 1, &
2732 & mpi_comm_world, mpi_status_ignore, ierr)
2734 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(p + 1), buff_size, mpi_p, &
2735 & bc_z%end, 1, mpi_comm_world, mpi_status_ignore, ierr)