@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
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| 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 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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 |
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
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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.
Module deallocation and/or disassociation procedures