An ICAO-compliant Implementation of the International Standard Atmosphere.
Project description
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 librarydataclasses(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
Release history Release notifications | RSS feed
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95e26cf1ff2fa8d8188db9762824905f11a542597d766e8be843339c0c2a5e23
|
|
| MD5 |
a4fe9a3b2575f51e10bae7897c21b480
|
|
| BLAKE2b-256 |
925812cd95cd9d4ab58e5d023979f3b6be0732a3ff35f6b899a3ab5ca7bf9442
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65f896b1b565994dd4f0f687e0b519b263f7477b68bff5bed423f7128b243aec
|
|
| MD5 |
43b80911f54e265df4ea0263729e4d3d
|
|
| BLAKE2b-256 |
12e4950ede4206a36aeedbd464630c3e1c4423354cd2064ccf6d90764fa9dfaa
|