Why is Surface_Reflectivity always zero in RTSolution
Note that for the data structure RTSolution, Surface Reflectivity is always zero (in most cases) regardless of channels.
This is because in function Assign_Common_Input
|
FUNCTION Assign_Common_Input( & |
- The weight of angle "Cosine_Sensor_Zenith" is set as zero:
SfcOptics%Index_Sat_Ang = RTV%n_Angles
RTV%COS_Angle( RTV%n_Angles ) = GeometryInfo%Cosine_Sensor_Zenith
RTV%COS_Weight( RTV%n_Angles ) = ZERO
- Then the surface reflectivity is weighted by Gaussian weight, with the last angle being
Cosine_Sensor_Zenith if Cosine_Sensor_Zenith is not equal to any Gaussian angles:
DO j = 1, SfcOptics%n_Angles
SfcOptics%Reflectivity(1:SfcOptics%n_Angles,1,j,1) = SfcOptics%Direct_Reflectivity(j,1)*SfcOptics%Weight(j)
END DO
- The computed reflectivity is later assigned to RT solution as the final output:
...
RTSolution%Surface_Reflectivity = SfcOptics%Reflectivity( SfcOptics%Index_Sat_Ang, 1, SfcOptics%Index_Sat_Ang, 1 )
...
Because SfcOptics%Weight(SfcOptics%n_Angles) is zero, SfcOptics%Reflectivity( SfcOptics%Index_Sat_Ang, 1, SfcOptics%Index_Sat_Ang, 1 ) is always zero regardless of solvers, channels, and surface type
Exception
The only exception would be if Cosine_Sensor_Zenith is almost equal to COS_Angle from function Double_Gauss_Quadrature. In this case, RTV%COS_Weight( RTV%Index_Sat_Ang ) != ZERO, but in this case, the surface reflectivity value is wrong.
! Search for a matching angle
DO i = 1, RTV%n_Streams
IF( ABS( RTV%COS_Angle(i) - GeometryInfo%Cosine_Sensor_Zenith ) < ANGLE_THRESHOLD ) THEN
SfcOptics%Index_Sat_Ang = i ! Identify the sensor zenith angle
RTV%n_Angles = RTV%n_Streams
! *****FLAW*****
! CAN WE REPLACE THIS CONSTRUCT WITH ANOTHER
GO TO 100
! *****FLAW*****
END IF
END DO
Why is Surface_Reflectivity always zero in RTSolution
Note that for the data structure RTSolution, Surface Reflectivity is always zero (in most cases) regardless of channels.
This is because in function Assign_Common_Input
CRTMv3/src/RTSolution/Common_RTSolution.f90
Line 189 in 9901de1
Cosine_Sensor_ZenithifCosine_Sensor_Zenithis not equal to any Gaussian angles:Because
SfcOptics%Weight(SfcOptics%n_Angles)is zero,SfcOptics%Reflectivity( SfcOptics%Index_Sat_Ang, 1, SfcOptics%Index_Sat_Ang, 1 )is always zero regardless of solvers, channels, and surface typeException
The only exception would be if Cosine_Sensor_Zenith is almost equal to COS_Angle from function Double_Gauss_Quadrature. In this case,
RTV%COS_Weight( RTV%Index_Sat_Ang ) != ZERO, but in this case, the surface reflectivity value is wrong.