40 likes | 133 Views
ACSPO v2.00 Effective Date: 10 May 2012. Yury Kihai, John Stroup, Sasha Ignatov, Boris Petrenko, and XingMing Liang NOAA/NESDIS/STAR John Sapper and Denise Frey NOAA/NESDIS/OSPO. Code Redesign and Optimization in ACSPO v2.00 .
E N D
ACSPO v2.00 Effective Date: 10 May 2012 Yury Kihai, John Stroup, Sasha Ignatov, Boris Petrenko, and XingMing Liang NOAA/NESDIS/STAR John Sapper and Denise Frey NOAA/NESDIS/OSPO ACSPO v2.00
Code Redesign and Optimization in ACSPO v2.00 The goal of ACSPO v.2.00 development has been redesign and optimization of the ACSPO code while retaining all the functionality of the previous ACSPO v.1.40. This included: • Moving away from legacy CLAVR-based design and code, which • Was designed for AVHRR cloud mask, not SST • Used numerous global common blocks • Had messy interfaces (e.g., data passed via global variables) • Contained a lot of redundant code • Was not very amenable for use with other sensors, ancillary files, and output formats • Development of separate, independent modules for each major ACSPO function, providing • Better overall structure • Clean, well-defined interfaces • Minimum of need to know details of entire system • Possibility of simultaneous development of different modules ACSPO v2.00
Code Redesign and Optimization in ACSPO v2.00 (Continued) • Elimination of global variables, which • Are confusing and error-prone • Easily lead to unintended side-effects (i.e., changing a value in one part of code and having it unintentionally affect some other part of code) • Movement of satellite/device independent functions in special library module, which can be compiled as static library and used for ACSPO and other projects • Elimination of redundant code • Easier maintenance • Replacement of old style FORTRAN 77 code with FORTRAN 95-2003 style • Better suited for modern compiler and auto parallel optimization • Overall functionality the same as in previous version, but with improved graceful degradation support against problems with input ancillary data ACSPO v2.00
Configuration Files in ACSPO v.2.00 In ACSPO v.2.00, the majority of satellite/device specific constants and conditions were moved from code to configuration files. This added the following capabilities: • Parameters and thresholds can be adjusted without code modification and recompilation • Processing can be data driven (e.g., providing capability to use same code for multiple sensors) The main features of ACSPO 2.00 configuration files are: • One configuration file defined for program and one for each module • All attributes and layers defined in program-level configuration file • Interfaces between modules and attributes/layers defined in program-level configuration file • Configuration files store module-specific constants and thresholds that would otherwise be specified in the code ACSPO v2.00