riemann_solver
Definitions of riemann solvers for a scalar transport equation.
- class LaxFriedrich(mesh: Mesh, root: Configuration = None, **default)
Lax-Friedrich scheme for the convective flux.
- get_convective_stabilisation_hdg(wind: ngs.CF, unit_vector: bla.VECTOR) bla.SCALAR
Returns the convective stabilization value, which in this case is the absolute of the wind in the normal direction.
\[\tau_c := |\bm{b} \cdot \bm{n}|\]
- get_convective_numerical_flux_dg(Ui: transportfields, Uj: transportfields, wind: bla.VECTOR, unit_vector: bla.VECTOR) bla.SCALAR
Returns the convective numerical flux on a surface, which for this linear and scalar equation is identical to standard upwinding.
\[f^*(u_i, u_j) := \frac{1}{2} \Big( \bm{f}(u_i) + \bm{f}(u_j) \Big) \cdot \bm{n} - \frac{|\lambda|}{2} ( u_j - u_i ),\]where, \(u_i\) and \(u_j\) correspond to the local solution and its neighboring solution, respectively. Note, for this scalar and linear equation: \(\lambda = \bm{b} \cdot \bm{n}\) and the flux is \(\bm{f}(u) = \bm{b} u\).
- class RiemannSolver(mesh: Mesh, root: Configuration = None, **default)
- get_convective_numerical_flux_hdg(U: transportfields, Uhat: transportfields, unit_vector: bla.VECTOR)
Returns the numerical flux based on a standard HDG Riemann solver.
\[f^*(u,\hat{u}) := \bm{f}(\hat{u}) \cdot \bm{n} + |\tau_c| (u - \hat{u}),\]where the stabilization value \(\tau_c\) is responsible for imposing the type of Riemann solver, see
get_convective_stabilisation_hdg()
.
- get_convective_stabilisation_hdg(wind: ngs.CF, unit_vector: bla.VECTOR) bla.SCALAR
Interface for computing an HDG stabilization value. This method must be implemented by subclasses!
See
LaxFriedrich
for concrete implementation.
- get_convective_numerical_flux_dg(Ui: transportfields, Uj: transportfields, wind: bla.VECTOR, unit_vector: bla.VECTOR) bla.SCALAR
Interface for computing an DG numerical flux. This method must be implemented by subclasses!
See
LaxFriedrich
for concrete implementation.