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

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¶

EngineHR.num_orders_of_scatter

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

EngineHR.grid_spacing

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

EngineHR.surface_elevation

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

EngineHR.top_of_atmosphere_altitude

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

EngineHR.num_threads

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

EngineHR.polarization

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

Default: ‘scalar’

EngineHR.include_emissions

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

EngineHR.atmosphere_dimensions

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

Input

Setting

1

One-dimensional in altitude

2

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

3

Fully three-dimensional

Default: 1

EngineHR.refraction

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

EngineHR.num_diffuse_profiles