813 type(scalar_field),
dimension(sys_size),
intent(inout) ::
q_cons_vf
814 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
815 real(stp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
optional,
intent(inout) :: pb_in, mv_in
816 integer :: i,
j,
k,
l, q, r
817 integer :: patch_id, patch_id_temp
818 real(wp) :: rho, gamma, pi_inf, dyn_pres
819 real(wp),
dimension(2) :: re_k
823 real(wp),
dimension(3) :: vel_ip, vel_norm_ip
826# 164 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
827 real(wp),
dimension(num_fluids) :: gs
828 real(wp),
dimension(num_fluids) :: alpha_rho_ip, alpha_ip
829 real(wp),
dimension(nb) :: r_ip, v_ip, pb_ip, mv_ip
830 real(wp),
dimension(nb*nmom) :: nmom_ip
831 real(wp),
dimension(nb*nnode) :: presb_ip, massv_ip
832# 170 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
835 real(wp),
dimension(3) :: norm
836 real(wp),
dimension(3) :: physical_loc
837 real(wp),
dimension(3) :: vel_g
838 real(wp),
dimension(3) :: radial_vector
839 real(wp),
dimension(3) :: rotation_velocity
842 type(ghost_point) :: gp
843 type(ghost_point) :: innerp
847# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
849# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
850#if defined(MFC_OpenACC)
851# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
853# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
854#elif defined(MFC_OpenMP)
855# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
857# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
859# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
861# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
863# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
865# 183 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
871 if (patch_id /= 0)
then
872 call s_decode_patch_periodicity(patch_id, patch_id_temp)
874 if (patch_id > 0)
then
875 q_prim_vf(eqn_idx%E)%sf(
j,
k,
l) = 1._wp
878 rho = rho + q_prim_vf(eqn_idx%cont%beg + i - 1)%sf(
j,
k,
l)
883 q_cons_vf(eqn_idx%mom%beg + i - 1)%sf(
j,
k,
l) = patch_ib(patch_id)%vel(i)*rho
884 q_prim_vf(eqn_idx%mom%beg + i - 1)%sf(
j,
k,
l) = patch_ib(patch_id)%vel(i)
892# 208 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
893#if defined(MFC_OpenACC)
894# 208 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
896# 208 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
897#elif defined(MFC_OpenMP)
898# 208 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
900# 208 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
902# 208 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
907# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
909# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
910#if defined(MFC_OpenACC)
911# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
913# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
915# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
916#elif defined(MFC_OpenMP)
917# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
919# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
921# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
923# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
925# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
927# 211 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
929# 214 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
939 physical_loc = [x_cc(
j), y_cc(
k), z_cc(
l)]
941 physical_loc = [x_cc(
j), y_cc(
k), 0._wp]
945 if (bubbles_euler .and. .not. qbmm)
then
948 else if (qbmm .and. polytropic)
then
950 & pb_ip, mv_ip, nmom_ip)
951 else if (qbmm .and. .not. polytropic)
then
953 & pb_ip, mv_ip, nmom_ip, pb_in, mv_in, presb_ip, massv_ip)
962# 245 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
963#if defined(MFC_OpenACC)
964# 245 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
966# 245 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
967#elif defined(MFC_OpenMP)
968# 245 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
970# 245 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
973 q_prim_vf(q)%sf(
j,
k,
l) = alpha_rho_ip(q)
974 q_prim_vf(eqn_idx%adv%beg + q - 1)%sf(
j,
k,
l) = alpha_ip(q)
977 if (surface_tension)
then
978 q_prim_vf(eqn_idx%c)%sf(
j,
k,
l) = c_ip
982 if (patch_ib(patch_id)%moving_ibm <= 1)
then
983 q_prim_vf(eqn_idx%E)%sf(
j,
k,
l) = pres_ip
985 q_prim_vf(eqn_idx%E)%sf(
j,
k,
l) = 0._wp
987# 260 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
988#if defined(MFC_OpenACC)
989# 260 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
991# 260 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
992#elif defined(MFC_OpenMP)
993# 260 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
995# 260 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
999 q_prim_vf(eqn_idx%E)%sf(
j,
k,
l) = q_prim_vf(eqn_idx%E)%sf(
j,
k, &
1000 &
l) + pres_ip/(1._wp - 2._wp*abs(gp%levelset*alpha_rho_ip(q)/pres_ip) &
1001 & *dot_product(patch_ib(patch_id)%force/patch_ib(patch_id)%mass, gp%levelset_norm))
1005 if (model_eqns /= model_eqns_4eq)
then
1007 if (elasticity)
then
1008 call s_convert_species_to_mixture_variables_acc(rho, gamma, pi_inf, qv_k, alpha_ip, alpha_rho_ip, re_k, &
1011 call s_convert_species_to_mixture_variables_acc(rho, gamma, pi_inf, qv_k, alpha_ip, alpha_rho_ip, re_k)
1015 if (patch_ib(patch_id)%moving_ibm /= 0)
then
1017 radial_vector(1) = physical_loc(1) - (patch_ib(patch_id)%x_centroid + real(
ghost_points(i)%x_periodicity, &
1018 & wp)*(glb_bounds(1)%end - glb_bounds(1)%beg))
1019 radial_vector(2) = physical_loc(2) - (patch_ib(patch_id)%y_centroid + real(
ghost_points(i)%y_periodicity, &
1020 & wp)*(glb_bounds(2)%end - glb_bounds(2)%beg))
1021 radial_vector(3) = 0._wp
1022 if (num_dims == 3) radial_vector(3) = physical_loc(3) - (patch_ib(patch_id)%z_centroid &
1023 & + real(
ghost_points(i)%z_periodicity, wp)*(glb_bounds(3)%end - glb_bounds(3)%beg))
1028 norm(1:3) = gp%levelset_norm
1029 buf = sqrt(sum(norm**2))
1031 vel_norm_ip = sum(vel_ip*norm)*norm
1032 vel_g = vel_ip - vel_norm_ip
1033 if (patch_ib(patch_id)%moving_ibm /= 0)
then
1035 call s_cross_product(patch_ib(patch_id)%angular_vel, radial_vector, rotation_velocity)
1038 vel_g = vel_g + sum((patch_ib(patch_id)%vel + rotation_velocity)*norm)*norm
1041 if (patch_ib(patch_id)%moving_ibm == 0)
then
1047 call s_cross_product(patch_ib(patch_id)%angular_vel, radial_vector, rotation_velocity)
1050 vel_g(q) = patch_ib(patch_id)%vel(q)
1051 vel_g(q) = vel_g(q) + rotation_velocity(q)
1058# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1059#if defined(MFC_OpenACC)
1060# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1062# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1063#elif defined(MFC_OpenMP)
1064# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1066# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1068 do q = eqn_idx%mom%beg, eqn_idx%mom%end
1069 q_cons_vf(q)%sf(
j,
k,
l) = rho*vel_g(q - eqn_idx%mom%beg + 1)
1070 dyn_pres = dyn_pres +
q_cons_vf(q)%sf(
j,
k,
l)*vel_g(q - eqn_idx%mom%beg + 1)/2._wp
1075# 328 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1076#if defined(MFC_OpenACC)
1077# 328 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1079# 328 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1080#elif defined(MFC_OpenMP)
1081# 328 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1083# 328 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1085 do q = 1, num_fluids
1087 q_cons_vf(eqn_idx%adv%beg + q - 1)%sf(
j,
k,
l) = alpha_ip(q)
1091 if (surface_tension)
then
1096 if (bubbles_euler)
then
1097 q_cons_vf(eqn_idx%E)%sf(
j,
k,
l) = (1 - alpha_ip(1))*(gamma*pres_ip + pi_inf + dyn_pres)
1099 q_cons_vf(eqn_idx%E)%sf(
j,
k,
l) = gamma*pres_ip + pi_inf + dyn_pres
1102 if (bubbles_euler .and. .not. qbmm)
then
1103 call s_comp_n_from_prim(alpha_ip(1), r_ip, nbub, weight)
1105# 348 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1106#if defined(MFC_OpenACC)
1107# 348 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1109# 348 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1110#elif defined(MFC_OpenMP)
1111# 348 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1113# 348 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1116 q_cons_vf(eqn_idx%bub%beg + (q - 1)*2)%sf(
j,
k,
l) = nbub*r_ip(q)
1117 q_cons_vf(eqn_idx%bub%beg + (q - 1)*2 + 1)%sf(
j,
k,
l) = nbub*v_ip(q)
1118 if (.not. polytropic)
then
1119 q_cons_vf(eqn_idx%bub%beg + (q - 1)*4)%sf(
j,
k,
l) = nbub*r_ip(q)
1120 q_cons_vf(eqn_idx%bub%beg + (q - 1)*4 + 1)%sf(
j,
k,
l) = nbub*v_ip(q)
1121 q_cons_vf(eqn_idx%bub%beg + (q - 1)*4 + 2)%sf(
j,
k,
l) = nbub*pb_ip(q)
1122 q_cons_vf(eqn_idx%bub%beg + (q - 1)*4 + 3)%sf(
j,
k,
l) = nbub*mv_ip(q)
1130# 363 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1131#if defined(MFC_OpenACC)
1132# 363 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1134# 363 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1135#elif defined(MFC_OpenMP)
1136# 363 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1138# 363 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1141 q_cons_vf(eqn_idx%bub%beg + q - 1)%sf(
j,
k,
l) = nbub*nmom_ip(q)
1145# 368 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1146#if defined(MFC_OpenACC)
1147# 368 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1149# 368 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1150#elif defined(MFC_OpenMP)
1151# 368 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1153# 368 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1156 q_cons_vf(eqn_idx%bub%beg + (q - 1)*nmom)%sf(
j,
k,
l) = nbub
1159 if (.not. polytropic)
then
1161# 374 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1162#if defined(MFC_OpenACC)
1163# 374 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1165# 374 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1166#elif defined(MFC_OpenMP)
1167# 374 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1169# 374 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1173# 376 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1174#if defined(MFC_OpenACC)
1175# 376 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1177# 376 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1178#elif defined(MFC_OpenMP)
1179# 376 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1181# 376 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1184 pb_in(
j,
k,
l, r, q) = presb_ip((q - 1)*nnode + r)
1185 mv_in(
j,
k,
l, r, q) = massv_ip((q - 1)*nnode + r)
1191 if (model_eqns == model_eqns_6eq)
then
1193# 386 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1194#if defined(MFC_OpenACC)
1195# 386 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1197# 386 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1198#elif defined(MFC_OpenMP)
1199# 386 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1201# 386 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1203 do q = eqn_idx%int_en%beg, eqn_idx%int_en%end
1205 &
l) = alpha_ip(q - eqn_idx%int_en%beg + 1)*(gammas(q - eqn_idx%int_en%beg + 1)*pres_ip &
1206 & + pi_infs(q - eqn_idx%int_en%beg + 1))
1211# 394 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1212#if defined(MFC_OpenACC)
1213# 394 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1215# 394 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1216#elif defined(MFC_OpenMP)
1217# 394 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1219# 394 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
1221# 394 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2031 type(scalar_field),
dimension(1:sys_size),
intent(in) :: q_prim_vf
2032 type(physical_parameters),
dimension(1:num_fluids),
intent(in) :: fluid_pp
2033 integer :: i, j, k, l, encoded_ib_idx, xp, yp, zp, ib_idx, ib_idx_temp, fluid_idx
2034 real(wp),
dimension(num_ibs, 3) :: forces, torques
2036 real(wp),
dimension(1:3,1:3) :: viscous_stress
2037 real(wp),
dimension(1:3) :: local_force_contribution, radial_vector, local_torque_contribution
2038 real(wp) :: cell_volume, dynamic_viscosity
2040# 921 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2041 real(wp),
dimension(num_fluids) :: dynamic_viscosities
2042# 923 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2044 call nvtxstartrange(
"COMPUTE-IB-FORCES")
2050 do fluid_idx = 1, num_fluids
2051 if (fluid_pp(fluid_idx)%Re(1) > 0._wp)
then
2052 dynamic_viscosities(fluid_idx) = 1._wp/fluid_pp(fluid_idx)%Re(1)
2054 dynamic_viscosities(fluid_idx) = 0._wp
2060# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2062# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2063#if defined(MFC_OpenACC)
2064# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2066# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2068# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2070# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2071#elif defined(MFC_OpenMP)
2072# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2074# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2076# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2078# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2080# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2082# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2084# 939 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2086# 942 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2091 if (encoded_ib_idx /= 0)
then
2092 call s_decode_patch_periodicity(encoded_ib_idx, ib_idx_temp, xp, yp, zp)
2094 if (ib_idx > 0)
then
2096 radial_vector(1) = x_cc(i) - (patch_ib(ib_idx)%x_centroid + real(xp, &
2097 & wp)*(glb_bounds(1)%end - glb_bounds(1)%beg))
2098 radial_vector(2) = y_cc(j) - (patch_ib(ib_idx)%y_centroid + real(yp, &
2099 & wp)*(glb_bounds(2)%end - glb_bounds(2)%beg))
2100 radial_vector(3) = 0._wp
2101 if (num_dims == 3) radial_vector(3) = z_cc(k) - (patch_ib(ib_idx)%z_centroid + real(zp, &
2102 & wp)*(glb_bounds(3)%end - glb_bounds(3)%beg))
2104 local_force_contribution(:) = 0._wp
2107 do l = -fd_number, fd_number
2108 local_force_contribution(1) = local_force_contribution(1) - (fd_coeff_x(l, &
2109 & i)*q_prim_vf(eqn_idx%E)%sf(i + l, j, k))
2110 local_force_contribution(2) = local_force_contribution(2) - (fd_coeff_y(l, &
2111 & j)*q_prim_vf(eqn_idx%E)%sf(i, j + l, k))
2112 if (num_dims == 3)
then
2113 local_force_contribution(3) = local_force_contribution(3) - (fd_coeff_z(l, &
2114 & k)*q_prim_vf(eqn_idx%E)%sf(i, j, k + l))
2121 dynamic_viscosity = 0._wp
2122 do fluid_idx = 1, num_fluids
2124 dynamic_viscosity = dynamic_viscosity + (q_prim_vf(fluid_idx + eqn_idx%adv%beg - 1)%sf(i, j, &
2125 & k)*dynamic_viscosities(fluid_idx))
2128 do l = -fd_number, fd_number
2129 call s_compute_viscous_stress_tensor(viscous_stress, q_prim_vf, dynamic_viscosity, i + l, j, k)
2130 local_force_contribution(1:3) = local_force_contribution(1:3) + fd_coeff_x(l, &
2131 & i)*viscous_stress(1,1:3)
2133 call s_compute_viscous_stress_tensor(viscous_stress, q_prim_vf, dynamic_viscosity, i, j + l, k)
2134 local_force_contribution(1:3) = local_force_contribution(1:3) + fd_coeff_y(l, &
2135 & j)*viscous_stress(2,1:3)
2137 if (num_dims == 3)
then
2138 call s_compute_viscous_stress_tensor(viscous_stress, q_prim_vf, dynamic_viscosity, i, j, &
2140 local_force_contribution(1:3) = local_force_contribution(1:3) + fd_coeff_z(l, &
2141 & k)*viscous_stress(3,1:3)
2146 call s_cross_product(radial_vector, local_force_contribution, local_torque_contribution)
2149 cell_volume = dx(i)*dy(j)
2150 if (num_dims == 3) cell_volume = cell_volume*dz(k)
2153# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2154#if defined(MFC_OpenACC)
2155# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2157# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2158#elif defined(MFC_OpenMP)
2159# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2161# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2163 forces(ib_idx, l) = forces(ib_idx, l) + (local_force_contribution(l)*cell_volume)
2165# 1009 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2166#if defined(MFC_OpenACC)
2167# 1009 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2169# 1009 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2170#elif defined(MFC_OpenMP)
2171# 1009 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2173# 1009 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2175 torques(ib_idx, l) = torques(ib_idx, l) + local_torque_contribution(l)*cell_volume
2183# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2184#if defined(MFC_OpenACC)
2185# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2187# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2188#elif defined(MFC_OpenMP)
2189# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2191# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2193# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2204 forces(i, 1) = forces(i, 1) + accel_bf(1)*patch_ib(i)%mass
2207 forces(i, 2) = forces(i, 2) + accel_bf(2)*patch_ib(i)%mass
2210 forces(i, 3) = forces(i, 3) + accel_bf(3)*patch_ib(i)%mass
2216# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2218# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2219#if defined(MFC_OpenACC)
2220# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2222# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2223#elif defined(MFC_OpenMP)
2224# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2226# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2228# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2230# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2232# 1038 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2235 patch_ib(i)%force(:) = forces(i,:)
2236 patch_ib(i)%torque(:) = torques(i,:)
2239# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2240#if defined(MFC_OpenACC)
2241# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2243# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2244#elif defined(MFC_OpenMP)
2245# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2247# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2249# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2505 real(wp),
dimension(num_ibs, 3),
intent(inout) :: forces, torques
2508 integer :: i, j, k, pack_pos, unpack_pos, buf_size, ierr
2509 integer :: send_neighbor, recv_neighbor, recv_count, tag
2510 character(len=1),
allocatable :: ib_force_send_buf(:), ib_force_recv_buf(:)
2512 if (num_procs == 1)
return
2514 buf_size = storage_size(0)/8 + (storage_size(0)/8 + 6*storage_size(0._wp)/8)*
size(patch_ib)
2515 allocate (ib_force_send_buf(buf_size), ib_force_recv_buf(buf_size))
2518# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2519 if (num_dims >= 1)
then
2520 send_neighbor = merge(bc_x%end, mpi_proc_null, bc_x%end >= 0)
2521 recv_neighbor = merge(bc_x%beg, mpi_proc_null, bc_x%beg >= 0)
2527 do k = 1, min(2*ib_neighborhood_radius, num_procs_x - 1)
2531# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2533# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2534#if defined(MFC_OpenACC)
2535# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2537# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2538#elif defined(MFC_OpenMP)
2539# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2541# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2543# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2545# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2547# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2550 send_ids(i) = patch_ib(i)%gbl_patch_id
2555# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2556#if defined(MFC_OpenACC)
2557# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2559# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2560#elif defined(MFC_OpenMP)
2561# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2563# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2565# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2568# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2569#if defined(MFC_OpenACC)
2570# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2572# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2573#elif defined(MFC_OpenMP)
2574# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2576# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2578 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2579 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2580 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2581 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
2582 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
2584 if (recv_neighbor /= mpi_proc_null)
then
2586 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
2587 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
2588 & mpi_comm_world, ierr)
2589 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
2591# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2593# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2594#if defined(MFC_OpenACC)
2595# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2597# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2598#elif defined(MFC_OpenMP)
2599# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2601# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2603# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2605# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2607# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2609# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2611# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2612 do i = 1, recv_count
2623# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2624#if defined(MFC_OpenACC)
2625# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2627# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2628#elif defined(MFC_OpenMP)
2629# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2631# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2633# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2639# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2640 if (num_dims >= 2)
then
2641 send_neighbor = merge(bc_y%end, mpi_proc_null, bc_y%end >= 0)
2642 recv_neighbor = merge(bc_y%beg, mpi_proc_null, bc_y%beg >= 0)
2648 do k = 1, min(2*ib_neighborhood_radius, num_procs_y - 1)
2652# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2654# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2655#if defined(MFC_OpenACC)
2656# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2658# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2659#elif defined(MFC_OpenMP)
2660# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2662# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2664# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2666# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2668# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2671 send_ids(i) = patch_ib(i)%gbl_patch_id
2676# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2677#if defined(MFC_OpenACC)
2678# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2680# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2681#elif defined(MFC_OpenMP)
2682# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2684# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2686# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2689# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2690#if defined(MFC_OpenACC)
2691# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2693# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2694#elif defined(MFC_OpenMP)
2695# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2697# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2699 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2700 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2701 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2702 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
2703 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
2705 if (recv_neighbor /= mpi_proc_null)
then
2707 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
2708 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
2709 & mpi_comm_world, ierr)
2710 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
2712# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2714# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2715#if defined(MFC_OpenACC)
2716# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2718# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2719#elif defined(MFC_OpenMP)
2720# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2722# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2724# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2726# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2728# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2730# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2732# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2733 do i = 1, recv_count
2744# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2745#if defined(MFC_OpenACC)
2746# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2748# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2749#elif defined(MFC_OpenMP)
2750# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2752# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2754# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2760# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2761 if (num_dims >= 3)
then
2762 send_neighbor = merge(bc_z%end, mpi_proc_null, bc_z%end >= 0)
2763 recv_neighbor = merge(bc_z%beg, mpi_proc_null, bc_z%beg >= 0)
2769 do k = 1, min(2*ib_neighborhood_radius, num_procs_z - 1)
2773# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2775# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2776#if defined(MFC_OpenACC)
2777# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2779# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2780#elif defined(MFC_OpenMP)
2781# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2783# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2785# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2787# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2789# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2792 send_ids(i) = patch_ib(i)%gbl_patch_id
2797# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2798#if defined(MFC_OpenACC)
2799# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2801# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2802#elif defined(MFC_OpenMP)
2803# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2805# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2807# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2810# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2811#if defined(MFC_OpenACC)
2812# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2814# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2815#elif defined(MFC_OpenMP)
2816# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2818# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2820 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2821 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2822 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2823 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
2824 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
2826 if (recv_neighbor /= mpi_proc_null)
then
2828 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
2829 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
2830 & mpi_comm_world, ierr)
2831 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
2833# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2835# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2836#if defined(MFC_OpenACC)
2837# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2839# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2840#elif defined(MFC_OpenMP)
2841# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2843# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2845# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2847# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2849# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2851# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2853# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2854 do i = 1, recv_count
2865# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2866#if defined(MFC_OpenACC)
2867# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2869# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2870#elif defined(MFC_OpenMP)
2871# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2873# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2875# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2881# 1285 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2884# 1288 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2885 if (num_dims >= 1)
then
2886 send_neighbor = merge(bc_x%beg, mpi_proc_null, bc_x%beg >= 0)
2887 recv_neighbor = merge(bc_x%end, mpi_proc_null, bc_x%end >= 0)
2889 do k = 1, min(2*ib_neighborhood_radius, num_procs_x - 1)
2892# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2894# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2895#if defined(MFC_OpenACC)
2896# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2898# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2899#elif defined(MFC_OpenMP)
2900# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2902# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2904# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2906# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2908# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2911 send_ids(i) = patch_ib(i)%gbl_patch_id
2916# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2917#if defined(MFC_OpenACC)
2918# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2920# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2921#elif defined(MFC_OpenMP)
2922# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2924# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2926# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2929# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2930#if defined(MFC_OpenACC)
2931# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2933# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2934#elif defined(MFC_OpenMP)
2935# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2937# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2939 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2940 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2941 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
2942 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
2943 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
2944 if (recv_neighbor /= mpi_proc_null)
then
2946 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
2947 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
2948 & mpi_comm_world, ierr)
2949 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
2951# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2953# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2954#if defined(MFC_OpenACC)
2955# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2957# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2958#elif defined(MFC_OpenMP)
2959# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2961# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2963# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2965# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2967# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2969# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2971 do i = 1, recv_count
2979# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2980#if defined(MFC_OpenACC)
2981# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2983# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2984#elif defined(MFC_OpenMP)
2985# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2987# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2989# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2995# 1288 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
2996 if (num_dims >= 2)
then
2997 send_neighbor = merge(bc_y%beg, mpi_proc_null, bc_y%beg >= 0)
2998 recv_neighbor = merge(bc_y%end, mpi_proc_null, bc_y%end >= 0)
3000 do k = 1, min(2*ib_neighborhood_radius, num_procs_y - 1)
3003# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3005# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3006#if defined(MFC_OpenACC)
3007# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3009# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3010#elif defined(MFC_OpenMP)
3011# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3013# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3015# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3017# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3019# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3022 send_ids(i) = patch_ib(i)%gbl_patch_id
3027# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3028#if defined(MFC_OpenACC)
3029# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3031# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3032#elif defined(MFC_OpenMP)
3033# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3035# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3037# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3040# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3041#if defined(MFC_OpenACC)
3042# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3044# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3045#elif defined(MFC_OpenMP)
3046# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3048# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3050 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3051 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3052 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3053 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
3054 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
3055 if (recv_neighbor /= mpi_proc_null)
then
3057 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
3058 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
3059 & mpi_comm_world, ierr)
3060 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
3062# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3064# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3065#if defined(MFC_OpenACC)
3066# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3068# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3069#elif defined(MFC_OpenMP)
3070# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3072# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3074# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3076# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3078# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3080# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3082 do i = 1, recv_count
3090# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3091#if defined(MFC_OpenACC)
3092# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3094# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3095#elif defined(MFC_OpenMP)
3096# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3098# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3100# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3106# 1288 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3107 if (num_dims >= 3)
then
3108 send_neighbor = merge(bc_z%beg, mpi_proc_null, bc_z%beg >= 0)
3109 recv_neighbor = merge(bc_z%end, mpi_proc_null, bc_z%end >= 0)
3111 do k = 1, min(2*ib_neighborhood_radius, num_procs_z - 1)
3114# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3116# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3117#if defined(MFC_OpenACC)
3118# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3120# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3121#elif defined(MFC_OpenMP)
3122# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3124# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3126# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3128# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3130# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3133 send_ids(i) = patch_ib(i)%gbl_patch_id
3138# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3139#if defined(MFC_OpenACC)
3140# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3142# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3143#elif defined(MFC_OpenMP)
3144# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3146# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3148# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3151# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3152#if defined(MFC_OpenACC)
3153# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3155# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3156#elif defined(MFC_OpenMP)
3157# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3159# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3161 call mpi_pack(num_ibs, 1, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3162 call mpi_pack(
send_ids, num_ibs, mpi_integer, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3163 call mpi_pack(
send_ft, 6*num_ibs, mpi_p, ib_force_send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3164 call mpi_sendrecv(ib_force_send_buf, pack_pos, mpi_packed, send_neighbor, tag, ib_force_recv_buf, buf_size, &
3165 & mpi_packed, recv_neighbor, tag, mpi_comm_world, mpi_status_ignore, ierr)
3166 if (recv_neighbor /= mpi_proc_null)
then
3168 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
3169 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ids, recv_count, mpi_integer, &
3170 & mpi_comm_world, ierr)
3171 call mpi_unpack(ib_force_recv_buf, buf_size, unpack_pos,
recv_ft, 6*recv_count, mpi_p, mpi_comm_world, ierr)
3173# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3175# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3176#if defined(MFC_OpenACC)
3177# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3179# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3180#elif defined(MFC_OpenMP)
3181# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3183# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3185# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3187# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3189# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3191# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3193 do i = 1, recv_count
3201# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3202#if defined(MFC_OpenACC)
3203# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3205# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3206#elif defined(MFC_OpenMP)
3207# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3209# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3211# 1321 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3217# 1327 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3224 integer :: i, j, k, output_idx, local_output_idx
3225 integer :: old_num_local_ibs
3226 integer :: new_count, recv_count
3227 integer :: pack_pos, unpack_pos, buf_size, patch_bytes
3228 integer :: send_neighbor, recv_neighbor, ierr
3229 integer :: dx, dy, dz, tag, nbr_idx, nreqs
3230 real(wp),
dimension(3) :: centroid
3232 type(ib_patch_parameters) :: tmp_patch
3233 integer,
dimension(num_local_ibs_max) :: local_ib_idx_old
3235 integer,
parameter :: max_nbrs = 26
3236 character(len=1),
allocatable :: send_buf(:), recv_bufs(:,:)
3237 integer,
dimension(2*max_nbrs) :: requests
3238 integer,
dimension(max_nbrs) :: recv_neighbor_list
3241 if (num_procs > 1)
then
3243 local_ib_idx_old = 0
3244 old_num_local_ibs = num_local_ibs
3245 do i = 1, num_local_ibs
3246 local_ib_idx_old(i) = patch_ib(local_ib_patch_ids(i))%gbl_patch_id
3252# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3253#if defined(MFC_OpenACC)
3254# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3256# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3257#elif defined(MFC_OpenMP)
3258# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3260# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3265 local_output_idx = 0
3267 centroid = [patch_ib(i)%x_centroid, patch_ib(i)%y_centroid, 0._wp]
3268 if (num_dims == 3) centroid(3) = patch_ib(i)%z_centroid
3271 if (f_neighborhood_ranks_own_location(centroid))
then
3272 output_idx = output_idx + 1
3273 if (i /= output_idx)
then
3274 patch_ib(output_idx) = patch_ib(i)
3278 if (f_local_rank_owns_location(centroid))
then
3279 local_output_idx = local_output_idx + 1
3280 local_ib_patch_ids(local_output_idx) = output_idx
3284 num_ibs = output_idx
3285 num_local_ibs = local_output_idx
3287# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3288#if defined(MFC_OpenACC)
3289# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3291# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3292#elif defined(MFC_OpenMP)
3293# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3295# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3300 patch_bytes = storage_size(tmp_patch)/8
3301 buf_size = storage_size(0)/8 + patch_bytes*num_local_ibs_max
3302 allocate (send_buf(buf_size), recv_bufs(buf_size, max_nbrs))
3306 call mpi_pack(0, 1, mpi_integer, send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3310 do i = 1, num_local_ibs
3311 k = local_ib_patch_ids(i)
3313 do j = 1, old_num_local_ibs
3314 if (patch_ib(k)%gbl_patch_id == local_ib_idx_old(j))
then
3320 call mpi_pack(patch_ib(k), patch_bytes, mpi_byte, send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3321 new_count = new_count + 1
3327 call mpi_pack(new_count, 1, mpi_integer, send_buf, buf_size, pack_pos, mpi_comm_world, ierr)
3328 pack_pos = storage_size(0)/8 + new_count*patch_bytes
3333 do dz = merge(-1, 0, num_dims == 3), merge(1, 0, num_dims == 3)
3336 if (dx == 0 .and. dy == 0 .and. dz == 0) cycle
3337 nbr_idx = nbr_idx + 1
3338 tag = 200 + (dx + 1)*9 + (dy + 1)*3 + (dz + 1)
3339 recv_neighbor = ib_neighbor_ranks(-dx, -dy, -dz)
3340 recv_neighbor_list(nbr_idx) = mpi_proc_null
3341 if (recv_neighbor < 0) cycle
3342 recv_neighbor_list(nbr_idx) = recv_neighbor
3344 call mpi_irecv(recv_bufs(:,nbr_idx), buf_size, mpi_packed, recv_neighbor, tag, mpi_comm_world, &
3345 & requests(nreqs), ierr)
3350 do dz = merge(-1, 0, num_dims == 3), merge(1, 0, num_dims == 3)
3353 if (dx == 0 .and. dy == 0 .and. dz == 0) cycle
3354 tag = 200 + (dx + 1)*9 + (dy + 1)*3 + (dz + 1)
3355 send_neighbor = ib_neighbor_ranks(dx, dy, dz)
3356 if (send_neighbor < 0) cycle
3358 call mpi_isend(send_buf, pack_pos, mpi_packed, send_neighbor, tag, mpi_comm_world, requests(nreqs), ierr)
3363 call mpi_waitall(nreqs, requests, mpi_statuses_ignore, ierr)
3366 do nbr_idx = 1, merge(26, 8, num_dims == 3)
3367 if (recv_neighbor_list(nbr_idx) == mpi_proc_null) cycle
3369 call mpi_unpack(recv_bufs(:,nbr_idx), buf_size, unpack_pos, recv_count, 1, mpi_integer, mpi_comm_world, ierr)
3370 do i = 1, recv_count
3371 call mpi_unpack(recv_bufs(:,nbr_idx), buf_size, unpack_pos, tmp_patch, patch_bytes, mpi_byte, mpi_comm_world, &
3375 num_ibs = num_ibs + 1
3376 if (.not. (num_ibs <=
size(patch_ib)))
then
3377# 1465 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3378 call s_mpi_abort(
"m_ibm.fpp:1465: " //
"Assertion failed: num_ibs <= size(patch_ib). " &
3379# 1465 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3380 & //
'patch_ib overflow in neighborhood handoff')
3381# 1465 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3383 patch_ib(num_ibs) = tmp_patch
3388 deallocate (send_buf, recv_bufs)
3390# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3391#if defined(MFC_OpenACC)
3392# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3394# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3395#elif defined(MFC_OpenMP)
3396# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"
3398# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_ibm.fpp"