Skip to content

3b · Mie, Rayleigh, and the Phase Matrices

For: users adding aerosols to their scene; method developers extending the scattering codebase; retrieval developers reasoning about polarization sensitivity.

Prev: 3a · Gas Absorption · Next: 3c · Mixing & δ-M Truncation

This page covers three of the four layer-optics arrays plus the aerosol contribution to the optical depth: the Fourier-moment phase matrices and , the aerosol single-scattering albedo , and the extinction cross-section (which maps microphysics to ).

What this page produces

For each aerosol type and each Fourier moment :

SymbolMeaningUsed for
, phase matrix Fourier momentslayer scattering
aerosol single-scattering albedolayer SSA
extinction cross-sectionaerosol optical depth from microphysics
δ-M forward-truncation factorconsumed in Concepts/03c

For Rayleigh (and Cabannes), the same are computed from the Rayleigh / Cabannes Greek source.

The Mie pipeline

   Aerosol(size_dist, n_r, n_i)


    MieModel


   compute_aerosol_optical_properties


   AerosolOptics(GreekCoefs, ω̃, k, fᵗ)


   compute_Z_moments  (per Fourier moment m)


   (Z⁺⁺, Z⁻⁺) per (μ', μ, m)

The user-facing entry is compute_aerosol_optical_properties(model::MieModel) in src/Scattering/. The dispatcher branches on the decomposition algorithm (NAI2() or PCW()) carried in MieModel.

The Greek matrix B_l

Polarized Mie scattering is fully captured by the Greek expansion of the   phase matrix (Sanghavi 2014 App. A; Sanghavi 2014 Mie-Fourier Eq. 16):

The six coefficients fully determine the polarized scattering pattern — is the phase function expansion (the only one a scalar code uses); the other five carry polarization coupling. They live in the GreekCoefs struct at src/Scattering/types.jl:231–244:

julia
struct GreekCoefs{FT}
    α::Vector{FT}
    β::Vector{FT}
    γ::Vector{FT}
    δ::Vector{FT}
    ϵ::Vector{FT}
    ζ::Vector{FT}
end

The output of compute_aerosol_optical_properties packages this with the scalar bookkeeping (src/Scattering/types.jl:281–292):

julia
struct AerosolOptics{FT}
    greek_coefs::GreekCoefs
    ω̃::Union{FT, Array{FT}}      # single-scattering albedo
    k::Union{FT, Array{FT}}      # extinction cross-section
    fᵗ::Union{FT, Array{FT}}     # δ-M truncation factor
end

Phase matrix Z from Greek + μ

Once the Greek coefficients are in hand, the per-Fourier-moment phase matrices come from , the generalized spherical-function matrices (Sanghavi 2014 Mie-Fourier Eq. 12–14):

The coded entry point is compute_Z_moments(pol_type, μ, greek, m, arr_type=arr_type) in src/Scattering/compute_Z_matrices.jl. It returns of shape (NquadN, NquadN) (or the pre-broadcast scalar-spectral version that gets expanded across nSpec in expandOpticalProperties).

NAI-2 vs PCW — two ways to compute the Greek expansion

Sanghavi 2014 (the Mie-Fourier paper) compares two decomposition methods:

  • NAI-2 (Numerical Angular Integration, version 2; Siewert's formalism): computes the scattering matrix on a Gauss-Legendre quadrature in scattering cosine , then projects to Greek coefficients via integrals against associated Legendre functions. The   quadrature roots needed for accurate integration are determined upfront. Default path; entry at src/Scattering/compute_NAI2.jl:44.

  • PCW (Pre-computed Wigner; Domke's formalism corrected): computes Greek coefficients directly from products of size-averaged Mie coefficients etc. weighted by precomputed Wigner-3j symbols. No reconstruction of the angular scattering matrix. Entry at src/Scattering/compute_PCW.jl:28.

Tradeoffs (Sanghavi 2014 Mie-Fourier §5):

RegimeFaster method
Single particle,    (size parameter > 228)NAI-2 (no angular reconstruction needed)
Polydispersion over a finite size range up to ~80 μmPCW (6–8× faster than NAI-2)
Single small particlePCW (precomputed Wigner-3j makes individual particles cheap)

NAI-2 is the safer default. PCW pays off for big polydisperse populations that dominate aerosol retrievals over ocean. Selection is via the DECOMP_MAP in src/IO/Parameters.jl ("NAI2" or "PCW").

Rayleigh and the Cabannes choice

For the molecular contribution (no aerosols, just air molecules):

  • Pure-elastic runs (noRS) use the full Rayleigh Greek expansion. In this case rotational Raman is rolled into the effective depolarization ratio ; the phase matrix is the standard Rayleigh form with depolarization of ~0.028 for air at 532 nm.

  • Raman-aware runs (RRS, VS_*) use the Cabannes Greek expansion. Rotational Raman is then handled explicitly by the inelastic kernel (Concepts/08), and the elastic Cabannes path uses a lower depolarization (~0.007).

The selector at src/CoreRT/LayerOpticalProperties/compEffectiveLayerProperties.jl:8–9:

julia
_rayleigh_greek_source(::Union{noRS, noRS_plus}, greek_rayleigh, greek_cabannes) = greek_rayleigh
_rayleigh_greek_source(::AbstractRamanType, greek_rayleigh, greek_cabannes) = greek_cabannes

Mismatch — using Cabannes greek with noRS, or full Rayleigh greek with RRS — produces a ~1% bias on Stokes and a ~3% bias on , because the polarization-sensitive coefficients (, ) shift by the depolarization difference.

Aerosol microphysics → optics

The size distribution and refractive index are inputs to the Mie calculation. vSmartMOM ships with two microphysics schemes (in the Aerosols module):

  • TOMAS15Scheme — TOMAS-15-bin sectional scheme used in CESM/GEOS-Chem.

  • TwoMomentScheme — two-moment lognormal scheme (median radius + width).

Plus a refractive-index database for common aerosol species (sulfate, dust, black carbon, organic carbon, sea salt). See Aerosols (microphysics) for the schemes (status: API still being stabilized — WIP).

Code anchors

ConceptSource
Mie entry (NAI-2)src/Scattering/compute_NAI2.jl:44
Mie entry (PCW)src/Scattering/compute_PCW.jl:28
Mie helper (a_n, b_n)src/Scattering/mie_helper_functions.jl
GreekCoefs typesrc/Scattering/types.jl:231–244
AerosolOptics typesrc/Scattering/types.jl:281–292
Polarization typessrc/Scattering/types.jl:92–143
Z from Greek + μsrc/Scattering/compute_Z_matrices.jl::compute_Z_moments
Truncation entrysrc/Scattering/truncate_phase.jl (used by createAero)
Rayleigh / Cabannes selectorsrc/CoreRT/LayerOpticalProperties/compEffectiveLayerProperties.jl:8–9
GPU Mie kernelsrc/Scattering/gpu_mie_kernels.jl:30–100
YAML decomposition mapsrc/IO/Parameters.jl::DECOMP_MAP

Hands-on tutorials

Runnable examples with Plotly figures:

References

  • Sanghavi (2014), Revisiting the Fourier expansion of Mie scattering matrices in generalized spherical functions, JQSRT 136:16–27, doi:10.1016/j.jqsrt.2013.12.015. NAI-2 vs PCW comparison; corrected Domke formalism.

  • Sanghavi et al. (2014), JQSRT 133:412–433, doi:10.1016/j.jqsrt.2013.09.004, App. A.

  • Hansen, J. E. & Travis, L. D. (1974), Light scattering in planetary atmospheres, Space Sci. Rev. 16:527. (Background on Mie + Greek matrix.)

  • Siewert, C. E. (1981, 1982), On the equation of transfer relevant to the scattering of polarized light, On the phase matrix basic to the scattering of polarized light. (NAI formalism.)

  • Domke, H. (1974), The expansion of scattering matrices for an isotropic medium in generalized spherical functions, Astrophys. Space Sci. 29:379. (PCW basis.)

  • de Rooij, W. A. & van der Stap, C. C. A. H. (1984), Expansion of Mie scattering matrices in generalized spherical functions, A&A 131:237. (Domke corrections that PCW further fixes.)

  • Crib sheet: docs/dev_notes/theory_references.md §G.