rizer.cantera_ext
C++ Cantera 1-D plasma extension (custom Domain1D models and solvers)
Loading...
Searching...
No Matches
rizer::PlasmaChannelConfig Struct Reference

Everything PlasmaChannel1D needs to build itself. More...

#include <PlasmaChannel1D.h>

Public Attributes

std::string mech
 Cantera mechanism (YAML) file path.
std::string phase
 Phase name within mech; must be a PlasmaPhase carrying "e-".
std::size_t n_points = 1
 Number of radial grid points [-]. Ignored when grid is given.
double R_max = 1.0e-3
 Outer (wall) radius R [m]. Ignored when grid is given.
std::vector< double > grid
 Explicit radial grid [m], increasing from 0.
double rho = 0.1
 Mass density rho [kg/m^3] held at every node, unless init_rho_r/init_rho_v give a radial profile.
std::vector< double > initTg_r
 Tg(r) at t=0: _r is the radius axis [m], _v the temperature at that radius [K].
std::vector< double > initTg_v
std::vector< double > initTe_r
 Te(r) at t=0 [m], [K]. Python: Te0 (uniform) or Te_profile.
std::vector< double > initTe_v
std::vector< double > initY_r
 Y(r) at t=0.
std::vector< double > initY_v
std::vector< double > init_rho_r
 rho(r) at t=0 [m], [kg/m^3]; every value must be > 0.
std::vector< double > init_rho_v
std::vector< double > init_ur_r
 u_r(r) at t=0 [m], [m/s].
std::vector< double > init_ur_v
bool reacting = true
 Include finite-rate chemistry source terms [-].
std::vector< double > species_h0k
 Per-species standard enthalpy of formation at 0 K [J/kmol], forwarded to PlasmaCellConfig::species_h0k (see there).
double electric_field = 0.0
 Applied electric field E [V/m], held at every node until the driver changes it through setElectricField().
std::vector< double > sigma_T
 Electrical conductivity table sigma(Te) [K], [S/m].
std::vector< double > sigma_v
double nu_E = 0.0
 Elastic electron-heavy energy-exchange frequency nu_E [1/s].
double nu_m = 0.0
 Electron momentum-transfer frequency nu_m [1/s].
std::vector< double > nu_m_T
 Te-dependent nu_m(Te) table [K], [1/s].
std::vector< double > nu_m_v
std::vector< double > kappa_H_T
 Heavy-pool thermal conductivity table kappa_H(Tg) [K], [W/m/K].
std::vector< double > kappa_H_v
std::vector< double > kappa_e_T
 Electron thermal conductivity table kappa_e(Te) [K], [W/m/K].
std::vector< double > kappa_e_v
double D_species = 0.0
 Constant scalar species mass diffusivity D [m^2/s].
std::vector< CollisionModel::SpeciesSpec > specs
 Composition-resolved collision model, preferred over the legacy sigma/nu_m/nu_E closures above and mutually exclusive with them (see PlasmaChannel1D.cpp).
double Te_min = 200.0
 Collision-model Te grid lower bound [K].
double Te_max = 1.0e5
 Collision-model Te grid upper bound [K].
std::size_t Te_n = 400
 Collision-model Te grid point count [-]. Read only with specs.
double T_amb = 300.0
 Wall/ambient temperature T_amb [K], and the outer-wall Dirichlet ghost value for Tg.
double p_amb = -1.0
 Ambient pressure [Pa] handed to the hydro sub-step.
std::vector< double > Y_amb
 Ambient mass fractions [-], length K, summing to 1: the composition of the gas OUTSIDE the domain.
std::string outer_bc_mode = "ambient_ghost"
 Outer boundary treatment: "ambient_ghost" (the default, and the accurate choice while R_max sits beyond the front) or "pressure_outlet".
bool hydrodynamics = false
 Radial hydrodynamics (NUMERICS.md section 4.2's Strang split).
double cfl = 0.9
 Courant number for the hydro sub-step's own CFL sub-cycling [-].
double hydro_substep = 0.0
 Pinned hydro sub-step [s]; 0 lets the CFL bound choose it.

Detailed Description

Everything PlasmaChannel1D needs to build itself.

Field order follows solve_1D_unsteady_discharge's keyword order in bindings.cpp, so the two can be read side by side.

Definition at line 126 of file PlasmaChannel1D.h.

Member Data Documentation

◆ cfl

double rizer::PlasmaChannelConfig::cfl = 0.9

Courant number for the hydro sub-step's own CFL sub-cycling [-].

Definition at line 269 of file PlasmaChannel1D.h.

◆ D_species

double rizer::PlasmaChannelConfig::D_species = 0.0

Constant scalar species mass diffusivity D [m^2/s].

Zero freezes species transport.

Definition at line 219 of file PlasmaChannel1D.h.

◆ electric_field

double rizer::PlasmaChannelConfig::electric_field = 0.0

Applied electric field E [V/m], held at every node until the driver changes it through setElectricField().

A field SCHEDULE is not here: only the solver steps time, so ChannelOptions::Et_t and Et_v carry it. Python: electric_field (scalar case).

Definition at line 188 of file PlasmaChannel1D.h.

◆ grid

std::vector<double> rizer::PlasmaChannelConfig::grid

Explicit radial grid [m], increasing from 0.

Empty -> a uniform mesh from n_points and R_max. When given it sets the mesh directly (Cantera-flame style, Domain1D::setupGrid) and defines both.

Definition at line 144 of file PlasmaChannel1D.h.

◆ hydro_substep

double rizer::PlasmaChannelConfig::hydro_substep = 0.0

Pinned hydro sub-step [s]; 0 lets the CFL bound choose it.

Set, the half-step dt/2 must be an integer multiple of it, so the hydro error is the same at every dt a convergence study sweeps, and a sub-step above the CFL bound at any sub-cycle raises.

Definition at line 274 of file PlasmaChannel1D.h.

◆ hydrodynamics

bool rizer::PlasmaChannelConfig::hydrodynamics = false

Radial hydrodynamics (NUMERICS.md section 4.2's Strang split).

Off by default, and off means the solver takes exactly the path it would if none of the fields below existed.

Definition at line 267 of file PlasmaChannel1D.h.

◆ init_rho_r

std::vector<double> rizer::PlasmaChannelConfig::init_rho_r

rho(r) at t=0 [m], [kg/m^3]; every value must be > 0.

Empty -> uniform rho. Needed by NUMERICS.md section "Validation ladder"'s P3 initial condition, which must be imposed through Tg and rho rather than through Tg and p. Python: rho_profile.

Definition at line 167 of file PlasmaChannel1D.h.

◆ init_rho_v

std::vector<double> rizer::PlasmaChannelConfig::init_rho_v

Definition at line 167 of file PlasmaChannel1D.h.

◆ init_ur_r

std::vector<double> rizer::PlasmaChannelConfig::init_ur_r

u_r(r) at t=0 [m], [m/s].

Empty -> zero everywhere (PHYSICS.md section 6). Only read when hydrodynamics. Python: u_r_profile.

Definition at line 170 of file PlasmaChannel1D.h.

◆ init_ur_v

std::vector<double> rizer::PlasmaChannelConfig::init_ur_v

Definition at line 170 of file PlasmaChannel1D.h.

◆ initTe_r

std::vector<double> rizer::PlasmaChannelConfig::initTe_r

Te(r) at t=0 [m], [K]. Python: Te0 (uniform) or Te_profile.

Definition at line 156 of file PlasmaChannel1D.h.

◆ initTe_v

std::vector<double> rizer::PlasmaChannelConfig::initTe_v

Definition at line 156 of file PlasmaChannel1D.h.

◆ initTg_r

std::vector<double> rizer::PlasmaChannelConfig::initTg_r

Tg(r) at t=0: _r is the radius axis [m], _v the temperature at that radius [K].

Python: Tg0 (uniform) or Tg_profile.

Definition at line 154 of file PlasmaChannel1D.h.

◆ initTg_v

std::vector<double> rizer::PlasmaChannelConfig::initTg_v

Definition at line 154 of file PlasmaChannel1D.h.

◆ initY_r

std::vector<double> rizer::PlasmaChannelConfig::initY_r

Y(r) at t=0.

initY_r: radii [m], length nr. initY_v: row-major [nr*K] mass fractions [-]. Python: Y0 (uniform) or Y0_profile.

This is the ONLY initial composition. The ambient one is Y_amb, which has to be given separately and is never derived from this.

Definition at line 162 of file PlasmaChannel1D.h.

◆ initY_v

std::vector<double> rizer::PlasmaChannelConfig::initY_v

Definition at line 162 of file PlasmaChannel1D.h.

◆ kappa_e_T

std::vector<double> rizer::PlasmaChannelConfig::kappa_e_T

Electron thermal conductivity table kappa_e(Te) [K], [W/m/K].

Empty disables conduction on Te.

Definition at line 216 of file PlasmaChannel1D.h.

◆ kappa_e_v

std::vector<double> rizer::PlasmaChannelConfig::kappa_e_v

Definition at line 216 of file PlasmaChannel1D.h.

◆ kappa_H_T

std::vector<double> rizer::PlasmaChannelConfig::kappa_H_T

Heavy-pool thermal conductivity table kappa_H(Tg) [K], [W/m/K].

Empty disables conduction on Tg.

Definition at line 213 of file PlasmaChannel1D.h.

◆ kappa_H_v

std::vector<double> rizer::PlasmaChannelConfig::kappa_H_v

Definition at line 213 of file PlasmaChannel1D.h.

◆ mech

std::string rizer::PlasmaChannelConfig::mech

Cantera mechanism (YAML) file path.

Definition at line 131 of file PlasmaChannel1D.h.

◆ n_points

std::size_t rizer::PlasmaChannelConfig::n_points = 1

Number of radial grid points [-]. Ignored when grid is given.

Definition at line 138 of file PlasmaChannel1D.h.

◆ nu_E

double rizer::PlasmaChannelConfig::nu_E = 0.0

Elastic electron-heavy energy-exchange frequency nu_E [1/s].

Legacy closure only: mutually exclusive with specs.

Definition at line 201 of file PlasmaChannel1D.h.

◆ nu_m

double rizer::PlasmaChannelConfig::nu_m = 0.0

Electron momentum-transfer frequency nu_m [1/s].

When > 0, \(\sigma = n_e e^2/(m_e \nu_m)\) computed from the evolving n_e overrides the \(\sigma(T_e)\) table. Legacy closure only: mutually exclusive with specs.

Definition at line 206 of file PlasmaChannel1D.h.

◆ nu_m_T

std::vector<double> rizer::PlasmaChannelConfig::nu_m_T

Te-dependent nu_m(Te) table [K], [1/s].

When given it overrides the scalar nu_m, so sigma self-regulates as Te rises the way the 0-D model does. Legacy closure only: mutually exclusive with specs.

Definition at line 210 of file PlasmaChannel1D.h.

◆ nu_m_v

std::vector<double> rizer::PlasmaChannelConfig::nu_m_v

Definition at line 210 of file PlasmaChannel1D.h.

◆ outer_bc_mode

std::string rizer::PlasmaChannelConfig::outer_bc_mode = "ambient_ghost"

Outer boundary treatment: "ambient_ghost" (the default, and the accurate choice while R_max sits beyond the front) or "pressure_outlet".

Only read when hydrodynamics; BoundaryConditions.h's OuterBc says what each imposes and what it reflects.

Definition at line 260 of file PlasmaChannel1D.h.

◆ p_amb

double rizer::PlasmaChannelConfig::p_amb = -1.0

Ambient pressure [Pa] handed to the hydro sub-step.

No default that silently validates: zero is a vacuum, so hydrodynamics requires it to be set.

Definition at line 250 of file PlasmaChannel1D.h.

◆ phase

std::string rizer::PlasmaChannelConfig::phase

Phase name within mech; must be a PlasmaPhase carrying "e-".

Definition at line 133 of file PlasmaChannel1D.h.

◆ R_max

double rizer::PlasmaChannelConfig::R_max = 1.0e-3

Outer (wall) radius R [m]. Ignored when grid is given.

Definition at line 140 of file PlasmaChannel1D.h.

◆ reacting

bool rizer::PlasmaChannelConfig::reacting = true

Include finite-rate chemistry source terms [-].

Definition at line 175 of file PlasmaChannel1D.h.

◆ rho

double rizer::PlasmaChannelConfig::rho = 0.1

Mass density rho [kg/m^3] held at every node, unless init_rho_r/init_rho_v give a radial profile.

Constant-volume model, so this is not a state variable either way.

Definition at line 151 of file PlasmaChannel1D.h.

◆ sigma_T

std::vector<double> rizer::PlasmaChannelConfig::sigma_T

Electrical conductivity table sigma(Te) [K], [S/m].

Legacy closure only: mutually exclusive with specs.

Definition at line 198 of file PlasmaChannel1D.h.

◆ sigma_v

std::vector<double> rizer::PlasmaChannelConfig::sigma_v

Definition at line 198 of file PlasmaChannel1D.h.

◆ species_h0k

std::vector<double> rizer::PlasmaChannelConfig::species_h0k

Per-species standard enthalpy of formation at 0 K [J/kmol], forwarded to PlasmaCellConfig::species_h0k (see there).

Required when reacting is true and the mechanism has an electron-impact reaction.

Definition at line 180 of file PlasmaChannel1D.h.

◆ specs

std::vector<CollisionModel::SpeciesSpec> rizer::PlasmaChannelConfig::specs

Composition-resolved collision model, preferred over the legacy sigma/nu_m/nu_E closures above and mutually exclusive with them (see PlasmaChannel1D.cpp).

Exactly one entry per species in species-index order, or the constructor raises; empty selects the legacy closure. molar_mass and is_electron are filled in by the constructor from the mechanism, so a caller sets only energy_J/sigma_m2 (tabulated neutral), radius (hard-sphere neutral) or Z (ion) per species – see CollisionModel.h. Python: built from the mtcf list.

Definition at line 232 of file PlasmaChannel1D.h.

◆ T_amb

double rizer::PlasmaChannelConfig::T_amb = 300.0

Wall/ambient temperature T_amb [K], and the outer-wall Dirichlet ghost value for Tg.

Definition at line 246 of file PlasmaChannel1D.h.

◆ Te_max

double rizer::PlasmaChannelConfig::Te_max = 1.0e5

Collision-model Te grid upper bound [K].

Read only with specs. A Te above it raises a TrialStateError rather than holding Qbar(Te_max).

Definition at line 238 of file PlasmaChannel1D.h.

◆ Te_min

double rizer::PlasmaChannelConfig::Te_min = 200.0

Collision-model Te grid lower bound [K].

Read only with specs. Defaults to TemperatureFloor, below which PlasmaCell refuses Te anyway.

Definition at line 235 of file PlasmaChannel1D.h.

◆ Te_n

std::size_t rizer::PlasmaChannelConfig::Te_n = 400

Collision-model Te grid point count [-]. Read only with specs.

Definition at line 240 of file PlasmaChannel1D.h.

◆ Y_amb

std::vector<double> rizer::PlasmaChannelConfig::Y_amb

Ambient mass fractions [-], length K, summing to 1: the composition of the gas OUTSIDE the domain.

It supplies the outer-wall Dirichlet ghost for the species- and enthalpy-diffusion terms, the wall ghost density, and the hydro sub-step's inflow composition.

Definition at line 255 of file PlasmaChannel1D.h.


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