Meteorological Diagnostic Software

The MetCal/SPA (Shared Procedure Archive) meteorological diagnostics package has been under development since early in 2000. It began as a set of loosely-coupled computational routines packaged into a library for maintenance purposes, and has since evolved into a flexible synoptic/mesoscale diagnostics package for meteorological applications. A Tcl-based GUI provides end-users with easy access to most of the computational routines now contained in the archive. The unique quality of the software, however, comes from the fact that the SPA encourages the continuous development, refinement, and extension of its own code through a set of utilities which make up the easy-to-use, text-based "developer's interface".

The dynamic nature of the package ensures that it is easily extendable for new I/O file types, for additional diagnostic algorithms, and for enhanced functionality. In the spirit of open source development, the administrators and developers of the package appreciate any and all input from the community regarding the software. This can take the form of patches, bug reports, suggestions for future developments, et cetera. The SourceForge summary page for the project provides information about the various ways that you contribute to the metcal/SPA project.

Support This Project
View Recent Donations


MetCal (the Meteorological Calculator) is the primary end-user interface for the package. The GUI is written in perl/Tk and provides the user with a three page notebook by which to access the computational routines of the archive. The first page (File I/O) allows the user to specify the input and output files to be accessed for the diagnosis.

The second tab in the notebook (Major Modes) allows the user to select between the primary operation modes of MetCal. The default major mode is "Standard Outputs", for which the definitions occur on the third notebook page. For all other Major Modes, a separate window is opened with the options specific for that mode. For example, MetCal can perform horizontal filtering, vertical interpolation, simple mathematical operations (especially useful for unit conversions), cyclone tracking, field averaging, and other useful functions. All of these options are accessible as Major Modes. For users familiar with the interface, these modes are also selectable under the "Calculations" menu.

The final notebook page of MetCal (Output Fields) applies only to users operating in the "Standard Outputs" major mode (as selected in the above figure). The page allows the user to specify which diagnostic output fields are required. Any number of these output fields, roughly organized under "dynamic", "thermodynamic", and "" headings, can be selected for a given input file. The "Input Variables" button on the right side of the page allows the user to set the source file (Input File 1 or 2, as defined on the File I/O page), units, and variable type for each of the required input fields. MetCal is very good at determining which of the possible input fields are required, but you can ask for more inputs if you feel that you need to.

Currently, the archive supports RPN Standard Files (default) and Gempak data files as input, and produces the same file type as output. The type of file to be dealt with should be set under the "File"->"File Settings" menu. We hope to be adding new file I/O flexiblity in the near future.

The Shared Procedure Archive

The SPA is the backbone of the MetCal/SPA system since it is the underlying library accessed by the MetCal interface. Without the SPA, MetCal is simply pretty - and pretty useless. The routines in the archive are written in FORTRAN90, although extension of the archive could equally well occur in C/C++ if developer's are so inclined. A set of I/O subroutines make up the bulk of the non-computational portion of the archive, while the remainder of the subprograms (mostly array-valued functions) are diagnostically-oriented.

A user who accesses the SPA solely through MetCal will never see the archive itself; however, anyone interested in computing a diagnostic quantity not accessible through MetCal (check first that it's not already in the archive - MetCal doesn't have access to all of the routines in the SPA), fixing a bug in the top-level construction routines, or digging right in and adding a new file I/O format, will quickly become familiar with the SPA. A set of developer's interface utilities are included with the distribution in order to ease the development process. In fact, a new diagnostic function can be added in a matter of minutes once you're at home with the developer's tools. The online manual, downloadable manual, and texinfo resources contain detailed information concerning the developer's interface. Further information is contained in a series of manual pages for the utilities.

Other Resources

The original homepage for the MetCal/SPA package is still hosted by the Mesoscale Research Group (MRG) of McGill University and contains additional information about earlier versions of the distribution.

Both online and downloadable manuals are available for the MetCal/SPA package.

The latest version of the MetCal/SPA package can be downloaded from SourceForge.

Support This Project


The MetCal/SPA package was originally developed at McGill University by Ron McTaggart-Cowan, Jason Milbrandt, Scott Weese, and other members of the MRG under the supervision of John Gyakum and Peter Yau. Since August 2003, Ron has been the administrator of the open source MetCal/SPA project hosted by SourceForge and is the primary contact for the project.

The developers of the MetCal/SPA package thank SourceForge for their willingness to host this project. Logo