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.