Implements the mixed Generalized-Lagrange Multiplier version of divergence cleaning in: Dedner et al., JCP 175, 645-673 (2002).
More...
Implements the mixed Generalized-Lagrange Multiplier version of divergence cleaning in: Dedner et al., JCP 175, 645-673 (2002).
This verison implements a combination of hyperbolic divergence cleaning and parabolic divergence cleaning where the parabolic part enters as a source term.
Specifically, this implements the form in Eqs. 1a, 1b, 4, 1d, and 5, with the constraint given by Eq. 17, except that the ideal part is taken care of separately in the ideal mhd app (wxm::apps::imhd::WmApplication_IMHD_Flux).
So this only adds the \(\nabla \psi\) part of Eqn. 4 and the full Eqn. 5 using Eq. 17.
The numerical flux is derived and given in the line of text after Eq. 42.
Note that in the limit \(c_{p}\rightarrow \infty\), the source term goes to 0 and the parabolic part of the divergence cleaning disappears, so this becomes purely hyperbolic divergence cleaning. This app also has a flag for the source term which can be set to false to turn off. Conversely, \(c_{p}\rightarrow 0\) leads to increased source term (and thus parabolic divergence cleaning) contribution.
For Warpy class see warpy.apps.mhd.divergence_cleaning.divergence_cleaning.mixed_glm
|
| DednerMixedGLM () |
|
| ~DednerMixedGLM () override |
|
void | setup (const WxCryptSet &wxc) override |
|
const std::vector< int > & | getInputVariableIndexes (int flag) const override |
|
const std::vector< int > & | getOutputVariableIndexes (int flag) const override |
|
real | internal_flux (const real *q, const real *aux, const solverVariables_t *pSV, std::vector< std::vector< real > > &internalFlux) const override |
|
real | numerical_flux (const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, const solverVariables_t *pFV, real *numericalFlux) const override |
|
real | source (const real *q, const real *aux, const elementGeometry_t *pEG, real *source) const override |
|
| WmApplication () |
|
virtual | ~WmApplication ()=default |
|
virtual void | setup (const WxCryptSet &wxc) |
|
virtual const std::vector< int > & | getAuxiliaryVariableIndexes (int flag=WMAPPLICATIONFLAG_NONE) const |
|
virtual const std::vector< int > & | getCrossVariableIndexes (int flag=WMAPPLICATIONFLAG_NONE) const |
|
const std::vector< std::string > & | getBoundaryNames () const |
|
bool | isOnBoundary (const std::string &boundaryName) const |
|
bool | has (int flag) const |
|
virtual real | numerical_flux (const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, const solverVariables_t *pFV, real *numericalFlux) const |
|
virtual real | internal_flux (const real *q, const real *aux, const solverVariables_t *pSV, std::vector< std::vector< real > > &internalFlux) const |
|
virtual real | source (const real *q, const real *aux, const elementGeometry_t *pEG, real *source) const |
|
virtual void | bc_q (const real *q_in, const real *aux_in, const real *aux_out, const solverVariables_t *pFV, real *q_out) const |
| Boundary Condition Application which sets the boundary condition on ghost nodes.
|
|
virtual real | bcNumericalFlux (const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, const solverVariables_t *pFV, real *numericalFlux) const |
|
virtual void | conserved_to_primitive (const real *q, const real *aux, real *w) const |
|
virtual void | primitive_to_conserved (const real *w, const real *aux, real *q) const |
|
virtual void | evaluate_function (const real *q, const real *aux, const solverVariables_t *pSV, real *result) const |
|
virtual void | bc_q_kinetic (const real *q_in, const real *aux_in, const solverVariables_t *pFV, real *q_out) const |
|
std::shared_ptr< std::string > | app_name () |
|
virtual const std::vector< int > & | getInputVariableIndexes (int flag=0) const |
|
virtual const std::vector< int > & | getOutputVariableIndexes (int flag=0) const |
|