Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

PyTES

PyTES

Tests PyPI Coverage DOI

PyTES (Python Thermal Energy Storage) is a library of models and tools for thermal energy storage (also known as heat batteries), built on PyBaMM. What PyBaMM is to electrochemical batteries, PyTES aims to be to thermal energy storage: a set of validated models that share one interface, so that designs compare like for like.

PyTES covers storage in which a heat transfer fluid flows through or around a separate storage medium, such as a phase-change material (PCM) or a sensible solid. Every model is an ordinary PyBaMM model, so PyBaMM's simulations, solvers and plots work on it directly.

Alpha. The model contract may still change; every change is logged in docs/design/findings.md.

📦 Installation

pip install --pre pytes-thermal            # models and toolkit
pip install --pre "pytes-thermal[plot]"    # plus the standard plots (matplotlib)

The package is pytes-thermal on PyPI and is imported as pytes. --pre is needed while PyTES only has alpha releases.

PyTES supports every Python version PyBaMM supports (3.10 to 3.15).

🚀 Quick start

import pybamm
import pytes

model = pytes.PackedBedModel()  # or pytes.SharpFrontModel(), pytes.MushModel()
solution = pybamm.Simulation(model).solve([0, 3600])
print(solution["Outlet temperature [degC]"].entries[-1])

🔥 Models

Family Models Storage
Finned tube SharpFrontModel, MushModel PCM around tubes with metal fins (homogenised or resolved)
Packed bed PackedBedModel a bed of spherical PCM capsules

Every model takes options={"storage": "averaged"} for a faster variant with one storage cross-section standing for the average along the flow. All models share their outputs (power, energies, inlet and outlet temperatures, all in SI units with °C, kW and kWh twins), their experiments, and an exact energy balance, checked by a common conformance suite.

🧰 Toolkit

  • Experiments (pytes.experiments): constant inputs or constant power, with terminations and cycles.
  • Post-processing (pytes.energy_between) and standard plots (pytes.plotting).
  • Materials and fluids, analytical benchmarks (pytes.validation) and the conformance checks (pytes.conformance), importable for your own PyBaMM models.
  • Composition (pytes.ComposedModel): build a model from PyTES submodels, e.g. to try a new heat transfer law.

📓 Examples

Notebooks in examples/: the finned-tube and packed-bed models, experiments, composing models, analytical validation, and a design study comparing the two families.

📐 Design

The design decisions, the model contract and the log of changes are in docs/design/.

📖 Citing PyTES

If you use PyTES in your work, please cite it: the metadata are in CITATION.cff, and GitHub's "Cite this repository" button gives the reference in BibTeX or APA. Each release is archived on Zenodo with its own DOI; 10.5281/zenodo.23438443 cites all versions and resolves to the latest.

🤝 Contributing

Contributions are welcome: see CONTRIBUTING.md for the workflow, the conventions and how to add a model.

⚖️ Licence

BSD 3-Clause, see LICENSE.

Metadata

Release files for pytes-thermal 0.1.0a2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytes-thermal 0.1.0a2
File Size Uploaded Provenance Actions
pytes_thermal-0.1.0a2.tar.gz 511.7 kB With provenance Details for pytes_thermal-0.1.0a2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pytes-thermal 0.1.0a2
File Interpreter ABI Platform Actions
pytes_thermal-0.1.0a2-py3-none-any.whl Python 3 none any Details for pytes_thermal-0.1.0a2-py3-none-any.whl

Total release size: 592.0 kB

Release files / pytes_thermal-0.1.0a2.tar.gz

Download URL pytes_thermal-0.1.0a2.tar.gz
Size 511.7 kB
Tags Source
SHA-256 checksum
How to use checksums
bff6f74cc001c90d395014b622032bfe5297b4bc82f12f87ba13f66c475b1af5
BLAKE2b-256 checksum
How to use checksums
d525d18d4ccf26e902dcf9f8edad170d13eee95bc8931b7aec9519bb5100f634
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pytes_thermal-0.1.0a2-py3-none-any.whl

Download URL pytes_thermal-0.1.0a2-py3-none-any.whl
Size 80.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
052b346ec6033cae0d461c8b063262fdf15ad3acf52e54997aa7cebcd51ac55a
BLAKE2b-256 checksum
How to use checksums
7fa6909abbf775f311f126f48ce2c05ea16bec66b47ac5f7acf7e4785f340a26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for pytes-thermal 0.1.0a2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pytes_thermal-0.1.0a2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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