diff --git a/README.md b/README.md index 5505ac0e7934ff6ccb79a5060177f4b9a86851f1..bb9f6010b1c028ceb5c6db0d1834a33f22080a99 100644 --- a/README.md +++ b/README.md @@ -21,23 +21,52 @@ Functions return a SLURM ID which can be used to trigger the start of another fu Define simulation specific variables in [`config/cfg.py`](https://github.com/lkugler/DART-WRF/blob/master/config/cfg.py). Define paths for python, ncks, etc. in [`config/clusters.py`](https://github.com/lkugler/DART-WRF/blob/master/config/clusters.py). Dependencies are `numpy, pandas, scipy, xarray, netCDF4`. Install non-standard packages with `pip install docopt slurmpy --user`. +Workflow is defined using meta-routines (functions) like `run_ENS` which are defined in `scheduler.py`. ### Prepare initial conditions (from input_sounding) 1) Define starting time: -`begin = dt.datetime(2008, 7, 30, 7)` +`begin = dt.datetime(2008, 7, 30, 6)` 2) WRF needs directories with certain files: `id = prepare_WRFrundir(begin)` 3) Create 3D initial conditions from input_sounding etc.: `id = run_ideal(depends_on=id)` ### Run free forecast -... +Let's say you want to run a free forecast starting at 6z, which you want to use as prior for an assimilation at 9z. Then you need can use the above defined 3 steps to create initial conditions. +Then you can run an ensemble forecast using: +``` +id = run_ENS(begin=begin, # start integration from here + end=end, # integrate until here + input_is_restart=False, + output_restart_interval=(end-begin).total_seconds()/60, + depends_on=id) +``` +where `begin` & `end` are `dt.datetime` objects. + ### Prepare initial conditions from a previous run (wrfrst/wrfout) -`prepare_IC_from_prior` (set initial state to prior wrfrst/out) +If you want to assimilate at 9z then you need to set initial conditions from prior: path is `str`, times are `dt.datetime`. + +`id = prepare_IC_from_prior(prior_path_exp, prior_init_time, prior_valid_time, depends_on=id)` + +### Assimilate +To assimilate at time `time` use this command: + +`id = assimilate(time, prior_init_time, prior_valid_time, prior_path_exp, depends_on=id)` ### Update initial conditions from Data Assimilation -`update_IC_from_DA` (overwrite assimilated variables in initial state) +To update the model state after an assimilation, you need to update the WRF restart files by running +`id = update_IC_from_DA(time, depends_on=id)` +After this, the wrfrst files are copied to the WRF's run directories and you can continue to run the ENS after assimilation using + +``` +id = run_ENS(begin=time, # start integration from here + end=time + timedelta_integrate, # integrate until here + restart_path=cluster.archivedir+prior_init_time.strftime('/%Y-%m-%d_%H:%M/'), + output_restart_interval=timedelta_btw_assim.total_seconds()/60, + depends_on=id) +``` +where times are `dt.datetime`; `timedelta` variables are `dt.timedelta`. ### Examples [`scheduler.py`](https://github.com/lkugler/DART-WRF/blob/master/scheduler.py)