rizer.cantera_ext
C++ Cantera 1-D plasma extension (custom Domain1D models and solvers)
Loading...
Searching...
No Matches
ReactorRHS.h
Go to the documentation of this file.
1
16
17#ifndef RIZER_REACTOR_RHS_H
18#define RIZER_REACTOR_RHS_H
19
20#ifndef NOMINMAX
21#define NOMINMAX
22#endif
26
27#include <memory>
28#include <string>
29#include <vector>
30
31namespace rizer {
32
34public:
43 struct Diagnostics {
44 double P_elastic = 0.0;
45 double P_inelastic = 0.0;
46 double P_chemical = 0.0;
47 double P_chemical_e = 0.0;
48 double P_Joule = 0.0;
49 double nu_eH = 0.0;
50 double nu_ee = 0.0;
51 double nu_eI = 0.0;
52 double nu_eH_mass_weighted = 0.0;
53 };
54
55 // Exactly one of the two closures below is active per instance: if `collision` is
56 // non-empty (i.e. CollisionModel::empty() is false) it is used exclusively for
57 // sigma/nu_E and the sigma_T/sigma_v/nu_m_T/nu_m_v/nu_m/nu_E fallback fields are
58 // ignored; otherwise the legacy tabulated/scalar closure is used. See
59 // ReactorRHS::transport() in ReactorRHS.cpp for the selection logic.
60 struct Config {
63 bool reacting = true;
66 // Fallbacks used only when collision.empty():
69 std::vector<double> sigma_T;
72 std::vector<double> sigma_v;
75 std::vector<double> nu_m_T;
78 std::vector<double> nu_m_v;
81 double nu_m = 0.0;
84 double nu_E = 0.0;
94 std::vector<double> species_h0k;
95 };
96
102 ReactorRHS(std::shared_ptr<Cantera::Solution> sol, Config cfg);
103
104 std::size_t nSpecies() const { return m_nsp; }
105 std::size_t electronIndex() const { return m_ie; }
106 const std::vector<double>& molecularWeights() const { return m_wt; }
109 std::string speciesName(std::size_t k) const;
110 const std::shared_ptr<Cantera::Solution>& solution() const { return m_sol; }
111
126 const std::vector<double>& speciesCp() const { return m_cp_mass; }
127
145 void rates(double Tg, double Te, const double* Y, double rho, double E, double& dTg,
146 double& dTe, double* dY, double& lhs_Tg, double& lhs_Te,
147 Diagnostics* diag = nullptr) const;
148
154 double conductivity(double Tg, double Te, const double* Y, double rho) const;
160 double electronDensity(double Tg, double Te, const double* Y, double rho) const;
161
162private:
174 void setState(double Tg, double Te, const double* Y, double rho, double& P,
175 double& Xe, double& Tmean, double& n_e) const;
191 void transport(double Te, double n_e, double P, double Tmean, double& sigma,
192 double& nu_E, double& nu_eH, double& nu_eI,
193 double& nu_eH_mass_weighted) const;
194
195 std::shared_ptr<Cantera::Solution> m_sol;
196 std::size_t m_nsp;
197 std::size_t m_ie;
198 bool m_reacting;
199 CollisionModel m_collision;
200 PropertyTable m_sigma;
201 PropertyTable m_nu_m_tab;
202 double m_nu_m;
203 double m_nu_E;
204 std::vector<double> m_wt;
205 std::vector<char> m_is_electron_rxn;
210 std::vector<double> m_eps_th;
211 mutable std::vector<double> m_Yc, m_wdot, m_uk, m_cpR, m_rop, m_X, m_nk;
213 mutable std::vector<double> m_cp_mass;
214};
215
216} // namespace rizer
217
218#endif
Composition-resolved electron-heavy momentum-transfer collision model.
double conductivity(double Tg, double Te, const double *Y, double rho) const
Electrical conductivity [S/m] at a node state.
std::string speciesName(std::size_t k) const
Name of species k in the mechanism.
ReactorRHS(std::shared_ptr< Cantera::Solution > sol, Config cfg)
Construct a ReactorRHS for a given plasma Solution and configuration.
double electronDensity(double Tg, double Te, const double *Y, double rho) const
Electron number density [1/m^3], .
void rates(double Tg, double Te, const double *Y, double rho, double E, double &dTg, double &dTe, double *dY, double &lhs_Tg, double &lhs_Te, Diagnostics *diag=nullptr) const
Single-cell RHS (no transport, no volume work).
std::size_t nSpecies() const
Definition ReactorRHS.h:104
const std::shared_ptr< Cantera::Solution > & solution() const
Definition ReactorRHS.h:110
std::size_t electronIndex() const
Definition ReactorRHS.h:105
const std::vector< double > & speciesCp() const
Mass-basis species heat capacity at constant pressure c_p,k [J/kg/K], length nSpecies(),...
Definition ReactorRHS.h:126
const std::vector< double > & molecularWeights() const
Definition ReactorRHS.h:106
bool reacting
Include finite-rate chemistry source terms (true) or freeze composition (false) [-].
Definition ReactorRHS.h:63
std::vector< double > sigma_v
sigma(Te) table: electrical conductivity values at sigma_T [S/m]
Definition ReactorRHS.h:72
CollisionModel collision
Composition-resolved sigma/nu_E (preferred).
Definition ReactorRHS.h:65
std::vector< double > nu_m_T
nu_m(Te) table: electron-temperature grid points [K], strictly increasing
Definition ReactorRHS.h:75
std::vector< double > species_h0k
Per-species standard enthalpy of formation at 0 K [J/kmol], length nSpecies(), in mechanism species-i...
Definition ReactorRHS.h:94
double nu_m
Scalar electron momentum-transfer frequency, used when nu_m_T/nu_m_v are empty [1/s].
Definition ReactorRHS.h:81
std::vector< double > nu_m_v
nu_m(Te) table: electron momentum-transfer frequency values at nu_m_T [1/s]
Definition ReactorRHS.h:78
double nu_E
Scalar elastic electron-heavy energy-exchange frequency, used when collision is empty [1/s].
Definition ReactorRHS.h:84
std::vector< double > sigma_T
sigma(Te) table: electron-temperature grid points [K], strictly increasing
Definition ReactorRHS.h:69
Optional power / Maxwellian-condition breakdown filled by rates() when a non-null pointer is passed.
Definition ReactorRHS.h:43
double P_Joule
Joule heating power [W/m^3].
Definition ReactorRHS.h:48
double nu_eH
Electron-heavy momentum-transfer collision frequency [1/s] (Mitchner II-13.3).
Definition ReactorRHS.h:49
double P_chemical_e
Electron chemical power [W/m^3].
Definition ReactorRHS.h:47
double P_chemical
Heavy-species chemical power [W/m^3].
Definition ReactorRHS.h:46
double P_inelastic
Inelastic electron-impact-reaction power [W/m^3].
Definition ReactorRHS.h:45
double nu_eI
Electron-ion momentum-transfer collision frequency [1/s].
Definition ReactorRHS.h:51
double nu_ee
Electron-electron collision frequency [1/s] (Mitchner II-8.11e).
Definition ReactorRHS.h:50
double P_elastic
Elastic electron-heavy exchange power [W/m^3].
Definition ReactorRHS.h:44
double nu_eH_mass_weighted
sum_h nu_eh/m_h [1/kg/s] (Mitchner VIII-3.8, term 2)
Definition ReactorRHS.h:52