SasktranIF, 4.2.2 2017-04-26

SasktranIF (Sasktran Interface) API is suite of software for performing high precision scientific radiative calculations within Earth’s atmosphere and is primarily aimed at the atmospheric community. The code was originally developed by the ARG group in the Dept. of Physics and Engineering Physics at the University of Saskatchewan as the forward model for limb retrievals of ozone, aerosols and NO2 from measurements collected by the Odin-OSIRIS UV-VIS instrument on-board the Odin spacecraft. It is currently available for 64 bit editions of Python3 and Matlab; there are downloadable installation files for Windows (Python and MATLAB) and Linux (Python only). Other users may build the code from source from the ARG git server.

The SasktranIF API wraps high performance C++ software with a simplified class-based interface. The intent is to cut through the mass of detail stored within the C++ code and provide users with simpler interfaces that are not only too the point but also fast and efficient. We target Python and Matlab development platforms as these are popular within the scientific community (and are also the tools we use); we are aware that IDL is another poparstarstarular platform but we currently do not have resources to build interfaces for this platform (its a about couple of weeks work for anyone who knows what they are doing).

We currently provide interfaces to radiative transfer software solutions developed at the University of Saskatchewan but the framework is open so other groups at other institutions can develop and incorporate their own components.

SasktranIF Interfaces

Radiative transfer calculations within the SasktranIF framework consist of the following core conceptual components,

Class Description
ISKOpticalProperty Optical properties of individual atoms/molecules or particles present in the atmosphere.
ISKClimatology Number density and other properties of different species at different points in the atmosphere.
ISKEngine Mathematical techniques to trace rays through the described atmosphere and calculate observed radiances.
ISKBrdf Implements surface reflectance functions
ISKSolarSpectrum Conversion of calculations to an observed radiance needs an accurate solar spectrum at all wavelengths/wavenumbers.
ISKEmission Background radiating brightness of different locations in the atmosphere due to thermal or photo-chemical emissions.
ISKGeodetic Specify observers, lines of sight, tangent points and look directions we need a model of the oblate Earth.


The Sasktranif engines are the compnents that actually calculate radiances in the atmosphere,. The following engines have been developed and released

The table below is a quick guide that allows you to choose the engine that suits your radiative transfer requirements.

Application Wavelength Engine Technique
Limb Radiance EUV-NIR HR Successive Orders
Limb Radiance IR HIR Thermal emission
Nadir Radiance EUV-NIR
Nadir Radiance IR
Ground Slant Radiance EUV_NIR HR Successive Orders
Ground Slant Radiance IR HIR Thermal Emission
Ground Zenith Radiance EUV_NIR
Ground Zenith Radiance IR


Climatology objects provide the value of scalar parameters in the atmosphere. They are created using the ISKClimatology class and are used by radiative transfer engines to calculate atmospheric parameters such as number density, pressure and temperature. However, climatology objects can be built that support any scalar (atmospheric) parameter imaginable and can be used as stand-alone objects in other software projects.

Climatology Description
MSIS90 Simple background atmosphere using MSIS and CIRA.
NO2PRATMO NO2 PRATMO climatological model.
O3LABOW The Labow O3 ozone climatology.
USERDEFINED_PROFILE User defined height profiles
USERDEFINED_PROFILE_TABLE User defined height profile for legacy applications
USERDEFINED_PROFILE_PLANE User defined height profiles that vary along a great circle /plane.
USERDEFINED_PROFILE3D_LATLONHEIGHT User defined height profiles distributed across the surface of the Earth
ECMWF The ECMWF atmosphere. Needs external database files.
OSIRIS_ECMWF The ECMWF model interpolated to OSIRIS scans. Needs external database files.
OSIRISL2_AEROSOLRTMODEL_V507 The OSIRIS aerosol height profile generated in Version 5.07
OSIRISL2_AEROSOLMODERADIUS_V600 The OSIRIS aerosol mode radius profile generated in Version 6.00 (unofficial)
OSIRISL2_O3RTMODEL_V507 The OSIRIS O3 height profile generated in Version 5.07.
OSIRISL2_NO2RTMODEL_V507 The OSIRIS NO2 height profile generated in Version 5.07.
CONSTANTVALUE Climatology which is a constant value everywhere.
ONE_PRESSURE_TEMP Climatology which is a fixed pressure and temperature (useful for IR cross-sections)

Scalar parameters are identified using standard Climatology Handles/GUIDS

Optical Properties

Optical property objects provide the absorption, extinction and scattering of individual molecules/particles in the atmosphere. They are created using the ISKOpticalProperty class and are used by the radiative transfer engines to calculate scattering and extinction in the atmosphere. Many optical property classes are solely focused on the properties of a single molecule while a few classes support several species (eg Hitran); once created, all instances only support the properties of one molecule or particle.

Optical Property Description
RAYLEIGH Rayleigh Scattering following Bates.
MIEAEROSOL_XXX Spherical aerosols modeled with a Mie code
HITRANCHEMICAL_XXX HITRAN molecules combined with Voigt line-shapes.
NO2_BURROWS NO2 cross-sections. Burrows
NO2_OSIRISRES NO2 cross-sections used by OSIRIS V5.07 data processing.
NO2_VANDAELE1998 NO2 cross-sections. Vandaele.
O3_BASSPAURLINEAR O3 cross-sections. Bass-Paur with linear interpolation.
O3_BASSPAURQUADRATIC O3 cross-sections. Bass-Paur with quadratic interpolation.
O3_DBM O3 cross-sections. Daumont, Brion and Malicet.
O3_GOMEBURROWS O3 cross-sections. Burrows for the GOME instrument.
O3_OSIRISRES O3 cross-sections used by OSIRIS V5.07 data processing.
O3_SCIABOGUMILV3 O3 cross-sections. Bogumil V3.
O3_SCIABOGUMILV4 O3 cross-sections. Bogumil V4.
O3_SERDYUCHENKOV1 O3 cross-sections. Serdyuchenko
O3_VOIGT O3 cross-sections. Voigt.
USERDEFINED_TABLES User-defined temperature dependant tables
CONVOLVED_CROSSSECTION Cross-section derived from the convolution of a base cross-section

BRDF Surface Reflectances

The BRDF objects provide the surface reflectance of the ground. The interface currently supports scattering from one incoming direction to another. It is a function of the incoming zenith angle, outgoing zenith angle and the azimuthal difference between the the two directions.

BRDF Object Description
Lambertian BRDF Lambertian Surface Reflectance.
Roujean BRDF Roujean 1992, BRDF surface Reflectance
Kokhanovsky Snow BRDF Kokhanovsky 2012, Snow BRDF

Latest Changes

4.2.2 2017-04-26
  • Initial support of BRDF calculations inside the HR engine
  • Scaling fixed with Kokhanovsky and Roujean BRDF’s
  • Fixed some warnings that HR would output near solar zenith angle 90
  • Bug fix when calculating aerosol cross sections with multiple threads
  • Improved performance of HR precaching mode
4.2.1 2017-03-03
  • Fixed some warning when near the horizon with the new BRDF code
  • Bug fixes with the global registry
  • Added MIEAEROSOL_WATER and MIEAEROSOL_ICE optical properties
4.2.0 2016-12-20
  • Added the ISKBrdf interface into the Sasktran Interface.
4.0.5 2016-09-27
  • Added ISKClimatology::GetHeightProfile
  • Modified ISKEngine::AddSpecies so it will accept a blank ISKOpticalProperty object and modify just the climatology
  • Modified ISKOpticalProperty constructor so a blank (null) value can be created with default constructor

Indices and tables