518 type(scalar_field),
dimension(sys_size),
intent(in) ::
q_cons_vf
519 type(integer_field),
optional,
intent(in) :: ib_markers
520 type(scalar_field),
intent(in),
optional :: beta
522 integer,
dimension(num_dims) :: sizes_glb, sizes_loc
523 integer,
dimension(1) :: airfoil_glb, airfoil_loc, airfoil_start
534 if (
present(beta))
then
535 alt_sys = sys_size + 1
541 mpi_io_data%var(i)%sf =>
q_cons_vf(i)%sf(0:m, 0:n, 0:p)
544 if (
present(beta))
then
545 mpi_io_data%var(alt_sys)%sf => beta%sf(0:m, 0:n, 0:p)
549 if (qbmm .and. .not. polytropic)
then
552#ifdef MFC_PRE_PROCESS
553 mpi_io_data%var(sys_size + (i - 1)*nnode +
j)%sf => pb%sf(0:m, 0:n, 0:p,
j, i)
554 mpi_io_data%var(sys_size + (i - 1)*nnode +
j + nb*nnode)%sf => mv%sf(0:m, 0:n, 0:p,
j, i)
555#elif defined (MFC_SIMULATION)
556 mpi_io_data%var(sys_size + (i - 1)*nnode +
j)%sf => pb_ts(1)%sf(0:m, 0:n, 0:p,
j, i)
557 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)
564 sizes_glb(1) = m_glb + 1; sizes_loc(1) = m + 1
566 sizes_glb(2) = n_glb + 1; sizes_loc(2) = n + 1
568 sizes_glb(num_dims) = p_glb + 1; sizes_loc(num_dims) = p + 1
574 call mpi_type_create_subarray(num_dims, sizes_glb, sizes_loc, start_idx, &
575 mpi_order_fortran, mpi_p, mpi_io_data%view(i), ierr)
576 call mpi_type_commit(mpi_io_data%view(i), ierr)
579#ifndef MFC_POST_PROCESS
580 if (qbmm .and. .not. polytropic)
then
581 do i = sys_size + 1, sys_size + 2*nb*4
582 call mpi_type_create_subarray(num_dims, sizes_glb, sizes_loc, start_idx, &
583 mpi_order_fortran, mpi_p, mpi_io_data%view(i), ierr)
584 call mpi_type_commit(mpi_io_data%view(i), ierr)
590#ifndef MFC_PRE_PROCESS
591 if (
present(ib_markers))
then
592 mpi_io_ib_data%var%sf => ib_markers%sf(0:m, 0:n, 0:p)
594 call mpi_type_create_subarray(num_dims, sizes_glb, sizes_loc, start_idx, &
595 mpi_order_fortran, mpi_integer, mpi_io_ib_data%view, ierr)
596 call mpi_type_commit(mpi_io_ib_data%view, ierr)
1041 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
1042 real(stp),
optional,
dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:, 1:),
intent(inout) :: pb_in, mv_in
1043 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
1045 integer :: i, j, k, l, r, q
1047 integer :: buffer_counts(1:3), buffer_count
1049 type(int_bounds_info) :: boundary_conditions(1:3)
1050 integer :: beg_end(1:2), grid_dims(1:3)
1051 integer :: dst_proc, src_proc, recv_tag, send_tag
1053 logical :: beg_end_geq_0, qbmm_comm
1055 integer :: pack_offset, unpack_offset
1060 call nvtxstartrange(
"RHS-COMM-PACKBUF")
1064 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
1067 buffer_counts = (/ &
1068 buff_size*
v_size*(n + 1)*(p + 1), &
1069 buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1070 buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1) &
1074 buffer_counts = (/ &
1075 buff_size*
v_size*(n + 1)*(p + 1), &
1076 buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
1077 buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1) &
1082# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1083#if defined(MFC_OpenACC)
1084# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1086# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1087#elif defined(MFC_OpenMP)
1088# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1090# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1093 buffer_count = buffer_counts(mpi_dir)
1094 boundary_conditions = (/bc_x, bc_y, bc_z/)
1095 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
1096 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
1105 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
1106 recv_tag = f_logical_to_int(pbc_loc == 1)
1108 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
1109 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
1111 grid_dims = (/m, n, p/)
1114 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
1115 pack_offset = grid_dims(mpi_dir) - buff_size + 1
1119 if (pbc_loc == 1)
then
1120 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
1124# 727 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1125 if (mpi_dir == 1)
then
1126# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1131#if defined(MFC_OpenACC)
1132# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1134# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1135#elif defined(MFC_OpenMP)
1136# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1150 do j = 0, buff_size - 1
1152 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1153 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1159# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1161# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1162#if defined(MFC_OpenACC)
1163# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1165# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1166#elif defined(MFC_OpenMP)
1167# 740 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1180# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1182# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1183#if defined(MFC_OpenACC)
1184# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1186# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1187#elif defined(MFC_OpenMP)
1188# 743 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1202 do j = 0, buff_size - 1
1203 do i = nvar + 1, nvar + 4
1205 r = (i - 1) + (q - 1)*4 +
v_size* &
1206 (j + buff_size*(k + (n + 1)*l))
1207 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1214# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1216# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1217#if defined(MFC_OpenACC)
1218# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1220# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1221#elif defined(MFC_OpenMP)
1222# 757 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1234# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1236# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1237#if defined(MFC_OpenACC)
1238# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1240# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1241#elif defined(MFC_OpenMP)
1242# 759 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1256 do j = 0, buff_size - 1
1257 do i = nvar + 1, nvar + 4
1259 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
1260 (j + buff_size*(k + (n + 1)*l))
1261 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1268# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1270# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1271#if defined(MFC_OpenACC)
1272# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1274# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1275#elif defined(MFC_OpenMP)
1276# 773 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1287# 878 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1289# 727 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1290 if (mpi_dir == 2)
then
1291# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1296#if defined(MFC_OpenACC)
1297# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1299# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1300#elif defined(MFC_OpenMP)
1301# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1315 do k = 0, buff_size - 1
1316 do j = -buff_size, m + buff_size
1318 ((j + buff_size) + (m + 2*buff_size + 1)* &
1320 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1326# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1328# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1329#if defined(MFC_OpenACC)
1330# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1332# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1333#elif defined(MFC_OpenMP)
1334# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1347# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1349# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1350#if defined(MFC_OpenACC)
1351# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1353# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1354#elif defined(MFC_OpenMP)
1355# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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 do i = nvar + 1, nvar + 4
1369 do k = 0, buff_size - 1
1370 do j = -buff_size, m + buff_size
1372 r = (i - 1) + (q - 1)*4 +
v_size* &
1373 ((j + buff_size) + (m + 2*buff_size + 1)* &
1375 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1382# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1384# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1385#if defined(MFC_OpenACC)
1386# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1388# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1389#elif defined(MFC_OpenMP)
1390# 807 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1402# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1404# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1405#if defined(MFC_OpenACC)
1406# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1408# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1409#elif defined(MFC_OpenMP)
1410# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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 do i = nvar + 1, nvar + 4
1424 do k = 0, buff_size - 1
1425 do j = -buff_size, m + buff_size
1427 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
1428 ((j + buff_size) + (m + 2*buff_size + 1)* &
1430 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1437# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1439# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1440#if defined(MFC_OpenACC)
1441# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1443# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1444#elif defined(MFC_OpenMP)
1445# 824 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1456# 878 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1458# 727 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1459 if (mpi_dir == 3)
then
1460# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1465#if defined(MFC_OpenACC)
1466# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1468# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1469#elif defined(MFC_OpenMP)
1470# 827 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1483 do l = 0, buff_size - 1
1484 do k = -buff_size, n + buff_size
1485 do j = -buff_size, m + buff_size
1487 ((j + buff_size) + (m + 2*buff_size + 1)* &
1488 ((k + buff_size) + (n + 2*buff_size + 1)*l))
1489 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1495# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1497# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1498#if defined(MFC_OpenACC)
1499# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1501# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1502#elif defined(MFC_OpenMP)
1503# 840 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1516# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1518# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1519#if defined(MFC_OpenACC)
1520# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1522# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1523#elif defined(MFC_OpenMP)
1524# 843 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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 do i = nvar + 1, nvar + 4
1537 do l = 0, buff_size - 1
1538 do k = -buff_size, n + buff_size
1539 do j = -buff_size, m + buff_size
1541 r = (i - 1) + (q - 1)*4 +
v_size* &
1542 ((j + buff_size) + (m + 2*buff_size + 1)* &
1543 ((k + buff_size) + (n + 2*buff_size + 1)*l))
1544 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1551# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1553# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1554#if defined(MFC_OpenACC)
1555# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1557# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1558#elif defined(MFC_OpenMP)
1559# 858 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1571# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1573# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1574#if defined(MFC_OpenACC)
1575# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1577# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1578#elif defined(MFC_OpenMP)
1579# 860 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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 do i = nvar + 1, nvar + 4
1592 do l = 0, buff_size - 1
1593 do k = -buff_size, n + buff_size
1594 do j = -buff_size, m + buff_size
1596 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
1597 ((j + buff_size) + (m + 2*buff_size + 1)* &
1598 ((k + buff_size) + (n + 2*buff_size + 1)*l))
1599 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1606# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1608# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1609#if defined(MFC_OpenACC)
1610# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1612# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1613#elif defined(MFC_OpenMP)
1614# 875 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1625# 878 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1627# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1631#ifdef MFC_SIMULATION
1632# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1633 if (rdma_mpi .eqv. .false.)
then
1634# 900 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1635 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1637# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1638#if defined(MFC_OpenACC)
1639# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1641# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1642#elif defined(MFC_OpenMP)
1643# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1645# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1648 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1650 call mpi_sendrecv( &
1651 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1652 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1653 mpi_comm_world, mpi_status_ignore, ierr)
1657 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1659# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1660#if defined(MFC_OpenACC)
1661# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1663# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1664#elif defined(MFC_OpenMP)
1665# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1667# 913 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1670# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1672# 885 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1673 if (rdma_mpi .eqv. .true.)
then
1674# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1679#if defined(MFC_OpenACC)
1680# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1682# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1683 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1684# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1686# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1687 call mpi_sendrecv( &
1688# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1689 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1690# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1691 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1692# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1693 mpi_comm_world, mpi_status_ignore, ierr)
1694# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1703#elif defined(MFC_OpenMP)
1704# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1706# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1707 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1708# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1710# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1711 call mpi_sendrecv( &
1712# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1713 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1714# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1715 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1716# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1717 mpi_comm_world, mpi_status_ignore, ierr)
1718# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1729 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1730# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1732# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1733 call mpi_sendrecv( &
1734# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1735 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1736# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1737 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1738# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1739 mpi_comm_world, mpi_status_ignore, ierr)
1740# 887 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1750# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1751#if defined(MFC_OpenACC)
1752# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1754# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1755#elif defined(MFC_OpenMP)
1756# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1758# 898 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1760# 916 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1762# 918 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1764 call mpi_sendrecv( &
1765 buff_send, buffer_count, mpi_p, dst_proc, send_tag, &
1766 buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1767 mpi_comm_world, mpi_status_ignore, ierr)
1771 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1772# 928 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1773 if (mpi_dir == 1)
then
1774# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1779#if defined(MFC_OpenACC)
1780# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1782# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1783#elif defined(MFC_OpenMP)
1784# 930 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1798 do j = -buff_size, -1
1801 (j + buff_size*((k + 1) + (n + 1)*l))
1802 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1803#if defined(__INTEL_COMPILER)
1804 if (ieee_is_nan(q_comm(i)%sf(j, k, l)))
then
1805 print *,
"Error", j, k, l, i
1806 error stop
"NaN(s) in recv"
1814# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1816# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1817#if defined(MFC_OpenACC)
1818# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1820# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1821#elif defined(MFC_OpenMP)
1822# 948 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1835# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1837# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1838#if defined(MFC_OpenACC)
1839# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1841# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1842#elif defined(MFC_OpenMP)
1843# 951 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1857 do j = -buff_size, -1
1858 do i = nvar + 1, nvar + 4
1860 r = (i - 1) + (q - 1)*4 +
v_size* &
1861 (j + buff_size*((k + 1) + (n + 1)*l))
1862 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1869# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1871# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1872#if defined(MFC_OpenACC)
1873# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1875# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1876#elif defined(MFC_OpenMP)
1877# 965 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1889# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1891# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1892#if defined(MFC_OpenACC)
1893# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1895# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1896#elif defined(MFC_OpenMP)
1897# 967 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1911 do j = -buff_size, -1
1912 do i = nvar + 1, nvar + 4
1914 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
1915 (j + buff_size*((k + 1) + (n + 1)*l))
1916 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1923# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1925# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1926#if defined(MFC_OpenACC)
1927# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1929# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1930#elif defined(MFC_OpenMP)
1931# 981 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1942# 1102 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1944# 928 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1945 if (mpi_dir == 2)
then
1946# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1951#if defined(MFC_OpenACC)
1952# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1954# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1955#elif defined(MFC_OpenMP)
1956# 984 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
1970 do k = -buff_size, -1
1971 do j = -buff_size, m + buff_size
1973 ((j + buff_size) + (m + 2*buff_size + 1)* &
1974 ((k + buff_size) + buff_size*l))
1975 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1976#if defined(__INTEL_COMPILER)
1977 if (ieee_is_nan(q_comm(i)%sf(j, k, l)))
then
1978 print *,
"Error", j, k, l, i
1979 error stop
"NaN(s) in recv"
1987# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1989# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1990#if defined(MFC_OpenACC)
1991# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1993# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1994#elif defined(MFC_OpenMP)
1995# 1003 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
2008# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2010# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2011#if defined(MFC_OpenACC)
2012# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2014# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2015#elif defined(MFC_OpenMP)
2016# 1006 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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 do i = nvar + 1, nvar + 4
2030 do k = -buff_size, -1
2031 do j = -buff_size, m + buff_size
2033 r = (i - 1) + (q - 1)*4 +
v_size* &
2034 ((j + buff_size) + (m + 2*buff_size + 1)* &
2035 ((k + buff_size) + buff_size*l))
2036 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2043# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2045# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2046#if defined(MFC_OpenACC)
2047# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2049# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2050#elif defined(MFC_OpenMP)
2051# 1021 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
2063# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2065# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2066#if defined(MFC_OpenACC)
2067# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2069# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2070#elif defined(MFC_OpenMP)
2071# 1023 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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 do i = nvar + 1, nvar + 4
2085 do k = -buff_size, -1
2086 do j = -buff_size, m + buff_size
2088 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
2089 ((j + buff_size) + (m + 2*buff_size + 1)* &
2090 ((k + buff_size) + buff_size*l))
2091 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
2098# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2100# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2101#if defined(MFC_OpenACC)
2102# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2104# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2105#elif defined(MFC_OpenMP)
2106# 1038 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
2117# 1102 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2119# 928 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2120 if (mpi_dir == 3)
then
2121# 1041 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2124# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2126# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2127#if defined(MFC_OpenACC)
2128# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2130# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2131#elif defined(MFC_OpenMP)
2132# 1042 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
2145 do l = -buff_size, -1
2146 do k = -buff_size, n + buff_size
2147 do j = -buff_size, m + buff_size
2149 ((j + buff_size) + (m + 2*buff_size + 1)* &
2150 ((k + buff_size) + (n + 2*buff_size + 1)* &
2152 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
2153#if defined(__INTEL_COMPILER)
2154 if (ieee_is_nan(q_comm(i)%sf(j, k, l)))
then
2155 print *,
"Error", j, k, l, i
2156 error stop
"NaN(s) in recv"
2164# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2166# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2167#if defined(MFC_OpenACC)
2168# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2170# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2171#elif defined(MFC_OpenMP)
2172# 1062 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
2185# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2187# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2188#if defined(MFC_OpenACC)
2189# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2191# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2192#elif defined(MFC_OpenMP)
2193# 1065 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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 do i = nvar + 1, nvar + 4
2206 do l = -buff_size, -1
2207 do k = -buff_size, n + buff_size
2208 do j = -buff_size, m + buff_size
2210 r = (i - 1) + (q - 1)*4 +
v_size* &
2211 ((j + buff_size) + (m + 2*buff_size + 1)* &
2212 ((k + buff_size) + (n + 2*buff_size + 1)* &
2214 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2221# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2223# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2224#if defined(MFC_OpenACC)
2225# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2227# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2228#elif defined(MFC_OpenMP)
2229# 1081 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
2241# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2243# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2244#if defined(MFC_OpenACC)
2245# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2247# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2248#elif defined(MFC_OpenMP)
2249# 1083 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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 do i = nvar + 1, nvar + 4
2262 do l = -buff_size, -1
2263 do k = -buff_size, n + buff_size
2264 do j = -buff_size, m + buff_size
2266 r = (i - 1) + (q - 1)*4 + nb*4 +
v_size* &
2267 ((j + buff_size) + (m + 2*buff_size + 1)* &
2268 ((k + buff_size) + (n + 2*buff_size + 1)* &
2270 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
2277# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2279# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2280#if defined(MFC_OpenACC)
2281# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2283# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2284#elif defined(MFC_OpenMP)
2285# 1099 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
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"
2296# 1102 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2298# 1104 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
2314 integer :: num_procs_x, num_procs_y, num_procs_z
2317 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
2323 integer :: MPI_COMM_CART
2326 integer :: rem_cells
2330 integer :: recon_order
2336 if (recon_type == weno_type)
then
2337 recon_order = weno_order
2339 recon_order = muscl_order
2342 if (num_procs == 1 .and. parallel_io)
then
2350 recon_order = igr_order
2352 recon_order = weno_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)