AtmoData
Introduction
Purpose
In atmospheric chemistry and physics, one has to deal with the large amount of multidimensional data. Five-dimensional data is not unusual. The data is usually associated with coordinates, which means that facilities to manage gridded data are needed. AtmoData addresses these issues in a safe and convenient object-oriented framework.
In addition, AtmoData provides a set of physical functions and parameterizations. They range from basic functions to compute a Richardson number to state-of-the-art parameterizations to compute deposition velocities or vertical diffusion coefficients.
AtmoData has proven to be a reliable tool including in the context of the full modeling system Polyphemus (daily air-quality forecasts, ensemble forecast, data assimilation, ...). It is built so as to be a perennial library. Future developments will increase its amount of features and everyone is welcome to use AtmoData or to contribute to it. AtmoData is freely available under the GNU General Public License.
Content
AtmoData is a C++ library which provides:
- data processing facilities: thanks to relevant data structures. AtmoData includes objects for gridded data, for input/output operations in many formats (notably text, binary, NetCDF, Grib, MM5) and for coordinates transformation. Functions for statistics are also available.
- physical parameterizations: through a set of functions.
Details and references
Details about the design and the content of AtmoData are provided in:
[Available upon request] "Data processing and parameterizations in atmospheric chemistry and physics: the AtmoData library", V. Mallet and B. Sportisse, 2005, submitted to Atmospheric Environment (bib)AtmoData is based on libraries SeldonData and Talos.
Release Notes
Talos (from version 1.1 to version 1.2.1)
- Improvements:
- Added support for SWIG.
-
Added, in 'ExtStream' and 'ConfigStreams':
- 'GetValue(string name, string constraints, T& value)' and 'PeekValue(string name, string constraints, T& value)', which check that a numerical value read in a configuration file satisfies a list of constraints.
- 'GetValue(string name, string accepted, string& value, string delimiter)' and 'PeekValue(string name, string accepted, string& value, string delimiter)', which check that the value read in the configuration file is in a list of accepted values.
- 'GetValue(string name, T min, T max, T& value)' and 'PeekValue(string name, T min, T max, T& value)'.
- Added 'bool ConfigStream::GetElement(T&)'.
-
Modified, in 'ExtStream' and 'ConfigStreams':
- 'GetValue(string, T&)' and 'PeekValue(string, T&)' and their overloads now return nothing and raise an exception in case of problem, instead of returning a Boolean.
- 'GetValue(string, T&)' and 'PeekValue(string, T&)' try to get or peek the element immediately following the entry, even if they search for a number.
- Overloaded 'is_integer' for 'char*' and 'const char*', which may adequately shadow the Blitz++ template function 'is_integer'.
- Put an initialization to the usual delimiters in the default constructor of 'ExtStream'.
- Completed the reorganization of the code to split the declarations from the definitions.
- Bug fixes:
- In 'ExtStream' and 'ConfigStreams', a floating-point number could be accepted as an integral value.
SeldonData (from version 1.6 to version 1.6.4)
-
Improvements (from version 1.6.3):
-
Added methods to the class 'FormatNetCDF'
- 'FormatNetCDF::ReadDimension' which returns the length of a given dimension.
- 'FormatNetCDF::ReadAttribute' which reads an attribute of a NetCDF file.
-
Added methods to the class 'FormatNetCDF'
-
Bug fixes (from version 1.6.3):
- The copy constructor of 'Data' could not operate on a 'Data' instance with uninitialized grids.
-
Bug fixes (from version 1.6.2):
- 'RegularGrid::Value' used the index along dimension 7 instead of the index along dimension 5.
-
Bug fixes (from version 1.6.1):
- There were memory leaks in 'FormatGrib::Read'.
AtmoData (from version 1.3 to version 1.4.3)
-
Bug fix (from version 1.4.2 to version 1.4.3):
- Fixed a bug: the total number of LUC cells at the boundary of the computational domain was erroneous in 'GridCorrespondences'.
-
Improvements (from version 1.4):
-
Added coordinates transformations:
- LonlatToWRFLccInd
- LonlatToWRFMercInd
- LonlatToWRFStereInd
- Added two overloaded meteorological functions 'ComputeTemperature'.
-
Added coordinates transformations:
-
Bug fix (from version 1.4 to version 1.4.2):
- The function 'ComputeAttenuation_LWC' miscalculated the attenuation when clouds reached the upper model level.
- In the function 'LonLatToWRFLccInd', the index along the north-south direction was erroneous.
-
Bug fix (from version 1.3.2 to version 1.4):
- The operators () of the classes defined for MM5 in "CoordTransform.cxx" were shifted with an offset of 0.5 cell.
-
Bug fix (from version 1.3.1 to version 1.3.2):
- Fixed a bug in 'ComputeTotalCloudiness': the numbers of points along x and y ('Nx' and 'Ny') were wrongly set.
-
Bug fix (from version 1.3 to version 1.3.1):
- 'FormatMM5::ReadField(ifstream& FileStream)' could fail on huge input files.
Download AtmoData
Installation
Requirements:
- A decent C++ compiler: AtmoData is supposed to be compliant with the C++ standard and may be compiled by any complete C++ compiler. It has been successfully used with GNU GCC 3.2, 3.3, 3.4, 4.1 and 4.3 and with the Intel C++ compiler icc 7.1, 8.0, 9.0 and 9.1.
- The library Blitz++ (0.6 or later) available through the SourceForge package for Blitz++ ; for Debian users: just install the package "blitz++".
Installation:
- Download the AtmoData package (below).
- Expand the archive: tar jxvf AtmoData-[version].tar.bz2,
which creates a directory
codes
withAtmoData
,SeldonData
andTalos
in it. SeldonData and Talos are two additional libraries used by AtmoData. - Test the installation thanks to the example
codes/testInstallAtmoData.cpp
, compile testInstallAtmoData.cpp with (you may replace g++ by any good compiler)
g++ -IAtmoData -ISeldonData -ITalos testInstallAtmoData.cpp
and launch./a.out
. It should return:
Running the test... Statistics: (min = 280, max = 319.469, mean = 292.582, std = 11.9315) The test ended successfully.
Code
Latest release: AtmoData - version 1.4.3 (2010-11-03, based on SeldonData 1.6.4 and Talos 1.2.1 -- included in the archive)
Documentation
Overall design / reference for citation
The overall design and the purpose of the library is described in:
[Available upon request] "Data processing and parameterizations in atmospheric chemistry and physics: the AtmoData library", V. Mallet and B. Sportisse, 2005, submitted to Atmospheric Environment (bib)Please cite this paper in case you want to refer to AtmoData in a publication, a conference, a poster or so.
Scientific documentation
This documentation details the physical parameterizations and functions available in the library.
Download the scientific documentation.
Technical documentation
The user should first read SeldonData user's guide and then AtmoData user's guide. SeldonData is the underlying library that provides the data structures. AtmoData extends SeldonData with atmospheric-oriented facilities and one may use it easily if one knows how to use SeldonData. Note that a part of AtmoData has been written using Fortran and that a separate documentation exists for that part.
In each documentation, the user should first read the user's guide. The rest of the documentation provides individual descriptions of the classes, the methods and the functions available in the library, and one should refer to it when necessary (e.g. to search for a given function or to find the arguments of a given function).
Hence there are two main documentations:
- Browse SeldonData documentation online , or download it.
- Browse AtmoData documentation online , or download it (Note that the documentation available on download also contains the documentation for Fortran routines).
- Browse AtmoData documentation for Fortran routines .
Although it is not needed to use AtmoData, one could be interested in the documentation for Talos (provided with AtmoData): browse Talos documentation online , or download it.
Older Releases
-
Versions 1.7 to 1.7.4
- AtmoData - version 1.4.2 (2010-05-07, SeldonData 1.6.3 and Talos 1.2 are also included in the archive)
-
Version 1.6
- AtmoData - version 1.4 (2009-11-09, SeldonData 1.6.3 and Talos 1.2 are also included in the archive)
-
Version 1.4 and 1.5
- AtmoData - version 1.3.2 (2008-05-08, SeldonData 1.6.1 and Talos 1.1 are also included in the archive)
- Documentation for SeldonData 1.6.2
- Documentation for Talos 1.2
-
Version 1.3
-
Version 1.2 and 1.2.1
- AtmoData - version 1.2 (2007-04-27, SeldonData 1.5.1 and Talos 1.0 are also included in the archive.)
- AtmoData - version 1.2.1 (2007-06-22, SeldonData 1.5.1 and Talos 1.0 are also included in the archive.)
- Documentation for AtmoData 1.2 (including Fortran routines).
- Documentation for SeldonData 1.5.1
- Documentation for Talos 1.0
-
Version 1.1
- AtmoData - version 1.1 (2006-09-29, SeldonData 1.4 and Talos 0.3 are also included in the archive.)
- Documentation for AtmoData 1.1 (including Fortran routines).
- Documentation for SeldonData 1.5
- Documentation for Talos 0.4
-
Version 1.0
- AtmoData - version 1.0 (2004-10-13, SeldonData 1.4 and Talos 0.3 are also included in the archive.)
- Documentation for AtmoData 1.0
- Documentation for SeldonData 1.4
- Documentation for Talos 0.3