AETHERION is a high-precision, research-grade C++ library for rocket and aerospace flight dynamics, built on:
- Featherstone 6-D Spatial Vector Algebra (SVA)
- ECI / WGS84 frame transformations
- Algorithmic Differentiation (AD-friendly)
- Clean ODE formulations for high-fidelity simulation
The name ΑΙΘΕΡΙΟΝ (Aetherion) is inspired by the Greek word Αιθήρ, referring to the upper atmosphere — the pristine realm of celestial motion.
The flagship simulation is a full 6-DOF two-stage rocket gravity-turn ascent from the equator, validated against NASA TM-2015-218675 Atmospheric Scenario 17. The trajectory below was produced entirely by Aetherion using Featherstone SVA dynamics, the US1976 atmosphere, WGS84 gravity, and an implicit RADAU-IIA integrator.
Stage separation, coast phases, and second-stage ignition are all captured with sub-percent error versus the NASA reference. Final altitude error: 0.87 % · Final speed error: 0.001 %.
- Full 6-DOF rigid-body dynamics using Featherstone Spatial Vector Algebra
- ECI equations of motion — no pseudo-forces, no approximations
- Air-relative velocity for aerodynamics; rotating atmosphere handled correctly
- Variable-mass bodies — propellant burn, staging events, CG travel
- Lie-structure-preserving Runge-Kutta-Munthe-Kaas (RKMK) integrator on SE(3)
- Fully implicit RADAU-IIA solver for stiff ascent phases
- Discrete Extended Kalman Filter on a product manifold containing Lie groups
- AD-friendly formulations throughout — compatible with CppAD, dual numbers, and similar libraries
- Auto-Jacobians fed directly into the EKF/UKF linearisation pipeline
- US1976 Standard Atmosphere (temperature, pressure, density, speed of sound)
- WGS84 gravity model with ECI/ECEF/geodetic coordinate conversions
- Branch-free formulations designed for AD and Kalman filtering
- DAVE-ML (DML) aerodynamic model loader — table-driven aero/inertia/propulsion data
- Multi-axis force and moment models; CG-offset spatial inertia
- Stage-aware propellant tracking with automatic separation logic
- FMI/FMU export via fmu4cpp — drop Aetherion plants into any FMI-compliant simulator
- JSON configuration files for initial conditions and simulation parameters
- CSV output compatible with NASA reference data formats
- Post-modern C++23 design throughout
- Enforces a practical subset of the JSF AV C++ coding standard
- CI gates: Clang-Format · CMake-Format · CMake-Lint · IWYU · Clang-Tidy · Metrix++ cyclomatic complexity · AddressSanitizer / UBSan
The library is architected so that the same smooth ẋ = f(x, u) used for simulation feeds auto-Jacobians into the EKF linearisation, producing a single consistent GNC pipeline from plant model to state estimator.
ΑETHERION implements the full suite of Featherstone spatial constructs:
| Symbol | Meaning |
|---|---|
v |
Spatial velocity (twist) |
a |
Spatial acceleration |
I |
Spatial inertia |
v× |
Motion cross-product operator |
v×* |
Force cross-product operator (adjoint) |
Equation of motion:
Control surfaces and payload stages can be modelled as rigidly attached bodies within the same spatial algebra.
| Label | Frame |
|---|---|
| W | Inertial (ECI) |
| E | Earth-fixed (ECEF) |
| B | Rocket/aircraft body |
All transforms follow:
notation for spatial transforms, keeping the frame algebra explicit and AD-friendly.
| Example | Vehicle | Reference |
|---|---|---|
TwoStageRocket |
Two-stage launch vehicle | NASA TM-2015-218675 Scenario 17 |
F16SteadyFlight |
F-16 at trim | NASA TN D-8532 Section 13.1 |
F16AirspeedChange |
F-16 speed step | NASA TN D-8532 Section 13.2 |
F16AltitudeChange |
F-16 altitude step | NASA TN D-8532 Section 13.3 |
F16HeadingChange |
F-16 heading change | NASA TN D-8532 Section 13.4 |
F16LateralSideStep |
F-16 lateral manoeuvre | NASA TN D-8532 Appendix |
F16SupersonicTrim |
F-16 supersonic trim | NASA TN D-8532 |
EastwardCannonball |
Point mass projectile | Analytic (Coriolis) |
NorthwardCannonball |
Point mass projectile | Analytic (Coriolis) |
SphereWithAtmosphericDrag |
Sphere + drag | Analytical reference |
DroppedSphereSteadyWind |
Sphere in steady crosswind | Analytical reference |
DroppedSphere2DWindShear |
Sphere in wind-shear field | Analytical reference |
TumblingBrickNoDamping |
Free tumbling rigid body | Angular momentum conservation |
TumblingBrickWithDamping |
Damped tumbling body | Energy dissipation |
CircleEquatorDateLine |
Orbital-like equatorial loop | Geometric consistency |
CircleNorthPole |
Polar orbital loop | Geometric consistency |
- Catch2 unit tests covering every module
- Numerical validation against NASA technical reports (sub-percent agreement)
- AddressSanitizer + UBSanitizer run on every CI push
- Clang-Tidy static analysis and IWYU include hygiene enforced on every PR
| Library | Purpose |
|---|---|
| Eigen | Linear algebra |
| CppAD | Algorithmic differentiation |
| fmu4cpp | FMI/FMU export |
| ecos | FMI co-simulation engine (FMU smoke testing) |
| Catch2 v3 | Unit testing |
Full API reference and simulation guides are hosted on GitHub Pages:
Clone the repository and initialise submodules:
git clone https://github.com/onurtuncer/Aetherion.git
cd Aetherion
git submodule update --init --recursive- Open Visual Studio
- File → Open Folder… → select the
Aetheriondirectory - Let Visual Studio configure CMake automatically
- Choose a configuration (e.g.
x64-Release) - Build → Build All
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build- Bug Tracker: GitHub Issues
- Discussions: GitHub Discussions
Prof. Dr. Onur Tuncer
Aerospace Engineer, Researcher & C++ Systems Developer
Istanbul Technical University · onur.tuncer@itu.edu.tr


