WARPXM v1.10.0
Loading...
Searching...
No Matches
wxm::apps::functions::mhd::BennettEquilibrium Class Reference

Bennett Equilibrium for Ideal MHD Should Work for Cylindrical and Cartesian cases Ref. More...

#include <bennett_equilibrium.h>

Inheritance diagram for wxm::apps::functions::mhd::BennettEquilibrium:
WmApplication wxm::app_base

Detailed Description

Bennett Equilibrium for Ideal MHD Should Work for Cylindrical and Cartesian cases Ref.

Freidberg Rev. Mod. Phys. 1982 For momentum equilibrium: grad p = J x B For a Z-pinch configuration with B = B_theta(r) \hat(theta) J = J_z(r) \hat(z) This results in d/dr(p + Bth^2/(2mu0)) + Bth^2/(\mu0 r) = 0 where Jz = curl B / mu0 is used Bennett shows the following profiles satisfies this equilibrium: p = mu0 I^2 / (8 pi^2) * a^2 / (r^2 + a^2)^2 Jz = I/pi * a^2/(r^2 + a^2)^2 Bth = mu0 I / (2 pi) * r / (r^2 + a^2) where I = prescribed pinch current and a = prescribed pinch radius

We convert this to WARPXM units J = curl B / wct grad p = wct * J x B d/dr(p + Bth^2/2) + Bth^2/r = 0 p = wct^2 * I^2 / (8 pi^2) * a^2 / (r^2 + a^2)^2 Jz = I / pi * a^2 / (r^2 + a^2)^2 Bth = wct * I / (2 pi) * r / (r^2 + a^2) where wct = (omega_c tau)

We also assume uniform temperature, then rho = A * n = A * p / T

For warpy class see warpy.apps.functions.mhd.bennett_equilibrium

Public Member Functions

 BennettEquilibrium ()
 Constructor.
 
 ~BennettEquilibrium () override
 Destructor.
 
void setup (const WxCryptSet &wxc) override
 Setup.
 
const std::vector< int > & getOutputVariableIndexes (int flag) const override
 Grab output variable indices.
 
void evaluate_function (const real *q, const real *aux, const solverVariables_t *pSV, real *result) const override
 Redefinition of the function evaluator.
 
void bc_q (const real *q_in, const real *aux_in, const real *aux_out, const solverVariables_t *pFV, real *q_out) const override
 Redefinition of the bc.
 
- 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 ()
 
- Public Member Functions inherited from wxm::app_base
virtual const std::vector< int > & getInputVariableIndexes (int flag=0) const
 
virtual const std::vector< int > & getOutputVariableIndexes (int flag=0) const
 

Protected Attributes

std::vector< int > _mhd_fluid
 
std::string _coordinate_system
 
int _ir
 
int _ith
 
int _iz
 
real _gas_gamma
 
real _Ai
 
real _Zi
 
real _T
 
real _a
 
real _I
 
real _wct
 
real _pert
 
real _lambda
 
- 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

◆ BennettEquilibrium()

wxm::apps::functions::mhd::BennettEquilibrium::BennettEquilibrium ( )

Constructor.

◆ ~BennettEquilibrium()

wxm::apps::functions::mhd::BennettEquilibrium::~BennettEquilibrium ( )
override

Destructor.

Member Function Documentation

◆ bc_q()

void wxm::apps::functions::mhd::BennettEquilibrium::bc_q ( const real q_in,
const real aux_in,
const real aux_out,
const solverVariables_t pFV,
real q_out 
) const
overridevirtual

Redefinition of the bc.

Parameters
constq_in - input variable inside
constaux_in - auxiliary variable inside
constaux_out - auxiliary variable outside
constpFV - solver variable structure
q_out- output variable outside

Reimplemented from WmApplication.

◆ evaluate_function()

void wxm::apps::functions::mhd::BennettEquilibrium::evaluate_function ( const real q,
const real aux,
const solverVariables_t pSV,
real result 
) const
overridevirtual

Redefinition of the function evaluator.

Parameters
constq - input variable
constaux - auxiliary variable
constpSV - solver variable structure
result- output variable

Reimplemented from WmApplication.

◆ getOutputVariableIndexes()

const std::vector< int > & wxm::apps::functions::mhd::BennettEquilibrium::getOutputVariableIndexes ( int  flag) const
inlineoverridevirtual

Grab output variable indices.

Parameters
intflag - usually flag is given like flux type but usually not checked
Returns
vector of output variable indices

Reimplemented from wxm::app_base.

◆ setup()

void wxm::apps::functions::mhd::BennettEquilibrium::setup ( const WxCryptSet wxc)
overridevirtual

Setup.

Parameters
WxCryptSetobject

Reimplemented from WmApplication.

Member Data Documentation

◆ _a

real wxm::apps::functions::mhd::BennettEquilibrium::_a
protected

◆ _Ai

real wxm::apps::functions::mhd::BennettEquilibrium::_Ai
protected

◆ _coordinate_system

std::string wxm::apps::functions::mhd::BennettEquilibrium::_coordinate_system
protected

◆ _gas_gamma

real wxm::apps::functions::mhd::BennettEquilibrium::_gas_gamma
protected

◆ _I

real wxm::apps::functions::mhd::BennettEquilibrium::_I
protected

◆ _ir

int wxm::apps::functions::mhd::BennettEquilibrium::_ir
protected

◆ _ith

int wxm::apps::functions::mhd::BennettEquilibrium::_ith
protected

◆ _iz

int wxm::apps::functions::mhd::BennettEquilibrium::_iz
protected

◆ _lambda

real wxm::apps::functions::mhd::BennettEquilibrium::_lambda
protected

◆ _mhd_fluid

std::vector<int> wxm::apps::functions::mhd::BennettEquilibrium::_mhd_fluid
protected

◆ _pert

real wxm::apps::functions::mhd::BennettEquilibrium::_pert
protected

◆ _T

real wxm::apps::functions::mhd::BennettEquilibrium::_T
protected

◆ _wct

real wxm::apps::functions::mhd::BennettEquilibrium::_wct
protected

◆ _Zi

real wxm::apps::functions::mhd::BennettEquilibrium::_Zi
protected

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