Back to Projects
Open Source Active Development v1.0

ICARUS

Multi-Fidelity Aircraft Design & Analysis Platform

A sophisticated Python framework integrating 8+ aerodynamic solvers with JAX-powered optimization for complete aircraft design workflows. From conceptual sizing to detailed stability analysis, ICARUS provides researchers and engineers with production-grade tools for aerospace development.

Origin Story: Named after an actual EUROAVIA Athens competition aircraft that failed due to dynamic instability. This project transforms that lesson into a comprehensive design tool—ensuring future aircraft fly safely.

40k+
Lines of Code
8+
Solver Backends
5
Execution Engines
MIT
License

Key Capabilities

ICARUS combines deep aerospace engineering knowledge with modern software practices, delivering a platform that scales from quick conceptual studies to detailed flight dynamics analysis.

8+ Aerodynamic Solvers

Unified interface across XFoil, AVL, GenuVP3/7, Foil2Wake, OpenFOAM, and custom LSPT panel methods. Switch fidelity levels seamlessly.

JAX-Powered Computing

GPU-accelerated simulations with automatic differentiation. JIT compilation for real-time optimization and gradient-based methods.

Flight Dynamics

Complete state-space stability analysis with eigenvalue decomposition. Phugoid, short period, Dutch roll, and spiral mode identification.

Adaptive Execution

Intelligent task scheduling across Sequential, Threading, Multiprocessing, and Async engines based on workload characteristics.

Web Interface

Interactive Dash-based dashboard for aircraft design, analysis monitoring, and real-time optimization visualization.

FAR Certification

Built-in FAA Part 23/25 criteria for conceptual aircraft sizing. Constraint-based design space exploration.

Multi-Fidelity Analysis

A unified interface across solvers of varying fidelity—from fast panel methods to full CFD—enabling efficient design space exploration and detailed validation.

Flight Dynamics & Stability

Complete state-space stability analysis with eigenvalue decomposition for both longitudinal and lateral-directional dynamics.

Longitudinal Analysis

4×4 state-space model with states [u, w, q, θ] capturing velocity perturbations, pitch rate, and pitch angle dynamics.

Derivatives: Xu, Xw, Zu, Zw, Mu, Mw, Mq

Lateral-Directional Analysis

4×4 state-space model with states [v, p, r, φ] for sideslip, roll rate, yaw rate, and bank angle.

Derivatives: Yv, Lv, Nv, Yp, Lp, Np, Lr, Nr

Code Examples

Clean, Pythonic APIs designed for both interactive exploration and production workflows.

Airfoil Analysis

from ICARUS.solvers.Xfoil import Xfoil
from ICARUS.airfoils import Airfoil

# Create and analyze an airfoil
airfoil = Airfoil.naca("2412")
airfoil.repanel_spl(160)

xfoil = Xfoil()
xfoil.execute(
    analysis=xfoil.aseq,  # Angle sweep
    inputs={
        "airfoil": airfoil,
        "reynolds": [1e5, 2e5, 3e5],
        "min_aoa": -5,
        "max_aoa": 15,
        "aoa_step": 0.5
    },
    execution_mode=ExecutionMode.THREADING
)

Stability Analysis

from ICARUS.solvers.AVL import AVL
from ICARUS.flight_dynamics import State
from ICARUS.environment import EARTH_ISA

avl = AVL()
state = State("Cruise", airplane=plane,
              environment=EARTH_ISA, u_freestream=20)

# Compute stability derivatives
state.add_all_pertrubations("Central", epsilons)
avl.stability(plane, state)

# Analyze flight modes
state.plot_eigenvalues()  # Visualize in complex plane

Geometry Definition

from ICARUS.vehicle import WingSegment, Airplane
from ICARUS.airfoils import NACA4

wing = WingSegment(
    name="main_wing",
    root_airfoil=NACA4(M=0.04, P=0.4, XX=0.15),
    span=2.26,
    root_chord=0.159,
    tip_chord=0.072,
    twist_tip=-2,
    N=20, M=15,  # Panel discretization
    symmetries=SymmetryAxes.Y
)

Architecture

Modular design with clean separation of concerns—geometry, solvers, analysis, and optimization are independent but interoperable modules.

Vehicle Modeling

  • • Airplane → Wing → Segment hierarchy
  • • Control surfaces (elevator, aileron, rudder)
  • • Point masses & inertia tensors
  • • NACA & file-based airfoils

Computation Engine

  • • Sequential execution
  • • Threading (I/O bound)
  • • Multiprocessing (CPU bound)
  • • Async (external solvers)
  • • Adaptive (auto-selection)

Numerical Methods

  • • RK4, RK45 (explicit)
  • • Backward Euler (implicit)
  • • Gauss-Legendre (symplectic)
  • • Newmark (structural)
  • • JAX autodiff throughout

Optimization

  • • Nelder-Mead, COBYLA
  • • SLSQP, trust-constr
  • • JAX-based Adam, optax
  • • Real-time visualizers
  • • Constraint handling

Technology Stack

Core

Python 3.11+JAXNumPySciPy

Solvers

XFoilAVLGenuVPOpenFOAMFoil2Wake

JAX Ecosystem

diffraxoptaxjaxopt

Interface

DashTyperRich

Visualization

Matplotlib

Quality

pytestMyPyRuff

Why This Matters

Deep Domain Knowledge

Research-grade aerodynamics including Vortex Particle Methods from NTUA, panel methods with Biot-Savart kernels, and ground effect modeling.

Modern Scientific Computing

Full JAX ecosystem integration—GPU-ready code with JIT compilation and automatic differentiation through entire simulations.

Production Quality

MyPy strict type checking, pre-commit hooks with Ruff, pytest with markers, and comprehensive documentation throughout.

Systems Architecture

Clean abstractions across 8+ external solvers with unified interfaces, intelligent execution scheduling, and plugin-style extensibility.

Full-Stack Capability

Backend computation engine, Dash web interface, JSON persistence layer, and Typer-based CLI—complete software ecosystem.

Applied Mathematics

Implicit Runge-Kutta integrators, eigenvalue-based stability classification, and finite-difference perturbation analysis.

Explore ICARUS

ICARUS is open source under MIT license. Clone the repository, run the examples, and start designing aircraft with a modern, Pythonic workflow.