Jun. 29, 2005 Update
Note: This is an incremental update. Not all dependent codes/tarballs have been updated.
The Community Radiative Transfer Model (CRTM) under development at the Joint Center for Satellite Data Assimilation (JCSDA) is an important component in the NOAA/NCEP data analysis system. External research groups funded by JCSDA have also been making their contributions to its development. In order to help the developers to understand the requirements from the analysis system and to reduce the inconsistencies among the components developed by various groups, this web page will serve as an online source for information about the software framework for the development of the CRTM.
The main goal of this CRTM framework is to provide developers, and users, with the information, examples, and utilities necessary to produce software that is flexible (in both development and usage), understandable, and easily maintained.
The CRTM framework breaks the radiative transfer model into components (e.g. gaseous absorption, scattering, surface optics); each of which defines its own data structure and algorithm modules to faciliate independent development of each component. This characterisation is obviously an ideal one since there are dependencies -- in terms of both the physical problem being solved and in software details such as data sharing -- that will not allow every component to be developed in isolation from the others. So, this is not intended to be a replacement for necessary dialogue between developers, but to provide some form of "big picture" for all those involved to minimise or eliminate potential software conflicts and/or redundencies.
Due to the complexity of the radiative transfer problem and the difficulty of balancing the code efficiency and flexibility, we fully anticipate problems arising when the framework is applied in the development process. We sincerely welcome comments and suggestions for its improvement.
SpcCoeff_type CRTM_Atmosphere_type CRTM_AtmScatter_type
An instance of a structure is then referred to via its <name>, or some sort of derivate of its <name>. Some structure declarations examples are then,
TYPE( SpcCoeff_type ) :: SpcCoeff TYPE( CRTM_Atmosphere_type ) :: Atmosphere, Atmosphere_AD TYPE( CRTM_AtmScatter_type ) :: AtmScatter, AtmScatter_AD
where the adjoint structure variables are identified with an "_AD" suffix.
SpcCoeff_Define CRTM_Atmosphere_Define CRTM_AtmAbsorption_Define CRTM_AtmScatter_Define
The actual source code files for these modules have the same name with an ".f90" suffix.
CRTM_AtmAbsorption CRTM_SfcOptics
An exception to this convention is for the scattering application code. Separate modules have been provided to contain the aerosol and cloud absorption/scattering code,
CRTM_AerosolScatter CRTM_CloudScatter
Both of these modules use the AtmScatter structure definitions. For more details, see the AtmScatter section in the Developer's Interface.
Again, the actual source code files for these modules have the same name with an ".f90" suffix. Note that not all definition modules have a corresponding application module since some structures (e.g. SpcCoeff and Atmosphere structures) are simply data containers.