[Python/Thermo] Add setter for PureFluid.X in the two-phase region

This commit is contained in:
Ray Speth 2015-05-30 11:30:11 -04:00
parent c7e79e64b4
commit eafcc1d991
2 changed files with 26 additions and 1 deletions

View file

@ -26,6 +26,22 @@ class TestPureFluid(utilities.CanteraTest):
self.assertNear(self.water.T, 500)
self.assertNear(self.water.X, 0.8)
def test_set_X(self):
self.water.TX = 500, 0.0
p = self.water.P
self.water.X = 0.8
self.assertNear(self.water.P, p)
self.assertNear(self.water.T, 500)
self.assertNear(self.water.X, 0.8)
self.water.TP = 650, 101325
with self.assertRaises(Exception):
self.water.X = 0.1
self.water.TP = 300, 101325
with self.assertRaises(Exception):
self.water.X = 0.3
def test_set_minmax(self):
self.water.TP = self.water.min_temp, 101325
self.assertNear(self.water.T, self.water.min_temp)

View file

@ -1170,9 +1170,18 @@ cdef class PureFluid(ThermoPhase):
or a fluid beyond its critical point.
"""
property X:
"""Vapor fraction (quality)."""
"""
Get/Set vapor fraction (quality). Can be set only when in the two-phase
region.
"""
def __get__(self):
return self.thermo.vaporFraction()
def __set__(self, X):
if (self.P >= self.critical_pressure or
abs(self.P-self.P_sat)/self.P > 1e-4):
raise ValueError('Cannot set vapor quality outside the'
'two-phase region')
self.thermo.setState_Psat(self.P, X)
property TX:
"""Get/Set the temperature and vapor fraction of a two-phase state."""