Cantera  3.2.0a2
Loading...
Searching...
No Matches
PlasmaPhase.h
Go to the documentation of this file.
1/**
2 * @file PlasmaPhase.h
3 * Header file for class PlasmaPhase.
4 */
5
6// This file is part of Cantera. See License.txt in the top-level directory or
7// at https://cantera.org/license.txt for license and copyright information.
8
9#ifndef CT_PLASMAPHASE_H
10#define CT_PLASMAPHASE_H
11
14#include "cantera/numerics/eigen_sparse.h"
15
16namespace Cantera
17{
18
19class Reaction;
20class ElectronCollisionPlasmaRate;
21
22//! Base class for handling plasma properties, specifically focusing on the
23//! electron energy distribution.
24/*!
25 * This class provides functionality to manage the the electron energy distribution
26 * using two primary methods for defining the electron distribution and electron
27 * temperature.
28 *
29 * The first method utilizes setElectronTemperature(), which sets the electron
30 * temperature and calculates the electron energy distribution assuming an
31 * isotropic-velocity model. Note that all units in PlasmaPhase are in SI, except
32 * for electron energy, which is measured in volts.
33 *
34 * The generalized electron energy distribution for an isotropic-velocity
35 * distribution (as described by Gudmundsson @cite gudmundsson2001 and Khalilpour
36 * and Foroutan @cite khalilpour2020)
37 * is given by:
38 * @f[
39 * f(\epsilon) = c_1 \frac{\sqrt{\epsilon}}{\epsilon_m^{3/2}}
40 * \exp \left(-c_2 \left(\frac{\epsilon}{\epsilon_m}\right)^x \right),
41 * @f]
42 * where @f$ x = 1 @f$ corresponds to a Maxwellian distribution and
43 * @f$ x = 2 @f$ corresponds to a Druyvesteyn distribution.
44 * Here, @f$ \epsilon_m = \frac{3}{2} T_e @f$ [V] represents the
45 * mean electron energy.
46 *
47 * The total probability distribution integrates to one:
48 * @f[
49 * \int_0^{\infty} f(\epsilon) d\epsilon = 1.
50 * @f]
51 * According to Hagelaar and Pitchford @cite hagelaar2005, the electron energy
52 * probability function can be defined as
53 * @f$ F(\epsilon) = \frac{f(\epsilon)}{\sqrt{\epsilon}} @f$ with units of
54 * [V@f$^{-3/2}@f$]. The generalized form of the electron energy probability
55 * function for isotropic-velocity distributions is:
56 * @f[
57 * F(\epsilon) = c_1 \frac{1}{\epsilon_m^{3/2}}
58 * \exp\left(-c_2 \left(\frac{\epsilon}{\epsilon_m}\right)^x\right),
59 * @f]
60 * and this form is used to model the isotropic electron energy distribution
61 * in PlasmaPhase.
62 *
63 * The second method allows for manual definition of the electron energy
64 * distribution using setDiscretizedElectronEnergyDist(). In this approach,
65 * the electron temperature is derived from the mean electron energy,
66 * @f$ \epsilon_m @f$, which can be calculated as follows @cite hagelaar2005 :
67 * @f[
68 * \epsilon_m = \int_0^{\infty} \epsilon^{3/2} F(\epsilon) d\epsilon.
69 * @f]
70 * This integral can be approximated using the trapezoidal rule,
71 * @f[
72 * \epsilon_m = \sum_i \left(\epsilon_{i+1}^{5/2} - \epsilon_i^{5/2}\right)
73 * \frac{F(\epsilon_{i+1}) + F(\epsilon_i)}{2},
74 * @f]
75 * where @f$ i @f$ is the index of discrete energy levels, or Simpson's rule.
76 *
77 * @warning This class is an experimental part of %Cantera and may be
78 * changed or removed without notice.
79 * @todo Implement electron Boltzmann equation solver to solve EEDF.
80 * https://github.com/Cantera/enhancements/issues/127
81 * @ingroup thermoprops
82 */
84{
85public:
86 //! Construct and initialize a PlasmaPhase object
87 //! directly from an input file. The constructor initializes the electron
88 //! energy distribution to be Druyvesteyn distribution (m_x = 2.0). The initial
89 //! electron energy grid is set to a linear space which starts at 0.01 eV and ends
90 //! at 1 eV with 1000 points.
91 /*!
92 * @param inputFile Name of the input file containing the phase definition
93 * to set up the object. If blank, an empty phase will be
94 * created.
95 * @param id ID of the phase in the input file. Defaults to the
96 * empty string.
97 */
98 explicit PlasmaPhase(const string& inputFile="", const string& id="");
99
100 ~PlasmaPhase();
101
102 string type() const override {
103 return "plasma";
104 }
105
106 void initThermo() override;
107
108 //! Set electron energy levels.
109 //! @param levels The vector of electron energy levels (eV).
110 //! Length: #m_nPoints.
111 //! @param length The length of the @c levels.
112 void setElectronEnergyLevels(const double* levels, size_t length);
113
114 //! Get electron energy levels.
115 //! @param levels The vector of electron energy levels (eV). Length: #m_nPoints
116 void getElectronEnergyLevels(double* levels) const {
117 Eigen::Map<Eigen::ArrayXd>(levels, m_nPoints) = m_electronEnergyLevels;
118 }
119
120 //! Set discretized electron energy distribution.
121 //! @param levels The vector of electron energy levels (eV).
122 //! Length: #m_nPoints.
123 //! @param distrb The vector of electron energy distribution.
124 //! Length: #m_nPoints.
125 //! @param length The length of the vectors, which equals #m_nPoints.
126 void setDiscretizedElectronEnergyDist(const double* levels,
127 const double* distrb,
128 size_t length);
129
130 //! Get electron energy distribution.
131 //! @param distrb The vector of electron energy distribution.
132 //! Length: #m_nPoints.
133 void getElectronEnergyDistribution(double* distrb) const {
134 Eigen::Map<Eigen::ArrayXd>(distrb, m_nPoints) = m_electronEnergyDist;
135 }
136
137 //! Set the shape factor of isotropic electron energy distribution.
138 //! Note that @f$ x = 1 @f$ and @f$ x = 2 @f$ correspond to the
139 //! Maxwellian and Druyvesteyn distribution, respectively.
140 //! @param x The shape factor
141 void setIsotropicShapeFactor(double x);
142
143 //! The shape factor of isotropic electron energy distribution
144 double isotropicShapeFactor() const {
145 return m_isotropicShapeFactor;
146 }
147
148 //! Set the internally stored electron temperature of the phase (K).
149 //! @param Te Electron temperature in Kelvin
150 void setElectronTemperature(double Te) override;
151
152 //! Set mean electron energy [eV]. This method also sets electron temperature
153 //! accordingly.
154 void setMeanElectronEnergy(double energy);
155
156 //! Get electron energy distribution type
158 return m_distributionType;
159 }
160
161 //! Set electron energy distribution type
162 void setElectronEnergyDistributionType(const string& type);
163
164 //! Numerical quadrature method. Method: #m_quadratureMethod
165 string quadratureMethod() const {
166 return m_quadratureMethod;
167 }
168
169 //! Set numerical quadrature method for integrating electron
170 //! energy distribution function. Method: #m_quadratureMethod
171 void setQuadratureMethod(const string& method) {
172 m_quadratureMethod = method;
173 }
174
175 //! Mean electron energy [eV]
176 double meanElectronEnergy() const {
177 return 3.0 / 2.0 * electronTemperature() * Boltzmann / ElectronCharge;
178 }
179
180 //! Set flag of automatically normalize electron energy distribution
181 //! Flag: #m_do_normalizeElectronEnergyDist
184 }
185
186 //! Flag of automatically normalize electron energy distribution.
187 //! Flag: #m_do_normalizeElectronEnergyDist
190 }
191
192 bool addSpecies(shared_ptr<Species> spec) override;
193
194 //! Electron Temperature (K)
195 //! @return The electron temperature of the phase
196 double electronTemperature() const override {
197 return m_electronTemp;
198 }
199
200 //! Return the Gas Constant multiplied by the current electron temperature
201 /*!
202 * The units are Joules kmol-1
203 */
204 double RTe() const {
206 }
207
208 /**
209 * Electron pressure. Units: Pa.
210 * @f[P = n_{k_e} R T_e @f]
211 */
212 virtual double electronPressure() const {
215 }
216
217 //! Number of electron levels
218 size_t nElectronEnergyLevels() const {
219 return m_nPoints;
220 }
221
222 //! Number of electron collision cross sections
223 size_t nCollisions() const {
224 return m_collisions.size();
225 }
226
227 //! Get the Reaction object associated with electron collision *i*.
228 //! @since New in %Cantera 3.2.
229 const shared_ptr<Reaction> collision(size_t i) const {
230 return m_collisions[i];
231 }
232
233 //! Get the ElectronCollisionPlasmaRate object associated with electron collision
234 //! *i*.
235 //! @since New in %Cantera 3.2.
236 const shared_ptr<ElectronCollisionPlasmaRate> collisionRate(size_t i) const {
237 return m_collisionRates[i];
238 }
239
240 //! Electron Species Index
241 size_t electronSpeciesIndex() const {
243 }
244
245 //! Return the Molar enthalpy. Units: J/kmol.
246 /*!
247 * For an ideal gas mixture with additional electron,
248 * @f[
249 * \hat h(T) = \sum_{k \neq k_e} X_k \hat h^0_k(T) + X_{k_e} \hat h^0_{k_e}(T_e),
250 * @f]
251 * and is a function only of temperature. The standard-state pure-species
252 * enthalpies @f$ \hat h^0_k(T) @f$ are computed by the species
253 * thermodynamic property manager.
254 *
255 * @see MultiSpeciesThermo
256 */
257 double enthalpy_mole() const override;
258
259 double cp_mole() const override {
260 throw NotImplementedError("PlasmaPhase::cp_mole");
261 }
262
263 double entropy_mole() const override {
264 throw NotImplementedError("PlasmaPhase::entropy_mole");
265 }
266
267 double gibbs_mole() const override {
268 throw NotImplementedError("PlasmaPhase::gibbs_mole");
269 }
270
271 double intEnergy_mole() const override {
272 throw NotImplementedError("PlasmaPhase::intEnergy_mole");
273 }
274
275 void getEntropy_R(double* sr) const override;
276
277 void getGibbs_RT(double* grt) const override;
278
279 void getGibbs_ref(double* g) const override;
280
281 void getStandardVolumes_ref(double* vol) const override;
282
283 void getChemPotentials(double* mu) const override;
284
285 void getStandardChemPotentials(double* muStar) const override;
286
287 void getPartialMolarEnthalpies(double* hbar) const override;
288
289 void getPartialMolarEntropies(double* sbar) const override;
290
291 void getPartialMolarIntEnergies(double* ubar) const override;
292
293 void getParameters(AnyMap& phaseNode) const override;
294
295 void setParameters(const AnyMap& phaseNode,
296 const AnyMap& rootNode=AnyMap()) override;
297
298 //! Update the electron energy distribution.
300
301 //! Electron species name
302 string electronSpeciesName() const {
304 }
305
306 //! Return the distribution Number #m_distNum
307 int distributionNumber() const {
308 return m_distNum;
309 }
310
311 //! Return the electron energy level Number #m_levelNum
312 int levelNumber() const {
313 return m_levelNum;
314 }
315
316 //! Get the indicies for inelastic electron collisions
317 //! @since New in %Cantera 3.2.
318 const vector<size_t>& kInelastic() const {
319 return m_kInelastic;
320 }
321
322 //! Get the indices for elastic electron collisions
323 //! @since New in %Cantera 3.2.
324 const vector<size_t>& kElastic() const {
325 return m_kElastic;
326 }
327
328 //! target of a specific process
329 //! @since New in %Cantera 3.2.
330 size_t targetIndex(size_t i) const {
331 return m_targetSpeciesIndices[i];
332 }
333
334 //! Get the frequency of the applied electric field [Hz]
335 //! @since New in %Cantera 3.2.
336 double electricFieldFrequency() const {
338 }
339
340 //! Get the applied electric field strength [V/m]
341 double electricField() const {
342 return m_electricField;
343 }
344
345 //! Set the absolute electric field strength [V/m]
346 void setElectricField(double E) {
347 m_electricField = E;
348 }
349
350 //! Calculate the degree of ionization
351 //double ionDegree() const {
352 // double ne = concentration(m_electronSpeciesIndex); // [kmol/m³]
353 // double n_total = molarDensity(); // [kmol/m³]
354 // return ne / n_total;
355 //}
356
357 //! Get the reduced electric field strength [V·m²]
358 double reducedElectricField() const {
360 }
361
362 //! Set reduced electric field given in [V·m²]
363 void setReducedElectricField(double EN) {
364 m_electricField = EN * molarDensity() * Avogadro; // [V/m]
365 }
366
367 virtual void setSolution(std::weak_ptr<Solution> soln) override;
368
369 /**
370 * The elastic power loss (J/s/m³)
371 * @f[
372 * P_k = N_A N_A C_e e \sum_k C_k K_k,
373 * @f]
374 * where @f$ C_k @f$ and @f$ C_e @f$ are the concentration (kmol/m³) of the
375 * target species and electrons, respectively. @f$ K_k @f$ is the elastic
376 * electron energy loss coefficient (eV-m³/s).
377 */
378 double elasticPowerLoss();
379
380protected:
381 void updateThermo() const override;
382
383 //! When electron energy distribution changed, plasma properties such as
384 //! electron-collision reaction rates need to be re-evaluated.
386
387 //! When electron energy level changed, plasma properties such as
388 //! electron-collision reaction rates need to be re-evaluate.
389 //! In addition, the cross-sections need to be interpolated at
390 //! the new level.
392
393 //! Check the electron energy levels
394 /*!
395 * The values of electron energy levels need to be positive and
396 * monotonically increasing.
397 */
398 void checkElectronEnergyLevels() const;
399
400 //! Check the electron energy distribution
401 /*!
402 * This method check the electron energy distribution for the criteria
403 * below.
404 *
405 * 1. The values of electron energy distribution cannot be negative.
406 *
407 * 2. If the last value of electron energy distribution is larger
408 * than 0.01, it will raise a warning to suggest using a higher electron
409 * energy levels.
410 */
412
413 //! Set isotropic electron energy distribution
415
416 //! Update electron temperature (K) From energy distribution.
417 //! #m_electronTemp
419
420 //! Electron energy distribution norm
422
423 //! Update interpolated cross section of a collision
424 bool updateInterpolatedCrossSection(size_t k);
425
426 //! Update electron energy distribution difference
428
429 // Electron energy order in the exponential term
430 double m_isotropicShapeFactor = 1.0;
431
432 //! Number of points of electron energy levels
433 size_t m_nPoints = 1001;
434
435 //! electron energy levels [ev]. Length: #m_nPoints
437
438 //! Normalized electron energy distribution vector [-]
439 //! Length: #m_nPoints
440 Eigen::ArrayXd m_electronEnergyDist;
441
442 //! Index of electron species
444
445 //! Electron temperature [K]
447
448 //! Electron energy distribution type
449 string m_distributionType = "isotropic";
450
451 //! Numerical quadrature method for electron energy distribution
452 string m_quadratureMethod = "simpson";
453
454 //! Flag of normalizing electron energy distribution
456
457 //! Indices of inelastic collisions in m_crossSections
458 vector<size_t> m_kInelastic;
459
460 //! Indices of elastic collisions in m_crossSections
461 vector<size_t> m_kElastic;
462
463 //! electric field [V/m]
464 double m_electricField = 0.0;
465
466 //! electric field freq [Hz]
468
469 //! Cross section data. m_crossSections[i][j], where i is the specific process,
470 //! j is the index of vector. Unit: [m^2]
471 vector<vector<double>> m_crossSections;
472
473 //! Electron energy levels corresponding to the cross section data. m_energyLevels[i][j],
474 //! where i is the specific process, j is the index of vector. Unit: [eV]
475 vector<vector<double>> m_energyLevels;
476
477 //! ionization degree for the electron-electron collisions (tmp is the previous one)
478 //double m_ionDegree = 0.0;
479
480 //! Electron energy distribution Difference dF/dε (V^-5/2)
482
483 //! Elastic electron energy loss coefficients (eV m3/s)
484 /*! The elastic electron energy loss coefficient for species k is,
485 * @f[
486 * K_k = \frac{2 m_e}{m_k} \sqrt{\frac{2 e}{m_e}} \int_0^{\infty} \sigma_k
487 * \epsilon^2 \left( F_0 + \frac{k_B T}{e}
488 * \frac{\partial F_0}{\partial \epsilon} \right) d \epsilon,
489 * @f]
490 * where @f$ m_e @f$ [kg] is the electron mass, @f$ \epsilon @f$ [V] is the
491 * electron energy, @f$ \sigma_k @f$ [m2] is the reaction collision cross section,
492 * @f$ F_0 @f$ [V^(-3/2)] is the normalized electron energy distribution function.
493 */
495
496 //! Updates the elastic electron energy loss coefficient for collision index i
497 /*! Calculates the elastic energy loss coefficient using the current electron
498 energy distribution and cross sections.
499 */
501
502 //! Update elastic electron energy loss coefficients
503 /*! Used by elasticPowerLoss() and other plasma property calculations that
504 depends on #m_elasticElectronEnergyLossCoefficients. This function calls
505 updateInterpolatedCrossSection() before calling
506 updateElasticElectronEnergyLossCoefficient()
507 */
509
510private:
511
512 //! Solver used to calculate the EEDF based on electron collision rates
513 unique_ptr<EEDFTwoTermApproximation> m_eedfSolver = nullptr;
514
515 //! Electron energy distribution change variable. Whenever
516 //! #m_electronEnergyDist changes, this int is incremented.
517 int m_distNum = -1;
518
519 //! Electron energy level change variable. Whenever
520 //! #m_electronEnergyLevels changes, this int is incremented.
521 int m_levelNum = -1;
522
523 //! The list of shared pointers of plasma collision reactions
524 vector<shared_ptr<Reaction>> m_collisions;
525
526 //! The list of shared pointers of collision rates
527 vector<shared_ptr<ElectronCollisionPlasmaRate>> m_collisionRates;
528
529 //! The collision-target species indices of #m_collisions
531
532 //! The list of whether the interpolated cross sections is ready
533 vector<bool> m_interp_cs_ready;
534
535 //! Set collisions. This function sets the list of collisions and
536 //! the list of target species using #addCollision.
537 void setCollisions();
538
539 //! Add a collision and record the target species
540 void addCollision(shared_ptr<Reaction> collision);
541};
542
543}
544
545#endif
EEDF Two-Term approximation solver.
ThermoPhase object for the ideal gas equation of state - workhorse for Cantera (see Thermodynamic Pro...
A map of string keys to values whose type can vary at runtime.
Definition AnyMap.h:431
Class IdealGasPhase represents low-density gases that obey the ideal gas equation of state.
An error indicating that an unimplemented function has been called.
virtual double molarDensity() const
Molar density (kmol/m^3).
Definition Phase.cpp:576
virtual double concentration(const size_t k) const
Concentration of species k.
Definition Phase.cpp:476
string speciesName(size_t k) const
Name of the species with index k.
Definition Phase.cpp:142
Base class for handling plasma properties, specifically focusing on the electron energy distribution.
Definition PlasmaPhase.h:84
void checkElectronEnergyDistribution() const
Check the electron energy distribution.
vector< vector< double > > m_energyLevels
Electron energy levels corresponding to the cross section data.
void setCollisions()
Set collisions.
double meanElectronEnergy() const
Mean electron energy [eV].
int distributionNumber() const
Return the distribution Number m_distNum.
double enthalpy_mole() const override
Return the Molar enthalpy. Units: J/kmol.
void setQuadratureMethod(const string &method)
Set numerical quadrature method for integrating electron energy distribution function.
size_t m_nPoints
Number of points of electron energy levels.
int levelNumber() const
Return the electron energy level Number m_levelNum.
void addCollision(shared_ptr< Reaction > collision)
Add a collision and record the target species.
virtual void setSolution(std::weak_ptr< Solution > soln) override
Set the link to the Solution object that owns this ThermoPhase.
void getPartialMolarEnthalpies(double *hbar) const override
Returns an array of partial molar enthalpies for the species in the mixture.
void getChemPotentials(double *mu) const override
Get the species chemical potentials. Units: J/kmol.
void normalizeElectronEnergyDistribution()
Electron energy distribution norm.
void getStandardChemPotentials(double *muStar) const override
Get the array of chemical potentials at unit activity for the species at their standard states at the...
void updateThermo() const override
Update the species reference state thermodynamic functions.
vector< size_t > m_targetSpeciesIndices
The collision-target species indices of m_collisions.
void setElectronTemperature(double Te) override
Set the internally stored electron temperature of the phase (K).
void electronEnergyLevelChanged()
When electron energy level changed, plasma properties such as electron-collision reaction rates need ...
double m_electricFieldFrequency
electric field freq [Hz]
string electronEnergyDistributionType() const
Get electron energy distribution type.
double elasticPowerLoss()
The elastic power loss (J/s/m³)
int m_levelNum
Electron energy level change variable.
bool updateInterpolatedCrossSection(size_t k)
Update interpolated cross section of a collision.
void electronEnergyDistributionChanged()
When electron energy distribution changed, plasma properties such as electron-collision reaction rate...
void getEntropy_R(double *sr) const override
Get the array of nondimensional Entropy functions for the standard state species at the current T and...
void setElectricField(double E)
Set the absolute electric field strength [V/m].
string quadratureMethod() const
Numerical quadrature method. Method: m_quadratureMethod.
double electricFieldFrequency() const
Get the frequency of the applied electric field [Hz].
size_t nElectronEnergyLevels() const
Number of electron levels.
void getGibbs_ref(double *g) const override
Returns the vector of the Gibbs function of the reference state at the current temperature of the sol...
size_t nCollisions() const
Number of electron collision cross sections.
Eigen::ArrayXd m_electronEnergyDist
Normalized electron energy distribution vector [-] Length: m_nPoints.
double electricField() const
Get the applied electric field strength [V/m].
Eigen::ArrayXd m_electronEnergyLevels
electron energy levels [ev]. Length: m_nPoints
void setDiscretizedElectronEnergyDist(const double *levels, const double *distrb, size_t length)
Set discretized electron energy distribution.
void getParameters(AnyMap &phaseNode) const override
Store the parameters of a ThermoPhase object such that an identical one could be reconstructed using ...
string type() const override
String indicating the thermodynamic model implemented.
void checkElectronEnergyLevels() const
Check the electron energy levels.
void initThermo() override
Initialize the ThermoPhase object after all species have been set up.
void updateElasticElectronEnergyLossCoefficients()
Update elastic electron energy loss coefficients.
void updateElectronTemperatureFromEnergyDist()
Update electron temperature (K) From energy distribution.
string m_distributionType
Electron energy distribution type.
void getStandardVolumes_ref(double *vol) const override
Get the molar volumes of the species reference states at the current T and P_ref of the solution.
const vector< size_t > & kElastic() const
Get the indices for elastic electron collisions.
const shared_ptr< ElectronCollisionPlasmaRate > collisionRate(size_t i) const
Get the ElectronCollisionPlasmaRate object associated with electron collision i.
void updateElectronEnergyDistribution()
Update the electron energy distribution.
vector< double > m_elasticElectronEnergyLossCoefficients
Elastic electron energy loss coefficients (eV m3/s)
string m_quadratureMethod
Numerical quadrature method for electron energy distribution.
double m_electricField
electric field [V/m]
size_t electronSpeciesIndex() const
Electron Species Index.
double m_electronTemp
Electron temperature [K].
void getElectronEnergyDistribution(double *distrb) const
Get electron energy distribution.
double RTe() const
Return the Gas Constant multiplied by the current electron temperature.
void setElectronEnergyLevels(const double *levels, size_t length)
Set electron energy levels.
void getGibbs_RT(double *grt) const override
Get the nondimensional Gibbs functions for the species in their standard states at the current T and ...
double intEnergy_mole() const override
Molar internal energy. Units: J/kmol.
double entropy_mole() const override
Molar entropy.
bool m_do_normalizeElectronEnergyDist
Flag of normalizing electron energy distribution.
void updateElectronEnergyDistDifference()
Update electron energy distribution difference.
bool normalizeElectronEnergyDistEnabled() const
Flag of automatically normalize electron energy distribution.
void updateElasticElectronEnergyLossCoefficient(size_t i)
Updates the elastic electron energy loss coefficient for collision index i.
vector< size_t > m_kElastic
Indices of elastic collisions in m_crossSections.
void setReducedElectricField(double EN)
Set reduced electric field given in [V·m²].
unique_ptr< EEDFTwoTermApproximation > m_eedfSolver
Solver used to calculate the EEDF based on electron collision rates.
void getPartialMolarIntEnergies(double *ubar) const override
Return an array of partial molar internal energies for the species in the mixture.
double cp_mole() const override
Molar heat capacity at constant pressure.
string electronSpeciesName() const
Electron species name.
void setIsotropicElectronEnergyDistribution()
Set isotropic electron energy distribution.
Eigen::ArrayXd m_electronEnergyDistDiff
ionization degree for the electron-electron collisions (tmp is the previous one)
double isotropicShapeFactor() const
The shape factor of isotropic electron energy distribution.
double gibbs_mole() const override
Molar Gibbs function. Units: J/kmol.
void getElectronEnergyLevels(double *levels) const
Get electron energy levels.
double reducedElectricField() const
Calculate the degree of ionization.
bool addSpecies(shared_ptr< Species > spec) override
Add a Species to this Phase.
const shared_ptr< Reaction > collision(size_t i) const
Get the Reaction object associated with electron collision i.
vector< bool > m_interp_cs_ready
The list of whether the interpolated cross sections is ready.
vector< shared_ptr< ElectronCollisionPlasmaRate > > m_collisionRates
The list of shared pointers of collision rates.
size_t targetIndex(size_t i) const
target of a specific process
vector< shared_ptr< Reaction > > m_collisions
The list of shared pointers of plasma collision reactions.
void setParameters(const AnyMap &phaseNode, const AnyMap &rootNode=AnyMap()) override
Set equation of state parameters from an AnyMap phase description.
void setMeanElectronEnergy(double energy)
Set mean electron energy [eV].
size_t m_electronSpeciesIndex
Index of electron species.
const vector< size_t > & kInelastic() const
Get the indicies for inelastic electron collisions.
vector< vector< double > > m_crossSections
Cross section data.
void setElectronEnergyDistributionType(const string &type)
Set electron energy distribution type.
void getPartialMolarEntropies(double *sbar) const override
Returns an array of partial molar entropies of the species in the solution.
virtual double electronPressure() const
Electron pressure.
vector< size_t > m_kInelastic
Indices of inelastic collisions in m_crossSections.
double electronTemperature() const override
Electron Temperature (K)
void setIsotropicShapeFactor(double x)
Set the shape factor of isotropic electron energy distribution.
void enableNormalizeElectronEnergyDist(bool enable)
Set flag of automatically normalize electron energy distribution Flag: m_do_normalizeElectronEnergyDi...
int m_distNum
Electron energy distribution change variable.
const double Boltzmann
Boltzmann constant [J/K].
Definition ct_defs.h:84
const double Avogadro
Avogadro's Number [number/kmol].
Definition ct_defs.h:81
const double GasConstant
Universal Gas Constant [J/kmol/K].
Definition ct_defs.h:120
const double ElectronCharge
Elementary charge [C].
Definition ct_defs.h:90
Namespace for the Cantera kernel.
Definition AnyMap.cpp:595
const size_t npos
index returned by functions to indicate "no position"
Definition ct_defs.h:180