MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_riemann_solvers.fpp.f90 File Reference

Contains module m_riemann_solvers. More...

Go to the source code of this file.

Modules

module  m_riemann_solvers
 Approximate and exact Riemann solvers (HLL, HLLC, HLLD, exact) for the multicomponent Navier–Stokes equations.

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)
 Computes intercell fluxes using the Harten-Lax-van Leer (HLL) approximate Riemann solver.
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)
 Computes intercell fluxes using the Lax-Friedrichs (LF) approximate Riemann solver.
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

Detailed Description

Contains module m_riemann_solvers.

Definition in file m_riemann_solvers.fpp.f90.