Calculates absorption and scattering cross sections for the given optical property with a specific atmospheric
state and location.
Parameters:
atmospheric_state (sasktran.Climatology) – Atmospheric state (sometime called background climatology, corresponds to
sasktran.Atmosphere.atmospheric_state). Typically the background climatology must
support temperature and pressure, e.g. msis90. Some optical properties may not need a background
climatology, for example Mie aerosols, however one must still be passed in for the function to operate.
latitude (float) – Latitude in degrees.
longitude (float) – Longitude in degrees.
altitude (float) – Altitude in meters.
mjd (float) – Modified Julian Date.
wavelengths (np.array) – Wavelengths in nm.
Returns:
NamedTuple with fields wavelengths, absorption, scattering, total. wavelengths field matches the input
wavelengths, absorption and scattering are the absorption and scattering cross sections respectively in
\(\mathrm{cm^2}\) and total is the sum of the two.
Calculates the scattering phase matrix for the given optical property with a specific atmospheric
state and location.
Parameters:
atmospheric_state (sasktran.Climatology) – Atmospheric state (sometime called background climatology, corresponds to
sasktran.Atmosphere.atmospheric_state). Typically the background climatology must
support temperature and pressure, e.g. msis90. Some optical properties may not need a background
climatology, for example Mie aerosols, however one must still be passed in for the function to operate.
latitude (float) – Latitude in degrees.
longitude (float) – Longitude in degrees.
altitude (float) – Altitude in meters.
mjd (float) – Modified Julian Date.
wavelengths (np.array) – Wavelengths in nm. Shape (N_wavel,)
cosine_scatter_angles (np.array) – Array of cosine of the scattering angle. Shape (N_angle,)
Returns:
phase_matrix – Array of shape (N_wavel, N_angle, 4, 4) of phase matrices.
Generic optical property container that is applicable to a wide variety of optical properties.
Parameters:
name (str) – Name of the optical property to create
psf_wavelength (np.ndarray) – array of wavelengths in nanometers where the point spread function is defined.
psf (np.ndarray) – array of point spread function values in nanometers. Same length as psf_wavelength
wavel_spacing (scalar, optional) – Spacing to calculate the high resolution wavelengths on in nanometers, default is 0.01nm
num_stdev (scalar, optional) – Number of standard deviations to use in the gaussian for convolution, default is 4
output_spacing (scalar, string optional) – Spacing to calculate the convolved cross section on. Either a scalar to use a fixed spacing, or None to use
the wavelengths of the point spread function (wavel parameter). Default is none.
Convolves down the hi-resolution cross sections and creates a user defined optical property. Convolution assumes
the hi-resolution version has infinite resolution
Parameters:
hires_optprop (sasktran.OpticalProperty) – sasktran OpticalProperty that will be convolved down to desired resolution.
wavel (numpy array) – Wavelengths to calculate the new cross section for in nm
psf (numpy array) – Standard deviations of the gaussian to convolve by for each wavelength
Can be the same size as wavel, or size 1 in which case the psf is assumed
to be the same for all wavelengths
wavel_spacing (scalar, optional) – Spacing to calculate the high resolution wavelengths on in nanometers, default is 0.01nm
num_stdev (scalar, optional) – Number of standard deviations to use in the gaussian for convolution, default is 4
output_spacing (scalar,string optional) – Spacing to calculate the convolved cross section on. Either a scalar to use a fixed spacing, or None to use
the wavelengths of the point spread function (wavel parameter). Default is none.
An optical property object that provides Rayleigh molecular scattering in dry-air. The code closely follows the
algorithm published by Bates 1984 and exactly replicates his cross-section calculations to the 4 significant digits
in his Table 1. The cross-section is weighted to account for the different gas ratios in standard atmospheric
composition. No attempt is made to track changes in CO2 composition. Note that water vapour effects are implicitly
ignored as it only considers dry air. The only difference with Bates is that this object takes into account the
tiny fraction of gas that is not N2, O2, Argon or CO2. Bates ignores this component while this object assumes it
the residual gas with properties similar to Argon.
Tabulated high resolution cross-sections of O3 measured by Daumont, Brion and Malicet in the early 1990’s [1].
The wavelength range slightly varies with temperature but covers the entire UV to NIR region, from 194.50 nm to
830.00 nm at 0.01 to 0.02 nm resolution. The cross-section data were collected at 0.01-0.02 nm resolution and
each wavelength/cross-section table varies in size from 22,052 to 63,501 entries. The data consists of 5 tables
of wavelength versus cross-section for 5 temperatures.
Notes
Temerature Range
Measurements are provided at 5 temperatures covering typical stratospheric and
tropospheric conditions:
218 K
228 K
243 K
273 K
295 K
Wavelength Range
The wavelength range of each temperature table is slightly different and is given below.
Note that most of the temperature variation occurs in the Huggins band
between 315 and 360 nm:
218K -> 194.50nm to 650.01nm
228K -> 194.50nm to 520.01nm
243K -> 194.50nm to 519.01nm
273K -> 299.50nm to 520.01nm
295K -> 195.00nm to 830.00nm
We looked into temperature interpolation and while DBM suggest that a quadratic interpolation scheme [3] they do
not indicate an explicit technique. We tested several quadratic fitting routines and found that a truncated linear
fit in temperature was visually more appealing than any of the quadratic fits and had none of the undesirable
artifacts (excessive curvature etc.) that naturally arise with quadratic curve fitting. Consequently this object
uses a truncated linear fit in temperature.
Data Source
These data are an exact replication of the data files:
”
These are the cross-sections used in the OSIRIS level 2 analysis for Saskmart V5.07. This table is based upon
the cross-sections of Bogumil Orphal and Burrows and has been reduced to the nominal resolution of the OSIRIS
instrument (approx. 1.0 nm). The cross-sections range from 270nm to 820 nm in 0.1 nm steps.
Calculates the absorption cross section of NO2 molecules from 230 nm to 795 nm and 221K to 293K. The cross-sections
have been reduced to the resolution of OSIRIS and these cross-sections have been used in the OSIRIS level 2 MART
retrievals.
Calculates the optical absorption and extinction of various atmospheric molecules using the Voigt line-shape and
the HITRAN spectral line database. The object supports all of the HITRAN species specified in the HITRAN database
file molparam.txt. This optical property requires additional configuration, see Configuration for more information.
Parameters:
chemical_name (str) – Chemical abbreviation of the molecule of interest.
isotope_filter (int, optional) – Allows the HITRAN object to load in just one isotope of the requested molecule. The value set must match one of
the isotope labels used for the given molecule in the HITRAN database file, molparam.txt. Note that the code
does not adjust the line strength but uses the line strength value as written in the HITRAN database. This
means you may have to account for and/or remove the abundance automatically built into the HITRAN database line
strength values.
line_tolerance (float, optional) – Allows the user to set the tolerance used to reject weak lines from the current micro-window as part of a speed optimization strategy. The default value
is 0.0 which disables the optimization. Larger values speed up calculation of spectra but may result in choppy spectra at the smaller
intensities, especially in extinction/absorption spectra which typically follow the log of the cross-section. A
smaller value will reduce choppiness but increase computational speed. Only values greater
than or equal to zero are acceptable. A value of 1.0E-09 is a good starting value for users wishing to investigate
the effectiveness of the speed optimization.
max_line_strength (float, optional) – Allows the user to manually set the maximum line strength within a micro-window. By default the object will take this value
from the strongest line in the micro-window. The value is used with the line tolerance to reject weak lines from
spectral calculations. A value of zero will disable the manual setting and reinstate usage of the default.
use_cache (bool, optional) – If true then cross sections will be cached when used internally inside a radiative transfer calculation.
The default is True, this should be left as True unless trying to calculate millions of wavelengths where
memory starts to become an issue.
An optical property object that provides Rayleigh molecular scattering without any corrections.
This is very similar to the sasktran.Rayleigh optical property except that the Bates correction factor
is not included. For most calculations it is preferred to use the sasktran.Rayleigh optical property
instead.
Scattering non-spherical ice crystals based upon the database from Baum.
Parameters:
effective_size_microns (float) – Size of the particles, typically from 10 microns to 50 microns
use_delta_eddington (bool, optional) – True if the delta eddington approximation is to be used. Should be True for use
in either the HR or DO engines. Default: True.
The collision induced absorption cross-sections measured by Fally et al. 2000.
The cross-sections were measured at room temperature with a Fourier Transform spectrometer in the 15000 to 29800 cm−1 region (335-667 nm) at a maximal optical path difference of 0.45 cm (resolution 2 cm-1).
Note that an appropriate climatology is the square of the O2 number density.
This is provided by climatologies that support SKCLIMATOLOGY_O2_O2_CM6.
The O2-O2 collision induced absorption cross-sections distributed in Hitran 2016 as described by Karman et al. 2019.
It is composed of 8 spectral regions measured by several researchers that extend from 335nm to over 8 microns.
Some of the regions are temperature dependent and others are not
The collision induced absorption cross-sections measured by Thalman et al. 2013.
The cross-sections were measured at room temperature with a Fourier Transform spectrometer in the 15000 to 29800 cm−1 region (335-667 nm) at a maximal optical path difference of 0.45 cm (resolution 2 cm-1).
Note that an appropriate climatology is the square of the O2 number density.
This is provided by climatologies that support SKCLIMATOLOGY_O2_O2_CM6. For example, see MSIS90 and ECMWF:
A user defined absorption optical property that is a function of temperature, pressure, wavelength, and VMR
of a secondary species that broadens the profile.
Parameters:
broadener_vmr (np.array) – VMR of the broadening species. Must be in ascending order. Shape (Nv)
pressures (np.array) – Pressure in Pa, must be in ascending order. Shape (Np)
temperatures (np.array) – Temperatures in K at each pressure level. Must be in ascending order. Shape (Np, Nt)
wavel_nm (np.array) – Wavelengths in nm. Must be in ascending order. Shape (Nw)
A user defined optical property for a scattering species that has constant optical properties in location space.
Currently this optical property only supports specifying the phase function in terms of the Legendre expansion,
this means that it is only useful for the SASKTRAN-DO engine.
The Legendre expansion is defined in terms of “greek” coefficients, where the phase matrix has the standard form
The phase function is then expanded in terms of Wigner functions (generalized spherical functions related to
Legendre polynomials/associated Legendre functions)
A profile quantifying something in/about the atmosphere. For example climatologies could be
used to define profiles for temperature, pressure, gas number densities, etc.
An object that describes the atmospheric constituents, and surface type to the engine.
Atmospheric constituents are defined by a list of Species, and surfaces are defined by
a given BRDF.