# SOΒΆ

The `SO`

engine solves the scalar radiative transfer equation using the successive orders technique.
The theoretical basis for the technique can be found in [Bourassa2008]. The `SO`

engine, which was developed for
ozone retrievals from odin-osiris measurements, is optimized for computational speed at the expense of memory.
The model solves the radiative transfer over a geographic region surrounding a location known as the *Reference Point*,
which is typically the location where the solution is actually required (eg location of limb scan etc.) The model
approximates the Earth as a sphere with the radius matching the North-South curvature of the true Earth
at the *Reference Point*.

The model works in two stages. The first stage is a *geometry* stage where all of the rays used by the model are traced
through the atmosphere and split into manageable segments throughout the atmosphere. Many geometrical factors and calculations generated
during the ray-tracing are internally cached and tabulated for later use by the second stage. The second stage peforms all the
*wavelength specific* calculations. The primary advantage of the `SO`

engine is that the ray tracing is performed
once and is shared between subsequent wavelength calculations. This saving can be significant within atmospheric retrievals where
the optical properties of the atmosphere are modified multiple times as part of the fitting process. On the other hand this strength is also a weakness
as (i) the ray tracing is not adaptive and cannot split rays when the optical depth is too large and (ii) the internal memory footprint can get large
if many diffuse profiles are required across the region of interest. The model works well for scenarios that avoids these two problem conditions, for example
uv-visible calculations with the Sun well above the horizon and small horizontal gradients in atmospheric properties.