diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 0000000..c035dc7
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,29 @@
+name: Documentation
+on:
+ push:
+ branches:
+ - master
+ - main
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+jobs:
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/configure-pages@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-python@v6
+ with:
+ python-version: 3.x
+ - run: pip install zensical mkdocstrings-python markdown-exec
+ - run: zensical build --clean
+ - uses: actions/upload-pages-artifact@v5
+ with:
+ path: site
+ - uses: actions/deploy-pages@v5
+ id: deployment
diff --git a/.gitignore b/.gitignore
index 0b93df2..4c0462c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,15 +6,19 @@
#*.dll
*.DS_Store
-# Setuptools distribution folder.
+# Setuptools build and distribution folders.
/dist/
+/build/
# Python egg metadata, regenerated from source files by setuptools
/*.egg-info
# Jupyter notebook
+testing.ipynb
.ipynb_checkpoints/
.coverage
-
.vscode/*
dump.gz
+
+.venv
+/site/
diff --git a/convertnb.ipynb b/convertnb.ipynb
new file mode 100644
index 0000000..a450f44
--- /dev/null
+++ b/convertnb.ipynb
@@ -0,0 +1,74 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Convert notebooks\n",
+ "Read notebooks and convert to html."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from mkdocs_jupyter import nbconvert2\n",
+ "import os"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "nbdir = \"docs\\\\notebooks\\\\\"\n",
+ "notebooks = [file for file in os.listdir(nbdir) if file.endswith(\"ipynb\")]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "targetdir = \"docs\\\\nb_html\\\\\"\n",
+ "for notebook in notebooks:\n",
+ " content = nbconvert2.nb2html(nb_path=nbdir + notebook)\n",
+ " target = targetdir + notebook.replace(\".ipynb\", \".html\") \n",
+ " with open(target, \"w\", encoding=\"utf-8\") as f:\n",
+ " f.write(content) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".venv (3.12.6)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.12.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/docs/README.md b/docs/README.md
deleted file mode 100644
index 297cfe0..0000000
--- a/docs/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-
-
-
diff --git a/docs/examples/aluminium-limit.md b/docs/examples/aluminium-limit.md
new file mode 100644
index 0000000..3bc0afa
--- /dev/null
+++ b/docs/examples/aluminium-limit.md
@@ -0,0 +1,19 @@
+---
+icon: lucide/beaker
+---
+
+# Aluminium drinking-water limit
+
+Al concentration exceeds a 0.2 mg/kgw drinking-water limit at low and high pH, after [Appelo's aluminium example](http://hydrochemistry.eu/exmpls/al_conc.html). The pH values below are where that Al total is in equilibrium with gibbsite.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter).
+
+```pyodide session="al" height="8-12" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+
+pp = PhreeqPython('phreeqc.dat')
+print('Lower limit pH', pp.add_solution({'Al': '0.2 mg/kgw', 'pH': '4 Gibbsite'}).pH)
+print('Upper limit pH', pp.add_solution({'Al': '0.2 mg/kgw', 'pH': '8 Gibbsite'}).pH)
+```
diff --git a/docs/examples/ca-f-fluorite.md b/docs/examples/ca-f-fluorite.md
new file mode 100644
index 0000000..da43bc2
--- /dev/null
+++ b/docs/examples/ca-f-fluorite.md
@@ -0,0 +1,57 @@
+---
+icon: lucide/beaker
+---
+
+# Ca–F equilibrium with fluorite
+
+The relation between fluoride and calcium in water, after [Appelo's fluorite example](http://hydrochemistry.eu/exmpls/ca_f.html). Calcite and fluorite stay at equilibrium while albite dissolves.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. Editors on this page **share a session**.
+
+```pyodide session="caf" height="18-28" install="matplotlib,numpy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+import matplotlib.pyplot as plt
+
+pp = PhreeqPython()
+solution1 = pp.add_solution({
+ 'pH': '7 charge',
+ 'C': '1 CO2(g) -1',
+ 'Ca': '1 Calcite',
+ 'F': '1 Fluorite',
+})
+
+x, y, yy = [], [], []
+
+for i in range(16):
+ x.append(solution1.total_element('Ca', 'mg'))
+ y.append(solution1.total_element('F', 'mg'))
+ yy.append(solution1.pH)
+ solution1.add('NaAlSi3O8', 7.5 / 15)
+ solution1.equalize(
+ ['Fluorite', 'Calcite', 'Quartz', 'Kaolinite'],
+ ['', '', 0, 0],
+ ['', '', 0, 0],
+ )
+
+print('points', len(x), 'final pH', round(yy[-1], 2))
+```
+
+```pyodide session="caf" height="14-22" install="matplotlib,numpy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+fig = plt.figure(figsize=[10, 5])
+ax = plt.gca()
+ax2 = ax.twinx()
+ax.plot(x, y, 'rs-', label='F')
+ax2.plot(x, yy, 'gd-', label='pH')
+ax.set_ylim([0, 10])
+ax.set_xlim([0, 160])
+ax2.set_ylim([6.5, 7.5])
+ax.set_xlabel('Ca (mg/l)')
+ax.set_ylabel('F (mg/l)')
+ax2.set_ylabel('pH (-)')
+ax.grid()
+plt.title('Fluorite equilibrium during Na-feldspar dissolution')
+fig.legend(loc=1, bbox_to_anchor=(1, 1), bbox_transform=ax.transAxes)
+show_plot(fig)
+```
diff --git a/docs/examples/calcite-dissolution.md b/docs/examples/calcite-dissolution.md
new file mode 100644
index 0000000..39222cc
--- /dev/null
+++ b/docs/examples/calcite-dissolution.md
@@ -0,0 +1,54 @@
+---
+icon: lucide/beaker
+---
+
+# Calcite dissolution
+
+Calcite dissolution as a function of CO₂ pressure, after [Appelo's calcite example](http://hydrochemistry.eu/exmpls/calcite.html). Equilibrium along a CO₂ titration is compared with mixing two end members.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. Editors on this page **share a session**.
+
+!!! warning "Changes are additive"
+
+ The loop adds CO₂ to `solution0` in place. Run it once. To start over, rerun from the first editor.
+
+```pyodide session="calcite" height="16-24" install="matplotlib,numpy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+import matplotlib.pyplot as plt
+
+pp = PhreeqPython(database='phreeqc.dat')
+
+solution0 = pp.add_solution({})
+solution1 = pp.add_solution({}).equalize(['Calcite', 'CO2(g)'], [0, -1.7])
+solution2 = pp.add_solution({}).equalize(['Calcite', 'CO2(g)'], [0, -3.5])
+solution3 = solution1 * 0.5 + solution2 * 0.5
+
+x, y = [], []
+for i in range(30):
+ solution0.add('CO2', 3.5 / 30)
+ solution0.saturate('Calcite')
+ x.append(solution0.sr('CO2(g)') * 100)
+ y.append(solution0.total_element('Ca'))
+
+print('points', len(x))
+```
+
+```pyodide session="calcite" height="12-18" install="matplotlib,numpy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+fig = plt.figure(figsize=[7, 7])
+plt.plot(x, y, 'rs-', label='equilibrium')
+plt.plot(
+ [solution1.sr('CO2(g)') * 1e2, solution2.sr('CO2(g)') * 1e2],
+ [solution1.total_element('Ca'), solution2.total_element('Ca')],
+ '-gx',
+ label='mixing line',
+)
+plt.plot(solution3.sr('CO2(g)') * 1e2, solution3.total_element('Ca'), '-b^', label='1:1')
+plt.xlim([0, 3])
+plt.ylim([0, 3])
+plt.grid()
+plt.legend()
+plt.title('Calcite equilibrium')
+show_plot(fig)
+```
diff --git a/docs/examples/carbonic-acid.md b/docs/examples/carbonic-acid.md
new file mode 100644
index 0000000..99e12e9
--- /dev/null
+++ b/docs/examples/carbonic-acid.md
@@ -0,0 +1,52 @@
+---
+icon: lucide/beaker
+---
+
+# Carbonic acid equilibrium
+
+Carbonic acid (H₂CO₃), bicarbonate (HCO₃⁻) and carbonate (CO₃²⁻) form in water through:
+
+- CO₂ + H₂O ⇌ H₂CO₃
+- H₂CO₃ ⇌ HCO₃⁻ + H⁺
+- HCO₃⁻ ⇌ CO₃²⁻ + H⁺
+
+The distribution depends on pH. This example titrates 1 mmol NaHCO₃ from pH 0 to 14.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. Editors on this page **share a session**. The loop has many pH steps and can take a short while in the browser.
+
+```pyodide session="carbonic" height="8-14" install="matplotlib,numpy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+import numpy as np
+import matplotlib.pyplot as plt
+
+pp = PhreeqPython()
+solution = pp.add_solution_simple({'NaHCO3': 1.0})
+print('pH {:.2f}, SC {:.2f} uS/cm'.format(solution.pH, solution.sc))
+```
+
+!!! warning "Changes are additive"
+
+ `change_ph` doses acid or base **into the same solution**. Run the loop once. To start over, rerun the first editor.
+
+```pyodide session="carbonic" height="14-22" install="matplotlib,numpy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+phs, co2, hco3, co3 = [], [], [], []
+
+for pH in np.arange(0, 14.1, 0.2):
+ solution.change_ph(pH)
+ phs.append(pH)
+ co2.append(solution.total('CO2') * 1000)
+ hco3.append(solution.total('HCO3') * 1000)
+ co3.append(solution.total('CO3') * 1000)
+
+fig = plt.figure(figsize=[10, 5])
+plt.plot(phs, co2, label='CO2')
+plt.plot(phs, hco3, label='HCO3-')
+plt.plot(phs, co3, label='CO3-2')
+plt.xlabel('pH')
+plt.ylabel('Concentration (mmol)')
+plt.title('Carbonic acid, bicarbonate, carbonate')
+plt.legend()
+show_plot(fig)
+```
diff --git a/docs/examples/functionality-overview.md b/docs/examples/functionality-overview.md
new file mode 100644
index 0000000..c0907c9
--- /dev/null
+++ b/docs/examples/functionality-overview.md
@@ -0,0 +1,103 @@
+---
+icon: lucide/beaker
+---
+
+# Functionality overview
+
+A tour of the main `Solution` methods: create, query, change, mix, copy, and forget.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. The first run loads Pyodide and can take a few seconds. Editors on this page **share a session**.
+
+## Adding solutions
+
+```pyodide session="overview" height="14-24" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+
+pp = PhreeqPython()
+
+# Simple, through a reaction block
+solution = pp.add_solution_simple({'CaCl2': 1.0, 'NaHCO3': 2.0}, temperature=15)
+
+# More control: standard PHREEQC SOLUTION keywords (PHREEQC example 3 — mixing)
+solution2 = pp.add_solution({
+ 'units': 'ppm',
+ 'pH': 8.22,
+ 'pe': 8.451,
+ 'density': 1.023,
+ 'temp': 25.0,
+ 'Ca': 412.3,
+ 'Mg': 1291.8,
+ 'Na': 10768.0,
+ 'K': 399.1,
+ 'Si': 4.28,
+ 'Cl': 19353.0,
+ 'Alkalinity': '141.682 as HCO3',
+ 'S(6)': 2712.0,
+})
+print('pH', round(solution.pH, 2), 'SC', round(solution.sc, 2))
+```
+
+## Basic properties
+
+```pyodide session="overview" height="8-14" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+print('Solution pH: {:.3}'.format(solution.pH))
+print('Solution sc: {:3.2f}'.format(solution.sc))
+print('Solution pe: {:.3}'.format(solution.pe))
+print('Temperature: {:.3}'.format(solution.temperature))
+print('Mass: {:.3}'.format(solution.mass))
+```
+
+## Speciation, elements, phases
+
+```pyodide session="overview" height="8-16" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+print('Species (mmol):')
+for name, amount in list(solution.species.items())[:8]:
+ print(f' {name:12} {amount:.4g}')
+print('...')
+print('Cl mmol', solution.total_element('Cl', units='mmol'))
+print('HCO3 mg', solution.total('HCO3', units='mg'))
+print('SI Calcite', round(solution.si('Calcite'), 2))
+```
+
+## Modifying solutions
+
+!!! warning "Changes are additive"
+
+ These calls change `solution` **in place**. Run this cell once. To start over, rerun **Adding solutions**.
+
+```pyodide session="overview" height="10-16" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+solution.add('NaOH', 1, 'mmol')
+solution.remove('NaCl', 1, 'mmol')
+solution.remove_fraction('CO3', 0.5)
+
+solution.saturate('Calcite', 1.0)
+solution.desaturate('Calcite', 0.0)
+
+solution.change_ph(5, 'HCl')
+print('pH', round(solution.pH, 2))
+
+solution.change_temperature(10)
+print('T', solution.temperature)
+```
+
+## Mixing
+
+```pyodide session="overview" height="12-18" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+solution1 = pp.add_solution_simple({'NaCl': 1})
+solution2 = pp.add_solution_simple({'NaCl': 3})
+solution3 = solution1 * 0.5 + solution2 * 0.5
+solution4 = solution1 + solution2
+
+print('Solution 3 Cl mmol', round(solution3.total('Cl'), 3), 'mass', solution3.mass)
+print('Solution 4 Cl mmol', round(solution4.total('Cl'), 3), 'mass', solution4.mass)
+```
+
+## Copy and forget
+
+```pyodide session="overview" height="6-10" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+solution5 = solution4.copy()
+print(solution5.sc)
+solution5.forget()
+```
diff --git a/docs/examples/gas-phase.md b/docs/examples/gas-phase.md
new file mode 100644
index 0000000..5f94906
--- /dev/null
+++ b/docs/examples/gas-phase.md
@@ -0,0 +1,141 @@
+---
+icon: lucide/beaker
+---
+
+# Gas-phase calculations
+
+Fixed-pressure vs fixed-volume gas after reaction of organic matter, after [PHREEQC example 7](https://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/phreeqc3-html/phreeqc3-62.htm#50528271_44022).
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. Editors on this page **share a session**. The reaction loop can take a few seconds.
+
+```pyodide session="gasphase" height="8-12" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+import numpy as np
+import pandas as pd
+import matplotlib.pyplot as plt
+
+pp = PhreeqPython(database='phreeqc.dat')
+```
+
+Add NH₄ / NH₃ species used in the original PHREEQC input:
+
+```pyodide session="gasphase" height="16-24" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+pp.ip.run_string("""
+SOLUTION_MASTER_SPECIES
+N(-3) NH4+ 0.0 N
+SOLUTION_SPECIES
+NH4+ = NH3 + H+
+ log_k -9.252
+ delta_h 12.48 kcal
+ -analytic 0.6322 -0.001225 -2835.76
+
+NO3- + 10 H+ + 8 e- = NH4+ + 3 H2O
+ log_k 119.077
+ delta_h -187.055 kcal
+ -gamma 2.5000 0.0000
+PHASES
+NH3(g)
+ NH3 = NH3
+ log_k 1.770
+ delta_h -8.170 kcal
+""")
+print('NH3 species loaded')
+```
+
+```pyodide session="gasphase" height="22-32" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+solution1 = pp.add_solution({})
+solution1.equalize(['Calcite', 'CO2(g)'], [0, -1.5])
+
+fixed_pressure = pp.add_gas(
+ {'CO2(g)': 0, 'CH4(g)': 0, 'N2(g)': 0, 'H2O(g)': 0},
+ pressure=1.1,
+ fixed_pressure=True,
+)
+fixed_volume = pp.add_gas(
+ {'CO2(g)': 0, 'CH4(g)': 0, 'N2(g)': 0, 'H2O(g)': 0},
+ volume=23.19,
+ fixed_pressure=False,
+ fixed_volume=True,
+ equilibrate_with=solution1,
+)
+
+mmol = [1, 2, 3, 4, 8, 16, 32, 64, 125, 250, 500, 1000]
+fp_vol, fp_pres, fp_frac = [], [], []
+fv_vol, fv_pres, fv_frac = [], [], []
+
+for m in mmol:
+ sol = solution1.copy()
+ fp = fixed_pressure.copy()
+ sol.add('CH2O(NH3)0.07', m, 'mmol')
+ sol.interact(fp)
+ fp_vol.append(fp.volume)
+ fp_pres.append(fp.pressure)
+ fp_frac.append(fp.partial_pressures)
+ sol.forget()
+ fp.forget()
+
+ sol = solution1.copy()
+ fv = fixed_volume.copy()
+ sol.add('CH2O(NH3)0.07', m, 'mmol')
+ sol.interact(fv)
+ fv_vol.append(fv.volume)
+ fv_pres.append(fv.pressure)
+ fv_frac.append(fv.partial_pressures)
+ sol.forget()
+ fv.forget()
+
+print('steps', len(mmol))
+```
+
+## Total gas pressure and volume
+
+```pyodide session="gasphase" height="16-24" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+fig = plt.figure(figsize=[8, 5])
+ax1 = plt.gca()
+ax2 = ax1.twinx()
+ax1.plot(mmol, np.log10(fp_pres), 'x-', color='tab:purple', label='Fixed P — pressure')
+ax1.plot(mmol, np.log10(fv_pres), 's-', color='tab:purple', label='Fixed V — pressure')
+ax1.plot(np.nan, np.nan, 'x-', color='tab:blue', label='Fixed P — volume')
+ax1.plot(np.nan, np.nan, 's-', color='tab:blue', label='Fixed V — volume')
+ax2.plot(mmol, fp_vol, 'x-')
+ax2.plot(mmol, fv_vol, 's-', color='tab:blue')
+ax2.set_xscale('log')
+ax2.set_yscale('log')
+ax1.set_xlim([1e0, 1e3])
+ax2.set_xlim([1e0, 1e3])
+ax1.set_ylim([-5, 1])
+ax2.set_ylim([1e-3, 1e5])
+ax1.legend(loc=4)
+ax1.grid()
+ax1.set_xlabel('Organic matter reacted, in millimoles')
+ax1.set_ylabel('Log(Pressure, in atmospheres)')
+ax2.set_ylabel('Volume, in liters')
+show_plot(fig)
+```
+
+## Gas composition
+
+```pyodide session="gasphase" height="14-22" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+fig = plt.figure(figsize=[12, 5])
+fig.add_subplot(1, 2, 1)
+pd.DataFrame(fp_frac, index=mmol).apply(np.log10)[2:].plot(style='-x', ax=plt.gca())
+plt.title('Fixed-pressure gas composition')
+plt.xscale('log')
+plt.ylim([-5, 1])
+plt.grid()
+plt.xlim(1e0, 1e3)
+plt.xlabel('Organic matter reacted, in millimoles')
+plt.ylabel('Log(Partial pressure, in atmospheres)')
+
+fig.add_subplot(1, 2, 2)
+pd.DataFrame(fv_frac, index=mmol).apply(np.log10).plot(style='-o', ax=plt.gca())
+plt.title('Fixed-volume gas composition')
+plt.xscale('log')
+plt.xlabel('Organic matter reacted, in millimoles')
+plt.ylabel('Log(Partial pressure, in atmospheres)')
+plt.grid()
+plt.ylim([-5, 1])
+show_plot(fig)
+```
diff --git a/docs/examples/gas-solubilities.md b/docs/examples/gas-solubilities.md
new file mode 100644
index 0000000..926f2db
--- /dev/null
+++ b/docs/examples/gas-solubilities.md
@@ -0,0 +1,127 @@
+---
+icon: lucide/beaker
+---
+
+# Gas solubilities
+
+O₂, N₂, CH₄, and CO₂ (in 4 M NaCl, Pitzer) as a function of pressure. Markers are literature / tabulated values shipped with the example.
+
+The browser version uses fewer pressure steps than the original notebook so it finishes in a reasonable time.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. Editors on this page **share a session**. Each gas is a separate cell; CO₂ is the slowest.
+
+```pyodide session="solubility" height="8-12" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+import numpy as np
+import matplotlib.pyplot as plt
+
+pp = PhreeqPython(database='phreeqc.dat')
+print('database', 'phreeqc.dat')
+```
+
+## Oxygen
+
+```pyodide session="solubility" height="14-22" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+pressure_range = np.linspace(0.01, 100, 25)
+o2 = []
+for p in pressure_range:
+ sol = pp.add_solution({'temp': 27})
+ gas = pp.add_gas({'O2(g)': p}, pressure=p, fixed_pressure=True)
+ sol.interact(gas)
+ o2.append(sol.total('O2', 'mol'))
+ sol.forget()
+ gas.forget()
+
+fig = plt.figure(figsize=[8, 5])
+plt.plot(pressure_range, o2, label='PhreeqPython')
+load_tsv('O2_27.dat').plot(style='x', ax=plt.gca())
+plt.title('Oxygen')
+plt.xlabel('Pressure / atm')
+plt.ylabel('O2 / (mol/kgw)')
+plt.legend()
+show_plot(fig)
+```
+
+## Nitrogen
+
+```pyodide session="solubility" height="14-22" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+pressure_range = np.linspace(0.01, 1000, 25)
+n2 = []
+for p in pressure_range:
+ sol = pp.add_solution({'temp': 25})
+ gas = pp.add_gas({'N2(g)': p}, pressure=p, fixed_pressure=True)
+ sol.interact(gas)
+ n2.append(sol.total_element('N', 'mol') / 2)
+ sol.forget()
+ gas.forget()
+
+fig = plt.figure(figsize=[8, 5])
+plt.plot(pressure_range, n2, label='PhreeqPython')
+load_tsv('n2_25C.dat').plot(style='x', ax=plt.gca())
+plt.title('Nitrogen')
+plt.xlabel('Pressure / atm')
+plt.ylabel('N2 / (mol/kgw)')
+plt.legend()
+show_plot(fig)
+```
+
+## Methane
+
+```pyodide session="solubility" height="16-24" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+fig = plt.figure(figsize=[8, 5])
+colors = ['C0', 'C1', 'C2']
+for temp in [25, 50, 100]:
+ pressure_range = np.linspace(0.01, 1000, 20)
+ ch4 = []
+ for p in pressure_range:
+ sol = pp.add_solution({'temp': temp})
+ gas = pp.add_gas({'CH4(g)': p}, pressure=p, fixed_pressure=True)
+ sol.interact(gas)
+ ch4.append(sol.total('CH4', 'mol'))
+ sol.forget()
+ gas.forget()
+ color = colors.pop(0)
+ plt.plot(pressure_range, ch4, color=color, label=f'{temp} °C')
+ plt.plot(load_tsv(f'ch4_{temp}c.dat'), 'x', color=color)
+
+plt.title('Methane')
+plt.xlabel('Pressure / atm')
+plt.ylabel('CH4 / (mol/kgw)')
+plt.legend()
+show_plot(fig)
+```
+
+## CO₂ in 4 M NaCl
+
+Uses the Pitzer database.
+
+```pyodide session="solubility" height="16-24" install="matplotlib,numpy,pandas,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+pitzer = PhreeqPython(database='pitzer.dat')
+fig = plt.figure(figsize=[8, 5])
+colors = ['C0', 'C1', 'C2']
+data = load_tsv('co2_4m_NaCl.dat')
+index = 0
+for temp in [80, 120, 160]:
+ pressure_range = np.linspace(0.01, 100, 20)
+ co2 = []
+ for p in pressure_range:
+ sol = pitzer.add_solution({'temp': temp})
+ sol.add('NaCl', 4, 'mol')
+ gas = pitzer.add_gas({'CO2(g)': p}, pressure=p, fixed_pressure=True)
+ sol.interact(gas)
+ co2.append(sol.total_element('C', units='mol'))
+ sol.forget()
+ gas.forget()
+ color = colors.pop(0)
+ plt.plot(pressure_range * 1.013, co2, color=color, label=f'{temp} °C')
+ plt.plot(data.iloc[:, index], 'x', color=color)
+ index += 1
+
+plt.title('CO2 in 4 M NaCl')
+plt.xlabel('Pressure / bar')
+plt.ylabel('CO2 / (mol/kgw)')
+plt.legend()
+show_plot(fig)
+```
diff --git a/docs/examples/gas_data/O2_27.dat b/docs/examples/gas_data/O2_27.dat
new file mode 100644
index 0000000..664a292
--- /dev/null
+++ b/docs/examples/gas_data/O2_27.dat
@@ -0,0 +1,10 @@
+P 27C
+10 0.0124
+20 0.024461717
+30 0.036490161
+40 0.047265295
+50 0.05745814
+70 0.071333274
+80 0.080755277
+90 0.088790877
+100 0.094835599
diff --git a/docs/examples/gas_data/ch4_100c.dat b/docs/examples/gas_data/ch4_100c.dat
new file mode 100644
index 0000000..3e62e33
--- /dev/null
+++ b/docs/examples/gas_data/ch4_100c.dat
@@ -0,0 +1,18 @@
+P 100C
+30.0 0.0381
+70.0 0.0613
+100.0 0.0995
+135.0 0.1075
+175.0 0.1193
+215.0 0.1500
+250.0 0.1580
+300.0 0.1777
+350.0 0.1896
+400.0 0.2054
+450.0 0.2023
+475.0 0.2140
+500.0 0.2370
+550.0 0.2340
+600.0 0.2574
+675.0 0.2545
+700.0 0.2623
diff --git a/docs/examples/gas_data/ch4_25c.dat b/docs/examples/gas_data/ch4_25c.dat
new file mode 100644
index 0000000..0342e4b
--- /dev/null
+++ b/docs/examples/gas_data/ch4_25c.dat
@@ -0,0 +1,12 @@
+P 25C
+22.4 0.0410
+35.3 0.0528
+51.4 0.0704
+67.4 0.0909
+125.6 0.1233
+174.0 0.1498
+238.6 0.1764
+335.6 0.2031
+439.1 0.2327
+529.7 0.2535
+633.2 0.2715
diff --git a/docs/examples/gas_data/ch4_50c.dat b/docs/examples/gas_data/ch4_50c.dat
new file mode 100644
index 0000000..f59f55d
--- /dev/null
+++ b/docs/examples/gas_data/ch4_50c.dat
@@ -0,0 +1,7 @@
+P 50C
+99.9 0.0764
+203.3 0.1236
+303.5 0.1532
+397.3 0.1799
+500.8 0.2066
+601.2 0.2216
diff --git a/docs/examples/gas_data/co2_4m_NaCl.dat b/docs/examples/gas_data/co2_4m_NaCl.dat
new file mode 100644
index 0000000..5b97abf
--- /dev/null
+++ b/docs/examples/gas_data/co2_4m_NaCl.dat
@@ -0,0 +1,17 @@
+P 80C 120C 160C
+8.079 4.908e-02
+1.659e+01 9.969e-02
+3.384e+01 2.025e-01
+5.611e+01 3.083e-01
+6.943e+01 3.589e-01
+8.341e+01 4.110e-01
+9.651e+01 4.617e-01
+1.201e+01 5.061e-02
+2.336e+01 1.012e-01
+4.760e+01 2.071e-01
+7.664e+01 3.144e-01
+9.323e+01 3.650e-01
+1.659e+01 4.755e-02
+2.882e+01 9.969e-02
+5.917e+01 2.193e-01
+9.039e+01 3.252e-01
diff --git a/docs/examples/gas_data/n2_25C.dat b/docs/examples/gas_data/n2_25C.dat
new file mode 100644
index 0000000..a440c69
--- /dev/null
+++ b/docs/examples/gas_data/n2_25C.dat
@@ -0,0 +1,9 @@
+P 25C
+25 0.015535714
+50 0.016696429
+100 0.056473214
+200 0.100758929
+300 0.136473214
+500 0.198035714
+800 0.273660714
+1000 0.31875
diff --git a/docs/examples/gibbsite-solubility.md b/docs/examples/gibbsite-solubility.md
new file mode 100644
index 0000000..ab1f547
--- /dev/null
+++ b/docs/examples/gibbsite-solubility.md
@@ -0,0 +1,39 @@
+---
+icon: lucide/beaker
+---
+
+# Gibbsite solubility
+
+Gibbsite solubility as a function of pH, after [Appelo's gibbsite example](http://hydrochemistry.eu/exmpls/gibbsite.html).
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. Editors on this page **share a session**.
+
+```pyodide session="gibbsite" height="12-18" install="matplotlib,numpy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+import numpy as np
+import matplotlib.pyplot as plt
+
+pp = PhreeqPython('phreeqc.dat')
+x, y = [], []
+
+for ph in np.linspace(3, 12, 17):
+ sol = pp.add_solution({'pH': ph, 'Al': '1e3 Gibbsite'})
+ x.append(ph)
+ y.append(sol.total_element('Al', units='mol'))
+
+print('pH range', x[0], '–', x[-1])
+```
+
+```pyodide session="gibbsite" height="10-16" install="matplotlib,numpy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+fig = plt.figure(figsize=[10, 5])
+plt.plot(x, y, 'rs-')
+plt.title('Gibbsite equilibrium')
+plt.xlim(0, 14)
+plt.yscale('log')
+plt.xlabel('pH')
+plt.ylabel('Al (mol/kgw)')
+plt.grid()
+show_plot(fig)
+```
diff --git a/docs/examples/gypsum-evaporation.md b/docs/examples/gypsum-evaporation.md
new file mode 100644
index 0000000..fa86c85
--- /dev/null
+++ b/docs/examples/gypsum-evaporation.md
@@ -0,0 +1,52 @@
+---
+icon: lucide/beaker
+---
+
+# Gypsum precipitation upon evaporation
+
+Gypsum precipitation as water is evaporated, after [Appelo's evaporation example](http://hydrochemistry.eu/exmpls/evap.html). Bromide is a conservative tracer for concentration.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter).
+
+!!! warning "Changes are additive"
+
+ Each step **removes water** from the same solutions. Run the cell once. To start over, rerun it after reloading the page, or wrap the setup and loop together and run once.
+
+```pyodide session="gypsum" height="22-32" install="matplotlib,numpy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+import matplotlib.pyplot as plt
+
+pp = PhreeqPython('phreeqc.dat')
+
+sol1 = pp.add_solution({'Ca': 3.5, 'S(6)': 3.5, 'Br': 1e-6})
+x, y, y2 = [], [], []
+for i in range(20):
+ sol1.remove('H2O', 55.3 / 20, units='mol')
+ sol1.desaturate('Gypsum')
+ x.append(sol1.total_element('Br', units='mol') / sol1.mass / 1e-9)
+ y.append(sol1.total_element('S', units='mol') / sol1.mass)
+ y2.append(sol1.total_element('Ca', units='mol') / sol1.mass)
+
+sol2 = pp.add_solution({'Ca': 3.5, 'S(6)': 7.0, 'Br': 1e-6})
+y3, y4 = [], []
+for i in range(20):
+ sol2.remove('H2O', 55.3 / 20, units='mol')
+ sol2.desaturate('Gypsum')
+ y3.append(sol2.total_element('S', units='mol') / sol2.mass)
+ y4.append(sol2.total_element('Ca', units='mol') / sol2.mass)
+
+fig = plt.figure(figsize=[10, 5])
+plt.plot(x, y, 'rs-', label='SO4(=Ca)')
+plt.plot(x, y2, 'gd-', label='Ca')
+plt.plot(x, y3, 'b^-', label='SO4(=2*Ca)')
+plt.plot(x, y4, 'yd-', label='Ca (2× SO4)')
+plt.yscale('log')
+plt.xscale('log')
+plt.xlabel('Concentration factor (Br)')
+plt.ylabel('mol / kgw')
+plt.legend()
+plt.grid()
+show_plot(fig)
+```
diff --git a/docs/examples/index.md b/docs/examples/index.md
new file mode 100644
index 0000000..9584356
--- /dev/null
+++ b/docs/examples/index.md
@@ -0,0 +1,32 @@
+---
+icon: lucide/beaker
+---
+
+# Examples
+
+Working examples from the PhreeqPython notebooks, as live editors in the browser. Click **Run** (or Ctrl+Enter) on each cell, or **Run all** to execute every editor on the page in order. Editors on a page **share a session**.
+
+The original Jupyter notebooks remain in [`examples/`](https://github.com/Vitens/phreeqpython/tree/master/examples) if you prefer to run them locally.
+
+## General
+
+- [Functionality overview](functionality-overview.md) — create solutions, query properties, mix, copy
+- [Carbonic acid equilibrium](carbonic-acid.md) — CO₂ / HCO₃⁻ / CO₃²⁻ vs pH
+
+## Equilibrium
+
+- [Ca–F and fluorite](ca-f-fluorite.md) — fluoride vs calcium during feldspar dissolution
+- [Calcite dissolution](calcite-dissolution.md) — calcite vs CO₂ pressure, including mixing
+- [Gibbsite solubility](gibbsite-solubility.md) — dissolved Al vs pH
+- [Aluminium drinking-water limit](aluminium-limit.md) — pH where 0.2 mg/kgw Al is in equilibrium with gibbsite
+- [Gypsum on evaporation](gypsum-evaporation.md) — gypsum precipitation as water is removed
+
+## Kinetics
+
+- [Quartz dissolution](quartz-kinetics.md) — `solution.kinetics()` and SciPy `odeint`
+- [Monod kinetics](monod-kinetics.md) — methanogenic phenol biodegradation
+
+## Gas
+
+- [Solubilities](gas-solubilities.md) — O₂, N₂, CH₄, and CO₂ in 4 M NaCl
+- [Gas-phase calculations](gas-phase.md) — fixed-pressure vs fixed-volume gas after organic-matter reaction
diff --git a/docs/examples/monod-kinetics.md b/docs/examples/monod-kinetics.md
new file mode 100644
index 0000000..b6d4c06
--- /dev/null
+++ b/docs/examples/monod-kinetics.md
@@ -0,0 +1,45 @@
+---
+icon: lucide/beaker
+---
+
+# Monod kinetics
+
+Methanogenic biodegradation of phenol, after [Appelo's phenol example](http://hydrochemistry.eu/exmpls/phenol.html). A custom master species is added, then a Monod rate is integrated with SciPy.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. Editors on this page **share a session**.
+
+```pyodide session="monod" height="10-16" install="matplotlib,numpy,scipy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+from scipy.integrate import odeint
+import numpy as np
+import matplotlib.pyplot as plt
+
+pp = PhreeqPython('phreeqc.dat')
+pp.add_master_species(element='Phenol', master_species='Phenol', alkalinity=0, gfw=1, egfw=1)
+pp.add_species('Phenol = Phenol', 0)
+print('Phenol master species added')
+```
+
+```pyodide session="monod" height="16-24" install="matplotlib,numpy,scipy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+def rate_phenol(phenol, _, sol, k_max, k_half):
+ S = phenol[0] * 1e-3
+ if S < 1e-9:
+ return 0
+ rate = -k_max * S / (k_half + S)
+ return rate * 1e3
+
+solution1 = pp.add_solution({'Phenol': 38.1})
+t = np.linspace(0, 3.3e6, 20)
+y = odeint(rate_phenol, 38.1, t, args=(solution1, 1.61e-8, 1.7e-3))
+
+fig = plt.figure(figsize=[10, 5])
+plt.plot(t / 86400, y, 'r-')
+plt.xlabel('Time / days')
+plt.ylabel('mg Phenol / L')
+plt.title('Phenol degradation')
+plt.xlim(0, 40)
+plt.grid()
+show_plot(fig)
+```
diff --git a/docs/examples/quartz-kinetics.md b/docs/examples/quartz-kinetics.md
new file mode 100644
index 0000000..5ca491b
--- /dev/null
+++ b/docs/examples/quartz-kinetics.md
@@ -0,0 +1,76 @@
+---
+icon: lucide/beaker
+---
+
+# Kinetic dissolution of quartz
+
+Quartz dissolution over five years, after [Appelo's quartz kinetics example](http://hydrochemistry.eu/exmpls/kin_qu.html). The first method uses `solution.kinetics()`; the second integrates the same rate with SciPy `odeint`.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. Editors on this page **share a session**. SciPy is installed with the first cell; the loops can take a few seconds.
+
+```pyodide session="quartz" height="18-26" install="matplotlib,numpy,scipy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+import numpy as np
+import matplotlib.pyplot as plt
+
+pp = PhreeqPython('phreeqc.dat')
+
+def ratefun(sol, quartz_dissolved, m0, A0, V):
+ m = m0 - quartz_dissolved
+ rate = (A0 / V) * (m / m0) ** 0.67 * 10 ** -13.7 * (1 - sol.sr('Quartz'))
+ return rate * 1e3
+
+solution1 = pp.add_solution({})
+year = 365 * 24 * 3600
+t, y = np.array([]), []
+
+for time, sol in solution1.kinetics(
+ 'SiO2',
+ rate_function=ratefun,
+ time=np.linspace(0, 5 * year, 15),
+ m0=158.5,
+ args=(23.13, 0.16),
+):
+ t = np.append(t, time)
+ y.append(sol.total_element('Si', units='mmol'))
+
+fig = plt.figure(figsize=[10, 5])
+plt.plot(t / year, y, 'rs-')
+plt.xlim([0, 5])
+plt.ylim([0, 0.12])
+plt.xlabel('Years')
+plt.ylabel('mmol/l')
+plt.title('Quartz dissolution (kinetics helper)')
+plt.grid()
+show_plot(fig)
+```
+
+## Same rate with odeint
+
+```pyodide session="quartz" height="18-26" install="matplotlib,numpy,scipy,../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from scipy.integrate import odeint
+
+def rate_quartz(quartz_dissolved, time, sol, A0, V, m0):
+ temp = sol.copy()
+ temp.add('SiO2', quartz_dissolved[0], 'mol')
+ m = m0 - quartz_dissolved[0]
+ rate = (A0 / V) * (m / m0) ** 0.67 * 10 ** -13.7 * (1 - temp.sr('Quartz'))
+ temp.forget()
+ return rate
+
+solution2 = pp.add_solution({})
+tt = np.linspace(0, 5 * year, 15)
+yy = odeint(rate_quartz, 0, tt, args=(solution2, 23.13, 0.16, 158.5))
+
+fig = plt.figure(figsize=[10, 5])
+plt.plot(tt / year, yy * 1e3, 'rs-')
+plt.xlim([0, 5])
+plt.ylim([0, 0.12])
+plt.xlabel('Years')
+plt.ylabel('mmol/l')
+plt.title('Quartz dissolution (odeint)')
+plt.grid()
+show_plot(fig)
+```
diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md
new file mode 100644
index 0000000..8633821
--- /dev/null
+++ b/docs/getting-started/installation.md
@@ -0,0 +1,106 @@
+---
+icon: lucide/download
+---
+
+# Installation
+
+PhreeqPython is available on PyPI and can be installed with `pip` or `uv`. The wheel comes bundled with a [VIPhreeqc](https://github.com/Vitens/VIPhreeqc) shared library and several default databases, so you do not need a separate PHREEQC install.
+
+=== "pip"
+
+ ``` bash
+ pip install -U phreeqpython
+ ```
+
+=== "uv"
+
+ ``` bash
+ uv add phreeqpython
+ ```
+
+ Or, without a project:
+
+ ``` bash
+ uv pip install phreeqpython
+ ```
+
+## Platforms
+
+PhreeqPython is **64-bit only** and ships a native library per platform:
+
+| Platform | Library | Notes |
+| --- | --- | --- |
+| Windows | `viphreeqc.dll` | Needs the [Visual C++ Redistributable 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48145) (or later 2015–2022) |
+| macOS | `viphreeqc.dylib` | |
+| Linux | `viphreeqc.so` | |
+| WebAssembly | `viphreeqcwasm.so` | Pyodide / browser (used by these docs) |
+
+Requires **Python 3** (64-bit). There is no 32-bit build.
+
+## Dependencies
+
+Installed automatically with the package:
+
+- [`numpy`](https://numpy.org/)
+- [`periodictable`](https://periodictable.readthedocs.io/)
+
+### Optional: kinetics
+
+`solution.kinetics()` uses SciPy to integrate a Python rate function:
+
+=== "pip"
+
+ ``` bash
+ pip install 'phreeqpython[kinetics]'
+ ```
+
+=== "uv"
+
+ ``` bash
+ uv add 'phreeqpython[kinetics]'
+ ```
+
+That extra only adds [`scipy`](https://scipy.org/). It is not PHREEQC's `KINETICS` keyword.
+
+## From source
+
+=== "pip"
+
+ ``` bash
+ git clone https://github.com/Vitens/phreeqpython.git
+ cd phreeqpython
+ pip install .
+ ```
+
+ Latest `master` without cloning:
+
+ ``` bash
+ pip install git+https://github.com/Vitens/phreeqpython.git
+ ```
+
+=== "uv"
+
+ ``` bash
+ git clone https://github.com/Vitens/phreeqpython.git
+ cd phreeqpython
+ uv pip install .
+ ```
+
+ Latest `master` without cloning:
+
+ ``` bash
+ uv add git+https://github.com/Vitens/phreeqpython.git
+ ```
+
+## Check the install
+
+``` python
+from phreeqpython import PhreeqPython
+
+pp = PhreeqPython()
+print(pp.add_solution({'pH': 7}).pH)
+```
+
+If the native library cannot be loaded on Windows, install the Visual C++ Redistributable linked above and retry.
+
+Next: [Running an analysis](running-an-analysis.md).
diff --git a/docs/getting-started/running-an-analysis.md b/docs/getting-started/running-an-analysis.md
new file mode 100644
index 0000000..5ade0f3
--- /dev/null
+++ b/docs/getting-started/running-an-analysis.md
@@ -0,0 +1,34 @@
+---
+icon: lucide/play
+---
+
+# Running an analysis
+
+After [installing](installation.md) PhreeqPython, an analysis is: create an engine, add a solution, then query or change it. Nothing has to be listed in `SELECTED_OUTPUT` first.
+
+???+ info "You can run this example"
+
+ Click **Run** (or Ctrl+Enter). The first run loads Pyodide and can take a few seconds.
+
+```pyodide session="analysis" height="14-22" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+
+pp = PhreeqPython()
+solution = pp.add_solution({
+ 'pH': 7,
+ 'units': 'mmol/kgw',
+ 'Na': 1,
+ 'Cl': 1,
+})
+solution.add('KCl', 1)
+
+print('pH', solution.pH)
+print('K mmol', solution.total('K'))
+print('Cl mmol', solution.total('Cl'))
+```
+
+That is the whole loop: `add_solution` creates water in the engine, `add` reacts KCl into it, and `pH` / `total` read properties back.
+
+Set `pp.ip.debug = True` (or `PhreeqPython(debug=True)`) to print the PHREEQC snippets before they are sent.
+
+Next: the [Solutions](../guide/solutions.md) guide covers creating, querying, and changing solutions in more detail. The [Examples](../examples/index.md) tab has worked calculations you can run in the browser.
diff --git a/docs/guide/solutions.md b/docs/guide/solutions.md
new file mode 100644
index 0000000..22723d3
--- /dev/null
+++ b/docs/guide/solutions.md
@@ -0,0 +1,97 @@
+---
+icon: lucide/droplets
+---
+
+# Solutions
+
+A `Solution` is an aqueous composition that stays in the PHREEQC engine. You create it on a `PhreeqPython` instance, then query or change it in place.
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. The first run loads Pyodide and can take a few seconds. Editors on this page **share a session**.
+
+## Creating a solution
+
+`add_solution_simple` takes salts as a reaction. `add_solution` uses PHREEQC `SOLUTION` keywords (pH, units, element totals, charge balance, …).
+
+```pyodide session="solutions" height="14-22" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+from phreeqpython import PhreeqPython
+
+pp = PhreeqPython()
+
+solution = pp.add_solution_simple({'CaCl2': 1.0, 'NaHCO3': 2.0}, temperature=15)
+
+seawater = pp.add_solution({
+ 'units': 'ppm',
+ 'pH': 8.22,
+ 'temp': 25.0,
+ 'Ca': 412.3,
+ 'Mg': 1291.8,
+ 'Na': 10768.0,
+ 'K': 399.1,
+ 'Cl': 19353.0,
+ 'Alkalinity': '141.682 as HCO3',
+ 'S(6)': 2712.0,
+})
+print('pH', round(solution.pH, 2), 'SC', round(solution.sc, 2))
+```
+
+Pass `database='phreeqc.dat'` (or another bundled `.dat`) to `PhreeqPython(...)` when you need a different thermodynamic database.
+
+## Querying properties
+
+After each calculation you can read bulk properties, totals, speciation, and saturation indices — no `SELECTED_OUTPUT` block.
+
+```pyodide session="solutions" height="10-16" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+print('pH', round(solution.pH, 2))
+print('SC', round(solution.sc, 2), 'uS/cm')
+print('T', solution.temperature, 'C')
+print('Cl mmol', solution.total_element('Cl'))
+print('HCO3 mg', round(solution.total('HCO3', units='mg'), 2))
+print('SI Calcite', round(solution.si('Calcite'), 2))
+print('HCO3- mmol', round(solution.species['HCO3-'], 4))
+```
+
+Useful accessors:
+
+- `pH`, `pe`, `sc`, `temperature`, `mass`, `volume`, `density`, `I`
+- `total(species)` / `total_element(element)` — amounts, default mmol
+- `species`, `elements`, `phases` — dictionaries
+- `si(phase)` / `sr(phase)` — saturation index and ratio
+
+## Changing a solution
+
+`add`, `remove`, `change`, `change_ph`, `change_temperature`, `saturate`, and `desaturate` update the same numbered solution in the engine.
+
+!!! warning "Changes are additive"
+
+ These methods change `solution` **in place**. If you run this cell again, another 1 mmol of NaOH is added. To start over, rerun **Creating a solution**.
+
+```pyodide session="solutions" height="10-16" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+solution.add('NaOH', 1, 'mmol')
+print('pH after NaOH', round(solution.pH, 2))
+
+solution.desaturate('Calcite')
+print('Ca mmol', round(solution.total('Ca'), 3))
+print('SI Calcite', round(solution.si('Calcite'), 2))
+
+solution.change_temperature(10)
+print('T', solution.temperature)
+```
+
+## Mixing and copies
+
+Scale and add solutions with `*` and `+`. `copy()` makes an independent duplicate; `forget()` removes a solution from the engine.
+
+```pyodide session="solutions" height="10-16" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+a = pp.add_solution_simple({'NaCl': 1})
+b = pp.add_solution_simple({'NaCl': 3})
+mix = a * 0.5 + b * 0.5
+print('mix Cl mmol', round(mix.total('Cl'), 3), 'mass', mix.mass)
+
+duplicate = mix.copy()
+print('copy SC', round(duplicate.sc, 1))
+duplicate.forget()
+```
+
+See the [API reference for Solution](../reference/solution.md) for every method, and the [Examples](../examples/index.md) for full calculations.
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..a05050b
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,30 @@
+---
+icon: lucide/info
+title: About PhreeqPython
+hide:
+ - toc
+---
+
+{ .logo-home }
+
+## About PhreeqPython
+
+PhreeqPython is an object-oriented Python wrapper around [VIPhreeqc](https://github.com/Vitens/VIPhreeqc), Vitens' extension of the [PHREEQC](https://www.usgs.gov/software/phreeqc-version-3) geochemical calculation engine (Parkhurst & Appelo).
+
+Rather than writing a PHREEQC input script and running it as a single calculation, PhreeqPython keeps solutions, gases, and phases in memory as objects. You can change them stepwise, query properties such as pH, speciation, and saturation indices at any point, and mix or react them further without rebuilding the whole simulation.
+
+That makes it practical to run dynamic simulations and real-time models, and to use PHREEQC together with the rest of the Python ecosystem, like NumPy, pandas, Matplotlib, or web and control applications.
+
+## Development
+PhreeqPython is developed at [Vitens](https://www.vitens.nl/), the largest drinking water company in the Netherlands, where it supports treatment and distribution modelling. It is partly derived from [PhreeqPy](http://www.phreeqpy.com/) (Mike Müller) and ships with bundled VIPhreeqc libraries for Windows, macOS, Linux, and WebAssembly (Pyodide).
+
+
+## Acknowledgements
+This project makes use of the (Phreeqc) (David Parkhurst & Tony Apello) calcution engine and is (partly) derived from the (PhreeqPy) extension for IPhreeqc (Mike Müller)
+
+## License
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
\ No newline at end of file
diff --git a/docs/introduction/how-it-works.md b/docs/introduction/how-it-works.md
new file mode 100644
index 0000000..e0e6c3d
--- /dev/null
+++ b/docs/introduction/how-it-works.md
@@ -0,0 +1,173 @@
+---
+icon: lucide/cog
+---
+
+# How it works
+
+PHREEQC is a geochemical calculation engine. PhreeqPython does not replace that engine: it talks to it through [VIPhreeqc](https://github.com/Vitens/VIPhreeqc), keeps results in memory, and lets you query or change them from Python.
+
+## Classic (Batch) PHREEQC
+
+PHREEQC is built around **input files** and **tabular output**. You write a complete script (`SOLUTION`, `REACTION`, `EQUILIBRIUM_PHASES`, …), run it once, and read the results from an output file or a `SELECTED_OUTPUT` table — often filled with `USER_PUNCH`.
+
+``` mermaid
+flowchart LR
+ A[Input file] --> B[PHREEQC]
+ B --> C[Output file]
+ B --> D[Selected output table]
+```
+
+That workflow is a good fit for a **once-through analysis**. The drawback of tabular output is that you have to **define beforehand** which columns you want: pH, conductivity, specific molalities, saturation indices, and so on. If you later need another species or property, you change the input and run the whole script again.
+
+It also gets awkward and slow for **large, interactive models** with many different solutions: each step means rewriting an input file, rerunning PHREEQC, and parsing tables, instead of keeping those solutions in memory and querying them as you go.
+
+## IPhreeqc: PHREEQC as a library
+
+[IPhreeqc](https://www.usgs.gov/software/phreeqc-version-3) is the USGS module that runs PHREEQC as a **library** instead of the standalone batch program. From Python you send the same input (`SOLUTION`, `REACTION`, `USER_PUNCH`, …) as a string and read the selected-output table from memory. No input or output files.
+
+``` mermaid
+flowchart LR
+ P[Python] -->|write| I[Input]
+ I -->|run| E[IPhreeqc]
+ E --> O[Selected output]
+ O -->|parse| P
+```
+
+That replaces the file round-trip, so you can drive PHREEQC from an interactive Python model. The calculation model is unchanged: you still declare `SELECTED_OUTPUT` / `USER_PUNCH` before the run, and each step is still write input, run, parse the table.
+
+## VIPhreeqc: query the engine directly
+
+IPhreeqc still returns a **selected-output table**. [VIPhreeqc](https://github.com/Vitens/VIPhreeqc) extends IPhreeqc with getters for solution and phase properties that still live in the engine: speciation, pH, conductivity, saturation indices, and similar values.
+
+You no longer have to declare `SELECTED_OUTPUT` up front. After a calculation, PhreeqPython can call getters such as `GetPH` and `GetSpecies` on the engine. PHREEQC keeps the solutions; PhreeqPython sends commands and reads those properties back.
+
+``` mermaid
+flowchart LR
+ PP[PhreeqPython] -->|snippets| E[PHREEQC]
+ E -->|"GetPH, GetSpecies, ..."| PP
+ E --> S[Solutions]
+```
+
+## What PhreeqPython adds
+
+PhreeqPython sits on top of VIPhreeqc. Python methods generate **short PHREEQC snippets**, send them to the engine, and wrap the numbered solutions (and gases, phases) as objects.
+
+The snippet generation is hidden behind those objects. `add_solution(...)` becomes a `SOLUTION` block; `solution.add(...)` becomes `USE SOLUTION` plus `REACTION`. PHREEQC stores each result as a numbered solution, so later calls can use, change, or query any of them.
+
+``` mermaid
+flowchart LR
+ PP[PhreeqPython] -->|snippets| E[PHREEQC]
+ E -->|"GetPH, GetSpecies, ..."| PP
+ E --> S0[Solution 0]
+ E --> S1[Solution 1]
+ E --> S2[Solution 2]
+```
+
+That is why PhreeqPython can keep a **stateful** simulation: change a solution, inspect it, change it again, without rewriting and rerunning a full input file.
+
+## Example: add a solution, then add KCl
+
+Create water at pH 7 with 1 mmol/kgw Na and Cl, then add 1 mmol KCl.
+
+=== "Python"
+
+ ``` python
+ from phreeqpython import PhreeqPython
+
+ pp = PhreeqPython()
+ solution = pp.add_solution({
+ 'pH': 7,
+ 'units': 'mmol/kgw',
+ 'Na': 1,
+ 'Cl': 1,
+ })
+ solution.add('KCl', 1)
+
+ print(solution.pH) # 7.0
+ print(solution.total('K')) # 1.0 mmol
+ print(solution.total('Cl')) # 2.0 mmol
+ ```
+
+=== "Generated PHREEQC"
+
+ `add_solution` sends:
+
+ ```
+ SOLUTION 0
+ pH 7
+ units mmol/kgw
+ Na 1
+ Cl 1
+ SAVE SOLUTION 0
+ END
+ ```
+
+ `solution.add('KCl', 1)` then sends:
+
+ ```
+ USE SOLUTION 0
+ REACTION 1
+ KCl 0.001
+ 1 mol
+ SAVE SOLUTION 0
+ END
+ ```
+
+ The second snippet **reuses** solution 0. Amounts in `REACTION` are in moles, so 1 mmol KCl is written as `0.001` with `1 mol`. After both steps you can query pH, totals, speciation, conductivity, or anything else VIPhreeqc exposes — none of that had to be listed in the input.
+
+=== "Classic PHREEQC"
+
+ ```
+ SELECTED_OUTPUT
+ -file output.tsv
+
+ USER_PUNCH
+ -headings pH K_mmol Cl_mmol
+ -start
+ 10 PUNCH -LA("H+")
+ 20 PUNCH TOT("K") * 1000
+ 30 PUNCH TOT("Cl") * 1000
+ -end
+
+ SOLUTION 1
+ pH 7
+ units mmol/kgw
+ Na 1
+ Cl 1
+ REACTION 1
+ KCl 0.001
+ 1 mol
+ END
+ ```
+
+ `TOT` is mol/kgw, so multiply by 1000 for mmol. pH is `-LA("H+")`. If you later need another species or property, you add another `PUNCH` line and run the whole script again.
+
+The classic script puts both steps in one file and uses `USER_PUNCH` (with `SELECTED_OUTPUT`) to define the output columns before the run. In PhreeqPython those queries are ordinary Python attributes and methods, after each step.
+
+## See the generated input
+
+Set `pp.ip.debug = True` (or `PhreeqPython(debug=True)`) to print every snippet before it is sent to the engine.
+
+``` python
+pp = PhreeqPython()
+pp.ip.debug = True
+```
+
+The editor below runs the example in the browser. Click **Run** (or Ctrl+Enter); the output is the PHREEQC that PhreeqPython generated, then a few queried properties.
+
+```pyodide height="14-28" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+pp = PhreeqPython()
+pp.ip.debug = True
+
+solution = pp.add_solution({
+ 'pH': 7,
+ 'units': 'mmol/kgw',
+ 'Na': 1,
+ 'Cl': 1,
+})
+solution.add('KCl', 1)
+
+print('pH', solution.pH)
+print('K mmol', solution.total('K'))
+print('Cl mmol', solution.total('Cl'))
+```
diff --git a/docs/introduction/supported-features.md b/docs/introduction/supported-features.md
new file mode 100644
index 0000000..3de7fb9
--- /dev/null
+++ b/docs/introduction/supported-features.md
@@ -0,0 +1,93 @@
+---
+icon: lucide/list-checks
+---
+
+# Supported features
+
+PhreeqPython wraps a subset of PHREEQC as Python objects. Those objects stay in the engine, so you can query and change them stepwise. Anything without an object API is listed under [Not supported yet](#not-supported-yet).
+
+???+ info "You can run these examples"
+
+ Click **Run** (or Ctrl+Enter), or **Run all** to execute every editor in order. The first run loads Pyodide and can take a few seconds. Editors on this page **share a session**, so later cells can reuse `pp` and `solution`.
+
+## Object-oriented PHREEQC
+
+Solutions, gases, and equilibrium phases are objects. You create them on a `PhreeqPython` instance, call methods, and read properties. PhreeqPython generates the PHREEQC snippets and keeps the numbered entities in memory.
+
+```pyodide session="features" height="8-16" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+pp = PhreeqPython()
+solution = pp.add_solution({
+ 'pH': 7,
+ 'units': 'mmol/kgw',
+ 'Ca': 1,
+ 'C': 2,
+ 'Na': 2,
+ 'Cl': 2,
+})
+print(solution.pH)
+```
+
+Mixing uses ordinary Python operators (`solution * 0.5 + other * 0.5`). Copies, dumps, and custom master species / solution species are also available.
+
+## Speciation and solution properties
+
+After each calculation you can read speciation and bulk properties without a `SELECTED_OUTPUT` block:
+
+- pH, pe, temperature, ionic strength
+- specific conductivity, density, mass, volume
+- element totals and aqueous species (moles, molalities, activities)
+- saturation indices and saturation ratios for mineral and gas phases
+
+```pyodide session="features" height="6-12" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+print(solution.pH)
+print(solution.sc)
+print(solution.species['HCO3-'])
+print(solution.si('Calcite'))
+```
+
+## Reactions and phases
+
+Change a solution in place, or equilibrate it with one or more pure phases:
+
+- add, remove, or change amounts (`add`, `remove`, `change`)
+- set pH or temperature
+- saturate, desaturate, or equalize with named phases (`Calcite`, `Gypsum`, …)
+- keep a reusable `EquilibriumPhase` and `interact` with it
+
+!!! warning "Changes are additive"
+
+ `solution.add('NaOH', 0.5)` changes the solution **in place**. If you run this cell again, another 0.5 mmol of NaOH is added. To start over, rerun the first editor, which creates a new `solution`.
+
+```pyodide session="features" height="6-12" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+solution.add('NaOH', 0.5)
+print('pH', solution.pH)
+solution.desaturate('Calcite')
+print('Ca mmol', solution.total('Ca'))
+print('SI Calcite', solution.si('Calcite'))
+```
+
+## Gases
+
+Gas phases are objects as well: fixed pressure or fixed volume, optional equilibration when created, then interaction with a solution.
+
+```pyodide session="features" height="8-16" install="../../wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl"
+air = pp.add_gas({'O2(g)': 0.2, 'N2(g)': 0.78, 'CO2(g)': 0.00042})
+solution.interact(air)
+
+print(air.pressure)
+print(air.partial_pressures)
+print('pH', solution.pH)
+```
+
+You can query moles, mole fractions, partial pressures, and dry fractions after each interaction.
+
+## Not supported yet
+
+These PHREEQC capabilities have no PhreeqPython objects yet:
+
+- **Ion exchange** (`EXCHANGE`)
+- **Transport and advection** (`TRANSPORT`, `ADVECTION`)
+- **Surface complexation** (`SURFACE`)
+- **Solid solutions** (`SOLID_SOLUTIONS`)
+- **Inverse modelling** (`INVERSE_MODELING`)
+- **Native PHREEQC kinetics** (`KINETICS`, `RATES`)
diff --git a/docs/javascripts/pyodide-helpers.js b/docs/javascripts/pyodide-helpers.js
new file mode 100644
index 0000000..7ce77bb
--- /dev/null
+++ b/docs/javascripts/pyodide-helpers.js
@@ -0,0 +1,249 @@
+(function () {
+ let inflight = 0;
+ const idleWaiters = [];
+
+ function helpersScript() {
+ const scripts = document.querySelectorAll("script[src]");
+ for (const script of scripts) {
+ if (script.src.includes("pyodide-helpers")) {
+ return script;
+ }
+ }
+ return null;
+ }
+
+ function helperUrl() {
+ const script = helpersScript();
+ if (script) {
+ return new URL("../pyodide/ppdocs.py", script.src).href;
+ }
+ return new URL("pyodide/ppdocs.py", document.baseURI).href;
+ }
+
+ function rewriteInstallPaths() {
+ const script = helpersScript();
+ const wheelsBase = script
+ ? new URL("../wheels/", script.src)
+ : new URL("wheels/", document.baseURI);
+ document.querySelectorAll(".pyodide[data-install]").forEach((el) => {
+ el.dataset.install = el.dataset.install
+ .split(",")
+ .map((pkg) => {
+ const name = pkg.trim();
+ if (!name.endsWith(".whl")) {
+ return name;
+ }
+ return new URL(name.split("/").pop(), wheelsBase).href;
+ })
+ .join(",");
+ });
+ }
+
+ function editors() {
+ return [...document.querySelectorAll(".md-content .pyodide, article .pyodide")];
+ }
+
+ function waitIdle() {
+ if (inflight === 0) {
+ return Promise.resolve();
+ }
+ return new Promise((resolve) => idleWaiters.push(resolve));
+ }
+
+ function waitFor(predicate, timeoutMs) {
+ return new Promise((resolve, reject) => {
+ const started = Date.now();
+ const tick = () => {
+ if (predicate()) {
+ resolve();
+ return;
+ }
+ if (Date.now() - started > timeoutMs) {
+ reject(new Error("timeout"));
+ return;
+ }
+ requestAnimationFrame(tick);
+ };
+ tick();
+ });
+ }
+
+ function cellFailed(output) {
+ const text = (output && output.textContent) || "";
+ return /Could not install|Traceback \(most recent call last\)/.test(text);
+ }
+
+ async function runOne(root) {
+ const btn = root.querySelector("[id$='--run']");
+ const output = root.querySelector("[id$='--output']");
+ if (!btn) {
+ return;
+ }
+ window.__ppdocsPyodideRoot = root;
+ const startInflight = inflight;
+ btn.click();
+ await waitFor(
+ () =>
+ root.getAttribute("data-md-exec-state") === "loading" ||
+ inflight > startInflight,
+ 30000,
+ ).catch(() => {});
+ await waitFor(
+ () => root.getAttribute("data-md-exec-state") !== "loading",
+ 180000,
+ );
+ await new Promise((resolve) => setTimeout(resolve, 50));
+ await waitIdle();
+ if (cellFailed(output)) {
+ throw new Error("cell failed");
+ }
+ }
+
+ async function runAll(button) {
+ const roots = editors();
+ if (!roots.length) {
+ return;
+ }
+ button.disabled = true;
+ try {
+ for (let i = 0; i < roots.length; i += 1) {
+ button.textContent = `Running ${i + 1} / ${roots.length}…`;
+ await runOne(roots[i]);
+ }
+ button.textContent = "Run all";
+ } catch (err) {
+ button.textContent = "Run all (stopped)";
+ console.error(err);
+ setTimeout(() => {
+ button.textContent = "Run all";
+ }, 2500);
+ } finally {
+ button.disabled = false;
+ }
+ }
+
+ function insertRunAll() {
+ document.querySelectorAll(".ppdocs-run-all").forEach((el) => el.remove());
+ const roots = editors();
+ if (roots.length < 2) {
+ return;
+ }
+
+ const wrap = document.createElement("p");
+ wrap.className = "ppdocs-run-all";
+ const btn = document.createElement("button");
+ btn.type = "button";
+ btn.className = "md-button md-button--primary";
+ btn.textContent = "Run all";
+ btn.title =
+ "Run every editor on this page, top to bottom. Reload first if you already ran cells.";
+ btn.addEventListener("click", () => runAll(btn));
+ wrap.appendChild(btn);
+
+ const info = document.querySelector(
+ ".md-content details.info, .md-content .admonition.info, article details.info, article .admonition.info",
+ );
+ if (info) {
+ info.appendChild(wrap);
+ } else {
+ roots[0].before(wrap);
+ }
+ }
+
+ rewriteInstallPaths();
+ insertRunAll();
+ if (typeof document$ !== "undefined" && document$.subscribe) {
+ document$.subscribe(() => {
+ rewriteInstallPaths();
+ insertRunAll();
+ });
+ }
+
+ async function injectShowPlot(pyodide) {
+ const source = await (await fetch(helperUrl())).text();
+ await pyodide.runPythonAsync(source);
+ await pyodide.runPythonAsync(`
+import builtins
+builtins.show_plot = show_plot
+builtins.prepare = prepare
+builtins.load_tsv = load_tsv
+`);
+
+ const orig = pyodide.runPythonAsync.bind(pyodide);
+ const bindHelpers = `
+import builtins
+g = globals()
+for _name in ("show_plot", "load_tsv", "PhreeqPython", "np", "plt"):
+ _val = getattr(builtins, _name, None)
+ if _val is not None:
+ g[_name] = _val
+`;
+ let preparing = false;
+ pyodide.runPythonAsync = async function (code, options) {
+ const isHelper = code === "prepare()" || code === bindHelpers;
+ if (!isHelper) {
+ inflight += 1;
+ }
+ try {
+ if (!isHelper && !preparing) {
+ preparing = true;
+ try {
+ await orig("prepare()");
+ await orig(bindHelpers, options);
+ } catch (err) {
+ console.error("Failed to prepare example globals", err);
+ } finally {
+ preparing = false;
+ }
+ }
+ return await orig(code, options);
+ } finally {
+ if (!isHelper) {
+ inflight = Math.max(0, inflight - 1);
+ if (inflight === 0) {
+ idleWaiters.splice(0).forEach((resolve) => resolve());
+ }
+ }
+ }
+ };
+ }
+
+ function rememberEditor(event) {
+ const root = event.target && event.target.closest && event.target.closest(".pyodide");
+ if (root) {
+ window.__ppdocsPyodideRoot = root;
+ }
+ }
+ document.addEventListener("click", rememberEditor, true);
+ document.addEventListener("keydown", rememberEditor, true);
+
+ function wrapLoadPyodide() {
+ const orig = window.loadPyodide;
+ if (typeof orig !== "function" || orig._ppdocs) {
+ return;
+ }
+ const wrapped = async function loadPyodideWithDocsHelpers(...args) {
+ const pyodide = await orig.apply(this, args);
+ try {
+ await injectShowPlot(pyodide);
+ } catch (err) {
+ console.error("Failed to load docs plot helper", err);
+ }
+ return pyodide;
+ };
+ wrapped._ppdocs = true;
+ window.loadPyodide = wrapped;
+ }
+
+ document.addEventListener(
+ "load",
+ (event) => {
+ const el = event.target;
+ if (!el || !el.src || el.tagName !== "SCRIPT" || !el.src.includes("pyodide")) {
+ return;
+ }
+ wrapLoadPyodide();
+ },
+ true,
+ );
+})();
diff --git a/docs/nb_html/1. Ca-F equilibrium with fluorite.html b/docs/nb_html/1. Ca-F equilibrium with fluorite.html
new file mode 100644
index 0000000..317de52
--- /dev/null
+++ b/docs/nb_html/1. Ca-F equilibrium with fluorite.html
@@ -0,0 +1,983 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[3]:
+
+
<matplotlib.legend.Legend at 0x10930c128>
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/nb_html/1. Solubilities.html b/docs/nb_html/1. Solubilities.html
new file mode 100644
index 0000000..57ad97f
--- /dev/null
+++ b/docs/nb_html/1. Solubilities.html
@@ -0,0 +1,1201 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/nb_html/2. Calcite Dissolution.html b/docs/nb_html/2. Calcite Dissolution.html
new file mode 100644
index 0000000..550fe62
--- /dev/null
+++ b/docs/nb_html/2. Calcite Dissolution.html
@@ -0,0 +1,1252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[5]:
+
+
Text(0.5,1,'Calcite Equilibrium')
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/nb_html/3. Gibbsite Solubility.html b/docs/nb_html/3. Gibbsite Solubility.html
new file mode 100644
index 0000000..14bd9f9
--- /dev/null
+++ b/docs/nb_html/3. Gibbsite Solubility.html
@@ -0,0 +1,1104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/nb_html/4. Al Concentration Exceeding Drinking Water Limit.html b/docs/nb_html/4. Al Concentration Exceeding Drinking Water Limit.html
new file mode 100644
index 0000000..4480891
--- /dev/null
+++ b/docs/nb_html/4. Al Concentration Exceeding Drinking Water Limit.html
@@ -0,0 +1,826 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Lower limit 4.466077892037909
+Upper limit 9.42291635447819
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/nb_html/5. Gypsum Precipitation upon Evaporation.html b/docs/nb_html/5. Gypsum Precipitation upon Evaporation.html
new file mode 100644
index 0000000..9f4431c
--- /dev/null
+++ b/docs/nb_html/5. Gypsum Precipitation upon Evaporation.html
@@ -0,0 +1,1275 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/nb_html/7. Gas-Phase Calculations.html b/docs/nb_html/7. Gas-Phase Calculations.html
new file mode 100644
index 0000000..2bc9e71
--- /dev/null
+++ b/docs/nb_html/7. Gas-Phase Calculations.html
@@ -0,0 +1,1218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[34]:
+
+
Text(0,0.5,'Volume, in liters)')
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/nb_html/Carbonic Acid Equilibrium.html b/docs/nb_html/Carbonic Acid Equilibrium.html
new file mode 100644
index 0000000..d292acf
--- /dev/null
+++ b/docs/nb_html/Carbonic Acid Equilibrium.html
@@ -0,0 +1,1004 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This solution has a pH of: 8.27 and a conductivity of: 92.97 uS/cm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/nb_html/Functionality Overview.html b/docs/nb_html/Functionality Overview.html
new file mode 100644
index 0000000..3fd9d7b
--- /dev/null
+++ b/docs/nb_html/Functionality Overview.html
@@ -0,0 +1,1585 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Solution pH: 8.23
+Solution sc: 335.25
+Solution pe: 10.5
+Temperature: 15.0
+Mass: 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[5]:
+
+
{'CH4': 0.0,
+ 'CO2': 2.7909024983359043e-05,
+ 'CO3-2': 1.504189457564534e-05,
+ 'Ca+2': 0.0009734342277295038,
+ 'CaCO3': 1.1724417168794343e-05,
+ 'CaHCO3+': 1.4819423174432155e-05,
+ 'CaOH+': 2.1931927102669182e-08,
+ 'Cl-': 0.0020000000000000005,
+ 'H+': 6.3511969105813895e-09,
+ 'H2': 0.0,
+ 'H2O': 55.50932491627957,
+ 'HCO3-': 0.0019282729745638734,
+ 'Na+': 0.001997767734466099,
+ 'NaCO3-': 2.4888466990103817e-07,
+ 'NaHCO3': 1.983380863998685e-06,
+ 'NaOH': 1.4165712953779178e-19,
+ 'O2': 1.880500103837165e-15,
+ 'OH-': 8.235839079271772e-07}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[6]:
+
+
{'C(4)': 0.002000000000000004,
+ 'Ca': 0.000999999999999833,
+ 'Cl': 0.0020000000000000005,
+ 'Na': 0.001999999999999999,
+ 'O(0)': 3.76100020767433e-15}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[7]:
+
+
{'Aragonite': 0.1932078777270103,
+ 'CH4(g)': -125.58800591273227,
+ 'CO2(g)': -3.216751152245572,
+ 'Calcite': 0.34442418867614855,
+ 'Fix_pH': -8.226383714702244,
+ 'H2(g)': -37.424312956480996,
+ 'H2O(g)': -1.7694469897527798,
+ 'Halite': -7.024441375036288,
+ 'O2(g)': -11.912977050671959,
+ 'Vaterite': -0.2494038522747335}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[11]:
+
+
<phreeqpython.solution.Solution at 0x10e854668>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Out[13]:
+
+
<phreeqpython.solution.Solution at 0x10e854668>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Solution 3:
+Total Chloride: 2.0 mmol
+Mass: 1.0
+
+Solution 4:
+Total Chloride: 4.0 mmol
+Mass: 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/nb_html/Kinetic Dissolution of Quartz.html b/docs/nb_html/Kinetic Dissolution of Quartz.html
new file mode 100644
index 0000000..aebaa24
--- /dev/null
+++ b/docs/nb_html/Kinetic Dissolution of Quartz.html
@@ -0,0 +1,1522 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/notebooks/1. Ca-F equilibrium with fluorite.ipynb b/docs/notebooks/1. Ca-F equilibrium with fluorite.ipynb
new file mode 100644
index 0000000..48c2ab3
--- /dev/null
+++ b/docs/notebooks/1. Ca-F equilibrium with fluorite.ipynb
@@ -0,0 +1,157 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# The relation among fluoride and calcium concentrations in water\n",
+ "http://hydrochemistry.eu/exmpls/ca_f.html"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pylab inline\n",
+ "import phreeqpython\n",
+ "pp = phreeqpython.PhreeqPython()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## PhreeqPython Calculation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# Create solution \n",
+ "solution1 = pp.add_solution_raw({\n",
+ "'pH': '7 charge',\n",
+ " 'C': '1 CO2(g) -1',\n",
+ " 'Ca': '1 Calcite',\n",
+ " 'F': '1 Fluorite'\n",
+ "})\n",
+ "\n",
+ "# store results in arrays\n",
+ "\n",
+ "x = [] # Ca (mg/l)\n",
+ "y = [] # F (mg/l)\n",
+ "yy = [] # pH (-)\n",
+ "\n",
+ "# perform calculation\n",
+ "for i in range(16):\n",
+ " x.append(solution1.total_element('Ca', 'mg'))\n",
+ " y.append(solution1.total_element('F', 'mg'))\n",
+ " yy.append(solution1.pH)\n",
+ " solution1.add('NaAlSi3O8', 7.5/15)\n",
+ " solution1.equalize(['Fluorite', 'Calcite', 'Quartz', 'Kaolinite'], ['','',0,0], ['','',0,0])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Plotting the Results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig = plt.figure(figsize=[10,5])\n",
+ "ax = plt.gca()\n",
+ "\n",
+ "ax2 = ax.twinx()\n",
+ "ax.plot(x,y, 'rs-', label='F')\n",
+ "ax2.plot(x,yy, 'gd-', label='pH')\n",
+ "\n",
+ "ax.set_ylim([0,10])\n",
+ "ax.set_xlim([0,160])\n",
+ "ax2.set_ylim([6.5,7.5])\n",
+ "\n",
+ "ax.set_xlabel('Ca (mg/l)')\n",
+ "ax.set_ylabel('F (mg/l)')\n",
+ "ax2.set_ylabel('pH (-)')\n",
+ "\n",
+ "ax.grid()\n",
+ "\n",
+ "plt.title('Fluorite Equilibrium during Na-Feldspar dissolution')\n",
+ "\n",
+ "fig.legend(loc=1, bbox_to_anchor=(1,1), bbox_transform=ax.transAxes)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/notebooks/1. Solubilities.ipynb b/docs/notebooks/1. Solubilities.ipynb
new file mode 100644
index 0000000..55910ab
--- /dev/null
+++ b/docs/notebooks/1. Solubilities.ipynb
@@ -0,0 +1,257 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Solubilities"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pylab inline\n",
+ "import phreeqpython\n",
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pp = phreeqpython.PhreeqPython(database='phreeqc.dat')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Oxygen"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "pressure_range = np.linspace(0.01, 100, 100)\n",
+ "o2 = []\n",
+ "for p in pressure_range:\n",
+ " sol = pp.add_solution({'temp':27})\n",
+ " gas = pp.add_gas({'O2(g)':p}, pressure=p, fixed_pressure=True)\n",
+ " sol.interact(gas)\n",
+ " o2.append(sol.total('O2', 'mol'))\n",
+ " sol.forget();gas.forget()\n",
+ "\n",
+ "plt.figure(figsize=[8,5])\n",
+ "plt.plot(pressure_range, o2)\n",
+ "pd.read_csv('gas_data/O2_27.dat', sep='\\t', index_col=0).plot(style='x', ax=plt.gca())\n",
+ "plt.title('Oxygen')\n",
+ "plt.xlabel('Pressure / atm')\n",
+ "plt.ylabel('O2 / (mol/kgw)')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Nitrogen"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "pressure_range = np.linspace(0.01, 1000, 100)\n",
+ "n2 = []\n",
+ "for p in pressure_range:\n",
+ " sol = pp.add_solution({'temp':25})\n",
+ " gas = pp.add_gas({'N2(g)':p}, pressure=p, fixed_pressure=True)\n",
+ " sol.interact(gas)\n",
+ " n2.append(sol.total_element('N', 'mol')/2)\n",
+ " sol.forget();gas.forget()\n",
+ "\n",
+ "plt.figure(figsize=[8,5])\n",
+ "plt.plot(pressure_range, n2)\n",
+ "pd.read_csv('gas_data/n2_25C.dat', sep='\\t', index_col=0).plot(style='x', ax=plt.gca())\n",
+ "plt.title('Nitrogen')\n",
+ "plt.xlabel('Pressure / atm')\n",
+ "plt.ylabel('N2 / (mol/kgw)')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Methane"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 102,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=[8,5])\n",
+ "colors = ['C0', 'C1', 'C2']\n",
+ "\n",
+ "for temp in [25,50,100]:\n",
+ " \n",
+ " pressure_range = np.linspace(0.01, 1000, 100)\n",
+ " ch4 = []\n",
+ " \n",
+ " for p in pressure_range:\n",
+ " sol = pp.add_solution({'temp':temp})\n",
+ " gas = pp.add_gas({'CH4(g)':p}, pressure=p, fixed_pressure=True)\n",
+ " sol.interact(gas)\n",
+ " ch4.append(sol.total('CH4', 'mol'))\n",
+ " sol.forget();gas.forget()\n",
+ "\n",
+ "\n",
+ " plt.plot(pressure_range, ch4)\n",
+ " data = pd.read_csv('gas_data/ch4_{}c.dat'.format(temp), sep='\\t', index_col=0)\n",
+ " plt.plot(data, 'x', color=colors.pop(0), label='{}C'.format(temp))\n",
+ " \n",
+ "plt.title('Methane')\n",
+ "plt.xlabel('Pressure / atm')\n",
+ "plt.ylabel('CH4 / (mol/kgw)')\n",
+ "plt.legend()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## CO2 in 4M NaCl solution"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 140,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Use the Pitzer database for this calculation\n",
+ "pitzer = phreeqpython.PhreeqPython(database='pitzer.dat')\n",
+ "\n",
+ "plt.figure(figsize=[8,5])\n",
+ "colors = ['C0', 'C1', 'C2']\n",
+ "index = 0\n",
+ "for temp in [80,120,160]:\n",
+ " \n",
+ " pressure_range = np.linspace(0.01, 100, 100)\n",
+ " ch4 = []\n",
+ " \n",
+ " for p in pressure_range:\n",
+ " sol = pitzer.add_solution({'temp':temp})\n",
+ " sol.add('NaCl', 4 , 'mol')\n",
+ " gas = pitzer.add_gas({'CO2(g)':p}, pressure=p, fixed_pressure=True)\n",
+ " sol.interact(gas)\n",
+ " ch4.append(sol.total_element('C', units='mol'))\n",
+ " sol.forget();gas.forget()\n",
+ "\n",
+ " plt.plot(pressure_range*1.013, ch4)\n",
+ " data = pd.read_csv('gas_data/co2_4m_NaCl.dat', sep='\\t', index_col=0)\n",
+ " plt.plot(data.iloc[:,index], 'x', color=colors.pop(0))\n",
+ " index+=1\n",
+ " \n",
+ "plt.title('CO2')\n",
+ "plt.xlabel('Pressure / bar')\n",
+ "plt.ylabel('CO2 Solubility in 4 M NaCl / (mol/kgw)')\n",
+ "plt.legend()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/notebooks/2. Calcite Dissolution.ipynb b/docs/notebooks/2. Calcite Dissolution.ipynb
new file mode 100644
index 0000000..670713b
--- /dev/null
+++ b/docs/notebooks/2. Calcite Dissolution.ipynb
@@ -0,0 +1,139 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Calcite dissolution as a function of CO2 pressure\n",
+ "\n",
+ "http://hydrochemistry.eu/exmpls/calcite.html"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pylab inline\n",
+ "import phreeqpython\n",
+ "pp = phreeqpython.PhreeqPython(database='phreeqc.dat')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## PhreeqPython Calculation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# add solutions\n",
+ "solution0 = pp.add_solution({}) # empty solution\n",
+ "solution1 = pp.add_solution({}).equalize(['Calcite', 'CO2(g)'], [0, -1.7])\n",
+ "solution2 = pp.add_solution({}).equalize(['Calcite', 'CO2(g)'], [0, -3.5])\n",
+ "# create a mixture of solution 1 and 2\n",
+ "solution3 = solution1*0.5 + solution2*0.5\n",
+ "\n",
+ "x = []\n",
+ "y = []\n",
+ "\n",
+ "for i in range(30):\n",
+ " solution0.add('CO2', 3.5/30)\n",
+ " solution0.saturate('Calcite') \n",
+ " x.append(solution0.sr('CO2(g)')*100)\n",
+ " y.append(solution0.total_element('Ca'))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "## Plotting the results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5,1,'Calcite Equilibrium')"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=[7,7])\n",
+ "plt.plot(x,y, 'rs-', label='equilibrium')\n",
+ "plt.plot([solution1.sr('CO2(g)')*1e2, solution2.sr('CO2(g)')*1e2], [solution1.total_element('Ca'),solution2.total_element('Ca')], '-gx', label='mixing_line')\n",
+ "plt.plot(solution3.sr('CO2(g)')*1e2, solution3.total_element('Ca'), '-b^', label='1:1')\n",
+ "plt.xlim([0,3])\n",
+ "plt.ylim([0,3])\n",
+ "plt.grid()\n",
+ "plt.legend()\n",
+ "plt.title('Calcite Equilibrium')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/notebooks/3. Gibbsite Solubility.ipynb b/docs/notebooks/3. Gibbsite Solubility.ipynb
new file mode 100644
index 0000000..e26d1c6
--- /dev/null
+++ b/docs/notebooks/3. Gibbsite Solubility.ipynb
@@ -0,0 +1,101 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# GIBBSITE SOLUBILITY AS A FUNCTION OF PH\n",
+ "http://hydrochemistry.eu/exmpls/gibbsite.html"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pylab inline\n",
+ "import phreeqpython\n",
+ "pp = phreeqpython.PhreeqPython('phreeqc.dat')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x = []\n",
+ "y = []\n",
+ "\n",
+ "for ph in np.linspace(3,12, 17):\n",
+ " sol = pp.add_solution({'pH': ph, 'Al': '1e3 Gibbsite'})\n",
+ " x.append(ph)\n",
+ " y.append(sol.total_element('Al', units='mol'))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=[10,5])\n",
+ "plt.plot(x, y, 'rs-')\n",
+ "plt.title('Gibbsite Equilibrium')\n",
+ "plt.xlim(0,14)\n",
+ "plt.yscale('log')\n",
+ "plt.grid()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/notebooks/4. Al Concentration Exceeding Drinking Water Limit.ipynb b/docs/notebooks/4. Al Concentration Exceeding Drinking Water Limit.ipynb
new file mode 100644
index 0000000..28edcde
--- /dev/null
+++ b/docs/notebooks/4. Al Concentration Exceeding Drinking Water Limit.ipynb
@@ -0,0 +1,72 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# AL CONCENTRATION EXCEEDS DRINKING WATER LIMIT AT LOW AND HIGH pH\n",
+ "\n",
+ "http://hydrochemistry.eu/exmpls/al_conc.html"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pylab inline\n",
+ "import phreeqpython\n",
+ "pp = phreeqpython.PhreeqPython('phreeqc.dat')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Lower limit 4.466077892037909\n",
+ "Upper limit 9.42291635447819\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"Lower limit\", pp.add_solution({'Al': '0.2 mg/kgw', 'pH': '4 Gibbsite'}).pH)\n",
+ "print(\"Upper limit\", pp.add_solution({'Al': '0.2 mg/kgw', 'pH': '8 Gibbsite'}).pH)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/notebooks/5. Gypsum Precipitation upon Evaporation.ipynb b/docs/notebooks/5. Gypsum Precipitation upon Evaporation.ipynb
new file mode 100644
index 0000000..09ad605
--- /dev/null
+++ b/docs/notebooks/5. Gypsum Precipitation upon Evaporation.ipynb
@@ -0,0 +1,128 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# GYPSUM PRECIPITATION UPON EVAPORATION\n",
+ "\n",
+ "http://hydrochemistry.eu/exmpls/evap.html"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pylab inline\n",
+ "import phreeqpython\n",
+ "pp = phreeqpython.PhreeqPython('phreeqc.dat')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\ngPuvogQi/WsmIiLVwr59pmfrtdfgwAE4/3x4+2247DKVi5CqpfAlIiJBLXfu1sSJcPQoDB5sykWc\nfbavWybVlcKXiIgEpYQEUy7if/8zP+eWi+jUybftElH4EhGRoLJ8uZlEP28eREbC3XfDyJHQtKmv\nWyZiKHyJiEjAs21YsACeecbU6qpXD554Au66y3wv4k8UvkREJGBlZcHMmaana/16aNYMXn0Vhg83\nvV4i/kjhS0REAs7RozBpErzwgplQ37kzvPceDB0KLpevWydSOoUvEREJGPv3wxtvmHIR+/bBuefC\nm29C//4qFyGBQ+FLRET83h9/wEsvwYQJpkjqwIGmXMQ55/i6ZSInT+FLRET81m+/mXIR06ebn6+/\n3pSL6NzZt+0SKQ+FLxER8TsrVphJ9HPmmH0W77zTlIto3tzXLRMpP4UvERHxC7YNCxea0LVsGdSt\nC//5j6nTVb++r1snUnEUvkRExKeys2HWLBO61q0zxVDHjYNbb1W5CAlODl83wBvLsgZaljX+0KFD\nvm6KiIhUkqNHzUbXbdvCX/9qQti778Lvv8N99yl4SfDyy/Bl2/Y827ZHREdH+7opIiJSwQ4cgKee\nMvO37rkHGjeGuXPh11/hxhtVp0uCn4YdRUSkSiQlwcsvwzvvmHIRAwbAP/9panWJVCcKXyIiUqk2\nbIDnn4f334ecHLjuOnj4YejSxdctE/ENhS8REakUP/xgJtF/+ilERMAdd5hyES1a+LplIr6l8CUi\nIhXGtuGLL+CZZ2DpUqhTB/79b1MuIibG160T8Q8KXyIiUm7Z2fDhh6an65dfoEkTM7/r1luhZk1f\nt07Evyh8iYjIKTt2DKZMgRdegO3boWNHmDrVzOsKDfV160T8k8KXiIictD//hDffhFdegdRU6NXL\n9HQNHAgOvyxiJOI/FL5ERKTMdu0y1efffhvS0qB/f3jkETjvPLAsX7dOJDAofImIyAlt2mTKRUyb\nZspFDB1qykV07errlokEHoUvEREp0U8/mUn0s2dDWBiMGAEPPAAtW/q6ZSKBS+FLREQKsW346itT\nLmLxYqhdGx57zGwF1KCBr1snEvgUvkREBDDlIj7+2PR0rVkDp50GL74It90GUVG+bp1I8FD4EhGp\n5jIyTHmI55+HbdugfXuYPBn++leVixCpDApfIiLV1MGD8NZbplxESgqceaap1zV4sMpFiFQmhS8R\n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\n46AAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sol1 = pp.add_solution({\n",
+ " 'Ca': 3.5,\n",
+ " 'S(6)': 3.5,\n",
+ " 'Br': 1e-6 # Br used as tracer for evaporation\n",
+ "})\n",
+ "\n",
+ "\n",
+ "x = []\n",
+ "y = []\n",
+ "y2 = []\n",
+ "\n",
+ "for i in range(20):\n",
+ " # evaporate water\n",
+ " sol1.remove('H2O', 55.3/20, units='mol')\n",
+ " sol1.desaturate('Gypsum')\n",
+ " x.append(sol1.total_element('Br', units='mol')/sol1.mass/1e-9)\n",
+ " y.append(sol1.total_element('S', units='mol')/ sol1.mass)\n",
+ " y2.append(sol1.total_element('Ca', units='mol')/ sol1.mass)\n",
+ "\n",
+ "\n",
+ "sol2 = pp.add_solution({\n",
+ " 'Ca': 3.5,\n",
+ " 'S(6)': 7.0,\n",
+ " 'Br': 1e-6 # Br used as tracer for evaporation\n",
+ "})\n",
+ "\n",
+ " \n",
+ "y3 = []\n",
+ "y4 = []\n",
+ "\n",
+ "for i in range(20):\n",
+ " sol2.remove('H2O', 55.3/20, units='mol')\n",
+ " sol2.desaturate('Gypsum')\n",
+ " y3.append(sol2.total_element('S', units='mol')/ sol2.mass)\n",
+ " y4.append(sol2.total_element('Ca', units='mol')/ sol2.mass)\n",
+ "\n",
+ "plt.figure(figsize=[10,5])\n",
+ " \n",
+ "plt.plot(x,y, 'rs-', label='SO4(=Ca)')\n",
+ "plt.plot(x,y2, 'gd-', label='Ca')\n",
+ "plt.plot(x,y3, 'b^-', label='SO4(=2*Ca)')\n",
+ "plt.plot(x,y4, 'yd-', label='Ca')\n",
+ "\n",
+ "plt.yscale('log')\n",
+ "plt.xscale('log')\n",
+ "plt.legend()\n",
+ "plt.grid()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/notebooks/7. Gas-Phase Calculations.ipynb b/docs/notebooks/7. Gas-Phase Calculations.ipynb
new file mode 100644
index 0000000..4343340
--- /dev/null
+++ b/docs/notebooks/7. Gas-Phase Calculations.ipynb
@@ -0,0 +1,280 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Gas-Phase Calculations\n",
+ "https://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/phreeqc3-html/phreeqc3-62.htm#50528271_44022"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pylab inline\n",
+ "import phreeqpython\n",
+ "import pandas as pd\n",
+ "pp = phreeqpython.PhreeqPython(database='phreeqc.dat')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Add Master, Solution Species and Phases by executing PHREEQC input code"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pp.ip.run_string(\"\"\"\n",
+ "SOLUTION_MASTER_SPECIES\n",
+ "N(-3) NH4+ 0.0 N\n",
+ "SOLUTION_SPECIES\n",
+ "NH4+ = NH3 + H+\n",
+ " log_k -9.252\n",
+ " delta_h 12.48 kcal\n",
+ " -analytic 0.6322 -0.001225 -2835.76\n",
+ " \n",
+ "NO3- + 10 H+ + 8 e- = NH4+ + 3 H2O\n",
+ " log_k 119.077\n",
+ " delta_h -187.055 kcal\n",
+ " -gamma 2.5000 0.0000\n",
+ "PHASES\n",
+ "NH3(g)\n",
+ " NH3 = NH3\n",
+ " log_k 1.770\n",
+ " delta_h -8.170 kcal\n",
+ "\"\"\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Run Calculation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# add empty solution 1\n",
+ "solution1 = pp.add_solution({})\n",
+ "# equalize solution 1 with Calcite and CO2\n",
+ "solution1.equalize(['Calcite', 'CO2(g)'], [0,-1.5])\n",
+ "\n",
+ "# create a fixed pressure gas phase\n",
+ "fixed_pressure = pp.add_gas({\n",
+ " 'CO2(g)': 0,\n",
+ " 'CH4(g)': 0,\n",
+ " 'N2(g)': 0,\n",
+ " 'H2O(g)': 0,\n",
+ "}, pressure=1.1, fixed_pressure=True)\n",
+ "\n",
+ "# create a fixed volume gas phase\n",
+ "fixed_volume = pp.add_gas({\n",
+ " 'CO2(g)': 0,\n",
+ " 'CH4(g)': 0,\n",
+ " 'N2(g)': 0,\n",
+ " 'H2O(g)': 0,\n",
+ "}, volume=23.19, fixed_pressure=False, fixed_volume=True, equilibrate_with=solution1)\n",
+ "\n",
+ "mmol = [1, 2, 3, 4, 8, 16, 32, 64, 125, 250, 500, 1000]\n",
+ "\n",
+ "# instantiate result lists\n",
+ "fp_vol = []; fp_pres = []; fp_frac = []; fv_vol = []; fv_pres = []; fv_frac = []\n",
+ "\n",
+ "for m in mmol:\n",
+ "\n",
+ " sol = solution1.copy()\n",
+ " fp = fixed_pressure.copy()\n",
+ " # equlibriate with solution\n",
+ " sol.add('CH2O(NH3)0.07', m, 'mmol')\n",
+ " sol.interact(fp)\n",
+ " fp_vol.append(fp.volume)\n",
+ " fp_pres.append(fp.pressure)\n",
+ " fp_frac.append(fp.partial_pressures)\n",
+ "\n",
+ " sol.forget(); fp.forget() # clean up solutions after use\n",
+ " \n",
+ " sol = solution1.copy()\n",
+ " fv = fixed_volume.copy()\n",
+ " sol.add('CH2O(NH3)0.07', m, 'mmol')\n",
+ " sol.interact(fv)\n",
+ " fv_vol.append(fv.volume)\n",
+ " fv_pres.append(fv.pressure)\n",
+ " fv_frac.append(fv.partial_pressures)\n",
+ " \n",
+ " sol.forget(); fv.forget() # clean up solutions after use"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Total Gas Pressure and Volume"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0,0.5,'Volume, in liters)')"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=[8,5])\n",
+ "\n",
+ "# create two y axes\n",
+ "ax1 = plt.gca()\n",
+ "ax2 = ax1.twinx()\n",
+ "\n",
+ "# plot pressures\n",
+ "ax1.plot(mmol, np.log10(fp_pres), 'x-', color='tab:purple', label='Fixed_P - Pressure')\n",
+ "ax1.plot(mmol, np.log10(fv_pres), 's-', color='tab:purple', label='Fixed_V - Pressure')\n",
+ "\n",
+ "# add dummy handlers for legend\n",
+ "ax1.plot(np.nan, np.nan, 'x-', color='tab:blue', label='Fixed_P - Volume')\n",
+ "ax1.plot(np.nan, np.nan, 's-', color='tab:blue', label='Fixed_V - Volume')\n",
+ "\n",
+ "# plot volumes\n",
+ "ax2.plot(mmol, fp_vol, 'x-')\n",
+ "ax2.plot(mmol, fv_vol, 's-', color='tab:blue')\n",
+ "\n",
+ "# set log scale to both y axes\n",
+ "ax2.set_xscale('log')\n",
+ "ax2.set_yscale('log')\n",
+ "\n",
+ "# set axes limits\n",
+ "ax1.set_xlim([1e0, 1e3])\n",
+ "ax2.set_xlim([1e0, 1e3])\n",
+ "ax1.set_ylim([-5,1])\n",
+ "ax2.set_ylim([1e-3,1e5])\n",
+ "\n",
+ "# add legend and gridlines\n",
+ "ax1.legend(loc=4)\n",
+ "ax1.grid()\n",
+ "\n",
+ "# set labels\n",
+ "ax1.set_xlabel('Organic matter reacted, in millimoles')\n",
+ "ax1.set_ylabel('Log(Pressure, in atmospheres)')\n",
+ "ax2.set_ylabel('Volume, in liters)')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Fixed Pressure Gas Composition"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(-5, 1)"
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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fv16Ro4cWWX9hg0bqqxPTU2loKCAI0eOEBsbG1g/a9Yszj33XABKSkr47rvv6N27NwBvvfUWO3bsYOPGjezfv58BAwZw7bXXAuByuejbty9r166tNgallFLNSxNcpZRSSoVO5eS2rvXHwaJFi5g1axbLli0D4ODBg8THxwfKly1bxsUXX4zL5SIpKYkJEyZU2L9Lly5kZWVpgquUUiGgCa5SSimlmk8tLa2Avec2b3fV9XE94JoFDTrloEGDAl2Ggw0cOJClS5dWWPfdd98RExMTaL3NyMjguuuu44MPPqBz584AREdH4/F46n1+j8dDdHR0g2JXSinVOHoPrlJKKaVCZ9KDEF4pGQyPtusbaOLEiRQXF/OPf/wjsC4jI4O0tDSWLVvGwoULATsy8q233spdd90FwK5du7jooot4+eWX6devX2Dfjh074vP5AknuuHHjePPNN/H7/ezbt4/FixdXOP+WLVsYPHhwg+NXSinVcJrgKqWUUip00i+BC/5sW2wRO7/gz3Z9A4kIb7/9NgsXLiQ1NZVBgwZxzz33kJSUxLx583j44YdJS0tjyJAhjB49mptvvhmAhx56iJycHGbMmMGwYcMYNWpU4JhnnXVWoMvyD3/4Q7p3787AgQO54oorGDFiBHFxcQDs27eP6OhokpKSGv6eKKWUajDtoqyUUkqp0Eq/pFEJbXW6devG3LnVj8RcucW1zPPPP8/zzz9fbdnPf/5znnrqKSZPnozL5eKJJ54gJiaGnJwcTjnlFIYMGQLAq6++yo033tgk16CUUurYaYKrlFJKKVWHESNGMGHCBHw+H263m/PPP5/c3FxKSkp44IEHAi228fHxXHnllSGOVimlTlya4CqllFJK1UPZo4Cg5lbga6655jhFo5RSqjp6D65SSimllFJKqTZBE1yllFJKKaWUUm2CJrhKKaWUUkoppdoETXCVUkoppZRSSrUJmuAqpZRSqs2JiYmpsDx79uzA826ffPJJBg4cSHp6OpMmTWLnzp2B7TZs2MDEiRNJS0vj5JNP5re//S3GmED5O++8w0MPPVTruQ8cOMA555zThFejlFKqvjTBVUoppVRILfhuAWe9cRbpL6Zz1htnseC7Bc16vuHDh7NixQoyMjL40Y9+xF133QVAUVERU6dO5e6772bz5s2sXbuW5cuX8+yzzwb2ffzxx5kxY0at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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig = plt.figure(figsize=[16,5])\n",
+ "\n",
+ "# plot fixed pressure gas composition\n",
+ "fig.add_subplot(1,2,1)\n",
+ "pd.DataFrame(fp_frac, index=mmol).apply(np.log10)[2:].plot(style='-x', ax=plt.gca())\n",
+ "plt.title('Fixed Pressure gas composition')\n",
+ "plt.xscale('log')\n",
+ "plt.ylim([-5,1])\n",
+ "plt.grid()\n",
+ "plt.xlim(1e0, 1e3)\n",
+ "plt.xlabel('Organic matter reacted, in millimoles')\n",
+ "plt.ylabel('Log(Partial pressure, in atmospheres)')\n",
+ "\n",
+ "# plot fixed volume gas composition\n",
+ "fig.add_subplot(1,2,2)\n",
+ "pd.DataFrame(fv_frac, index=mmol).apply(np.log10).plot(style='-o', ax=plt.gca())\n",
+ "plt.title('Fixed Volume gas composition')\n",
+ "plt.xscale('log')\n",
+ "plt.xlabel('Organic matter reacted, in millimoles')\n",
+ "plt.ylabel('Log(Partial pressure, in atmospheres)')\n",
+ "plt.grid()\n",
+ "plt.ylim([-5,1])\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/notebooks/Carbonic Acid Equilibrium.ipynb b/docs/notebooks/Carbonic Acid Equilibrium.ipynb
new file mode 100644
index 0000000..b9c450f
--- /dev/null
+++ b/docs/notebooks/Carbonic Acid Equilibrium.ipynb
@@ -0,0 +1,170 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# The Carbonic Acid/Bicarbonate/Carbonate Equilibrium $\\require{mhchem}$\n",
+ "\n",
+ "Carbonic Acid ($\\ce{H2CO3}$), Bicarbonate ($\\ce{HCO3-}$) and Carbonate ($\\ce{CO3^{2-}}$) form in water through the following equilibrium reactions:\n",
+ "\n",
+ "$$ \\ce{CO2 + H2O <=> H2CO3} $$\n",
+ "$$ \\ce{H2CO3 <=> HCO3- + H+} $$\n",
+ "$$ \\ce{HCO3- <=> CO3^{2-} + H+} $$\n",
+ "\n",
+ "The distribution of carbonic acid, bicarbonate and carbonate is dependent on the pH of the water, and is easily simulated using PhreeqPython.\n",
+ "\n",
+ "## Importing Modules\n",
+ "We start by importing phreeqpython package and creating a new PhreeqPython instance"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pylab inline\n",
+ "from phreeqpython import PhreeqPython\n",
+ "# create new PhreeqPython instance\n",
+ "pp = PhreeqPython()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Solution Definition\n",
+ "\n",
+ "We define a simple solution that contains 1 mmol of Sodium Bicarbondate ($\\ce{NaHCO3}$)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "This solution has a pH of: 8.27 and a conductivity of: 92.97 uS/cm\n"
+ ]
+ }
+ ],
+ "source": [
+ "solution = pp.add_solution_simple({'NaHCO3':1.0})\n",
+ "print(\"This solution has a pH of: {0:.2f} and a conductivity of: {1:.2f} uS/cm\".format(solution.pH,solution.sc))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## List Definition\n",
+ "We initialize four arrays, one for the pH and one for each of the different carbonate species."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "phs = []\n",
+ "co2 = []\n",
+ "hco3 = []\n",
+ "co3 = []"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Calculation Loop\n",
+ "We now iteratively change the pH to the desired value, using the **change_ph** function to dose either hydrochloric acid ($\\ce{HCl}$) or lye ($\\ce{NaOH}$). Using the **total** function we can find the total amount of carbon dioxide, bicarbonate and carbonate."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "for pH in arange(0,14.1,0.1):\n",
+ " # change the solution pH\n",
+ " solution.change_ph(pH)\n",
+ " # get and store the ph, CO2, HCO3 and CO3\n",
+ " phs.append(pH)\n",
+ " co2.append(solution.total('CO2')*1000)\n",
+ " co3.append(solution.total('CO3')*1000)\n",
+ " hco3.append(solution.total('HCO3')*1000)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Display Results\n",
+ "\n",
+ "Using matplotlib we can display the results:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig = plt.figure(figsize=[14,6])\n",
+ "plt.plot(phs,co2,label='CO2')\n",
+ "plt.plot(phs,hco3,label='HCO3-')\n",
+ "plt.plot(phs,co3,label='CO3-2')\n",
+ "plt.xlabel(\"pH\")\n",
+ "plt.ylabel(\"Concentration (mmol)\")\n",
+ "plt.title(\"Carbonic Acid, Bicarbonate, Carbonate distribution\")\n",
+ "lgnd = plt.legend()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/docs/notebooks/Functionality Overview.ipynb b/docs/notebooks/Functionality Overview.ipynb
new file mode 100644
index 0000000..867c7cb
--- /dev/null
+++ b/docs/notebooks/Functionality Overview.ipynb
@@ -0,0 +1,481 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# PhreeqPython + VIPhreeqc Functionality Overview"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import phreeqpython\n",
+ "pp = phreeqpython.PhreeqPython()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Adding Solutions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Simple, through a reaction block\n",
+ "solution = pp.add_solution_simple({'CaCl2':1.0,'NaHCO3':2.0},temperature=15)\n",
+ "# Complex, allowing for more 'standard' PHREEQC input (Phreeqc example 3 -- Mixing)\n",
+ "solution2 = pp.add_solution({'units':'ppm',\n",
+ " 'pH': 8.22,\n",
+ " 'pe': 8.451,\n",
+ " 'density': 1.023,\n",
+ " 'temp': 25.0,\n",
+ " 'Ca': 412.3,\n",
+ " 'Mg': 1291.8,\n",
+ " 'Na': 10768.0,\n",
+ " 'K': 399.1,\n",
+ " 'Si': 4.28,\n",
+ " 'Cl': 19353.0,\n",
+ " 'Alkalinity': '141.682 as HCO3',\n",
+ " 'S(6)': 2712.0\n",
+ " })"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Solution Information"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Basic Properties"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution pH: 8.23\n",
+ "Solution sc: 335.25\n",
+ "Solution pe: 10.5\n",
+ "Temperature: 15.0\n",
+ "Mass: 1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"Solution pH: {:.3}\".format(solution.pH))\n",
+ "print(\"Solution sc: {:3.2f}\".format(solution.sc))\n",
+ "print(\"Solution pe: {:.3}\".format(solution.pe))\n",
+ "print(\"Temperature: {:.3}\".format(solution.temperature))\n",
+ "print(\"Mass: {:.3}\".format(solution.mass))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Speciation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'CH4': 0.0,\n",
+ " 'CO2': 2.7909024983359043e-05,\n",
+ " 'CO3-2': 1.504189457564534e-05,\n",
+ " 'Ca+2': 0.0009734342277295038,\n",
+ " 'CaCO3': 1.1724417168794343e-05,\n",
+ " 'CaHCO3+': 1.4819423174432155e-05,\n",
+ " 'CaOH+': 2.1931927102669182e-08,\n",
+ " 'Cl-': 0.0020000000000000005,\n",
+ " 'H+': 6.3511969105813895e-09,\n",
+ " 'H2': 0.0,\n",
+ " 'H2O': 55.50932491627957,\n",
+ " 'HCO3-': 0.0019282729745638734,\n",
+ " 'Na+': 0.001997767734466099,\n",
+ " 'NaCO3-': 2.4888466990103817e-07,\n",
+ " 'NaHCO3': 1.983380863998685e-06,\n",
+ " 'NaOH': 1.4165712953779178e-19,\n",
+ " 'O2': 1.880500103837165e-15,\n",
+ " 'OH-': 8.235839079271772e-07}"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution.species"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Elements"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'C(4)': 0.002000000000000004,\n",
+ " 'Ca': 0.000999999999999833,\n",
+ " 'Cl': 0.0020000000000000005,\n",
+ " 'Na': 0.001999999999999999,\n",
+ " 'O(0)': 3.76100020767433e-15}"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution.elements"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Phases and their SI"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'Aragonite': 0.1932078777270103,\n",
+ " 'CH4(g)': -125.58800591273227,\n",
+ " 'CO2(g)': -3.216751152245572,\n",
+ " 'Calcite': 0.34442418867614855,\n",
+ " 'Fix_pH': -8.226383714702244,\n",
+ " 'H2(g)': -37.424312956480996,\n",
+ " 'H2O(g)': -1.7694469897527798,\n",
+ " 'Halite': -7.024441375036288,\n",
+ " 'O2(g)': -11.912977050671959,\n",
+ " 'Vaterite': -0.2494038522747335}"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution.phases"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Element and Species sums"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2.0000000000000004"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution.total_element('Cl', units='mmol')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "118.68237757085221"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution.total('HCO3', units='mg') # equavalent to SUM_SPECIES"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Modifying Solutions"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Adding and Removing"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution.add('NaOH',1, 'mmol') # add 1 mmol of NaOH\n",
+ "solution.remove('NaCl',1, 'mmol') # remove 1 mmol of NaCl\n",
+ "solution.remove_fraction('CO3',0.5) # remove 50% of CO3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Saturation and Desaturation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution.saturate('Calcite',1.0) # Saturate to SI 1.0\n",
+ "solution.desaturate('Calcite',0.0) # Desaturate to SI 0.0"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Changing pH"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "5.0"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution.change_ph(5,'HCl') # Change pH to 5 by dosing HCl\n",
+ "solution.pH"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Changing Temperature"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10.0"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution.change_temperature(10) # Change temperature to 10 degrees\n",
+ "solution.temperature"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Mixing Solutions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Solution 3:\n",
+ "Total Chloride: 2.0 mmol\n",
+ "Mass: 1.0\n",
+ "\n",
+ "Solution 4:\n",
+ "Total Chloride: 4.0 mmol\n",
+ "Mass: 2.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "solution1 = pp.add_solution_simple({'NaCl':1})\n",
+ "solution2 = pp.add_solution_simple({'NaCl':3})\n",
+ "# make a solution of 50% solution 1 and 50% solution 2:\n",
+ "solution3 = solution1 * 0.5 + solution2 * 0.5\n",
+ "# make a solution by mixing solution 1 and 2 together\n",
+ "solution4 = solution1 + solution2\n",
+ "print(\"Solution 3:\")\n",
+ "print(\"Total Chloride: {:.3} mmol\".format(solution3.total('Cl')))\n",
+ "print(\"Mass: {:.3}\".format(solution3.mass))\n",
+ "print(\"\")\n",
+ "print(\"Solution 4:\")\n",
+ "print(\"Total Chloride: {:.3} mmol\".format(solution4.total('Cl')))\n",
+ "print(\"Mass: {:.3}\".format(solution4.mass))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Misc. Functionality"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Copying Solutions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "245.0526302945747\n"
+ ]
+ }
+ ],
+ "source": [
+ "solution5 = solution4.copy()\n",
+ "print(solution5.sc)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Forgetting solutions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "solution5.forget()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/docs/notebooks/Kinetic Dissolution of Quartz.ipynb b/docs/notebooks/Kinetic Dissolution of Quartz.ipynb
new file mode 100644
index 0000000..bfba82c
--- /dev/null
+++ b/docs/notebooks/Kinetic Dissolution of Quartz.ipynb
@@ -0,0 +1,207 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# KINETIC DISSOLUTION OF QUARTZ\n",
+ "http://hydrochemistry.eu/exmpls/kin_qu.html"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pylab inline\n",
+ "import phreeqpython\n",
+ "from scipy.integrate import odeint\n",
+ "pp = phreeqpython.PhreeqPython('phreeqc.dat')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Phreeqc Calculation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Dissolution Rate Function\n",
+ "\n",
+ "The following function describes the dissolution rate of quartz."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def ratefun(sol, quartz_dissolved, m0, A0, V):\n",
+ " m = m0-quartz_dissolved\n",
+ " rate = (A0/V)*(m/m0)**0.67*10**-13.7*(1-sol.sr(\"Quartz\"))\n",
+ " return rate * 1e3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Calculation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [],
+ "source": [
+ "solution1 = pp.add_solution({})\n",
+ "\n",
+ "t = np.array([])\n",
+ "y = []\n",
+ "\n",
+ "year = 365*24*3600\n",
+ "\n",
+ "for time, sol in solution1.kinetics('SiO2', \n",
+ " rate_function=ratefun, \n",
+ " time=np.linspace(0,5*year, 15), \n",
+ " m0=158.5, \n",
+ " args=(23.13,0.16)):\n",
+ " t = np.append(t, time)\n",
+ " y.append(sol.total_element('Si', units='mmol'))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Plotting the Results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmsAAAFNCAYAAABfUShSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XmclWXdx/HPj0XcQBFJFPeNpLSe\nSu1pMTJLLBU1TS1LK6Py0VwqM+0xs1VbbNEscqk0U3JJSkotm0xFQ33QQsMQN1QwxYXRQAZ+zx/3\nmRjGmeGAc+Y+Z87n/XrdrznnXs78DrfK1+u6r+uKzESSJEn1aUDZBUiSJKl7hjVJkqQ6ZliTJEmq\nY4Y1SZKkOmZYkyRJqmOGNUmSpDpmWJMkSapjhjVJ6kZEvDUiZtXw8x+MiD1W89rNI6I1Igb2dl2S\n6othTVKviYgjIuJvEfFCRMyLiB9GxHo1/n03rea1p0XEkohYWNnui4izI2Lj9nMy8y+ZOab3Kl59\nnYNdZj6cmetm5tIy65JUe4Y1Sb0iIj4NnAF8FlgPeCOwJXBdRAyuwe8b1Asfc1lmDgU2APYHRgF3\ndAxsklQ2w5qkly0ihgFfAo7JzN9n5pLMfBB4H7A18P7KeT+NiK90uG5cRMzt8P6kiLi/0tJ1T0Ts\n3+HYERFxc0ScFRFPAZcBPwL+u9Id+ExEbFJ53b69EBErXVOvUu9M4GDgX8Cnu6nvcxHxaKW+WRHx\njsr+XSLi9oh4LiLmR8R3Olyzb0TMrNTXEhE7dPNn2O2fTURcBGwO/KbyvU6MiC0jIttDa+W7T4mI\nBRExOyI+1uGzTouIyRHx80rtMyPiDSv7c5FUHwxrknrDm4A1gSs77szMVmAq8K4qP+d+4K0ULXNf\nAi7u1Mq1KzAH2Ag4DPgEMK3SHbh+Zj5Web1uZq4LXAVcWu2XqHQpXl2pYQURMQY4Gti50hq3J/Bg\n5fD3gO9l5jBgG2By5ZrtgV8CxwEjKf4sfhMRa1RbU6WuDwIPA/tUvtuZXZx2KTAX2AQ4EPhaROze\n4fi+lXPWB6YAZ69KDZLKY1iT1Bs2BJ7MzLYujj1OEVRWKjN/VQlcyzLzMuCfwC4dTnksM3+QmW2Z\n+e+ePisiPge8EvhIdV9h+e+g6BbtbCkwBBgbEYMz88HMvL9ybAmwbURsmJmtmXlrZf/BwDWZeX1m\nLgG+BaxFEW57TURsBrwZ+FxmLsrMGcB5wIc6nHZTZk6tBNKLgNf0Zg2SasewJqk3PAls2M1zZBtX\njq9URHwoImZUugyfAV5NEQTbPVLl5+wFHAvst7JQ14XRwILOOzNzNkUL2WnAExFxaURsUjn8UWB7\n4B8RMT0i9q7s3wR4qMNnLKt8h9GrWNPKbAIsyMyFHfY91On3zOvw+gVgzV567k9SjRnWJPWGacBi\n4ICOOyNiXWAvoKWy63lg7Q6njOpw7hbATyi6Gkdk5vrA34HocH7n589e8jxapbvyZ8D7MrOqcNfh\n2gHAPsBfujqemZdk5luALSq/+4zK/n9m5qHAKyr7Lo+IdSha6bbo8PkBbAY82sXHd/tn0/7reyj9\nMWCDiBjaYd/m3fweSQ3GsCbpZcvMZymeMftBRIyPiMERsSXFs1tPAr+onDoDeHdEbBARoyhaqtqt\nQxFI/gUQER+maFnryXxg0/ZnwCoDHa4GTsnMqqf0iIhBlQf/f0kRkr7TxTljImL3iBgCLAL+DSyr\nHDssIkZWWs6eqVyyrPL93xMR76iMiP00Rai9pYsyevqzaf+uW3dVfyWU3gJ8PSLWjIidKFr7Lq72\nz0BS/TKsSeoVlYfeT6Z4Lmsh8ABFS9Eemfl85bSLgLsoHsy/jmJEZ/v19wDfpmilmw/sCNy8kl97\nAzATmBcRTwKvA8YAZ3UcFdrD9QdXjj9L8dD9U8DrM/OxLs4dAnyDInzOo2hF+3zl2HhgZuWzvgcc\nkpn/zsxZFAMhflC5bh+KQQIvdvH53f7ZVHwd+EKli/gzXVx/KMVUKY9RDKz4Ymb+oYfvLqlBROZK\nR7VL0iqrtIydDrw5Mx8uux5JalQ1bVmrdIfMqsz5c1IXx3eLiDsjoi0iDuyw/7URMa0yF9DdEXFw\nLeuU1Psy80KKlrZeHfkoSc2mZi1rUaxXdx/wToq5f6YDh1a6OtrP2RIYBnwGmJKZl1f2bw9kZv6z\nMtrqDmCHzHwGSZKkJlLLYdu7ALMzcw5ARFwKTAD+E9YqM5wTEcs6XpiZ93V4/VhEPEExT5NhTZIk\nNZVadoOOZsU5keayGnMLRcQuwBoUM5tLkiQ1lbqeELGyzMxFwOGVIfGdj08EJgKsueaar9988837\nuEL1lmXLljFggIOTG5X3r3F57xqb969x3XfffU9mZlWru9QyrD1KMflju01ZhQkaK/MlXUMxX9Kt\nXZ2TmZOASQBjxozJWbNmrX61KlVLSwvjxo0ruwytJu9f4/LeNTbvX+OKiIdWflahlnF8OrBdRGxV\nmbDyEIp5jFaqcv5VwM/bBx1IkiQ1o5qFtcqCzkcD1wL3ApMzc2ZEnB4R+wJExM4RMRc4CPhxRMys\nXP4+YDfgiMo6gTMi4rW1qlWSJKle1fSZtcycCkzttO/UDq+nU3SPdr7uYlwmRZIkyeWmJEmS6plh\nTZIkqY4Z1iRJkuqYYU2SJKmOGdYkSZLqmGFNkiSpjhnWJEmS6phhTZIkqY4Z1iRJkuqYYU2SJKmO\nGdYkSZLqmGFNkiSpjhnWJEmS6phhTZIkqY4Z1iRJkuqYYU2SJKmOGdYkSZLqmGFNkiSpjhnWJEmS\n6phhTZIkqY4Z1iRJkuqYYU2SJKmOGdYkSZLqmGFNkiSpjhnWJEmS6phhTZIkqY4Z1iRJkuqYYU2S\nJKmOGdYkSZLqmGFNkiSpjhnWJEmS+sKoURABEbweXl/tZYY1SZLUf3QIRCtso0aVXRnMn79alw3q\n5TIkSVJ/NmpU16Fjo41g3ry+r6ez7gLR/Pnw7LOwaBEsXrzi1lf7VpNhTZIkVa+nMLQqMosA88IL\n8O9/Fz87b6uzvyfrr79qNXZlyBBYc83iZ+etff+6675035AhcPbZq/UrDWuSJNWTemq5amuDhQuL\n7bnnip89OeaY6kPWv/9dBLZVNWQIrL328m2ttZa/Hj4c7ryz+2u//e3qwlZ3+wYPLrpUV5dhTZKk\nfuDltlwtWbJiuOr4elX3raylqrNLLnlpgFp7bdhgg673r8q+tdcugtPAgT3X0FOYOuGEVfs+daKm\nYS0ixgPfAwYC52XmNzod3w34LrATcEhmXt7h2OHAFypvv5KZP6tlrZIklWrZsuKZqp585jMrBKrX\nzp0LAwasGLiqfTZqrbVg2DAYOrTYhg2D0aNfuq/jz6FDYa+9uv/Mp56q/vs2o402Wq1BBjULaxEx\nEDgHeCcwF5geEVMy854Opz0MHAF8ptO1GwBfBN4AJHBH5dqna1WvJKlJ1LqbsT10LVhQhJcFC176\nuqv3Tz9dXNuTH/1ohSCVAwbA5pv3HK662jd0KAzqp51r3QWijTbq+1o66/DP1x0Rd1R7WS3v1C7A\n7MycAxARlwITgP+Etcx8sHKs8z+dewLXZ+aCyvHrgfHAL2tYrySpGVTbzbhsGTzzTM8Bq6v3Tz/d\n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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=[10,5])\n",
+ "plt.plot(t/year,y, 'rs-')\n",
+ "plt.xlim([0,5])\n",
+ "plt.ylim([0,0.12])\n",
+ "plt.xlabel('Years')\n",
+ "plt.ylabel('mmol/l')\n",
+ "plt.title('Quartz Dissolution')\n",
+ "plt.grid()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Dissolution Calculation using odeint"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "def rate_quartz(quartz_dissolved,time, sol, A0, V, m0):\n",
+ " temp = sol.copy() # make a temporary copy of the solution\n",
+ " temp.add('SiO2', quartz_dissolved[0], 'mol') # add SiO2 to the solution\n",
+ " m = m0-quartz_dissolved[0]\n",
+ " rate = (A0/V)*(m/m0)**0.67*10**-13.7*(1-temp.sr(\"Quartz\")) # calculate the dissolution rate \n",
+ " temp.forget() # cleanup the no longer needed temporary solution\n",
+ " return rate\n",
+ "\n",
+ "solution1 = pp.add_solution({})\n",
+ "year = 365*24*3600 # seconds\n",
+ "\n",
+ "tt = np.linspace(0, 5*year, 15)\n",
+ "\n",
+ "# solve differential equation\n",
+ "yy = odeint(rate_quartz,0,t, args=(solution1, 23.13, 0.16, 158.5))\n",
+ "\n",
+ "plt.figure(figsize=[10,5])\n",
+ "plt.plot(tt/year,yy*1e3, 'rs-')\n",
+ "plt.xlim([0,5])\n",
+ "plt.ylim([0,0.12])\n",
+ "plt.xlabel('Years')\n",
+ "plt.ylabel('mmol/l')\n",
+ "plt.title('Quartz Dissolution')\n",
+ "plt.grid()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/notebooks/demo.html b/docs/notebooks/demo.html
new file mode 100644
index 0000000..d292acf
--- /dev/null
+++ b/docs/notebooks/demo.html
@@ -0,0 +1,1004 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Populating the interactive namespace from numpy and matplotlib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This solution has a pH of: 8.27 and a conductivity of: 92.97 uS/cm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/notebooks/gas_data/O2_27.dat b/docs/notebooks/gas_data/O2_27.dat
new file mode 100644
index 0000000..664a292
--- /dev/null
+++ b/docs/notebooks/gas_data/O2_27.dat
@@ -0,0 +1,10 @@
+P 27C
+10 0.0124
+20 0.024461717
+30 0.036490161
+40 0.047265295
+50 0.05745814
+70 0.071333274
+80 0.080755277
+90 0.088790877
+100 0.094835599
diff --git a/docs/notebooks/gas_data/ch4_100c.dat b/docs/notebooks/gas_data/ch4_100c.dat
new file mode 100644
index 0000000..3e62e33
--- /dev/null
+++ b/docs/notebooks/gas_data/ch4_100c.dat
@@ -0,0 +1,18 @@
+P 100C
+30.0 0.0381
+70.0 0.0613
+100.0 0.0995
+135.0 0.1075
+175.0 0.1193
+215.0 0.1500
+250.0 0.1580
+300.0 0.1777
+350.0 0.1896
+400.0 0.2054
+450.0 0.2023
+475.0 0.2140
+500.0 0.2370
+550.0 0.2340
+600.0 0.2574
+675.0 0.2545
+700.0 0.2623
diff --git a/docs/notebooks/gas_data/ch4_25c.dat b/docs/notebooks/gas_data/ch4_25c.dat
new file mode 100644
index 0000000..0342e4b
--- /dev/null
+++ b/docs/notebooks/gas_data/ch4_25c.dat
@@ -0,0 +1,12 @@
+P 25C
+22.4 0.0410
+35.3 0.0528
+51.4 0.0704
+67.4 0.0909
+125.6 0.1233
+174.0 0.1498
+238.6 0.1764
+335.6 0.2031
+439.1 0.2327
+529.7 0.2535
+633.2 0.2715
diff --git a/docs/notebooks/gas_data/ch4_50c.dat b/docs/notebooks/gas_data/ch4_50c.dat
new file mode 100644
index 0000000..f59f55d
--- /dev/null
+++ b/docs/notebooks/gas_data/ch4_50c.dat
@@ -0,0 +1,7 @@
+P 50C
+99.9 0.0764
+203.3 0.1236
+303.5 0.1532
+397.3 0.1799
+500.8 0.2066
+601.2 0.2216
diff --git a/docs/notebooks/gas_data/co2_4m_NaCl.dat b/docs/notebooks/gas_data/co2_4m_NaCl.dat
new file mode 100644
index 0000000..5b97abf
--- /dev/null
+++ b/docs/notebooks/gas_data/co2_4m_NaCl.dat
@@ -0,0 +1,17 @@
+P 80C 120C 160C
+8.079 4.908e-02
+1.659e+01 9.969e-02
+3.384e+01 2.025e-01
+5.611e+01 3.083e-01
+6.943e+01 3.589e-01
+8.341e+01 4.110e-01
+9.651e+01 4.617e-01
+1.201e+01 5.061e-02
+2.336e+01 1.012e-01
+4.760e+01 2.071e-01
+7.664e+01 3.144e-01
+9.323e+01 3.650e-01
+1.659e+01 4.755e-02
+2.882e+01 9.969e-02
+5.917e+01 2.193e-01
+9.039e+01 3.252e-01
diff --git a/docs/notebooks/gas_data/n2_25C.dat b/docs/notebooks/gas_data/n2_25C.dat
new file mode 100644
index 0000000..a440c69
--- /dev/null
+++ b/docs/notebooks/gas_data/n2_25C.dat
@@ -0,0 +1,9 @@
+P 25C
+25 0.015535714
+50 0.016696429
+100 0.056473214
+200 0.100758929
+300 0.136473214
+500 0.198035714
+800 0.273660714
+1000 0.31875
diff --git a/docs/pyodide/ppdocs.py b/docs/pyodide/ppdocs.py
new file mode 100644
index 0000000..030434a
--- /dev/null
+++ b/docs/pyodide/ppdocs.py
@@ -0,0 +1,60 @@
+"""Helpers for live PhreeqPython examples in the docs."""
+
+from __future__ import annotations
+
+import base64
+import builtins
+import io
+
+
+def show_plot(fig):
+ """Render a matplotlib figure below the Pyodide editor."""
+ from js import document, window
+
+ buf = io.BytesIO()
+ fig.savefig(buf, format="png", dpi=120, bbox_inches="tight")
+ fig.clf()
+
+ root = getattr(window, "__ppdocsPyodideRoot", None) or document.querySelector(".pyodide")
+ plots = root.querySelectorAll("img.pyodide-plot")
+ for i in range(plots.length):
+ plots.item(i).remove()
+
+ img = document.createElement("img")
+ img.className = "pyodide-plot"
+ img.src = "data:image/png;base64," + base64.b64encode(buf.getvalue()).decode()
+ img.style.maxWidth = "100%"
+ root.appendChild(img)
+
+
+def load_tsv(name):
+ """Load a TSV from ``docs/examples/gas_data`` (path relative to the Examples tab)."""
+ import pandas as pd
+ from js import window
+ from pyodide.http import open_url
+
+ path = window.location.pathname.rstrip("/")
+ if path.endswith(".html"):
+ path = path.rsplit("/", 1)[0]
+ examples_root = path.rsplit("/", 1)[0]
+ url = window.location.origin + examples_root + "/gas_data/" + name
+ return pd.read_csv(open_url(url), sep="\t", index_col=0)
+
+
+def prepare():
+ """Import names used by every live example."""
+ from phreeqpython import PhreeqPython
+
+ builtins.show_plot = show_plot
+ builtins.load_tsv = load_tsv
+ builtins.PhreeqPython = PhreeqPython
+ try:
+ import numpy as np
+ builtins.np = np
+ except ImportError:
+ pass
+ try:
+ import matplotlib.pyplot as plt
+ builtins.plt = plt
+ except ImportError:
+ pass
diff --git a/docs/reference/equilibriumphase.md b/docs/reference/equilibriumphase.md
new file mode 100644
index 0000000..9fb59c1
--- /dev/null
+++ b/docs/reference/equilibriumphase.md
@@ -0,0 +1,5 @@
+---
+icon: lucide/layers
+---
+
+::: equilibriumphase.EquilibriumPhase
diff --git a/docs/reference/gas.md b/docs/reference/gas.md
new file mode 100644
index 0000000..11df114
--- /dev/null
+++ b/docs/reference/gas.md
@@ -0,0 +1,5 @@
+---
+icon: lucide/cloud
+---
+
+::: gas.Gas
diff --git a/docs/reference/index.md b/docs/reference/index.md
new file mode 100644
index 0000000..00a912a
--- /dev/null
+++ b/docs/reference/index.md
@@ -0,0 +1,13 @@
+---
+icon: lucide/library
+---
+
+# Overview
+
+Public classes in PhreeqPython, grouped by source file.
+
+- [`PhreeqPython`](phreeqpython.md) — create solutions, gases, and phases
+- [`Solution`](solution.md) — aqueous chemistry, mixing, and titration
+- [`Gas`](gas.md) — gas phases
+- [`EquilibriumPhase`](equilibriumphase.md) — mineral and gas equilibrium phases
+- [`VIPhreeqc`](viphreeqc.md) — low-level engine wrapper
diff --git a/docs/reference/phreeqpython.md b/docs/reference/phreeqpython.md
new file mode 100644
index 0000000..afa7934
--- /dev/null
+++ b/docs/reference/phreeqpython.md
@@ -0,0 +1,5 @@
+---
+icon: lucide/box
+---
+
+::: phreeqpython.PhreeqPython
diff --git a/docs/reference/solution.md b/docs/reference/solution.md
new file mode 100644
index 0000000..76a976e
--- /dev/null
+++ b/docs/reference/solution.md
@@ -0,0 +1,5 @@
+---
+icon: lucide/droplet
+---
+
+::: solution.Solution
diff --git a/docs/reference/viphreeqc.md b/docs/reference/viphreeqc.md
new file mode 100644
index 0000000..7fa1f13
--- /dev/null
+++ b/docs/reference/viphreeqc.md
@@ -0,0 +1,9 @@
+---
+icon: lucide/cpu
+---
+
+Low-level wrapper around the VIPhreeqc library. Most users should go through [`PhreeqPython`](phreeqpython.md) instead.
+
+::: viphreeqc.VIPhreeqc
+
+::: viphreeqc.PhreeqcException
diff --git a/docs/resources/logo.png b/docs/resources/logo.png
new file mode 100644
index 0000000..86a04e6
Binary files /dev/null and b/docs/resources/logo.png differ
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css
new file mode 100644
index 0000000..f550cea
--- /dev/null
+++ b/docs/stylesheets/extra.css
@@ -0,0 +1,32 @@
+/* Zensical injects an H1 from the page title when the markdown has none.
+ Hide that auto heading so the homepage can start with the logo. */
+.md-typeset img.logo-home {
+ display: block;
+ margin-inline: auto;
+}
+
+.md-typeset h1#__skip {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border: 0;
+}
+
+.md-typeset img.pyodide-plot {
+ display: block;
+ margin-block: 0.75rem;
+ max-width: 100%;
+}
+
+.md-typeset .ppdocs-run-all {
+ margin-block: 0.75rem 0;
+}
+
+.md-typeset .ppdocs-run-all .md-button {
+ margin: 0;
+}
diff --git a/docs/wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl b/docs/wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl
new file mode 100644
index 0000000..2e5cc48
Binary files /dev/null and b/docs/wheels/phreeqpython-1.6.2+pyodide-py3-none-any.whl differ
diff --git a/phreeqpython/solution.py b/phreeqpython/solution.py
index 59632d8..affae49 100644
--- a/phreeqpython/solution.py
+++ b/phreeqpython/solution.py
@@ -2,29 +2,59 @@
import copy
import numbers
from .utility import convert_units
-
from .equilibriumphase import EquilibriumPhase
from .gas import Gas
import numpy as np
class Solution(object):
- """ PhreeqPy Solution Class """
+ """An aqueous solution.
+
+ Notes:
+ See phreeqpython.add_solution() for details on creating a solution.
+ """
def __init__(self, phreeqpython, number, extraneous=None):
+ """Returns an empty solution.
+
+ Notes:
+ Use phreeqpython.add_solution() to create a solution.
+
+ Warning:
+ the fields: pp, factor, number and extraneous are accessible by the user.
+ probably not the intention?
+ Better to make them private?
+ """
self.pp = phreeqpython
self.factor = 1
self.number = number
self.extraneous = {} if extraneous is None else extraneous
def copy(self):
- """ Create a new copy, with unique solution number, from this solution """
+ """Returns an independent copy of the solution.
+
+ Examples:
+ >>> sol2 = sol.copy()
+ """
copied_solution = self.pp.copy_solution(self.number)
copied_solution.extraneous = copy.deepcopy(self.extraneous)
return copied_solution
def change(self, composition, units='mmol'):
- """ Change solution composition by adding/removing elements in a single step """
+ """Change the solution by adding or removing species.
+
+ Args:
+ composition (dict): A dictionary of (species, amount) pairs.
+ units (str): Optional, unit of the amounts.
+
+ Returns:
+ Solution: The altered solution.
+
+ Examples:
+ >>> sol.change({'K': 20.0, 'Na': -10.0})
+ >>> sol.change({'CaSO4': 5.0}, units='mg')
+ >>> sol.change({'NaCl': -10.0, 'Fe+2': -5.0})
+ """
converted_composition = {}
for element, amount in composition.items():
amount = convert_units(element, amount, units, 'mol')
@@ -32,90 +62,255 @@ def change(self, composition, units='mmol'):
self.pp.change_solution(self.number, converted_composition)
return self
-
def add(self, element, amount, units='mmol'):
- """ Add a chemical to the solution """
- # convert to mol
+ """Add a species to the solution.
+
+ Args:
+ element (str): An element or species.
+ amount (float): Amount of the species added.
+ units (str): Optional, unit of the amount.
+
+ Returns:
+ Solution: The altered solution.
+
+ Examples:
+ >>> sol.add('Fe', 5.0)
+ >>> sol.add('CaCO3', 10.0, 'mg')
+ """
amount = convert_units(element, amount, units, 'mol')
self.pp.change_solution(self.number, {element:amount})
return self
def remove(self, element, amount, units='mmol'):
- """ Remove a chemical from the solution """
+ """Remove a species from the solution.
+
+ Args:
+ element (str): An element or species.
+ amount (float): Amount of the species removed.
+ units (str): Optional, unit of the amount.
+
+ Returns:
+ Solution: The altered solution.
+
+ Examples:
+ >>> sol.remove('Fe', 5.0)
+ >>> sol.remove('CaCO3', 10.0, 'mg')
+ """
amount = -convert_units(element, amount, units, 'mol')
self.pp.change_solution(self.number, {element:amount})
return self
-
def remove_fraction(self, species, fraction):
- """ Remove a fraction of a chemical from the solution """
+ """Remove a fraction of the species from the solution.
+
+ Args:
+ species (str): An element or species.
+ fraction (float): Fraction of amount to remove.
+
+ Returns:
+ Solution: The altered solution.
+
+ Examples:
+ >>> sol.remove('K', 0.3)
+ >>> sol.remove('H2O', 0.9)
+ """
current = self.total(species)
to_remove = current * fraction
self.remove(species, to_remove)
return self
def interact(self, gas_or_phase):
-
+ """Equilibrate the solution with a multicomponent gas or solid phase.
+
+ Args:
+ gas_or_phase (Gas | Equilibriumphase): Previously defined multicomponent gas or solid phase.
+
+ Returns:
+ Solution: The solution after equilibrium with the gas or solid phase.
+
+ Examples:
+ >>> air = pp.add_gas({'O2(g)': 0.2, 'N2(g)': 0.78, 'CO2(g)': 0.000420})
+ >>> sol.interact(air)
+ """
if isinstance(gas_or_phase, Gas):
self.pp.interact_solution_gas(self.number, gas_or_phase.number)
else:
self.pp.interact_solution_phase(self.number, gas_or_phase.number)
-
return self
-
- def equalize(self, phases, to_si=[0], in_phase=[10], with_chemical=[None]):
- """ equalize one or more phases with the solution """
+ def equalize(self, phases, to_si=[0.0], in_phase=[10.0], with_chemical=[None]):
+ """Equalize the solution with one or more pure phases.
+
+ Args:
+ phases (lst[str]): List of one or more pure gas or solid phases.
+ to_si (lst[float]): Optional, list of target saturation indices for each phase.
+ in_phase (lst[float]): Optional, list of maximum amounts available for each phase, in moles.
+ with_chemical (lst[str]): Optional, list of alternative chemical added for each phase to reach the specified saturation index.
+
+ Returns:
+ (Solution): The solution after equilibration.
+
+ Examples:
+ >>> sol.equalize(phases=['Calcite'])
+ >>> sol.equalize(phases=['CO2(g)', 'CH4(g)'], to_si=[-0.4, -0.2])
+ >>> sol.equalize(phases=['Calcite'], with_chemical='HCl')
+
+ Notes:
+ saturation index (SI):
+ for solid phases: SI = log10(IAP / Ksp)
+ for gases: SI = log10(p_gas), with p_gas the partial pressure.
+ """
self.pp.equalize_solution(self.number, phases, to_si, in_phase, with_chemical)
-
return self
def saturate(self, phase, to_si=0, in_phase=10):
- """ Saturate a single phase to the given SI.
- This function can saturate one or multiple phases
- through dissolution. The maximum amount that can be dissolved is given by in_phase
+ """Saturate the solution with a pure phase.
+
+ Args:
+ phase (str): A pure gas or solid phase.
+ to_si (float): Optional, target saturation index for the phase.
+ in_phase (float): Optional, maximum amount available of the phase.
+
+ Returns:
+ (Solution): The solution after equilibration.
+
+ Examples:
+ >>> sol.saturate('Calcite')
+ >>> sol.saturate('CO2(g)', to_si=-3.5)
"""
if(self.si(phase) < 0):
self.pp.equalize_solution(self.number, phase, to_si, in_phase)
-
return self
- # this function can only precipitate
def desaturate(self, phase, to_si=0):
- """ Desaturate a phase to the given SI.
- This function can only desaturate a phase through precipitation
+ """Desaturate a solution from a pure phase via precipitation or vaporization.
+
+ Args:
+ phase (str): A pure gas or solid phase.
+ to_si (float): Optional, target saturation index for the phase.
+
+ Returns:
+ (Solution): The solution after equilibration.
+
+ Examples:
+ >>> sol.desaturate('Gypsum')
+ >>> sol.desaturate('CO2(g)', to_si=-3.5)
+
+ Notes:
+ This method will only desaturate, not saturate.
"""
self.pp.equalize_solution(self.number, phase, to_si, 0)
-
return self
- # change the ph
def change_ph(self, to_pH, with_chemical=None):
- """ Change the pH of a solution by dosing either HCl and NaOH, or a user supplied acid or base """
- # default to NaOH and HCl
+ """Change the pH of the solution.
+
+ Args:
+ to_pH (float): target pH.
+ with_chemical (str): Optional, acid of base to add, default is 'HCl' or 'NaOH'.
+
+ Returns:
+ (Solution): The altered solution.
+
+ Examples:
+ >>> sol.change_ph(4.5)
+ >>> sol.change_ph(4.5, 'H2SO4')
+ """
if not with_chemical:
if to_pH < self.pH:
- # dose HCl to lower pH
self.pp.equalize_solution(self.number, "Fix_pH", -to_pH, 10, "HCl")
else:
- # dose NaOH to raise pH
self.pp.equalize_solution(self.number, "Fix_pH", -to_pH, 10, "NaOH")
else:
self.pp.equalize_solution(self.number, "Fix_pH", -to_pH, 10, with_chemical)
return self
def change_temperature(self, to_temperature):
- """ Change the temperature of a solution """
+ """Change the temperature of the solution.
+
+ Args:
+ to_temperature (float): Target temperature.
+
+ Returns:
+ (Solution): The altered solution.
+
+ Examples:
+ >>> sol.change_temperature(50.0)
+ """
self.pp.change_solution_temperature(self.number, to_temperature)
return self
-
+
def total(self, element, units='mmol'):
- """ Returns to total of any given species or element """
+ """Returns the amount of a species in the solution.
+
+ Args:
+ element (str): Chemical species.
+ units (str): Optional, unit of the amount.
+
+ Returns:
+ float: Amount of the species (mmol).
+
+ Examples:
+ >>> sol.total('Na+')
+ >>> sol.total('CO2')
+ >>> sol.total('HCO3-', 'mg')
+ """
amount = self.pp.ip.get_total_ion(self.number, element)
return convert_units(element, amount, to_units=units)
+ def total_element(self, element, units='mmol'):
+ """Returns the total amount of an element in the solution.
+
+ Args:
+ element (str): Element (atomic species).
+ units (str): Optional, unit of the amount.
+
+ Returns:
+ (float): Total amount of the element (mmol).
+
+ Examples:
+ >>> sol.total_element('C')
+ >>> sol.total_element('S', 'mg')
+ """
+ return convert_units(element, self.pp.ip.get_total_element(self.number, element), 'mol', units)
+
+ def activity(self, species, units='mmol'):
+ """Returns the activity of a species in the solution.
+
+ Args:
+ element (str): Chemical species.
+ units (str): Optional, unit of the activity.
+
+ Returns:
+ (float): Activity of the species (mmol/kgw).
+
+ Examples:
+ >>> sol.activity('Ca+2')
+ >>> sol.activity('NaSO4-', 'mg')
+
+ Warning:
+ this returns a concentration (/kgw), not a total amount.
+ Confusing with the units shown.
+ """
+ return convert_units(species, self.pp.ip.get_activity(self.number, species), 'mol', units)
+
def total_activity(self, element, units='mmol'):
- """ Returns to total of any given species or element (SLOW!) """
+ """Returns the total of the activities of all species of the element in the solution.
+
+ Args:
+ element (str): Element (atomic species).
+ units (str): Optional, unit of the activity.
+
+ Returns:
+ (float): Total activity of the element (mmol/kgw).
+
+ Examples:
+ >>> sol.activity('Ca')
+ >>> sol.activity('C', 'mg')
+
+ Warning:
+ Slow function!
+ """
total = 0
regexp = "(^|[^A-Z])"+element
for species, amount in self.species_activities.items():
@@ -123,42 +318,126 @@ def total_activity(self, element, units='mmol'):
total += convert_units(element, amount, to_units=units)
return total
- def total_element(self, element, units='mmol'):
- """ Returns to total any given element (FAST!) """
- return convert_units(element, self.pp.ip.get_total_element(self.number, element), 'mol', units)
-
- def activity(self, species, units='mmol'):
- """ Returns the activity of a single species """
- return convert_units(species, self.pp.ip.get_activity(self.number, species), 'mol', units)
-
def moles(self, species, units='mmol'):
- """ Returns the moles of a single species """
+ """Returns the amount of a species in the solution.
+
+ Args:
+ element (str): Chemical species.
+ units (str): Optional, unit of the amount.
+
+ Returns:
+ (float): Amount of the species (mmol).
+
+ Examples:
+ >>> sol.moles('Na+')
+ >>> sol.moles('HCO3-', 'mg')
+
+ Warning:
+ Confusing, says moles, but can also return in 'mg'.
+ Also, seems to always return the same value as sol.total().
+ Better to remove this method?
+ """
return convert_units(species, self.pp.ip.get_moles(self.number, species), 'mol', units)
def molality(self, species, units='mmol'):
- """ Returns the molality of a single species """
+ """Returns the molality of a species in the solution.
+
+ Args:
+ element (str): Chemical species.
+ units (str): Optional, unit of the amount.
+
+ Returns:
+ (float): Molality of the species (mmol/kgw).
+
+ Examples:
+ >>> sol.molality('Na+')
+ >>> sol.molality('HCO3-', 'mg')
+
+ Warning:
+ Confusing, units given in 'mmol'... , but returns 'mmol/kgw'?
+ Checked with {'-water': 2.0, ...} as solution: sol.total() and sol.moles() return 'mmol',
+ but sol.molality() returns ~half the value, so takes count of the total mass.
+ Should we show different units?
+ """
return convert_units(species, self.pp.ip.get_molality(self.number, species), 'mol', units)
def si(self, phase):
- """ return the SI of a certain phase """
+ """Returns the saturation index (SI) of a phase in the solution.
+
+ Args:
+ phase (str): Gas or solid phase.
+
+ Returns:
+ (float): The SI of the phase (-).
+
+ Examples:
+ >>> sol.si('Calcite')
+ >>> sol.si('CO2(g)')
+
+ Notes:
+ Solid phases: SI = log10(IAP / Ksp), with IAP the ion activity product and Ksp the solubility product constant.
+ Gases: SI = log10(p_gas), with p_gas the partial pressure.
+ """
return self.pp.ip.get_si(self.number, phase)
def sr(self, phase):
- """ return the SI of a certain phase """
+ """Returns the saturation ratio (SR) of a phase in the solution.
+
+ Args:
+ phase (str): Gas or solid phase.
+
+ Returns:
+ (float): The SR of the phase (-).
+
+ Examples:
+ >>> sol.sr('Calcite')
+ >>> sol.sr('CO2(g)')
+
+ Notes:
+ Solid phases: SR = IAP / Ksp, with IAP the ion activity product and Ksp the solubility product constant.
+ Gases: SR = p_gas, with p_gas the partial pressure.
+ """
return 10**self.pp.ip.get_si(self.number, phase)
def forget(self):
- """ remove this solution from VIPhreeqc memory """
+ """Remove this solution from the PhreeQC simulation.
+
+ Notes:
+ See also phreeqpython.add_solution() to add solutions to a PhreeQC simulation.
+ """
self.pp.remove_solutions([self.number])
def chain(self):
+ """CHECK
+
+ Warning:
+ This calls the PhreeQC 'USE SOLUTION' keyword, but not clear
+ when you would need to use this, not intuitive.
+ What are the use cases?
+ """
self.pp.start_chain(self.number)
def end(self):
- self.pp.end()
+ """CHECK
+ Warning:
+ Calls the keyword 'END' on the PhreeQC simulation?
+ Not better to only define that at the simulation side (pp)?
+ Its use for a solution is not clear.
+ """
+ self.pp.end()
def kinetics(self, element, rate_function, time, m0=0, args=(), units='mmol'):
+ """CHECK
+
+ Warning:
+ the kinetics examples show different ways of setting up kinetics (with and without this function).
+ Still experimental?
+ PhreeQC has the kinetics keyword, but would require to parse the rate function(s) into BASIC, hard...
+ but PhreeQC allows kinetics over the whole simulation (e.g. solution, gas, other phases)
+
+ Not better to move kinetics functionality to the simulation level (phreeqpython = pp)?
+ """
try:
from scipy.integrate import odeint
except ImportError as exc:
@@ -184,32 +463,63 @@ def calc_rate(y, t, m0, *args):
yield(t, self)
# Magic functions
+ def __str__(self):
+ """Returns solution and number.
+
+ Returns:
+ (str): A string like:
+ """
+ return f""
+
def __add__(self, other):
- """ add two solutions """
- if not isinstance(other,Solution):
+ """Add two solutions.
+
+ Warning:
+ Remark for creating these:
+ >>> sol3 = sol1 * 0.2 + sol2 * 0.8
+ >>> sol3 = sol1 * 0.2
+ >>> sol3 = sol1 / 4.0
+
+ currently, sol.factor is used to track the coefficient in making these mixtures.
+
+ But doing this:
+ sol3 = sol1*2
+ does not increase sol3.mass, it only sets sol3.factor, which is not what the user wants.
+
+ Also:
+ sol3 = sol1*1 + sol1*2
+ gives: sol3.mass = 2, not 3, because the second term sets sol1.factor = 2, and then the addition is evaluated
+
+ Wouldn't it be easier and more intuitive to do as follows?:
+ sol1*2 calls:
+ def __mul__(self, factor):
+ mixture = self.pp.mix_solutions({self: factor})
+ return mixture
+
+ No need anymore to track the factors, and the resulting solutions always reflect the proper amount.
+ sol3 = sol1 * 0.2 + sol2 * 0.8
+ will then call mix_solutions 3 times, small price to pay?
+ """
+ if not isinstance(other, Solution):
raise TypeError("Invalid operation, only addition of two solutions is allowed")
- mixture= {self:self.factor, other:other.factor}
- #print mixture
- mixture = self.pp.mix_solutions({self:self.factor,other:other.factor})
- # reset factors to 1
+ mixture = self.pp.mix_solutions({self:self.factor, other:other.factor})
self.factor = 1
other.factor = 1
-
return mixture
def __truediv__(self, other):
- """ Python 3 support """
+ """Python 3 support."""
return self.__div__(other)
def __div__(self, other):
- """ set devision factor """
- if not isinstance(other,numbers.Real):
+ """Set devision factor."""
+ if not isinstance(other, numbers.Real):
raise TypeError("Invalid operation, only division by a number is allowed")
self.factor = 1/float(other)
return self
def __mul__(self, other):
- """ set multiplication factor """
+ """Set multiplication factor."""
if not isinstance(other,numbers.Real):
raise TypeError("Invalid operation, only division by a number is allowed")
self.factor = float(other)
@@ -218,56 +528,228 @@ def __mul__(self, other):
# Accessor methods
@property
def I(self):
- """ Solution ionic strength """
+ """Returns the ionic strength of the solution.
+
+ Returns:
+ (float): The ionic strength (mol/L).
+ """
return self.pp.ip.get_mu(self.number)
+
+ @property
def mu(self):
- """ Solution ionic strength """
+ """Returns the ionic strength of the solution.
+
+ Returns:
+ (float): The ionic strength (mol/L).
+
+ """
return self.I
+
@property
def pH(self):
- """ Solution pH """
+ """Returns the pH of the solution.
+
+ Returns:
+ (float): The pH (-).
+ """
return self.pp.ip.get_ph(self.number)
+
@property
def sc(self):
+ """Returns the specific conductance of the solution.
+
+ Returns:
+ (float): The specific conductance (µS/cm).
+
+ Notes:
+ Specific conductance calculated at temperature of the solution.
+ """
return self.pp.ip.get_sc(self.number)
+
@property
def temperature(self):
+ """Returns the temperature of the solution.
+
+ Returns:
+ (float): The temperature (°C).
+ """
return self.pp.ip.get_temperature(self.number)
+
@property
def mass(self):
+ """Returns the mass of water in the solution.
+
+ Returns:
+ (float): The mass of water (kg).
+
+ Warning:
+ not very intuitive, one would expect this to return the solution mass, not the water part.
+ I did a few checks with high salt concentrations:
+ sol.volume * sol.density always accurately returns the solution mass.
+
+ Proposal:
+ sol.mass = sol.volume * sol.density
+ sol.mass_water = the water mass
+ """
return self.pp.ip.get_mass(self.number)
+
@property
def volume(self):
+ """Returns the volume of the solution.
+
+ Returns:
+ (float): The volume (L).
+ """
return self.pp.ip.get_volume(self.number)
+
@property
def density(self):
+ """Returns the density of the solution.
+
+ Returns:
+ (float): The density (kg/L).
+
+ (kg/L)."""
return self.pp.ip.get_density(self.number)
+
@property
def pe(self):
+ """REturns the electron activity of the solution.
+
+ Returns:
+ (float): The electron activity (-).
+
+ Notes:
+ pe = -log({e-}), with {e-} the electron activity.
+ pe < 0: high electron activity, reducing environment.
+ pe > 0: low electron activity, oxidizing environment.
+ """
return self.pp.ip.get_pe(self.number)
+
@property
def phases(self):
+ """Returns all phases in the solution and their saturation index (SI).
+
+ Returns:
+ (dict): With phase (str) and SI (float) pairs.
+
+ Example:
+ >>> sol.phases
+ { 'Calcite': 0.155,
+ 'CO2(g)': -0.341,
+ ...
+ }
+
+ Notes:
+ SI = log10(AIP / Ksp)
+ """
return self.pp.ip.get_phases_si(self.number)
+
@property
def elements(self):
+ """Returns all elements in the solution and their amount.
+
+ Returns:
+ (dict): With phase (str) and amount (float) pairs, amount in mol.
+
+ Examples:
+ >>> sol.elements
+ { 'C(4)': 0.50,
+ 'Ca': 0.20,
+ ...
+ }
+ """
return self.pp.ip.get_elements_totals(self.number)
+
@property
def species(self, units='mmol'):
+ """Returns all species in the solution and their amount.
+
+ Returns:
+ (dict): With species (str) and amount (float) pairs, amount in mmol.
+
+ Examples:
+ >>> sol.species
+ { 'Ca+2': 0.0036,
+ 'CO3-2': 2.18e-05,
+ ...
+ }
+
+ Warning:
+ units not used, and probably not accessible via a property?
+ amount is in mol, not mol/L or mol/kgw, can be confusing when sol.mass <> 1.0 kg,
+ better return a concentration (mol/kgw or mol/kgs)?
+ """
return self.pp.ip.get_species_moles(self.number)
+
@property
def species_moles(self, units='mmol'):
+ """Returns all species in the solution and their amount.
+
+ Returns:
+ (dict): With species (str) and amount (float) pairs, amount in mol.
+
+ Warning:
+ calls same function, no difference with property species?
+ better drop this one?
+ """
return self.pp.ip.get_species_moles(self.number)
+
@property
def species_molalities(self, units='mmol'):
+ """Returns all species in the solution and their concentration.
+
+ Returns:
+ (dict): With species (str) and concentration (float) pairs, concentration in mol/kgw.
+
+ Examples:
+ >>> sol.species_molalities
+ { 'Ca+2': 0.045,
+ 'CO3-2': 3.18e-05,
+ ...
+ }
+
+ Warning:
+ units not used.
+ this property returns a concentration (mol/kgw), while sol.species returns
+ absolute amount (mol). Not very intuitive.
+ Maybe we could define the default units on the simulation level (phreeqpython = pp)?
+ And have an accessible function to convert if needed (pp.units(...))?
+ """
return self.pp.ip.get_species_molalities(self.number)
+
@property
def species_activities(self, units='mmol'):
+ """Returns all species in the solution and their activities.
+
+ Returns:
+ (dict): With species (str) and activity (float) pairs, activity in mol/kgw.
+
+ Examples:
+ >>> sol.species_activities
+ { 'Ca+2': 0.045,
+ 'CO3-2': 3.18e-05,
+ ...
+ }
+ """
return self.pp.ip.get_species_activities(self.number)
+
@property
def masters_species(self):
- """ Returns a Phreeqc output like species table """
+ """Returns all master species in the solution and their species.
+
+ Returns:
+ (dict): with master_species (str) and species (lst[str]) pairs.
+
+ Examples:
+ >>> sol.masters_species
+ { 'C(4)': ['CO2', 'CO3-2', 'CaCO3', 'HCO3-'],
+ 'Ca': ['Ca+2', 'CaCO3', 'CaHCO3+', 'CaOH+'],
+ 'Cl': ['Cl-'],
+ ...
+ }
+
+ Warning:
+ shouldn't this be: master_species ?
+ """
return self.pp.ip.get_masters_species(self.number)
-
- # pretty printing
- def __str__(self):
- return f""
diff --git a/test.md b/test.md
deleted file mode 100644
index e69de29..0000000
diff --git a/uv.lock b/uv.lock
new file mode 100644
index 0000000..7518fc9
--- /dev/null
+++ b/uv.lock
@@ -0,0 +1,3 @@
+version = 1
+revision = 3
+requires-python = ">=3.12"
diff --git a/zensical.toml b/zensical.toml
new file mode 100644
index 0000000..469ab5a
--- /dev/null
+++ b/zensical.toml
@@ -0,0 +1,178 @@
+[project]
+site_url = "https://geertd.github.io/phreeqpython/"
+site_name = "PhreeqPython Docs"
+site_description = "Documentation for PhreeqPython"
+site_author = "Vitens"
+
+copyright = "Copyright 2026 Vitens"
+repo_url = "https://github.com/Vitens/phreeqpython"
+# repo_name = "user/repo"
+# edit_uri = "edit/main/docs/"
+
+nav = [
+ { "Documentation" = [
+ { "Introduction" = [
+ { "About PhreeqPython" = "index.md" },
+ { "How it works" = "introduction/how-it-works.md" },
+ { "Supported features" = "introduction/supported-features.md" },
+ ] },
+ { "Getting started" = [
+ { "Installation" = "getting-started/installation.md" },
+ { "Running an analysis" = "getting-started/running-an-analysis.md" },
+ ] },
+ { "Guide" = [
+ { "Solutions" = "guide/solutions.md" },
+ ] },
+ ] },
+ { "Examples" = [
+ { "Overview" = "examples/index.md" },
+ { "General" = [
+ { "Functionality overview" = "examples/functionality-overview.md" },
+ { "Carbonic acid equilibrium" = "examples/carbonic-acid.md" },
+ ] },
+ { "Equilibrium" = [
+ { "Ca–F and fluorite" = "examples/ca-f-fluorite.md" },
+ { "Calcite dissolution" = "examples/calcite-dissolution.md" },
+ { "Gibbsite solubility" = "examples/gibbsite-solubility.md" },
+ { "Aluminium drinking-water limit" = "examples/aluminium-limit.md" },
+ { "Gypsum on evaporation" = "examples/gypsum-evaporation.md" },
+ ] },
+ { "Kinetics" = [
+ { "Quartz dissolution" = "examples/quartz-kinetics.md" },
+ { "Monod kinetics" = "examples/monod-kinetics.md" },
+ ] },
+ { "Gas" = [
+ { "Solubilities" = "examples/gas-solubilities.md" },
+ { "Gas-phase calculations" = "examples/gas-phase.md" },
+ ] },
+ ] },
+ { "API Reference" = [
+ { "Overview" = "reference/index.md" },
+ { "PhreeqPython" = "reference/phreeqpython.md" },
+ { "Solution" = "reference/solution.md" },
+ { "Gas" = "reference/gas.md" },
+ { "EquilibriumPhase" = "reference/equilibriumphase.md" },
+ { "VIPhreeqc" = "reference/viphreeqc.md" },
+ ] },
+]
+
+extra_css = ["stylesheets/extra.css"]
+extra_javascript = ["javascripts/pyodide-helpers.js"]
+
+[project.theme]
+# variant = "classic"
+# custom_dir = "overrides"
+# favicon = "images/favicon.png"
+language = "en"
+features = [
+ "announce.dismiss",
+ # "content.action.edit",
+ # "content.action.view",
+ "content.code.annotate",
+ "content.code.copy",
+ "content.code.select",
+ "content.footnote.tooltips",
+ "content.tabs.link",
+ "content.tooltips",
+ # "header.autohide",
+ # "navigation.expand",
+ "navigation.footer",
+ # "navigation.indexes",
+ "navigation.instant",
+ "navigation.instant.prefetch",
+ # "navigation.instant.progress",
+ "navigation.path",
+ # "navigation.prune",
+ "navigation.sections",
+ "navigation.tabs",
+ "navigation.tabs.sticky",
+ "navigation.top",
+ "navigation.tracking",
+ # "search.highlight",
+ "toc.follow",
+ # "toc.integrate",
+]
+
+# logo = "resources/logo.png"
+
+# [project.theme.icon]
+# logo = "lucide/smile"
+
+# [project.theme.font]
+# text = "Inter"
+# code = "Jetbrains Mono"
+
+# [[project.theme.palette]]
+# media = "(prefers-color-scheme)"
+# toggle.icon = "lucide/sun-moon"
+# toggle.name = "Switch to light mode"
+
+[[project.theme.palette]]
+media = "(prefers-color-scheme: light)"
+scheme = "default"
+toggle.icon = "lucide/sun"
+toggle.name = "Switch to dark mode"
+
+[[project.theme.palette]]
+media = "(prefers-color-scheme: dark)"
+scheme = "slate"
+toggle.icon = "lucide/moon"
+toggle.name = "Switch to light mode"
+
+# [[project.extra.social]]
+# icon = "fontawesome/brands/github"
+# link = "https://github.com/user/repo"
+
+# [[project.extra.social]]
+# icon = "fontawesome/brands/mastodon"
+# link = "https://fosstodon.org/@user"
+
+[project.markdown_extensions]
+abbr = {}
+admonition = {}
+attr_list = {}
+def_list = {}
+footnotes = {}
+md_in_html = {}
+toc.permalink = true
+# toc.toc_depth = 6
+pymdownx.arithmatex.generic = true
+pymdownx.betterem = {}
+pymdownx.caret = {}
+pymdownx.details = {}
+pymdownx.emoji.emoji_generator = "zensical.extensions.emoji.to_svg"
+pymdownx.emoji.emoji_index = "zensical.extensions.emoji.twemoji"
+pymdownx.highlight.anchor_linenums = true
+pymdownx.highlight.line_spans = "__span"
+pymdownx.highlight.pygments_lang_class = true
+pymdownx.inlinehilite = {}
+pymdownx.keys = {}
+pymdownx.magiclink = {}
+pymdownx.mark = {}
+pymdownx.smartsymbols = {}
+# pymdownx.snippets.base_path = "includes"
+pymdownx.superfences.custom_fences = [
+ { name = "mermaid", class = "mermaid", format = "pymdownx.superfences.fence_code_format" },
+]
+pymdownx.tabbed.alternate_style = true
+pymdownx.tabbed.combine_header_slug = true
+pymdownx.tasklist.custom_checkbox = true
+pymdownx.tilde = {}
+
+[project.plugins.mkdocstrings.handlers.python]
+paths = ["phreeqpython"]
+options.docstring_style = "google" # or numpy
+options.docstring_section_style = "list" # table, list or spacy
+options.show_source = false
+options.show_if_no_docstring = true # show member anyway
+options.show_docstring_functions = true # show module/class Functions: or Methods: section in docstring
+options.members_order = "alphabetical" # __all__/alphabetical/source
+options.filters = "public" # public or other filters
+options.group_by_category = true # categories: attributes, methods, ...
+options.show_category_heading = true
+options.summary = true # summary of classes, ...
+options.show_root_heading = true # show full path of root object
+options.heading_level = 1 # start level for headings
+options.show_symbol_type_heading = true # show attribute, method, ... before member
+
+[project.plugins.markdown-exec]
\ No newline at end of file