Configuration schema (IO)
This page documents the expected configuration structure for read_parameters
.
Top-level keys:
- radiative_transfer (required)
- geometry (required)
- atmospheric_profile (required)
- absorption (optional)
- scattering (optional)
radiative_transfer
- spec_bands: Vector{String}
- Each string is a Julia range expression like "(1e7/777):0.015:(1e7/757)". Units accepted; values converted to cm⁻¹. Use explicit units when not
cm⁻¹
. - Note: This field uses
eval()
internally to support flexible range syntax and Unitful conversions. All other fields use safe parsing without eval.
- Each string is a Julia range expression like "(1e7/777):0.015:(1e7/757)". Units accepted; values converted to cm⁻¹. Use explicit units when not
- surface: Vector{String}
- Each is a surface constructor call-like string, parsed safely (no eval):
- LambertianSurfaceScalar(0.15)
- LambertianSurfaceSpectrum([0.12, 0.13])
- LambertianSurfaceLegendre([0.2, 0.05, 0.01])
- rpvSurfaceScalar(ρ₀, ρ_c, k, Θ)
- RossLiSurfaceScalar(fvol, fgeo, fiso)
- Each is a surface constructor call-like string, parsed safely (no eval):
- quadrature_type: String in {RadauQuad(), GaussQuadHemisphere(), GaussQuadFullSphere()}
- polarizationtype: String in {StokesI(), StokesIQ(), StokesIQU(), Stokes_IQUV()}
- max_m: Int
- Δ_angle: Real (degrees)
- l_trunc: Int
- depol: Real
- float_type: String in {Float32, Float64}
- architecture: String in {default_architecture, CPU(), GPU(), Architectures.CPU(), Architectures.GPU()}
geometry
- sza: Real (deg)
- vza: Vector{Real} (deg)
- vaz: Vector{Real} (deg)
- obs_alt: Real (Pa)
- Note: Currently not used. Only Top Of Atmosphere (TOA/satellite) observations are supported at the moment.
atmospheric_profile
- T: Vector{Real} (K), mid-level, TOA→BOA
- p: Vector{Real} (hPa), boundaries, TOA→BOA (length(T)+1)
- q: Vector{Real} (optional)
- profile_reduction: Int, or -1 for no reduction
absorption (optional)
- molecules: Vector{Vector{String}} (per band)
- vmr: Dict{String,Real|Vector}
- broadening: String in {Voigt(), Lorentz(), Doppler()}
- CEF: String in {HumlicekWeidemann32SDErrorFunction()}
- wing_cutoff: Real (cm⁻¹)
- LUTfiles: Vector{Vector{String}} (optional, per molecule per band)
scattering (optional)
- aerosols: Vector of Dicts with keys: τ_ref, μ, σ, nᵣ, nᵢ, p₀, σp
- r_max: Real (µm)
- nquad_radius: Int
- λ_ref: Real (µm)
- decomp_type: String in {NAI2(), PCW()}
- n_ref: Complex (optional). If not provided, computed from first aerosol.
Minimal YAML example
radiative_transfer:
spec_bands:
- (1e7/777):0.015:(1e7/757)
surface:
- LambertianSurfaceScalar(0.15)
quadrature_type: GaussQuadFullSphere()
polarization_type: Stokes_I()
max_m: 3
Δ_angle: 2.0
l_trunc: 20
depol: 0.0
float_type: Float64
architecture: default_architecture
geometry:
sza: 60
vza: [60, 45, 30, 15, 0, 15, 30, 45, 60]
vaz: [180, 180, 180, 180, 0, 0, 0, 0, 0]
obs_alt: 1000.0
atmospheric_profile:
T: [260, 262, 264]
p: [0.1, 100.0, 800.0, 1005.0]
profile_reduction: -1