Skip to content

experimental libRadtran multipart transmittance#833

Merged
unbohn merged 18 commits into
isofit:devfrom
brentwilder:libradtran-multipart
Feb 23, 2026
Merged

experimental libRadtran multipart transmittance#833
unbohn merged 18 commits into
isofit:devfrom
brentwilder:libradtran-multipart

Conversation

@brentwilder

Copy link
Copy Markdown
Contributor

This assumes that any delta-M scaling effects are relatively small for 8 streams (default in modtran template). Preliminary comparisons to 6c-emulator at least for spaceborne looks fairly reasonable.

Here is a test for AOT=0.2 ; water vapor =1.0 g cm-2 (note this is in units of rdn for rhoatm and the coupled terms). Most of the residual in the forward simulation is via the rhoatm interestingly.

Screenshot 2026-01-20 at 10 17 30 Screenshot 2026-01-20 at 10 19 06

--

However, there must be a user error on my end of setting up irradiance, because using the same source file as sRTMnet (tsis_f0_0p5.txt) is yielding me different raw irradiance values convolved to sensor grid. This may be influencing the discrepency above with the rhoatm.

Screenshot 2026-01-20 at 10 28 46

--

Other smaller differences in the VNIR I hypothesize could possibly due to 1) different default aerosol settings in libRadtran, 2) unresolved delta-M errors. Although, if it were delta-M errors alone, I would suspect the transmittance would be slightly increased for the direct terms as a result. However, it is the diffuse terms that have slightly higher radiance.

--

Finally, here is some spectra solved by an EMIT scene for a reference. These are snow and veg pixels sampled at random.

Screenshot 2026-01-20 at 10 49 29

--

More systematically for the scene, here is average residuals. Notably most of the wavelengths even at the 5-95 percentiles fall within a range of -0.05 to 0.05 residual. I think finding my error with the solar_irr will likely reduce this residual for the 400-500 nm range.

Screenshot 2026-01-20 at 10 52 57

@brentwilder

Copy link
Copy Markdown
Contributor Author

Update: Using the same extraterrestrial solar irradiance data as the emulator improves things.

Comment thread isofit/utils/apply_oe.py Outdated
prebuilt_lut_path=prebuilt_lut,
inversion_windows=INVERSION_WINDOWS,
multipart_transmittance=multipart_transmittance,
modtran_path=paths.modtran_path,

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The modtran_path arg is a bit overloaded now. We could alternatively add a libradtran_path. Although, I think it could be nice (not in this PR), to have simply an rtm_path or engine_path, with logic after to decide if its an emulator, modtran, etc. I had something written here, but then realized this would break all of our workflows and tests.. just something to mull over.

@brentwilder brentwilder marked this pull request as ready for review January 26, 2026 15:00
@brentwilder

Copy link
Copy Markdown
Contributor Author

Checked this thoroughly last week and this is looking quite promising. There are differences with the 6c emulator, but seem to be centered around aerosol profile and optical properties selection. To help make this more customizable, I've added 9 new options to radiative_transfer_config.py to allow users to change libRadtran aerosol settings.

Additionally, on the delta-M errors, internally libRadtran will never allow DISORT to run radiance quantities with less than 16 streams. Therefore, any errors associatedwill likely be small. To showcase this, I ran a sort of validation run with 32streams and found minimal differences in the transmittances.

Screenshot 2026-01-26 at 08 47 09 AERFRAC_2-0.4002_H2OSTR-0.1000_relative_azimuth-179.9883_surface_elevation_km-2.6968

@brentwilder

Copy link
Copy Markdown
Contributor Author

@unbohn, ready for your review -thank you!

Comment thread isofit/radiative_transfer/engines/libradtran.py
@pgbrodrick

Copy link
Copy Markdown
Collaborator

Set to come after #848

@unbohn

unbohn commented Feb 23, 2026

Copy link
Copy Markdown
Collaborator

Thanks, @brentwilder! This is very useful.

@unbohn unbohn merged commit b1c682e into isofit:dev Feb 23, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants