Scattering Module Methods & Types

Defining the Mie Computation Model

vSmartMOM.Scattering.make_mie_modelFunction
make_mie_model(computation_type::NAI2, aerosol::AbstractAerosolType, λ::Real, polarization::AbstractPolarizationType, truncation_type::AbstractTruncationType)

Convenience function to create Mie Model with NAI2 computation type

make_mie_model(computation_type::PCW, aerosol::AbstractAerosolType, λ::Real, polarization::AbstractPolarizationType, truncation_type::AbstractTruncationType, wigner_filepath::String)

Convenience function to load Wigner matrices from file and create Mie Model with PCW computation type

make_mie_model(computation_type::PCW, aerosol::AbstractAerosolType, λ::Real, polarization::AbstractPolarizationType, truncation_type::AbstractTruncationType, wigner_A, wigner_B)

Convenience function to take in Wigner matrices and create Mie Model with PCW computation type

Creating/Saving Wigner Matrices (if using PCW method)

vSmartMOM.Scattering.compute_wigner_valuesFunction
compute_wigner_values(m_max::Integer, n_max::Integer, l_max::Integer)

Compute the Wigner 3j values for all (m, n, l) combinations up to m/n/l max, for (m1, m2, m3) = (-1, 1, 0) (wignerA) and (-1, -1, 2) (wignerB)

compute_wigner_values(N_max)

Shorthand for computewignervalues(2Nmax + 1, Nmax + 1, 2N_max + 1)

Computing Aerosol Optical Properties

vSmartMOM.Scattering.compute_aerosol_optical_propertiesFunction
compute_aerosol_optical_properties(model::MieModel{FDT}) where FDT<:NAI2

Reference: Suniti Sanghavi 2014, https://doi.org/10.1016/j.jqsrt.2013.12.015

Compute the aerosol optical properties using the Siewert-NAI2 method Input: MieModel, holding all computation and aerosol properties Output: AerosolOptics, holding all Greek coefficients and Cross-Sectional information

compute_aerosol_optical_properties(model::MieModel{FDT}) where FDT<:PCW

Reference: Suniti Sanghavi 2014, https://doi.org/10.1016/j.jqsrt.2013.12.015

Compute the aerosol optical properties using the Domke-PCW method Input: MieModel, holding all computation and aerosol properties Output: AerosolOptics, holding all Greek coefficients and Cross-Sectional information

compute_aerosol_optical_properties(model::MieModel{FDT})

Reference: Suniti Sanghavi 2014, https://doi.org/10.1016/j.jqsrt.2013.12.015

This function enables user to specify whether to perform auto-differentiation (using either computation type) Input: MieModel, holding all computation and aerosol properties & autodiff flag (whether to perform auto-differentiation) Output: AerosolOptics, holding all Greek coefficients and Cross-Sectional information

Reconstructing Phase Function

vSmartMOM.Scattering.reconstruct_phaseFunction
$(FUNCTIONNAME)(greek_coefs, μ; returnLeg = false)

Returns the reconstructed elements of the 4x4 scattering matrix at positions f₁₁, f₁₂, f₂₂, f₃₃, f₃₄, f₄₄ from the greek coefficients

f₁₁ represents the phase function p for the Intensity (first Stokes Vector element) and is normalized as follows:

\[\frac{1}{4\pi}\int_0^{2\pi}d\phi \int_{-1}^1 p(\mu) d\mu = 1\]

  • greek_coefs greek coefficients (Domke Type)
  • returnLeg if false (default), just return f₁₁, f₁₂, f₂₂, f₃₃, f₃₄, f₄₄, if true,
  • return f₁₁, f₁₂, f₂₂, f₃₃, f₃₄, f₄₄, P, P² (i.e. also the two legendre polynomials as matrices)

Types

Aerosol Types

Fourier Decomposition Computation Types

vSmartMOM.Scattering.NAI2Type
type NAI2

Perform Siewart's numerical integration method, NAI-2, to compute aerosol phase function decomposition. See: http://adsabs.harvard.edu/full/1982A%26A...109..195S

vSmartMOM.Scattering.PCWType
type PCW

Perform Domke's Precomputed Wigner Symbols method, PCW, to compute aerosol phase function decomposition. See: http://adsabs.harvard.edu/full/1984A%26A...131..237D

Polarization Types

vSmartMOM.Scattering.Stokes_IQUVType
struct Stokes_IQUV{FT<:AbstractFloat}

A struct which defines full Stokes Vector ([I,Q,U,V]) RT code

Fields

  • n

    Number of Stokes components (int)

  • D

    Vector of length n for ... (see eq in Sanghavi )

  • I₀

    Incoming Stokes vector for scalar only

vSmartMOM.Scattering.Stokes_IQUType
struct Stokes_IQU{FT<:AbstractFloat}

A struct which defines Stokes Vector ([I,Q,U]) RT code

Fields

  • n

    Number of Stokes components (int)

  • D

    Vector of length n for ... (see eq in Sanghavi )

  • I₀

    Incoming Stokes vector for scalar only

vSmartMOM.Scattering.Stokes_IType
struct Stokes_I{FT<:AbstractFloat}

A struct which define scalar I only RT code

Fields

  • n

    Number of Stokes components (int)

  • D

    Vector of length n for ... (see eq in Sanghavi )

  • I₀

    Incoming Stokes vector for scalar only

Truncation Types

vSmartMOM.Scattering.δBGEType
type δBGE{FT} <: AbstractTruncationType

Fields

  • l_max

    Trunction length for legendre terms

  • Δ_angle

    Exclusion angle for forward peak (in fitting procedure) [degrees]

Mie Computation Model Type

vSmartMOM.Scattering.MieModelType
type MieModel

Model to hold all Mie computation details for NAI2 and PCW

Fields

  • computation_type

  • aerosol

  • λ

  • polarization_type

  • truncation_type

  • r_max

    Maximum radius [μm]

  • nquad_radius

    Number of quadrature points for integration over size distribution

  • wigner_A

  • wigner_B

Output Aerosol Optics Types

vSmartMOM.Scattering.GreekCoefsType
struct GreekCoefs{FT}

A struct which holds all Greek coefficient lists (over l) in one object. See eq 16 in Sanghavi 2014 for details.

Fields

  • α

    Greek matrix coefficient α, is in B[2,2]

  • β

    Greek matrix coefficient β, is in B1,1

  • γ

    Greek matrix coefficient γ, is in B[2,1],B[1,2]

  • δ

    Greek matrix coefficient δ, is in B[4,4]

  • ϵ

    Greek matrix coefficient ϵ, is in B[3,4] and - in B[4,3]

  • ζ

    Greek matrix coefficient ζ, is in B[3,3]

vSmartMOM.Scattering.AerosolOpticsType
struct AerosolOptics

A struct which holds all computed aerosol optics

Fields

  • greek_coefs

    Greek matrix

  • ω̃

    Single Scattering Albedo

  • k

    Extinction cross-section

  • fᵗ

    Truncation factor

  • derivs

    Derivatives