Skip to content

Tutorials

The tutorial notebooks below build up from the basic classes to full real-data digital twins, numbered by topic. The source lives in scripts/tutorials. Topics 0 and 1 are rendered inline (with saved outputs); topics 2–4 link out to GitHub for now. Two arcs run through them: DA concepts (1) applied to physical models (2), and reduced-order-model concepts (3) combined with DA in real time (4).

0. How the repository works

Notebook Contents
Class Model The Model base class, integrators and state history.
Class ESN_model An ESN as a forecast model.
Class Observations Truth generation, noise and manual biases.
Class Bias Training and running an ESN bias estimator.
Class Estimator The Estimator hierarchy: instantiating a filter and running the forecast step.

1. Introduction to real-time DA

Notebook Contents
Real-time DA intro Bayesian estimation (MAP, univariate example) and the classical Kalman filter on a linear model.
Ensemble DA intro The EnKF: twin experiment on the Van der Pol model, and Monte Carlo convergence to the KF.
Augmented formulation Combined state and parameter estimation.
Chaos and DA (Lorenz 63) Ensemble DA on a chaotic system.
Model-bias-aware DA The r-EnKF with an ESN bias estimator on the Van der Pol model.

2. Real-time DA in thermoacoustics

Notebook Contents
Rijke LOM The Rijke-tube low-order model (Galerkin method).
TADA Rijke twin Twin state/parameter estimation with the EnKF.
TABADA Rijke (CMAME) Bias-aware DA with an ESN bias estimator.
Azimuthal LOM The annular-combustor low-order model.
Azimuthal data Exploring the experimental annular data.*
TABADA annular raw A real-data digital twin of an annular combustor.*

3. Introduction to reduced-order models

Notebook Contents
POD / SPOD POD, Sieber SPOD and Towne SPOD on the cylinder wake.*
POD-ESN on the cylinder wake The packaged POD_ESN reduced-order model at scale.*

4. Real-time DA on reduced-order models

Notebook Contents
Real-time DA with POD-ESN Assimilating sparse sensors into the POD-ESN wake model.*

* These notebooks download their dataset from Zenodo on first use (annular data, wake data).

Running the tutorials as tests

The notebook runner executes all tutorials headlessly:

python -m pytest test_tutorials.py                       # all folders
SUBFOLDERS='["0","1"]' python -m pytest test_tutorials.py  # only folders 0 and 1
NB_TEST_QUICK=1 python -m pytest test_tutorials.py       # skip training-heavy notebooks