rizer.cantera_ext
C++ Cantera 1-D plasma extension (custom Domain1D models and solvers)
Loading...
Searching...
No Matches
CanteraThermo.h
Go to the documentation of this file.
1
15
16#ifndef RIZER_CANTERA_THERMO_H
17#define RIZER_CANTERA_THERMO_H
18
20
22
23#include <memory>
24#include <string>
25#include <vector>
26
27namespace rizer
28{
29
37 {
38 public:
46 CanteraThermo(const std::string &mech, const std::string &phase);
47
64 void pressures(double r, double t, double rho, double Tg,
65 double Te, const double *Y, double &p_heavy,
66 double &p_electron) const override;
67
85 double soundSpeed(double r, double t, double rho, double Tg,
86 double Te, const double *Y) const override;
87
99 double heavyEnergy(double Tg, const double *Y) const override;
100
104 double electronCv() const override;
105
120 double densityFromPressure(double pressure, double Tg, double Te,
121 const double *Y) const override;
122
143 double heavyTemperature(double rho, const double *Y,
144 double heavy_internal_energy_target,
145 double Tg_seed) const override;
146
156 StateProperties stateProperties(double r, double t, double rho, double Tg,
157 double Te,
158 const double *Y) const override;
159
162 std::size_t nSpecies() const { return m_nsp; }
163
166 std::size_t electronIndex() const { return m_ie; }
167
168 private:
179 void setState(double rho, double Tg, double Te, const double *Y) const;
180
198 void heavyEnergyAndCv(double Tg, const double *Y, double &internal_energy,
199 double &cv) const;
200
207 void heavyCpAndCv(double &cp, double &cv) const;
208
214 double soundSpeedAtSetState(double p_heavy, double p_electron,
215 double Tg) const;
216
221 double heavyEnergyAtSetState() const;
222
223 std::shared_ptr<Cantera::ThermoPhase> m_phase;
224 Cantera::ThermoPhase *m_thermo = nullptr;
227 Cantera::PlasmaPhase *m_plasma = nullptr;
228 std::size_t m_nsp = 0;
229 std::size_t m_ie = 0;
230 double m_W_electron = 0.0;
231 mutable std::vector<double> m_Yc;
232 mutable std::vector<double> m_work;
233 };
234
235} // namespace rizer
236
237#endif // RIZER_CANTERA_THERMO_H
The equation-of-state seam of the hydrodynamic sub-step: the abstract accessor hydroStep() closes its...
CanteraThermo(const std::string &mech, const std::string &phase)
Loads the phase alone, never its reactions: the accessor evaluates thermo only, and a mechanism's rea...
std::size_t electronIndex() const
Index of the electron species, the one heavyEnergy() leaves out.
double electronCv() const override
exactly: no thermo lookup and no state, so it is the same number at every node and every step.
double heavyEnergy(double Tg, const double *Y) const override
Cantera's mixture internal energy less the electron's contribution, on the per kg of MIXTURE basis th...
double soundSpeed(double r, double t, double rho, double Tg, double Te, const double *Y) const override
summed over the heavy species alone, from the fixed ElectronGamma, over the same partial-pressure sp...
StateProperties stateProperties(double r, double t, double rho, double Tg, double Te, const double *Y) const override
The four state functions from one state-setting, rather than the three the default composition perfor...
double densityFromPressure(double pressure, double Tg, double Te, const double *Y) const override
PlasmaPhase::setPressure() read back through density().
double heavyTemperature(double rho, const double *Y, double heavy_internal_energy_target, double Tg_seed) const override
Damped Newton on = target, seeded with Tg_seed and confined to [200 K, 1e5 K].
std::size_t nSpecies() const
Number of species in the loaded phase.
void pressures(double r, double t, double rho, double Tg, double Te, const double *Y, double &p_heavy, double &p_electron) const override
PlasmaPhase::electronPressure(), and the total less that.
Equation-of-state and caloric accessor injected into hydroStep().
Every state function hydroStep() reads off one primitive state when it builds the conservative variab...