Skip to content
Snippets Groups Projects
Commit d3af461f authored by Stefano Serafin's avatar Stefano Serafin
Browse files

improved documentation

parent 9720101a
Branches
Tags
No related merge requests found
%% Cell type:markdown id: tags:
# References
For the data assimilation algorithms:
* Anderson, J. L., 2001: An ensemble adjustment Kalman filter for data assimilation. Mon. Weather Rev., 129, 2884–2903. [https://doi.org/10.1175/1520-0493(2001)129%3C2884:AEAKFF%3E2.0.CO;2]
* Anderson, J. L., 2003: A local least squares framework for ensemble filtering. Mon. Weather Rev., 131, 634–642. [https://doi.org/10.1175/1520-0493(2003)131%3C0634:ALLSFF%3E2.0.CO;2]
* Hunt, B. R., E. J. Kostelich, and I. Szunyogh, 2007: Efficient data assimilation for spatiotemporal chaos: A local ensemble transform Kalman filter. Physica D, 230, 112–126.
[http://dx.doi.org/10.1016/j.physd.2006.11.008]
For the single-column model of the convective boundary layer (CBL):
* Troen, I. B., and L. Mahrt, 1986: A simple model of the atmospheric boundary layer; sensitivity to surface evaporation. Bound.-Layer Meteorol., 37, 129–148. [https://doi.org/10.1007/BF00122760]
%% Cell type:markdown id: tags:
# How to run a simple OSSE experiment
The default configuration files (in `json` format) are set to compute a single analysis that assimilates a single observation. For configuration details, see below. Simply run:
%% Cell type:code id: tags:
``` python
from ENDA import experiment
import pickle
import json
from PE_CBL_graphics import *
def get_experiment(settings_file):
with open(settings_file, 'r') as fp:
settings = json.load(fp)
exp = load_or_run(settings)
return exp
def load_or_run(settings):
try:
exp = pickle.load(open(settings['path']+'/'+settings['filename'], "rb"))
print('loaded experiment %s'%(settings['path']+'/'+settings['filename']))
except:
print('loading %s failed, running it'%(settings['path']+'/'+settings['filename']))
exp = experiment(settings)
pickle.dump(exp, open(settings['path']+'/'+settings['filename'], 'wb'))
return exp
exp = get_experiment('./default_da.json')
with open('./default_da.json', 'r') as fp:
settings = json.load(fp)
exp = experiment(settings)
```
%% Output
loading .//experiment.pickle failed, running it
Spinup : # ...done
Nature run : # ...done
Cycle 0000 : ########## ...done
%% Cell type:code id: tags:
``` python
from matplotlib import pyplot as p
fig = p.figure(151)
fig.set_size_inches(6,4)
ax1 = fig.add_subplot(1,1,1)
ax1 = plot_CBL_assimilation(exp,_,ax = ax1)
ax1.set_xlabel(r'$\theta$ (K)')
ax1.set_ylabel(r'$z$ (m)')
ax1.set_title(r'Ensemble state at $t=3600$ s')
ax1.legend(frameon=False)
```
%% Output
<matplotlib.legend.Legend at 0x1542d54f7850>
<matplotlib.legend.Legend at 0x1542d5630430>
%% Cell type:markdown id: tags:
# Configuration of the CBL model
See the file `default_cbl.json`
```
{
"g": 9.806,
"f": 0.0001,
"kvonk": 0.4,
"z0": 0.1,
"ug": 0,
"vg": 10,
"theta_0": 290,
"gamma": 0.003,
"Hmax": 0.1,
"H0_perturbation_ampl_init": 0.0,
"H0_perturbation_ampl_time": 0.0,
"exct": 0.3,
"pfac": 1.5,
"Kmin": 0.1,
"Kmax": 200,
"is_bwind": false,
"is_cgrad": true,
"is_cycle": false,
"dz": 50,
"ztop": 4000,
"rnseed": 181612,
"perturb_ensemble_state": true,
"perturbations_type": "smooth",
"perturbations_theta_amplitude": 0.1,
"perturbations_uv_amplitude": 0.1,
"perturbations_smooth_number": 11,
"perturbations_symmetric": true,
"error_growth_perturbations_amplitude": 0.1,
"perturb_ensemble_parameters": true,
"parameter_number": 1,
"parameter_transform": "pit",
"parameter_ensemble_min": 0.5,
"parameter_ensemble_max": 4.5,
"parameter_true": 1.5,
"do_parameter_estimation": true,
"parameter_inflation_rtps_alpha": 0.4,
"return_covariances_increments_and_innovations": true
}
```
%% Cell type:markdown id: tags:
# Configuration of the data assimilation cycle
See the file `default_da.json`
```
{
"cbl_settings_file": "./default_cbl.json",
"type": "OSSE",
"tspinup": 10800,
"trun": 3600,
"tspinup_assim": 0,
"assimilation_interval": 3600,
"randomize_obs": true,
"nobs": 1,
"obs_coordinates_min": 433,
"obs_coordinates_max": 433,
"obs_kinds": "theta",
"obs_error_sdev_generate": 0.2,
"obs_error_sdev_assimilate": 0.1,
"localization_cutoff": 400,
"nens": 50,
"FILTER": "EAKF",
"inflation_rtps_alpha": 0.1,
"simulate_underdispersiveness": false,
"rnseed": 181612,
"path": "./",
"filename": "experiment.pickle",
"label": "X",
"nature_run_from_file": false,
"do_parameter_estimation": true
}
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment