Add Python interface for setState_RP + tests
This commit is contained in:
parent
8e58a45edb
commit
20455056f8
3 changed files with 51 additions and 0 deletions
|
|
@ -176,6 +176,7 @@ cdef extern from "cantera/thermo/ThermoPhase.h" namespace "Cantera":
|
|||
void setState_UV(double, double) except +
|
||||
void setState_SP(double, double) except +
|
||||
void setState_SV(double, double) except +
|
||||
void setState_RP(double, double) except +
|
||||
|
||||
# molar thermodynamic properties:
|
||||
double enthalpy_mole() except +
|
||||
|
|
|
|||
|
|
@ -295,6 +295,13 @@ class TestThermoPhase(utilities.CanteraTest):
|
|||
self.phase.SVY = s1, v1, Y1
|
||||
check_state(T1, rho1, Y1)
|
||||
|
||||
self.phase.TDY = T0, rho0, Y0
|
||||
self.phase.DPX = rho1, P1, X1
|
||||
check_state(T1, rho1, Y1)
|
||||
|
||||
self.phase.TDY = T0, rho0, Y0
|
||||
self.phase.DPY = rho1, P1, Y1
|
||||
check_state(T1, rho1, Y1)
|
||||
|
||||
def test_setState_mass(self):
|
||||
self.check_setters(T1 = 500.0, rho1 = 1.5,
|
||||
|
|
@ -379,6 +386,20 @@ class TestThermoPhase(utilities.CanteraTest):
|
|||
self.assertNear(V, self.phase.v)
|
||||
self.assertArrayNear(X, self.phase.X)
|
||||
|
||||
D,P,X = self.phase.DPX
|
||||
self.assertNear(D, self.phase.density)
|
||||
self.assertNear(P, self.phase.P)
|
||||
self.assertArrayNear(X, self.phase.X)
|
||||
|
||||
D,P,Y = self.phase.DPY
|
||||
self.assertNear(D, self.phase.density)
|
||||
self.assertNear(P, self.phase.P)
|
||||
self.assertArrayNear(Y, self.phase.Y)
|
||||
|
||||
D,P = self.phase.DP
|
||||
self.assertNear(D, self.phase.density)
|
||||
self.assertNear(P, self.phase.P)
|
||||
|
||||
def test_getState_mass(self):
|
||||
self.phase.TDY = 350.0, 0.7, 'H2:0.1, H2O2:0.1, AR:0.8'
|
||||
self.check_getters()
|
||||
|
|
|
|||
|
|
@ -886,6 +886,35 @@ cdef class ThermoPhase(_SolutionBase):
|
|||
self.thermo.setState_UV(U / self._mass_factor(),
|
||||
V / self._mass_factor())
|
||||
|
||||
property DP:
|
||||
def __get__(self):
|
||||
return self.density, self.P
|
||||
def __set__(self, values):
|
||||
assert len(values) == 2
|
||||
D = values[0] if values[0] is not None else self.density
|
||||
P = values[1] if values[1] is not None else self.P
|
||||
self.thermo.setState_RP(D*self._mass_factor(), P)
|
||||
|
||||
property DPX:
|
||||
def __get__(self):
|
||||
return self.density, self.P, self.X
|
||||
def __set__(self, values):
|
||||
assert len(values) == 3
|
||||
D = values[0] if values[0] is not None else self.density
|
||||
P = values[1] if values[1] is not None else self.P
|
||||
self.X = values[2]
|
||||
self.thermo.setState_RP(D*self._mass_factor(), P)
|
||||
|
||||
property DPY:
|
||||
def __get__(self):
|
||||
return self.density, self.P, self.Y
|
||||
def __set__(self, values):
|
||||
assert len(values) == 3
|
||||
D = values[0] if values[0] is not None else self.density
|
||||
P = values[1] if values[1] is not None else self.P
|
||||
self.Y = values[2]
|
||||
self.thermo.setState_RP(D*self._mass_factor(), P)
|
||||
|
||||
property HP:
|
||||
"""Get/Set enthalpy [J/kg or J/kmol] and pressure [Pa]."""
|
||||
def __get__(self):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue