rizer.cantera_ext
C++ Cantera 1-D plasma extension (custom Domain1D models and solvers)
Loading...
Searching...
No Matches
ThermoAccessor.h
Go to the documentation of this file.
1
9
10#ifndef RIZER_THERMO_ACCESSOR_H
11#define RIZER_THERMO_ACCESSOR_H
12
13namespace rizer
14{
15
22 constexpr double ElectronGamma = 5.0 / 3.0;
23
28 {
29 double p_heavy = 0.0;
30 double p_electron = 0.0;
31 double sound_speed = 0.0;
32 double heavy_energy = 0.0;
33 };
34
46 {
47 public:
48 virtual ~ThermoAccessor() = default;
49
59 virtual void pressures(double r, double t, double rho, double Tg, double Te,
60 const double *Y, double &p_heavy,
61 double &p_electron) const = 0;
62
76 virtual double soundSpeed(double r, double t, double rho, double Tg,
77 double Te, const double *Y) const = 0;
78
86 virtual double heavyEnergy(double Tg, const double *Y) const = 0;
87
93 virtual double electronCv() const = 0;
94
108 virtual double densityFromPressure(double pressure, double Tg, double Te,
109 const double *Y) const = 0;
110
120 virtual double heavyTemperature(double rho, const double *Y,
121 double heavy_internal_energy_target,
122 double Tg_seed) const = 0;
123
136 virtual StateProperties stateProperties(double r, double t, double rho,
137 double Tg, double Te,
138 const double *Y) const
139 {
140 StateProperties properties;
141 pressures(r, t, rho, Tg, Te, Y, properties.p_heavy,
142 properties.p_electron);
143 properties.sound_speed = soundSpeed(r, t, rho, Tg, Te, Y);
144 properties.heavy_energy = heavyEnergy(Tg, Y);
145 return properties;
146 }
147 };
148
149} // namespace rizer
150
151#endif // RIZER_THERMO_ACCESSOR_H
Equation-of-state and caloric accessor injected into hydroStep().
virtual double densityFromPressure(double pressure, double Tg, double Te, const double *Y) const =0
Density reproducing a target total pressure at a given temperature pair and composition – the inverse...
virtual ~ThermoAccessor()=default
virtual void pressures(double r, double t, double rho, double Tg, double Te, const double *Y, double &p_heavy, double &p_electron) const =0
Per-pool partial pressures, PHYSICS.md equation (G6).
virtual double heavyEnergy(double Tg, const double *Y) const =0
Heavy-pool internal energy per kg of MIXTURE, – the basis that makes the conserved variable of equa...
virtual StateProperties stateProperties(double r, double t, double rho, double Tg, double Te, const double *Y) const
pressures(), soundSpeed() and heavyEnergy() at one state, in one call.
virtual double electronCv() const =0
Electron specific heat at constant volume, per kg of ELECTRONS, .
virtual double heavyTemperature(double rho, const double *Y, double heavy_internal_energy_target, double Tg_seed) const =0
Invert for at fixed density and composition (NUMERICS.md section 8).
virtual double soundSpeed(double r, double t, double rho, double Tg, double Te, const double *Y) const =0
Sound speed, PHYSICS.md appendix A.4: the frozen two-pool speed , each pool following its own adiaba...
constexpr double ElectronGamma
Ratio of specific heats of the electron pool [-].
Every state function hydroStep() reads off one primitive state when it builds the conservative variab...
double heavy_energy
Heavy-pool energy [J/kg of mixture].
double p_heavy
Heavy-pool partial pressure [Pa].
double p_electron
Electron partial pressure [Pa].
double sound_speed
Frozen two-pool sound speed [m/s].