/lorenz-da

The purpose of this project is to test different data assimilation (DA) algorithms, ensemble, variational and hybrid, on simple Lorenz models. This project is actively being worked on and is hosted on GitHub for educational purposes only. Please report bugs or suggestions for improvements.

Primary LanguagePythonApache License 2.0Apache-2.0

lorenz-da

The purpose of this project is to test different data assimilation (DA) algorithms; ensemble, variational and hybrid, on simple Lorenz models.

This project is hosted on GitHub for educational purposes only.

Please report bugs or suggestions for improvements.

module_Lorenz.py - contains Lorenz model related functions; e.g. model non-linear integration, tangent-linear integration and adjoint, plotting model attractor, generating initial conditions, etc.

module_DA.py - contains data assimilation related functions; e.g. variational DA with 3DVar, 4DVar, ensemble DA with stochastic perturbed observations EnKF, square-root filter with modified Kalman gain EnKF, ensemble adjustment Kalman filter, variety of options for inflation, localization, minimization, etc.

module_IO.py - utility functions for IO; e.g. create, read and write model and data assimilation diagnostic files.

LXX_model.py - drive a standalone Lorenz 63 (3 variable )or Lorenz 96 (40 variable) model along with its tangent-linear and adjoint. Also check for accuracy of the TLM and ADJ.

truthDA.py - driver script to generate truth for DA. varDA.py - driver script for variational DA ensDA.py - driver script for ensemble DA hybDA.py - driver script for hybrid DA hybensvarDA.py - driver script for hybrid ensemble-variational DA

LXX_stats.py - Variational DA requires a static background error covariance matrix. 3 methods are supported here; a long free integration of the model to sub-sample states from, NMC method using lagged forecast pairs, and using an ensemble from a cycled EnKF system.

L63_param_truthDA - parameters to generate the truth L63_param_varDA - parameters to configure variational DA setup L63_param_ensDA - paramaters to configure ensemble DA setup L63_param_hybDA - parameters to configure hybrid DA setup

L96_param_truthDA - parameters to generate the truth L96_param_varDA- parameters to configure variational DA setup L96_param_ensDA - paramaters to configure ensemble DA setup L96_param_hybDA - parameters to configure hybrid DA setup L96_param_ensvarDA - parameters to configure pure ensemble-variational DA L96_param_hybensvarDA - parameters to configure hybrid ensemble-variational DA

comp_varDA.py - make comparison plots between different configurations of variational DA runs comp_ensDA.py - make comparison plots between different configurations of ensemble DA runs comp_hybDA.py - make comparison plots between different configurations of hybrid DA runs.

plot_Bs.py - read and plot background error covariance test_localization.py - read, localize and plot background error covariance. Localization options are Gaspari-Cohn, Buehner, and Liu. loop_LXX.py - read diagnostic files and make animated loops of truth, prior, posterior (including ensemble) and observations.

Several more scripts to do forecast sensitivity to observations and observation impacts are included here, and their description will be updated at a later time.