The EDSS/Models-3 I/O API


NOTE: The I/O API web manual has been revised to conform with the MCNC Environmental Modeling Center's change of primary Internet addresses to *.emc.mcnc.org. At the same time, the page-naming scheme was changed somewhat, the pages were updated to match the very latest revisions to the I/O API, and additional new current-version source and binary dwownloads were made available.


The Models-3/EDSS Input/Output Applications Programming Interface (I/O API) provides the environmental model developer with an easy-to-learn, easy-to-use programming library for data storage and access, available from both Fortran and C. The same routines can be used for both file storage (using netCDF files) and model coupling (using PVM mailboxes). It is the standard data access library for both NCSC's EDSS project and EPA's Models-3.

The I/O API provides a variety of data structure types for organizing the data, and a set of access routines which offer selective direct access to the data in terms meaningful to the modeler. For example,

Read layer 1 of variable 'OZONE' from 'CONCFILE' for 5:00 PM GMT on July 19, 1988 and put the result into array A.
is a direct English translation of a typical I/O API READ3() call. "Selective direct access" means that this READ3 call retrieves exactly this ozone data immediately. It does not have to read through previous hours of data, nor whatever other variables (such as NOX or PAN) are in the file. Data can be read or written in any order (or not at all). This characteristic provides the following advantages: I/O API files also have the following characteristics

The I/O API also contains an extensive set of utility routines for manipulating dates and times, performing coordinate conversions, storing and recalling grid definitions, sparse matrix arithmetic, etc., as well as a set of data-manipulation and statistical analysis programs. It has an extensive documentation set, including

There are a variety of related programs which perform various analysis or data-manipulation tasks, including statistical analysis, file comparison, and data extraction.

Various extensions and research efforts to the I/O API are under development. These include data-parallel I/O, the use of the I/O API interacting with PVM for model coupling, and adding operations to read or write entire time series (with multiple time steps) as single operations.