Tutorial 2: Run a forecast
There are two options to initialize a forecast.
Initialization from sounding profiles, i.e. defined profiles of temperature, humidity and wind, from
wrf_profilefiles (see WRF guide). Only usable for WRF’s idealized mode.Initialization from an previous forecast, i.e. from WRF restart files - optionally with updates from data assimilation.
a) Initialization from sounding profiles
It is necessary to set the path to the prepared WRF input soundings as argument to dartwrf.utils.Config.
input_profile = '/jetfs/scratch/wrf_profiles/raso.fc.<iens>.wrfprof'
where <iens> is a placeholder, since there is one file for each member, from raso.fc.001.wrfprof to raso.fc.040.wrfprof.
The input profiles are then copied into the WRF ensemble directories by w.prepare_WRFrundir(cfg).
Finally, with w.run_ideal(cfg), WRF’s ideal.exe program is called for all ensemble members
to create initial condition files, called wrfinput_d01, for each member.
Now we can go to step 3 to run the forecast.
b) Initialization from a previous forecast
Let’s say you want to run a forecast starting at 9 UTC until 12 UTC.
We use initial conditions of a previous experiment /user/test/data/sim_archive/exp_abc
which was initialized at 6 UTC and there are WRF restart files for 9 UTC.
Documentation can be found at dartwrf.workflows.WorkFlows.prepare_IC_from_prior().
import datetime as dt
cfg.update(
time = dt.datetime(2008, 7, 30, 6),
prior_init_time = dt.datetime(2008, 7, 30, 6),
prior_valid_time = dt.datetime(2008, 7, 30, 9),
prior_path_exp = '/user/test/data/sim_archive/exp_abc/',)
w.prepare_IC_from_prior(cfg)
Now, we are ready to run the forecast, or update the initial conditions with increments from assimilation.
Optional: Update posterior with increments from assimilation
To continue a forecast after assimilation you need the posterior = prior (1) + increments (2)
w.prepare_IC_from_prior(cfg)
w.update_IC_from_DA(cfg)
The second step updates the initial conditions, i.e. the WRFrst files (that were copied to the run_WRF directories),
with assimilation increments at time.
Now we can run the forecast ensemble.
Run the forecast
Set important parameters,
WRF_start: start time of the WRF simulationWRF_end: end time of the WRF simulationhist_interval_s(int): history output frequency in secondsrestart: whether it uses a restart filerestart_interval: interval in minutes to write restart files
and run
cfg.update( WRF_start=t,
WRF_end=t+timedelta_integrate,
restart=True,
restart_interval=restart_interval,
hist_interval_s=300,
)
id = w.run_WRF(cfg)
More documentation is in the docstring of dartwrf.workflows.WorkFlows.run_WRF().