|
MFC: Simulation
High-fidelity multiphase flow simulation
|
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_field) | q_cons_qp |
| type(vector_field) | q_prim_qp |
| type(scalar_field), dimension(:), allocatable | tau_re_vf |
| type(vector_field) | 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. | |
| type(vector_field), dimension(:), allocatable | ql_prim |
| type(vector_field), dimension(:), allocatable | qr_prim |
| type(int_bounds_info) | iv |
| 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_info) | irx |
| type(int_bounds_info) | iry |
| type(int_bounds_info) | irz |
| type(int_bounds_info) | is1 |
| type(int_bounds_info) | is2 |
| type(int_bounds_info) | is3 |
Saved fluxes for testing | |
| type(scalar_field) | alf_sum |
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.
| 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 ) |
| 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 ) |
| 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 ) |
| impure subroutine, public m_rhs::s_finalize_rhs_module |
Module deallocation and/or disassociation procedures.
| 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.
| 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.
| v_vf | Cell-average variables |
| vL_qp | Left WENO-reconstructed, cell-boundary values including the values at the quadrature points, of the cell-average variables |
| vR_qp | Right WENO-reconstructed, cell-boundary values including the values at the quadrature points, of the cell-average variables |
| norm_dir | Splitting coordinate direction |
| 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 ) |
| type(scalar_field) m_rhs::alf_sum |
| real(wp), dimension(:, :, :), allocatable m_rhs::alpha1 |
| real(wp), dimension(:, :, :), allocatable m_rhs::alpha2 |
| real(wp), dimension(:, :, :), allocatable m_rhs::blkmod1 |
| real(wp), dimension(:, :, :), allocatable m_rhs::blkmod2 |
| type(vector_field), dimension(:), allocatable m_rhs::dq_prim_dx_qp |
| type(vector_field), dimension(:), allocatable m_rhs::dq_prim_dy_qp |
| type(vector_field), dimension(:), allocatable m_rhs::dq_prim_dz_qp |
| type(vector_field), dimension(:), allocatable m_rhs::dql_prim_dx_n |
| type(vector_field), dimension(:), allocatable m_rhs::dql_prim_dy_n |
| type(vector_field), dimension(:), allocatable m_rhs::dql_prim_dz_n |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::dql_rsx_vf |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::dql_rsy_vf |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::dql_rsz_vf |
| type(vector_field), dimension(:), allocatable m_rhs::dqr_prim_dx_n |
| type(vector_field), dimension(:), allocatable m_rhs::dqr_prim_dy_n |
| type(vector_field), dimension(:), allocatable m_rhs::dqr_prim_dz_n |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::dqr_rsx_vf |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::dqr_rsy_vf |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::dqr_rsz_vf |
| type(vector_field), dimension(:), allocatable m_rhs::flux_gsrc_n |
| type(vector_field), dimension(:), allocatable m_rhs::flux_n |
| type(vector_field), dimension(:), allocatable m_rhs::flux_src_n |
| 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.
| type(vector_field), dimension(:), allocatable m_rhs::gm_alphal_n |
| type(vector_field), dimension(:), allocatable m_rhs::gm_alphar_n |
| type(int_bounds_info) m_rhs::irx |
| type(int_bounds_info) m_rhs::iry |
| type(int_bounds_info) m_rhs::irz |
| type(int_bounds_info) m_rhs::is1 |
| type(int_bounds_info) m_rhs::is2 |
| type(int_bounds_info) m_rhs::is3 |
| type(int_bounds_info) m_rhs::iv |
Vector field indical bounds.
| real(wp), dimension(:, :, :), allocatable m_rhs::kterm |
| real(wp), dimension(:, :, :), allocatable m_rhs::nbub |
Bubble number density.
| type(vector_field) m_rhs::q_cons_qp |
| type(vector_field) m_rhs::q_prim_qp |
| type(vector_field), dimension(:), allocatable m_rhs::ql_prim |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::ql_rsx_vf |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::ql_rsy_vf |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::ql_rsz_vf |
| type(vector_field), dimension(:), allocatable m_rhs::qr_prim |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::qr_rsx_vf |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::qr_rsy_vf |
| real(wp), dimension(:, :, :, :), allocatable m_rhs::qr_rsz_vf |
| type(scalar_field), dimension(:), allocatable m_rhs::tau_re_vf |