-
Notifications
You must be signed in to change notification settings - Fork 18
Description
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
- Included: Any real-valued physical input.
- Excluded: Classifiers, indices, or boolean flags (e.g., Land_Type, Soil_Type, Algorithm_Id, etc.).
- 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)
InCRTM_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_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 inCRTM_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_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. -
Canopy_Water_Content(seeCanopy_Water_Contentinput is unused #279 )
Missing Jacobian -
Vegetation_Fraction
Missing Jacobian. -
LAI(Leaf Area Index) (seeCanopy_Water_Contentinput is unused #279 )
Missing Jacobian. -
Soil_Temperature
Currently often aliased toLand_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 theprofile_solutionloop to ensure all components ofAtmosphere_KandSurface_Kare being populated from the lower-level AD calls. -
src/SfcOptics/CRTM_SfcOptics.f90
Update the accumulation logic inCRTM_Compute_SfcOptics_ADto include the specific snow/ice/land parameters listed above. -
src/AtmScatter/CRTM_CloudScatter.f90
UpdateCRTM_Compute_CloudScatter_ADto handleEffective_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 likeSalinityandWind_Speed.