Skip to content

AOD lower bounds from polynomial#749

Merged
pgbrodrick merged 1 commit into
isofit:devfrom
evan-greenbrg:emulator/poly_bounds
Sep 4, 2025
Merged

AOD lower bounds from polynomial#749
pgbrodrick merged 1 commit into
isofit:devfrom
evan-greenbrg:emulator/poly_bounds

Conversation

@evan-greenbrg

@evan-greenbrg evan-greenbrg commented Aug 26, 2025

Copy link
Copy Markdown
Collaborator

For discussion.

We currently hit a Modtran warning that our default minimum LUT bound 0.001 is lower than the Modtran minimum ~0.04. This also resolves the warning and potentially issues with hitting atmospheres outside of emulator training.

LUTs look better with the 6C emulator:
image

@evan-greenbrg evan-greenbrg marked this pull request as ready for review August 26, 2025 20:03
Comment thread isofit/core/geometry.py
Comment on lines +385 to +399
ModtranRT.modtran_aot_lowerbound_polynomials()[atmosphere_type](0),
1,
]
self.aerosol_1_range = [
ModtranRT.modtran_aot_lowerbound_polynomials()[atmosphere_type](0),
1,
]
self.aerosol_2_range = [
ModtranRT.modtran_aot_lowerbound_polynomials()[atmosphere_type](0),
1,
]
self.aot_550_range = [
ModtranRT.modtran_aot_lowerbound_polynomials()[atmosphere_type](0),
1,
]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

What's the rationale for the use of 0 as the elevation? Shouldn't we grab either the lower bound from the LUT, or the mean of the scene if it's not a LUT dimension?

@evan-greenbrg evan-greenbrg Sep 3, 2025

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

The rationale was only to be consistent with the existing strategy, and resolve the issue of running into AOD values < the conditions included in the 6c training set. We currently use the same AOD bounds regardless of the scene (0.001 to 1). Using the elevation of 0 simply gives the lowest supported AOD value based on the atmosphere type polynomial and aligns with the minimum value used in training ~0.04.

With that said, I was debating whether to think through/build out the dynamic bounds based on the elevation. In that case, the right strategy would be to use the minimum AOD bound and maximum H2O bound (both from polynomials) from the scene minimum elevation?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

That's fair, given the inverse relationship between elevation and AOD, this is guaranteed to be conservative. I think we can probably relax it a bit with the lower end, but I'm happy to proceed with this for now.

@pgbrodrick pgbrodrick merged commit 94fe97d into isofit:dev Sep 4, 2025
17 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