[Python] Added access to equilibrium solvers for Solution and Mixture

This commit is contained in:
Ray Speth 2012-09-06 19:57:58 +00:00
parent bcbdd25101
commit 0fd5ab0127
3 changed files with 22 additions and 2 deletions

View file

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

View file

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

View file

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