927 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
928 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
929 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
930 integer :: i, j, k, l, r, q
931 integer :: buffer_counts(1:3), buffer_count
932 type(int_bounds_info) :: boundary_conditions(1:3)
933 integer :: beg_end(1:2), grid_dims(1:3)
934 integer :: dst_proc, src_proc, recv_tag, send_tag
935 logical :: beg_end_geq_0, qbmm_comm, chem_diff_comm
936 integer :: pack_offset, unpack_offset
937 type(scalar_field),
optional,
intent(inout) :: q_T_sf
942 call nvtxstartrange(
"RHS-COMM-PACKBUF")
945 chem_diff_comm = .false.
947 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
949 v_size = nvar + 2*nb*nnode
950 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
951 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
952 else if (
present(q_t_sf) .and. chemistry .and. chem_params%diffusion)
then
953 chem_diff_comm = .true.
955 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
956 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
959 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
960 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
964# 540 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
965#if defined(MFC_OpenACC)
966# 540 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
968# 540 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
969#elif defined(MFC_OpenMP)
970# 540 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
972# 540 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
975 buffer_count = buffer_counts(mpi_dir)
976 boundary_conditions = (/bc_x, bc_y, bc_z/)
977 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
978 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
984 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
985 recv_tag = f_logical_to_int(pbc_loc == 1)
987 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
988 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
990 grid_dims = (/m, n, p/)
993 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
994 pack_offset = grid_dims(mpi_dir) - buff_size + 1
998 if (pbc_loc == 1)
then
999 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
1003# 571 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1004 if (mpi_dir == 1)
then
1005# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1007# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1009# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1010#if defined(MFC_OpenACC)
1011# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1013# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1014#elif defined(MFC_OpenMP)
1015# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1017# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1019# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1021# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1023# 573 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1027 do j = 0, buff_size - 1
1029 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1030 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1036# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1037#if defined(MFC_OpenACC)
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#elif defined(MFC_OpenMP)
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"
1046# 584 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1049 if (chem_diff_comm)
then
1051# 587 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1053# 587 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1054#if defined(MFC_OpenACC)
1055# 587 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1057# 587 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1058#elif defined(MFC_OpenMP)
1059# 587 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1061# 587 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1063# 587 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1065# 587 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1067# 587 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1071 do j = 0, buff_size - 1
1072 r = nvar +
v_size*(j + buff_size*(k + (n + 1)*l))
1073 buff_send(r) = real(q_t_sf%sf(j + pack_offset, k, l), kind=wp)
1078# 596 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1079#if defined(MFC_OpenACC)
1080# 596 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1082# 596 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1083#elif defined(MFC_OpenMP)
1084# 596 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1086# 596 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1088# 596 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1094# 600 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1096# 600 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1097#if defined(MFC_OpenACC)
1098# 600 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1100# 600 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1101#elif defined(MFC_OpenMP)
1102# 600 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1104# 600 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1106# 600 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1108# 600 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1110# 600 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1114 do j = 0, buff_size - 1
1115 do i = nvar + 1, nvar + nnode
1117 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1118 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1125# 613 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1126#if defined(MFC_OpenACC)
1127# 613 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1129# 613 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1130#elif defined(MFC_OpenMP)
1131# 613 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1133# 613 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1135# 613 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1139# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1141# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1142#if defined(MFC_OpenACC)
1143# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1145# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1146#elif defined(MFC_OpenMP)
1147# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1149# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1151# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1153# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1155# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1159 do j = 0, buff_size - 1
1160 do i = nvar + 1, nvar + nnode
1162 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1163 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1170# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1171#if defined(MFC_OpenACC)
1172# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1174# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1175#elif defined(MFC_OpenMP)
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"
1180# 628 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1183# 753 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1185# 571 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1186 if (mpi_dir == 2)
then
1187# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1189# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1191# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1192#if defined(MFC_OpenACC)
1193# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1195# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1196#elif defined(MFC_OpenMP)
1197# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1199# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1201# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1203# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1205# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1209 do k = 0, buff_size - 1
1210 do j = -buff_size, m + buff_size
1211 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1212 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1218# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1219#if defined(MFC_OpenACC)
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#elif defined(MFC_OpenMP)
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"
1228# 642 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1231 if (chem_diff_comm)
then
1233# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1235# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1236#if defined(MFC_OpenACC)
1237# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1239# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1240#elif defined(MFC_OpenMP)
1241# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1243# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1245# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1247# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1249# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1252 do k = 0, buff_size - 1
1253 do j = -buff_size, m + buff_size
1254 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1255 buff_send(r) = real(q_t_sf%sf(j, k + pack_offset, l), kind=wp)
1260# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1261#if defined(MFC_OpenACC)
1262# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1264# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1265#elif defined(MFC_OpenMP)
1266# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1268# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1270# 654 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1276# 658 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1278# 658 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1279#if defined(MFC_OpenACC)
1280# 658 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1282# 658 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1283#elif defined(MFC_OpenMP)
1284# 658 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1286# 658 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1288# 658 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1290# 658 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1292# 658 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1294 do i = nvar + 1, nvar + nnode
1296 do k = 0, buff_size - 1
1297 do j = -buff_size, m + buff_size
1299 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k &
1301 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1308# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1309#if defined(MFC_OpenACC)
1310# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1312# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1313#elif defined(MFC_OpenMP)
1314# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1316# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1318# 672 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1322# 674 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1324# 674 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1325#if defined(MFC_OpenACC)
1326# 674 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1328# 674 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1329#elif defined(MFC_OpenMP)
1330# 674 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1332# 674 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1334# 674 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1336# 674 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1338# 674 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1340 do i = nvar + 1, nvar + nnode
1342 do k = 0, buff_size - 1
1343 do j = -buff_size, m + buff_size
1345 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1346 & + 1)*(k + buff_size*l))
1347 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1354# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1355#if defined(MFC_OpenACC)
1356# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1358# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1359#elif defined(MFC_OpenMP)
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"
1364# 688 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1367# 753 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1369# 571 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1370 if (mpi_dir == 3)
then
1371# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1373# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1375# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1376#if defined(MFC_OpenACC)
1377# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1379# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1380#elif defined(MFC_OpenMP)
1381# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1383# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1385# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1387# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1389# 691 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1392 do l = 0, buff_size - 1
1393 do k = -buff_size, n + buff_size
1394 do j = -buff_size, m + buff_size
1395 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1396 & + 2*buff_size + 1)*l))
1397 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1403# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1404#if defined(MFC_OpenACC)
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#elif defined(MFC_OpenMP)
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"
1413# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1416 if (chem_diff_comm)
then
1418# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1420# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1421#if defined(MFC_OpenACC)
1422# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1424# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1425#elif defined(MFC_OpenMP)
1426# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1428# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1430# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1432# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1434# 706 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1436 do l = 0, buff_size - 1
1437 do k = -buff_size, n + buff_size
1438 do j = -buff_size, m + buff_size
1439 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1440 & + 2*buff_size + 1)*l))
1441 buff_send(r) = real(q_t_sf%sf(j, k, l + pack_offset), kind=wp)
1446# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1447#if defined(MFC_OpenACC)
1448# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1450# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1451#elif defined(MFC_OpenMP)
1452# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1454# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1456# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1462# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1464# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1465#if defined(MFC_OpenACC)
1466# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1468# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1469#elif defined(MFC_OpenMP)
1470# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1472# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1474# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1476# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1478# 720 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1480 do i = nvar + 1, nvar + nnode
1481 do l = 0, buff_size - 1
1482 do k = -buff_size, n + buff_size
1483 do j = -buff_size, m + buff_size
1485 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1486 & + buff_size) + (n + 2*buff_size + 1)*l))
1487 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1494# 734 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1495#if defined(MFC_OpenACC)
1496# 734 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1498# 734 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1499#elif defined(MFC_OpenMP)
1500# 734 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1502# 734 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1504# 734 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1508# 736 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1510# 736 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1511#if defined(MFC_OpenACC)
1512# 736 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1514# 736 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1515#elif defined(MFC_OpenMP)
1516# 736 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1518# 736 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1520# 736 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1522# 736 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1524# 736 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1526 do i = nvar + 1, nvar + nnode
1527 do l = 0, buff_size - 1
1528 do k = -buff_size, n + buff_size
1529 do j = -buff_size, m + buff_size
1531 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1532 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*l))
1533 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1540# 750 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1541#if defined(MFC_OpenACC)
1542# 750 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1544# 750 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1545#elif defined(MFC_OpenMP)
1546# 750 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1548# 750 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1550# 750 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1553# 753 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1555# 755 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1559#ifdef MFC_SIMULATION
1560# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1561 if (rdma_mpi .eqv. .false.)
then
1562# 772 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1563 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1565# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1566#if defined(MFC_OpenACC)
1567# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1569# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1570#elif defined(MFC_OpenMP)
1571# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1573# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1576 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1578 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1579 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1583 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1585# 783 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1586#if defined(MFC_OpenACC)
1587# 783 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1589# 783 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1590#elif defined(MFC_OpenMP)
1591# 783 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1593# 783 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1596# 786 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1598# 760 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1599 if (rdma_mpi .eqv. .true.)
then
1600# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1602# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1603#if defined(MFC_OpenACC)
1604# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1606# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1607 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1608# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1610# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1611 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1612# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1613 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1614# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1616# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1618# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1620# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1621#elif defined(MFC_OpenMP)
1622# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1624# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1625 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1626# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1628# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1629 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1630# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1631 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1632# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1634# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1636# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1638# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1640# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1641 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1642# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1644# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1645 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1646# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1647 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1648# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1650# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1652# 762 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1654# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1656# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1657#if defined(MFC_OpenACC)
1658# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1660# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1661#elif defined(MFC_OpenMP)
1662# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1664# 770 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1666# 786 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1668# 788 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1670 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1671 & mpi_comm_world, mpi_status_ignore, ierr)
1675 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1676# 796 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1677 if (mpi_dir == 1)
then
1678# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1680# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1682# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1683#if defined(MFC_OpenACC)
1684# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1686# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1687#elif defined(MFC_OpenMP)
1688# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1690# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1692# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1694# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1696# 798 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1700 do j = -buff_size, -1
1702 r = (i - 1) +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1703 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1704#if defined(__INTEL_COMPILER)
1705 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l)))
then
1706 print *,
"Error", j, k, l, i
1715# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1716#if defined(MFC_OpenACC)
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#elif defined(MFC_OpenMP)
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"
1725# 815 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1728 if (chem_diff_comm)
then
1730# 818 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1732# 818 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1733#if defined(MFC_OpenACC)
1734# 818 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1736# 818 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1737#elif defined(MFC_OpenMP)
1738# 818 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1740# 818 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1742# 818 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1744# 818 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1746# 818 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1750 do j = -buff_size, -1
1751 r = nvar +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1752 q_t_sf%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1753#if defined(__INTEL_COMPILER)
1754 if (ieee_is_nan(q_t_sf%sf(j + unpack_offset, k, l)))
then
1755 print *,
"Error", j, k, l
1763# 833 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1764#if defined(MFC_OpenACC)
1765# 833 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1767# 833 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1768#elif defined(MFC_OpenMP)
1769# 833 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1771# 833 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1773# 833 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1779# 837 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1781# 837 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1782#if defined(MFC_OpenACC)
1783# 837 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1785# 837 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1786#elif defined(MFC_OpenMP)
1787# 837 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1789# 837 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1791# 837 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1793# 837 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1795# 837 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1799 do j = -buff_size, -1
1800 do i = nvar + 1, nvar + nnode
1802 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1803 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1810# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1811#if defined(MFC_OpenACC)
1812# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1814# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1815#elif defined(MFC_OpenMP)
1816# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1818# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1820# 850 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1824# 852 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1826# 852 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1827#if defined(MFC_OpenACC)
1828# 852 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1830# 852 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1831#elif defined(MFC_OpenMP)
1832# 852 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1834# 852 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1836# 852 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1838# 852 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1840# 852 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1844 do j = -buff_size, -1
1845 do i = nvar + 1, nvar + nnode
1847 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1848 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1855# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1856#if defined(MFC_OpenACC)
1857# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1859# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1860#elif defined(MFC_OpenMP)
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"
1865# 865 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1868# 1014 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1870# 796 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1871 if (mpi_dir == 2)
then
1872# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1874# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1876# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1877#if defined(MFC_OpenACC)
1878# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1880# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1881#elif defined(MFC_OpenMP)
1882# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1884# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1886# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1888# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1890# 868 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1894 do k = -buff_size, -1
1895 do j = -buff_size, m + buff_size
1896 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1897 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1898#if defined(__INTEL_COMPILER)
1899 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l)))
then
1900 print *,
"Error", j, k, l, i
1909# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1910#if defined(MFC_OpenACC)
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#elif defined(MFC_OpenMP)
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"
1919# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1922 if (chem_diff_comm)
then
1924# 888 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1926# 888 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1927#if defined(MFC_OpenACC)
1928# 888 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1930# 888 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1931#elif defined(MFC_OpenMP)
1932# 888 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1934# 888 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1936# 888 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1938# 888 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1940# 888 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1943 do k = -buff_size, -1
1944 do j = -buff_size, m + buff_size
1945 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1946 q_t_sf%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1947#if defined(__INTEL_COMPILER)
1948 if (ieee_is_nan(q_t_sf%sf(j, k + unpack_offset, l)))
then
1949 print *,
"Error", j, k, l
1957# 903 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1958#if defined(MFC_OpenACC)
1959# 903 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1961# 903 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1962#elif defined(MFC_OpenMP)
1963# 903 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1965# 903 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1967# 903 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1973# 907 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1975# 907 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1976#if defined(MFC_OpenACC)
1977# 907 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1979# 907 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1980#elif defined(MFC_OpenMP)
1981# 907 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1983# 907 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1985# 907 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1987# 907 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1989# 907 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1991 do i = nvar + 1, nvar + nnode
1993 do k = -buff_size, -1
1994 do j = -buff_size, m + buff_size
1996 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1997 & + buff_size) + buff_size*l))
1998 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2005# 921 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2006#if defined(MFC_OpenACC)
2007# 921 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2009# 921 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2010#elif defined(MFC_OpenMP)
2011# 921 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2013# 921 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2015# 921 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2019# 923 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2021# 923 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2022#if defined(MFC_OpenACC)
2023# 923 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2025# 923 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2026#elif defined(MFC_OpenMP)
2027# 923 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2029# 923 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2031# 923 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2033# 923 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2035# 923 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2037 do i = nvar + 1, nvar + nnode
2039 do k = -buff_size, -1
2040 do j = -buff_size, m + buff_size
2042 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2043 & + 1)*((k + buff_size) + buff_size*l))
2044 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2051# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2052#if defined(MFC_OpenACC)
2053# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2055# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2056#elif defined(MFC_OpenMP)
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"
2061# 937 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2064# 1014 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2066# 796 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2067 if (mpi_dir == 3)
then
2068# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2070# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2072# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2073#if defined(MFC_OpenACC)
2074# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2076# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2077#elif defined(MFC_OpenMP)
2078# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2080# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2082# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2084# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2086# 940 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2089 do l = -buff_size, -1
2090 do k = -buff_size, n + buff_size
2091 do j = -buff_size, m + buff_size
2092 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2093 & + 2*buff_size + 1)*(l + buff_size)))
2094 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2095#if defined(__INTEL_COMPILER)
2096 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset)))
then
2097 print *,
"Error", j, k, l, i
2106# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2107#if defined(MFC_OpenACC)
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#elif defined(MFC_OpenMP)
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"
2116# 958 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2119 if (chem_diff_comm)
then
2121# 961 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2123# 961 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2124#if defined(MFC_OpenACC)
2125# 961 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2127# 961 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2128#elif defined(MFC_OpenMP)
2129# 961 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2131# 961 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2133# 961 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2135# 961 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2137# 961 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2139 do l = -buff_size, -1
2140 do k = -buff_size, n + buff_size
2141 do j = -buff_size, m + buff_size
2142 r = nvar +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
2143 & + 2*buff_size + 1)*(l + buff_size)))
2144 q_t_sf%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2145#if defined(__INTEL_COMPILER)
2146 if (ieee_is_nan(q_t_sf%sf(j, k, l + unpack_offset)))
then
2147 print *,
"Error", j, k, l
2155# 977 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2156#if defined(MFC_OpenACC)
2157# 977 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2159# 977 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2160#elif defined(MFC_OpenMP)
2161# 977 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2163# 977 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2165# 977 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2171# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2173# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2174#if defined(MFC_OpenACC)
2175# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2177# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2178#elif defined(MFC_OpenMP)
2179# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2181# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2183# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2185# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2187# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2189 do i = nvar + 1, nvar + nnode
2190 do l = -buff_size, -1
2191 do k = -buff_size, n + buff_size
2192 do j = -buff_size, m + buff_size
2194 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
2195 & + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2196 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2203# 995 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2204#if defined(MFC_OpenACC)
2205# 995 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2207# 995 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2208#elif defined(MFC_OpenMP)
2209# 995 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2211# 995 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2213# 995 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2217# 997 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2219# 997 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2220#if defined(MFC_OpenACC)
2221# 997 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2223# 997 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2224#elif defined(MFC_OpenMP)
2225# 997 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2227# 997 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2229# 997 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2231# 997 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2233# 997 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2235 do i = nvar + 1, nvar + nnode
2236 do l = -buff_size, -1
2237 do k = -buff_size, n + buff_size
2238 do j = -buff_size, m + buff_size
2240 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
2241 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
2242 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2249# 1011 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2250#if defined(MFC_OpenACC)
2251# 1011 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2253# 1011 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2254#elif defined(MFC_OpenMP)
2255# 1011 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2257# 1011 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2259# 1011 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2262# 1014 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2264# 1016 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2274 integer :: num_procs_x, num_procs_y, num_procs_z
2276 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
2278 integer :: MPI_COMM_CART
2279 integer :: rem_cells
2280 integer :: recon_order
2284 if (recon_type == recon_type_weno)
then
2285 recon_order = weno_order
2287 recon_order = muscl_order
2290 if (num_procs == 1 .and. parallel_io)
then
2298 recon_order = igr_order
2308 num_procs_z = num_procs
2312 tmp_num_procs_y = num_procs_y
2313 tmp_num_procs_z = num_procs_z
2314 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2318 if (mod(num_procs, i) == 0 .and. (n + 1)/i >= num_stcls_min*recon_order)
then
2320 tmp_num_procs_z = num_procs/i
2322 if (fct_min >= abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2323 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2325 num_procs_z = num_procs/i
2326 fct_min = abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2332 if (cyl_coord .and. p > 0)
then
2337 num_procs_y = num_procs
2342 tmp_num_procs_x = num_procs_x
2343 tmp_num_procs_y = num_procs_y
2344 tmp_num_procs_z = num_procs_z
2345 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2349 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2351 tmp_num_procs_y = num_procs/i
2353 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2354 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2356 num_procs_y = num_procs/i
2357 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2366 num_procs_z = num_procs
2370 tmp_num_procs_x = num_procs_x
2371 tmp_num_procs_y = num_procs_y
2372 tmp_num_procs_z = num_procs_z
2373 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + 10._wp*abs((n + 1) &
2374 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2378 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2379 do j = 1, num_procs/i
2380 if (mod(num_procs/i, j) == 0 .and. (n + 1)/j >= num_stcls_min*recon_order)
then
2383 tmp_num_procs_z = num_procs/(i*j)
2385 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
2386 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2387 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2390 num_procs_z = num_procs/(i*j)
2391 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
2392 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2404 if (proc_rank == 0 .and. ierr == -1)
then
2405 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n, p and ' &
2406 & //
'weno/muscl/igr_order. Exiting.')
2410 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, num_procs_y, num_procs_z/), (/.true., .true., .true./), &
2411 & .false., mpi_comm_cart, ierr)
2414 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, proc_coords, ierr)
2419 rem_cells = mod(p + 1, num_procs_z)
2422 p = (p + 1)/num_procs_z - 1
2426 if (proc_coords(3) == i - 1)
then
2432 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1))
then
2433 proc_coords(3) = proc_coords(3) - 1
2434 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%beg, ierr)
2435 proc_coords(3) = proc_coords(3) + 1
2439 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1))
then
2440 proc_coords(3) = proc_coords(3) + 1
2441 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%end, ierr)
2442 proc_coords(3) = proc_coords(3) - 1
2445#ifdef MFC_POST_PROCESS
2447 if (proc_coords(3) > 0 .and.
format == format_silo)
then
2454 if (proc_coords(3) < num_procs_z - 1 .and.
format == format_silo)
then
2462 if (parallel_io)
then
2463 if (proc_coords(3) < rem_cells)
then
2464 start_idx(3) = (p + 1)*proc_coords(3)
2466 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
2469#ifdef MFC_PRE_PROCESS
2470 if (old_grid .neqv. .true.)
then
2471 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
2473 if (proc_coords(3) < rem_cells)
then
2474 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3))
2475 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1) - (num_procs_z &
2478 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3) + rem_cells)
2479 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1))
2489 num_procs_y = num_procs
2493 tmp_num_procs_x = num_procs_x
2494 tmp_num_procs_y = num_procs_y
2495 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2499 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2501 tmp_num_procs_y = num_procs/i
2503 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2504 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2506 num_procs_y = num_procs/i
2507 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2515 if (proc_rank == 0 .and. ierr == -1)
then
2516 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n and ' &
2517 & //
'weno/muscl/igr_order. Exiting.')
2521 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, num_procs_y/), (/.true., .true./), .false., mpi_comm_cart, &
2525 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, proc_coords, ierr)
2531 rem_cells = mod(n + 1, num_procs_y)
2534 n = (n + 1)/num_procs_y - 1
2538 if (proc_coords(2) == i - 1)
then
2544 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1))
then
2545 proc_coords(2) = proc_coords(2) - 1
2546 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%beg, ierr)
2547 proc_coords(2) = proc_coords(2) + 1
2551 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1))
then
2552 proc_coords(2) = proc_coords(2) + 1
2553 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%end, ierr)
2554 proc_coords(2) = proc_coords(2) - 1
2557#ifdef MFC_POST_PROCESS
2559 if (proc_coords(2) > 0 .and.
format == format_silo)
then
2566 if (proc_coords(2) < num_procs_y - 1 .and.
format == format_silo)
then
2574 if (parallel_io)
then
2575 if (proc_coords(2) < rem_cells)
then
2576 start_idx(2) = (n + 1)*proc_coords(2)
2578 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
2581#ifdef MFC_PRE_PROCESS
2582 if (old_grid .neqv. .true.)
then
2583 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
2585 if (proc_coords(2) < rem_cells)
then
2586 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2))
2587 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1) - (num_procs_y &
2590 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2) + rem_cells)
2591 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1))
2600 num_procs_x = num_procs
2603 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), (/.true./), .false., mpi_comm_cart, ierr)
2606 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, proc_coords, ierr)
2612 rem_cells = mod(m + 1, num_procs_x)
2615 m = (m + 1)/num_procs_x - 1
2619 if (proc_coords(1) == i - 1)
then
2624 call s_update_cell_bounds(cells_bounds, m, n, p)
2627 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1))
then
2628 proc_coords(1) = proc_coords(1) - 1
2629 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
2630 proc_coords(1) = proc_coords(1) + 1
2634 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1))
then
2635 proc_coords(1) = proc_coords(1) + 1
2636 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
2637 proc_coords(1) = proc_coords(1) - 1
2640#ifdef MFC_POST_PROCESS
2642 if (proc_coords(1) > 0 .and.
format == format_silo)
then
2649 if (proc_coords(1) < num_procs_x - 1 .and.
format == format_silo)
then
2657 if (parallel_io)
then
2658 if (proc_coords(1) < rem_cells)
then
2659 start_idx(1) = (m + 1)*proc_coords(1)
2661 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
2664#ifdef MFC_PRE_PROCESS
2665 if (old_grid .neqv. .true.)
then
2666 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
2668 if (proc_coords(1) < rem_cells)
then
2669 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1))
2670 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1) - (num_procs_x - rem_cells))
2672 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1) + rem_cells)
2673 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1))
2688 integer,
intent(in) :: mpi_dir
2689 integer,
intent(in) :: pbc_loc
2694 if (mpi_dir == 1)
then
2695 if (pbc_loc == -1)
then
2697 if (bc_x%end >= 0)
then
2698 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(-buff_size), buff_size, mpi_p, &
2699 & bc_x%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2701 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(-buff_size), buff_size, mpi_p, bc_x%beg, 0, &
2702 & mpi_comm_world, mpi_status_ignore, ierr)
2705 if (bc_x%beg >= 0)
then
2706 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(m + 1), buff_size, mpi_p, bc_x%end, 1, &
2707 & mpi_comm_world, mpi_status_ignore, ierr)
2709 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(m + 1), buff_size, mpi_p, &
2710 & bc_x%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2713 else if (mpi_dir == 2)
then
2714 if (pbc_loc == -1)
then
2716 if (bc_y%end >= 0)
then
2717 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(-buff_size), buff_size, mpi_p, &
2718 & bc_y%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2720 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(-buff_size), buff_size, mpi_p, bc_y%beg, 0, &
2721 & mpi_comm_world, mpi_status_ignore, ierr)
2724 if (bc_y%beg >= 0)
then
2725 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(n + 1), buff_size, mpi_p, bc_y%end, 1, &
2726 & mpi_comm_world, mpi_status_ignore, ierr)
2728 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(n + 1), buff_size, mpi_p, &
2729 & bc_y%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2733 if (pbc_loc == -1)
then
2735 if (bc_z%end >= 0)
then
2736 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(-buff_size), buff_size, mpi_p, &
2737 & bc_z%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2739 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(-buff_size), buff_size, mpi_p, bc_z%beg, 0, &
2740 & mpi_comm_world, mpi_status_ignore, ierr)
2743 if (bc_z%beg >= 0)
then
2744 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(p + 1), buff_size, mpi_p, bc_z%end, 1, &
2745 & mpi_comm_world, mpi_status_ignore, ierr)
2747 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(p + 1), buff_size, mpi_p, &
2748 & bc_z%end, 1, mpi_comm_world, mpi_status_ignore, ierr)