Programs included with DART

This list of programs is separated into groups which have similar functionality. Within each group they are sorted by the order in which they might be used and/or by how widely they are used.

Setting Up Experiments

In many cases, you won’t need to use any programs in Setting Up Experiments except for preprocess, because you’re using an existing model interface and have the observation sequence files. In that case, you the programs you’re looking for are probably in Assimilation Programs.


Program to insert observation specific code into DART before filter or perfect_model_obs is compiled.


Create inflation restart files with constant values taken from fill_inflation_restart_nml.


Construct a table that is read by filter at run-time to localize the impact of sets of observation types on sets of state vector quantities.


Program to test some of the more fundamental routines in any model_mod, especially a for a new model.


Generate an ensemble of perturbed ensemble member restart files. (Alternatively, you might perturb the model state using model_nml variables).


Computes a table of values needed to apply Sampling Error Correction (SEC), which corrects covariances based on small sample size statistics.

Creating Observation Sequence Files


Creates a short andor synthetic observation sequence file using values read from standard input.


Reads observation sequence file information from standard input and replicates it multiple times in a second observation sequence file, at user specified dates.


Create a set of observations located on a regular grid. Obs have no data values, but they are time ordered.


Randomly perturb the times of the observations in a (usually) set_def.out file. Writes the results to (usually)

Querying Observation Sequence Files


Summarize obs types, times, counts found in observation sequence file(s).


Prints out a quick table of obs types and counts, overall start and stop times, and metadata strings and counts. See obs_diag for more. There is an older version in the obs_assim_count directory.


Queries a set of observation sequence files to determine which observation locations report frequently enough to be useful for a verification study.


Prints the total error in the mean and spread from an obs_seq file which has been through both perfect_model_obs and filter, so it has copies ‘truth’, ‘ensemble mean’, and ‘ensemble spread’. You can get more information by running the obs_diag program.

Changing Observation Sequence Files


Subsets, combines, or alters observations from one or more observation sequence files and optionally writes them into a single output obs_seq file.


A template to read in observations from one obs_seq file and write them, optionally modified by user supplied code, to another obs_seq file.


Do a complete sort of an obs_seq file by location, observation type, then variance. An ancestor of obs_remove_dups.


Removes duplicate observations from an obs_seq file, which involves a complete sort by time, location, observation type, then variance.


Extracts observations out of one or more obs_sequence files according to a list of observation types, times, and locations. The list is usually created by obs_seq_coverage, but can be an observation sequence file.


Select the subset of observations, which were successfully assimilated, from two or more assimilation cases (which used the same obs_seq.out file).


Creates an output observation sequence file that is shorter than the input obs_seq file.


Reorders the observations from a forecast run of DART into a structure that is amenable for the evaluation of the forecast.


THIS IS NOT YET DONE! Help implement a data-denial experiment by randomly changing the error variance of N of each obs type in an observation sequence file to a huge value.

Assimilation Programs


Creates synthetic observation sequences from a hindcast model.


Main Fortran program for driving ensemble filter assimilations.


Provides a shell-scripting-friendly way to increment and decrement calendar dates and times.


Generic main program which advances a single ensemble member in perfect_model_obs or the serial or parallel version of the filter program.

Evaluating Results


Reads files, calculates statistics, and writes them to NetCDF files for use by Matlab (or other) plotting scripts. There are separate versions for models with different coordinate systems:


Extracts the observation components from observation sequence files and writes out netCDF files that can be used by other applications. such as diagnostics/matlab/plot_obs_netcdf* There are two versions; the standard version and one which filters out radiance metadata which is not needed by the scripts which use the resulting NetCDF file.


Compare fields in two NetCDF files and print out the min and max values from each file and of the difference between the two files.


Compute the time-mean ensemble error and spread in the same manner as the DART MATLAB diagnostic routine plot_total_err; in state space from and (or


Prints out a sorted order of which ensemble members are ‘closest’ to the mean, where the method for computing the ‘close’ metric is selectable by namelist option.

Historical and Deprecated


A collection of standalone programs for simulating various properties of ensembles. Talk to Jeff Anderson about the programs in this directory.


For use in the “async=4” case where both the main filter program and the hindcast model are MPI programs. The main MPI job script runs each of the model advances for the ensemble members, and then runs this program to restart the filter program.