WARPXM v1.10.0
|
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...
#include <cyl_source.h>
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.
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.
Public Member Functions | |
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 |
Protected Attributes | |
real | _gas_gamma |
real | _skin_depth_norm |
real | _Ai |
real | _Zi |
real | _Ze |
real | _Ae |
real | _theta |
int | _radial_index |
int | _ir |
r index | |
int | _ith |
theta index | |
int | _iz |
z index | |
real | _min_density_floor |
std::vector< int > | _input_variable_indices |
std::vector< int > | _aux_variable_indices |
![]() | |
std::string | _app_name |
WxLogStream | _debStrm |
std::vector< int > | _allowedFlags |
std::vector< std::string > | _onBoundaries |
Additional Inherited Members | |
![]() | |
typedef Application_Variable | WmApplication_Variable |
typedef std::map< std::string, std::string > | replaceMap_t |
![]() | |
static std::vector< int > | empty |
![]() | |
virtual | ~app_base ()=default |
wxm::apps::hallmhd::CylSource::CylSource | ( | ) |
wxm::apps::hallmhd::CylSource::~CylSource | ( | ) |
|
inlineoverridevirtual |
Reimplemented from WmApplication.
|
inlineoverridevirtual |
Reimplemented from wxm::app_base.
|
inlineoverridevirtual |
Reimplemented from wxm::app_base.
|
overridevirtual |
Reimplemented from WmApplication.
|
overridevirtual |
Reimplemented from WmApplication.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
r index
|
protected |
theta index
|
protected |
z index
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |