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#

ThermalPlasmaColumn

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 ElenbaasHeller but on the full nonlinear tabulated properties, without the piecewise-linear \(\sigma(\Theta)\) closure. The residual difference (~1–3 % in T_center and current for H₂) is the analytical linearisation error.

Either electric_field or current (not both) must be given. Current control wraps the fixed-field solve in a secant iteration on E; 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 source sigma*E^2 - optional radiation P_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=0 symmetry; r=R Dirichlet T_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, so seed_from_eh seeds Newton with the analytical profile (affects only convergence, not the converged solution).

Parameters:
  • R (float) – Outer (wall) radius [m].

  • electric_field (float or None) – Prescribed axial electric field [V/m]. Mutually exclusive with current.

  • gas_data (FitLTEData) – LTE data object providing sigma(T), kappa(T) (from thermo_transport_data) and, when with_radiation=True, the net emission coefficient NEC(T) (from radiation_data).

  • current (float or None, optional) – Target arc current [A]. Mutually exclusive with electric_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 (float or None, 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 default False (matching the analytical model). The NEC is taken from gas_data.radiation_data; set emission_radius_mm in FitLTEData to 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 default True. 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 (float or None, optional) – If given, the EH seed is replaced by a simple linear ramp from T_center [K] at \(r = 0\) to T_wall at \(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 default True.

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.

current() float#

Integrated current I = int sigma(T) E 2*pi*r dr [A].

property n_points: int#

Number of grid points after refinement.

conductivity_profile() numpy.ndarray#

Electrical conductivity [S/m] at each grid point.