aeolus1d¶
aeolus1d is a 1D compressible-Euler pipe-network solver designed for engine intake / exhaust / fuel-rail simulation, refrigerant / cryogenic / CO2 pipework, and chemistry-coupled combustion / catalysis benches. Numba-JIT inner kernels run within ~3× of hand-tuned Fortran on uniform-mesh cases.
Headline features¶
Solver core
- HLLC flux + 1st-order Godunov, MUSCL (van-Leer / minmod), or MP5 (Suresh-Huynh, 5th order) reconstruction
- SSP-RK2 / SSP-RK3 explicit time integration plus Implicit Euler / BDF2 / Radau IIA(3) implicit solvers (Phases I-1 → I-9) with block-tridiagonal Newton, adaptive Δt, Picard outer iteration on network coupling (Phase I-Y), and closed-form analytic Jacobians for every shipped closure kind (Phases B16 → B22 — friction, heat, porous, all kinds × ideal/real-gas combinations)
- Quasi-1D Euler with variable area, friction (Darcy-Weisbach + Colebrook), wall heat transfer, Darcy-Forchheimer porous (constant μ + Sutherland μ(T)), and a two-phase catalyst with Nusselt h·a_v·(T_s − T_g) coupling
- Real-gas EOS: ideal, Redlich-Kwong, Peng-Robinson, and CoolProp- backed tabulated lookup. Plumbed through the HLLC kernel + the network timeloop's MUSCL path; closed-form first AND second-derivative Jacobian helpers (Phase B20) for the cubic EOS Newton path
- Network mode: arbitrary pipes coupled through 0-D volumes, with plenum / Corberán-CP+h / Extended-Helmholtz-Resonator port BCs, and a Phase-23 LODI characteristic port BC for non-reflecting outflows
- Strang-split chemistry: scipy LSODA per cell, or a hand-tuned Bader-Deuflhard semi-implicit Bulirsch-Stoer solver inside a Numba @njit kernel
Components
- Reciprocating cylinders with slider-crank kinematics, Wiebe
combustion (TOML-exposed via
[cylinder.combustion]), two-zone burnt / unburnt diagnostic with per-zone γ tracking, continuous lift schedules on every port, Livengood-Wu knock prediction + closed-loop θ_spark retard controller (TOML-exposed via the flatknock_*fields) - Quasi-steady map-driven compressors / turbines coupled through a
shaft-inertia ODE; 3-D
TurboMap(vane_openaxis) for VGT;bypass_openactuator on Turbine for wastegate use; sequential / twin-turbo topology template (60_twin_sequential_turbo.toml); surge / choke / idle / backflow regime diagnostics on Compressor; learned-NN port-state and turbo-map surrogates via thepy_junction_bc/py_turbo_mapseams - Aftertreatment depth: DOC (with optional sulfate-poisoning +
active-regen via
DOCSulfurController), DPF (passive + active regen with closed-loop heater PI), SCR, SCRF, two-stage SCR, urea-water injector with HNCO hydrolysis, TWC (Voltz-Morgan- Liederman 3-pathway and Brinkmeier 11-reaction with Ce O₂ storage, plus opt-in passive-SCR NH₃ generation + C₃H₆ oxidation channels) - Closed-loop controllers (
aeolus1d.control):BoostController(VGT vane → manifold p),WastegateController(sign-inverted PI onbypass_open),DPFHeaterController(heater power → cake T),DOCSulfurController(lumped sulfate storage / reduction integrator). All velocity-form PI; pluggable ason_step=callbacks or wired via[[controller]]blocks in TOML - Variable-γ stack: cell-averaged scalar, per-cell γ in the HLLC kernel, and per-cell γ in MUSCL / MP5 reconstruction
Tooling
- TOML case format with full schema validation; HDF5 output
- Python-API access to every internal field for custom integrators, optimisation loops, and ML closures
- Visual editor + post-processor (
aeolus1d_gui): drag-and-drop palette, auto-generated inspector forms, run-as-subprocess controller, and a network-view that auto-loads HDF5 traces into a tube-coloured 3D scene - ~4600 unit + integration tests, ruff-clean, 212 bundled example
cases + matching plot scripts under
examples/, plus a benchmark suite (examples/benchmarks/) of canonical literature cases with closed-form pass criteria
Where to next¶
- Installation —
pip install -e .+ extras - Quick start — your first network run
- CLI reference —
aeolus1d run,aeolus1d bench - Theory — governing equations + flux scheme
- Architecture — code layout
- Closures — friction / heat / porous / catalyst
- GUI — visual editor walk-through
- Examples — bundled cases by topic
- Run / case settings — every
[case]field - Cylinder reference — every
[[cylinder]]field - Aftertreatment thermal reference —
[pipe.filter.thermal],[pipe.filter.csf],[[coolant_coupling]] - Changelog — milestone-by-milestone summary