|
program | __m_riemann_solvers_fpp_f90__ |
| 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.
|
|
subroutine | s_compute_speed_of_sound (pres, rho, gamma, pi_inf, h, adv, vel_sum, c) |
|
subroutine | 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 | 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 | 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 | 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, 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, 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 | s_initialize_riemann_solver (q_prim_vf, flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz) |
| 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 | 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) |
| The goal of this subroutine is to evaluate and account for the contribution of viscous stresses in the source flux for the momentum and energy.
|
|
subroutine | s_compute_cartesian_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) |
| The goal of this subroutine is to evaluate and account for the contribution of viscous stresses in the source flux for the momentum and energy.
|
|
subroutine | s_finalize_riemann_solver (flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz) |
| Deallocation and/or disassociation procedures that are needed to finalize the selected Riemann problem solver.
|
|
subroutine | s_finalize_riemann_solvers_module () |
| Module deallocation and/or disassociation procedures.
|
|
subroutine __m_riemann_solvers_fpp_f90__::s_hllc_riemann_solver |
( |
real(kind(0d0)), dimension(startx:, starty:, startz:, 1:), intent(inout) | ql_prim_rsx_vf, |
|
|
real(kind(0d0)), dimension(startx:, starty:, startz:, 1:), intent(inout) | ql_prim_rsy_vf, |
|
|
real(kind(0d0)), dimension(startx:, starty:, startz:, 1:), intent(inout) | ql_prim_rsz_vf, |
|
|
type(scalar_field), dimension(:), intent(inout), allocatable | dql_prim_dx_vf, |
|
|
type(scalar_field), dimension(:), intent(inout), allocatable | dql_prim_dy_vf, |
|
|
type(scalar_field), dimension(:), intent(inout), allocatable | dql_prim_dz_vf, |
|
|
type(scalar_field), dimension(:), intent(inout), allocatable | ql_prim_vf, |
|
|
real(kind(0d0)), dimension(startx:, starty:, startz:, 1:), intent(inout) | qr_prim_rsx_vf, |
|
|
real(kind(0d0)), dimension(startx:, starty:, startz:, 1:), intent(inout) | qr_prim_rsy_vf, |
|
|
real(kind(0d0)), dimension(startx:, starty:, startz:, 1:), intent(inout) | qr_prim_rsz_vf, |
|
|
type(scalar_field), dimension(:), intent(inout), allocatable | dqr_prim_dx_vf, |
|
|
type(scalar_field), dimension(:), intent(inout), allocatable | dqr_prim_dy_vf, |
|
|
type(scalar_field), dimension(:), intent(inout), allocatable | dqr_prim_dz_vf, |
|
|
type(scalar_field), dimension(:), intent(inout), allocatable | qr_prim_vf, |
|
|
type(scalar_field), dimension(sys_size), intent(in) | q_prim_vf, |
|
|
type(scalar_field), dimension(sys_size), intent(inout) | flux_vf, |
|
|
type(scalar_field), dimension(sys_size), intent(inout) | flux_src_vf, |
|
|
type(scalar_field), dimension(sys_size), intent(inout) | 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 ) |
|
private |
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).
- Parameters
-
qL_prim_vf | The left WENO-reconstructed cell-boundary values of the cell-average primitive variables |
qR_prim_vf | The right WENO-reconstructed cell-boundary values of the cell-average primitive variables |
dqL_prim_dx_vf | The left WENO-reconstructed cell-boundary values of the first-order x-dir spatial derivatives |
dqL_prim_dy_vf | The left WENO-reconstructed cell-boundary values of the first-order y-dir spatial derivatives |
dqL_prim_dz_vf | The left WENO-reconstructed cell-boundary values of the first-order z-dir spatial derivatives |
dqR_prim_dx_vf | The right WENO-reconstructed cell-boundary values of the first-order x-dir spatial derivatives |
dqR_prim_dy_vf | The right WENO-reconstructed cell-boundary values of the first-order y-dir spatial derivatives |
dqR_prim_dz_vf | The right WENO-reconstructed cell-boundary values of the first-order z-dir spatial derivatives |
gm_alphaL_vf | Left averaged gradient magnitude |
gm_alphaR_vf | Right averaged gradient magnitude |
flux_vf | Intra-cell fluxes |
flux_src_vf | Intra-cell fluxes sources |
flux_gsrc_vf | Intra-cell geometric fluxes sources |
norm_dir | Dir. splitting direction |
ix | Index bounds in the x-dir |
iy | Index bounds in the y-dir |
iz | Index bounds in the z-dir |
q_prim_vf | Cell-averaged primitive variables |
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'
The computation of c_avg does not require all the variables, and therefore the non '_avg'