[Python] Interface.coverages can be set using a string or dict
This commit is contained in:
parent
522c563810
commit
31491c82cc
3 changed files with 30 additions and 0 deletions
|
|
@ -213,6 +213,7 @@ cdef extern from "cantera/thermo/SurfPhase.h":
|
|||
double siteDensity()
|
||||
void setSiteDensity(double)
|
||||
void setCoverages(double*) except +
|
||||
void setCoveragesByName(Composition&) except +
|
||||
void getCoverages(double*) except +
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -557,6 +557,31 @@ class TestInterfacePhase(utilities.CanteraTest):
|
|||
self.interface.site_density = 100
|
||||
self.assertNear(self.interface.site_density, 100)
|
||||
|
||||
def test_coverages_array(self):
|
||||
C = np.zeros(self.interface.n_species)
|
||||
C[1] = 0.25
|
||||
C[3] = 0.125
|
||||
C[4] = 0.125
|
||||
self.interface.coverages = C
|
||||
C = self.interface.coverages
|
||||
# should now be normalized
|
||||
self.assertNear(C[1], 0.5)
|
||||
self.assertNear(C[3], 0.25)
|
||||
self.assertNear(C[4], 0.25)
|
||||
self.assertNear(sum(C), 1.0)
|
||||
|
||||
def test_coverages_string(self):
|
||||
self.interface.coverages = 'c6HM:0.2, c6H*:0.8'
|
||||
C = self.interface.coverages
|
||||
self.assertNear(C[self.interface.species_index('c6HM')], 0.2)
|
||||
self.assertNear(C[self.interface.species_index('c6H*')], 0.8)
|
||||
|
||||
def test_coverages_dict(self):
|
||||
self.interface.coverages = {'c6**':1.0, 'c6*M':3.0}
|
||||
C = self.interface.coverages
|
||||
self.assertNear(C[self.interface.species_index('c6**')], 0.25)
|
||||
self.assertNear(C[self.interface.species_index('c6*M')], 0.75)
|
||||
|
||||
|
||||
class ImportTest(utilities.CanteraTest):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -1067,6 +1067,10 @@ cdef class InterfacePhase(ThermoPhase):
|
|||
return data
|
||||
|
||||
def __set__(self, theta):
|
||||
if isinstance(theta, (dict, str, unicode, bytes)):
|
||||
self.surf.setCoveragesByName(comp_map(theta))
|
||||
return
|
||||
|
||||
if len(theta) != self.n_species:
|
||||
raise ValueError("Array has incorrect length")
|
||||
cdef np.ndarray[np.double_t, ndim=1] data = \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue