WARPXM v1.10.0
Loading...
Searching...
No Matches
wxm::apps::hallmhd::CylSource Class Reference

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>

Inheritance diagram for wxm::apps::hallmhd::CylSource:
WmApplication wxm::app_base

Detailed Description

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.

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
 
- Public Member Functions inherited from WmApplication
 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
 
- Protected Attributes inherited from WmApplication
std::string _app_name
 
WxLogStream _debStrm
 
std::vector< int > _allowedFlags
 
std::vector< std::string > _onBoundaries
 

Additional Inherited Members

- Public Types inherited from WmApplication
typedef Application_Variable WmApplication_Variable
 
typedef std::map< std::string, std::string > replaceMap_t
 
- Static Public Attributes inherited from wxm::app_base
static std::vector< int > empty
 
- Protected Member Functions inherited from wxm::app_base
virtual ~app_base ()=default
 

Constructor & Destructor Documentation

◆ CylSource()

wxm::apps::hallmhd::CylSource::CylSource ( )

◆ ~CylSource()

wxm::apps::hallmhd::CylSource::~CylSource ( )

Member Function Documentation

◆ getAuxiliaryVariableIndexes()

const std::vector< int > & wxm::apps::hallmhd::CylSource::getAuxiliaryVariableIndexes ( int  flag) const
inlineoverridevirtual

Reimplemented from WmApplication.

◆ getInputVariableIndexes()

const std::vector< int > & wxm::apps::hallmhd::CylSource::getInputVariableIndexes ( int  flag) const
inlineoverridevirtual

Reimplemented from wxm::app_base.

◆ getOutputVariableIndexes()

const std::vector< int > & wxm::apps::hallmhd::CylSource::getOutputVariableIndexes ( int  flag) const
inlineoverridevirtual

Reimplemented from wxm::app_base.

◆ setup()

void wxm::apps::hallmhd::CylSource::setup ( const WxCryptSet wxc)
overridevirtual

Reimplemented from WmApplication.

◆ source()

real wxm::apps::hallmhd::CylSource::source ( const real q,
const real aux,
const elementGeometry_t pEG,
real source 
) const
overridevirtual

Reimplemented from WmApplication.

Member Data Documentation

◆ _Ae

real wxm::apps::hallmhd::CylSource::_Ae
protected

◆ _Ai

real wxm::apps::hallmhd::CylSource::_Ai
protected

◆ _aux_variable_indices

std::vector<int> wxm::apps::hallmhd::CylSource::_aux_variable_indices
protected

◆ _gas_gamma

real wxm::apps::hallmhd::CylSource::_gas_gamma
protected

◆ _input_variable_indices

std::vector<int> wxm::apps::hallmhd::CylSource::_input_variable_indices
protected

◆ _ir

int wxm::apps::hallmhd::CylSource::_ir
protected

r index

◆ _ith

int wxm::apps::hallmhd::CylSource::_ith
protected

theta index

◆ _iz

int wxm::apps::hallmhd::CylSource::_iz
protected

z index

◆ _min_density_floor

real wxm::apps::hallmhd::CylSource::_min_density_floor
protected

◆ _radial_index

int wxm::apps::hallmhd::CylSource::_radial_index
protected

◆ _skin_depth_norm

real wxm::apps::hallmhd::CylSource::_skin_depth_norm
protected

◆ _theta

real wxm::apps::hallmhd::CylSource::_theta
protected

◆ _Ze

real wxm::apps::hallmhd::CylSource::_Ze
protected

◆ _Zi

real wxm::apps::hallmhd::CylSource::_Zi
protected

The documentation for this class was generated from the following file: