Extension plan: applications built on the solver¶
Written 2026-09-24. This page lists applications that could be built from
what aeolus1d already has. It is a menu of ideas, not a commitment. It owns
one question: what else could this code base become? Product features and
their order stay in the roadmap, and position stays in
STATUS.md. An idea moves from here to the roadmap when someone decides to
build it.
None of the effort notes below are measured. They say which parts already exist and which do not, so the first step is visible.
What there is to build on¶
| Area | In the tree |
|---|---|
| Gas dynamics | 1D pipes (first order, MUSCL, MP5), plenum, EHR, Corberán and passthrough junctions, BCs of every common kind, quasi-1D area change |
| Thermodynamics | ideal gas, per-cell γ, Redlich-Kwong, Peng-Robinson and tabulated real gas |
| Chemistry | species transport, kinetics and mechanisms, equilibrium, fuels (fuels.py) |
| Engine | slider-crank cylinders, Wiebe / SI / diesel combustion, valves, injectors, turbochargers on shafts |
| Aftertreatment | DOC, DPF (soot, regen, ash), SCR with urea, TWC |
| Heat | gas pipe to wall to coolant, standalone dynamic walls |
| Acoustics | Helmholtz resonators, eigenmodes, transmission loss (analysis/acoustics*.py), WAV export (audio.py) |
| Vehicle | drive cycles, vehicle and driveline, hybrid, battery model, energy management |
| Studies | optimizer, DOE, UQ, sensitivity, surrogates |
| Integration | FMU export (fmi.py), Cruise M / GT-Suite / Boost / WAVE importers, field inventory, connection handshake |
| GUI | canvas editor, run and live plots, network view, BC and connection views |
Engines and vehicles¶
1. Exhaust and muffler designer (recommended first)¶
Draw chambers, perforated pipes and resonators on the canvas, then see the
transmission loss and hear the result as a WAV. The optimizer trades noise
against back pressure.
- Reuses: Helmholtz and EHR components, analysis/acoustics*.py,
audio.py, optimize.py, the GUI plot dock.
- Missing: a muffler-element palette (perforates, baffles), a
transmission-loss view in the GUI, and a noise-vs-back-pressure objective.
- First step: a bundled two-chamber muffler example with a transmission-loss test.
2. Emissions compliance simulator (recommended first)¶
Run a legal drive cycle through engine, turbo and aftertreatment, and report
grams per km for each pollutant against a named limit.
- Reuses: drive_cycles.py, vehicle.py, the quasi-steady driver,
DOC/DPF/SCR/TWC, nox_post.py, examples 76_wltp_lite_dpf and 85_vehicle_drive_cycle.
- Missing: a limits table per standard, a cumulative-mass report and a
pass/fail summary page.
- First step: a cumulative tailpipe-mass report on 76_wltp_lite_dpf.
3. Alternative-fuel engine lab¶
Compare hydrogen, ammonia and conventional fuel in one engine on power,
efficiency, NOx and ammonia slip.
- Reuses: fuels.py, chemistry mechanisms (cantera_h2_air.yaml), species
transport, SCR, the connection handshake (which catches a species dropped between parts).
- Missing: a side-by-side study runner and validated combustion settings per fuel.
- First step: one engine case run on two fuels, with a comparison table.
Beyond automotive (the same physics)¶
4. Gas pipeline network tool¶
Model line pack, compressor stations and the pressure surge when a valve closes, in natural gas or hydrogen. - Reuses: real-gas pipes, junctions, BCs, the quasi-steady driver for slow transients. - Missing: long-pipe friction and elevation terms at pipeline scale, a compressor-station component, and km-scale meshing guidance. - First step: a single long real-gas pipe with a valve closure, checked against a textbook surge.
5. Hydrogen refuelling station¶
Model a high-pressure fill from storage to a vehicle tank, including how hot the tank gets. - Reuses: real-gas equations, plenums as tanks, valve BCs, heat links. - Missing: a tank-wall heat model tuned for fills, and a fill-protocol controller. - First step: a storage → valve → tank example with the tank temperature plotted.
6. Ventilation, HVAC and tunnel ducts¶
Balance airflow in a duct network, with fans as boundaries, plenums as rooms, and heat exchange at the walls. - Reuses: pipes, plenums, heat links, the quasi-steady driver. - Missing: a fan-curve BC, and duct fittings (bends, dampers) as loss elements. - First step: a fan-curve BC and a three-room example.
7. Pneumatic systems¶
Air brakes, air tools and tube networks, where the timing of pressure waves matters. - Reuses: pipes, plenums, valve BCs, controllers. - Missing: actuator (piston-cylinder) components with a load. - First step: a brake-line example measuring the delay from valve to chamber.
8. Wind-instrument and organ-pipe synthesizer¶
Play a 1D trumpet or organ pipe and listen to it.
- Reuses: pipes, resonators, eigenmodes, audio.py.
- Missing: a lip or reed excitation model at the mouthpiece.
- First step: an organ pipe driven by a pressure source, exported to WAV.
Tools built on the solver¶
9. Digital twin and HIL-lite¶
Export an engine or aftertreatment model as an FMU and drive it from a
controller test bench.
- Reuses: fmi.py, interop/fmu.py, controllers.
- Missing: a real-time pacing mode and a worked controller example.
- First step: export 39_4cyl_engine_turbo_scr and step it from a Python co-simulation loop.
10. Surrogate "what-if" sliders¶
Train a fast model on DOE runs, and give instant answers from sliders in the GUI.
- Reuses: doe.py, surrogates.py, uq.py, sensitivity.py.
- Missing: a GUI panel that trains and queries the surrogate.
- First step: a surrogate of back pressure against two muffler dimensions (pairs with idea 1).
11. Model-migration checker¶
Import a vendor model, run it, and give a checklist of what did not carry over.
- Reuses: the importers, the field inventory (aeolus1d fields), the connection handshake (aeolus1d handshake).
- Missing: one combined report that joins the two, with a pass/fail per item.
- First step: a aeolus1d migrate-check FILE command that runs both and prints one report.
Recommendation¶
Start with 1 or 2. They lean on the most finished parts (acoustics, aftertreatment, the optimizer, the GUI plots) and give a visible result fastest. 11 is the cheapest, since both halves already exist.