-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Dear Mustapha,
I am currently using the Smart-G radiative transfer model to simulate limb-scattered radiance for ozone retrieval. While the aerosol optical inputs appear physically reasonable, I am observing unexpectedly strong fluctuations (noise-like oscillations) in the simulated limb radiance profiles(See figure below).
Below is a summary of my current configuration and key diagnostic values:
- Vertical grid: 100 layers, 1 km spacing
- Aerosol extinction cross sections (per particle):
- [3.67441e-09 3.67464e-09 3.68171e-09 3.91627e-09 4.05730e-09 4.32481e-09]cm²
- Integrated aerosol optical depth (per wavelength):
- [0.37159 0.37161 0.37233 0.39605 0.41031 0.43736]
- Layer-by-layer dtau (per wavelength):
- ·min = [0, 0, 0, 0, 0, 0]
- ·max = [0.14389 0.1439 0.14417 0.15336 0.15888 0.16936]
- Photon number: default (1e6 per sensor)
- Aerosol phase matrix: from full Mie calculation
- Even with these reasonable aerosol parameters, the resulting limb radiance profiles show large oscillations with altitude, which are much stronger than expected. These do not resemble physical atmospheric variability, and appear to be dominated by Monte Carlo statistical noise.
My questions:
-
Is such strong fluctuation in limb radiance typical when single-layer dtau reaches ~0.15–0.18, especially for limb geometry?
-
Does Smart-G require significantly more photons (e.g., 5×–10× higher than 1e6) to reduce noise in limb-viewing simulations with non-negligible aerosol loading?
-
Are there recommended settings for:
- the photon count (nph),
- angular resolution (mu sampling),
- or vertical smoothing of aerosol profiles,
to improve numerical stability of limb radiance?
- Is there a known issue or best practice regarding the use of full Mie aerosol scattering matrices in Smart-G?
If needed, I can provide my codes or sample outputs for inspection.
Thank you very much for your help, and for providing such a powerful radiative transfer tool.
Best regards,
Bin Hou
The main portion of the code is as follows:
# ---- Run Monte Carlo RTM with SMART-G ----
# Limb geometry: one Sensor per tangent height (scheme-1)
HTOA = 120 #714# km
RTER = 6371.0 # km
def zt2thv(zt, RTER=RTER, HTOA=HTOA):
return np.degrees(np.arcsin((RTER + zt) / (RTER + HTOA)))
ZT = 0.5 * (z_grid[:-1] + z_grid[1:])
sensors = [
Sensor(
POSX=0.0, POSY=0.0, POSZ=RTER + HTOA,
THDEG=180.0 - zt2thv(zt),
PHDEG=0.0,
LOC='ATMOS', FOV=0.0, TYPE=0
)
for zt in ZT
]
# print(180.0 - zt2thv(ZT))
surface = LambSurface(ALB=Albedo_cst(alb))
le = dict(
th_deg=[sza_deg],
phi_deg=[saa_deg],
)
S = Smartg(back=True, pp=False, double=True)
NPHOT_PER_SENSOR = 1e6
NB = int(NPHOT_PER_SENSOR * len(sensors))
rt = S.run(
wl=wav_nm,
surf=surface,
le=le,
atm=atm,
NBPHOTONS=NB,
refraction=True,
sensor=sensors,
reflectance=False,
#SEED=-1,
FFS=True,
NF=1e4, #number_of_inverse_phase_function_discretisations
DEPO = 0.0279 #depolarization_factor
)
More samples:
[INFO] Sample 31/50: SZA=50.0°, SAA=80.0°, ALB=1.00, IRANA=5081, REF=0.181μm, SIG=1.629
[CHK] AEROSOL_ext_cross_sections : [1.26161e-09 1.27696e-09 1.32029e-09 1.48749e-09 1.52678e-09 1.53276e-09]
sum dtau_aer: [0.13895 0.14064 0.14542 0.16383 0.16816 0.16882]
Per-wavelength dtau_aer min: [0. 0. 0. 0. 0. 0.]
Per-wavelength dtau_aer max: [0.05464 0.05531 0.05718 0.06442 0.06613 0.06639]
[INFO] Sample 45/50: SZA=15.0°, SAA=20.0°, ALB=0.10, IRANA=18662, REF=0.254μm, SIG=1.535
[CHK] AEROSOL_ext_cross_sections : [2.73014e-09 2.73387e-09 2.80005e-09 3.05651e-09 3.20762e-09 3.38168e-09]
sum dtau_aer: [0.41108 0.41164 0.42161 0.46022 0.48298 0.50918]
Per-wavelength dtau_aer min: [0. 0. 0. 0. 0. 0.]
Per-wavelength dtau_aer max: [0.14637 0.14657 0.15012 0.16387 0.17197 0.1813 ]
[INFO] Sample 50/50: SZA=30.0°, SAA=160.0°, ALB=0.40, IRANA=21052, REF=0.092μm, SIG=1.459
[CHK] AEROSOL_ext_cross_sections : [5.48855e-10 5.57321e-10 5.73128e-10 5.16408e-10 4.60935e-10 4.03870e-10]
sum dtau_aer: [0.15458 0.15696 0.16141 0.14544 0.12981 0.11374]
Per-wavelength dtau_aer min: [0. 0. 0. 0. 0. 0.]
Per-wavelength dtau_aer max: [0.05998 0.06091 0.06263 0.05643 0.05037 0.04414]
