From deafbf88881fdbcc10cdfcb557d80ef173502e58 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Fri, 1 Apr 2016 22:37:13 -0400 Subject: [PATCH] [Python] Allow setting SolutionArray using mass/mole fraction arrays --- interfaces/cython/cantera/composite.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/interfaces/cython/cantera/composite.py b/interfaces/cython/cantera/composite.py index 4b0ae183f..1d9b3592f 100644 --- a/interfaces/cython/cantera/composite.py +++ b/interfaces/cython/cantera/composite.py @@ -465,12 +465,22 @@ def _make_functions(): def setter(self, ABC): assert len(ABC) == 3, "Expected 3 elements, got {}".format(len(ABC)) - A, B, C, _ = np.broadcast_arrays(ABC[0], ABC[1], ABC[2], - self._output_dummy) - for index in self._indices: - self._phase.state = self._states[index] - setattr(self._phase, name, (A[index], B[index], C[index])) - self._states[index][:] = self._phase.state + A, B, _ = np.broadcast_arrays(ABC[0], ABC[1], self._output_dummy) + XY = ABC[2] # composition + if len(np.shape(XY)) < 2: + # composition is a single array (or string or dict) + for index in self._indices: + self._phase.state = self._states[index] + setattr(self._phase, name, (A[index], B[index], XY)) + self._states[index][:] = self._phase.state + else: + # composition is an array with trailing dimension n_species + C = np.empty(self._shape + (self._phase.n_species,)) + C[:] = XY + for index in self._indices: + self._phase.state = self._states[index] + setattr(self._phase, name, (A[index], B[index], C[index])) + self._states[index][:] = self._phase.state return property(getter, setter, doc=getattr(Solution, name).__doc__)