diff --git a/ionize/Solution/__init__.py b/ionize/Solution/__init__.py index 877327f..75000e8 100755 --- a/ionize/Solution/__init__.py +++ b/ionize/Solution/__init__.py @@ -111,8 +111,12 @@ def __init__(self, ions=[], concentrations=[]): else: ion = copy.copy(ion) ion.context(self) - assert concentration >= 0, 'Concentrations must be positive.' - self._contents[ion] = concentration + if concentration == 0: + continue + elif concentration <0: + raise ValueError('Concentrations must be positive.') + else: + self._contents[ion] = concentration self._hydronium = database['hydronium'] self._hydroxide = database['hydroxide'] @@ -206,6 +210,8 @@ def __sub__(self, other): ion, concentration = other new_contents = dict(self._contents) new_contents[ion] = self.concentration(ion) - concentration + if new_contents[ion]==0: + del new_contents[ion] return Solution(new_contents.keys(), new_contents.values()) except: raise TypeError('Solutions add to other Solutions or to an' diff --git a/ionize/Solution/titrate.py b/ionize/Solution/titrate.py index f4c3cbb..9870a12 100644 --- a/ionize/Solution/titrate.py +++ b/ionize/Solution/titrate.py @@ -77,7 +77,8 @@ def equilibrate_CO2(self, partial_pressure=atmospheric_CO2): def min_func(concentration): new_sol = self + (CO2, concentration) - deionized = concentration * (1-sum(new_sol[CO2].ionization_fraction())) + with CO2.context(new_sol): + deionized = concentration * (1-sum(CO2.ionization_fraction())) return deionized - eq with warnings.catch_warnings(): diff --git a/ionize/__version__.py b/ionize/__version__.py index 3f6fab6..1a72d32 100644 --- a/ionize/__version__.py +++ b/ionize/__version__.py @@ -1 +1 @@ -__version__ = '1.0.3' +__version__ = '1.1.0'