Published August 22, 2026 | Version v1.6.5

pyEQL: A python library for water chemistry

Authors/Creators

  • 1. Princeton University

Description

[1.6.5] - 2026-08-21

Changed

  • get_el_amt_dict and get_components_by_element now look up each solute's oxi_state_guesses once per species instead of redundantly re-fetching it on every element of that species. Output is unchanged; the two methods run roughly 8% and 11% faster, respectively, on a 47-species seawater solution. (@rkingsbury)
  • CHANGED BEHAVIOR Solution.__mul__ / Solution.__truediv__: scalar sol * factor and sol / factor no longer mutate the original Solution and return an alias of it. They now return a new, independently scaled Solution, leaving the original unchanged (consistent with Python numeric-type semantics). In-place *= / /= retain their documented mutate-in-place behavior (now via explicit __imul__ / __itruediv__), and factor * sol is now supported via __rmul__. (#461, @youdie006)

Fixed

  • Solution.alkalinity is now invariant to how the equilibrium engine speciates the solution. The conservative-ion contributions are computed from the total analytical concentration of each constituent (via get_total_amount) rather than from free-ion concentrations. Previously, engines such as PHREEQC that form ion pairs (e.g. NaSO4[-1], MgSO4(aq), CaSO4(aq)) would reduce the free SO4[-2] concentration during equilibrate(), spuriously inflating the alkalinity of seawater from ~117 to ~753 mg/L as CaCO3. Credit to @jjstickel for reporting. (#458, @rkingsbury)
  • .gitignore now correctly excludes ipynb_checkpoint files. (@rkingsbury; @jjstickel)

Files

KingsburyLab/pyEQL-v1.6.5.zip

Files (14.5 MB)

Name Size Download all
md5:553593e184b2565cc2a97258bb0df780
14.5 MB Preview Download

Additional details

Related works