MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_bubbles_el Module Reference

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(wprmax_glb
real(wprmin_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.

Detailed Description

Tracks Lagrangian bubbles and couples their dynamics to the Eulerian flow via volume averaging.

Function/Subroutine Documentation

◆ particle_in_domain()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ particle_in_domain_physical()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_add_bubbles()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_calculate_lag_bubble_stats()

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.

Here is the caller graph for this function:

◆ s_compute_bubble_el_dynamics()

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.

Here is the call graph for this function:

◆ s_compute_bubbles_el_source()

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.

Here is the call graph for this function:

◆ s_compute_cson_from_pinf()

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.

Here is the caller graph for this function:

◆ s_finalize_lagrangian_solver()

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.

Here is the caller graph for this function:

◆ s_get_pinf()

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.

Here is the caller graph for this function:

◆ s_gradient_dir()

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.

Here is the caller graph for this function:

◆ s_initialize_bubbles_el_module()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_locate_cell()

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.

Here is the caller graph for this function:

◆ s_read_input_bubbles()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_remove_lag_bubble()

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.

◆ s_restart_bubbles()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_smear_voidfraction()

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.

Here is the caller graph for this function:

◆ s_transfer_data_to_tmp()

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.

Here is the caller graph for this function:

◆ s_update_lagrange_tdv_rk()

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.

Here is the call graph for this function:

◆ s_write_lag_bubble_stats()

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.

Here is the caller graph for this function:

◆ s_write_lag_particles()

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.

Here is the caller graph for this function:

◆ s_write_restart_lag_bubbles()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_write_void_evol()

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.

Here is the caller graph for this function:

Variable Documentation

◆ bub_dphidt

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.

◆ bub_r0

real(wp), dimension(:), allocatable m_bubbles_el::bub_r0

Initial bubble radius.

Definition at line 334 of file m_bubbles_EL.fpp.f90.

◆ gas_betac

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.

◆ gas_betat

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.

◆ gas_dmvdt

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.

◆ gas_dpdt

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.

◆ gas_mg

real(wp), dimension(:), allocatable m_bubbles_el::gas_mg

Bubble's gas mass.

Definition at line 349 of file m_bubbles_EL.fpp.f90.

◆ gas_mv

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.

◆ gas_p

real(wp), dimension(:,:), allocatable m_bubbles_el::gas_p

Pressure in the bubble.

Definition at line 366 of file m_bubbles_EL.fpp.f90.

◆ intfc_draddt

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.

◆ intfc_dveldt

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.

◆ intfc_rad

real(wp), dimension(:,:), allocatable m_bubbles_el::intfc_rad

Bubble radius.

Definition at line 368 of file m_bubbles_EL.fpp.f90.

◆ intfc_vel

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.

◆ lag_id

integer, dimension(:,:), allocatable m_bubbles_el::lag_id

Global and local IDs.

Definition at line 333 of file m_bubbles_EL.fpp.f90.

◆ lag_num_ts

integer, private m_bubbles_el::lag_num_ts
private

Number of time stages in the time-stepping scheme.

Definition at line 416 of file m_bubbles_EL.fpp.f90.

◆ mtn_dposdt

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.

◆ mtn_dveldt

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.

◆ mtn_pos

real(wp), dimension(:,:,:), allocatable m_bubbles_el::mtn_pos

Bubble's position.

Definition at line 382 of file m_bubbles_EL.fpp.f90.

◆ mtn_posprev

real(wp), dimension(:,:,:), allocatable m_bubbles_el::mtn_posprev

Bubble's previous position.

Definition at line 383 of file m_bubbles_EL.fpp.f90.

◆ mtn_s

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.

◆ mtn_vel

real(wp), dimension(:,:,:), allocatable m_bubbles_el::mtn_vel

Bubble's velocity.

Definition at line 384 of file m_bubbles_EL.fpp.f90.

◆ nbubs

integer m_bubbles_el::nbubs

Number of bubbles in the local domain.

Definition at line 429 of file m_bubbles_EL.fpp.f90.

◆ q_beta

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.

◆ q_beta_idx

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.

◆ rmax_glb

real(wp) m_bubbles_el::rmax_glb

Definition at line 430 of file m_bubbles_EL.fpp.f90.

◆ rmax_stats

real(wp), dimension(:), allocatable m_bubbles_el::rmax_stats

Maximum radius.

Definition at line 335 of file m_bubbles_EL.fpp.f90.

◆ rmin_glb

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.

◆ rmin_stats

real(wp), dimension(:), allocatable m_bubbles_el::rmin_stats

Minimum radius.

Definition at line 336 of file m_bubbles_EL.fpp.f90.