rizer.cantera_ext#
Cantera-based 1D plasma models (compiled C++ extension).
This subpackage wraps a custom Cantera Domain1D (ThermalPlasmaColumn1D)
that solves the steady radial Elenbaas-Heller arc equation using Cantera’s
Sim1D Newton solver and adaptive grid refinement. The heavy numerics live in
the compiled module rizer.cantera_ext._plasma1d; this package exposes a
Python API mirroring rizer.thermal_plasma.elenbaas_heller.ElenbaasHeller.
The native module requires a compiler + libcantera-devel at build time. If it
is missing, importing this subpackage raises a clear error, while the rest of
rizer (pure Python) remains importable.
Submodules#
Classes#
Cantera-based numerical solution of the radial Elenbaas-Heller column. |
Package Contents#
- class rizer.cantera_ext.ThermalPlasmaColumn(R: float, electric_field: float | None, gas_data: rizer.thermal_plasma.fit_LTE_data.FitLTEData, current: float | None = None, n_points: int = 61, T_wall: float | None = None, with_radiation: bool = False, seed_from_eh: bool = True, T_center: float | None = None, refine_grid: bool = True)#
Cantera-based numerical solution of the radial Elenbaas-Heller column.
Solves the same steady radial equation as
ElenbaasHellerbut on the full nonlinear tabulated properties, without the piecewise-linear \(\sigma(\Theta)\) closure. The residual difference (~1–3 % inT_centerand current for H₂) is the analytical linearisation error.Either
electric_fieldorcurrent(not both) must be given. Current control wraps the fixed-field solve in a secant iteration onE; the initial bracket is taken from the analytical EH inverse.Assumptions and domain of validity
Steady state: the time derivative is dropped; this is the equilibrium arc column, not a transient.
Local Thermodynamic Equilibrium (LTE): a single temperature
T(Te = T_heavy);sigma(T),kappa(T)and composition come from tabulated LTE data (gas_data). Valid at high pressure / high collisionality where electrons and heavies equilibrate; not valid for non-equilibrium (low-pressure, fast-transient, near-electrode) plasmas.1-D radial, cylindrical, axisymmetric, infinitely long column: no axial gradients and no convection — a pure radial conduction balance.
Energy balance: radial conduction
+ohmic sourcesigma*E^2-optional radiationP_rad = 4*pi*NEC(T)(off by default, matching the analytical model). When enabled, radiation is treated as optically thin (net emission, no reabsorption).Geometry/BC:
r=0symmetry;r=RDirichletT_wall.Numerics: nonlinear finite-volume discretisation solved with Cantera’s damped-Newton method and adaptive grid refinement; current control is a secant iteration on
E. The fixed-field hot branch is thermally stiff, soseed_from_ehseeds Newton with the analytical profile (affects only convergence, not the converged solution).
- Parameters:
R (
float) – Outer (wall) radius [m].electric_field (
floatorNone) – Prescribed axial electric field [V/m]. Mutually exclusive withcurrent.gas_data (
FitLTEData) – LTE data object providingsigma(T),kappa(T)(fromthermo_transport_data) and, whenwith_radiation=True, the net emission coefficient NEC(T) (fromradiation_data).current (
floatorNone, optional) – Target arc current [A]. Mutually exclusive withelectric_field.n_points (
int, optional) – Initial number of uniform radial grid points, by default 61. The adaptive refiner may increase this during the solve.T_wall (
floatorNone, optional) – Wall (boundary) temperature [K]. Defaults to the lowest temperature in the tabulated data.with_radiation (
bool, optional) – Include the radiative power-density sink \(P_\mathrm{rad}(T) = 4\pi\,\mathrm{NEC}(T)\) [W/m³], by defaultFalse(matching the analytical model). The NEC is taken fromgas_data.radiation_data; setemission_radius_mminFitLTEDatato a physically meaningful value (not 0) to avoid over-estimating radiation losses.seed_from_eh (
bool, optional) – Seed Newton with the analytical EH temperature profile, by defaultTrue. The fixed-field hot branch is thermally stiff (arc instability); a good initial guess avoids expensive time-stepping. The seed affects only convergence speed, not the converged solution.T_center (
floatorNone, optional) – If given, the EH seed is replaced by a simple linear ramp fromT_center[K] at \(r = 0\) toT_wallat \(r = R\). Useful as a fallback when the no-radiation EH profile is too far from the radiative solution and causes Newton to find the cold (trivial) branch instead.refine_grid (
bool, optional) – Enable Cantera adaptive grid refinement, by defaultTrue.
Notes
- R#
- gas_data#
- T_wall#
- get_temperature_vs_radius(r: float) float#
Temperature [K] at radius
r, interpolated from the solution.
- temperature_profile() tuple[numpy.ndarray, numpy.ndarray]#
Return the converged
(r, T)arrays.
- grid() numpy.ndarray#
Radial grid [m] after refinement.
- conductivity_profile() numpy.ndarray#
Electrical conductivity [S/m] at each grid point.