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.

The Hall MHD model is given in wxm::apps::hallmhd::WmApplication_HALLMHD

See writeup document for details on the Hall Model.

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.

Separately from Ohm's Law, Hall MHD includes a drift pressure energy term of the form

\begin{align*} \label{eq:hall_mhd_drift_pressure_energy} \frac{\partial e}{\partial t} + \nabla\cdot\left( \frac{\gamma}{\gamma-1}p_{\mathrm{e}}\boldsymbol{w}_{\mathrm{e}}\right) =& 0 \mathrm{,} \end{align*}

where \(\boldsymbol{w}_{e} \equiv -\boldsymbol{j}/n_{\mathrm{e}}\). Application of the divergence of a vector in Cylindrical coordinates yields the following form, including the radial source term:

\begin{align*} \label{eq:hall_mhd_drift_pressure_energy_cyl_form} \frac{\partial e}{\partial t} + \frac{\partial}{\partial z} \left( \frac{\gamma}{\gamma-1}p_{\mathrm{e}}w_{\mathrm{e},z} \right) + \frac{\partial}{\partial r} \left( \frac{\gamma}{\gamma-1}p_{\mathrm{e}}w_{\mathrm{e},r} \right) =& -\frac{1}{r} \left( \frac{\gamma}{\gamma-1}p_{\mathrm{e}}w_{\mathrm{e},r} \right) \mathrm{.} \end{align*}

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

std::unique_ptr< mhd::AppSetupHelper_setup_helper
 Helper object that automates common setup routines.
 
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
 
real _min_pressure_floor
 
std::vector< int > _input_variable_indices
 
std::vector< int > _aux_variable_indices
 
real _drift_pe_factor
 
real _jxb_factor
 < Weight of drift pressure energy term, default 1.
 
real _grad_pe_factor
 < Weight of JxB term, default 1.
 
- 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

◆ _drift_pe_factor

real wxm::apps::hallmhd::CylSource::_drift_pe_factor
protected

◆ _gas_gamma

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

◆ _grad_pe_factor

real wxm::apps::hallmhd::CylSource::_grad_pe_factor
protected

< Weight of JxB term, default 1.

Used for tuning the strength of the term, if desired.

◆ _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

◆ _jxb_factor

real wxm::apps::hallmhd::CylSource::_jxb_factor
protected

< Weight of drift pressure energy term, default 1.

Used for tuning the strength of the term, if desired.

◆ _min_density_floor

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

◆ _min_pressure_floor

real wxm::apps::hallmhd::CylSource::_min_pressure_floor
protected

◆ _radial_index

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

◆ _setup_helper

std::unique_ptr<mhd::AppSetupHelper> wxm::apps::hallmhd::CylSource::_setup_helper
protected

Helper object that automates common setup routines.

◆ _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: