diff --git a/docs/source/tutorial1.ipynb b/docs/source/tutorial1.ipynb index 8b15c140b73e35cd432f583d55590b40c8191819..089800e61916a0087a3725de25032a197003abed 100644 --- a/docs/source/tutorial1.ipynb +++ b/docs/source/tutorial1.ipynb @@ -7,7 +7,8 @@ "source": [ "# Tutorial 1: The assimilation step\n", "DART-WRF is a python package which automates many things like configuration, saving configuration and output, handling computing resources, etc.\n", - "\n" + "\n", + "The data for this experiment is accessible for students on the server srvx1.\n" ] }, { @@ -19,6 +20,13 @@ "Firstly, you need to configure the experiment in `config/cfg.py`.\n", "\n", "Let's go through the most important settings:\n", + "- expname should be a unique identifier and will be used as folder name\n", + "- model_dx is the model resolution in meters\n", + "- n_ens is the ensemble size\n", + "- update_vars are the WRF variables which shall be updated by the assimilation\n", + "- filter_kind is 1 for the EAKF (see the DART documentation for more)\n", + "- prior and post_inflation defines what inflation we want (see the DART docs)\n", + "- sec is the statistical sampling error correction from Anderson (2012)\n", "\n", "```python\n", "exp = utils.Experiment()\n", @@ -30,38 +38,46 @@ "exp.prior_inflation = 0\n", "exp.post_inflation = 4\n", "exp.sec = True\n", - "exp.cov_loc_vert_km_horiz_km = (3, 20)\n", + "\n", + "```\n", + "In case you want to generate new observations like for an observing system simulations experiment, OSSE), set \n", + "```python\n", + "exp.use_existing_obsseq = False`.\n", "```\n", - "In case you want to generate new observations (observing system simulations experiment, OSSE), set `sxp.use_existing_obsseq = False`.\n", "\n", - "`exp.nature` defines where observations will be drawn from, e.g.:\n", + "`exp.nature` defines which WRF files will be used to draw observations from, e.g.: \n", "```python\n", - "exp.nature = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.18_P1_nature/2008-07-30_06:00/1'\n", + "exp.nature = '/users/students/lehre/advDA_s2023/data/sample_nature/'\n", "```\n", "\n", "`exp.input_profile` is used, if you create initial conditions from a so called wrf_profile (see WRF guide).\n", "```python\n", - "exp.input_profile = '/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof'\n", + "exp.input_profile = '/doesnt_exist/initial_profiles/wrf/ens/raso.fc.<iens>.wrfprof'\n", "```\n", "\n", - "Vertical localization is tricky to set.\n", - "For horizontal localization half-width of 20 km and 3 km vertically, set\n", - "`exp.cov_loc_vert_km_horiz_km = (3, 20)`\n", - "You can also set it to zero for no vertical localization.\n", "\n", + "For horizontal localization half-width of 20 km and 3 km vertically, set\n", + "```python\n", + "exp.cov_loc_vert_km_horiz_km = (3, 20)\n", + "```\n", + "You can also set it to False for no vertical localization.\n", "\n", - "Set you desired observations like this. \n", + "#### Single observation\n", + "Set your desired observations like this. \n", "```python\n", "t = dict(plotname='Temperature', plotunits='[K]',\n", " kind='RADIOSONDE_TEMPERATURE', \n", - " n_obs=1, obs_locations=[(45., 0.)],\n", - " error_generate=0.2, error_assimilate=0.2,\n", - " heights=[1000,], # range(1000, 17001, 2000),\n", - " cov_loc_radius_km=50)\n", - "\n", - "exp.observations = [t,]\n", + " n_obs=1, # number of observations\n", + " obs_locations=[(45., 0.)], # location of observations\n", + " error_generate=0.2, # observation error used to generate observations\n", + " error_assimilate=0.2, # observation error used for assimilation\n", + " heights=[1000,], # for radiosondes, use range(1000, 17001, 2000)\n", + " cov_loc_radius_km=50) # horizontal localization half-width\n", + "\n", + "exp.observations = [t,] # select observations for assimilation\n", "```\n", "\n", + "#### Multiple observations\n", "To generate a grid of observations, use\n", "```python\n", "vis = dict(plotname='VIS 0.6µm', plotunits='[1]',\n", @@ -70,6 +86,7 @@ " error_generate=0.03, error_assimilate=0.03,\n", " cov_loc_radius_km=20)\n", "```\n", + "\n", "But caution, n_obs should only be one of the following:\n", "- 22500 for 2km observation density/resolution \n", "- 5776 for 4km; \n", @@ -100,7 +117,7 @@ "To assimilate observations at dt.datetime `time` we set the directory paths and times of the prior ensemble forecasts:\n", "\n", "```python\n", - "prior_path_exp = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_noDA'\n", + "prior_path_exp = '/users/students/lehre/advDA_s2023/data/sample_ensemble/'\n", "prior_init_time = dt.datetime(2008,7,30,12)\n", "prior_valid_time = dt.datetime(2008,7,30,12,30)\n", "assim_time = prior_valid_time\n",