513 type(scalar_field),
dimension(sys_size),
intent(in) ::
q_cons_vf
514 type(integer_field),
optional,
intent(in) :: ib_markers
515 type(scalar_field),
intent(in),
optional :: beta
516 integer,
dimension(num_dims) :: sizes_glb, sizes_loc
517 integer,
dimension(1) :: airfoil_glb, airfoil_loc, airfoil_start
524 if (
present(beta))
then
525 alt_sys = sys_size + 1
531 mpi_io_data%var(i)%sf =>
q_cons_vf(i)%sf(0:m,0:n,0:p)
534 if (
present(beta))
then
535 mpi_io_data%var(alt_sys)%sf => beta%sf(0:m,0:n,0:p)
539 if (qbmm .and. .not. polytropic)
then
542#ifdef MFC_PRE_PROCESS
543 mpi_io_data%var(sys_size + (i - 1)*nnode +
j)%sf => pb%sf(0:m,0:n,0:p,
j, i)
544 mpi_io_data%var(sys_size + (i - 1)*nnode +
j + nb*nnode)%sf => mv%sf(0:m,0:n,0:p,
j, i)
545#elif defined (MFC_SIMULATION)
546 mpi_io_data%var(sys_size + (i - 1)*nnode +
j)%sf => pb_ts(1)%sf(0:m,0:n,0:p,
j, i)
547 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)
554 sizes_glb(1) = m_glb + 1; sizes_loc(1) = m + 1
556 sizes_glb(2) = n_glb + 1; sizes_loc(2) = n + 1
558 sizes_glb(num_dims) = p_glb + 1; sizes_loc(num_dims) = p + 1
564 call mpi_type_create_subarray(num_dims, sizes_glb, sizes_loc, start_idx, mpi_order_fortran, mpi_p, &
565 & mpi_io_data%view(i), ierr)
566 call mpi_type_commit(mpi_io_data%view(i), ierr)
569#ifndef MFC_POST_PROCESS
570 if (qbmm .and. .not. polytropic)
then
571 do i = sys_size + 1, sys_size + 2*nb*nnode
572 call mpi_type_create_subarray(num_dims, sizes_glb, sizes_loc, start_idx, mpi_order_fortran, mpi_p, &
573 & mpi_io_data%view(i), ierr)
574 call mpi_type_commit(mpi_io_data%view(i), ierr)
579#ifndef MFC_PRE_PROCESS
580 if (
present(ib_markers))
then
581 mpi_io_ib_data%var%sf => ib_markers%sf(0:m,0:n,0:p)
583 call mpi_type_create_subarray(num_dims, sizes_glb, sizes_loc, start_idx, mpi_order_fortran, mpi_integer, &
584 & mpi_io_ib_data%view, ierr)
585 call mpi_type_commit(mpi_io_ib_data%view, ierr)
907 type(scalar_field),
dimension(1:),
intent(inout) :: q_comm
908 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
909 integer,
intent(in) :: mpi_dir, pbc_loc, nVar
910 integer :: i, j, k, l, r, q
911 integer :: buffer_counts(1:3), buffer_count
912 type(int_bounds_info) :: boundary_conditions(1:3)
913 integer :: beg_end(1:2), grid_dims(1:3)
914 integer :: dst_proc, src_proc, recv_tag, send_tag
915 logical :: beg_end_geq_0, qbmm_comm
916 integer :: pack_offset, unpack_offset
921 call nvtxstartrange(
"RHS-COMM-PACKBUF")
925 if (
present(pb_in) .and.
present(mv_in) .and. qbmm .and. .not. polytropic)
then
927 v_size = nvar + 2*nb*nnode
928 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
929 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
932 buffer_counts = (/buff_size*
v_size*(n + 1)*(p + 1), buff_size*
v_size*(m + 2*buff_size + 1)*(p + 1), &
933 & buff_size*
v_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)/)
937# 523 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
938#if defined(MFC_OpenACC)
939# 523 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
941# 523 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
942#elif defined(MFC_OpenMP)
943# 523 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
945# 523 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
948 buffer_count = buffer_counts(mpi_dir)
949 boundary_conditions = (/bc_x, bc_y, bc_z/)
950 beg_end = (/boundary_conditions(mpi_dir)%beg, boundary_conditions(mpi_dir)%end/)
951 beg_end_geq_0 = beg_end(max(pbc_loc, 0) - pbc_loc + 1) >= 0
957 send_tag = f_logical_to_int(.not. f_xor(beg_end_geq_0, pbc_loc == 1))
958 recv_tag = f_logical_to_int(pbc_loc == 1)
960 dst_proc = beg_end(1 + f_logical_to_int(f_xor(pbc_loc == 1, beg_end_geq_0)))
961 src_proc = beg_end(1 + f_logical_to_int(pbc_loc == 1))
963 grid_dims = (/m, n, p/)
966 if (f_xor(pbc_loc == 1, beg_end_geq_0))
then
967 pack_offset = grid_dims(mpi_dir) - buff_size + 1
971 if (pbc_loc == 1)
then
972 unpack_offset = grid_dims(mpi_dir) + buff_size + 1
976# 554 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
977 if (mpi_dir == 1)
then
978# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
980# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
982# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
983#if defined(MFC_OpenACC)
984# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
986# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
987#elif defined(MFC_OpenMP)
988# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
990# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
992# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
994# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
996# 556 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1000 do j = 0, buff_size - 1
1002 r = (i - 1) +
v_size*(j + buff_size*(k + (n + 1)*l))
1003 buff_send(r) = real(q_comm(i)%sf(j + pack_offset, k, l), kind=wp)
1009# 567 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1010#if defined(MFC_OpenACC)
1011# 567 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1013# 567 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1014#elif defined(MFC_OpenMP)
1015# 567 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1017# 567 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1019# 567 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1024# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1026# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1027#if defined(MFC_OpenACC)
1028# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1030# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1031#elif defined(MFC_OpenMP)
1032# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1034# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1036# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1038# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1040# 570 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1044 do j = 0, buff_size - 1
1045 do i = nvar + 1, nvar + nnode
1047 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1048 buff_send(r) = real(pb_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1055# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1056#if defined(MFC_OpenACC)
1057# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1059# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1060#elif defined(MFC_OpenMP)
1061# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1063# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1065# 583 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1069# 585 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1071# 585 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1072#if defined(MFC_OpenACC)
1073# 585 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1075# 585 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1076#elif defined(MFC_OpenMP)
1077# 585 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1079# 585 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1081# 585 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1083# 585 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1085# 585 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1089 do j = 0, buff_size - 1
1090 do i = nvar + 1, nvar + nnode
1092 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*(k + (n + 1)*l))
1093 buff_send(r) = real(mv_in(j + pack_offset, k, l, i - nvar, q), kind=wp)
1100# 598 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1101#if defined(MFC_OpenACC)
1102# 598 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1104# 598 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1105#elif defined(MFC_OpenMP)
1106# 598 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1108# 598 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1110# 598 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1113# 696 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1115# 554 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1116 if (mpi_dir == 2)
then
1117# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1119# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1121# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1122#if defined(MFC_OpenACC)
1123# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1125# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1126#elif defined(MFC_OpenMP)
1127# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1129# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1131# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1133# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1135# 601 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1139 do k = 0, buff_size - 1
1140 do j = -buff_size, m + buff_size
1141 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k + buff_size*l))
1142 buff_send(r) = real(q_comm(i)%sf(j, k + pack_offset, l), kind=wp)
1148# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1149#if defined(MFC_OpenACC)
1150# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1152# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1153#elif defined(MFC_OpenMP)
1154# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1156# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1158# 612 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1163# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1165# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1166#if defined(MFC_OpenACC)
1167# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1169# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1170#elif defined(MFC_OpenMP)
1171# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1173# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1175# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1177# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1179# 615 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1181 do i = nvar + 1, nvar + nnode
1183 do k = 0, buff_size - 1
1184 do j = -buff_size, m + buff_size
1186 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*(k &
1188 buff_send(r) = real(pb_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1195# 629 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1196#if defined(MFC_OpenACC)
1197# 629 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1199# 629 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1200#elif defined(MFC_OpenMP)
1201# 629 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1203# 629 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1205# 629 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1209# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1211# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1212#if defined(MFC_OpenACC)
1213# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1215# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1216#elif defined(MFC_OpenMP)
1217# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1219# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1221# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1223# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1225# 631 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1227 do i = nvar + 1, nvar + nnode
1229 do k = 0, buff_size - 1
1230 do j = -buff_size, m + buff_size
1232 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1233 & + 1)*(k + buff_size*l))
1234 buff_send(r) = real(mv_in(j, k + pack_offset, l, i - nvar, q), kind=wp)
1241# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1242#if defined(MFC_OpenACC)
1243# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1245# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1246#elif defined(MFC_OpenMP)
1247# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1249# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1251# 645 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1254# 696 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1256# 554 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1257 if (mpi_dir == 3)
then
1258# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1260# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1262# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1263#if defined(MFC_OpenACC)
1264# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1266# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1267#elif defined(MFC_OpenMP)
1268# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1270# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1272# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1274# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1276# 648 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1279 do l = 0, buff_size - 1
1280 do k = -buff_size, n + buff_size
1281 do j = -buff_size, m + buff_size
1282 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1283 & + 2*buff_size + 1)*l))
1284 buff_send(r) = real(q_comm(i)%sf(j, k, l + pack_offset), kind=wp)
1290# 660 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1291#if defined(MFC_OpenACC)
1292# 660 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1294# 660 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1295#elif defined(MFC_OpenMP)
1296# 660 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1298# 660 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1300# 660 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1305# 663 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1307# 663 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1308#if defined(MFC_OpenACC)
1309# 663 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1311# 663 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1312#elif defined(MFC_OpenMP)
1313# 663 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1315# 663 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1317# 663 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1319# 663 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1321# 663 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1323 do i = nvar + 1, nvar + nnode
1324 do l = 0, buff_size - 1
1325 do k = -buff_size, n + buff_size
1326 do j = -buff_size, m + buff_size
1328 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1329 & + buff_size) + (n + 2*buff_size + 1)*l))
1330 buff_send(r) = real(pb_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1337# 677 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1338#if defined(MFC_OpenACC)
1339# 677 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1341# 677 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1342#elif defined(MFC_OpenMP)
1343# 677 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1345# 677 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1347# 677 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1351# 679 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1353# 679 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1354#if defined(MFC_OpenACC)
1355# 679 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1357# 679 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1358#elif defined(MFC_OpenMP)
1359# 679 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1361# 679 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1363# 679 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1365# 679 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1367# 679 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1369 do i = nvar + 1, nvar + nnode
1370 do l = 0, buff_size - 1
1371 do k = -buff_size, n + buff_size
1372 do j = -buff_size, m + buff_size
1374 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1375 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*l))
1376 buff_send(r) = real(mv_in(j, k, l + pack_offset, i - nvar, q), kind=wp)
1383# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1384#if defined(MFC_OpenACC)
1385# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1387# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1388#elif defined(MFC_OpenMP)
1389# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1391# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1393# 693 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1396# 696 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1398# 698 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1402#ifdef MFC_SIMULATION
1403# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1404 if (rdma_mpi .eqv. .false.)
then
1405# 715 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1406 call nvtxstartrange(
"RHS-COMM-DEV2HOST")
1408# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1409#if defined(MFC_OpenACC)
1410# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1412# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1413#elif defined(MFC_OpenMP)
1414# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1416# 716 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1419 call nvtxstartrange(
"RHS-COMM-SENDRECV-NO-RMDA")
1421 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1422 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1426 call nvtxstartrange(
"RHS-COMM-HOST2DEV")
1428# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1429#if defined(MFC_OpenACC)
1430# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1432# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1433#elif defined(MFC_OpenMP)
1434# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1436# 726 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1439# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1441# 703 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1442 if (rdma_mpi .eqv. .true.)
then
1443# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1445# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1446#if defined(MFC_OpenACC)
1447# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1449# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1450 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1451# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1453# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1454 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1455# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1456 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1457# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1459# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1461# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1463# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1464#elif defined(MFC_OpenMP)
1465# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1467# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1468 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1469# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1471# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1472 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1473# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1474 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1475# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1477# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1479# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1481# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1483# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1484 call nvtxstartrange(
"RHS-COMM-SENDRECV-RDMA")
1485# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1487# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1488 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, &
1489# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1490 & src_proc, recv_tag, mpi_comm_world, mpi_status_ignore, ierr)
1491# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1493# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1495# 705 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1497# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1499# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1500#if defined(MFC_OpenACC)
1501# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1503# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1504#elif defined(MFC_OpenMP)
1505# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1507# 713 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1509# 729 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1511# 731 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1513 call mpi_sendrecv(
buff_send, buffer_count, mpi_p, dst_proc, send_tag,
buff_recv, buffer_count, mpi_p, src_proc, recv_tag, &
1514 & mpi_comm_world, mpi_status_ignore, ierr)
1518 call nvtxstartrange(
"RHS-COMM-UNPACKBUF")
1519# 739 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1520 if (mpi_dir == 1)
then
1521# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1523# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1525# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1526#if defined(MFC_OpenACC)
1527# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1529# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1530#elif defined(MFC_OpenMP)
1531# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1533# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1535# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1537# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1539# 741 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1543 do j = -buff_size, -1
1545 r = (i - 1) +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1546 q_comm(i)%sf(j + unpack_offset, k, l) = real(
buff_recv(r), kind=stp)
1547#if defined(__INTEL_COMPILER)
1548 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l)))
then
1549 print *,
"Error", j, k, l, i
1558# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1559#if defined(MFC_OpenACC)
1560# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1562# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1563#elif defined(MFC_OpenMP)
1564# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1566# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1568# 758 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1573# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1575# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1576#if defined(MFC_OpenACC)
1577# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1579# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1580#elif defined(MFC_OpenMP)
1581# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1583# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1585# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1587# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1589# 761 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1593 do j = -buff_size, -1
1594 do i = nvar + 1, nvar + nnode
1596 r = (i - 1) + (q - 1)*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1597 pb_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1604# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1605#if defined(MFC_OpenACC)
1606# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1608# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1609#elif defined(MFC_OpenMP)
1610# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1612# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1614# 774 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1618# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1620# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1621#if defined(MFC_OpenACC)
1622# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1624# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1625#elif defined(MFC_OpenMP)
1626# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1628# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1630# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1632# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1634# 776 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1638 do j = -buff_size, -1
1639 do i = nvar + 1, nvar + nnode
1641 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*(j + buff_size*((k + 1) + (n + 1)*l))
1642 mv_in(j + unpack_offset, k, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1649# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1650#if defined(MFC_OpenACC)
1651# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1653# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1654#elif defined(MFC_OpenMP)
1655# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1657# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1659# 789 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1662# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1664# 739 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1665 if (mpi_dir == 2)
then
1666# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1668# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1670# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1671#if defined(MFC_OpenACC)
1672# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1674# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1675#elif defined(MFC_OpenMP)
1676# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1678# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1680# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1682# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1684# 792 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1688 do k = -buff_size, -1
1689 do j = -buff_size, m + buff_size
1690 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + buff_size*l))
1691 q_comm(i)%sf(j, k + unpack_offset, l) = real(
buff_recv(r), kind=stp)
1692#if defined(__INTEL_COMPILER)
1693 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l)))
then
1694 print *,
"Error", j, k, l, i
1703# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1704#if defined(MFC_OpenACC)
1705# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1707# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1708#elif defined(MFC_OpenMP)
1709# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1711# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1713# 809 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1718# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1720# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1721#if defined(MFC_OpenACC)
1722# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1724# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1725#elif defined(MFC_OpenMP)
1726# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1728# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1730# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1732# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1734# 812 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1736 do i = nvar + 1, nvar + nnode
1738 do k = -buff_size, -1
1739 do j = -buff_size, m + buff_size
1741 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1742 & + buff_size) + buff_size*l))
1743 pb_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1750# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1751#if defined(MFC_OpenACC)
1752# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1754# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1755#elif defined(MFC_OpenMP)
1756# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1758# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1760# 826 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1764# 828 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1766# 828 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1767#if defined(MFC_OpenACC)
1768# 828 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1770# 828 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1771#elif defined(MFC_OpenMP)
1772# 828 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1774# 828 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1776# 828 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1778# 828 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1780# 828 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1782 do i = nvar + 1, nvar + nnode
1784 do k = -buff_size, -1
1785 do j = -buff_size, m + buff_size
1787 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1788 & + 1)*((k + buff_size) + buff_size*l))
1789 mv_in(j, k + unpack_offset, l, i - nvar, q) = real(
buff_recv(r), kind=stp)
1796# 842 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1797#if defined(MFC_OpenACC)
1798# 842 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1800# 842 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1801#elif defined(MFC_OpenMP)
1802# 842 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1804# 842 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1806# 842 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1809# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1811# 739 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1812 if (mpi_dir == 3)
then
1813# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1815# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1817# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1818#if defined(MFC_OpenACC)
1819# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1821# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1822#elif defined(MFC_OpenMP)
1823# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1825# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1827# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1829# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1831# 845 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1834 do l = -buff_size, -1
1835 do k = -buff_size, n + buff_size
1836 do j = -buff_size, m + buff_size
1837 r = (i - 1) +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k + buff_size) + (n &
1838 & + 2*buff_size + 1)*(l + buff_size)))
1839 q_comm(i)%sf(j, k, l + unpack_offset) = real(
buff_recv(r), kind=stp)
1840#if defined(__INTEL_COMPILER)
1841 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset)))
then
1842 print *,
"Error", j, k, l, i
1851# 863 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1852#if defined(MFC_OpenACC)
1853# 863 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1855# 863 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1856#elif defined(MFC_OpenMP)
1857# 863 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1859# 863 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1861# 863 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1866# 866 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1868# 866 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1869#if defined(MFC_OpenACC)
1870# 866 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1872# 866 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1873#elif defined(MFC_OpenMP)
1874# 866 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1876# 866 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1878# 866 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1880# 866 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1882# 866 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1884 do i = nvar + 1, nvar + nnode
1885 do l = -buff_size, -1
1886 do k = -buff_size, n + buff_size
1887 do j = -buff_size, m + buff_size
1889 r = (i - 1) + (q - 1)*nnode +
v_size*((j + buff_size) + (m + 2*buff_size + 1)*((k &
1890 & + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
1891 pb_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
1898# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1899#if defined(MFC_OpenACC)
1900# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1902# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1903#elif defined(MFC_OpenMP)
1904# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1906# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1908# 880 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1912# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1914# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1915#if defined(MFC_OpenACC)
1916# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1918# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1919#elif defined(MFC_OpenMP)
1920# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1922# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1924# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1926# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1928# 882 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1930 do i = nvar + 1, nvar + nnode
1931 do l = -buff_size, -1
1932 do k = -buff_size, n + buff_size
1933 do j = -buff_size, m + buff_size
1935 r = (i - 1) + (q - 1)*nnode + nb*nnode +
v_size*((j + buff_size) + (m + 2*buff_size &
1936 & + 1)*((k + buff_size) + (n + 2*buff_size + 1)*(l + buff_size)))
1937 mv_in(j, k, l + unpack_offset, i - nvar, q) = real(
buff_recv(r), kind=stp)
1944# 896 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1945#if defined(MFC_OpenACC)
1946# 896 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1948# 896 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1949#elif defined(MFC_OpenMP)
1950# 896 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1952# 896 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1954# 896 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1957# 899 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1959# 901 "/home/runner/work/MFC/MFC/src/common/m_mpi_common.fpp"
1969 integer :: num_procs_x, num_procs_y, num_procs_z
1971 real(wp) :: tmp_num_procs_x, tmp_num_procs_y, tmp_num_procs_z
1973 integer :: MPI_COMM_CART
1974 integer :: rem_cells
1975 integer :: recon_order
1979 if (recon_type == weno_type)
then
1980 recon_order = weno_order
1982 recon_order = muscl_order
1985 if (num_procs == 1 .and. parallel_io)
then
1993 recon_order = igr_order
2003 num_procs_z = num_procs
2007 tmp_num_procs_y = num_procs_y
2008 tmp_num_procs_z = num_procs_z
2009 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2013 if (mod(num_procs, i) == 0 .and. (n + 1)/i >= num_stcls_min*recon_order)
then
2015 tmp_num_procs_z = num_procs/i
2017 if (fct_min >= abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2018 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2020 num_procs_z = num_procs/i
2021 fct_min = abs((n + 1)/tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2027 if (cyl_coord .and. p > 0)
then
2032 num_procs_y = num_procs
2037 tmp_num_procs_x = num_procs_x
2038 tmp_num_procs_y = num_procs_y
2039 tmp_num_procs_z = num_procs_z
2040 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2044 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2046 tmp_num_procs_y = num_procs/i
2048 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2049 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2051 num_procs_y = num_procs/i
2052 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2061 num_procs_z = num_procs
2065 tmp_num_procs_x = num_procs_x
2066 tmp_num_procs_y = num_procs_y
2067 tmp_num_procs_z = num_procs_z
2068 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + 10._wp*abs((n + 1) &
2069 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2073 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2074 do j = 1, num_procs/i
2075 if (mod(num_procs/i, j) == 0 .and. (n + 1)/j >= num_stcls_min*recon_order)
then
2078 tmp_num_procs_z = num_procs/(i*j)
2080 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
2081 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z) .and. (p + 1) &
2082 & /tmp_num_procs_z >= num_stcls_min*recon_order)
then
2085 num_procs_z = num_procs/(i*j)
2086 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) + abs((n + 1) &
2087 & /tmp_num_procs_y - (p + 1)/tmp_num_procs_z)
2099 if (proc_rank == 0 .and. ierr == -1)
then
2100 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n, p and ' &
2101 & //
'weno/muscl/igr_order. Exiting.')
2105 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, num_procs_y, num_procs_z/), (/.true., .true., .true./), &
2106 & .false., mpi_comm_cart, ierr)
2109 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, proc_coords, ierr)
2114 rem_cells = mod(p + 1, num_procs_z)
2117 p = (p + 1)/num_procs_z - 1
2121 if (proc_coords(3) == i - 1)
then
2127 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1))
then
2128 proc_coords(3) = proc_coords(3) - 1
2129 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%beg, ierr)
2130 proc_coords(3) = proc_coords(3) + 1
2134 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1))
then
2135 proc_coords(3) = proc_coords(3) + 1
2136 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_z%end, ierr)
2137 proc_coords(3) = proc_coords(3) - 1
2140#ifdef MFC_POST_PROCESS
2142 if (proc_coords(3) > 0 .and.
format == 1)
then
2149 if (proc_coords(3) < num_procs_z - 1 .and.
format == 1)
then
2157 if (parallel_io)
then
2158 if (proc_coords(3) < rem_cells)
then
2159 start_idx(3) = (p + 1)*proc_coords(3)
2161 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
2164#ifdef MFC_PRE_PROCESS
2165 if (old_grid .neqv. .true.)
then
2166 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
2168 if (proc_coords(3) < rem_cells)
then
2169 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3))
2170 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1) - (num_procs_z &
2173 z_domain%beg = z_domain%beg + dz*real((p + 1)*proc_coords(3) + rem_cells)
2174 z_domain%end = z_domain%end - dz*real((p + 1)*(num_procs_z - proc_coords(3) - 1))
2184 num_procs_y = num_procs
2188 tmp_num_procs_x = num_procs_x
2189 tmp_num_procs_y = num_procs_y
2190 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2194 if (mod(num_procs, i) == 0 .and. (m + 1)/i >= num_stcls_min*recon_order)
then
2196 tmp_num_procs_y = num_procs/i
2198 if (fct_min >= abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y) .and. (n + 1) &
2199 & /tmp_num_procs_y >= num_stcls_min*recon_order)
then
2201 num_procs_y = num_procs/i
2202 fct_min = abs((m + 1)/tmp_num_procs_x - (n + 1)/tmp_num_procs_y)
2210 if (proc_rank == 0 .and. ierr == -1)
then
2211 call s_mpi_abort(
'Unsupported combination of values ' //
'of num_procs, m, n and ' &
2212 & //
'weno/muscl/igr_order. Exiting.')
2216 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, num_procs_y/), (/.true., .true./), .false., mpi_comm_cart, &
2220 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, proc_coords, ierr)
2226 rem_cells = mod(n + 1, num_procs_y)
2229 n = (n + 1)/num_procs_y - 1
2233 if (proc_coords(2) == i - 1)
then
2239 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1))
then
2240 proc_coords(2) = proc_coords(2) - 1
2241 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%beg, ierr)
2242 proc_coords(2) = proc_coords(2) + 1
2246 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1))
then
2247 proc_coords(2) = proc_coords(2) + 1
2248 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_y%end, ierr)
2249 proc_coords(2) = proc_coords(2) - 1
2252#ifdef MFC_POST_PROCESS
2254 if (proc_coords(2) > 0 .and.
format == 1)
then
2261 if (proc_coords(2) < num_procs_y - 1 .and.
format == 1)
then
2269 if (parallel_io)
then
2270 if (proc_coords(2) < rem_cells)
then
2271 start_idx(2) = (n + 1)*proc_coords(2)
2273 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
2276#ifdef MFC_PRE_PROCESS
2277 if (old_grid .neqv. .true.)
then
2278 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
2280 if (proc_coords(2) < rem_cells)
then
2281 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2))
2282 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1) - (num_procs_y &
2285 y_domain%beg = y_domain%beg + dy*real((n + 1)*proc_coords(2) + rem_cells)
2286 y_domain%end = y_domain%end - dy*real((n + 1)*(num_procs_y - proc_coords(2) - 1))
2295 num_procs_x = num_procs
2298 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), (/.true./), .false., mpi_comm_cart, ierr)
2301 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, proc_coords, ierr)
2307 rem_cells = mod(m + 1, num_procs_x)
2310 m = (m + 1)/num_procs_x - 1
2314 if (proc_coords(1) == i - 1)
then
2319 call s_update_cell_bounds(cells_bounds, m, n, p)
2322 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1))
then
2323 proc_coords(1) = proc_coords(1) - 1
2324 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
2325 proc_coords(1) = proc_coords(1) + 1
2329 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1))
then
2330 proc_coords(1) = proc_coords(1) + 1
2331 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
2332 proc_coords(1) = proc_coords(1) - 1
2335#ifdef MFC_POST_PROCESS
2337 if (proc_coords(1) > 0 .and.
format == 1)
then
2344 if (proc_coords(1) < num_procs_x - 1 .and.
format == 1)
then
2352 if (parallel_io)
then
2353 if (proc_coords(1) < rem_cells)
then
2354 start_idx(1) = (m + 1)*proc_coords(1)
2356 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
2359#ifdef MFC_PRE_PROCESS
2360 if (old_grid .neqv. .true.)
then
2361 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
2363 if (proc_coords(1) < rem_cells)
then
2364 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1))
2365 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1) - (num_procs_x - rem_cells))
2367 x_domain%beg = x_domain%beg + dx*real((m + 1)*proc_coords(1) + rem_cells)
2368 x_domain%end = x_domain%end - dx*real((m + 1)*(num_procs_x - proc_coords(1) - 1))
2383 integer,
intent(in) :: mpi_dir
2384 integer,
intent(in) :: pbc_loc
2389 if (mpi_dir == 1)
then
2390 if (pbc_loc == -1)
then
2392 if (bc_x%end >= 0)
then
2393 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(-buff_size), buff_size, mpi_p, &
2394 & bc_x%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2396 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(-buff_size), buff_size, mpi_p, bc_x%beg, 0, &
2397 & mpi_comm_world, mpi_status_ignore, ierr)
2400 if (bc_x%beg >= 0)
then
2401 call mpi_sendrecv(dx(0), buff_size, mpi_p, bc_x%beg, 1, dx(m + 1), buff_size, mpi_p, bc_x%end, 1, &
2402 & mpi_comm_world, mpi_status_ignore, ierr)
2404 call mpi_sendrecv(dx(m - buff_size + 1), buff_size, mpi_p, bc_x%end, 0, dx(m + 1), buff_size, mpi_p, &
2405 & bc_x%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2408 else if (mpi_dir == 2)
then
2409 if (pbc_loc == -1)
then
2411 if (bc_y%end >= 0)
then
2412 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(-buff_size), buff_size, mpi_p, &
2413 & bc_y%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2415 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(-buff_size), buff_size, mpi_p, bc_y%beg, 0, &
2416 & mpi_comm_world, mpi_status_ignore, ierr)
2419 if (bc_y%beg >= 0)
then
2420 call mpi_sendrecv(dy(0), buff_size, mpi_p, bc_y%beg, 1, dy(n + 1), buff_size, mpi_p, bc_y%end, 1, &
2421 & mpi_comm_world, mpi_status_ignore, ierr)
2423 call mpi_sendrecv(dy(n - buff_size + 1), buff_size, mpi_p, bc_y%end, 0, dy(n + 1), buff_size, mpi_p, &
2424 & bc_y%end, 1, mpi_comm_world, mpi_status_ignore, ierr)
2428 if (pbc_loc == -1)
then
2430 if (bc_z%end >= 0)
then
2431 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(-buff_size), buff_size, mpi_p, &
2432 & bc_z%beg, 0, mpi_comm_world, mpi_status_ignore, ierr)
2434 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(-buff_size), buff_size, mpi_p, bc_z%beg, 0, &
2435 & mpi_comm_world, mpi_status_ignore, ierr)
2438 if (bc_z%beg >= 0)
then
2439 call mpi_sendrecv(dz(0), buff_size, mpi_p, bc_z%beg, 1, dz(p + 1), buff_size, mpi_p, bc_z%end, 1, &
2440 & mpi_comm_world, mpi_status_ignore, ierr)
2442 call mpi_sendrecv(dz(p - buff_size + 1), buff_size, mpi_p, bc_z%end, 0, dz(p + 1), buff_size, mpi_p, &
2443 & bc_z%end, 1, mpi_comm_world, mpi_status_ignore, ierr)