The Data Assimilation Research Testbed (DART) is a public-domain, community facility for doing research on and applying ensemble data assimilation techniques over a variety of models and observation types. It includes many example models and support for common observation types and for different filter types. It also includes material for teaching and learning the basic principles of data assimilation.
DART strives to implement general solutions which work over a range of models and observation types, and to develop theory-based algorithms that solve the many real problems encountered when doing ensemble data assimilation. The algorithms in DART are tested on both simple one-dimensional models (e.g. the Lorenz series of models) as well as full-up 3D NWP (Numerical Weather Prediction) models and GCMs (Global Climate Models). The basic Kalman filter code can be written in a few lines. In practice, however, there are a variety of difficulties resulting from sampling error, model bias, observation error, lack of model divergence, variations in observation density in space and time, etc. There are tools built into the DART framework to address many of these problems.
To get started, look here:
The best way to get to know the DART software is to follow along while reading the tutorial documents in the DART_LAB and then the DART/tutorial directory.
The latest official release is named "Lanai". See the extensive release notes Lanai_release which include installation help, a walk-through of building and running a model, and then examples of how to use the diagnostics to evaluate the success of the assimilation. See Lanai_diffs_from_Kodiak for a brief summary of changes since Kodiak, including new functionality, new models and tools, and any non-backwards-compatible changes since the Kodiak release.
Future releases of DART are expected to have substantial changes and will be less backwards compatible than has been historically true with DART releases. New development will continue on a separate subversion branch.
Every source file in the DART system has a corresponding .html file that contains specifics for public interfaces in each of the DART modules, for the executable programs which come with DART, and for how to interface new models into the DART system.
The remainder of this page contains links to all the documentation for this DART release.
Start here if you are looking for DART User-level HTML documentation. DART comes with an extensive set of documentation including release notes for each version, a walk-through on-line tutorial, and a full set of pdf tutorial materials.
The Lanai release notes include installation hints, a walk-through of building and running a model, and an overview of the diagnostics. It also includes a list of new or changed models, observation support, diagnostics, and non-backwards compatible changes.
For a shorter summary document of only the changes since the last release see Lanai_diffs_from_Kodiak. This may be more helpful for current DART users who are looking for pointers to differences when they update.
Three tutorials, in PDF format, are available. The first is more introductory and interactive with PDF documents and Hands-On Matlab exercises. The second is a longer, single PDF document which covers much of the background for how and why the algorithms in DART work. The full-fledged DART Tutorial is more of a workshop format, with multiple sections covering various parts of DART with suggested exercises at the end of most sections.
All sections below this one are detailed information on the programming interfaces of all the DART modules, the namelist details, the executable programs which are part of DART. For introductory materials, see the links above.
Here are the subversion updates which have been committed since the original release of the Lanai code.
|Commit Date||SVN Revision||Description|
|30 Dec 2016||10854||The observations/Ameriflux/level4_to_obs.f90 was corrected. It had been converting latent heat flux observations as sensible heat fluxes and vice-versa.|
|21 Dec 2016||10825||The doc/html/Lanai_release.html document was referencing documentation from the trunk instead of the Lanai release.|
|15 Nov 2016||10753||Minor code change to the AIRS observation converter to allow it to convert input HDF files which have a missing value in the "lowest valid level" field. Does not affect results for files which were able to be converted by the original code.|
|1 Nov 2016||10700||Code tree moved to a new subversion server as an intermediate step to converting to GIT. Revision numbers continue sequentially without a gap.|
|1 Aug 2016||10604||Documentation change only. Minor updates to the DART_LAB presentations to make the PDF files match the appearance of the updated Matlab® GUIs.|
|10 June 2016||10354|| Minor bug fix in the diagnostics. The
was updated to correctly set the QC values for the (computed)
*HORIZONTAL_WIND metrics. Recovering capability to run on
obs_seq.in and obs_seq.out
files for the purpose of determining how many obs are in what regions,
the summary of what obs are in the file, etc.
The obs_kind/DEFAULT_obs_kind_mod.F90 code was fixed so get_raw_obs_kind() correctly finds 'KIND_RAW_STATE_VARIABLE' kinds.
|20 April 2016||10131||Updates to the DART_LAB tutorial scripts which became out-of-date with changes to Matlab® GUI implementations circa R2014a. The new DART_LAB scripts work with most (if not all) relatively recent versions of Matlab. They look a little different from the examples in the tutorial, but the tutorial is scheduled to updated to reflect the new GUIs.|
|2 March 2016||9943||Doc change only. Updated the WRF example CONUS-V3 README file to point to the online web pages with instructions instead of the private wiki.|
|18 Feb 2016||9810||Minor bug fix to the NCEP prepbufr obs converters. Files with observations with errors > 10 would not convert correctly. Both the prep_bufr and ascii_to_obs directories need to be updated to get a consistent set of fixes.|
|8 Feb 2016||9730||Minor update to clarify code in the example text_to_obs.f90 converter. Make clear that wind direction is usually specified as the direction the wind comes from so the conversion to U/V components needs to reverse the direction.|
|6 Jan 2016||9422||Bug fix in the wrf model_mod which only affects runs using multiple domains where the domains contain different sets of variables. The DART diagnostic files might contain data for the wrong variable and could have the wrong stagger.|
|5 Jan 2016||9411||Minor bug fix in the adaptive inflation initialization code. It removes several array out-of-bounds accesses where the results were never used, so this bug did not change any results. It did however make debugging real array out-of-bounds errors more difficult.|
|7 Dec 2015||9189||Minor bug fix in the example MADIS observation conversion script. It did not supply enough inputs to the satellite wind converter which caused the convert to silently stop while waiting for additional input.|
|7 Oct 2015||8749||Bug fixes in two observation conversion programs. The Total Precipitable Water (TPW) converter was using an uninitialized value for the observation time. The MADIS rawin converter, if converting observations on vertical height levels (instead of pressure), was incorrectly discarding many valid significant-level wind observations. It was also using an uninitialized variable for the height QC values.|
|18 Aug 2015||8398||Bug fix in WRF. When using input.nml:&model_nml:default_state_variables = .false. it was possible to use a state variable layout that interlaced 2D variables and 3D variables. If the stagger of the 2D variable was different than the previous 3D variable, the DART diagnostic files were incorrect. This did not affect the WRF restart file in any way. An additional extension was made in support of the interpolation of the land mask in WRF. The bugfix is restricted to wrf/model_mod.f90 .|
|5 Aug 2015||8268 to 8336||Documentation/Tutorial updates: Major revisions to many of the DART/tutorial/*.pdf files in preparation for teaching a DART Workshop/Tutorial. Minor doc fixes in obs_kind/obs_kind_mod.html and DART_LAB.|
|24 June 2015||8130||Diagnostic fix: run_lorenz_63 and gaussian_product now work with Matlab Version 2014b new graphics paradigms. Fully backwards compatible with previous versions. Moved the DART_LAB/matlab 'helper' functions to be private, so the primary functions used in the DART_LAB exercises are easier to find.|
|17 June 2015||8058||Performance fix: Reordered the check for missing_r8 in the state during filter_assim. Now only checking for missing_r8 if allow_missing_in_clm = .true.|
|5 June 2015||8047||Bug fix for the MADIS Wind Profiler observation converter. Original code might not have rejected bad V wind observations or might have incorrectly flagged good V wind observations as bad.|
|3 Jun 2015||8044||Bug fix for the MADIS Satellite Winds observation converter. Original code might not have rejected duplicate observations or might have incorrectly flagged a unique observation as a duplicate.|
|15 May 2015||7986||Updates to the documentation and Matlab plotting routines for the Forced Lorenz 96 model.|
|14 May 2015||7980||Serious bug fix for a Matlab script in the DART_LAB tutorial. Subversion revisions between 7961 and 7980 will not run any examples correctly.|
|7 May 2015||7961||Updates to the DART_LAB tutorial PDFs and Matlab scripts. The PDFs have been updated extensively for clarity and style. The workshop exercises now initialize the random number generator consistently so successive runs compare exactly. The oned_model exercise now defines error and spread to be RMSE and standard deviation, consistent with use in the rest of DART. The run_lorenz_96 exercise plots the spread in addition to the error.|
|1 May 2015||7952||Minor documentation update only. Changed the index page for the DART Tutorial from pdf to html.|
|14 Apr 2015||7885||Minor bug fix for the obs_diag program. Avoid an error in the unusual case that the first wind observation processed was the V component and not U. Made output slightly less verbose. The observation summary for rank histogram is more complete.|
|5 Mar 2015||7668||Documentation update only. Fix broken links on the WRF model_mod page.|
|27 Feb 2015||7638||Bug fix for MPAS Atmosphere model_mod. Corrected an incorrect deallocation in an unusual case. Also minor fix to the obs_sequence_tool documentation to correct an example.|
|24 Feb 2015||7619||Minor bug fix for the obs_diag program, and minor changes to some of the Matlab plotting scripts. Added better support for trusted observation types. Print when an observation is rejected for multiple reasons that do not fit cleanly into one DART QC value. Add annotation to Matlab plots as a reminder that trusted observations do include observations rejected by the outlier threshhold. See the observation diagnostics documentation pages obs_diag for 1D obs or obs_diag for 3d obs for more information on trusted observations.|
|13 Jan 2015||7368||Bug fix for assimilating synthetic (OSSE) radar observations. These obs are intentionally created without a Nyquist velocity to avoid doing Doppler unfolding. The existing code failed when reading a missing Nyquist velocity; the fix disables this inconsistent error check.|
|7 Jan 2015||7345||Bug fix for the Compare_netCDF_files.m Matlab script. Now always prints out the data min/max for single files, and fixes a case where it might not have printed out differences when they existed in the two-file comparison case.|
|5 Jan 2015||7339||Bug fix if using different localization distances by specific types in the CAM model_mod. Also a performance improvement if using vertical localization.|
|5 Jan 2015||7338||Bug fix for the 3D sphere location module for NAG compiler only. It was doing a numerical computation in an unexpected (but legal) order. Resulted in not correctly testing for an error condition.|
|5 Jan 2015||7337||Bug fix for the POP ocean model interface code. Fixes computation of the ocean bottom for U/V current observations, and U/V increments located between the last and first longitude lines in the POP grid.|
|8 Oct 2014||7204||Documentation update only. Changed the WRF model_mod.html file to point users to the public web pages instead of requiring them to register for access to the DART Wiki.|
|26 Sep 2014||7184||Bug fix for the ensemble manager layout=2 (round-robin) option. If the number of tasks was between the ensemble size plus 4 and ensemble size plus 6 (inclusive), the filter run would fail.|
|29 Aug 2014||7161||Documentation update only. Fixed two places in the obs_sequence_tool html file where the first year of the Gregorian calendar said 1600 instead of the correct 1601.|
|7 Aug 2014||7112||Updates to default CLM input namelists. Set better inflation values in the CLM filter namelist, and fix inconsistencies in the template namelist for the shell_script/makedaily.sh observation preprocessing script.|
|22 Jul 2014||7085||Updates to the MATLAB scripts in the DART_LAB dir. They no longer require the MathWorks Statistics Toolbox (an additional product) to run. Also, the Lorenz 96 exercise was fixed so the menu button will successfully select different filter types.|
|13 Jun 2014||7019||Documentation-only update to the MPI docs to correct the name of a directory where the MPI tests are located.|
|6 May 2014||6983||Bug fix for the random number generator code. One compiler (Hitachi) requires full 64 bit constants inside the code. Also update one of the random number generator tests to compile correctly.|
|21 Apr 2014||6905||Bug fix for time manager code for NAG compiler only. It was doing a numerical computation in an unexpected (but legal) order. Resulted in all time values in NAG-compiled code having 0 seconds instead of the correct value.|
|11 Apr 2014||6881||Bug fix in the MPAS-ATM model_mod code which was doing the wrong computation for log pressure vertical interpolation.|
|10 Apr 2014||6879||Bug fix in wrf_dart_obs_preprocess if the case had multiple domains defined. Was increasing obs error values near the domain boundaries for nested domains, not just the exterior domains.|
|12 Feb 2014||6801||Performance improvements in the MPAS-ATM model_mod. Minor updates to the CESM scripts. Use 'head -n' and 'tail -n' in scripts for portability reasons. Fix confusing comments in a few scripts. Fix default values in some namelists.|
|31 Dec 2013||6708||Documentation update about Matlab toolbox requirements.|
|17 Dec 2013||6686||Minor updates to the default values in several of the input.nml namelists.|
|13 Dec 2013||6681||Original Lanai release.|
To update a checked-out version of DART to the most recent version of this release, cd into the top level directory and run:
To see the commit log messages and the filenames of changed files from subversion, cd into the top level DART directory and run:
svn log -v -r xxxx
where xxxx is the revision number.
To see the code differences in a particular file, cd into the directory with the file you want to compare and run:
svn diff -r xxxx filename
where xxxx is the revision number.
DART contains many library functions and separate executable programs. The main DART executable is the filter program. Other programs generate data or format the diagnostic information.
The executable programs that come with DART include:
The diagnostic programs that process observations after being assimilated by DART include:
The executable programs that convert observations into DART format include:
Executable programs specific to a single model. Many are converters from model file format to DART state vector, and back.
DART comes with several models which can be used to learn about data assimilation, to do actual experiments with real observations, or to use as a template for adding additional models to DART.
All models in the DART project have individual documentation pages, which can be found here (if an html document is not available, the link is to the .f90 source):
Generally read from the file input.nml. We adhere to the F90 standard of starting a namelist with an ampersand '&' and terminating with a slash '/'.
Programs with namelists:
Modules with namelists:
Models with namelists:
All modules in the DART project have individual documentation pages, which can be found here:
Additional documentation which didn't fit neatly into the other categories.
The kitchen sink - quick links to all existing html docs plus all model_mod source files in the DART distribution tree:
DART software - Copyright 2004 - 2013 UCAR.
This open source software is provided by UCAR, "as is",
|Contact:||DART core group|
|Revision:||$Revision: 10854 $|
|Source:||$URL: https://svn-dares-dart.cgd.ucar.edu/DART/releases/Lanai/index.html $|
|Change Date:||$Date: 2016-12-30 10:21:03 -0700 (Fri, 30 Dec 2016) $|
|Change history:||try "svn log" or "svn diff"|