CMAQv5.0 Updates to comply with Models-3/EDSS I/O API version 3.1

From CMASWIKI
Jump to: navigation, search

Interface with Models-3/EDSS I/O API version 3.1 - 9 February 2012

Shawn Roselle

The Models-3/EDSS I/O API version 3.1 includes several changes that impact how CMAQ interfaces with this library. Usage of the include files PARMS3.EXT, FDESC3.EXT, AND IODECL3.EXT is now deprecated, and replaced with module M3UTILIO. These I/O API include files had been used throughout the CMAQ code. One complication in CMAQ was related to the parallel implementation, because some of the I/O API functions were overloaded by the parallel I/O (PARIO) library functions at compile time.

The implementation design adopted for this version of CMAQ required several changes. First, a new module was created for the PARIO library called PARUTILIO. This module is analagous to the I/O API M3UTILIO module, providing the interface to the PARIO routines. Second, a new module (UTILIO_DEFN) was created for the CMAQ-CCTM that isolates access to both M3UTILIO and PARUTILIO to a single location. This provided a means for performing the function overloading within the CMAQ model instead of the previously used "cpp" flags.

In every file that previously used any of the I/O API include files, module UTILIO_DEFN is now used. All external declarations to I/O API functions have been removed, because they are included in the interface blocks provided by M3UTILIO via UTILIO_DEFN.

I/O API also deprecated usage of TRIMLEN. This has be replaced by intrinsic functions LEN_TRIM and TRIM.