Implements the source terms in the Hall terms that are added to Ideal MHD to produce the Hall MHD equations arising from a cylindrical geometry.
More...
Implements the source terms in the Hall terms that are added to Ideal MHD to produce the Hall MHD equations arising from a cylindrical geometry.
- See also
- Latex Documentation: MHD Cylindrical Source Terms File
-
Warpy constructor: warpy.apps.mhd.hallmhd.hallmhd.cyl_source
For Hall MHD, the Ohm's Law terms are:
\begin{align*}
\boldsymbol{E}_\mathrm{Hall}
=&
\frac{1}{n_{\mathrm{e}}}\left[
\boldsymbol{j}\times\boldsymbol{B} - \left(\frac{\delta_{p}}{L}\right)\nabla
p_{\mathrm{e}} \right] \mathrm{,}
\end{align*}
or, in component form:
\begin{align*}
\boldsymbol{E}_{\mathrm{Hall}}
=&
\frac{1}{n_{\mathrm{e}}}
\left[\left(j_{r}B_{\theta} - j_{\theta}B_{r}\right) -
\left(\frac{\delta_{p}}{L}\right)\left(\nabla p_{e}\right)_{z}\right]
*\boldsymbol{\hat{z}} \nonumber
\\
+&
\frac{1}{n_{\mathrm{e}}}
\left[\left(j_{\theta}B_{z} - j_{z}B_{\theta}\right) -
\left(\frac{\delta_{p}}{L}\right)\left(\nabla p_{e}\right)_{r}\right]
*\boldsymbol{\hat{r}} \nonumber
\\
+&
\frac{1}{n_{\mathrm{e}}}
\left[\left(j_{z}B_{r} - j_{r}B_{z}\right) -
\left(\frac{\delta_{p}}{L}\right)\left(\nabla p_{e}\right)_{\theta}\right]
\boldsymbol{\hat{\theta}}
\mathrm{.}
\end{align*}
The components of \(\boldsymbol{j}\) are given by
\begin{align*}
\boldsymbol{j}
=&
\begin{pmatrix}
j_{r}\\
j_{\theta}\\
j_{z}
\end{pmatrix}
=
\left(\frac{\delta_{p}}{L}\right)
\begin{pmatrix}
\left(\nabla\times\boldsymbol{B}\right)_{r}\\
\left(\nabla\times\boldsymbol{B}\right)_{\theta}\\
\left(\nabla\times\boldsymbol{B}\right)_{z}
\end{pmatrix}
=
\left(\frac{\delta_{p}}{L}\right)
\begin{pmatrix}
-\frac{\partial B_{\theta}}{\partial z}\\
\frac{\partial B_{r}}{\partial z} - \frac{\partial B_{z}}{\partial r}\\
\frac{\partial B_{\theta}}{\partial r} + \frac{B_{\theta}}{r}
\end{pmatrix}
\mathrm{.}
\end{align*}
This leads to the Hall Terms in the 2D Axisymmetric MHD equations resulting in
\begin{align*}
\frac{\partial}{\partial t}
\begin{pmatrix}
\rho \\
\rho v_{z} \\
\rho v_{r} \\
\rho v_{\theta} \\
e_{t} \\
B_{z} \\
B_{r} \\
B_{\theta}
\end{pmatrix}
+&
\frac{\partial}{\partial z}
\begin{pmatrix}
0 \\
0 \\
0 \\
0 \\
E_{\mathrm{Hall,}r}B_{\theta} - E_{\mathrm{Hall,}\theta}B_{r} \\
0 \\
-E_{\mathrm{Hall,}\theta}\\
+E_{\mathrm{Hall,}r}
\end{pmatrix}
+
\frac{\partial}{\partial r}
\begin{pmatrix}
0 \\
0 \\
0 \\
0 \\
E_{\mathrm{Hall,}\theta}B_{z} - E_{\mathrm{Hall,}z}B_{\theta} \\
+E_{\mathrm{Hall,}\theta} \\
0 \\
-E_{\mathrm{Hall,}z} \\
\end{pmatrix}
=
\begin{pmatrix}
0 \\
0 \\
0 \\
0 \\
-\frac{E_{\mathrm{Hall,}\theta}B_{z} - E_{\mathrm{Hall,}z}B_{\theta}}{r} \\
-\frac{E_{\mathrm{Hall,}\theta}}{r} \\
0 \\
0
\end{pmatrix}
\mathrm{,}
\end{align*}
where the source terms on the RHS are what are implemented here.
To avoid \(\frac{1}{r}\) issues, this should be used with Gaussian Quadrature nodes.
|
| CylSource () |
|
| ~CylSource () |
|
void | setup (const WxCryptSet &wxc) override |
|
const std::vector< int > & | getInputVariableIndexes (int flag) const override |
|
const std::vector< int > & | getAuxiliaryVariableIndexes (int flag) const override |
|
const std::vector< int > & | getOutputVariableIndexes (int flag) 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 |
|