hdg

Definitions of conservative hdg discretizations.

class ConservativeHDG(mesh, root=None, **default)

Conservative hybridizable Discontinuous Galerkin method for compressible flow.

Find \(\left(\vec{U}_h,\hat{\vec{U}}_h, \vec{Q}_h \right) \in U_h \times \hat{U}_h \times Q_h\) such that

\[\begin{split}\sum_{T \in \mesh} \int_{T} \frac{\partial \vec{U}_h}{\partial t} \cdot \vec{V}_h \, d\bm{x} - \int_{T} \left(\vec{F}(\vec{U}_h) - \vec{G}(\vec{U}_h, \vec{Q}_h)\right) : \grad{\vec{V}_h} \, d\bm{x}+ \int_{\partial T} (\hat{\vec{F}}_h - \hat{\vec{G}}_h) \vec{n} \cdot \vec{V}_h \, d\bm{s} & = 0, \\ - \sum_{F \in \facets^{\text{int}}} \int_{F} \jump{(\hat{\vec{F}}_h - \hat{\vec{G}}_h) \vec{n}} \cdot \hat{\vec{V}}_h \, d\bm{s} + \sum_{F \in \facets^{\text{ext}}} \int_{F} \hat{\vec{\Gamma}}_h \cdot \hat{\vec{V}}_h \, d\bm{s} & = 0, \end{split}\]

for all \(\left(\vec{V}_h,\hat{\vec{V}}_h \right) \in U_h \times \hat{U}_h\). With the discrete spaces choosen as

\[\begin{split}U_h & := L^2\left( (0, t_{end}] ; \mathbb{P}^k(\mesh, \mathbb{R}^{d+2}) \right), \\ \hat{U}_h & := L^2\left( (0, t_{end}] ; \mathbb{P}^k(\facets, \mathbb{R}^{d+2}) \right). \end{split}\]

In the formulation, \(\hat{\vec{\Gamma}}_h\) represents the boundary operator.

Note:

See ViscousTreatment for the definition of \(\vec{Q}_h\) and \(Q_h\).

property scheme: ImplicitEuler | BDF2 | BDF3 | IMEXRK_ARS443 | SDIRK22 | SDIRK33 | SDIRK54 | DIRK34_LDD | DIRK43_WSO2

Time scheme for the HDG method depending on the choosen time routine.

Getter:

Returns the time scheme

Setter:

Sets the time scheme

property viscous_treatment: None | StrainHeat | Gradient | InteriorPenaltyHDG

The viscous treatment to be used for the conservative HDG method.

add_farfield_formulation(blf: dict[str, dict[str, SumOfIntegrals]], lf: dict[str, dict[str, SumOfIntegrals]], bc: FarField, bnd: str)

Implementation of the farfield boundary condition FarField.

On the boundary \(\Gamma\) we solve [4, 5]

\[\int_{\Gamma} \left[ \widehat{\mat{A}}^+_n (\widehat{\vec{U}}_h - \vec{U}_h) - \widehat{\mat{A}}^-_n(\widehat{\vec{U}}_h - \vec{U}_\infty) \right] \cdot \widehat{\vec{V}}_h = \vec{0},\]

where \(\widehat{\mat{A}}^\pm_n\) are the convective Jacobians in normal direction \(\vec{n}\).

To increse the stability of the farfield condition on boundaries which are aligned with the flow, the identity Jacobian can be used instead of the convective Jacobian [P1]

\[\int_{\Gamma} \left[\widehat{\vec{U}}_h - \frac{\vec{U}_h + \vec{U}_\infty}{2} - \widehat{\mat{Q}}_n \frac{\vec{U}_h - \vec{U}_\infty}{2} \right] \cdot \widehat{\vec{V}}_h = \vec{0}.\]
get_convective_numerical_flux(U: flowfields, Uhat: flowfields, unit_vector: CoefficientFunction)

Convective numerical flux

\[\hat{\vec{F}}_h \vec{n}^\pm := \vec{F}(\hat{\vec{U}}_h) \vec{n}^\pm + \mat{\tau}_c(\hat{\vec{U}}_h) (\vec{U}_h - \hat{\vec{U}}_h)\]
Note:

See equation \((E22a)\) in [4].

Note:

See riemann_solver for more details on the definition of \(\mat{\tau}_c\).