520 type(scalar_field),
dimension(sys_size),
intent(in) ::
q_cons_vf
521 type(integer_field),
optional,
intent(in) :: ib_markers
522 type(scalar_field),
intent(in),
optional :: beta
524 integer,
dimension(num_dims) :: sizes_glb, sizes_loc
525 integer,
dimension(1) :: airfoil_glb, airfoil_loc, airfoil_start
536 if (
present(beta))
then
537 alt_sys = sys_size + 1
543 mpi_io_data%var(i)%sf =>
q_cons_vf(i)%sf(0:m, 0:n, 0:p)
546 if (
present(beta))
then
547 mpi_io_data%var(alt_sys)%sf => beta%sf(0:m, 0:n, 0:p)
551 if (qbmm .and. .not. polytropic)
then
554#ifdef MFC_PRE_PROCESS
555 mpi_io_data%var(sys_size + (i - 1)*nnode +
j)%sf => pb%sf(0:m, 0:n, 0:p,
j, i)
556 mpi_io_data%var(sys_size + (i - 1)*nnode +
j + nb*nnode)%sf => mv%sf(0:m, 0:n, 0:p,
j, i)
557#elif defined (MFC_SIMULATION)
558 mpi_io_data%var(sys_size + (i - 1)*nnode +
j)%sf => pb_ts(1)%sf(0:m, 0:n, 0:p,
j, i)
559 mpi_io_data%var(sys_size + (i - 1)*nnode +
j + nb*nnode)%sf => mv_ts(1)%sf(0:m, 0:n, 0:p,
j, i)
566 sizes_glb(1) = m_glb + 1; sizes_loc(1) = m + 1
568 sizes_glb(2) = n_glb + 1; sizes_loc(2) = n + 1
570 sizes_glb(num_dims) = p_glb + 1; sizes_loc(num_dims) = p + 1
576 call mpi_type_create_subarray(num_dims, sizes_glb, sizes_loc, start_idx, &
577 mpi_order_fortran, mpi_p, mpi_io_data%view(i), ierr)
578 call mpi_type_commit(mpi_io_data%view(i), ierr)
581#ifndef MFC_POST_PROCESS
582 if (qbmm .and. .not. polytropic)
then
583 do i = sys_size + 1, sys_size + 2*nb*4
584 call mpi_type_create_subarray(num_dims, sizes_glb, sizes_loc, start_idx, &
585 mpi_order_fortran, mpi_p, mpi_io_data%view(i), ierr)
586 call mpi_type_commit(mpi_io_data%view(i), ierr)
592#ifndef MFC_PRE_PROCESS
593 if (
present(ib_markers))
then
594 mpi_io_ib_data%var%sf => ib_markers%sf(0:m, 0:n, 0:p)
596 call mpi_type_create_subarray(num_dims, sizes_glb, sizes_loc, start_idx, &
597 mpi_order_fortran, mpi_integer, mpi_io_ib_data%view, ierr)
598 call mpi_type_commit(mpi_io_ib_data%view, ierr)
1043 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
1044 real(stp),
optional,
dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:, 1:),
intent(inout) :: pb_in, mv_in
1045 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
1047 integer :: i, j, k, l, r, q
1049 integer :: buffer_counts(1:3), buffer_count
1051 type(int_bounds_info) :: boundary_conditions(1:3)
1052 integer :: beg_end(1:2), grid_dims(1:3)
1053 integer :: dst_proc, src_proc, recv_tag, send_tag
1055 logical :: beg_end_geq_0, qbmm_comm
1057 integer :: pack_offset, unpack_offset
1062 call nvtxstartrange(
"RHS-COMM-PACKBUF")
1066 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
1069 buffer_counts = (/ &
1070 buff_size*
v_size*(n + 1)*(p + 1), &
1071 buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1072 buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1) &
1076 buffer_counts = (/ &
1077 buff_size*
v_size*(n + 1)*(p + 1), &
1078 buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1079 buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1) &
1084# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1085#if defined(MFC_OpenACC)
1086# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1088# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1089#elif defined(MFC_OpenMP)
1090# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1092# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1095 buffer_count = buffer_counts(mpi_dir)
1096 boundary_conditions = (/bc_x, bc_y, bc_z/)
1097 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
1098 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
1107 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
1108 recv_tag = f_logical_to_int(pbc_loc == 1)
1110 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
1111 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
1113 grid_dims = (/m, n, p/)
1116 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
1117 pack_offset = grid_dims(mpi_dir) - buff_size + 1
1121 if (pbc_loc == 1)
then
1122 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
1126# 727 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1127 if (mpi_dir == 1)
then
1128# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1130# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1132# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1133#if defined(MFC_OpenACC)
1134# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1136# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1137#elif defined(MFC_OpenMP)
1138# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1140# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1142# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1144# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1146# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1148# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1152 do j = 0, buff_size - 1
1154 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1155 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1161# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1163# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1164#if defined(MFC_OpenACC)
1165# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1167# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1168#elif defined(MFC_OpenMP)
1169# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1171# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1173# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1175# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1177# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1182# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1184# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1185#if defined(MFC_OpenACC)
1186# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1188# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1189#elif defined(MFC_OpenMP)
1190# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1192# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1194# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1196# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1198# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1200# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1204 do j = 0, buff_size - 1
1205 do i = nvar + 1, nvar + 4
1207 r = (i - 1) + (q - 1)*4 +
v_size* &
1208 (j + buff_size*(k + (n + 1)*l))
1209 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1216# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1218# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1219#if defined(MFC_OpenACC)
1220# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1222# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1223#elif defined(MFC_OpenMP)
1224# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1226# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1228# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1230# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1232# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1236# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1238# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1239#if defined(MFC_OpenACC)
1240# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1242# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1243#elif defined(MFC_OpenMP)
1244# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1246# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1248# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1250# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1252# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1254# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1258 do j = 0, buff_size - 1
1259 do i = nvar + 1, nvar + 4
1261 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
1262 (j + buff_size*(k + (n + 1)*l))
1263 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1270# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1272# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1273#if defined(MFC_OpenACC)
1274# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1276# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1277#elif defined(MFC_OpenMP)
1278# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1280# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1282# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1284# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1286# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1289# 878 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1291# 727 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1292 if (mpi_dir == 2)
then
1293# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1295# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1297# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1298#if defined(MFC_OpenACC)
1299# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1301# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1302#elif defined(MFC_OpenMP)
1303# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1305# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1307# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1309# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1311# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1313# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1317 do k = 0, buff_size - 1
1318 do j = -buff_size, m + buff_size
1320 ((j + buff_size) + (m + 2*buff_size + 1)* &
1322 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1328# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1330# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1331#if defined(MFC_OpenACC)
1332# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1334# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1335#elif defined(MFC_OpenMP)
1336# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1338# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1340# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1342# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1344# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1349# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1351# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1352#if defined(MFC_OpenACC)
1353# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1355# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1356#elif defined(MFC_OpenMP)
1357# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1359# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1361# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1363# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1365# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1367# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1369 do i = nvar + 1, nvar + 4
1371 do k = 0, buff_size - 1
1372 do j = -buff_size, m + buff_size
1374 r = (i - 1) + (q - 1)*4 +
v_size* &
1375 ((j + buff_size) + (m + 2*buff_size + 1)* &
1377 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1384# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1386# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1387#if defined(MFC_OpenACC)
1388# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1390# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1391#elif defined(MFC_OpenMP)
1392# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1394# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1396# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1398# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1400# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1404# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1406# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1407#if defined(MFC_OpenACC)
1408# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1410# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1411#elif defined(MFC_OpenMP)
1412# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1414# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1416# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1418# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1420# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1422# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1424 do i = nvar + 1, nvar + 4
1426 do k = 0, buff_size - 1
1427 do j = -buff_size, m + buff_size
1429 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
1430 ((j + buff_size) + (m + 2*buff_size + 1)* &
1432 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1439# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1441# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1442#if defined(MFC_OpenACC)
1443# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1445# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1446#elif defined(MFC_OpenMP)
1447# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1449# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1451# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1453# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1455# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1458# 878 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1460# 727 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1461 if (mpi_dir == 3)
then
1462# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1464# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1466# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1467#if defined(MFC_OpenACC)
1468# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1470# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1471#elif defined(MFC_OpenMP)
1472# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1474# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1476# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1478# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1480# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1482# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1485 do l = 0, buff_size - 1
1486 do k = -buff_size, n + buff_size
1487 do j = -buff_size, m + buff_size
1489 ((j + buff_size) + (m + 2*buff_size + 1)* &
1490 ((k + buff_size) + (n + 2*buff_size + 1)*l))
1491 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1497# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1499# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1500#if defined(MFC_OpenACC)
1501# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1503# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1504#elif defined(MFC_OpenMP)
1505# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1507# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1509# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1511# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1513# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1518# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1520# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1521#if defined(MFC_OpenACC)
1522# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1524# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1525#elif defined(MFC_OpenMP)
1526# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1528# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1530# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1532# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1534# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1536# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1538 do i = nvar + 1, nvar + 4
1539 do l = 0, buff_size - 1
1540 do k = -buff_size, n + buff_size
1541 do j = -buff_size, m + buff_size
1543 r = (i - 1) + (q - 1)*4 +
v_size* &
1544 ((j + buff_size) + (m + 2*buff_size + 1)* &
1545 ((k + buff_size) + (n + 2*buff_size + 1)*l))
1546 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1553# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1555# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1556#if defined(MFC_OpenACC)
1557# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1559# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1560#elif defined(MFC_OpenMP)
1561# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1563# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1565# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1567# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1569# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1573# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1575# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1576#if defined(MFC_OpenACC)
1577# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1579# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1580#elif defined(MFC_OpenMP)
1581# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1583# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1585# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1587# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1589# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1591# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1593 do i = nvar + 1, nvar + 4
1594 do l = 0, buff_size - 1
1595 do k = -buff_size, n + buff_size
1596 do j = -buff_size, m + buff_size
1598 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
1599 ((j + buff_size) + (m + 2*buff_size + 1)* &
1600 ((k + buff_size) + (n + 2*buff_size + 1)*l))
1601 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1608# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1610# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1611#if defined(MFC_OpenACC)
1612# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1614# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1615#elif defined(MFC_OpenMP)
1616# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1618# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1620# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1622# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1624# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1627# 878 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1629# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1633#ifdef MFC_SIMULATION
1634# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1635 if (rdma_mpi .eqv. .false.)
then
1636# 900 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1637 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1639# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1640#if defined(MFC_OpenACC)
1641# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1643# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1644#elif defined(MFC_OpenMP)
1645# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1647# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1650 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1652 call mpi_sendrecv( &
1653 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1654 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1655 mpi_comm_world, mpi_status_ignore, ierr)
1659 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1661# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1662#if defined(MFC_OpenACC)
1663# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1665# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1666#elif defined(MFC_OpenMP)
1667# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1669# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1672# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1674# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1675 if (rdma_mpi .eqv. .true.)
then
1676# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1678# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1680# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1681#if defined(MFC_OpenACC)
1682# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1684# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1685 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1686# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1688# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1689 call mpi_sendrecv( &
1690# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1691 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1692# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1693 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1694# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1695 mpi_comm_world, mpi_status_ignore, ierr)
1696# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1698# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1700# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1702# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1704# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1705#elif defined(MFC_OpenMP)
1706# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1708# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1709 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1710# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1712# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1713 call mpi_sendrecv( &
1714# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1715 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1716# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1717 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1718# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1719 mpi_comm_world, mpi_status_ignore, ierr)
1720# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1722# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1724# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1726# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1728# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1730# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1731 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1732# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1734# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1735 call mpi_sendrecv( &
1736# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1737 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1738# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1739 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1740# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1741 mpi_comm_world, mpi_status_ignore, ierr)
1742# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1744# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1746# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1748# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1750# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1752# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1753#if defined(MFC_OpenACC)
1754# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1756# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1757#elif defined(MFC_OpenMP)
1758# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1760# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1762# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1764# 918 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1766 call mpi_sendrecv( &
1767 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1768 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1769 mpi_comm_world, mpi_status_ignore, ierr)
1773 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1774# 928 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1775 if (mpi_dir == 1)
then
1776# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1778# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1780# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1781#if defined(MFC_OpenACC)
1782# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1784# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1785#elif defined(MFC_OpenMP)
1786# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1788# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1790# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1792# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1794# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1796# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1800 do j = -buff_size, -1
1803 (j + buff_size*((k + 1) + (n + 1)*l))
1804 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1805#if defined(__INTEL_COMPILER)
1806 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l)))
then
1807 print *,
"Error", j, k, l, i
1816# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1818# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1819#if defined(MFC_OpenACC)
1820# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1822# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1823#elif defined(MFC_OpenMP)
1824# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1826# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1828# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1830# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1832# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1837# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1839# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1840#if defined(MFC_OpenACC)
1841# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1843# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1844#elif defined(MFC_OpenMP)
1845# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1847# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1849# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1851# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1853# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1855# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1859 do j = -buff_size, -1
1860 do i = nvar + 1, nvar + 4
1862 r = (i - 1) + (q - 1)*4 +
v_size* &
1863 (j + buff_size*((k + 1) + (n + 1)*l))
1864 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1871# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1873# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1874#if defined(MFC_OpenACC)
1875# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1877# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1878#elif defined(MFC_OpenMP)
1879# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1881# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1883# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1885# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1887# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1891# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1893# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1894#if defined(MFC_OpenACC)
1895# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1897# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1898#elif defined(MFC_OpenMP)
1899# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1901# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1903# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1905# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1907# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1909# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1913 do j = -buff_size, -1
1914 do i = nvar + 1, nvar + 4
1916 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
1917 (j + buff_size*((k + 1) + (n + 1)*l))
1918 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1925# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1927# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1928#if defined(MFC_OpenACC)
1929# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1931# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1932#elif defined(MFC_OpenMP)
1933# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1935# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1937# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1939# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1941# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1944# 1102 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1946# 928 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1947 if (mpi_dir == 2)
then
1948# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1950# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1952# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1953#if defined(MFC_OpenACC)
1954# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1956# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1957#elif defined(MFC_OpenMP)
1958# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1960# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1962# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1964# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1966# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1968# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1972 do k = -buff_size, -1
1973 do j = -buff_size, m + buff_size
1975 ((j + buff_size) + (m + 2*buff_size + 1)* &
1976 ((k + buff_size) + buff_size*l))
1977 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1978#if defined(__INTEL_COMPILER)
1979 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l)))
then
1980 print *,
"Error", j, k, l, i
1989# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1991# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1992#if defined(MFC_OpenACC)
1993# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1995# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1996#elif defined(MFC_OpenMP)
1997# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1999# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2001# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2003# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2005# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2010# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2012# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2013#if defined(MFC_OpenACC)
2014# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2016# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2017#elif defined(MFC_OpenMP)
2018# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2020# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2022# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2024# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2026# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2028# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2030 do i = nvar + 1, nvar + 4
2032 do k = -buff_size, -1
2033 do j = -buff_size, m + buff_size
2035 r = (i - 1) + (q - 1)*4 +
v_size* &
2036 ((j + buff_size) + (m + 2*buff_size + 1)* &
2037 ((k + buff_size) + buff_size*l))
2038 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2045# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2047# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2048#if defined(MFC_OpenACC)
2049# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2051# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2052#elif defined(MFC_OpenMP)
2053# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2055# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2057# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2059# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2061# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2065# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2067# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2068#if defined(MFC_OpenACC)
2069# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2071# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2072#elif defined(MFC_OpenMP)
2073# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2075# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2077# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2079# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2081# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2083# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2085 do i = nvar + 1, nvar + 4
2087 do k = -buff_size, -1
2088 do j = -buff_size, m + buff_size
2090 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
2091 ((j + buff_size) + (m + 2*buff_size + 1)* &
2092 ((k + buff_size) + buff_size*l))
2093 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2100# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2102# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2103#if defined(MFC_OpenACC)
2104# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2106# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2107#elif defined(MFC_OpenMP)
2108# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2110# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2112# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2114# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2116# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2119# 1102 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2121# 928 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2122 if (mpi_dir == 3)
then
2123# 1041 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2126# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2128# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2129#if defined(MFC_OpenACC)
2130# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2132# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2133#elif defined(MFC_OpenMP)
2134# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2136# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2138# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2140# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2142# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2144# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2147 do l = -buff_size, -1
2148 do k = -buff_size, n + buff_size
2149 do j = -buff_size, m + buff_size
2151 ((j + buff_size) + (m + 2*buff_size + 1)* &
2152 ((k + buff_size) + (n + 2*buff_size + 1)* &
2154 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2155#if defined(__INTEL_COMPILER)
2156 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset)))
then
2157 print *,
"Error", j, k, l, i
2166# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2168# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2169#if defined(MFC_OpenACC)
2170# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2172# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2173#elif defined(MFC_OpenMP)
2174# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2176# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2178# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2180# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2182# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2187# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2189# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2190#if defined(MFC_OpenACC)
2191# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2193# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2194#elif defined(MFC_OpenMP)
2195# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2197# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2199# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2201# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2203# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2205# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2207 do i = nvar + 1, nvar + 4
2208 do l = -buff_size, -1
2209 do k = -buff_size, n + buff_size
2210 do j = -buff_size, m + buff_size
2212 r = (i - 1) + (q - 1)*4 +
v_size* &
2213 ((j + buff_size) + (m + 2*buff_size + 1)* &
2214 ((k + buff_size) + (n + 2*buff_size + 1)* &
2216 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2223# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2225# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2226#if defined(MFC_OpenACC)
2227# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2229# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2230#elif defined(MFC_OpenMP)
2231# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2233# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2235# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2237# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2239# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2243# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2245# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2246#if defined(MFC_OpenACC)
2247# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2249# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2250#elif defined(MFC_OpenMP)
2251# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2253# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2255# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2257# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2259# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2261# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2263 do i = nvar + 1, nvar + 4
2264 do l = -buff_size, -1
2265 do k = -buff_size, n + buff_size
2266 do j = -buff_size, m + buff_size
2268 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
2269 ((j + buff_size) + (m + 2*buff_size + 1)* &
2270 ((k + buff_size) + (n + 2*buff_size + 1)* &
2272 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2279# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2281# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2282#if defined(MFC_OpenACC)
2283# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2285# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2286#elif defined(MFC_OpenMP)
2287# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2289# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2291# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2293# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2295# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2298# 1102 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2300# 1104 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2316 integer :: num_procs_x, num_procs_y, num_procs_z
2319 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
2325 integer :: MPI_COMM_CART
2328 integer :: rem_cells
2332 integer :: recon_order
2338 if (recon_type == weno_type)
then
2339 recon_order = weno_order
2341 recon_order = muscl_order
2344 if (num_procs == 1 .and. parallel_io)
then
2352 recon_order = igr_order
2364 num_procs_z = num_procs
2368 tmp_num_procs_y = num_procs_y
2369 tmp_num_procs_z = num_procs_z
2370 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y &
2371 - (p + 1)/tmp_num_procs_z)
2376 if (mod(num_procs, i) == 0 &
2378 (n + 1)/i >= num_stcls_min*recon_order)
then
2381 tmp_num_procs_z = num_procs/i
2383 if (fct_min >= abs((n + 1)/tmp_num_procs_y &
2384 - (p + 1)/tmp_num_procs_z) &
2386 (p + 1)/tmp_num_procs_z &
2388 num_stcls_min*recon_order)
then
2391 num_procs_z = num_procs/i
2392 fct_min = abs((n + 1)/tmp_num_procs_y &
2393 - (p + 1)/tmp_num_procs_z)
2403 if (cyl_coord .and. p > 0)
then
2410 num_procs_y = num_procs
2415 tmp_num_procs_x = num_procs_x
2416 tmp_num_procs_y = num_procs_y
2417 tmp_num_procs_z = num_procs_z
2418 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
2419 - (n + 1)/tmp_num_procs_y)
2424 if (mod(num_procs, i) == 0 &
2426 (m + 1)/i >= num_stcls_min*recon_order)
then
2429 tmp_num_procs_y = num_procs/i
2431 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
2432 - (n + 1)/tmp_num_procs_y) &
2434 (n + 1)/tmp_num_procs_y &
2436 num_stcls_min*recon_order)
then
2439 num_procs_y = num_procs/i
2440 fct_min = abs((m + 1)/tmp_num_procs_x &
2441 - (n + 1)/tmp_num_procs_y)
2455 num_procs_z = num_procs
2459 tmp_num_procs_x = num_procs_x
2460 tmp_num_procs_y = num_procs_y
2461 tmp_num_procs_z = num_procs_z
2462 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
2463 - (n + 1)/tmp_num_procs_y) &
2464 + 10._wp*abs((n + 1)/tmp_num_procs_y &
2465 - (p + 1)/tmp_num_procs_z)
2470 if (mod(num_procs, i) == 0 &
2472 (m + 1)/i >= num_stcls_min*recon_order)
then
2474 do j = 1, num_procs/i
2476 if (mod(num_procs/i, j) == 0 &
2478 (n + 1)/j >= num_stcls_min*recon_order)
then
2482 tmp_num_procs_z = num_procs/(i*j)
2484 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
2485 - (n + 1)/tmp_num_procs_y) &
2486 + abs((n + 1)/tmp_num_procs_y &
2487 - (p + 1)/tmp_num_procs_z) &
2489 (p + 1)/tmp_num_procs_z &
2491 num_stcls_min*recon_order) &
2496 num_procs_z = num_procs/(i*j)
2497 fct_min = abs((m + 1)/tmp_num_procs_x &
2498 - (n + 1)/tmp_num_procs_y) &
2499 + abs((n + 1)/tmp_num_procs_y &
2500 - (p + 1)/tmp_num_procs_z)
2518 if (proc_rank == 0 .and. ierr == -1)
then
2519 call s_mpi_abort(
'Unsupported combination of values '// &
2520 'of num_procs, m, n, p and '// &
2521 'weno/muscl/igr_order. Exiting.')
2525 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, &
2526 num_procs_y, num_procs_z/), &
2527 (/.true., .true., .true./), &
2528 .false., mpi_comm_cart, ierr)
2531 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, &
2538 rem_cells = mod(p + 1, num_procs_z)
2541 p = (p + 1)/num_procs_z - 1
2545 if (proc_coords(3) == i - 1)
then
2551 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1))
then
2552 proc_coords(3) = proc_coords(3) - 1
2553 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
2555 proc_coords(3) = proc_coords(3) + 1
2559 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1))
then
2560 proc_coords(3) = proc_coords(3) + 1
2561 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
2563 proc_coords(3) = proc_coords(3) - 1
2566#ifdef MFC_POST_PROCESS
2568 if (proc_coords(3) > 0 .and.
format == 1)
then
2575 if (proc_coords(3) < num_procs_z - 1 .and.
format == 1)
then
2583 if (parallel_io)
then
2584 if (proc_coords(3) < rem_cells)
then
2585 start_idx(3) = (p + 1)*proc_coords(3)
2587 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
2590#ifdef MFC_PRE_PROCESS
2591 if (old_grid .neqv. .true.)
then
2592 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
2594 if (proc_coords(3) < rem_cells)
then
2595 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
2597 z_domain%end = z_domain%end - dz*real((p + 1)* &
2598 (num_procs_z - proc_coords(3) - 1) &
2599 - (num_procs_z - rem_cells))
2601 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
2602 proc_coords(3) + rem_cells)
2603 z_domain%end = z_domain%end - dz*real((p + 1)* &
2604 (num_procs_z - proc_coords(3) - 1))
2615 num_procs_y = num_procs
2619 tmp_num_procs_x = num_procs_x
2620 tmp_num_procs_y = num_procs_y
2621 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
2622 - (n + 1)/tmp_num_procs_y)
2627 if (mod(num_procs, i) == 0 &
2629 (m + 1)/i >= num_stcls_min*recon_order)
then
2632 tmp_num_procs_y = num_procs/i
2634 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
2635 - (n + 1)/tmp_num_procs_y) &
2637 (n + 1)/tmp_num_procs_y &
2639 num_stcls_min*recon_order)
then
2642 num_procs_y = num_procs/i
2643 fct_min = abs((m + 1)/tmp_num_procs_x &
2644 - (n + 1)/tmp_num_procs_y)
2655 if (proc_rank == 0 .and. ierr == -1)
then
2656 call s_mpi_abort(
'Unsupported combination of values '// &
2657 'of num_procs, m, n and '// &
2658 'weno/muscl/igr_order. Exiting.')
2662 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, &
2663 num_procs_y/), (/.true., &
2664 .true./), .false., mpi_comm_cart, &
2668 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, &
2677 rem_cells = mod(n + 1, num_procs_y)
2680 n = (n + 1)/num_procs_y - 1
2684 if (proc_coords(2) == i - 1)
then
2690 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1))
then
2691 proc_coords(2) = proc_coords(2) - 1
2692 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
2694 proc_coords(2) = proc_coords(2) + 1
2698 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1))
then
2699 proc_coords(2) = proc_coords(2) + 1
2700 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
2702 proc_coords(2) = proc_coords(2) - 1
2705#ifdef MFC_POST_PROCESS
2707 if (proc_coords(2) > 0 .and.
format == 1)
then
2714 if (proc_coords(2) < num_procs_y - 1 .and.
format == 1)
then
2722 if (parallel_io)
then
2723 if (proc_coords(2) < rem_cells)
then
2724 start_idx(2) = (n + 1)*proc_coords(2)
2726 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
2729#ifdef MFC_PRE_PROCESS
2730 if (old_grid .neqv. .true.)
then
2731 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
2733 if (proc_coords(2) < rem_cells)
then
2734 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
2736 y_domain%end = y_domain%end - dy*real((n + 1)* &
2737 (num_procs_y - proc_coords(2) - 1) &
2738 - (num_procs_y - rem_cells))
2740 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
2741 proc_coords(2) + rem_cells)
2742 y_domain%end = y_domain%end - dy*real((n + 1)* &
2743 (num_procs_y - proc_coords(2) - 1))
2753 num_procs_x = num_procs
2756 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), &
2757 (/.true./), .false., mpi_comm_cart, &
2761 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, &
2769 rem_cells = mod(m + 1, num_procs_x)
2772 m = (m + 1)/num_procs_x - 1
2776 if (proc_coords(1) == i - 1)
then
2781 call s_update_cell_bounds(cells_bounds, m, n, p)
2784 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1))
then
2785 proc_coords(1) = proc_coords(1) - 1
2786 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
2787 proc_coords(1) = proc_coords(1) + 1
2791 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1))
then
2792 proc_coords(1) = proc_coords(1) + 1
2793 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
2794 proc_coords(1) = proc_coords(1) - 1
2797#ifdef MFC_POST_PROCESS
2799 if (proc_coords(1) > 0 .and.
format == 1)
then
2806 if (proc_coords(1) < num_procs_x - 1 .and.
format == 1)
then
2814 if (parallel_io)
then
2815 if (proc_coords(1) < rem_cells)
then
2816 start_idx(1) = (m + 1)*proc_coords(1)
2818 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
2821#ifdef MFC_PRE_PROCESS
2822 if (old_grid .neqv. .true.)
then
2823 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
2825 if (proc_coords(1) < rem_cells)
then
2826 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
2828 x_domain%end = x_domain%end - dx*real((m + 1)* &
2829 (num_procs_x - proc_coords(1) - 1) &
2830 - (num_procs_x - rem_cells))
2832 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
2833 proc_coords(1) + rem_cells)
2834 x_domain%end = x_domain%end - dx*real((m + 1)* &
2835 (num_procs_x - proc_coords(1) - 1))
2855 integer,
intent(in) :: mpi_dir
2856 integer,
intent(in) :: pbc_loc
2862 if (mpi_dir == 1)
then
2864 if (pbc_loc == -1)
then
2866 if (bc_x%end >= 0)
then
2869 call mpi_sendrecv( &
2870 dx(m - buff_size + 1), buff_size, &
2871 mpi_p, bc_x%end, 0, &
2872 dx(-buff_size), buff_size, &
2873 mpi_p, bc_x%beg, 0, &
2874 mpi_comm_world, mpi_status_ignore, ierr)
2879 call mpi_sendrecv( &
2881 mpi_p, bc_x%beg, 1, &
2882 dx(-buff_size), buff_size, &
2883 mpi_p, bc_x%beg, 0, &
2884 mpi_comm_world, mpi_status_ignore, ierr)
2890 if (bc_x%beg >= 0)
then
2893 call mpi_sendrecv( &
2895 mpi_p, bc_x%beg, 1, &
2896 dx(m + 1), buff_size, &
2897 mpi_p, bc_x%end, 1, &
2898 mpi_comm_world, mpi_status_ignore, ierr)
2903 call mpi_sendrecv( &
2904 dx(m - buff_size + 1), buff_size, &
2905 mpi_p, bc_x%end, 0, &
2906 dx(m + 1), buff_size, &
2907 mpi_p, bc_x%end, 1, &
2908 mpi_comm_world, mpi_status_ignore, ierr)
2916 elseif (mpi_dir == 2)
then
2918 if (pbc_loc == -1)
then
2920 if (bc_y%end >= 0)
then
2923 call mpi_sendrecv( &
2924 dy(n - buff_size + 1), buff_size, &
2925 mpi_p, bc_y%end, 0, &
2926 dy(-buff_size), buff_size, &
2927 mpi_p, bc_y%beg, 0, &
2928 mpi_comm_world, mpi_status_ignore, ierr)
2933 call mpi_sendrecv( &
2935 mpi_p, bc_y%beg, 1, &
2936 dy(-buff_size), buff_size, &
2937 mpi_p, bc_y%beg, 0, &
2938 mpi_comm_world, mpi_status_ignore, ierr)
2944 if (bc_y%beg >= 0)
then
2947 call mpi_sendrecv( &
2949 mpi_p, bc_y%beg, 1, &
2950 dy(n + 1), buff_size, &
2951 mpi_p, bc_y%end, 1, &
2952 mpi_comm_world, mpi_status_ignore, ierr)
2957 call mpi_sendrecv( &
2958 dy(n - buff_size + 1), buff_size, &
2959 mpi_p, bc_y%end, 0, &
2960 dy(n + 1), buff_size, &
2961 mpi_p, bc_y%end, 1, &
2962 mpi_comm_world, mpi_status_ignore, ierr)
2972 if (pbc_loc == -1)
then
2974 if (bc_z%end >= 0)
then
2977 call mpi_sendrecv( &
2978 dz(p - buff_size + 1), buff_size, &
2979 mpi_p, bc_z%end, 0, &
2980 dz(-buff_size), buff_size, &
2981 mpi_p, bc_z%beg, 0, &
2982 mpi_comm_world, mpi_status_ignore, ierr)
2987 call mpi_sendrecv( &
2989 mpi_p, bc_z%beg, 1, &
2990 dz(-buff_size), buff_size, &
2991 mpi_p, bc_z%beg, 0, &
2992 mpi_comm_world, mpi_status_ignore, ierr)
2998 if (bc_z%beg >= 0)
then
3001 call mpi_sendrecv( &
3003 mpi_p, bc_z%beg, 1, &
3004 dz(p + 1), buff_size, &
3005 mpi_p, bc_z%end, 1, &
3006 mpi_comm_world, mpi_status_ignore, ierr)
3011 call mpi_sendrecv( &
3012 dz(p - buff_size + 1), buff_size, &
3013 mpi_p, bc_z%end, 0, &
3014 dz(p + 1), buff_size, &
3015 mpi_p, bc_z%end, 1, &
3016 mpi_comm_world, mpi_status_ignore, ierr)