File ion_viscosity.hxx

Defines

ION_VISCOSITY_H
struct IonViscosity : public Component
#include <ion_viscosity.hxx>

Ion viscosity terms

Adds a viscosity to all species which are not electrons

Uses Braginskii collisional form, combined with a SOLPS-like flux limiter.

Needs to be calculated after collisions, because collision frequency is used to calculate parallel viscosity

The ion stress tensor Pi_ci is split into perpendicular and parallel pieces:

Pi_ci = Pi_ciperp + Pi_cipar

In the parallel ion momentum equation the Pi_cipar term is solved as a parallel diffusion, so is treated separately All other terms are added to Pi_ciperp, even if they are not really parallel parts

Public Functions

IonViscosity(std::string name, Options &alloptions, Solver*)

Inputs

  • <name>

    • eta_limit_alpha: float, default -1 Flux limiter coefficient. < 0 means off.

    • perpendicular: bool, default false Include perpendicular flows? Requires curvature vector and phi potential

virtual void transform(Options &state) override

Inputs

  • species

    • <name> (skips “e”)

      • pressure (skips if not present)

      • velocity (skips if not present)

      • collision_frequency

Sets in the state

  • species

    • <name>

      • momentum_source

virtual void outputVars(Options &state) override

Save variables to the output.

Private Members

BoutReal eta_limit_alpha

Flux limit coefficient.

bool perpendicular

Include perpendicular flow? (Requires phi)

Vector2D Curlb_B

Curvature vector Curl(b/B)

bool diagnose

Output additional diagnostics?

std::map<std::string, Diagnostics> diagnostics

Store diagnostics for each species.

struct Diagnostics

Per-species diagnostics.

Public Members

Field3D Pi_ciperp

Perpendicular part of Pi scalar.

Field3D Pi_cipar

Parallel part of Pi scalar.

Field3D DivJ

Divergence of current in vorticity equation.