[Cython] Add support for setting state using entropy + specifc volume

This commit is contained in:
Ray Speth 2013-05-31 15:55:57 +00:00
parent 81b8845b8e
commit 0b00122062
3 changed files with 47 additions and 0 deletions

View file

@ -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 +

View file

@ -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()

View file

@ -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]."""