DART Manhattan Documentation


Use DART in your lectures or demonstrations.

The DART tutorial outlines a step-by-step approach to the concepts of ensemble data assimilation. DART_LAB is a set of PDF presentation files and a set of MATLAB® examples that comprise a fully self-contained introduction to Data Assimilation and the Ensemble Kalman Filter concepts.


The DART Data Assimilation Toolkit

DART is a Data Assimilation Toolkit or Facility. It comprises a collection of both research and production tools, teaching materials, diagnostic routines, and is user-extensible by design.



Learn Data Assimilation with DART.

The DART tutorial outlines a step-by-step approach to the concepts of ensemble data assimilation. DART_LAB is a set of PDF presentation files and a set of MATLAB® examples that comprise a fully self-contained introduction to Data Assimilation and the Ensemble Kalman Filter concepts.



Use DART to run a 'perfect model' experiment.

Once a model is compatible with the DART facility, all of the functionality of DART is available. This includes 'perfect model' experiments (also called Observing System Simulation Experiments - OSSEs). Essentially, the model is run forward from a known state and, at predefined times, an observation forward operator is applied to the model state to harvest synthetic observations. This model trajectory is known as the 'true state'. The synthetic observations are then used in an assimilation experiment. The assimilation performance can then be evaluated precisely because the true state (of the model) is known.

There are a set of MATLAB® functions to help explore the assimilation performance in state-space as well as in observation-space.

All of the workshop and tutorial examples are 'perfect model' experiments. The ability to compare against 'the truth' is great for exploring what does and doesn't work during experimentation.

Every low-order model has a workshop_setup.csh that compiles all the executables needed to run an OSSE, and then actually runs them. The (empty) observation sequence files have been specified for what, where, and when 'observations' will be needed. This was done with create_obs_sequence and create_fixed_network_seq. Run them yourself if you want to understand exactly what it takes to create an observation sequence file devoid of the observation values. The examples are very run-time-output verbose - great for understanding what is going on, but just awful for performance. The run-time verbosity can be cut down when running larger models.

Some of the models have input values that are designed to produce poor (horrible, actually) assimilations, and some perform quite nicely. The DART Tutorial provides instructions on how to modify the filter input and diagnose the results.

For a more information on OSSE's go to our Getting Started: 'perfect model' example section.

 


Run low-order (small) models in DART.

The "low-order models" (Lorenz '63, '96, etc.) are a great place to start learning about data assimilation. These dynamical models were created as simple analogues to chaotic systems. Once you get comfortable running and exploring assimilations with the low-order models, you are well on your way to understanding assimilations with high-order (more realistic) models.



Run high-order (large) models in DART.

Many large geophysical models are already supported within DART, allowing one to leverage the knowledge gained from running the low-order models. The diagnostic routines, input mechanisms, etc., are as consistent as possible across the models.



Add your own model to DART.

DART is designed to make it easy to perform data assimilation with your own model with no changes to your model. DART doesn't care what language your model was written with, nor does it need to be MPI-aware to take advantage of multi-core machines. Advancing each ensemble member is fundamentally an 'embarrassingly parallel' operation.

A Fortran 90 module with a set of prescribed interface routines needs to be written. This model-specific module informs DART of the layout of the state variables, and must interpolate model data at specified locations to support computation of forward operator values. Generally some additional routines are also required to convert between the model output files and the DART file format.



Add support for new observations.

New observation types can be added, sometimes by simply adding a few lines to an existing source file and recompiling. For more complicated forward operators all required new code can be added to a new Fortran 90 module and compiled into the DART framework.


For synthetic observations (e.g. for doing OSSEs), new observations can be created with existing DART tools. For real observations, generally a converter program must be written to convert the observation information from the native format into DART observation sequence format. Many existing observation converters exist for common data formats which can be adapted for new observation types.



Use DART to explore new assimilation algorithms.

The DART source code is freely distributed and may be modified and extended. The coding footprint of the existing algorithms is pretty compact, making it as easy as possible to explore new assimilation research.