Ensemble Kalman methods and numerical experiments from the paper "Ensemble Kalman Methods: A Mean Field Perspective" (https://arxiv.org/abs/2209.11371). To cite this repository use
@article{Calvello2025Ensemble,
title={Ensemble Kalman methods: A mean-field perspective},
volume={34},
journal={Acta Numerica},
author={Calvello, Edoardo and Reich, Sebastian and Stuart, Andrew M.},
year={2025},
pages={123–291}
}
The code contained in the files ./Lorenz96/DATools_.py and ./Lorenz96/L96_multiscale.py is due to Dmitry Burov. If using the Lorenz `96 data generation files, please also cite
@article{Burov2021Kernel,
title={Kernel analog forecasting: {M}ultiscale test problems},
author={Burov, Dmitry and Giannakis, Dimitrios and Manohar, Krithika and Stuart, Andrew},
journal={Multiscale Modeling \& Simulation},
volume={19},
number={2},
pages={1011--1040},
year={2021},
publisher={SIAM}
}
The folder Data_Assimilation contains the DA algorithms used in the paper. Namely, the file DA_Filtering.py contains the filtering schemes ThreeDVAR and EnKF, on the other hand the file DA_Inversion.py contains EKI_transport, which can be used for both Bayesian inversion and optimization, and EKI_post for Bayesian inversion.
To generate Lorenz `96 data, run the python script data_gen.py from the Lorenz96 folder.
To reproduce the filtering experiments from the paper, run the python scripts 3DVAR_L96m.py, 3DVAR_L96s.py and EnKF_L96s.py, either running them directly or through the script run.sh. This will create a "results" folder containing the saved data. To subsequently generate the plots run the python script generate_plots.py.
Similarly, to reproduce the inversion experiments from the paper, run the python scripts EKI_1D.py, EKI_L96.py, either running them directly or through the script run.sh. This will again create a "results" folder containing the saved data. To subsequently generate the plots run the python script generate_plots.py.
