|
rizer.cantera_ext
C++ Cantera 1-D plasma extension (custom Domain1D models and solvers)
|
Composition-resolved electron-heavy momentum-transfer collision model. More...
#include <CollisionModel.h>
Classes | |
| struct | SpeciesSpec |
| Per-species spec, in species-index order. More... | |
Public Member Functions | |
| CollisionModel ()=default | |
| CollisionModel (const std::vector< SpeciesSpec > &specs, double Te_min, double Te_max, std::size_t Te_n, bool spitzer_correction=true) | |
| Build per-species Qbar(Te) tables on a log-spaced Te grid [Te_min, Te_max]. | |
| bool | empty () const |
| void | evaluate (double Te, double n_e, const double *n_k, std::size_t nsp, double &sigma, double &nu_E, double &cond_maxwell_2) const |
| Composition-resolved electron transport. | |
| double | conductivity (double Te, double n_e, const double *n_k, std::size_t nsp) const |
| Conductivity only [S/m]. | |
Static Public Member Functions | |
| static double | electronElectronCollisionFrequency (double n_e, double Te) |
| Electron-electron collision frequency \(\nu_{ee}\) [1/s] (Mitchner II-8.11e with Z=1), the closed-form ingredient of the first Maxwellian-distribution condition term \(C_1 = \nu_{ee}/m_e\) (Mitchner VIII-3.8). | |
| static double | meanCrossSection (const std::vector< double > &energy_J, const std::vector< double > &sigma_m2, double Te, double x_max=20.0, int N=1000) |
| The Maxwellian momentum-transfer kernel Qbar(Te) [m^2] (single source of truth; also exposed to Python for validation). | |
| static std::vector< double > | meanCrossSectionTable (const std::vector< double > &energy_J, const std::vector< double > &sigma_m2, const std::vector< double > &Te, double x_max=20.0, int N=1000) |
| Tabulated variant of meanCrossSection, evaluated at each Te in the input vector. | |
Composition-resolved electron-heavy momentum-transfer collision model.
Ports rizer's Python collision physics (Mitchner & Kruger 1973, as implemented in rizer/plasma/momentum_transfer_cross_sections.py, rizer/plasma/collision_frequency.py, and rizer/plasma/equations.py, and assembled in PlasmaExtension.electrical_conductivity / plasma_power_elastic) to C++, so a 0D/1D plasma reactor can evaluate the electrical conductivity and the elastic energy-exchange frequency natively from the live composition every RHS, rather than from a frozen \(\nu_m(T_e)\) table.
Per-species kinds (mirrors get_momentum_transfer_cross_section_model):
\[ \overline{Q}_k(T_e) = \frac{2}{3} \int_0^{x_\text{max}} x^2 e^{-x} Q(k_B T_e x)\, dx. \]
Conductivity (Mitchner II-13.7b):
\[ \sigma = \frac{n_e e^2}{m_e \nu_{eH}}, \]
\[ \nu_{eH} = \sum_\text{neutrals} n_k \overline{Q}_k(T_e) v_\text{th}(T_e) + \sum_\text{ions} \nu_{ei}, \]
with the Spitzer e-e correction (II-13.18) bridged smoothly from a factor of 1 to 1.98 via the ion collision fraction \(f_\text{ion} = \nu_\text{ions} / \nu_{eH}\). Elastic exchange (II-7.6 / VI-5.1):
\[ \nu_E = \sum_\text{heavy} \left(\frac{2 m_e}{m_h}\right) \nu_{eh}, \]
such that
\[ P_\text{el} = \nu_E \, n_e \, \frac{3}{2} k_B (T_e - T_g). \]
Definition at line 56 of file CollisionModel.h.
|
default |
| rizer::CollisionModel::CollisionModel | ( | const std::vector< SpeciesSpec > & | specs, |
| double | Te_min, | ||
| double | Te_max, | ||
| std::size_t | Te_n, | ||
| bool | spitzer_correction = true ) |
Build per-species Qbar(Te) tables on a log-spaced Te grid [Te_min, Te_max].
| specs | Per-species collision specs, in species-index order |
| Te_min | Lower bound of the precomputed Qbar(Te) grid [K] |
| Te_max | Upper bound of the precomputed Qbar(Te) grid [K] |
| Te_n | Number of log-spaced points in the Qbar(Te) grid |
| spitzer_correction | true: apply the Spitzer e-e correction (II-13.18); false: Lorentz gas only |
Definition at line 120 of file CollisionModel.cpp.
| double rizer::CollisionModel::conductivity | ( | double | Te, |
| double | n_e, | ||
| const double * | n_k, | ||
| std::size_t | nsp ) const |
Conductivity only [S/m].
| Te | Electron temperature [K] |
| n_e | Electron number density [m^-3] |
| n_k | Per-species number density array, length nsp [m^-3] |
| nsp | Number of species / length of n_k |
Definition at line 242 of file CollisionModel.cpp.
|
static |
Electron-electron collision frequency \(\nu_{ee}\) [1/s] (Mitchner II-8.11e with Z=1), the closed-form ingredient of the first Maxwellian-distribution condition term \(C_1 = \nu_{ee}/m_e\) (Mitchner VIII-3.8).
Depends only on n_e, Te (no per-species composition), so this is a static function rather than an instance method.
| n_e | Electron number density [m^-3] |
| Te | Electron temperature [K] |
Definition at line 250 of file CollisionModel.cpp.
|
inline |
Definition at line 80 of file CollisionModel.h.
| void rizer::CollisionModel::evaluate | ( | double | Te, |
| double | n_e, | ||
| const double * | n_k, | ||
| std::size_t | nsp, | ||
| double & | sigma, | ||
| double & | nu_E, | ||
| double & | cond_maxwell_2 ) const |
Composition-resolved electron transport.
| Te | Electron temperature [K] | |
| n_e | Electron number density [m^-3] | |
| n_k | Per-species number density [m^-3] (length nsp) | |
| nsp | Number of species (length of n_k) | |
| [out] | sigma | Electrical conductivity [S/m] |
| [out] | nu_E | Elastic energy-exchange frequency [1/s] |
| [out] | cond_maxwell_2 | \(\sum_h \bar\nu_{eh}/m_h\) [1/kg/s], the second Maxwellian-distribution condition term (Mitchner VIII-3.8); see PlasmaExtension.conditions_for_maxwellian_distribution. |
Definition at line 172 of file CollisionModel.cpp.
|
static |
The Maxwellian momentum-transfer kernel Qbar(Te) [m^2] (single source of truth; also exposed to Python for validation).
Q interpolated from (energy_J, sigma_m2), zero outside the tabulated range.
| energy_J | Tabulated cross-section energy abscissa [J] |
| sigma_m2 | Tabulated momentum-transfer cross section [m^2] |
| Te | Electron temperature at which to evaluate Qbar [K] |
| x_max | Upper limit of the reduced-energy integration variable \(x = E / (k_B T_e)\) |
| N | Number of trapezoid points spanning [0, x_max] |
Definition at line 74 of file CollisionModel.cpp.
|
static |
Tabulated variant of meanCrossSection, evaluated at each Te in the input vector.
| energy_J | Tabulated cross-section energy abscissa [J] |
| sigma_m2 | Tabulated momentum-transfer cross section [m^2] |
| Te | Electron temperatures at which to evaluate Qbar, one per output entry [K] |
| x_max | Upper limit of the reduced-energy integration variable \(x = E / (k_B T_e)\) |
| N | Number of trapezoid points spanning [0, x_max] |
Definition at line 109 of file CollisionModel.cpp.