|
rizer.cantera_ext
C++ Cantera 1-D plasma extension (custom Domain1D models and solvers)
|
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. | |
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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| std::vector<double> rizer::PlasmaChannelConfig::init_rho_v |
Definition at line 167 of file PlasmaChannel1D.h.
| 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.
| std::vector<double> rizer::PlasmaChannelConfig::init_ur_v |
Definition at line 170 of file PlasmaChannel1D.h.
| 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.
| std::vector<double> rizer::PlasmaChannelConfig::initTe_v |
Definition at line 156 of file PlasmaChannel1D.h.
| 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.
| std::vector<double> rizer::PlasmaChannelConfig::initTg_v |
Definition at line 154 of file PlasmaChannel1D.h.
| 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.
| std::vector<double> rizer::PlasmaChannelConfig::initY_v |
Definition at line 162 of file PlasmaChannel1D.h.
| 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.
| std::vector<double> rizer::PlasmaChannelConfig::kappa_e_v |
Definition at line 216 of file PlasmaChannel1D.h.
| 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.
| std::vector<double> rizer::PlasmaChannelConfig::kappa_H_v |
Definition at line 213 of file PlasmaChannel1D.h.
| std::string rizer::PlasmaChannelConfig::mech |
Cantera mechanism (YAML) file path.
Definition at line 131 of file PlasmaChannel1D.h.
| 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.
| 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.
| 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.
| 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.
| std::vector<double> rizer::PlasmaChannelConfig::nu_m_v |
Definition at line 210 of file PlasmaChannel1D.h.
| 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.
| 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.
| std::string rizer::PlasmaChannelConfig::phase |
Phase name within mech; must be a PlasmaPhase carrying "e-".
Definition at line 133 of file PlasmaChannel1D.h.
| 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.
| bool rizer::PlasmaChannelConfig::reacting = true |
Include finite-rate chemistry source terms [-].
Definition at line 175 of file PlasmaChannel1D.h.
| 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.
| 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.
| std::vector<double> rizer::PlasmaChannelConfig::sigma_v |
Definition at line 198 of file PlasmaChannel1D.h.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.