A NASA-polynomial thermochemistry engine for reaction and equilibrium calculations.
Project description
🚀 PyThermoCalcDB-NASA
NASA-polynomial thermochemistry for species, reactions, and equilibrium calculations.
🧭 Overview
PyThermoCalcDB-NASA is a scientific Python library for evaluating NASA-7 and NASA-9 polynomial thermochemistry for ideal-gas species and reactions. It focuses on reference-state consistency while staying decoupled from how data is stored or sourced.
Calculations can also be done on your mobile with the MoziThermoCalc iOS app: Download on the App Store.
✨ Key Features
- NASA-7 and NASA-9 support with automatic temperature-break selection
- Species properties:
Cp(T),H^0(T),S^0(T),G^0(T)on molar or mass basis - Reaction properties:
Delta H^0(T),Delta S^0(T),Delta G^0(T)plus equilibrium constantsK(T) - Van't Hoff shortcut helper (
Keq_vh_shortcut) usingDelta H^0(298 K) - The same thermochemistry calculations can be done on mobile via the MoziThermoCalc app
- Clean separation of data (PyThermoDB/LinkDB) from the calculation engine
- Returns
CustomPropobjects with units and metadata; optional timing logs viamode
📦 Installation
pip install pythermocalcdb-nasa
Examples rely on helper packages and the ThermoDB pickles shipped under examples/thermodb:
pip install pythermodb-settings pythermodb pythermolinkdb pyreactlab-core rich
⚡ Quick start
Build a ModelSource from the packaged NASA pickles and evaluate properties:
from pythermodb_settings.models import Component, ComponentThermoDBSource, Temperature
from pyThermoLinkDB import load_and_build_model_source
from pyreactlab_core.models.reaction import Reaction
from pythermocalcdb_nasa import Cp_T, Keq
CO2 = Component(name="carbon dioxide", formula="CO2", state="g")
CO = Component(name="carbon monoxide", formula="CO", state="g")
H2O = Component(name="dihydrogen monoxide", formula="H2O", state="g")
H2 = Component(name="dihydrogen", formula="H2", state="g")
CH4 = Component(name="methane", formula="CH4", state="g")
thermodb_sources = [
ComponentThermoDBSource(component=CO2, source="examples/thermodb/carbon dioxide-CO2-g-nasa-1.pkl"),
ComponentThermoDBSource(component=CO, source="examples/thermodb/carbon monoxide-CO-g-nasa-1.pkl"),
ComponentThermoDBSource(component=H2O, source="examples/thermodb/dihydrogen monoxide-H2O-g-nasa-1.pkl"),
ComponentThermoDBSource(component=H2, source="examples/thermodb/dihydrogen-H2-g-nasa-1.pkl"),
ComponentThermoDBSource(component=CH4, source="examples/thermodb/methane-CH4-g-nasa-1.pkl"),
]
model_source = load_and_build_model_source(
thermodb_sources=thermodb_sources,
original_equation_label=False, # normalize NASA labels
)
# Species property
Cp = Cp_T(
component=CH4,
temperature=Temperature(value=600.0, unit="K"),
model_source=model_source,
mode="log", # optional timing log
)
print(Cp)
# Reaction equilibrium
reaction = Reaction(
name="Water-Gas Shift",
reaction="CO(g) + H2O(g) => CO2(g) + H2(g)",
components=[CO, H2O, CO2, H2],
)
Keq_T = Keq(
reaction=reaction,
temperature=Temperature(value=1000.0, unit="K"),
model_source=model_source,
)
print(Keq_T)
🧰 Helper functions
Available helpers (all return CustomProp or None):
H_T,S_T,G_T,Cp_T- species properties on molar or mass basisdH_rxn_STD,dS_rxn_STD,dG_rxn_STD- reaction properties from stoichiometryKeq,Keq_vh_shortcut- equilibrium constants fromDelta G^0(T)or Van't Hoff
📚 Examples
Run from the project root, e.g. python examples/exp-2.py:
examples/exp-1.py- buildModelSourceobjects and inspect NASA segmentsexamples/exp-2.py- evaluateH_T,S_T,G_T, andCp_Tfor CO2/CH4examples/exp-3.py- water-gas shift reaction properties andKeq(T)examples/build-thermodb.py- generate ThermoDB pickles from reference dataexamples/filter_reference-thermodb.py- subset the reference dataset for examples/tests
📖 Documentation
Documentation is available at https://pythermocalcdb-nasa.readthedocs.io/en/latest/.
🤝 Contributing
Contributions are welcome: bug fixes, new calculation routines, expanded examples, unit tests, or documentation improvements.
⚖️ License
This project is distributed under the Apache License, Version 2.0. If you incorporate this work into your own software, please acknowledge Sina Gilassi as the original author (a repository or documentation reference is appreciated).
❓ FAQ
Questions? Contact me on LinkedIn.
👤 Authors
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pythermocalcdb_nasa-0.1.3.tar.gz.
File metadata
- Download URL: pythermocalcdb_nasa-0.1.3.tar.gz
- Upload date:
- Size: 20.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ca2cbe11b44bd26352a28a69bf1bbec2510cb12e61e6edc3b1937ff4439f014
|
|
| MD5 |
886d4f9ab07d42751ae5f0849398a93c
|
|
| BLAKE2b-256 |
6278794b27b77c66a3fda8a64ca466b61517272c1a9afaf0d488025803dbb023
|
File details
Details for the file pythermocalcdb_nasa-0.1.3-py3-none-any.whl.
File metadata
- Download URL: pythermocalcdb_nasa-0.1.3-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69102573af31f83a6b380a3a4b404c0a9af29631b4ea279fb4efd54984a98058
|
|
| MD5 |
267a84027b12ee572a08495c8bc6a649
|
|
| BLAKE2b-256 |
8f6eb3edc657c554d45a009cc6292d7262ca3913cc525f1b36ced7980c24fe6b
|