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

The OhmsLawCylSource class calculates the Cylindrical Source term for the hyperresistive term of Ohm's Law: More...

#include <ohms_law_cyl_source.h>

Inheritance diagram for wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource:
WmApplication wxm::app_base

Detailed Description

The OhmsLawCylSource class calculates the Cylindrical Source term for the hyperresistive term of Ohm's Law:

\begin{align*} E + \nu \nabla^{2} J = 0 \mathrm{.} \end{align*}

See also
Latex Documentation: MHD Cylindrical Source Terms File
Warpy constructor: warpy::apps::mhd::hallmhd::hyperresistivity::hyperresistivity::ohms_law_cyl_source

We solve for \(E\) by formulatiing the equation as \(E_{i} + d/dx_{j} \left(F_{ij}\right) = S_{ij}\) where \(F_{ij} = \nu \nabla J_{ij} = \nu dJ_{i}/dx_{j}\) and \(S_{ij}\) are cylindrical source terms.

This is used in for wxm::dfem::variable_adjuster::auxiliary_variables::DivergenceIntegralByParts to calculate E which can then feed into MHD equations via DG calculation using wxm::apps::hallmhd::hyperresistivity::ElectricFieldEffect and wxm::apps::hallmhd::hyperresistivity::ElectricFieldEffectCylSource

The source terms are the cylindrical terms arising from the divergence of a tensor in cylindrical coordinates, assuming axisymmetry (d/dtheta = 0). These terms are:

\begin{align*} \left(\nabla \cdot \overline{\overline{F}}\right)_{r} = \frac{F_{rr} - F_{\theta\theta}}{r} \mathrm{,} \end{align*}

\begin{align*} \left(\nabla \cdot \overline{\overline{F}}\right)_{\theta} = \frac{F_{r\theta} + F_{\theta r}}{r} \mathrm{,} \end{align*}

\begin{align*} \left(\nabla \cdot \overline{\overline{F}}\right)_{z} = \frac{F_{rz}}{r} \mathrm{.} \end{align*}

NOTE: The source term is on the RHS of the equation while the Flux is on the LHS. So the Cylindrical source terms arising from the LHS fluxes have to be negated because they are put on the RHS.

Public Member Functions

 OhmsLawCylSource ()
 Constructor.
 
 ~OhmsLawCylSource () override
 Destructor.
 
void setup (const WxCryptSet &wxc) override
 Setup.
 
const std::vector< int > & getInputVariableIndexes (int flag) const override
 Get input variable indices.
 
const std::vector< int > & getAuxiliaryVariableIndexes (int flag) const override
 Get auxiliary variable indices.
 
const std::vector< int > & getOutputVariableIndexes (int flag) const override
 Get output variable indices.
 
real source (const real *q, const real *aux, const elementGeometry_t *pEG, real *source) const override
 Source definition.
 
- 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 _hyperresistive_nu
 
int _radial_index
 
int _ir
 
int _ith
 
int _iz
 
std::vector< int > _input_variable_idcs
 
std::vector< int > _aux_variable_idcs
 
std::vector< int > _output_variable_idcs
 
- 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

◆ OhmsLawCylSource()

wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::OhmsLawCylSource ( )

Constructor.

◆ ~OhmsLawCylSource()

wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::~OhmsLawCylSource ( )
override

Destructor.

Member Function Documentation

◆ getAuxiliaryVariableIndexes()

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

Get auxiliary variable indices.

Parameters
intflag
Returns
vector of J indices

Reimplemented from WmApplication.

◆ getInputVariableIndexes()

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

Get input variable indices.

Parameters
intflag
Returns
vector of gradJ indices

Reimplemented from wxm::app_base.

◆ getOutputVariableIndexes()

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

Get output variable indices.

Parameters
intflag
Returns
vector of E_hyperres indices

Reimplemented from wxm::app_base.

◆ setup()

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

Setup.

Parameters
WxCryptSetobject

Reimplemented from WmApplication.

◆ source()

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

Source definition.

Parameters
constpointer to q vars
constpointer to aux vars
constpointer to solverVariables_t struct
Vectorof source to be modified by this function
Returns
timestep

Reimplemented from WmApplication.

Member Data Documentation

◆ _aux_variable_idcs

std::vector<int> wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::_aux_variable_idcs
protected

◆ _hyperresistive_nu

real wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::_hyperresistive_nu
protected

◆ _input_variable_idcs

std::vector<int> wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::_input_variable_idcs
protected

◆ _ir

int wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::_ir
protected

◆ _ith

int wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::_ith
protected

◆ _iz

int wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::_iz
protected

◆ _output_variable_idcs

std::vector<int> wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::_output_variable_idcs
protected

◆ _radial_index

int wxm::apps::hallmhd::hyperresistivity::OhmsLawCylSource::_radial_index
protected

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