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
ViscousTreatmentfor 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_solverfor more details on the definition of \(\mat{\tau}_c\).