|
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 1542 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 1410 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 813 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 433 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 908 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 1223 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 1046 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 512 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 626 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 1172 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 1117 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 975 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 414 of file m_bubbles_EL_kernels.fpp.f90.
| integer, dimension(:,:,:), allocatable m_bubbles_el_kernels::cell_list_count |
Definition at line 396 of file m_bubbles_EL_kernels.fpp.f90.
| integer, dimension(:), allocatable m_bubbles_el_kernels::cell_list_idx |
Definition at line 397 of file m_bubbles_EL_kernels.fpp.f90.
| integer, dimension(:,:,:), allocatable m_bubbles_el_kernels::cell_list_start |
Definition at line 395 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el_kernels::fd_coeff_x_pgrad |
Definition at line 378 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el_kernels::fd_coeff_y_pgrad |
Definition at line 379 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el_kernels::fd_coeff_z_pgrad |
Definition at line 380 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el_kernels::grad_p_x |
Definition at line 363 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el_kernels::grad_p_y |
Definition at line 363 of file m_bubbles_EL_kernels.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el_kernels::grad_p_z |
Definition at line 363 of file m_bubbles_EL_kernels.fpp.f90.