m_riemann_solvers Module

@file m_riemann_solvers.f90 @brief Contains module m_riemann_solvers @author S. Bryngelson, K. Schimdmayer, V. Coralic, J. Meng, K. Maeda, T. Colonius @version 1.0 @date JUNE 06 2019 @brief 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

@param l Third coordinate index


Uses

  • module~~m_riemann_solvers~~UsesGraph module~m_riemann_solvers m_riemann_solvers module~m_mpi_proxy m_mpi_proxy module~m_riemann_solvers->module~m_mpi_proxy module~m_variables_conversion m_variables_conversion module~m_riemann_solvers->module~m_variables_conversion module~m_bubbles m_bubbles module~m_riemann_solvers->module~m_bubbles m_derived_types m_derived_types module~m_riemann_solvers->m_derived_types module~m_global_parameters m_global_parameters module~m_riemann_solvers->module~m_global_parameters module~m_mpi_proxy->m_derived_types module~m_mpi_proxy->module~m_global_parameters mpi mpi module~m_mpi_proxy->mpi module~m_variables_conversion->module~m_mpi_proxy module~m_variables_conversion->m_derived_types module~m_variables_conversion->module~m_global_parameters module~nvtx nvtx module~m_variables_conversion->module~nvtx module~m_bubbles->module~m_mpi_proxy module~m_bubbles->module~m_variables_conversion module~m_bubbles->m_derived_types module~m_bubbles->module~m_global_parameters module~m_global_parameters->m_derived_types module~m_global_parameters->mpi openacc openacc module~m_global_parameters->openacc iso_c_binding iso_c_binding module~nvtx->iso_c_binding

Used by

  • module~~m_riemann_solvers~~UsedByGraph module~m_riemann_solvers m_riemann_solvers module~m_rhs m_rhs module~m_rhs->module~m_riemann_solvers program~p_main p_main program~p_main->module~m_riemann_solvers program~p_main->module~m_rhs module~m_time_steppers m_time_steppers program~p_main->module~m_time_steppers module~m_derived_variables m_derived_variables program~p_main->module~m_derived_variables module~m_time_steppers->module~m_rhs module~m_derived_variables->module~m_time_steppers

Contents


Variables

TypeVisibilityAttributesNameInitial
procedure(s_abstract_riemann_solver), public, pointer:: s_riemann_solver=> null()

Pointer to the procedure that is utilized to calculate either the HLL, HLLC or exact intercell fluxes, based on the choice of Riemann solver


Subroutines

public subroutine s_hll_riemann_solver(qL_prim_rsx_vf_flat, qL_prim_rsy_vf_flat, qL_prim_rsz_vf_flat, dqL_prim_dx_vf, dqL_prim_dy_vf, dqL_prim_dz_vf, qL_prim_vf, qR_prim_rsx_vf_flat, qR_prim_rsy_vf_flat, qR_prim_rsz_vf_flat, 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)

Arguments

TypeIntentOptionalAttributesName
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qL_prim_rsx_vf_flat
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qL_prim_rsy_vf_flat
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qL_prim_rsz_vf_flat
type(scalar_field), intent(inout), allocatable, dimension(:):: dqL_prim_dx_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: dqL_prim_dy_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: dqL_prim_dz_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: qL_prim_vf
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qR_prim_rsx_vf_flat
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qR_prim_rsy_vf_flat
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qR_prim_rsz_vf_flat
type(scalar_field), intent(inout), allocatable, dimension(:):: dqR_prim_dx_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: dqR_prim_dy_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: dqR_prim_dz_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: qR_prim_vf
type(scalar_field), intent(in), dimension(sys_size):: q_prim_vf
type(scalar_field), intent(inout), dimension(sys_size):: flux_vf
type(scalar_field), intent(inout), dimension(sys_size):: flux_src_vf
type(scalar_field), intent(inout), dimension(sys_size):: flux_gsrc_vf
integer, intent(in) :: norm_dir
type(int_bounds_info), intent(in) :: ix
type(int_bounds_info), intent(in) :: iy
type(int_bounds_info), intent(in) :: iz

public subroutine s_hllc_riemann_solver(qL_prim_rsx_vf_flat, qL_prim_rsy_vf_flat, qL_prim_rsz_vf_flat, dqL_prim_dx_vf, dqL_prim_dy_vf, dqL_prim_dz_vf, qL_prim_vf, qR_prim_rsx_vf_flat, qR_prim_rsy_vf_flat, qR_prim_rsz_vf_flat, 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). @param qL_prim_vf The left WENO-reconstructed cell-boundary values of the cell-average primitive variables @param qR_prim_vf The right WENO-reconstructed cell-boundary values of the cell-average primitive variables @param dqL_prim_dx_vf The left WENO-reconstructed cell-boundary values of the first-order x-dir spatial derivatives @param dqL_prim_dy_vf The left WENO-reconstructed cell-boundary values of the first-order y-dir spatial derivatives @param dqL_prim_dz_vf The left WENO-reconstructed cell-boundary values of the first-order z-dir spatial derivatives @param dqR_prim_dx_vf The right WENO-reconstructed cell-boundary values of the first-order x-dir spatial derivatives @param dqR_prim_dy_vf The right WENO-reconstructed cell-boundary values of the first-order y-dir spatial derivatives @param dqR_prim_dz_vf The right WENO-reconstructed cell-boundary values of the first-order z-dir spatial derivatives @param gm_alphaL_vf Left averaged gradient magnitude @param gm_alphaR_vf Right averaged gradient magnitude @param flux_vf Intra-cell fluxes @param flux_src_vf Intra-cell fluxes sources @param flux_gsrc_vf Intra-cell geometric fluxes sources @param norm_dir Dir. splitting direction @param ix Index bounds in the x-dir @param iy Index bounds in the y-dir @param iz Index bounds in the z-dir @param q_prim_vf Cell-averaged primitive variables

Arguments

TypeIntentOptionalAttributesName
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qL_prim_rsx_vf_flat
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qL_prim_rsy_vf_flat
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qL_prim_rsz_vf_flat
type(scalar_field), intent(inout), allocatable, dimension(:):: dqL_prim_dx_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: dqL_prim_dy_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: dqL_prim_dz_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: qL_prim_vf
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qR_prim_rsx_vf_flat
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qR_prim_rsy_vf_flat
real(kind=kind(0d0)), intent(inout), dimension(startx:, starty:, startz:, 1:):: qR_prim_rsz_vf_flat
type(scalar_field), intent(inout), allocatable, dimension(:):: dqR_prim_dx_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: dqR_prim_dy_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: dqR_prim_dz_vf
type(scalar_field), intent(inout), allocatable, dimension(:):: qR_prim_vf
type(scalar_field), intent(in), dimension(sys_size):: q_prim_vf
type(scalar_field), intent(inout), dimension(sys_size):: flux_vf
type(scalar_field), intent(inout), dimension(sys_size):: flux_src_vf
type(scalar_field), intent(inout), dimension(sys_size):: flux_gsrc_vf
integer, intent(in) :: norm_dir
type(int_bounds_info), intent(in) :: ix
type(int_bounds_info), intent(in) :: iy
type(int_bounds_info), intent(in) :: iz

public subroutine s_convert_species_to_mixture_variables_riemann_acc(rho_K, gamma_K, pi_inf_K, alpha_K, alpha_rho_K, Re_K, k, l, r)

Arguments

TypeIntentOptionalAttributesName
real(kind=kind(0d0)), intent(inout) :: rho_K
real(kind=kind(0d0)), intent(inout) :: gamma_K
real(kind=kind(0d0)), intent(inout) :: pi_inf_K
real(kind=kind(0d0)), intent(inout), dimension(:):: alpha_K
real(kind=kind(0d0)), intent(inout), dimension(:):: alpha_rho_K
real(kind=kind(0d0)), intent(out), dimension(:):: Re_K

Partial densities and volume fractions

integer, intent(in) :: k
integer, intent(in) :: l
integer, intent(in) :: r

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.

Arguments

None

Module deallocation and/or disassociation procedures

Arguments

None