kwinkunks / dass

Data Assimilation in Python for teaching purposes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Data Assimilation

dass is tool for learning about data assimilation / history matching created by the developers of ERT. It is inspired by DAPPER and HistoryMatching.

It includes implementations of Ensemble Smoother (ES) as given in [1] and Iterative Ensemble Smoother (IES) as given in [2], see dass/analysis.py. The implementation of ES can easily be extended to the Ensemble Smoother with Multiple Data Assimilation (ES-MDA) as described in [3].

For notebooks with examples and tutorials see the notebooks/ folder.

NB! notice that there are no .ipynb files in the notebooks/ folder. This is because we use Jupytext to sync .py and .ipynb files, which means that we only need to keep the .py files in source control.

Installation

git clone https://github.com/equinor/dass.git
cd dass
# dass supports Python 3.8 and above.
python3.9 -m venv .venvdass
source .venvdass/bin/activate
# Add -e if you want to make changes.
pip install -e .
# Install additional requirements for developers.
pip install -r dev-requirements.txt
# Start jupyter notebook
jupyter notebook
# To make sure everything works, run on the of the notebooks in the notebooks/ folder.

On notation

The implementation of ES is based on section 9.5 of [1], while the implementation of IES is based on [2]. The notation used in the two papers differ slightly, so we have made a few tweaks to make them more similar.

  • $A$ is used for the prior ensemble. (It's $X$ in [2])
  • $E$ is not divided by $\sqrt{N-1}$ as is done in [2], which means that we do not multiply $E$ by $\sqrt{N-1}$ in the definition of $E$.
  • We do not use $EE^T / (N-1)$ to estimate the parameter covariance matrix, because we assume a diagonal observation error covariance matrix $C_{dd}$. We instead scale matrices used in the analysis step such that $C_{dd}$ becomes the identity matrix. This is what is known as exact inversion.
  • $Y$ is used to hold measured responses, which are predictions made by the dynamical model at points in time and space for which we have observations.

References

[1] - Data Assimilation The Ensemble Kalman Filter

[2] - Efficient Implementation of an Iterative Ensemble Smoother for Data Assimilation and Reservoir History Matching

[3] - Ensemble smoother with multiple data assimilation

About

Data Assimilation in Python for teaching purposes


Languages

Language:Python 99.9%Language:Shell 0.1%