Skip to main content

PyThermoCalcDB

PyPI Downloads PyPI Python Version License Download on the App Store

PyThermoCalcDB — Python Thermodynamic Calculation Engine powered by PyThermoDB

PyThermoCalcDB is a companion package to PyThermoDB, designed to provide a robust set of thermodynamic calculations, utilities, and workflows — using thermodynamic properties, constants, and equations built with PyThermoDB.

Calculations can also be done on your mobile with the MoziThermoCalc iOS app: Download on the App Store.

🚀 Why PyThermoCalcDB?

  • Seamless integration with PyThermoDB: use the database of thermodynamic data (pure component properties, correlations, etc.) as the foundation.
  • Reusable calculation tools: functions for various calculations.
  • Consistent with your thermodynamic ecosystem: fits with existing packages like PyThermoModels, PyPhaseEQ, PyThermoFlash — offering a central “calculation engine” layer.
  • Minimal dependencies: lean design, using PyThermoDB as core data source; optionally depend on well-known numerical libraries (e.g. NumPy, SciPy) if needed for complex calculations.
  • Flexible use-cases: from quick property lookups to advanced process calculations, or integration in larger workflows or multi-agent systems.

📦 Installation

pip install pythermocalcdb

🚀 Usage

PyThermoCalcDB provides high-level thermodynamic routines built on PyThermoDB. It is optimized for scripts, notebooks, and pipelines ? the examples/ directory contains runnable workflows.

1) Build a ModelSource

  • Collect ThermoDB pickle paths for your components and load them with pyThermoLinkDB.load_and_build_model_source.
import os
import pyThermoLinkDB as ptdblink
from pythermodb_settings.models import Component, ComponentRule, ComponentThermoDBSource, Temperature, Pressure

CO2 = Component(name="carbon dioxide", formula="CO2", state="g")
thermodb_dir = "/path/to/thermodb"
CO2_src = ComponentThermoDBSource(
    component=CO2,
    source=os.path.join(thermodb_dir, "carbon dioxide-g.pkl"),
)

model_source = ptdblink.load_and_build_model_source(
    thermodb_sources=[CO2_src],
    original_equation_label=False
)

2) Call helper modules

  • Thermodynamic properties (pythermocalcdb.docs.thermo): calc_En, calc_GiFrEn, calc_En_range, calc_GiFrEn_range, calc_dEn (Delta H between temperatures), calc_dEnt (Delta S with pressures and phase), calc_En_mix (mixture enthalpy with optional departure/excess terms and output_unit).
  • Saturation & phase change (pythermocalcdb.docs.sat): calc_VaPr, calc_VaPr_range, calc_EnVap, calc_EnVap_range, calc_T_sat, calc_VaPr_sensitivity, calc_VaPr_sensitivity_range.
  • Reactions (pythermocalcdb.reactions.reactions): dEn_rxn_STD and dGiFrEn_rxn_STD for standard reaction energetics.

Example:

from pythermocalcdb.docs import thermo, sat
from pythermodb_settings.models import Temperature, Pressure

T = Temperature(value=300.0, unit="K")
P = Pressure(value=1.5e6, unit="Pa")

enthalpy = thermo.calc_En(component=CO2, model_source=model_source, temperature=T)
gibbs = thermo.calc_GiFrEn(component=CO2, model_source=model_source, temperature=T, phase="IG")
VaPr = sat.calc_VaPr(component=CO2, model_source=model_source, temperature=T)
Tsat = sat.calc_T_sat(
    component=CO2,
    model_source=model_source,
    pressure=P,
    temperature_guess=T,
    method="least_squares",
)

Notes:

  • All helpers expect typed Component, Temperature, and Pressure inputs plus a model_source from PyThermoLinkDB.
  • The optional mode kwarg accepts silent, log, or attach to control logging and timing.

🤝 Contributing

Contributions are highly welcome — bug fixes, new calculation routines, mixture models, extended unit tests, documentation, etc.

📝 License

This project is distributed under the Apache License, Version 2.0, which grants you broad freedom to use, modify, and integrate the software into your own applications or projects, provided that you comply with the conditions outlined in the license. Although Apache 2.0 does not require users to retain explicit author credit beyond standard copyright and license notices, I kindly request that if you incorporate this work into your own software, you acknowledge Sina Gilassi as the original author. Referencing the original repository or documentation is appreciated, as it helps recognize the effort invested in developing and maintaining this project.

❓ FAQ

For any question, contact me on LinkedIn

👨‍💻 Authors

Download files

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

Source Distribution

pythermocalcdb-0.12.1.tar.gz (69.0 kB view details)

Uploaded Source

Built Distribution

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

pythermocalcdb-0.12.1-py3-none-any.whl (84.7 kB view details)

Uploaded Python 3

File details

Details for the file pythermocalcdb-0.12.1.tar.gz.

File metadata

  • Download URL: pythermocalcdb-0.12.1.tar.gz
  • Upload date:
  • Size: 69.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.3

File hashes

Hashes for pythermocalcdb-0.12.1.tar.gz
Algorithm Hash digest
SHA256 4ac907c19488155d3679b4354eb9ce4537adc33d03332e0a4cf27601cd56f5ee
MD5 b72f48d7f3fb1773d1d7553e45f5d84a
BLAKE2b-256 d8dd3deae7d94b1a4fd9f17245237b64ec0757fa352e4f01c1af536d6f5d9dad

See more details on using hashes here.

File details

Details for the file pythermocalcdb-0.12.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pythermocalcdb-0.12.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b148fe5f30c8994783e0a69b97665ee0f5acc60487f2bcf0906aa0fdb918d188
MD5 ad268945197d3c74b4e504af0fa3b891
BLAKE2b-256 e47a8596e251cf98f3749ceff8b052b2fda1b70c1812a34fda2f3dbe25ab785d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.12.1 This release

2 files

0.12.0

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

0.8.0

2 files

0.7.11

2 files

0.7.10

2 files

0.7.9

2 files

0.7.8

2 files

0.7.7

2 files

0.7.6

2 files

0.7.5

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page