5. Plasma Models
AI4Plasma contains physics solvers and supporting utilities under ai4plasma.plasma. This guide introduces the built-in plasma models and the property-interpolation toolkit used across solvers and PINN workflows.
5.1. Arc discharge models (ai4plasma.plasma.arc)
The arc module implements 1D radial thermal arc models based on the Elenbaas-Heller equation. It includes:
StaArc1D: stationary (steady-state) arc modelTraArc1DNoV: transient arc model without radial velocityTraArc1D: transient arc model with radial velocity (convection)
These solvers use conventional discretization (via FiPy) and temperature-dependent properties.
5.1.1. Governing equations (overview)
Steady-state energy balance (cylindrical coordinates):
Transient energy equation:
where \(\kappa\) is thermal conductivity, \(\sigma\) is electrical conductivity, and \(S_{rad}\) is radiation loss computed from NEC tables.
5.1.2. How this relates to CS-PINN
The CS-PINN implementation in ai4plasma.piml.cs_pinn solves a closely related 1D steady energy equation, but replaces the discretization with a neural network and physics residuals.
Use
ai4plasma.plasma.arcwhen you want a traditional solver baseline.Use
ai4plasma.piml.cs_pinnwhen you want PINN-based solutions, differentiability, and easy coupling with learning.
5.2. Plasma properties and interpolation (ai4plasma.plasma.prop)
Thermal-plasma and discharge models require temperature- or field-dependent coefficients, such as conductivity \(\sigma(T)\), thermal conductivity \(\kappa(T)\), diffusion coefficients, and radiation loss tables. AI4Plasma provides property utilities in ai4plasma.plasma.prop.
5.2.1. Table reading
read_thermo_data(...)reads temperature-dependent thermo/transport properties.read_nec_data(...)reads net emission coefficient (NEC) tables used for radiation losses.
Data files are expected to be whitespace-separated tables with headers (for example: T(K), rho(kg/m3), sigma(S/m)), matching the fields used in read_thermo_data.
5.2.2. Interpolation helpers
interp_prop(...): 1D interpolation in temperature usingRegularGridInterpolator(SciPy 1.14+ compatible).interp_prop_log(...): interpolation in log-space for quantities spanning multiple orders of magnitude.interp_nec(...)/interp_nec_log(...): 2D interpolation for NEC tables depending on temperature and radius.
Use log-space interpolation for coefficients that change exponentially with temperature to improve numerical stability.
5.2.3. PyTorch-ready spline classes
5.2.3.1. ArcPropSpline
ArcPropSpline is designed for PINNs and neural operators:
reads thermo/NEC data files
exposes
sigma(T),kappa(T),nec(T)and other propertiesclamps temperature to a physical range (commonly
[300, 30000]K)returns Torch tensors on the current device and supports autograd
5.2.3.2. CoronaPropSpline
For corona discharge RK-PINN examples, CoronaPropSpline provides interpolation of transport coefficients such as \(\alpha(E/N)\), \(\mu_e(E/N)\), and \(D_e(E/N)\).
5.2.4. Example: creating ArcPropSpline
from ai4plasma.plasma.prop import ArcPropSpline
thermo_file = 'app/piml/cs_pinn/data/sf6_p1.dat'
nec_file = 'app/piml/cs_pinn/data/sf6_p1_nec.dat'
R = 10e-3
prop = ArcPropSpline(thermo_file, nec_file, R)
5.2.5. Example: property interpolation in a residual
def pde_residual(model, X, prop):
r = X[:, 0:1]
T = model(X)
kappa = prop.kappa(T)
sigma = prop.sigma(T)
# Use kappa and sigma in residual definition
return residual
5.2.6. Numerical stability tips
Prefer log-interpolation for coefficients spanning many orders of magnitude.
Clamp inputs (temperature or reduced field) to the validity range of the tables.
In PINN residuals, watch for exploding gradients when coefficients change sharply; lowering LR or using smooth loss functions can help.
5.3. Where this fits in the workflow
Classical solvers (arc models) and physics-informed models (PINNs) both rely on the same property tables.
Keep property sources consistent between baseline solvers and learning models to ensure fair comparisons.
When building datasets for PINNs, sample temperature or field ranges within the validity of the tables.