rizer.plasma.plasma_extension#

Attributes#

Classes#

PlasmaExtension

Extend a Cantera plasma object.

Module Contents#

rizer.plasma.plasma_extension.logger#
class rizer.plasma.plasma_extension.PlasmaExtension(plasma: cantera.Solution, momentum_transfer_collision_frequencies_list: list[rizer.plasma.collision_frequency.MomentumTransferCollisionFrequencyModel])#

Extend a Cantera plasma object.

Extend a Cantera plasma object to include properties not currently implemented in Cantera, such as cp_mole.

Parameters:
Raises:

ValueError – The mechanism of the heavies object should not be a Plasma phase.

plasma#
plasma_species: list[cantera.Species]#

List of the species in the plasma object.

plasma_reactions: list[cantera.Reaction]#

List of the reactions in the plasma object.

plasma_electronic_reactions: list[cantera.Reaction]#
e_index#
momentum_transfer_collision_frequencies_list: list[rizer.plasma.collision_frequency.MomentumTransferCollisionFrequencyModel]#
precompute_collision_frequency_tables(Te_min: float = 300.0, Te_max: float = 100000.0, n_points: int = 1000) None#

Opt-in: precompute averaged cross sections on an electron-temperature grid.

Enables a log-spaced \(T_e\)-grid cache on every tabulated neutral cross section (see enable_mean_cross_section_grid_cache()), so the per-species momentum-transfer collision frequencies interpolate a precomputed \(\bar{Q}(T_e)\) instead of re-integrating the cross section at each electron temperature. This trades a small interpolation error (well under a percent on a fine grid) for a large speed-up when a reactor sweeps many electron temperatures. Ion (Coulomb) and hard-sphere frequencies are already closed-form and are unaffected.

Parameters:
  • Te_min (float, optional) – Bounds of the electron-temperature grid, in K (default 300 to 100 000 K).

  • Te_max (float, optional) – Bounds of the electron-temperature grid, in K (default 300 to 100 000 K).

  • n_points (int, optional) – Number of log-spaced grid points, by default 1000.

molar_concentrations() numpy.ndarray#

Compute the molar concentrations of each species in the plasma in kmol/m^3.

Returns:

Molar concentrations of each species in the plasma in kmol/m^3.

Return type:

numpy.ndarray

Notes

The molar concentration of each species is given by (eq. 2-13 in [Chemkin]):

\[[ X_k ] = \frac{X_k P}{R \sum_i X_i T_i}\]
density() float#

Compute the density of the plasma in kg/m^3.

Since Cantera PR #2101 (native two-temperature plasma thermodynamics), the PlasmaPhase accounts for electrons being at a different temperature than the heavy species when computing the density.

Returns:

Density of the plasma in kg/m^3.

Return type:

float

Notes

The density of the plasma is given (eq. 2-5 in [Chemkin]):

\[\rho = \sum_k [ X_k ] M_k\]

with:

  • \([ X_k ]\) the molar concentration of species \(k\),

  • \(M_k\) the molar mass of species \(k\).

The molar concentration can be expressed using the mole fraction (eq. 2-13 in [Chemkin]):

\[[ X_k ] = \frac{X_k P}{R \sum_i X_i T_i}\]
mean_temperature() float#

Compute the mean temperature of the plasma in K.

This is the equation of state used in [Chemkin]. Since Cantera PR #2101 (native two-temperature plasma thermodynamics), this is exposed natively as the mean_temperature property on Cantera’s PlasmaPhase (accessed here via self.plasma.mean_temperature).

Returns:

Mean temperature of the plasma in K.

Return type:

float

Notes

The mean temperature of the plasma is given by the formula:

\[\overline{T} = \frac{\sum_k X_k T_k}{\sum_k X_k} = \sum_k X_k T_k\]

with:

  • \(X_k\) the molar fraction of species \(k\),

  • \(T_k\) the temperature of species \(k\).

This can be rewritten as:

\[\overline{T} = \sum_{k \neq e} X_k T_g + X_e T_e = (1 - X_e) T_g + X_e T_e\]

This comes from the gas equation of state (equation 2-4 of [Chemkin]):

\[P = \sum_k [ X_k ] R T_k = \sum_k n_k k_b T_k = k_b n_{tot} \overline{T}\]

with:

  • \(P\) the pressure,

  • \([ X_k ]\) the molar concentration of species \(k\),

  • \(n_k\) the number density of species \(k\),

  • \(n_{tot}\) the total number density of the plasma.

total_number_density() float#

Compute the total number density of the plasma in m^-3.

Returns:

Total number density of the plasma in m^-3.

Return type:

float

Notes

The total number density of the plasma is given by the formula:

\[\rho_{\text{tot}} = \frac{P}{k_b \overline{T}}\]

with:

  • \(P\) the pressure, in Pa,

  • \(k_b\) the Boltzmann constant, in J/K,

  • \(\overline{T}\) the mean temperature of the plasma, in K.

References

Equation 2-4 of [Chemkin].

electron_number_density() float#

Compute the electron number density of the plasma in m^-3.

Returns:

Electron density of the plasma in m^-3.

Return type:

float

Notes

The electron number density of the plasma is given by the formula:

\[n_e = X_{e^-} n_{\text{tot}} = X_{e^-} \frac{P}{k_b \overline{T}}\]

with:

  • \(X_{e^-}\) the electron mole fraction,

  • \(P\) the pressure, in Pa,

  • \(k_b\) the Boltzmann constant, in J/K,

  • \(\overline{T}\) the mean temperature of the plasma, in K.

References

Equation 2-4 of [Chemkin].

cp_mass_mean_heavies() float#

Mean massic heat capacity at constant pressure of the heavies species in J/kg/K.

Returns:

Mean massic heat capacity at constant pressure of the heavies species in J/kg/K.

Return type:

float

Notes

The mean massic heat capacity at constant pressure of the heavies species is given by the formula:

\[\overline{c_{p, mass}} = \sum_{k \neq e} Y_k c_{p, k} = \sum_{k} Y_k c_{p, k} - Y_e c_{p, e}\]

with:

  • \(Y_k\) the mass fraction of species \(k\), in the plasma phase,

  • \(c_{p, k}\) the heat capacity of species \(k\).

References

Equation 30 of [Aurora].

cv_mass_mean_heavies() float#

Mean massic heat capacity at constant volume of the heavies species in J/kg/K.

Returns:

Mean massic heat capacity at constant volume of the heavies species in J/kg/K.

Return type:

float

See also

cp_mass()

cp_mole_mean_heavies() float#

Mean molar heat capacity at constant pressure of the heavies species in J/kmol/K.

Returns:

Mean molar heat capacity at constant pressure of the heavies species in J/kmol/K.

Return type:

float

See also

cp_mole()

cp_mass() float#

Massic heat capacity at constant pressure of the plasma in J/kg/K.

Returns:

Massic heat capacity at constant pressure of the plasma in J/kg/K.

Return type:

float

Notes

The massic heat capacity at constant pressure of the plasma is given by the formula:

\[c_{p, mass} = (1 - Y_{e-}) \cdot c_{p, mass, heavy} + Y_{e-} \cdot c_{p, mass, e^-}\]

with:

  • \(Y_{e-}\) the electron mass fraction,

  • \(c_{p, mass, heavy}=\sum_{k \neq e^-} Y_k c_{p, k}\) the heat capacity of the heavy species,

  • \(c_{p, mass, e^-}\) the heat capacity of electrons.

References

Equation 30 of [Aurora].

See also

cp_e_mass()

cv_mass() float#

Massic heat capacity at constant volume of the plasma in J/kg/K.

Returns:

Massic heat capacity at constant volume of the plasma in J/kg/K.

Return type:

float

Notes

The massic heat capacity at constant volume of the plasma is given by the formula:

\[c_{v, mass} = (1 - Y_{e-}) \cdot c_{v, mass, heavy} + Y_{e-} \cdot c_{v, mass, e^-}\]

with:

  • \(Y_{e-}\) the electron mass fraction,

  • \(c_{v, mass, heavy}=\sum_{k \neq e^-} Y_k c_{v, k}\) the heat capacity of the heavy species,

  • \(c_{v, mass, e^-}\) the heat capacity of electrons.

References

Equation 30 of [Aurora].

See also

cp_e_mass()

cp_mole() float#

Molar heat capacity at constant pressure of the plasma in J/kmol/K.

Returns:

Molar heat capacity at constant pressure of the plasma in J/kmol/K.

Return type:

float

Notes

The molar heat capacity at constant pressure of the plasma is given by the formula:

\[c_{p, mol} = (1 - X_{e-}) \cdot c_{p, mol, heavy} + X_{e-} \cdot c_{p, mol, e^-}\]

with:

  • \(X_{e-}\) the electron mole fraction,

  • \(c_{p, mol, heavy}=\sum_{k \neq e^-} X_k c_{p, k}\) the heat capacity of the heavy species,

  • \(c_{p, mol, e^-}\) the heat capacity of electrons.

References

Equation 30 of [Aurora].

See also

cp_e_mole()

cp_e_mass() float#

Massic heat capacity at constant pressure of electrons in J/kg/K.

Returns:

Massic heat capacity at constant pressure of electrons in J/kg/K.

Return type:

float

Notes

The massic heat capacity at constant pressure of electrons is given by the formula:

\[c_{p, mass, e} = \frac{5}{2} \frac{R}{M_e}\]

with:

  • \(R\) the ideal gas constant (J/mol/K),

  • \(M_e\) the electron molar mass (kg/mol).

References

Equation 33 of [Aurora].

cv_e_mass() float#

Massic heat capacity at constant volume of electrons in J/kg/K.

Returns:

Massic heat capacity at constant volume of electrons in J/kg/K.

Return type:

float

Notes

The massic heat capacity at constant volume of electrons is given by the formula:

\[c_{v, mass, e} = \frac{3}{2} \frac{R}{M_e}\]

with:

  • \(R\) the ideal gas constant (J/mol/K),

  • \(M_e\) the electron molar mass (kg/mol).

References

Equation 33 of [Aurora].

cp_e_mole() float#

Molar heat capacity at constant pressure of electrons in J/kmol/K.

Returns:

Molar heat capacity at constant pressure of electrons in J/kmol/K.

Return type:

float

Notes

The molar heat capacity at constant pressure of electrons is given by the formula:

\[c_{p, mol, e} = \frac{5}{2} R_{\text{kmol}}\]

with:

  • \(R_{\text{kmol}}\) the ideal gas constant, expressed in J/kmol/K.

References

Equation 33 of [Aurora].

cv_e_mole() float#

Molar heat capacity at constant volume of electrons in J/kmol/K.

Returns:

Molar heat capacity at constant volume of electrons in J/kmol/K.

Return type:

float

Notes

The molar heat capacity at constant volume of electrons is given by the formula:

\[c_{v, mol, e} = \frac{3}{2} R_{\text{kmol}}\]

with:

  • \(R_{\text{kmol}}\) the ideal gas constant, expressed in J/kmol/K.

References

Equation 33 of [Aurora].

plasma_power_elastic() float#

Compute the elastic power loss density in W/m^3.

Return the rate of electron energy loss per unit volume as a result of elastic collisions with heavy particles in W/m^3.

Returns:

Elastic power loss density in W/m^3.

Return type:

float

Notes

The power density is given by equation (VI 5.1) of [Mitchner1973].

\[P_el = \sum_h \frac{2 m_e}{m_h} \frac{3}{2} k_b\left(T_e-T_g\right) \bar{\nu}_{e h} n_e\]

with:

  • \(m_e\) the electron mass, in kg,

  • \(m_h\) the mass of heavy particles, in kg,

  • \(k_b\) the Boltzmann constant, in J/K,

  • \(T_e\) the electron temperature, in K,

  • \(T_g\) the heavy species temperature, in K,

  • \(\bar{\nu}_{e h}\) the energy-weighted average momentum transfer collision frequency between

    electrons and heavy particles, in s^-1, as defined in (II 6.29) of [Mitchner1973].

References

plasma_power_inelastic() float#

Return the inelastic Joule heating power per unit volume of the plasma in W/m^3.

Returns:

Inelastic Joule heating power density in W/m^3.

Return type:

float

Notes

The power density is given by equation 36 of [Aurora], but with the reaction internal-energy change \(\Delta U_i\) in place of the enthalpy change \(\Delta H_i\):

\[P_{inel} = \sum_{i}^{I_{ei}} \Delta U_i \cdot R_i\]

with:

  • \(I_{ei}\) the number of electron-impact reactions, i.e. reactions in which the electron participates,

  • \(\Delta U_i\) the internal-energy change of reaction \(i\),

  • \(R_i\) the net rate of progress of reaction \(i\).

Using \(\Delta U\) rather than \(\Delta H\) is the consistent choice for the constant-volume reactor. \(\Delta H = \Delta U + \sum_k \nu_k R T_k\) includes a pressure-work term \(R T_k\) per net particle created; billing that term through this electron-to-gas exchange mis-attributes \(\sim k_B T_e\) per net electron produced (e.g. per ionization) from the electron pool to gas heating, even though total energy stays conserved. The heavy-species chemical term in the reactor likewise uses internal energy.

Electron-impact reactions are selected by testing whether the electron participates as a reactant or a product, rather than by matching a rate-type string. These are exactly the reactions that exchange energy between the electron energy pool and the internal/chemical energy of the heavy species, whatever their rate type (two-temperature-plasma, three-body-two-temperature-plasma, reverse-two-temperature-plasma, Druyvesteyn, janev-*, …). Selecting them by type string silently dropped every channel whose type was not one of the two-temperature ones.

electrical_conductivity() float#

Return the electrical conductivity in S/m.

No assumption is made on wether the plasma is weakly or strongly ionized.

Returns:

electrical conductivity in S/m

Return type:

float

Notes

The electrical conductivity \(\sigma\) of a plasma is given by (II 13.7b) of [Mitchner1973]:

\[\sigma_e = \frac{n_e e^2}{m_e \bar{\nu}_{eH}}\]

where:

  • \(n_e\) is the electron number density in m^-3,

  • \(e\) is the elementary charge in C,

  • \(m_e\) is the electron mass in kg,

  • \(\bar{\nu}_{eH}\) is the average momentum transfer collision frequency of an electron with all heavy particle species.

This last term is defined in (II 13.3) of [Mitchner1973] as the following sum:

\[\bar{\nu}_{eH} = \bar{\nu}_{en} + \bar{\nu}_{ei}\]

where:

  • \(\bar{\nu}_{en}\) is the average momentum transfer collision frequency of an electron with neutral heavy particles,

  • \(\bar{\nu}_{ei}\) is the average momentum transfer collision frequency of an electron with ionized heavy particles.

conditions_for_maxwellian_distribution() tuple[float, float]#

Return the conditions for a Maxwellian distribution of electrons.

Based on equation (VIII 3.8) of [Mitchner1973].

Returns:

cond_maxwell_1, cond_maxwell_2, with:

  • \(C_1 = \frac{\nu_{e e}}{m_e}\) the electron-electron collision frequency divided by the electron mass,

  • \(C_2 = \sum_h \frac{\bar{\nu}_{e h}}{m_h}\) the sum of the average momentum transfer collision frequencies of electrons with heavy species divided by the mass of the heavy species.

Return type:

tuple of float and float