DART/CAM modes and scripts for running filter and perfect_model_obs.

$Id: script_doc.html 6340 2013-07-31 14:15:20Z nancy $

In the filter the model can be advanced and the assimilation performed each in 3 different modes. The mode of the model advance is specified by the variable "async" in the filter_nml namelist in file input.nml. The mode of the assimilation is specified by the variable "do_parallel" in the assim_tools_nml namelist. Both variables are of type integer and can have the value 0, 2, or 3. (update for MPI)

async = 0

This mode should and can only be used with low-order models, which will be advanced by calls to a subroutine within filter. The filter is run in synchronous mode and is launched by executing


async = 1 (obsolete)

In this asynchronous mode, both the c-shell script and the fortran program "filter" run simultaneously. It can be used by low-order or large models. The filter is launched by executing

"async_filter.csh | filter"

The c-shell script waits for a file called "async_may_go" that is created by the filter. Once the filter has created the "async_may_go" file, the filter waits for async_filter.csh to finish. The script async_filter.csh executes another c-shell script called "advance_ens.csh", which advances the model and is described below. Then async_filter.csh removes the file "async_may_go", and signals that the filter can proceed (remember that the output of async_filter.csh is piped into the filter). Finally, async_filter.csh does a recursive call to itself to proceed to the next observation time in the obs_seq.out file.

"async_filter.csh" resides in DART/shell_scripts.

async = 2

This mode is intended to advance large models in a multiprocessor environment. In this mode, the filter is executed with


and the filter executes a system call which advances the model ensemble. The system call is specified in the file input.nml, in the namelists filter_nml and perfect_model_obs_nml, variable "adv_ens_command". The command can be a direct call to the c-shell script "advance_ens.csh", or some other suitable command such as "qsub -l nodes=8 advance_ens.csh" in a batch submission environment.

The c-shell script "advance_ens.csh" (resides in DART/shell_scripts). --------------------------------------------------------------------

The same c-shell script "advance_ens.csh" can be used with any of the available models in DART but remains platform-specific. This script should be adapted to the machine architecture and environment when DART is installed. Currently it can be called directly, in which case the computing resources (i.e. number and names of the processors) to use are specified in the script and the job runs interactively. Or the advance_ens.csh can be passed to qsub, which will handle the allocation of computing resources, and the job will run in batch mode. Other batch submission commands will require more extensive changes to advance_ens.csh. Model specific funtions should not be performed in this script, if possible.

The c-shell script "advance_model.csh" (resides in DART/models/"model"/shell_scripts). --------------------------------------------------------------------

For each ensemble member to be integrated forward in time, "advance_ens.csh" calls another c-shell script called "advance_model.csh". There should be a different "advance_model.csh" for each different model. Presently, "advance_model.csh" is available for the Lorenz-96 model in DART/models/lorenz_96/shell_scripts (this copy can also be used with the other available low-order models). The contents of advance_model.csh will depend entirely on the model being used; its I/O requirements, pre-existing scripts, etc. (as well as the shell environment). Platform specific functions should not be performed in this script, if possible.

Terms of Use

DART software - Copyright 2004 - 2013 UCAR.
This open source software is provided by UCAR, "as is",
without charge, subject to all terms of use at

Contact: Kevin Raeder
Revision: $Revision: 6340 $
Source: $URL: https://svn-dares-dart.cgd.ucar.edu/DART/releases/Lanai/models/cam/doc/script_doc.html $
Change Date: $Date: 2013-07-31 08:15:20 -0600 (Wed, 31 Jul 2013) $
Change history:  try "svn log" or "svn diff"