|
MFC
Exascale flow solver
|
Kernel functions (Gaussian, delta) that smear Lagrangian bubble effects onto the Eulerian grid. More...
Functions/Subroutines | |
| subroutine | s_smoothfunction (nbubs, lbk_rad, lbk_vel, lbk_s, lbk_pos, updatedvar, kcomp) |
| Smear the Lagrangian bubble effects onto the Eulerian grid using the selected kernel. | |
| subroutine | s_build_cell_list (nbubs, lbk_s) |
| Builds a sorted cell list mapping each interior cell (0:m,0:n,0:p) to its resident bubbles. Uses a counting-sort on the host (O(nBubs + N_cells)). Must be called before s_gaussian each RK stage. | |
| subroutine | s_deltafunc (nbubs, lbk_rad, lbk_vel, lbk_s, updatedvar, kcomp) |
| Cell-centric delta-function smearing using the cell list (no GPU atomics). Each bubble only affects the cell it resides in. The outer GPU loop iterates over interior cells and sums contributions from resident bubbles. | |
| subroutine | s_gaussian (nbubs, lbk_rad, lbk_vel, lbk_s, lbk_pos, updatedvar, kcomp) |
| Cell-centric gaussian smearing using the cell list (no GPU atomics). Each grid cell accumulates contributions from nearby bubbles looked up via cell_list_start/count/idx. | |
| subroutine | s_applygaussian (center, cellaux, nodecoord, stddsv, strength_idx, func) |
| Evaluate the Gaussian kernel at a grid node for a given bubble center. | |
| subroutine | s_check_celloutside (cellaux, celloutside) |
| Check if the current cell is outside the computational domain including ghost cells. | |
| subroutine | s_shift_cell_symmetric_bc (cellaux, cell) |
| Relocate cells that intersect a symmetric boundary. | |
| subroutine | s_compute_stddsv (cell, volpart, stddsv) |
| Calculates the standard deviation of the bubble being smeared in the Eulerian framework. | |
| subroutine | s_get_char_vol (cellx, celly, cellz, charvol) |
| Compute the characteristic cell volume. | |
| subroutine | s_get_cell (s_cell, get_cell) |
| Convert bubble computational coordinates from real to integer cell indices. | |
| subroutine | s_compute_pressure_gradients (q_prim_vf) |
| Precompute cell-centered pressure gradients (dp/dx, dp/dy, dp/dz). | |
| real(wp) function | f_interpolate_velocity (pos, cell, i, q_prim_vf) |
| real(wp) function | f_get_bubble_force (pos, rad, rdot, vel, mg, mv, re, rho, cell, i, q_prim_vf) |
Variables | |
| real(wp), dimension(:,:,:), allocatable | grad_p_x |
| real(wp), dimension(:,:,:), allocatable | grad_p_y |
| real(wp), dimension(:,:,:), allocatable | grad_p_z |
| real(wp), dimension(:,:), allocatable | fd_coeff_x_pgrad |
| real(wp), dimension(:,:), allocatable | fd_coeff_y_pgrad |
| real(wp), dimension(:,:), allocatable | fd_coeff_z_pgrad |
| integer, dimension(:,:,:), allocatable | cell_list_start |
| integer, dimension(:,:,:), allocatable | cell_list_count |
| integer, dimension(:), allocatable | cell_list_idx |
Kernel functions (Gaussian, delta) that smear Lagrangian bubble effects onto the Eulerian grid.
| real(wp) function m_bubbles_el_kernels::f_get_bubble_force | ( | real(wp), intent(in) | pos, |
| real(wp), intent(in) | rad, | ||
| real(wp), intent(in) | rdot, | ||
| real(wp), intent(in) | vel, | ||
| real(wp), intent(in) | mg, | ||
| real(wp), intent(in) | mv, | ||
| real(wp), intent(in) | re, | ||
| real(wp), intent(in) | rho, | ||
| integer, dimension(3), intent(in) | cell, | ||
| integer, intent(in) | i, | ||
| type(scalar_field), dimension(sys_size), intent(in) | q_prim_vf ) |
Definition at line 1493 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp) function m_bubbles_el_kernels::f_interpolate_velocity | ( | real(wp), intent(in) | pos, |
| integer, dimension(3), intent(in) | cell, | ||
| integer, intent(in) | i, | ||
| type(scalar_field), dimension(sys_size), intent(in) | q_prim_vf ) |
Definition at line 1362 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_applygaussian | ( | real(wp), dimension(3), intent(in) | center, |
| integer, dimension(3), intent(in) | cellaux, | ||
| real(wp), dimension(3), intent(in) | nodecoord, | ||
| real(wp), intent(in) | stddsv, | ||
| real(wp), intent(in) | strength_idx, | ||
| real(wp), intent(out) | func ) |
Evaluate the Gaussian kernel at a grid node for a given bubble center.
3D gaussian function
2D cylindrical function:
2D cartesian function: Equation (48) from Maeda and Colonius 2018
Definition at line 780 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_build_cell_list | ( | integer, intent(in) | nbubs, |
| real(wp), dimension(1:lag_params%nbubs_glb,1:3,1:2), intent(in) | lbk_s ) |
Builds a sorted cell list mapping each interior cell (0:m,0:n,0:p) to its resident bubbles. Uses a counting-sort on the host (O(nBubs + N_cells)). Must be called before s_gaussian each RK stage.
Definition at line 409 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_check_celloutside | ( | integer, dimension(3), intent(inout) | cellaux, |
| logical, intent(out) | celloutside ) |
Check if the current cell is outside the computational domain including ghost cells.
Definition at line 874 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_compute_pressure_gradients | ( | type(scalar_field), dimension(sys_size), intent(in) | q_prim_vf | ) |
Precompute cell-centered pressure gradients (dp/dx, dp/dy, dp/dz).
Definition at line 1184 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_compute_stddsv | ( | integer, dimension(3), intent(in) | cell, |
| real(wp), intent(in) | volpart, | ||
| real(wp), intent(out) | stddsv ) |
Calculates the standard deviation of the bubble being smeared in the Eulerian framework.
Compute characteristic distance
Compute characteristic volume
Compute Standard deviaton
Definition at line 1010 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_deltafunc | ( | integer, intent(in) | nbubs, |
| real(wp), dimension(1:lag_params%nbubs_glb,1:2), intent(in) | lbk_rad, | ||
| real(wp), dimension(1:lag_params%nbubs_glb,1:2), intent(in) | lbk_vel, | ||
| real(wp), dimension(1:lag_params%nbubs_glb,1:3,1:2), intent(in) | lbk_s, | ||
| type(scalar_field), dimension(:), intent(inout) | updatedvar, | ||
| type(scalar_field), dimension(:), intent(inout) | kcomp ) |
Cell-centric delta-function smearing using the cell list (no GPU atomics). Each bubble only affects the cell it resides in. The outer GPU loop iterates over interior cells and sums contributions from resident bubbles.
Definition at line 486 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_gaussian | ( | integer, intent(in) | nbubs, |
| real(wp), dimension(1:lag_params%nbubs_glb,1:2), intent(in) | lbk_rad, | ||
| real(wp), dimension(1:lag_params%nbubs_glb,1:2), intent(in) | lbk_vel, | ||
| real(wp), dimension(1:lag_params%nbubs_glb,1:3,1:2), intent(in) | lbk_s, | ||
| real(wp), dimension(1:lag_params%nbubs_glb,1:3,1:2), intent(in) | lbk_pos, | ||
| type(scalar_field), dimension(:), intent(inout) | updatedvar, | ||
| type(scalar_field), dimension(:), intent(inout) | kcomp ) |
Cell-centric gaussian smearing using the cell list (no GPU atomics). Each grid cell accumulates contributions from nearby bubbles looked up via cell_list_start/count/idx.
Definition at line 598 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_get_cell | ( | real(wp), dimension(3), intent(in) | s_cell, |
| integer, dimension(3), intent(out) | get_cell ) |
Convert bubble computational coordinates from real to integer cell indices.
Definition at line 1134 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_get_char_vol | ( | integer, intent(in) | cellx, |
| integer, intent(in) | celly, | ||
| integer, intent(in) | cellz, | ||
| real(wp), intent(out) | charvol ) |
Compute the characteristic cell volume.
Definition at line 1080 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_shift_cell_symmetric_bc | ( | integer, dimension(3), intent(inout) | cellaux, |
| integer, dimension(3), intent(in) | cell ) |
Relocate cells that intersect a symmetric boundary.
Definition at line 940 of file m_bubbles_EL_kernels.fpp.f90.
| subroutine m_bubbles_el_kernels::s_smoothfunction | ( | integer, intent(in) | nbubs, |
| real(wp), dimension(1:lag_params%nbubs_glb,1:2), intent(in) | lbk_rad, | ||
| real(wp), dimension(1:lag_params%nbubs_glb,1:2), intent(in) | lbk_vel, | ||
| real(wp), dimension(1:lag_params%nbubs_glb,1:3,1:2), intent(in) | lbk_s, | ||
| real(wp), dimension(1:lag_params%nbubs_glb,1:3,1:2), intent(in) | lbk_pos, | ||
| type(scalar_field), dimension(:), intent(inout) | updatedvar, | ||
| type(scalar_field), dimension(:), intent(inout) | kcomp ) |
Smear the Lagrangian bubble effects onto the Eulerian grid using the selected kernel.
Definition at line 390 of file m_bubbles_EL_kernels.fpp.f90.
| integer, dimension(:,:,:), allocatable m_bubbles_el_kernels::cell_list_count |
Definition at line 373 of file m_bubbles_EL_kernels.fpp.f90.
| integer, dimension(:), allocatable m_bubbles_el_kernels::cell_list_idx |
Definition at line 374 of file m_bubbles_EL_kernels.fpp.f90.
| integer, dimension(:,:,:), allocatable m_bubbles_el_kernels::cell_list_start |
Definition at line 372 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el_kernels::fd_coeff_x_pgrad |
Definition at line 356 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el_kernels::fd_coeff_y_pgrad |
Definition at line 357 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el_kernels::fd_coeff_z_pgrad |
Definition at line 358 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el_kernels::grad_p_x |
Definition at line 342 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el_kernels::grad_p_y |
Definition at line 342 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el_kernels::grad_p_z |
Definition at line 342 of file m_bubbles_EL_kernels.fpp.f90.