Skip to main content

An ICAO-compliant Implementation of the International Standard Atmosphere.

Project description

Isadora Logo

ISADORA - ICAO 1983 Compliant International Standard Atmosphere (ISA)

Isadora is a lightweight, precise, and Pythonic implementation of the International Standard Atmosphere (ISA) model. It provides atmospheric properties (temperature, pressure, density, dynamic and kinematic viscosity, speed of sound) at any geopotential altitude.

The package is fully unit-aware, supporting SI, USCS, and Imperial units, and validated against ICAO 1983 reference tables.

Ideal for aerospace engineers, researchers, and students, Isadora simplifies atmospheric computations while ensuring accuracy and unit safety.

Features

  • Compute unit-aware atmospheric properties at any geopotential height.
  • Compute derived quantities: Mach number, dynamic pressure, geometric height.
  • Support for multiple unit systems: SI (default), USCS, Imperial.
  • Physical constants implemented using type-safe, immutable units.
  • Fully ICAO 1983 compliant calculations.
  • Pytest-tested for physical consistency, numerical correctness, and unit integrity.

Installation

Install via pip:

pip install isadora

Or clone the repository and install locally:

git clone https://github.com/techkaduna/isadora.git
cd isadora
pip install .

Dependencies

  • Python >= 3.10
  • mudu – unit and measurement library
  • dataclasses (Python 3.10+ has it built-in)
  • pytest – for running the test suite

Quick Start

Import the package and create an ISA atmosphere:

from isadora import ISA

# Create an ISA atmosphere at 5 km geopotential height
atm = ISA(geopotential_height=5)

print("Temperature:", atm.temperature)
print("Pressure:", atm.pressure)
print("Density:", atm.density)
print("Dynamic Viscosity:", atm.dynamic_viscosity)
print("Kinematic Viscosity:", atm.kinematic_viscosity)
print("Speed of Sound:", atm.speed_of_sound)
print("Mach Number at 20 m/s:", atm.mach_number(20))
print("Geometric Height:", atm.geometric_height)

Switching Units

Change the global unit system using UnitRegistry:

from isadora.units import UnitRegistry

# Set to USCS units
UnitRegistry.set_unit_standard("USCS")

atm_uscs = ISA(geopotential_height=10)
print("Temperature (USCS):", atm_uscs.temperature)
print("Pressure (USCS):", atm_uscs.pressure)

Derived Quantities

The ISA object provides convenient methods:

  • atm.mach_number(velocity) – computes Mach number for a given velocity.
  • atm.dynamic_pressure(velocity) – computes dynamic pressure at altitude.
  • atm.geometric_height – converts geopotential height to geometric height.
  • atm.speed_of_sound – sound speed at the specified altitude.

Testing

Run the full Pytest test suite:

pytest -v tests/

Tests cover:

  • ICAO 1983 reference validation
  • Physical consistency (hydrostatic equilibrium, monotonicity)
  • Derived quantities (Mach, dynamic pressure, geometric height)
  • Unit system correctness and conversion

References

  • International Civil Aviation Organization (ICAO), 1983, Standard Atmosphere Tables
  • U.S. Standard Atmosphere, 1976, NASA

License

MIT License. See LICENSE file for details.

Contributing

Contributions are welcome! Follow PEP 8 style, include tests for new features, and submit via GitHub Pull Requests.

Contact

Author: Kolawole Andrew
GitHub: https://github.com/techkaduna/isadora
Email: andrewolakola@gmail.com

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

isadora-1.2.0.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

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

isadora-1.2.0-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file isadora-1.2.0.tar.gz.

File metadata

  • Download URL: isadora-1.2.0.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for isadora-1.2.0.tar.gz
Algorithm Hash digest
SHA256 95e26cf1ff2fa8d8188db9762824905f11a542597d766e8be843339c0c2a5e23
MD5 a4fe9a3b2575f51e10bae7897c21b480
BLAKE2b-256 925812cd95cd9d4ab58e5d023979f3b6be0732a3ff35f6b899a3ab5ca7bf9442

See more details on using hashes here.

File details

Details for the file isadora-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: isadora-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for isadora-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 65f896b1b565994dd4f0f687e0b519b263f7477b68bff5bed423f7128b243aec
MD5 43b80911f54e265df4ea0263729e4d3d
BLAKE2b-256 12e4950ede4206a36aeedbd464630c3e1c4423354cd2064ccf6d90764fa9dfaa

See more details on using hashes here.

Supported by

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