MFC: Simulation
High-fidelity multiphase flow simulation
Loading...
Searching...
No Matches
m_rhs Module Reference

The module contains the subroutines used to calculate the right- hane-side (RHS) in the quasi-conservative, shock- and interface- capturing finite-volume framework for the multicomponent Navier- Stokes equations supplemented by appropriate advection equations used to capture the material interfaces. The system of equations is closed by the stiffened gas equation of state, as well as any required mixture relationships. Capillarity effects are included and are modeled by the means of a volume force acting across the diffuse material interface region. The implementation details of surface tension may be found in Perigaud and Saurel (2005). Note that both viscous and surface tension effects are only available in the volume fraction model. More...

Functions/Subroutines

impure subroutine, public s_initialize_rhs_module
 The computation of parameters, the allocation of memory, the association of pointers and/or the execution of any other procedures that are necessary to setup the module.
 
impure subroutine, public s_compute_rhs (q_cons_vf, q_t_sf, q_prim_vf, bc_type, rhs_vf, pb_in, rhs_pb, mv_in, rhs_mv, t_step, time_avg, stage)
 
subroutine s_compute_advection_source_term (idir, rhs_vf, q_cons_vf, q_prim_vf, flux_src_n_vf)
 
subroutine s_compute_additional_physics_rhs (idir, q_prim_vf, rhs_vf, flux_src_n_in, dq_prim_dx_vf, dq_prim_dy_vf, dq_prim_dz_vf)
 
subroutine s_reconstruct_cell_boundary_values (v_vf, vl_x, vl_y, vl_z, vr_x, vr_y, vr_z, norm_dir)
 The purpose of this subroutine is to WENO-reconstruct the left and the right cell-boundary values, including values at the Gaussian quadrature points, from the cell-averaged variables.
 
subroutine s_reconstruct_cell_boundary_values_first_order (v_vf, vl_x, vl_y, vl_z, vr_x, vr_y, vr_z, norm_dir)
 
impure subroutine, public s_finalize_rhs_module
 Module deallocation and/or disassociation procedures.
 

Variables

type(vector_fieldq_cons_qp
 
type(vector_fieldq_prim_qp
 
type(scalar_field), dimension(:), allocatable tau_re_vf
 
type(vector_fieldgm_alpha_qp
 The gradient magnitude of the volume fractions at cell-interior Gaussian quadrature points. gm_alpha_qp is calculated from individual first-order spatial derivatives located in dq_prim_ds_qp.
 
type(vector_field), dimension(:), allocatable ql_prim
 
type(vector_field), dimension(:), allocatable qr_prim
 
type(int_bounds_infoiv
 Vector field indical bounds.
 
real(wp), dimension(:, :, :), allocatable blkmod1
 
real(wp), dimension(:, :, :), allocatable blkmod2
 
real(wp), dimension(:, :, :), allocatable alpha1
 
real(wp), dimension(:, :, :), allocatable alpha2
 
real(wp), dimension(:, :, :), allocatable kterm
 
real(wp), dimension(:, :, :, :), allocatable ql_rsx_vf
 
real(wp), dimension(:, :, :, :), allocatable ql_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable ql_rsz_vf
 
real(wp), dimension(:, :, :, :), allocatable qr_rsx_vf
 
real(wp), dimension(:, :, :, :), allocatable qr_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable qr_rsz_vf
 
real(wp), dimension(:, :, :, :), allocatable dql_rsx_vf
 
real(wp), dimension(:, :, :, :), allocatable dql_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable dql_rsz_vf
 
real(wp), dimension(:, :, :, :), allocatable dqr_rsx_vf
 
real(wp), dimension(:, :, :, :), allocatable dqr_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable dqr_rsz_vf
 
real(wp), dimension(:, :, :), allocatable nbub
 Bubble number density.
 
The first-order spatial derivatives of the primitive variables at cell-

interior Gaussian quadrature points. These are WENO-reconstructed from their respective cell-average values, obtained through the application of the divergence theorem on the integral-average cell-boundary values of the primitive variables, located in qK_prim_n, where K = L or R.

type(vector_field), dimension(:), allocatable dq_prim_dx_qp
 
type(vector_field), dimension(:), allocatable dq_prim_dy_qp
 
type(vector_field), dimension(:), allocatable dq_prim_dz_qp
 
The left and right WENO-reconstructed cell-boundary values of the cell-

average gradient magnitude of volume fractions, located in gm_alpha_qp.

type(vector_field), dimension(:), allocatable dql_prim_dx_n
 
type(vector_field), dimension(:), allocatable dql_prim_dy_n
 
type(vector_field), dimension(:), allocatable dql_prim_dz_n
 
type(vector_field), dimension(:), allocatable dqr_prim_dx_n
 
type(vector_field), dimension(:), allocatable dqr_prim_dy_n
 
type(vector_field), dimension(:), allocatable dqr_prim_dz_n
 
type(vector_field), dimension(:), allocatable gm_alphal_n
 
type(vector_field), dimension(:), allocatable gm_alphar_n
 
The cell-boundary values of the fluxes (src - source, gsrc - geometrical

source). These are computed by applying the chosen Riemann problem solver .on the left and right cell-boundary values of the primitive variables

type(vector_field), dimension(:), allocatable flux_n
 
type(vector_field), dimension(:), allocatable flux_src_n
 
type(vector_field), dimension(:), allocatable flux_gsrc_n
 
Indical bounds in the x-, y- and z-directions
type(int_bounds_infoirx
 
type(int_bounds_infoiry
 
type(int_bounds_infoirz
 
type(int_bounds_infois1
 
type(int_bounds_infois2
 
type(int_bounds_infois3
 
Saved fluxes for testing
type(scalar_fieldalf_sum
 

Detailed Description

The module contains the subroutines used to calculate the right- hane-side (RHS) in the quasi-conservative, shock- and interface- capturing finite-volume framework for the multicomponent Navier- Stokes equations supplemented by appropriate advection equations used to capture the material interfaces. The system of equations is closed by the stiffened gas equation of state, as well as any required mixture relationships. Capillarity effects are included and are modeled by the means of a volume force acting across the diffuse material interface region. The implementation details of surface tension may be found in Perigaud and Saurel (2005). Note that both viscous and surface tension effects are only available in the volume fraction model.

Function/Subroutine Documentation

◆ s_compute_additional_physics_rhs()

subroutine m_rhs::s_compute_additional_physics_rhs ( integer, intent(in) idir,
type(scalar_field), dimension(sys_size), intent(in) q_prim_vf,
type(scalar_field), dimension(sys_size), intent(inout) rhs_vf,
type(scalar_field), dimension(sys_size), intent(in) flux_src_n_in,
type(scalar_field), dimension(sys_size), intent(in) dq_prim_dx_vf,
type(scalar_field), dimension(sys_size), intent(in) dq_prim_dy_vf,
type(scalar_field), dimension(sys_size), intent(in) dq_prim_dz_vf )
Here is the caller graph for this function:

◆ s_compute_advection_source_term()

subroutine m_rhs::s_compute_advection_source_term ( integer, intent(in) idir,
type(scalar_field), dimension(sys_size), intent(inout) rhs_vf,
type(vector_field), intent(inout) q_cons_vf,
type(vector_field), intent(inout) q_prim_vf,
type(vector_field), intent(inout) flux_src_n_vf )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_compute_rhs()

impure subroutine, public m_rhs::s_compute_rhs ( type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf,
type(scalar_field), intent(inout) q_t_sf,
type(scalar_field), dimension(sys_size), intent(inout) q_prim_vf,
type(integer_field), dimension(1:num_dims, 1:2), intent(in) bc_type,
type(scalar_field), dimension(sys_size), intent(inout) rhs_vf,
real(stp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:, 1:), intent(inout) pb_in,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:, 1:), intent(inout) rhs_pb,
real(stp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:, 1:), intent(inout) mv_in,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:, 1:), intent(inout) rhs_mv,
integer, intent(in) t_step,
real(wp), intent(inout) time_avg,
integer, intent(in) stage )
Here is the call graph for this function:

◆ s_finalize_rhs_module()

impure subroutine, public m_rhs::s_finalize_rhs_module

Module deallocation and/or disassociation procedures.

Here is the caller graph for this function:

◆ s_initialize_rhs_module()

impure subroutine, public m_rhs::s_initialize_rhs_module

The computation of parameters, the allocation of memory, the association of pointers and/or the execution of any other procedures that are necessary to setup the module.

Here is the caller graph for this function:

◆ s_reconstruct_cell_boundary_values()

subroutine m_rhs::s_reconstruct_cell_boundary_values ( type(scalar_field), dimension(iv%beg:iv%end), intent(in) v_vf,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_x,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_y,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_z,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_x,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_y,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_z,
integer, intent(in) norm_dir )

The purpose of this subroutine is to WENO-reconstruct the left and the right cell-boundary values, including values at the Gaussian quadrature points, from the cell-averaged variables.

Parameters
v_vfCell-average variables
vL_qpLeft WENO-reconstructed, cell-boundary values including the values at the quadrature points, of the cell-average variables
vR_qpRight WENO-reconstructed, cell-boundary values including the values at the quadrature points, of the cell-average variables
norm_dirSplitting coordinate direction
Here is the caller graph for this function:

◆ s_reconstruct_cell_boundary_values_first_order()

subroutine m_rhs::s_reconstruct_cell_boundary_values_first_order ( type(scalar_field), dimension(iv%beg:iv%end), intent(in) v_vf,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_x,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_y,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_z,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_x,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_y,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_z,
integer, intent(in) norm_dir )
Here is the caller graph for this function:

Variable Documentation

◆ alf_sum

type(scalar_field) m_rhs::alf_sum

◆ alpha1

real(wp), dimension(:, :, :), allocatable m_rhs::alpha1

◆ alpha2

real(wp), dimension(:, :, :), allocatable m_rhs::alpha2

◆ blkmod1

real(wp), dimension(:, :, :), allocatable m_rhs::blkmod1

◆ blkmod2

real(wp), dimension(:, :, :), allocatable m_rhs::blkmod2

◆ dq_prim_dx_qp

type(vector_field), dimension(:), allocatable m_rhs::dq_prim_dx_qp

◆ dq_prim_dy_qp

type(vector_field), dimension(:), allocatable m_rhs::dq_prim_dy_qp

◆ dq_prim_dz_qp

type(vector_field), dimension(:), allocatable m_rhs::dq_prim_dz_qp

◆ dql_prim_dx_n

type(vector_field), dimension(:), allocatable m_rhs::dql_prim_dx_n

◆ dql_prim_dy_n

type(vector_field), dimension(:), allocatable m_rhs::dql_prim_dy_n

◆ dql_prim_dz_n

type(vector_field), dimension(:), allocatable m_rhs::dql_prim_dz_n

◆ dql_rsx_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::dql_rsx_vf

◆ dql_rsy_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::dql_rsy_vf

◆ dql_rsz_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::dql_rsz_vf

◆ dqr_prim_dx_n

type(vector_field), dimension(:), allocatable m_rhs::dqr_prim_dx_n

◆ dqr_prim_dy_n

type(vector_field), dimension(:), allocatable m_rhs::dqr_prim_dy_n

◆ dqr_prim_dz_n

type(vector_field), dimension(:), allocatable m_rhs::dqr_prim_dz_n

◆ dqr_rsx_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::dqr_rsx_vf

◆ dqr_rsy_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::dqr_rsy_vf

◆ dqr_rsz_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::dqr_rsz_vf

◆ flux_gsrc_n

type(vector_field), dimension(:), allocatable m_rhs::flux_gsrc_n

◆ flux_n

type(vector_field), dimension(:), allocatable m_rhs::flux_n

◆ flux_src_n

type(vector_field), dimension(:), allocatable m_rhs::flux_src_n

◆ gm_alpha_qp

type(vector_field) m_rhs::gm_alpha_qp

The gradient magnitude of the volume fractions at cell-interior Gaussian quadrature points. gm_alpha_qp is calculated from individual first-order spatial derivatives located in dq_prim_ds_qp.

◆ gm_alphal_n

type(vector_field), dimension(:), allocatable m_rhs::gm_alphal_n

◆ gm_alphar_n

type(vector_field), dimension(:), allocatable m_rhs::gm_alphar_n

◆ irx

type(int_bounds_info) m_rhs::irx

◆ iry

type(int_bounds_info) m_rhs::iry

◆ irz

type(int_bounds_info) m_rhs::irz

◆ is1

type(int_bounds_info) m_rhs::is1

◆ is2

type(int_bounds_info) m_rhs::is2

◆ is3

type(int_bounds_info) m_rhs::is3

◆ iv

type(int_bounds_info) m_rhs::iv

Vector field indical bounds.

◆ kterm

real(wp), dimension(:, :, :), allocatable m_rhs::kterm

◆ nbub

real(wp), dimension(:, :, :), allocatable m_rhs::nbub

Bubble number density.

◆ q_cons_qp

type(vector_field) m_rhs::q_cons_qp

◆ q_prim_qp

type(vector_field) m_rhs::q_prim_qp

◆ ql_prim

type(vector_field), dimension(:), allocatable m_rhs::ql_prim

◆ ql_rsx_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::ql_rsx_vf

◆ ql_rsy_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::ql_rsy_vf

◆ ql_rsz_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::ql_rsz_vf

◆ qr_prim

type(vector_field), dimension(:), allocatable m_rhs::qr_prim

◆ qr_rsx_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::qr_rsx_vf

◆ qr_rsy_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::qr_rsy_vf

◆ qr_rsz_vf

real(wp), dimension(:, :, :, :), allocatable m_rhs::qr_rsz_vf

◆ tau_re_vf

type(scalar_field), dimension(:), allocatable m_rhs::tau_re_vf