https://github.com/sintefmath/multilevelda
Notebooks for multilevel data assimilation based on `metno/gpuocean`
https://github.com/sintefmath/multilevelda
Last synced: 7 months ago
JSON representation
Notebooks for multilevel data assimilation based on `metno/gpuocean`
- Host: GitHub
- URL: https://github.com/sintefmath/multilevelda
- Owner: sintefmath
- License: gpl-3.0
- Created: 2023-01-16T10:55:45.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-12T14:27:59.000Z (over 1 year ago)
- Last Synced: 2024-12-28T13:15:00.079Z (over 1 year ago)
- Language: Jupyter Notebook
- Homepage:
- Size: 162 MB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Multi-level data assimilation for ocean forecasting using the shallow-water equations
This repository contains code, scripts and notebooks related to the work presented in the paper "Multi-level data assimilation for ocean forecasting using the shallow-water equations" by Beiser, Holm, Lye and Eidsvik.
The motivation is to setup multi-level Monte Carlo ensembles of simplified ocean models and evaluate the usability of multi-level data assimilating in the presence of sparse observations of ocean currents.
We then use the posterior multi-level ensemble to forecast the ocean state and drift trajectories.
All code relies heavily on [GPU Ocean](https://github.com/gpuocean/gpuocean) v1.3.0.
## Result Reproduction
Although the exact figures from the paper will be hard to reproduce due to stochastic processes, the figures can be qualitatively reproduced as follows:
- Figure 0: tikz
- Figure 1: tikz
- Figure 2: `scripts/DoubleJetPracticalCost_square.py`
- Figure 3: `notebooks/DoubleJet-Truth4paper.ipynb` (requires running `scripts/DoubleJetTruth.py -L 9`, but results are stochastic)
- Figure 4: `notebooks/DoubleJet-Resoltions4paper.ipynb` (results are seeded)
- Figure 5: tikz + requires running `scripts/DoubleJetVarianceLevel-DA.py` + `scripts/DoubleJetVarianceLevel-DA-PP.py`
(The first script save results in a newly created putput folder. The second script requries to set `source_path` to the output folder of the first script. Moreover, for different functionals, follow the instructions in the second script to create the a- and b-plot. Also the second script saves results in a newly created output folder.)
- Table 1: `notebooks/DoubleJet-SpeedUp.ipynb` (requires to set the output folders of the previous cost and variance experiments are manual inputs)
> The next figures require running
> - `scripts/DoubleJetSLDA.py -L 9`
>
> Then set the output folder of this script as `truth_path` in the following scripts
>
> - `scripts/DoubleJetSLDA.py -L 9 -Ne 50`, and
> - e.g. `scripts/DoubleJetMLDA.py -ls 6 7 8 9 -Nes 275 134 46 13`
>
> Again, output folders are created and those folders paths have to be manually set in the following notebooks!
- Figure 6: `notebooks/DoubleJet-DA-PostProcessing-ERR4paper.ipynb` (set folder path as explained above)
- Figure 7: `notebooks/DoubleJet-DA-PostProcessing-ERRloc4paper.ipynb` (set folder path as explained above) + requires running `scripts/DoubleJetMLDA.py -ls 6 7 8 9 -Nes 275 134 46 13` (with right `truth_path` for the output of the truth AND `min_localisation_level=1` see comment in the upper part of the script)
- Figure 8: `notebooks/DoubleJet-MLDA-PostProcessing-MLscores4paper.ipynb` (set folder path as explained above)
- Figure 9: `notebooks/DoubleJet-MLRanks-PostProcessing4paper.ipynb` (set folder path as explained above) + requires running `scripts/DoubleJetMLRanks.py`
- Figure 10: `notebooks/DoubleJet-DA-PostProcessing-Drifter4paper.ipynb` (set folder path as explained above)
- Figure 11: `notebooks/DoubleJet-DA-PostProcessing-DrifterERR4paper.ipynb` (set folder path as explained above)
- Figure 12: `notebooks/DoubleJet-DA-PostProcessing-DrifterKDE4paper.ipynb` (set folder path as explained above)
- Table 2: `notebooks/DoubleJet-DA-PostProcessing-DrifterKDE4paper.ipynb` (set folder path as explained above, see far down in the notebook)
A lot of parameters are collected in `utils/DoubleJetParametersReproduction.py`.
### Funding
This work is funded by the Norwegian Research Council under grant number 310515 (Havvarsel).