You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Following the philosophy that every physical input to the CRTM must have an associated Jacobian, a codebase audit was performed on the current CRTMv3 compile chain. While the model successfully produces Jacobians for primary state variables (Temperature, Absorbers, and basic Surface/Cloud properties), several physical parameters are currently treated as static during the K-matrix calculation.
This issue tracks the identification and required implementation of these missing sensitivities to ensure full differentiability of the model for data assimilation and sensitivity studies.
Note: there may be derived variables that we're excluding for now, this issue focuses on Jacobians with a physical input to CRTM.
1. Atmospheric Jacobians
Current sensitivities are restricted to Temperature and Absorber amounts. The following physical parameters lack Jacobians in the Atmosphere_K structure:
Level_Pressure & Pressure
These are used to calculate predictors and path lengths. While typically treated as the coordinate system, any physical variation in the pressure levels themselves (e.g., in sigma-pressure systems) does not currently propagate through the K-matrix.
Height
Used in geometry calculations and active sensor (radar) reflectivity. No adjoint is returned for height variations.
Relative_Humidity (Fix Missing Aerosol Scattering Jacobians and Restore Backscatter Logic #285 resolves this)
In CRTM_AerosolScatter.f90, RH_AD is calculated locally for interpolation in GOCART/NAAPS models, but it is not consistently propagated back to the Atmosphere_K structure in CRTM_K_Matrix_Module.f90.
2. Cloud and Aerosol Jacobians
While Water_Content and Effective_Radius are well-supported, the following are missing:
Cloud%Effective_Variance (see Fix Missing Aerosol Scattering Jacobians and Restore Backscatter Logic #285, resolves this)
Defined in CRTM_Cloud_type, but the adjoint is not calculated in CRTM_Compute_CloudScatter_AD. If scattering lookup tables (LUTs) depend on size distribution variance, this Jacobian is required.
Cloud%Water_Density
Adjoint calculation is currently inconsistent between MW and IR paths.
3. Surface Jacobians (High Priority)
The surface routines contain the most significant gaps, particularly for Land, Snow, and Ice models where Compute_MW_Land_SfcOptics_AD and similar routines are either stubs or ignore structural parameters.
Land Surface
Soil_Moisture_Content
Critical for microwave land emissivity; missing Jacobian.
Soil_Temperature
Currently often aliased to Land_Temperature; needs independent sensitivity if used as a separate physical layer.
Snow Surface
Snow_Depth
Physical input for snow emissivity models; missing Jacobian.
Snow_Density
Missing Jacobian.
Snow_Grain_Size
Missing Jacobian.
Ice Surface
Ice_Thickness
Missing Jacobian.
Ice_Density
Missing Jacobian.
Ice_Roughness
Missing Jacobian.
4. Technical Summary of Missing Jacobian Links
The following files/subroutines require updates to propagate the missing adjoint values:
src/CRTM_K_Matrix_Module.f90
Update the profile_solution loop to ensure all components of Atmosphere_K and Surface_K are being populated from the lower-level AD calls.
src/SfcOptics/CRTM_SfcOptics.f90
Update the accumulation logic in CRTM_Compute_SfcOptics_AD to include the specific snow/ice/land parameters listed above.
src/AtmScatter/CRTM_CloudScatter.f90
Update CRTM_Compute_CloudScatter_AD to handle Effective_Variance.
src/SfcOptics/MW_Water/CRTM_MW_Water_SfcOptics.f90
Reference for implementation. This is one of the few routines correctly propagating non-temperature sensitivities like Salinity and Wind_Speed.
Description
Following the philosophy that every physical input to the CRTM must have an associated Jacobian, a codebase audit was performed on the current CRTMv3 compile chain. While the model successfully produces Jacobians for primary state variables (Temperature, Absorbers, and basic Surface/Cloud properties), several physical parameters are currently treated as static during the K-matrix calculation.
This issue tracks the identification and required implementation of these missing sensitivities to ensure full differentiability of the model for data assimilation and sensitivity studies.
Criteria for Jacobians
1. Atmospheric Jacobians
Current sensitivities are restricted to Temperature and Absorber amounts. The following physical parameters lack Jacobians in the
Atmosphere_Kstructure:Level_Pressure&PressureThese are used to calculate predictors and path lengths. While typically treated as the coordinate system, any physical variation in the pressure levels themselves (e.g., in sigma-pressure systems) does not currently propagate through the K-matrix.
HeightUsed in geometry calculations and active sensor (radar) reflectivity. No adjoint is returned for height variations.
Relative_Humidity(Fix Missing Aerosol Scattering Jacobians and Restore Backscatter Logic #285 resolves this)In
CRTM_AerosolScatter.f90,RH_ADis calculated locally for interpolation in GOCART/NAAPS models, but it is not consistently propagated back to theAtmosphere_Kstructure inCRTM_K_Matrix_Module.f90.2. Cloud and Aerosol Jacobians
While
Water_ContentandEffective_Radiusare well-supported, the following are missing:Cloud%Effective_Variance(see Fix Missing Aerosol Scattering Jacobians and Restore Backscatter Logic #285, resolves this)Defined in
CRTM_Cloud_type, but the adjoint is not calculated inCRTM_Compute_CloudScatter_AD. If scattering lookup tables (LUTs) depend on size distribution variance, this Jacobian is required.Cloud%Water_DensityAdjoint calculation is currently inconsistent between MW and IR paths.
3. Surface Jacobians (High Priority)
The surface routines contain the most significant gaps, particularly for Land, Snow, and Ice models where
Compute_MW_Land_SfcOptics_ADand similar routines are either stubs or ignore structural parameters.Land Surface
Soil_Moisture_ContentCritical for microwave land emissivity; missing Jacobian.
Canopy_Water_Content(seeCanopy_Water_Contentinput is unused #279 )Missing Jacobian
Vegetation_FractionMissing Jacobian.
LAI(Leaf Area Index) (seeCanopy_Water_Contentinput is unused #279 )Missing Jacobian.
Soil_TemperatureCurrently often aliased to
Land_Temperature; needs independent sensitivity if used as a separate physical layer.Snow Surface
Snow_DepthPhysical input for snow emissivity models; missing Jacobian.
Snow_DensityMissing Jacobian.
Snow_Grain_SizeMissing Jacobian.
Ice Surface
Ice_ThicknessMissing Jacobian.
Ice_DensityMissing Jacobian.
Ice_RoughnessMissing Jacobian.
4. Technical Summary of Missing Jacobian Links
The following files/subroutines require updates to propagate the missing adjoint values:
src/CRTM_K_Matrix_Module.f90Update the
profile_solutionloop to ensure all components ofAtmosphere_KandSurface_Kare being populated from the lower-level AD calls.src/SfcOptics/CRTM_SfcOptics.f90Update the accumulation logic in
CRTM_Compute_SfcOptics_ADto include the specific snow/ice/land parameters listed above.src/AtmScatter/CRTM_CloudScatter.f90Update
CRTM_Compute_CloudScatter_ADto handleEffective_Variance.src/SfcOptics/MW_Water/CRTM_MW_Water_SfcOptics.f90Reference for implementation. This is one of the few routines correctly propagating non-temperature sensitivities like
SalinityandWind_Speed.