Skip to main content

pyglenn — Thermochemical Properties Calculator

CI Docs License: MIT

Computes Cp(T), H°(T), S°(T) from NASA polynomial coefficients stored in a SQLite database, converted from FORTRAN thermo.inp files.

Author: Dr. Reginaldo G. Leão Jr. — prof.reginaldo.leao@gmail.com

📖 Documentation: profleao.github.io/pyglenn

Features

  • Parse NASA-format thermo.inp (FORTRAN Appendix C) → SQLite3 database
  • Query species by name, phase, molecular weight
  • Calculate Cp(T), H°(T), S°(T) at any valid temperature
  • Enthalpy of formation lookup
  • Enthalpy change between two temperatures
  • Command-line interface
  • 2,035 species, 3,779 temperature intervals

Installation

From PyPI (pip)

pip install pyglenn

From source

git clone https://github.com/ProfLeao/pyglenn.git
cd pyglenn
pip install .

Conda

conda install conda-forge::pyglenn

Quick Start

The database is bundled with the package — no manual build step needed.

Python API

from pyglenn import ThermochemicalCalculator

# No need to specify a DB file — uses the bundled thermo.db
calc = ThermochemicalCalculator()
calc.connect()

# Find O2 (exact match — returns only O2, not Be3N2 or Al2O2)
species = calc.get_available_species('O2', exact_match=True)
o2 = species[0]

# Calculate properties at 1000 K
props = calc.calculate_properties(o2.id, 1000.0)
print(f"Cp = {props.cp:.2f} J/(mol·K)")
print(f"H° = {props.h_relative:.1f} J/mol")
print(f"S° = {props.s:.3f} J/(mol·K)")

calc.close()

Or use the context manager for automatic cleanup:

from pyglenn import ThermochemicalCalculator

with ThermochemicalCalculator() as calc:
    # exact_match=True guarantees the correct species (case-insensitive)
    species = calc.get_available_species('CH4', exact_match=True)
    props = calc.calculate_properties(species[0].id, 500.0)
    print(f"Cp = {props.cp:.2f} J/(mol·K)")

CLI

pyglenn query -s O2

Rebuilding the database

Only needed if the database is corrupted or you modify thermo.inp manually:

pyglenn build -i thermo.inp -o thermo.db

Database Structure

Table Description
species Chemical species (name, formula, phase, MW, ΔH°f)
temperature_intervals Valid T ranges per species
coefficients NASA-7 polynomial coefficients (a1–a7, b1, b2)
file_metadata Global file metadata
metadata Dataset metadata, including its reference gas constant

Gas Constants

R_UNIVERSAL = 8.31446261815324 J/(mol·K) is the universal CODATA value and remains available through the compatibility alias R. NASA Glenn/CEA polynomials in newly built databases declare their fitted reference constant as R_GLENN = 8.314510 J/(mol·K) in SQLite metadata. The calculator reads that value automatically when it connects; legacy databases fall back to R_UNIVERSAL until explicitly migrated.

Citing

If you use pyglenn in your research, please cite it as:

@software{goncalves_leao_junior_2026_21324586,
  author    = {Gonçalves Leão Junior, Reginaldo},
  title     = {pyglenn: A Python Toolkit for Thermochemical
               Properties Calculation from NASA Polynomials},
  month     = jul,
  year      = 2026,
  publisher = {Zenodo},
  doi       = {10.5281/zenodo.21324586},
  url       = {https://doi.org/10.5281/zenodo.21324586},
}

Requirements

  • Python ≥ 3.9
  • SQLite3 (stdlib)

License

MIT — see LICENSE file.

Metadata

Release files for pyglenn 0.2.0

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

Source distribution (sdist)

Source distribution for pyglenn 0.2.0
File Size Uploaded
pyglenn-0.2.0.tar.gz 786.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyglenn 0.2.0
File Interpreter ABI Platform
pyglenn-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.6 MB

Release files / pyglenn-0.2.0.tar.gz

Download URL pyglenn-0.2.0.tar.gz
Size 786.1 kB
Tags Source
SHA-256 checksum
How to use checksums
605661b492c8167273ecfa0b7bf43c839bb79d5ba436b2ec0111bc0c79fd7c76
BLAKE2b-256 checksum
How to use checksums
4ff5ad7c67066efe080e7d556b60d0b5eb6be579958dc4e5a4c2da0e62e19408
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pyglenn-0.2.0-py3-none-any.whl

Download URL pyglenn-0.2.0-py3-none-any.whl
Size 792.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ccc5d469fc1f8278ca51cd9201958eb0f376b22898684bd6b33c98c8b5cdbf36
BLAKE2b-256 checksum
How to use checksums
09fe666b56727a0f9cd39b2f3a450a2fa92c118f4709ef28c6eed826b9a7d6cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
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