Skip to content

Conversation

@BenjaminTJohnson
Copy link
Contributor

Description

This PR addresses critical gaps in the CRTMv3 Aerosol Scattering module by restoring missing Jacobian calculations for key state variables and re-enabling backscatter coefficient logic that had been inadvertently disabled. These changes ensure that sensitivities for aerosol concentration, relative humidity, and effective radius are correctly propagated through the Tangent Linear (TL), Adjoint (AD), and K-Matrix interfaces.

Key Changes

1. Restored Relative Humidity Jacobians

  • Re-implemented Relative_Humidity sensitivity logic in CRTM_AerosolScatter.f90 (Forward, TL, and AD).
  • This is critical for hygroscopic aerosol schemes such as GOCART-GEOS5 and NAAPS, where extinction, single-scattering albedo, and asymmetry factor are strongly humidity-dependent.
  • Prior to this fix, the Jacobian for relative humidity was identically zero for these schemes.

2. Restored Backscatter & Asymmetry Logic

  • Re-integrated Backscat_Coefficient (kb) and Asymmetry_Factor (g) interpolation and accumulation into the ASvar_type structure and aerosol scattering routines.
  • These quantities are required for active sensor simulations (lidar/radar) and accurate phase function calculations.

3. Comprehensive Unit Testing

  • Tangent Linear (TL): Added test_AerosolScatter_TL.f90 to verify non-zero sensitivities for relative humidity and aerosol concentration using MODIS (visible/IR) channels instead of ATMS (microwave), which bypasses aerosol scattering.
  • Adjoint (AD): Added test_AerosolScatter_AD.f90 to validate TL/AD consistency via the dot-product test (passes to machine precision).
  • K-Matrix: Added test_AerosolScatter_K.f90 to confirm correct propagation of sensitivities to the top-level Atmosphere_K structure.

Validation

  • Verified that d(OpticalDepth)/d(Relative_Humidity) is non-zero for hygroscopic aerosols (e.g., sea salt).
  • Confirmed TL/AD consistency: ⟨TL(x), y⟩ = ⟨x, AD(y)⟩.
  • Ensured K-Matrix output exhibits physically consistent behavior.

Impact

This fix is mandatory for assimilation and retrieval applications involving aerosols where humidity dependence or backscatter (active sensors) is relevant. Without these corrections, the model assumes zero sensitivity to key aerosol properties, leading to incorrect gradients and potential convergence failures in variational (e.g., 4D-Var) systems.

@chengdang
Copy link
Contributor

chengdang commented Jan 15, 2026

All ctests pass, and all changes look good.
I think we should merge #288 first because it has a lot less but related code changes
Then I'll redo the test for this PR merge.

@BenjaminTJohnson
Copy link
Contributor Author

I removed the IF aerosol scheme GEOS5 type lines, it's unnecessarily restrictive.

…ficient, but if not present, fall back to default GEOS5 coefficient. This will prevent ctest failures until we can get the new backscattering coefficient into the tarball and distributed.
@BenjaminTJohnson BenjaminTJohnson merged commit 3f997e4 into develop Jan 22, 2026
1 of 2 checks passed
@BenjaminTJohnson BenjaminTJohnson deleted the feature/btj-aerosol_scatter-jacobian branch January 22, 2026 22:15
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.

2 participants