[Cython] Add support for setting state using entropy + specifc volume
This commit is contained in:
parent
81b8845b8e
commit
0b00122062
3 changed files with 47 additions and 0 deletions
|
|
@ -98,6 +98,7 @@ cdef extern from "cantera/thermo/ThermoPhase.h" namespace "Cantera":
|
|||
void setState_HP(double, double) except +
|
||||
void setState_UV(double, double) except +
|
||||
void setState_SP(double, double) except +
|
||||
void setState_SV(double, double) except +
|
||||
|
||||
# molar thermodynamic properties:
|
||||
double enthalpy_mole() except +
|
||||
|
|
|
|||
|
|
@ -150,6 +150,14 @@ class TestThermoPhase(utilities.CanteraTest):
|
|||
self.phase.SPX = s1, P1, X1
|
||||
check_state(T1, rho1, Y1)
|
||||
|
||||
self.phase.TDY = T0, rho0, Y0
|
||||
self.phase.SVX = s1, v1, X1
|
||||
check_state(T1, rho1, Y1)
|
||||
|
||||
self.phase.TDY = T0, rho0, Y0
|
||||
self.phase.SVY = s1, v1, Y1
|
||||
check_state(T1, rho1, Y1)
|
||||
|
||||
|
||||
def test_setState_mass(self):
|
||||
self.check_setters(T1 = 500.0, rho1 = 1.5,
|
||||
|
|
@ -175,6 +183,11 @@ class TestThermoPhase(utilities.CanteraTest):
|
|||
self.assertNear(U, self.phase.u)
|
||||
self.assertNear(V, self.phase.v)
|
||||
|
||||
S,V,X = self.phase.SVX
|
||||
self.assertNear(S, self.phase.s)
|
||||
self.assertNear(V, self.phase.v)
|
||||
self.assertArrayNear(X, self.phase.X)
|
||||
|
||||
def test_getState_mass(self):
|
||||
self.phase.TDY = 350.0, 0.7, 'H2:0.1, H2O2:0.1, AR:0.8'
|
||||
self.check_getters()
|
||||
|
|
|
|||
|
|
@ -565,6 +565,39 @@ cdef class ThermoPhase(_SolutionBase):
|
|||
self.Y = values[2]
|
||||
self.SP = values[:2]
|
||||
|
||||
property SV:
|
||||
"""
|
||||
Get/Set entropy [J/kg/K or J/kmol/K] and specific volume [m^3/kg or
|
||||
m^3/kmol].
|
||||
"""
|
||||
def __get__(self):
|
||||
return self.s, self.v
|
||||
def __set__(self, values):
|
||||
self.thermo.setState_SV(values[0] / self._mass_factor(),
|
||||
values[1] / self._mass_factor())
|
||||
|
||||
property SVX:
|
||||
"""
|
||||
Get/Set entropy [J/kg/K or J/kmol/K], specific volume [m^3/kg or
|
||||
m^3/kmol], and mole fractions.
|
||||
"""
|
||||
def __get__(self):
|
||||
return self.s, self.v, self.X
|
||||
def __set__(self, values):
|
||||
self.X = values[2]
|
||||
self.SV = values[:2]
|
||||
|
||||
property SVY:
|
||||
"""
|
||||
Get/Set entropy [J/kg/K or J/kmol/K], specific volume [m^3/kg or
|
||||
m^3/kmol], and mass fractions.
|
||||
"""
|
||||
def __get__(self):
|
||||
return self.s, self.v, self.Y
|
||||
def __set__(self, values):
|
||||
self.Y = values[2]
|
||||
self.SV = values[:2]
|
||||
|
||||
# partial molar / non-dimensional properties
|
||||
property partial_molar_enthalpies:
|
||||
"""Array of species partial molar enthalpies [J/kmol]."""
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue