|
MFC
Exascale flow solver
|
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_info) | m_riemann_solvers::is1 |
| type(int_bounds_info) | m_riemann_solvers::is2 |
| type(int_bounds_info) | m_riemann_solvers::is3 |
| type(int_bounds_info) | m_riemann_solvers::isx |
| type(int_bounds_info) | m_riemann_solvers::isy |
| type(int_bounds_info) | m_riemann_solvers::isz |
Contains module m_riemann_solvers.
Definition in file m_riemann_solvers.fpp.f90.