Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website
Loading...
Searching...
No Matches
riemann_solver.h File Reference

Approximate Riemann solvers. More...

#include <string>
#include <unordered_map>
#include <Kokkos_Core.hpp>
#include "common_typedef.h"
#include "common_math.h"
#include "teno.h"

Go to the source code of this file.

Classes

struct  riemann::SideThermo
 Thermodynamics of one side of a face for a gas mixture: the frozen ratio of specific heats and the energy offset, with rho E = p / (gamma - 1) + rho e0 + rho |u|^2 / 2 (e0 = 0 for a calorically perfect gas), and the pair the wave-speed estimates use: the same but in double flux, where both fluxes of a face estimate the waves with each side's own cell's, so that their mass fluxes agree at contacts. More...
 
struct  riemann::Rusanov
 
struct  riemann::HLL
 
struct  riemann::HLLC
 
struct  riemann::Roe
 Roe's approximate Riemann solver with Harten's entropy fix on the acoustic waves. More...
 
struct  riemann::RHLL
 Rotated-hybrid HLL-Roe solver (Nishikawa & Kitamura, J. Comput. Phys. 227, 2008): HLL along the direction of the velocity difference (normal to shocks, where Roe's lack of dissipation causes carbuncles) and Roe across it (shear layers and contacts stay sharp). More...
 
struct  riemann::KEEP
 Kinetic-energy- and entropy-preserving central flux (KEEP; Kuya, Totani & Kawai, J. Comput. Phys. 375, 2018) with arithmetic means: mass C = mean(rho) mean(u).n, momentum C mean(u) + mean(p) n, energy C (mean(e) + u_L . u_R / 2) + (p_L u_R.n + p_R u_L.n) / 2. Its momentum flux has Jameson's form, so with cell values on both sides the convective fluxes change the kinetic energy only by the pressure work mean(p) (u_R - u_L).n per face. No dissipation: for the hybrid convective flux (docs/design/les.md, section 4.3). More...
 

Namespaces

namespace  riemann
 

Enumerations

enum class  RiemannSolverType {
  RUSANOV , HLL , HLLC , ROE ,
  RHLL
}
 

Functions

KOKKOS_INLINE_FUNCTION void riemann::physical_flux (const rtype *W, const rtype *n, const rtype gamma, rtype *U, rtype *F)
 Physical Euler flux of state W through unit normal n.
 
KOKKOS_INLINE_FUNCTION void riemann::wave_speeds_einfeldt (const rtype *W_l, const rtype *W_r, const rtype u_l_n, const rtype u_r_n, const rtype gamma, rtype &S_l, rtype &S_r)
 Einfeldt (HLLE) wave speed estimates using Roe averages (Einfeldt et al. 1991; Toro 10.52).
 
KOKKOS_INLINE_FUNCTION void riemann::physical_flux (const rtype *W, const rtype *n, const SideThermo &th, rtype *U, rtype *F)
 Physical Euler flux of state W of a mixture side through unit normal n.
 
KOKKOS_INLINE_FUNCTION void riemann::wave_speeds_einfeldt (const rtype *W_l, const rtype *W_r, const rtype u_l_n, const rtype u_r_n, const SideThermo &th_l, const SideThermo &th_r, rtype &S_l, rtype &S_r)
 Einfeldt wave speed estimates for a mixture: the Roe average of the perfect-gas estimates with sqrt(rho)-weighted averages of gamma and e0, a^2 = (gamma - 1) (H - e0 - |u|^2 / 2). Equal to the perfect-gas estimates when both sides share gamma and e0 = 0.
 

Detailed Description

Approximate Riemann solvers.

Author
Matthew Bonanni (mbona.nosp@m.nni0.nosp@m.01@gm.nosp@m.ail..nosp@m.com)
Version
0.2
Date
2024-01-17

Enumeration Type Documentation

◆ RiemannSolverType

Enumerator
RUSANOV 
HLL 
HLLC 
ROE 
RHLL