MFC: Simulation
High-fidelity multiphase flow simulation
Loading...
Searching...
No Matches
m_riemann_solvers.fpp.f90 File Reference

Modules

module  m_riemann_solvers
 This module features a database of approximate and exact Riemann problem solvers for the Navier-Stokes system of equations, which is supplemented by appropriate advection equations that are used to capture the material interfaces. The closure of the system is achieved by the stiffened gas equation of state and any required mixture relations. Surface tension effects are accounted for and are modeled by means of a volume force acting across the diffuse material interface region. The implementation details of viscous and capillary effects, into the Riemann solvers, may be found in Perigaud and Saurel (2005). Note that both effects are available only in the volume fraction model. At this time, the approximate and exact Riemann solvers that are listed below are available: 1) Harten-Lax-van Leer (HLL) 2) Harten-Lax-van Leer-Contact (HLLC) 3) Exact 4) Harten-Lax-van Leer Discontinuities (HLLD) - for MHD only.
 

Functions/Subroutines

subroutine, public m_riemann_solvers::s_riemann_solver (ql_prim_rsx_vf, ql_prim_rsy_vf, ql_prim_rsz_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, qr_prim_rsx_vf, qr_prim_rsy_vf, qr_prim_rsz_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
 Dispatch to the subroutines that are utilized to compute the Riemann problem solution. For additional information please reference: 1) s_hll_riemann_solver 2) s_hllc_riemann_solver 3) s_exact_riemann_solver 4) s_hlld_riemann_solver.
 
subroutine m_riemann_solvers::s_compute_viscous_source_flux (vell_vf, dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, velr_vf, dvelr_dx_vf, dvelr_dy_vf, dvelr_dz_vf, flux_src_vf, norm_dir, ix, iy, iz)
 Dispatch to the subroutines that are utilized to compute the viscous source fluxes for either Cartesian or cylindrical geometries. For more information please refer to: 1) s_compute_cartesian_viscous_source_flux 2) s_compute_cylindrical_viscous_source_flux.
 
subroutine, public m_riemann_solvers::s_hll_riemann_solver (ql_prim_rsx_vf, ql_prim_rsy_vf, ql_prim_rsz_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, qr_prim_rsx_vf, qr_prim_rsy_vf, qr_prim_rsz_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
 
subroutine, public m_riemann_solvers::s_lf_riemann_solver (ql_prim_rsx_vf, ql_prim_rsy_vf, ql_prim_rsz_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, qr_prim_rsx_vf, qr_prim_rsy_vf, qr_prim_rsz_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
 
subroutine, public m_riemann_solvers::s_hllc_riemann_solver (ql_prim_rsx_vf, ql_prim_rsy_vf, ql_prim_rsz_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, qr_prim_rsx_vf, qr_prim_rsy_vf, qr_prim_rsz_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
 This procedure is the implementation of the Harten, Lax, van Leer, and contact (HLLC) approximate Riemann solver, see Toro (1999) and Johnsen (2007). The viscous and the surface tension effects have been included by modifying the exact Riemann solver of Perigaud and Saurel (2005).
 
subroutine, public m_riemann_solvers::s_hlld_riemann_solver (ql_prim_rsx_vf, ql_prim_rsy_vf, ql_prim_rsz_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, ql_prim_vf, qr_prim_rsx_vf, qr_prim_rsy_vf, qr_prim_rsz_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, qr_prim_vf, q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
 HLLD Riemann solver resolves 5 of the 7 waves of MHD equations: 1 entropy wave, 2 Alfvén waves, 2 fast magnetosonic waves.
 
impure subroutine, public m_riemann_solvers::s_initialize_riemann_solvers_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_riemann_solvers::s_populate_riemann_states_variables_buffers (ql_prim_rsx_vf, ql_prim_rsy_vf, ql_prim_rsz_vf, dql_prim_dx_vf, dql_prim_dy_vf, dql_prim_dz_vf, qr_prim_rsx_vf, qr_prim_rsy_vf, qr_prim_rsz_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, norm_dir, ix, iy, iz)
 The purpose of this subroutine is to populate the buffers of the left and right Riemann states variables, depending on the boundary conditions.
 
subroutine m_riemann_solvers::s_initialize_riemann_solver (flux_src_vf, norm_dir)
 The computation of parameters, the allocation of memory, the association of pointers and/or the execution of any other procedures needed to configure the chosen Riemann solver algorithm.
 
subroutine m_riemann_solvers::s_compute_cylindrical_viscous_source_flux (vell_vf, dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, velr_vf, dvelr_dx_vf, dvelr_dy_vf, dvelr_dz_vf, flux_src_vf, norm_dir, ix, iy, iz)
 Computes cylindrical viscous source flux contributions for momentum and energy. Calculates Cartesian components of the stress tensor using averaged velocity derivatives and cylindrical geometric factors, then updates flux_src_vf. Assumes x-dir is axial (z_cyl), y-dir is radial (r_cyl), z-dir is azimuthal (theta_cyl for derivatives).
 
subroutine m_riemann_solvers::s_compute_cartesian_viscous_source_flux (dvell_dx_vf, dvell_dy_vf, dvell_dz_vf, dvelr_dx_vf, dvelr_dy_vf, dvelr_dz_vf, flux_src_vf, norm_dir)
 Computes Cartesian viscous source flux contributions for momentum and energy. Calculates averaged velocity gradients, gets Re and interface velocities, calls helpers for shear/bulk stress, then updates flux_src_vf.
 
subroutine m_riemann_solvers::s_calculate_shear_stress_tensor (vel_grad_avg, re_shear, divergence_v, tau_shear_out)
 Calculates shear stress tensor components. tau_ij_shear = ( (dui/dxj + duj/dxi) - (2/3)*(div_v)*delta_ij ) / Re_shear.
 
subroutine m_riemann_solvers::s_calculate_bulk_stress_tensor (re_bulk, divergence_v, tau_bulk_out)
 Calculates bulk stress tensor components (diagonal only). tau_ii_bulk = (div_v) / Re_bulk. Off-diagonals are zero.
 
subroutine m_riemann_solvers::s_finalize_riemann_solver (flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir)
 Deallocation and/or disassociation procedures that are needed to finalize the selected Riemann problem solver.
 
impure subroutine, public m_riemann_solvers::s_finalize_riemann_solvers_module
 Module deallocation and/or disassociation procedures.
 

Variables

real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::vel_src_rsx_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::vel_src_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::vel_src_rsz_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::mom_sp_rsx_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::mom_sp_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::mom_sp_rsz_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::re_avg_rsx_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::re_avg_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::re_avg_rsz_vf
 
real(wp), dimension(:), allocatable m_riemann_solvers::gs_rs
 
real(wp), dimension(:, :), allocatable m_riemann_solvers::res_gs
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::flux_rsx_vf
 The cell-boundary values of the fluxes (src - source) that are computed through the chosen Riemann problem solver, and the direct evaluation of source terms, by using the left and right states given in qK_prim_rs_vf, dqK_prim_ds_vf where ds = dx, dy or dz.
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::flux_src_rsx_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::flux_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::flux_src_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::flux_rsz_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::flux_src_rsz_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::flux_gsrc_rsx_vf
 The cell-boundary values of the geometrical source flux that are computed through the chosen Riemann problem solver by using the left and right states given in qK_prim_rs_vf. Currently 2D axisymmetric for inviscid only.
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::flux_gsrc_rsy_vf
 
real(wp), dimension(:, :, :, :), allocatable m_riemann_solvers::flux_gsrc_rsz_vf
 
Indical bounds in the s1-, s2- and s3-directions
type(int_bounds_infom_riemann_solvers::is1
 
type(int_bounds_infom_riemann_solvers::is2
 
type(int_bounds_infom_riemann_solvers::is3
 
type(int_bounds_infom_riemann_solvers::isx
 
type(int_bounds_infom_riemann_solvers::isy
 
type(int_bounds_infom_riemann_solvers::isz