|
MFC
Exascale flow solver
|
Ghost-node immersed boundary method: locates ghost/image points, computes interpolation coefficients, and corrects the flow state. More...
Functions/Subroutines | |
| impure subroutine, public | s_initialize_ibm_module () |
| Allocates memory for the variables in the IBM module. | |
| impure subroutine, public | s_ibm_setup () |
| Initializes the values of various IBM variables, such as ghost points and image points. | |
| subroutine, public | s_ibm_correct_state (q_cons_vf, q_prim_vf, pb_in, mv_in) |
| Update the conservative variables at the ghost points. | |
| impure subroutine, private | s_compute_image_points (ghost_points_in) |
| Compute the image points for each ghost point. | |
| subroutine, private | s_find_num_ghost_points (num_gps_out) |
| Count the number of ghost points for memory allocation. | |
| subroutine, private | s_find_ghost_points (ghost_points_in) |
| Locate all ghost points in the domain. | |
| subroutine, private | s_compute_interpolation_coeffs (ghost_points_in) |
| Compute the interpolation coefficients for image points. | |
| subroutine, private | s_interpolate_image_point (q_prim_vf, gp, alpha_rho_ip, alpha_ip, pres_ip, vel_ip, c_ip, r_ip, v_ip, pb_ip, mv_ip, nmom_ip, pb_in, mv_in, presb_ip, massv_ip) |
| Interpolate primitive variables to a ghost point's image point using bilinear or trilinear interpolation. | |
| impure subroutine | s_update_mib (num_ibs) |
| Resets the current indexes of immersed boundaries and replaces them after updating the position of each moving immersed boundary. | |
| subroutine | s_compute_ib_forces (q_prim_vf, fluid_pp) |
| Compute pressure and viscous forces and torques on immersed bodies via volume integration. | |
| subroutine | s_compute_centroid_offset (ib_marker) |
| Computes the center of mass for IB patch types where we are unable to determine their center of mass analytically. These patches include things like NACA airfoils and STL models. | |
| subroutine | s_compute_moment_of_inertia (ib_idx, axis) |
| Computes the moment of inertia for an immersed boundary. | |
| subroutine | s_wrap_periodic_ibs () |
| Wrap immersed boundary positions across periodic domain boundaries. | |
| subroutine | s_communicate_ib_forces (forces, torques) |
| Swaps ownership of IBs and passes ownership of IBs to neighbor processors Reduces forces and torques across the local neighborhood without a global allreduce. Accumulation phase: 2 passes per dimension receiving from the low-index (-X) neighbor. Pass 1: add received values; save what was received as recv_snap. Pass 2: send current (post-pass-1) values; add received; subtract recv_snap to remove double-counting of the direct contribution already added in pass 1. Back-propagation phase: 2 passes per dimension receiving from the high-index (+X) neighbor, each overwriting local forces with the neighbor's accumulated total. | |
| subroutine | s_handoff_ib_ownership () |
| subroutine | s_get_neighborhood_idx (gbl_idx, neighborhood_idx) |
| subroutine | s_update_ib_lookup () |
| impure subroutine, public | s_finalize_ibm_module () |
| Finalize the IBM module. | |
Variables | |
| type(integer_field), public | ib_markers |
| type(ghost_point), dimension(:), allocatable | ghost_points |
| integer, dimension(:), allocatable, public | ib_gbl_idx_lookup |
| integer | num_gps |
| Number of ghost points. | |
| logical | moving_immersed_boundary_flag |
| integer, dimension(:), allocatable | send_ids |
| integer, dimension(:), allocatable | recv_ids |
| real(wp), dimension(:,:), allocatable | send_ft |
| real(wp), dimension(:,:), allocatable | recv_ft |
| real(wp), dimension(:,:), allocatable | recv_forces_snap |
| real(wp), dimension(:,:), allocatable | recv_torques_snap |
Ghost-node immersed boundary method: locates ghost/image points, computes interpolation coefficients, and corrects the flow state.
| subroutine m_ibm::s_communicate_ib_forces | ( | real(wp), dimension(num_ibs, 3), intent(inout) | forces, |
| real(wp), dimension(num_ibs, 3), intent(inout) | torques ) |
Swaps ownership of IBs and passes ownership of IBs to neighbor processors Reduces forces and torques across the local neighborhood without a global allreduce. Accumulation phase: 2 passes per dimension receiving from the low-index (-X) neighbor. Pass 1: add received values; save what was received as recv_snap. Pass 2: send current (post-pass-1) values; add received; subtract recv_snap to remove double-counting of the direct contribution already added in pass 1. Back-propagation phase: 2 passes per dimension receiving from the high-index (+X) neighbor, each overwriting local forces with the neighbor's accumulated total.
Definition at line 2461 of file m_ibm.fpp.f90.
| subroutine m_ibm::s_compute_centroid_offset | ( | integer, intent(in) | ib_marker | ) |
Computes the center of mass for IB patch types where we are unable to determine their center of mass analytically. These patches include things like NACA airfoils and STL models.
Definition at line 2255 of file m_ibm.fpp.f90.
| subroutine m_ibm::s_compute_ib_forces | ( | type(scalar_field), dimension(1:sys_size), intent(in) | q_prim_vf, |
| type(physical_parameters), dimension(1:num_fluids), intent(in) | fluid_pp ) |
Compute pressure and viscous forces and torques on immersed bodies via volume integration.
Definition at line 2014 of file m_ibm.fpp.f90.
|
private |
Compute the image points for each ghost point.
Definition at line 1222 of file m_ibm.fpp.f90.
|
private |
Compute the interpolation coefficients for image points.
Definition at line 1582 of file m_ibm.fpp.f90.
| subroutine m_ibm::s_compute_moment_of_inertia | ( | integer, intent(in) | ib_idx, |
| real(wp), dimension(3), intent(in) | axis ) |
Computes the moment of inertia for an immersed boundary.
| [in] | axis | the axis about which we compute the moment. Only required in 3D. |
Definition at line 2314 of file m_ibm.fpp.f90.
| impure subroutine, public m_ibm::s_finalize_ibm_module |
Finalize the IBM module.
Definition at line 3432 of file m_ibm.fpp.f90.
|
private |
Locate all ghost points in the domain.
Definition at line 1450 of file m_ibm.fpp.f90.
|
private |
Count the number of ghost points for memory allocation.
Definition at line 1365 of file m_ibm.fpp.f90.
| subroutine m_ibm::s_get_neighborhood_idx | ( | integer, intent(in) | gbl_idx, |
| integer, intent(out) | neighborhood_idx ) |
| subroutine m_ibm::s_handoff_ib_ownership |
| subroutine, public m_ibm::s_ibm_correct_state | ( | type(scalar_field), dimension(sys_size), intent(inout) | q_cons_vf, |
| type(scalar_field), dimension(sys_size), intent(inout) | q_prim_vf, | ||
| real(stp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:), intent(inout), optional | pb_in, | ||
| real(stp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:), intent(inout), optional | mv_in ) |
Update the conservative variables at the ghost points.
| [in,out] | q_cons_vf | Primitive Variables |
| [in,out] | q_prim_vf | Primitive Variables |
Definition at line 817 of file m_ibm.fpp.f90.
| impure subroutine, public m_ibm::s_ibm_setup |
Initializes the values of various IBM variables, such as ghost points and image points.
Definition at line 559 of file m_ibm.fpp.f90.
| impure subroutine, public m_ibm::s_initialize_ibm_module |
Allocates memory for the variables in the IBM module.
Definition at line 414 of file m_ibm.fpp.f90.
|
private |
Interpolate primitive variables to a ghost point's image point using bilinear or trilinear interpolation.
| [in] | q_prim_vf | Primitive Variables |
Definition at line 1717 of file m_ibm.fpp.f90.
| subroutine m_ibm::s_update_ib_lookup |
| impure subroutine m_ibm::s_update_mib | ( | integer, intent(in) | num_ibs | ) |
Resets the current indexes of immersed boundaries and replaces them after updating the position of each moving immersed boundary.
Definition at line 1908 of file m_ibm.fpp.f90.
| subroutine m_ibm::s_wrap_periodic_ibs |
Wrap immersed boundary positions across periodic domain boundaries.
Definition at line 2402 of file m_ibm.fpp.f90.
| type(ghost_point), dimension(:), allocatable m_ibm::ghost_points |
Definition at line 352 of file m_ibm.fpp.f90.
| integer, dimension(:), allocatable, public m_ibm::ib_gbl_idx_lookup |
Definition at line 365 of file m_ibm.fpp.f90.
| type(integer_field), public m_ibm::ib_markers |
Definition at line 339 of file m_ibm.fpp.f90.
| logical m_ibm::moving_immersed_boundary_flag |
Definition at line 404 of file m_ibm.fpp.f90.
| integer m_ibm::num_gps |
Number of ghost points.
Definition at line 378 of file m_ibm.fpp.f90.
| real(wp), dimension(:,:), allocatable m_ibm::recv_forces_snap |
Definition at line 409 of file m_ibm.fpp.f90.
| real(wp), dimension(:,:), allocatable m_ibm::recv_ft |
Definition at line 408 of file m_ibm.fpp.f90.
| integer, dimension(:), allocatable m_ibm::recv_ids |
Definition at line 407 of file m_ibm.fpp.f90.
| real(wp), dimension(:,:), allocatable m_ibm::recv_torques_snap |
Definition at line 409 of file m_ibm.fpp.f90.
| real(wp), dimension(:,:), allocatable m_ibm::send_ft |
Definition at line 408 of file m_ibm.fpp.f90.
| integer, dimension(:), allocatable m_ibm::send_ids |
Definition at line 407 of file m_ibm.fpp.f90.