Sasktran HR is the recommended default radiative transfer model that is primarily designed for limb viewing applications.

Polarization in SASKTRAN-HR

SASKTRAN-HR is capable of calculation the full Stokes vector. This option is controlled by setting two different things. The internal model calculation mode:

import sasktran as sk

engine = sk.EngineHR()

engine.polarization = 'vector'

In this mode all calculations will be done considering polarization, however the output will still be a single intensity element. To obtain the full Stokes vector you must pass the full_stokes_vector=True when calculating the radiance:

stokes = engine.calculate_radiance(full_stokes_vector=True)

See SASKTRAN-HR Examples for examples of usage.

Commonly Used Options


Controls the number of orders of scatter used inside the model. The number of orders of scatter controls the accuracy of the model. When set to 1, only light directly scattered from the sun is accounted for, with no multiple scattering.

The model runs substantially faster when set to 1 scatter order, therefore a common use case is to do development/testing with this property set to 1. There is very little speed difference between 2 orders of scatter and 50 orders of scatter, so usually it is recommended to set this to either 1 or 50.

Default: 50


Sets many options dealing with general grids and discretizations in the model. In general, if you are interested in things on the scale of 1000 m, then set this to 1000 m. For most applications setting this property is sufficient, however for advanced users it may be necessary to set some grids individually.

Default: 1000 m


Sets the elevation of the surface in [m] for the model. This setting can be used to account for changes in the Earth’s topography.

Default: 0 m


Sets the altitude of the top of the atmosphere. Above this altitude it is assumed there is no atmosphere. The default value of 100000 m is typically suitable for stratospheric applications but for the mesosphere it is sometimes necessary to increase this value.

Default: 100000 m


Controls the number of threads to use when multithreading the radiative transfer calculation. The default value of 0 indicates that the number of threads used will be equal to the number of available logical cores on the target machine.

Setting this value to a lower number than the number of available cores can be useful when running a radiative transfer calculation in the background and the computer is too slow to multitask.

Default: 0


The polarization mode of the model. Can either be set to ‘scalar’ or ‘vector’.

Default: ‘scalar’

Advanced Configuration


Enables support for atmospheric emissions inside the model. If set to True, any Emission objects that are included in the Atmosphere will be used in the radiative transfer calculation. Note that the default value is False, ignoring emissions.

Default: False


Sets the number of dimensions for the atmosphere in the radiative transfer calculation.




One-dimensional in altitude


Two-dimensional in altitude and angle along the line of sight


Fully three-dimensional

Default: 1


Determines whether or not refraction effects should be included in the radiative transfer calculation. If set to true, then refraction effects will be considered where the model supports it. Currently this is only available for the observer line of sight rays (solar rays and multiple scattering will not account for refraction).

Note that refraction support is experimental and may have some side effects. Currently known limitations are that the surface_elevation and top_of_atmosphere_altitudeproperty may not work properly with refraction enabled.

Enabling refraction also changes the ray tracer slightly, meaning that calculations with and without refraction enabled may differ slightly due to integration accuracies/quadrature points, etc. It is recommended to experiment with the grid_spacing property to ensure that the calculation is done with enough precision.

Default: false

Advanced Accuracy/Performance


Advanced option that controls the number of diffuse profiles in the model. If worried about the accuracy of the multiple scatter signal, this should be the first option to try changing. A diffuse profile represents a (latitude, longitude) where the multiple scatter signal is calculated. The default value of 1 indicates that the multiple scatter signal is only calculated at the reference point, or the average tangent point. If you increase the value to 5, then there will be 5 locations along the line of sight where the full multiple scatter calculation is done. Outside of these areas the multiple scatter signal is interpolated. Odd numbers of diffuse profiles are preferred (but not necessary) since this facilitates one profile being placed at the tangent point.

To determine if this setting has an effect on your calculation it is recommended to first compare the results between 1, 5, and 11 diffuse profiles.

The amount of diffuse profiles to obtain an accurate depends heavily on a variety of things, but most heavily the solar zenith and solar scattering angles. When the sun is high in the sky (low solar zenith angle) 1–3 diffuse profiles is usually sufficient. However, when looking across the solar terminator (sza ~90, ssa < 90) it might be necessary to use upwards of 50 diffuse profiles to obtain a signal accurate to better than 0.5%. More information on the number of required diffuse profiles can be found in Zawada, D. J., Dueck, S. R., Rieger, L. A., Bourassa, A. E., Lloyd, N. D., and Degenstein, D. A.: High-resolution and Monte Carlo additions to the SASKTRAN radiative transfer model, Atmos. Meas. Tech., 8, 2609-2623,, 2015.

Experimental Settings


Experimental option. If set to true, then single scattering along the line of sight is not calculated. Note that single scatter from the ground is still included if the line of sight intersects the Earth. Default: False.