From 0fd5ab0127de9c021bfa02fc5d3ff133c6863a8f Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Thu, 6 Sep 2012 19:57:58 +0000 Subject: [PATCH] [Python] Added access to equilibrium solvers for Solution and Mixture --- interfaces/cython/cantera/_cantera.pxd | 6 ++++++ interfaces/cython/cantera/mixture.pyx | 12 ++++++++++-- interfaces/cython/cantera/thermo.pyx | 6 ++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/interfaces/cython/cantera/_cantera.pxd b/interfaces/cython/cantera/_cantera.pxd index e669bbea5..0a7d3995c 100644 --- a/interfaces/cython/cantera/_cantera.pxd +++ b/interfaces/cython/cantera/_cantera.pxd @@ -182,6 +182,12 @@ cdef extern from "cantera/equil/MultiPhase.h" namespace "Cantera": void setPressure(double) double pressure() +cdef extern from "cantera/equil/equil.h" namespace "Cantera": + int equilibrate(CxxThermoPhase&, char*, int, double, int, int, int) except + + +cdef extern from "cantera/equil/vcs_MultiPhaseEquil.h" namespace "Cantera": + int vcs_equilibrate(CxxMultiPhase&, char*, int, int, int, double, int, int, int) + cdef extern from "cantera/numerics/Func1.h": cdef cppclass CxxFunc1 "Cantera::Func1": CxxFunc1() diff --git a/interfaces/cython/cantera/mixture.pyx b/interfaces/cython/cantera/mixture.pyx index 351300d15..8dd97362d 100644 --- a/interfaces/cython/cantera/mixture.pyx +++ b/interfaces/cython/cantera/mixture.pyx @@ -10,8 +10,8 @@ cdef class Mixture: self.mix.init() if self._phases: - self.pressure = self._phases[0].pressure - self.temperature = self._phases[0].temperature + self.pressure = self._phases[0].P + self.temperature = self._phases[0].T def __dealloc__(self): del self.mix @@ -19,6 +19,14 @@ cdef class Mixture: def phase(self, n): return self._phases[n] + def equilibrate(self, XY, solver=1, int estimateEquil=0, double err=1e-9, + int maxsteps=1000, + int maxiter=200, int loglevel=0, printlevel=0): + XY = XY.upper() + vcs_equilibrate(deref(self.mix), stringify(XY).c_str(), + estimateEquil, printlevel, solver, err, + maxsteps, maxiter, loglevel) + property nSpecies: def __get__(self): return self.mix.nSpecies() diff --git a/interfaces/cython/cantera/thermo.pyx b/interfaces/cython/cantera/thermo.pyx index 2f62a1839..786b2ac56 100644 --- a/interfaces/cython/cantera/thermo.pyx +++ b/interfaces/cython/cantera/thermo.pyx @@ -51,6 +51,12 @@ cdef class ThermoPhase(_SolutionBase): else: return 1.0 + def equilibrate(self, XY, int solver=-1, double rtol=1e-9, + int maxsteps=1000, int maxiter=100, int loglevel=0): + XY = XY.upper() + equilibrate(deref(self.thermo), stringify(XY).c_str(), + solver, rtol, maxsteps, maxiter, loglevel) + ####### Composition, species, and elements ######## property nElements: