Optical Phenomena · Turbulence & Imaging · Light Environmental Nonlinearity System
A unified physics-computational framework for optical scattering anomalies and photon dynamics in heterogeneous atmospheric media — from first-principles Mie theory to real-time neural network inference.
Each module is derived from first principles, validated independently, and coupled through a common atmospheric state vector.
Exact Mie series solution for extinction efficiency Q_ext, phase function P(θ), and asymmetry parameter g for arbitrary size parameter x and complex refractive index m. Extended via T-matrix for non-spherical hexagonal ice crystals.
Modified Edlén equation with humidity correction δn_water and CO₂ adjustment. Vertical gradient ∂n/∂z computation for ray bending radius and mirage displacement quantification over desert and tarmac surfaces.
Kolmogorov-Obukhov structure function and Rytov log-amplitude variance model. Fried coherence length r₀ for adaptive optics scheduling at astronomical observatories and long-range imaging systems.
DISORT discrete ordinate solver for up to 50 atmospheric layers. Beer-Lambert-Bouguer direct beam transmittance with Ångström exponent parameterization. Multiple scattering treatment for τ > 0.3.
12-layer ResNet trained with composite physics + data + boundary condition loss. 50,000 collocation points. Real-time optical property interpolation between sparse sensor locations across the atmospheric domain.
Volumetric 4th-order Runge-Kutta ray propagation through 3D refractive index fields. GPU-accelerated CUDA kernels reduce 10⁶ photon computation from ~20 minutes (CPU) to ~12 seconds (NVIDIA A100).
Four observational pillars feed into a unified computational pipeline updated every 15 minutes synchronized with MODIS overpass times.
# Install from PyPI # pip install opticlens from opticlens.scattering.mie_v10 import Q_ext from opticlens.turbulence.rytov import scintillation from opticlens.refraction.edlen import refractive_index # Mie extinction efficiency x = 2.0 # size parameter m = 1.5 + 0.01j # complex RI Q = Q_ext(x, m) print(f"Q_ext = {Q:.4f}") # 3.2100 # Rytov scintillation index sigma2 = scintillation( Cn2=1e-14, wavelength=0.532e-6, path_length=5000 ) print(f"σ_χ² = {sigma2:.4e}") # Edlén refractive index n = refractive_index( P=101325, # Pa T=293.15, # K lam=0.55 # μm ) print(f"n = {n:.8f}")
from opticlens.pinn.core import AtmosphericPINN import numpy as np # Initialize PINN framework model = AtmosphericPINN( layers=12, collocation_pts=50000, lambda_phys=1.0, lambda_data=1.0, lambda_bc=0.5 ) # Train on atmospheric state vector state = { 'P': np.array([101325]), 'T': np.array([293.15]), 'RH': np.array([45.0]), 'wavelengths': np.array( [440, 675, 870, 1020] ) } # Real-time optical property output output = model.predict(state) print(f"AOD τ(440) = {output['tau'][0]:.4f}") print(f"Fried r₀ = {output['r0']:.3f} m") print(f"Cn²(z) = {output['Cn2']:.2e}")
Independent validation across analytical benchmarks, field campaigns, and global satellite climatologies ensures physically complete accuracy.
Mie code validated across size parameter 0.001 < x < 1000 and complex refractive indices spanning absorbing and non-absorbing particles.
15 globally distributed stations across marine, continental, urban, and dust regimes. Level 2.0 cloud-screened data at 440, 675, 870, 1020 nm.
Global aerosol optical depth compared against Dark Target and Deep Blue combined product over 12-month period, stratified by surface type.
Lidar-derived Cn²(z) profiles compared against simultaneous sonic anemometer CT² measurements at three-axis, 20 Hz sampling rate.
Version 4.2 aerosol profile product at 5 km horizontal resolution. Vertical resolution 60 m below 8.2 km for aerosol backscatter validation.
DISORT solver benchmarked against Radiation Model Intercomparison test cases for homogeneous plane-parallel scattering atmospheres.