Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
DART-WRF
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
DataAssimilation
DART-WRF
Commits
15e3fed6
Commit
15e3fed6
authored
2 years ago
by
lkugler
Browse files
Options
Downloads
Patches
Plain Diff
.
parent
1da7c512
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
docs/source/tutorial1.ipynb
+1
-1
1 addition, 1 deletion
docs/source/tutorial1.ipynb
with
1 addition
and
1 deletion
docs/source/tutorial1.ipynb
+
1
−
1
View file @
15e3fed6
...
...
@@ -90,7 +90,7 @@
"\n",
"\n",
"\n",
"### Assimilate observations
with a prior given by previous forecasts
\n",
"### Assimilate observations\n",
"We start by importing some modules:\n",
"```python\n",
"import datetime as dt\n",
...
...
%% Cell type:markdown id:fd5c3005-f237-4495-9185-2d4d474cafd5 tags:
# Tutorial 1: The assimilation step
DART-WRF is a python package which automates many things like configuration, saving configuration and output, handling computing resources, etc.
%% Cell type:markdown id:93d59d4d-c514-414e-81fa-4ff390290811 tags:
### Configuring the experiment
Firstly, you need to configure the experiment in
`config/cfg.py`
.
Let's go through the most important settings:
```
python
exp
=
utils
.
Experiment
()
exp
.
expname
=
"
test_newcode
"
exp
.
model_dx
=
2000
exp
.
n_ens
=
10
exp
.
update_vars
=
[
'
U
'
,
'
V
'
,
'
W
'
,
'
THM
'
,
'
PH
'
,
'
MU
'
,
'
QVAPOR
'
,
'
QCLOUD
'
,
'
QICE
'
,
'
PSFC
'
]
exp
.
filter_kind
=
1
exp
.
prior_inflation
=
0
exp
.
post_inflation
=
4
exp
.
sec
=
True
exp
.
cov_loc_vert_km_horiz_km
=
(
3
,
20
)
```
In case you want to generate new observations (observing system simulations experiment, OSSE), set
`sxp.use_existing_obsseq = False`
.
`exp.nature`
defines where observations will be drawn from, e.g.:
```
python
exp
.
nature
=
'
/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.18_P1_nature/2008-07-30_06:00/1
'
```
`exp.input_profile`
is used, if you create initial conditions from a so called wrf_profile (see WRF guide).
```
python
exp
.
input_profile
=
'
/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof
'
```
Vertical localization is tricky to set.
For horizontal localization half-width of 20 km and 3 km vertically, set
`exp.cov_loc_vert_km_horiz_km = (3, 20)`
You can also set it to zero for no vertical localization.
Set you desired observations like this.
```
python
t
=
dict
(
plotname
=
'
Temperature
'
,
plotunits
=
'
[K]
'
,
kind
=
'
RADIOSONDE_TEMPERATURE
'
,
n_obs
=
1
,
obs_locations
=
[(
45.
,
0.
)],
error_generate
=
0.2
,
error_assimilate
=
0.2
,
heights
=
[
1000
,],
# range(1000, 17001, 2000),
cov_loc_radius_km
=
50
)
exp
.
observations
=
[
t
,]
```
To generate a grid of observations, use
```
python
vis
=
dict
(
plotname
=
'
VIS 0.6µm
'
,
plotunits
=
'
[1]
'
,
kind
=
'
MSG_4_SEVIRI_BDRF
'
,
sat_channel
=
1
,
n_obs
=
961
,
obs_locations
=
'
square_array_evenly_on_grid
'
,
error_generate
=
0.03
,
error_assimilate
=
0.03
,
cov_loc_radius_km
=
20
)
```
But caution, n_obs should only be one of the following:
-
22500 for 2km observation density/resolution
-
5776 for 4km;
-
961 for 10km;
-
256 for 20km;
-
121 for 30km
For vertically resolved data, like radar, n_obs is the number of observations at each observation height level.
%% Cell type:markdown id:16bd3521-f98f-4c4f-8019-31029fd678ae tags:
### Configuring the hardware
In case you use a cluster which is not supported, configure paths inside
`config/clusters.py`
.
### Assimilate observations
with a prior given by previous forecasts
### Assimilate observations
We start by importing some modules:
```
python
import
datetime
as
dt
from
dartwrf.workflows
import
WorkFlows
```
To assimilate observations at dt.datetime
`time`
we set the directory paths and times of the prior ensemble forecasts:
```
python
prior_path_exp
=
'
/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_noDA
'
prior_init_time
=
dt
.
datetime
(
2008
,
7
,
30
,
12
)
prior_valid_time
=
dt
.
datetime
(
2008
,
7
,
30
,
12
,
30
)
assim_time
=
prior_valid_time
```
Finally, we run the data assimilation by calling
```
python
w
=
WorkFlows
(
exp_config
=
'
cfg.py
'
,
server_config
=
'
srvx1.py
'
)
w
.
assimilate
(
assim_time
,
prior_init_time
,
prior_valid_time
,
prior_path_exp
)
```
Congratulations! You're done!
%% Cell type:code id:82e809a8-5972-47f3-ad78-6290afe4ae17 tags:
```
python
```
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment