File snb.hxx

namespace bout

SNB model

class HeatFluxSNB
#include <snb.hxx>

Calculate heat flux using the Shurtz-Nicolai-Busquet (SNB) model

Useful references:

Braginskii equations by R.Fitzpatrick: http://farside.ph.utexas.edu/teaching/plasma/Plasmahtml/node35.html

J.P.Brodrick et al 2017: https://doi.org/10.1063/1.5001079 and https://arxiv.org/abs/1704.08963

Shurtz, Nicolai and Busquet 2000: https://doi.org/10.1063/1.1289512

Public Functions

HeatFluxSNB()

Construct using the options in the “snb” section.

HeatFluxSNB(Options &options)

Construct using options in given section.

~HeatFluxSNB()
HeatFluxSNB(HeatFluxSNB&&)
HeatFluxSNB &operator=(HeatFluxSNB&&)
HeatFluxSNB(const HeatFluxSNB&)
HeatFluxSNB &operator=(const HeatFluxSNB&)
Field3D divHeatFlux(const Field3D &Te, const Field3D &Ne, Field3D *Div_Q_SH_out = nullptr)

Calculate divergence of heat flux Te: Electron temperature in eV Ne: Electron density in m^-3

Div_Q_SH_out : An optional output field to store the Spitzer-Harm heat flux

Returns the divergence of heat flux in units of eV per cubic meter per second -> multiply by e=1.602e-19 to get Watts per cubic meter.

Private Functions

BoutReal int_beta4_exp(BoutReal beta)

Indefinite integral of beta^4 * exp(-beta) with constant set to zero

BoutReal groupWeight(BoutReal beta_min, BoutReal beta_max)

(1/24) * Integral of beta^4 * exp(-beta) from beta_min to beta_max

Private Members

std::unique_ptr<InvertPar> invertpar = {nullptr}

Parallel inversion of tridiagonal matrices.

BoutReal Z = {1}

Average ion charge (1 = Hydrogen)

BoutReal r = {2}

Electron-electron mean free path scaling factor.

BoutReal beta_max = {10.0}

Maximum energy group to consider (multiple of eT)

int ngroups = {40}

Number of energy groups.