Creating a Solution
¶
The Solution
class defines a pythonic interface for creating, modifying, and estimating properties of electrolyte solutions. It is the core feature of pyEQL
and the primary user-facing class. There are several ways to create a Solution
.
Empty solution¶
With no input arguments, you get an empty Solution
at pH 7 and 1 atm pressure.
>>> from pyEQL import Solution
>>> s = Solution()
>>> print(s)
Volume: 1.000 l
Pressure: 1.000 atm
Temperature: 298.150 K
Components: ['H2O(aq)', 'H[+1]', 'OH[-1]']
Manual Creation¶
Typically, you will create a solution by specifying a list of solutes. Solutes are passed as a dict
with amounts given as strings that include units (see units). Any unit that can be understood by get_amount
is valid.
>>> from pyEQL import Solution
>>> s = Solution({"Na+": "0.5 mol/L", "Cl-": "0.5 mol/L"})
You can also specify conditions such as temperature, pressure, pH, and pE (redox potential).
Finally, you can manually create a solution with any list of solutes, temperature, pressure, etc. that you need:
>>> from pyEQL import Solution
>>> s1 = Solution(solutes={'Na+':'0.5 mol/kg', 'Cl-': '0.5 mol/kg'},
pH=8,
temperature = '20 degC',
volume='8 L',
pE = 4,
)
Using a preset¶
Alternatively, you can use the Solution.from_preset()
classmethod to easily create common solutions like seawater:
>>> from pyEQL import Solution
>>> s2 = Solution.from_preset('seawater')
<pyEQL.solution.Solution object at 0x7f057de6b0a0>
From a dictionary¶
If you have converted a Solution
to a dict
, you can re-instantiate it using the Solution.from_dict()
class method.
From a file¶
If you save a Solution
to a .json
file, you can recreate it using monty.serialization.loadfn
>>> from monty.serialization import loadfn
>>> s = loadfn('test.json')
print(s)
Volume: 1.000 l
Pressure: 1.000 atm
Temperature: 298.150 K
Components: ['H2O(aq)', 'H[+1]', 'OH[-1]']