991 type(scalar_field),
dimension(sys_size),
intent(inout) ::
q_cons_vf
992 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
993 real(stp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
optional,
intent(inout) :: pb_in, mv_in
994 integer :: i,
j,
k,
l, q, r
995 integer :: patch_id, patch_id_temp
996 real(wp) :: rho, gamma, pi_inf, dyn_pres
997 real(wp) :: vel_sum_g, e_ghost
998 real(wp),
dimension(2) :: re_k
1001 real(wp) :: pres_ip, pres_gp
1002 real(wp),
dimension(3) :: vel_ip
1005# 258 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1006 real(wp),
dimension(num_fluids) :: gs
1007 real(wp),
dimension(num_fluids) :: alpha_rho_ip, alpha_ip
1008 real(wp),
dimension(nb) :: r_ip, v_ip, pb_ip, mv_ip
1009 real(wp),
dimension(nb*nmom) :: nmom_ip
1010 real(wp),
dimension(nb*nnode) :: presb_ip, massv_ip
1011 real(wp),
dimension(num_species) :: ys_ip
1012# 265 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1013 real(wp) :: alpha_q, alpha_rho_q, e_q
1014 real(wp) :: t_ip, mw_ip, e_ip
1017 real(wp),
dimension(3) :: physical_loc
1018 real(wp),
dimension(3) :: vel_g
1019 real(wp),
dimension(3) :: radial_vector
1021 type(ghost_point) :: gp
1025# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1027# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1028#if defined(MFC_OpenACC)
1029# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1031# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1032#elif defined(MFC_OpenMP)
1033# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1035# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1037# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1039# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1041# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1043# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1049 if (patch_id /= 0)
then
1050 call s_decode_patch_periodicity(patch_id, patch_id_temp)
1052 if (patch_id > 0)
then
1059 if (.not. chemistry) q_prim_vf(eqn_idx%E)%sf(
j,
k,
l) = 1._wp
1061 do i = 1, num_fluids
1062 rho = rho + q_prim_vf(eqn_idx%cont%beg + i - 1)%sf(
j,
k,
l)
1067 q_cons_vf(eqn_idx%mom%beg + i - 1)%sf(
j,
k,
l) = patch_ib(patch_id)%vel(i)*rho
1068 q_prim_vf(eqn_idx%mom%beg + i - 1)%sf(
j,
k,
l) = patch_ib(patch_id)%vel(i)
1076# 307 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1077#if defined(MFC_OpenACC)
1078# 307 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1080# 307 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1081#elif defined(MFC_OpenMP)
1082# 307 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1084# 307 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1086# 307 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1091# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1093# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1094#if defined(MFC_OpenACC)
1095# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1097# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1099# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1100#elif defined(MFC_OpenMP)
1101# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1103# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1105# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1107# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1109# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1111# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1113# 310 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1115# 314 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1124 physical_loc = [x_cc(
j), y_cc(
k), 0._wp]
1125 if (num_dims == 3) physical_loc(3) = z_cc(
l)
1128 if (bubbles_euler .and. .not. qbmm)
then
1131 else if (qbmm .and. polytropic)
then
1133 & pb_ip, mv_ip, nmom_ip)
1134 else if (qbmm .and. .not. polytropic)
then
1136 & pb_ip, mv_ip, nmom_ip, pb_in, mv_in, presb_ip, massv_ip)
1137 else if (chemistry)
then
1147 if (chemistry .and. patch_ib(patch_id)%inj_species > 0)
then
1148 call get_mixture_molecular_weight(ys_ip, mw_ip)
1149 t_ip = pres_ip*mw_ip/(alpha_rho_ip(1)*gas_constant)
1151 ys_ip(patch_ib(patch_id)%inj_species) = 1._wp
1152 call get_mixture_molecular_weight(ys_ip, mw_ip)
1153 alpha_rho_ip(1) = pres_ip*mw_ip/(t_ip*gas_constant)
1160# 357 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1161#if defined(MFC_OpenACC)
1162# 357 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1164# 357 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1165#elif defined(MFC_OpenMP)
1166# 357 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1168# 357 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1170 do q = 1, num_fluids
1171 q_prim_vf(q)%sf(
j,
k,
l) = alpha_rho_ip(q)
1172 q_prim_vf(eqn_idx%adv%beg + q - 1)%sf(
j,
k,
l) = alpha_ip(q)
1175 if (surface_tension)
then
1176 q_prim_vf(eqn_idx%c)%sf(
j,
k,
l) = c_ip
1180 if (patch_ib(patch_id)%moving_ibm <= 1)
then
1181 q_prim_vf(eqn_idx%E)%sf(
j,
k,
l) = pres_ip
1184 q_prim_vf(eqn_idx%E)%sf(
j,
k,
l) = pres_gp
1188 if (hypoelasticity)
then
1189 call s_convert_species_to_mixture_variables_kernel(rho, gamma, pi_inf, qv_k, alpha_ip, alpha_rho_ip, re_k, &
1192 call s_convert_species_to_mixture_variables_kernel(rho, gamma, pi_inf, qv_k, alpha_ip, alpha_rho_ip, re_k)
1196 radial_vector(1) = physical_loc(1) - (patch_ib(patch_id)%x_centroid + real(
ghost_points(i)%x_periodicity, &
1197 & wp)*(glb_bounds(1)%end - glb_bounds(1)%beg))
1198 radial_vector(2) = physical_loc(2) - (patch_ib(patch_id)%y_centroid + real(
ghost_points(i)%y_periodicity, &
1199 & wp)*(glb_bounds(2)%end - glb_bounds(2)%beg))
1200 radial_vector(3) = 0._wp
1201 if (num_dims == 3) radial_vector(3) = physical_loc(3) - (patch_ib(patch_id)%z_centroid &
1202 & + real(
ghost_points(i)%z_periodicity, wp)*(glb_bounds(3)%end - glb_bounds(3)%beg))
1210# 397 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1211#if defined(MFC_OpenACC)
1212# 397 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1214# 397 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1215#elif defined(MFC_OpenMP)
1216# 397 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1218# 397 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1220 do q = eqn_idx%mom%beg, eqn_idx%mom%end
1221 q_cons_vf(q)%sf(
j,
k,
l) = rho*vel_g(q - eqn_idx%mom%beg + 1)
1222 vel_sum_g = vel_sum_g + vel_g(q - eqn_idx%mom%beg + 1)**2._wp
1224 dyn_pres = 5.e-1_wp*rho*vel_sum_g
1228# 405 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1229#if defined(MFC_OpenACC)
1230# 405 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1232# 405 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1233#elif defined(MFC_OpenMP)
1234# 405 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1236# 405 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1238 do q = 1, num_fluids
1240 q_cons_vf(eqn_idx%adv%beg + q - 1)%sf(
j,
k,
l) = alpha_ip(q)
1244 if (surface_tension)
q_cons_vf(eqn_idx%c)%sf(
j,
k,
l) = c_ip
1253 call get_mixture_molecular_weight(ys_ip, mw_ip)
1254 t_ip = pres_ip*mw_ip/(rho*gas_constant)
1255 call get_mixture_energy_mass(t_ip, ys_ip, e_ip)
1257# 424 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1258#if defined(MFC_OpenACC)
1259# 424 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1261# 424 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1262#elif defined(MFC_OpenMP)
1263# 424 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1265# 424 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1267 do q = 1, num_species
1268 q_cons_vf(eqn_idx%species%beg + q - 1)%sf(
j,
k,
l) = rho*ys_ip(q)
1272 call s_compute_energy(pres_ip, alpha_rho_ip, alpha_ip, vel_sum_g, e_ghost)
1276 if (bubbles_euler .and. .not. qbmm)
then
1277 call s_comp_n_from_prim(alpha_ip(1), r_ip, nbub, weight)
1279# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1280#if defined(MFC_OpenACC)
1281# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1283# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1284#elif defined(MFC_OpenMP)
1285# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1287# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1290 q_cons_vf(eqn_idx%bub%beg + (q - 1)*2)%sf(
j,
k,
l) = nbub*r_ip(q)
1291 q_cons_vf(eqn_idx%bub%beg + (q - 1)*2 + 1)%sf(
j,
k,
l) = nbub*v_ip(q)
1292 if (.not. polytropic)
then
1293 q_cons_vf(eqn_idx%bub%beg + (q - 1)*4)%sf(
j,
k,
l) = nbub*r_ip(q)
1294 q_cons_vf(eqn_idx%bub%beg + (q - 1)*4 + 1)%sf(
j,
k,
l) = nbub*v_ip(q)
1295 q_cons_vf(eqn_idx%bub%beg + (q - 1)*4 + 2)%sf(
j,
k,
l) = nbub*pb_ip(q)
1296 q_cons_vf(eqn_idx%bub%beg + (q - 1)*4 + 3)%sf(
j,
k,
l) = nbub*mv_ip(q)
1304# 451 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1305#if defined(MFC_OpenACC)
1306# 451 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1308# 451 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1309#elif defined(MFC_OpenMP)
1310# 451 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1312# 451 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1315 q_cons_vf(eqn_idx%bub%beg + q - 1)%sf(
j,
k,
l) = nbub*nmom_ip(q)
1319# 456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1320#if defined(MFC_OpenACC)
1321# 456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1323# 456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1324#elif defined(MFC_OpenMP)
1325# 456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1327# 456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1330 q_cons_vf(eqn_idx%bub%beg + (q - 1)*nmom)%sf(
j,
k,
l) = nbub
1333 if (.not. polytropic)
then
1335# 462 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1336#if defined(MFC_OpenACC)
1337# 462 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1339# 462 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1340#elif defined(MFC_OpenMP)
1341# 462 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1343# 462 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1347# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1348#if defined(MFC_OpenACC)
1349# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1351# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1352#elif defined(MFC_OpenMP)
1353# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1355# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1358 pb_in(
j,
k,
l, r, q) = presb_ip((q - 1)*nnode + r)
1359 mv_in(
j,
k,
l, r, q) = massv_ip((q - 1)*nnode + r)
1365 if (model_eqns == model_eqns_6eq)
then
1367# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1368#if defined(MFC_OpenACC)
1369# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1371# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1372#elif defined(MFC_OpenMP)
1373# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1375# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1377 do q = eqn_idx%int_en%beg, eqn_idx%int_en%end
1378 alpha_q = alpha_ip(q - eqn_idx%int_en%beg + 1)
1379 alpha_rho_q = alpha_rho_ip(q - eqn_idx%int_en%beg + 1)
1380 call s_phase_internal_energy(pres_ip, alpha_q, alpha_rho_q, q - eqn_idx%int_en%beg + 1, e_q)
1386# 483 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1387#if defined(MFC_OpenACC)
1388# 483 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1390# 483 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1391#elif defined(MFC_OpenMP)
1392# 483 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1394# 483 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1396# 483 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2352 type(scalar_field),
dimension(1:sys_size),
intent(in) :: q_prim_vf
2353 type(physical_parameters),
dimension(1:num_fluids),
intent(in) :: fluid_pp
2354 integer :: i, j, k, l, encoded_ib_idx, xp, yp, zp, ib_idx, ib_idx_temp, fluid_idx
2355 real(wp),
dimension(num_ibs, 3) :: forces, torques
2357 real(wp),
dimension(1:3,1:3) :: viscous_stress
2358 real(wp),
dimension(1:3) :: local_force_contribution, radial_vector, local_torque_contribution
2359 real(wp) :: cell_volume, dynamic_viscosity
2361# 1108 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2362 real(wp),
dimension(num_fluids) :: dynamic_viscosities
2363# 1110 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2365 call nvtxstartrange(
"COMPUTE-IB-FORCES")
2371 do fluid_idx = 1, num_fluids
2372 if (fluid_pp(fluid_idx)%Re(1) > 0._wp)
then
2373 dynamic_viscosities(fluid_idx) = 1._wp/fluid_pp(fluid_idx)%Re(1)
2375 dynamic_viscosities(fluid_idx) = 0._wp
2381# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2383# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2384#if defined(MFC_OpenACC)
2385# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2387# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2389# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2391# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2392#elif defined(MFC_OpenMP)
2393# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2395# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2397# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2399# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2401# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2403# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2405# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2407# 1129 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2412 if (encoded_ib_idx /= 0)
then
2413 call s_decode_patch_periodicity(encoded_ib_idx, ib_idx_temp, xp, yp, zp)
2415 if (ib_idx > 0)
then
2417 radial_vector(1) = x_cc(i) - (patch_ib(ib_idx)%x_centroid + real(xp, &
2418 & wp)*(glb_bounds(1)%end - glb_bounds(1)%beg))
2419 radial_vector(2) = y_cc(j) - (patch_ib(ib_idx)%y_centroid + real(yp, &
2420 & wp)*(glb_bounds(2)%end - glb_bounds(2)%beg))
2421 radial_vector(3) = 0._wp
2422 if (num_dims == 3) radial_vector(3) = z_cc(k) - (patch_ib(ib_idx)%z_centroid + real(zp, &
2423 & wp)*(glb_bounds(3)%end - glb_bounds(3)%beg))
2425 local_force_contribution(:) = 0._wp
2428 do l = -fd_number, fd_number
2429 local_force_contribution(1) = local_force_contribution(1) - (fd_coeff_x(l, &
2430 & i)*q_prim_vf(eqn_idx%E)%sf(i + l, j, k))
2431 local_force_contribution(2) = local_force_contribution(2) - (fd_coeff_y(l, &
2432 & j)*q_prim_vf(eqn_idx%E)%sf(i, j + l, k))
2433 if (num_dims == 3)
then
2434 local_force_contribution(3) = local_force_contribution(3) - (fd_coeff_z(l, &
2435 & k)*q_prim_vf(eqn_idx%E)%sf(i, j, k + l))
2442 dynamic_viscosity = 0._wp
2443 do fluid_idx = 1, num_fluids
2445 dynamic_viscosity = dynamic_viscosity + (q_prim_vf(fluid_idx + eqn_idx%adv%beg - 1)%sf(i, j, &
2446 & k)*dynamic_viscosities(fluid_idx))
2449 do l = -fd_number, fd_number
2450 call s_compute_viscous_stress_tensor(viscous_stress, q_prim_vf, dynamic_viscosity, i + l, j, k)
2451 local_force_contribution(1:3) = local_force_contribution(1:3) + fd_coeff_x(l, &
2452 & i)*viscous_stress(1,1:3)
2454 call s_compute_viscous_stress_tensor(viscous_stress, q_prim_vf, dynamic_viscosity, i, j + l, k)
2455 local_force_contribution(1:3) = local_force_contribution(1:3) + fd_coeff_y(l, &
2456 & j)*viscous_stress(2,1:3)
2458 if (num_dims == 3)
then
2459 call s_compute_viscous_stress_tensor(viscous_stress, q_prim_vf, dynamic_viscosity, i, j, &
2461 local_force_contribution(1:3) = local_force_contribution(1:3) + fd_coeff_z(l, &
2462 & k)*viscous_stress(3,1:3)
2467 call s_cross_product(radial_vector, local_force_contribution, local_torque_contribution)
2470 cell_volume = dx(i)*dy(j)
2471 if (num_dims == 3) cell_volume = cell_volume*dz(k)
2474# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2475#if defined(MFC_OpenACC)
2476# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2478# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2479#elif defined(MFC_OpenMP)
2480# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2482# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2484 forces(ib_idx, l) = forces(ib_idx, l) + (local_force_contribution(l)*cell_volume)
2486# 1196 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2487#if defined(MFC_OpenACC)
2488# 1196 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2490# 1196 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2491#elif defined(MFC_OpenMP)
2492# 1196 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2494# 1196 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2496 torques(ib_idx, l) = torques(ib_idx, l) + local_torque_contribution(l)*cell_volume
2504# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2505#if defined(MFC_OpenACC)
2506# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2508# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2509#elif defined(MFC_OpenMP)
2510# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2512# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2514# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2525 forces(i, 1) = forces(i, 1) + accel_bf(1)*patch_ib(i)%mass
2528 forces(i, 2) = forces(i, 2) + accel_bf(2)*patch_ib(i)%mass
2531 forces(i, 3) = forces(i, 3) + accel_bf(3)*patch_ib(i)%mass
2537# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2539# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2540#if defined(MFC_OpenACC)
2541# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2543# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2544#elif defined(MFC_OpenMP)
2545# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2547# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2549# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2551# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2553# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2556 patch_ib(i)%force(:) = forces(i,:)
2557 patch_ib(i)%torque(:) = torques(i,:)
2560# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2561#if defined(MFC_OpenACC)
2562# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2564# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2565#elif defined(MFC_OpenMP)
2566# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2568# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2570# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2826 real(wp),
dimension(num_ibs, 3),
intent(inout) :: forces, torques
2829 integer :: i, j, k, pack_pos, unpack_pos, buf_size, ierr
2830 integer :: send_neighbor, recv_neighbor, recv_count, tag
2831 character(len=1),
allocatable :: ib_force_send_buf(:), ib_force_recv_buf(:)
2833 if (num_procs == 1)
return
2835 buf_size = storage_size(0)/8 + (storage_size(0)/8 + 6*storage_size(0._wp)/8)*
size(patch_ib)
2836 allocate (ib_force_send_buf(buf_size), ib_force_recv_buf(buf_size))
2839# 1423 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2840 if (num_dims >= 1)
then
2841 send_neighbor = merge(bc_x%end, mpi_proc_null, bc_x%end >= 0)
2842 recv_neighbor = merge(bc_x%beg, mpi_proc_null, bc_x%beg >= 0)
2847# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2848#if defined(MFC_OpenACC)
2849# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2851# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2852#elif defined(MFC_OpenMP)
2853# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2855# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2859 do k = 1, min(2*ib_neighborhood_radius, num_procs_x - 1)
2863# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2865# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2866#if defined(MFC_OpenACC)
2867# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2869# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2870#elif defined(MFC_OpenMP)
2871# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2873# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2875# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2877# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2879# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2882 send_ids(i) = patch_ib(i)%gbl_patch_id
2887# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2888#if defined(MFC_OpenACC)
2889# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2891# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2892#elif defined(MFC_OpenMP)
2893# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2895# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2897# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2900# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2901#if defined(MFC_OpenACC)
2902# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2904# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2905#elif defined(MFC_OpenMP)
2906# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2908# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2910 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2911 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2912 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2913 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
2914 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
2916 if (recv_neighbor /= mpi_proc_null)
then
2918 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
2919 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
2920 & mpi_comm_world, ierr)
2921 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
2923# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2924#if defined(MFC_OpenACC)
2925# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2927# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2928#elif defined(MFC_OpenMP)
2929# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2931# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2934# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2936# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2937#if defined(MFC_OpenACC)
2938# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2940# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2941#elif defined(MFC_OpenMP)
2942# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2944# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2946# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2948# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2950# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2952# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2954 do i = 1, recv_count
2965# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2966#if defined(MFC_OpenACC)
2967# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2969# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2970#elif defined(MFC_OpenMP)
2971# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2973# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2975# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2981# 1423 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2982 if (num_dims >= 2)
then
2983 send_neighbor = merge(bc_y%end, mpi_proc_null, bc_y%end >= 0)
2984 recv_neighbor = merge(bc_y%beg, mpi_proc_null, bc_y%beg >= 0)
2989# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2990#if defined(MFC_OpenACC)
2991# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2993# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2994#elif defined(MFC_OpenMP)
2995# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2997# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3001 do k = 1, min(2*ib_neighborhood_radius, num_procs_y - 1)
3005# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3007# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3008#if defined(MFC_OpenACC)
3009# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3011# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3012#elif defined(MFC_OpenMP)
3013# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3015# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3017# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3019# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3021# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3024 send_ids(i) = patch_ib(i)%gbl_patch_id
3029# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3030#if defined(MFC_OpenACC)
3031# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3033# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3034#elif defined(MFC_OpenMP)
3035# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3037# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3039# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3042# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3043#if defined(MFC_OpenACC)
3044# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3046# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3047#elif defined(MFC_OpenMP)
3048# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3050# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3052 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3053 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3054 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3055 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
3056 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
3058 if (recv_neighbor /= mpi_proc_null)
then
3060 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
3061 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
3062 & mpi_comm_world, ierr)
3063 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
3065# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3066#if defined(MFC_OpenACC)
3067# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3069# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3070#elif defined(MFC_OpenMP)
3071# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3073# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3076# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3078# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3079#if defined(MFC_OpenACC)
3080# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3082# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3083#elif defined(MFC_OpenMP)
3084# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3086# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3088# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3090# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3092# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3094# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3096 do i = 1, recv_count
3107# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3108#if defined(MFC_OpenACC)
3109# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3111# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3112#elif defined(MFC_OpenMP)
3113# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3115# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3117# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3123# 1423 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3124 if (num_dims >= 3)
then
3125 send_neighbor = merge(bc_z%end, mpi_proc_null, bc_z%end >= 0)
3126 recv_neighbor = merge(bc_z%beg, mpi_proc_null, bc_z%beg >= 0)
3131# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3132#if defined(MFC_OpenACC)
3133# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3135# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3136#elif defined(MFC_OpenMP)
3137# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3139# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3143 do k = 1, min(2*ib_neighborhood_radius, num_procs_z - 1)
3147# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3149# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3150#if defined(MFC_OpenACC)
3151# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3153# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3154#elif defined(MFC_OpenMP)
3155# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3157# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3159# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3161# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3163# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3166 send_ids(i) = patch_ib(i)%gbl_patch_id
3171# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3172#if defined(MFC_OpenACC)
3173# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3175# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3176#elif defined(MFC_OpenMP)
3177# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3179# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3181# 1441 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3184# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3185#if defined(MFC_OpenACC)
3186# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3188# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3189#elif defined(MFC_OpenMP)
3190# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3192# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3194 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3195 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3196 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3197 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
3198 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
3200 if (recv_neighbor /= mpi_proc_null)
then
3202 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
3203 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
3204 & mpi_comm_world, ierr)
3205 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
3207# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3208#if defined(MFC_OpenACC)
3209# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3211# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3212#elif defined(MFC_OpenMP)
3213# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3215# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3218# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3220# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3221#if defined(MFC_OpenACC)
3222# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3224# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3225#elif defined(MFC_OpenMP)
3226# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3228# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3230# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3232# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3234# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3236# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3238 do i = 1, recv_count
3249# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3250#if defined(MFC_OpenACC)
3251# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3253# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3254#elif defined(MFC_OpenMP)
3255# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3257# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3259# 1467 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3265# 1473 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3268# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3269 if (num_dims >= 1)
then
3270 send_neighbor = merge(bc_x%beg, mpi_proc_null, bc_x%beg >= 0)
3271 recv_neighbor = merge(bc_x%end, mpi_proc_null, bc_x%end >= 0)
3273 do k = 1, min(2*ib_neighborhood_radius, num_procs_x - 1)
3276# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3278# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3279#if defined(MFC_OpenACC)
3280# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3282# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3283#elif defined(MFC_OpenMP)
3284# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3286# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3288# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3290# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3292# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3295 send_ids(i) = patch_ib(i)%gbl_patch_id
3300# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3301#if defined(MFC_OpenACC)
3302# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3304# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3305#elif defined(MFC_OpenMP)
3306# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3308# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3310# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3313# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3314#if defined(MFC_OpenACC)
3315# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3317# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3318#elif defined(MFC_OpenMP)
3319# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3321# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3323 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3324 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3325 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3326 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
3327 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
3328 if (recv_neighbor /= mpi_proc_null)
then
3330 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
3331 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
3332 & mpi_comm_world, ierr)
3333 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
3335# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3336#if defined(MFC_OpenACC)
3337# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3339# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3340#elif defined(MFC_OpenMP)
3341# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3343# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3346# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3348# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3349#if defined(MFC_OpenACC)
3350# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3352# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3353#elif defined(MFC_OpenMP)
3354# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3356# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3358# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3360# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3362# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3364# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3366 do i = 1, recv_count
3374# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3375#if defined(MFC_OpenACC)
3376# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3378# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3379#elif defined(MFC_OpenMP)
3380# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3382# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3384# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3390# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3391 if (num_dims >= 2)
then
3392 send_neighbor = merge(bc_y%beg, mpi_proc_null, bc_y%beg >= 0)
3393 recv_neighbor = merge(bc_y%end, mpi_proc_null, bc_y%end >= 0)
3395 do k = 1, min(2*ib_neighborhood_radius, num_procs_y - 1)
3398# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3400# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3401#if defined(MFC_OpenACC)
3402# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3404# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3405#elif defined(MFC_OpenMP)
3406# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3408# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3410# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3412# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3414# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3417 send_ids(i) = patch_ib(i)%gbl_patch_id
3422# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3423#if defined(MFC_OpenACC)
3424# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3426# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3427#elif defined(MFC_OpenMP)
3428# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3430# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3432# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3435# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3436#if defined(MFC_OpenACC)
3437# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3439# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3440#elif defined(MFC_OpenMP)
3441# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3443# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3445 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3446 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3447 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3448 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
3449 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
3450 if (recv_neighbor /= mpi_proc_null)
then
3452 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
3453 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
3454 & mpi_comm_world, ierr)
3455 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
3457# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3458#if defined(MFC_OpenACC)
3459# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3461# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3462#elif defined(MFC_OpenMP)
3463# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3465# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3468# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3470# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3471#if defined(MFC_OpenACC)
3472# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3474# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3475#elif defined(MFC_OpenMP)
3476# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3478# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3480# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3482# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3484# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3486# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3488 do i = 1, recv_count
3496# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3497#if defined(MFC_OpenACC)
3498# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3500# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3501#elif defined(MFC_OpenMP)
3502# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3504# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3506# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3512# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3513 if (num_dims >= 3)
then
3514 send_neighbor = merge(bc_z%beg, mpi_proc_null, bc_z%beg >= 0)
3515 recv_neighbor = merge(bc_z%end, mpi_proc_null, bc_z%end >= 0)
3517 do k = 1, min(2*ib_neighborhood_radius, num_procs_z - 1)
3520# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3522# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3523#if defined(MFC_OpenACC)
3524# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3526# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3527#elif defined(MFC_OpenMP)
3528# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3530# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3532# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3534# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3536# 1482 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3539 send_ids(i) = patch_ib(i)%gbl_patch_id
3544# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3545#if defined(MFC_OpenACC)
3546# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3548# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3549#elif defined(MFC_OpenMP)
3550# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3552# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3554# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3557# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3558#if defined(MFC_OpenACC)
3559# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3561# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3562#elif defined(MFC_OpenMP)
3563# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3565# 1489 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3567 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3568 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3569 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3570 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
3571 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
3572 if (recv_neighbor /= mpi_proc_null)
then
3574 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
3575 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
3576 & mpi_comm_world, ierr)
3577 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
3579# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3580#if defined(MFC_OpenACC)
3581# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3583# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3584#elif defined(MFC_OpenMP)
3585# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3587# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3590# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3592# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3593#if defined(MFC_OpenACC)
3594# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3596# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3597#elif defined(MFC_OpenMP)
3598# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3600# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3602# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3604# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3606# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3608# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3610 do i = 1, recv_count
3618# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3619#if defined(MFC_OpenACC)
3620# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3622# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3623#elif defined(MFC_OpenMP)
3624# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3626# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3628# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3634# 1516 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3641 integer :: i, j, k, output_idx, local_output_idx
3642 integer :: old_num_local_ibs
3643 integer :: new_count, recv_count
3644 integer :: pack_pos, unpack_pos, buf_size, patch_bytes
3645 integer :: send_neighbor, recv_neighbor, ierr
3646 integer :: dx, dy, dz, tag, nbr_idx, nreqs
3647 real(wp),
dimension(3) :: centroid
3649 type(ib_patch_parameters) :: tmp_patch
3650 integer,
dimension(num_local_ibs_max) :: local_ib_idx_old
3652 integer,
parameter :: max_nbrs = 26
3653 character(len=1),
allocatable :: send_buf(:), recv_bufs(:,:)
3654 integer,
dimension(2*max_nbrs) :: requests
3655 integer,
dimension(max_nbrs) :: recv_neighbor_list
3658 if (num_procs > 1)
then
3660 local_ib_idx_old = 0
3661 old_num_local_ibs = num_local_ibs
3662 do i = 1, num_local_ibs
3663 local_ib_idx_old(i) = patch_ib(local_ib_patch_ids(i))%gbl_patch_id
3669# 1549 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3670#if defined(MFC_OpenACC)
3671# 1549 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3673# 1549 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3674#elif defined(MFC_OpenMP)
3675# 1549 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3677# 1549 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3682 local_output_idx = 0
3684 centroid = [patch_ib(i)%x_centroid, patch_ib(i)%y_centroid, 0._wp]
3685 if (num_dims == 3) centroid(3) = patch_ib(i)%z_centroid
3688 if (f_neighborhood_ranks_own_location(centroid))
then
3689 output_idx = output_idx + 1
3690 if (i /= output_idx)
then
3691 patch_ib(output_idx) = patch_ib(i)
3695 if (f_local_rank_owns_location(centroid, glb_bounds))
then
3696 local_output_idx = local_output_idx + 1
3697 local_ib_patch_ids(local_output_idx) = output_idx
3701 num_ibs = output_idx
3702 num_local_ibs = local_output_idx
3704# 1574 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3705#if defined(MFC_OpenACC)
3706# 1574 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3708# 1574 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3709#elif defined(MFC_OpenMP)
3710# 1574 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3712# 1574 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3717 patch_bytes = storage_size(tmp_patch)/8
3718 buf_size = storage_size(0)/8 + patch_bytes*num_local_ibs_max
3719 allocate (send_buf(buf_size), recv_bufs(buf_size, max_nbrs))
3723 call mpi_pack(0, 1, mpi_integer, send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3727 do i = 1, num_local_ibs
3728 k = local_ib_patch_ids(i)
3730 do j = 1, old_num_local_ibs
3731 if (patch_ib(k)%gbl_patch_id == local_ib_idx_old(j))
then
3737 call mpi_pack(patch_ib(k), patch_bytes, mpi_byte, send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3738 new_count = new_count + 1
3744 call mpi_pack(new_count, 1, mpi_integer, send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3745 pack_pos = storage_size(0)/8 + new_count*patch_bytes
3750 do dz = merge(-1, 0, num_dims == 3), merge(1, 0, num_dims == 3)
3753 if (dx == 0 .and. dy == 0 .and. dz == 0) cycle
3754 nbr_idx = nbr_idx + 1
3755 tag = 200 + (dx + 1)*9 + (dy + 1)*3 + (dz + 1)
3756 recv_neighbor = ib_neighbor_ranks(-dx, -dy, -dz)
3757 recv_neighbor_list(nbr_idx) = mpi_proc_null
3758 if (recv_neighbor < 0) cycle
3759 recv_neighbor_list(nbr_idx) = recv_neighbor
3761 call mpi_irecv(recv_bufs(:,nbr_idx), buf_size, mpi_packed, recv_neighbor, tag, mpi_comm_world, &
3762 & requests(nreqs), ierr)
3767 do dz = merge(-1, 0, num_dims == 3), merge(1, 0, num_dims == 3)
3770 if (dx == 0 .and. dy == 0 .and. dz == 0) cycle
3771 tag = 200 + (dx + 1)*9 + (dy + 1)*3 + (dz + 1)
3772 send_neighbor = ib_neighbor_ranks(dx, dy, dz)
3773 if (send_neighbor < 0) cycle
3775 call mpi_isend(send_buf, pack_pos, mpi_packed, send_neighbor, tag, mpi_comm_world, requests(nreqs), ierr)
3780 call mpi_waitall(nreqs, requests, mpi_statuses_ignore, ierr)
3783 do nbr_idx = 1, merge(26, 8, num_dims == 3)
3784 if (recv_neighbor_list(nbr_idx) == mpi_proc_null) cycle
3786 call mpi_unpack(recv_bufs(:,nbr_idx), buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
3787 do i = 1, recv_count
3788 call mpi_unpack(recv_bufs(:,nbr_idx), buf_size, unpack_pos, tmp_patch, patch_bytes, mpi_byte, mpi_comm_world, &
3792 num_ibs = num_ibs + 1
3793 if (.not. (num_ibs <=
size(patch_ib)))
then
3794# 1654 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3795 call s_mpi_abort(
"m_ibm.fpp:1654: " //
"Assertion failed: num_ibs <= size(patch_ib). " &
3796# 1654 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3797 & //
'patch_ib overflow in neighborhood handoff')
3798# 1654 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3800 patch_ib(num_ibs) = tmp_patch
3805 deallocate (send_buf, recv_bufs)
3807# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3808#if defined(MFC_OpenACC)
3809# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3811# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3812#elif defined(MFC_OpenMP)
3813# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3815# 1661 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"