rizer.cantera_ext.thermal_plasma_column#

Numerical 1D thermal-plasma arc column, solved with Cantera’s Sim1D.

This is the numerical counterpart of rizer.thermal_plasma.elenbaas_heller.ElenbaasHeller. It solves the same steady radial Elenbaas-Heller equation

\[\frac{1}{r}\frac{d}{dr}\!\left(r\,\kappa(T)\frac{dT}{dr}\right) + \sigma(T) E^2 - P^{rad}(T) = 0\]

but without the analytical model’s piecewise-linear \(\sigma(\Theta)\) closure: it discretizes the equation on a radial grid and solves the full nonlinear system with Cantera’s Newton solver and adaptive grid refinement (the compiled rizer.cantera_ext._plasma1d extension). Properties \(\sigma(T)\), \(\kappa(T)\) are taken from the same tabulated LTE data that ElenbaasHeller uses, so a comparison isolates the numerical solve from the property model.

The Python API deliberately mirrors ElenbaasHeller so existing comparison and plotting code is drop-in.

Classes#

ThermalPlasmaColumn

Cantera-based numerical solution of the radial Elenbaas-Heller column.

Module Contents#

class rizer.cantera_ext.thermal_plasma_column.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.