Skip to main content

OpenPinch

CI Develop Documentation Status PyPI version Python versions License: MIT

OpenPinch is an open-source Python toolkit for advanced Pinch Analysis and Total Site Integration. It supports direct and indirect heat integration targeting, graph interpretation, Heat Pump and refrigeration screening, exergy and cogeneration post-processing, heat exchanger network synthesis, multi-period analysis, stream piece-wise linearisation (for variable heat capacity and phase change streams), and file-backed or schema-first workflows.

Full documentation is available at https://openpinch.readthedocs.io/en/latest/.

Install

Install the base package for validation, targeting, summaries, and schema-first Python workflows:

python -m pip install openpinch

Install optional extras only for the workflows that need them:

python -m pip install "openpinch[notebook]"      # Jupyter, Plotly graphs, Excel I/O
python -m pip install "openpinch[dashboard]"     # Streamlit dashboard
python -m pip install "openpinch[synthesis]"     # HEN synthesis, then run: idaes get-extensions
python -m pip install "openpinch[brayton_cycle]" # TESPy-backed Brayton-cycle tooling
python -m pip install "openpinch[full]"          # all optional surfaces, including synthesis

OpenPinch currently requires Python >=3.14.2.

Both synthesis and full install the IDAES/Pyomo synthesis stack. Complete the IDAES installation before running solver-backed workflows:

idaes get-extensions

First Solve

OpenPinch exposes two package-root workflow classes. Use PinchProblem for one case and PinchWorkspace for named cases and scenarios.

from OpenPinch import PinchProblem

problem = PinchProblem(
    {
        "streams": [
            {
                "name": "Hot feed",
                "zone": "Process",
                "t_supply": 180.0,
                "t_target": 80.0,
                "heat_flow": 1000.0,
            },
            {
                "name": "Cold feed",
                "zone": "Process",
                "t_supply": 20.0,
                "t_target": 120.0,
                "heat_flow": 800.0,
            },
        ],
        "utilities": [],
    },
    project_name="First solve",
)
problem.validate()
problem.target.all_heat_integration()

print(problem.summary_frame())

Analysis is explicit: named methods execute work, while summaries, reports, plots, and exports consume prepared or cached state.

Packaged Resources

OpenPinch ships maintained sample cases and notebook workflows. The resource helpers below are useful repository tooling, but are not compatibility protected:

from OpenPinch.resources import (
    list_notebooks,
    list_sample_cases,
    notebook_metadata,
    sample_case_metadata,
)

print(list_sample_cases())
print(sample_case_metadata("basic_pinch.json").description)
print(list_notebooks())
print(notebook_metadata("01_first_solve_and_core_curves.ipynb").title)

Copy the notebook series from the CLI:

openpinch notebook -o notebooks

The eighteen-notebook series progresses from first solve through multiperiod HPR, cogeneration, HEN synthesis, and publication workflows.

The CLI intentionally copies notebooks only. Solves, validation, graph export, Excel export, dashboards, and advanced targeting happen through Python.

Documentation Map

Testing

Run the test suite locally:

python -m pip install -e .
python -m pip install --group dev
ruff check .
coverage run --branch --source=OpenPinch -m pytest --hypothesis-seed=20260715 -m "not solver"
coverage report --fail-under=95
python scripts/build_docs.py
python scripts/build_dist.py

Ubuntu runs the complete CI suite. Windows and macOS install the generated wheel and verify the core import, CLI, and packaged resources. Tests marked solver require external solver binaries and remain a manual pre-release check in a solver-enabled environment: pytest -m solver.

Release Process

  1. Merge a change only after the required CI checks pass.
  2. Confirm pyproject.toml and uv.lock contain the intended release version.
  3. Run the solver-marked tests in a solver-enabled environment.
  4. Create a signed or annotated vX.Y.Z tag at the intended commit and push it.
  5. Approve the protected pypi environment after TestPyPI publication succeeds.

The publish workflow rejects malformed tags and tags that do not exactly match the project version. Pull-request automation updates versions with --no-tag; maintainers always create release tags explicitly.

Build the documentation locally:

uv run scripts/build_docs.py

History and Citation

OpenPinch started in 2011 as an Excel workbook with macros. The Python implementation began in 2021 to make the workflows scriptable and testable.

In publications and forks, please cite and link the foundational article and this repository:

Timothy Gordon Walmsley, 2026. OpenPinch: An Open-Source Python Library for Advanced Pinch Analysis and Total Site Integration. Process Integration and Optimization for Sustainability. https://doi.org/10.1007/s41660-026-00729-6

Contributors

Founder: Tim Walmsley, University of Waikato

Stephen Burroughs, Benjamin Lincoln, Alex Geary, Harrison Whiting, Khang Tran, Roger Padulles, Jasper Walden, Caleb Archer

License

OpenPinch is released under the MIT License. See LICENSE for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openpinch-0.5.4.tar.gz (411.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openpinch-0.5.4-py3-none-any.whl (579.9 kB view details)

Uploaded Python 3

File details

Details for the file openpinch-0.5.4.tar.gz.

File metadata

  • Download URL: openpinch-0.5.4.tar.gz
  • Upload date:
  • Size: 411.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openpinch-0.5.4.tar.gz
Algorithm Hash digest
SHA256 2774501c67c320512085e5e27f9eb47e5ddfb995e6dee30b9070f16d8ca99e5f
MD5 9dc48f23f3dba6cabf8468a18450680d
BLAKE2b-256 cacbc81d3fd74f56b6f95a02b068aaa32959363b70ead54bdec6684c29c2476a

See more details on using hashes here.

Provenance

The following attestation bundles were made for openpinch-0.5.4.tar.gz:

Publisher: ci-publish.yml on waikato-ahuora-smart-energy-systems/OpenPinch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openpinch-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: openpinch-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 579.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openpinch-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e12d3270b2591361ffc95749af854f83be827e7dc8a1c626092ee83049e2fbc7
MD5 6b5910b1f701d0a3940fae08155a842e
BLAKE2b-256 5fd6754a0e624fed2fbbd0cf1723b98cbc8b7c184b8ad0b1fe5bf533612ce815

See more details on using hashes here.

Provenance

The following attestation bundles were made for openpinch-0.5.4-py3-none-any.whl:

Publisher: ci-publish.yml on waikato-ahuora-smart-energy-systems/OpenPinch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.0

2 files

This release

0.5.4 This release

2 files

0.4.5

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.2.9

2 files

0.2.8

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.28

2 files

0.1.27

2 files

0.1.26

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.28

2 files

0.0.27

2 files

0.0.26

2 files

0.0.25

2 files

0.0.24

2 files

0.0.23

2 files

0.0.22

2 files

0.0.21

2 files

0.0.20

2 files

0.0.19

2 files

0.0.18

2 files

0.0.17

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page