|
MFC
Exascale flow solver
|
Tracks Lagrangian bubbles and couples their dynamics to the Eulerian flow via volume averaging. More...
Functions/Subroutines | |
| impure subroutine | s_initialize_bubbles_el_module (q_cons_vf) |
| Initializes the lagrangian subgrid bubble solver. | |
| impure subroutine | s_read_input_bubbles (q_cons_vf) |
| Read initial bubble data from input files. | |
| impure subroutine | s_add_bubbles (inputbubble, q_cons_vf, bub_id) |
| Add a new bubble from input data for a fresh start. | |
| impure subroutine | s_restart_bubbles (bub_id, save_count) |
| Restore bubble data from a restart file. | |
| subroutine | s_compute_bubble_el_dynamics (q_prim_vf, stage) |
| Contains the bubble dynamics subroutines. | |
| subroutine | s_compute_bubbles_el_source (q_cons_vf, q_prim_vf, rhs_vf) |
| Compute the Lagrangian bubble source terms and add them to the RHS. | |
| subroutine | s_compute_cson_from_pinf (q_prim_vf, pinf, cell, rhol, gamma, pi_inf, cson) |
| Compute the speed of sound from a given driving pressure. | |
| subroutine | s_smear_voidfraction () |
| Smear the bubble effects onto the Eulerian grid. | |
| subroutine | s_get_pinf (bub_id, q_prim_vf, ptype, f_pinfl, cell, preterm1, term2, romega) |
| Compute the bubble driving pressure p_inf. | |
| impure subroutine | s_update_lagrange_tdv_rk (stage) |
| Update Lagrangian bubble variables using TVD Runge-Kutta time stepping. | |
| subroutine | s_locate_cell (pos, cell, scoord) |
| Locate the cell index for a given physical position. | |
| impure subroutine | s_transfer_data_to_tmp () |
| Transfer data into the temporal variables. | |
| logical function | particle_in_domain (pos_part) |
| Determine if a bubble position lies within the current MPI subdomain including ghost cells. | |
| logical function | particle_in_domain_physical (pos_part) |
| Determine if a Lagrangian bubble is within the physical domain excluding ghost cells. | |
| subroutine | s_gradient_dir (q, dq, dir) |
| Compute the gradient of a scalar field using second-order central differences on a non-uniform grid. | |
| impure subroutine | s_write_lag_particles (qtime) |
| Write Lagrangian bubble state data at each time step. | |
| impure subroutine | s_write_void_evol (qtime) |
| Write void fraction statistics at each time step. | |
| impure subroutine | s_write_restart_lag_bubbles (t_step) |
| Write restart files for the Lagrangian bubble solver. | |
| subroutine | s_calculate_lag_bubble_stats () |
| Compute the maximum and minimum radius of each bubble. | |
| impure subroutine | s_write_lag_bubble_stats () |
| Write the maximum and minimum radius statistics for each bubble. | |
| impure subroutine | s_remove_lag_bubble (bub_id) |
| Remove a specific Lagrangian bubble when dt becomes too small. | |
| impure subroutine | s_finalize_lagrangian_solver () |
| Finalize the Lagrangian bubble solver. | |
Variables | |
| integer, dimension(:,:), allocatable | lag_id |
| Global and local IDs. | |
| real(wp), dimension(:), allocatable | bub_r0 |
| Initial bubble radius. | |
| real(wp), dimension(:), allocatable | rmax_stats |
| Maximum radius. | |
| real(wp), dimension(:), allocatable | rmin_stats |
| Minimum radius. | |
| real(wp), dimension(:), allocatable | gas_mg |
| Bubble's gas mass. | |
| real(wp), dimension(:), allocatable | gas_betat |
| heatflux model (Preston et al., 2007) | |
| real(wp), dimension(:), allocatable | gas_betac |
| massflux model (Preston et al., 2007) | |
| real(wp), dimension(:), allocatable | bub_dphidt |
| subgrid velocity potential (Maeda & Colonius, 2018) | |
| real(wp), dimension(:,:), allocatable | gas_p |
| Pressure in the bubble. | |
| real(wp), dimension(:,:), allocatable | gas_mv |
| Vapor mass in the bubble. | |
| real(wp), dimension(:,:), allocatable | intfc_rad |
| Bubble radius. | |
| real(wp), dimension(:,:), allocatable | intfc_vel |
| Velocity of the bubble interface. | |
| real(wp), dimension(:,:,:), allocatable | mtn_pos |
| Bubble's position. | |
| real(wp), dimension(:,:,:), allocatable | mtn_posprev |
| Bubble's previous position. | |
| real(wp), dimension(:,:,:), allocatable | mtn_vel |
| Bubble's velocity. | |
| real(wp), dimension(:,:,:), allocatable | mtn_s |
| Bubble's computational cell position in real format. | |
| real(wp), dimension(:,:), allocatable | intfc_draddt |
| Time derivative of bubble's radius. | |
| real(wp), dimension(:,:), allocatable | intfc_dveldt |
| Time derivative of bubble's interface velocity. | |
| real(wp), dimension(:,:), allocatable | gas_dpdt |
| Time derivative of gas pressure. | |
| real(wp), dimension(:,:), allocatable | gas_dmvdt |
| Time derivative of the vapor mass in the bubble. | |
| real(wp), dimension(:,:,:), allocatable | mtn_dposdt |
| Time derivative of the bubble's position. | |
| real(wp), dimension(:,:,:), allocatable | mtn_dveldt |
| Time derivative of the bubble's velocity. | |
| integer, private | lag_num_ts |
| Number of time stages in the time-stepping scheme. | |
| integer | nbubs |
| Number of bubbles in the local domain. | |
| real(wp) | rmax_glb |
| real(wp) | rmin_glb |
| Maximum and minimum bubbe size in the local domain. | |
| type(scalar_field), dimension(:), allocatable | q_beta |
| Projection of the lagrangian particles in the Eulerian framework. | |
| integer | q_beta_idx |
| Size of the q_beta vector field. | |
Tracks Lagrangian bubbles and couples their dynamics to the Eulerian flow via volume averaging.
| logical function m_bubbles_el::particle_in_domain | ( | real(wp), dimension(3), intent(in) | pos_part | ) |
Determine if a bubble position lies within the current MPI subdomain including ghost cells.
Definition at line 3057 of file m_bubbles_EL.fpp.f90.
| logical function m_bubbles_el::particle_in_domain_physical | ( | real(wp), dimension(3), intent(in) | pos_part | ) |
Determine if a Lagrangian bubble is within the physical domain excluding ghost cells.
Definition at line 3109 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_add_bubbles | ( | real(wp), dimension(8), intent(in) | inputbubble, |
| type(scalar_field), dimension(sys_size), intent(in) | q_cons_vf, | ||
| integer, intent(in) | bub_id ) |
Add a new bubble from input data for a fresh start.
Definition at line 1475 of file m_bubbles_EL.fpp.f90.
| subroutine m_bubbles_el::s_calculate_lag_bubble_stats |
Compute the maximum and minimum radius of each bubble.
Definition at line 3541 of file m_bubbles_EL.fpp.f90.
| subroutine m_bubbles_el::s_compute_bubble_el_dynamics | ( | type(scalar_field), dimension(sys_size), intent(inout) | q_prim_vf, |
| integer, intent(in) | stage ) |
Contains the bubble dynamics subroutines.
Definition at line 1737 of file m_bubbles_EL.fpp.f90.
| subroutine m_bubbles_el::s_compute_bubbles_el_source | ( | type(scalar_field), dimension(sys_size), intent(inout) | q_cons_vf, |
| type(scalar_field), dimension(sys_size), intent(inout) | q_prim_vf, | ||
| type(scalar_field), dimension(sys_size), intent(inout) | rhs_vf ) |
Compute the Lagrangian bubble source terms and add them to the RHS.
Definition at line 1944 of file m_bubbles_EL.fpp.f90.
| subroutine m_bubbles_el::s_compute_cson_from_pinf | ( | type(scalar_field), dimension(sys_size), intent(in) | q_prim_vf, |
| real(wp), intent(in) | pinf, | ||
| integer, dimension(3), intent(in) | cell, | ||
| real(wp), intent(in) | rhol, | ||
| real(wp), intent(in) | gamma, | ||
| real(wp), intent(in) | pi_inf, | ||
| real(wp), intent(out) | cson ) |
Compute the speed of sound from a given driving pressure.
Definition at line 2186 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_finalize_lagrangian_solver |
Finalize the Lagrangian bubble solver.
Definition at line 3689 of file m_bubbles_EL.fpp.f90.
| subroutine m_bubbles_el::s_get_pinf | ( | integer, intent(in) | bub_id, |
| type(scalar_field), dimension(sys_size), intent(in) | q_prim_vf, | ||
| integer, intent(in) | ptype, | ||
| real(wp), intent(out) | f_pinfl, | ||
| integer, dimension(3), intent(out) | cell, | ||
| real(wp), intent(out), optional | preterm1, | ||
| real(wp), intent(out), optional | term2, | ||
| real(wp), intent(out), optional | romega ) |
Compute the bubble driving pressure p_inf.
Find current bubble cell
Getting p_cell in terms of only the current cell by interpolation Getting the cell volulme as Omega
Obtain bilinear interpolation coefficients, based on the current location of the bubble.
Perform bilinear interpolation
check if the current cell is outside the computational domain or not (including ghost cells)
Obtaining the cell volulme
Update values
Definition at line 2354 of file m_bubbles_EL.fpp.f90.
| subroutine m_bubbles_el::s_gradient_dir | ( | real(stp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:), intent(inout) | q, |
| real(stp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:), intent(inout) | dq, | ||
| integer, intent(in) | dir ) |
Compute the gradient of a scalar field using second-order central differences on a non-uniform grid.
Definition at line 3125 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_initialize_bubbles_el_module | ( | type(scalar_field), dimension(sys_size), intent(inout) | q_cons_vf | ) |
Initializes the lagrangian subgrid bubble solver.
Definition at line 449 of file m_bubbles_EL.fpp.f90.
| subroutine m_bubbles_el::s_locate_cell | ( | real(wp), dimension(3), intent(in) | pos, |
| integer, dimension(3), intent(inout) | cell, | ||
| real(wp), dimension(3), intent(out) | scoord ) |
Locate the cell index for a given physical position.
Definition at line 2958 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_read_input_bubbles | ( | type(scalar_field), dimension(sys_size), intent(inout) | q_cons_vf | ) |
Read initial bubble data from input files.
Definition at line 1351 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_remove_lag_bubble | ( | integer, intent(in) | bub_id | ) |
Remove a specific Lagrangian bubble when dt becomes too small.
Definition at line 3634 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_restart_bubbles | ( | integer, intent(inout) | bub_id, |
| integer, intent(inout) | save_count ) |
Restore bubble data from a restart file.
Definition at line 1583 of file m_bubbles_EL.fpp.f90.
| subroutine m_bubbles_el::s_smear_voidfraction |
Smear the bubble effects onto the Eulerian grid.
Definition at line 2256 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_transfer_data_to_tmp |
Transfer data into the temporal variables.
Definition at line 3007 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_update_lagrange_tdv_rk | ( | integer, intent(in) | stage | ) |
Update Lagrangian bubble variables using TVD Runge-Kutta time stepping.
Definition at line 2631 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_write_lag_bubble_stats |
Write the maximum and minimum radius statistics for each bubble.
Definition at line 3588 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_write_lag_particles | ( | real(wp), intent(in) | qtime | ) |
Write Lagrangian bubble state data at each time step.
Definition at line 3265 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_write_restart_lag_bubbles | ( | integer, intent(in) | t_step | ) |
Write restart files for the Lagrangian bubble solver.
Definition at line 3401 of file m_bubbles_EL.fpp.f90.
| impure subroutine m_bubbles_el::s_write_void_evol | ( | real(wp), intent(in) | qtime | ) |
Write void fraction statistics at each time step.
Definition at line 3308 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:), allocatable m_bubbles_el::bub_dphidt |
subgrid velocity potential (Maeda & Colonius, 2018)
Definition at line 352 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:), allocatable m_bubbles_el::bub_r0 |
Initial bubble radius.
Definition at line 334 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:), allocatable m_bubbles_el::gas_betac |
massflux model (Preston et al., 2007)
Definition at line 351 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:), allocatable m_bubbles_el::gas_betat |
heatflux model (Preston et al., 2007)
Definition at line 350 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el::gas_dmvdt |
Time derivative of the vapor mass in the bubble.
Definition at line 401 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el::gas_dpdt |
Time derivative of gas pressure.
Definition at line 400 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:), allocatable m_bubbles_el::gas_mg |
Bubble's gas mass.
Definition at line 349 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el::gas_mv |
Vapor mass in the bubble.
Definition at line 367 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el::gas_p |
Pressure in the bubble.
Definition at line 366 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el::intfc_draddt |
Time derivative of bubble's radius.
Definition at line 398 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el::intfc_dveldt |
Time derivative of bubble's interface velocity.
Definition at line 399 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el::intfc_rad |
Bubble radius.
Definition at line 368 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:), allocatable m_bubbles_el::intfc_vel |
Velocity of the bubble interface.
Definition at line 369 of file m_bubbles_EL.fpp.f90.
| integer, dimension(:,:), allocatable m_bubbles_el::lag_id |
Global and local IDs.
Definition at line 333 of file m_bubbles_EL.fpp.f90.
|
private |
Number of time stages in the time-stepping scheme.
Definition at line 416 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el::mtn_dposdt |
Time derivative of the bubble's position.
Definition at line 402 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el::mtn_dveldt |
Time derivative of the bubble's velocity.
Definition at line 403 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el::mtn_pos |
Bubble's position.
Definition at line 382 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el::mtn_posprev |
Bubble's previous position.
Definition at line 383 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el::mtn_s |
Bubble's computational cell position in real format.
Definition at line 385 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:,:,:), allocatable m_bubbles_el::mtn_vel |
Bubble's velocity.
Definition at line 384 of file m_bubbles_EL.fpp.f90.
| integer m_bubbles_el::nbubs |
Number of bubbles in the local domain.
Definition at line 429 of file m_bubbles_EL.fpp.f90.
| type(scalar_field), dimension(:), allocatable m_bubbles_el::q_beta |
Projection of the lagrangian particles in the Eulerian framework.
Definition at line 432 of file m_bubbles_EL.fpp.f90.
| integer m_bubbles_el::q_beta_idx |
Size of the q_beta vector field.
Definition at line 433 of file m_bubbles_EL.fpp.f90.
| real(wp) m_bubbles_el::rmax_glb |
Definition at line 430 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:), allocatable m_bubbles_el::rmax_stats |
Maximum radius.
Definition at line 335 of file m_bubbles_EL.fpp.f90.
| real(wp) m_bubbles_el::rmin_glb |
Maximum and minimum bubbe size in the local domain.
Definition at line 430 of file m_bubbles_EL.fpp.f90.
| real(wp), dimension(:), allocatable m_bubbles_el::rmin_stats |
Minimum radius.
Definition at line 336 of file m_bubbles_EL.fpp.f90.