Questions about filling CRTM structures

I have a few questions about how to fill the CRTM structures:
(1) Atmosphere structure:
what is the purpose to set the climatology component?
(2) Surface structure:
how to define the component Wind_Direction? From N, clockwise, 0~360 deg?
CRTM could use input sensor measurements to estimate snow/ice emissivity. Does CRTM have such model for ATMS?
(3) Geometry structure:
CRTM requires that the zenith angle and the scan angle are consistent with each other. But if not, what will CRTM deal with the situation?
The scan angles are positive values?
source/sensor azimuth angle is from N, clockwise, 0~360 deg?
(4) Option structure:
If I’ve used CRTM_ChannelInfo_Subset to specify several of the channels I want to process, for example the third band of ATMS,
how should I set the components of n_Channels and Channels in Option?



Hi Jun,

(1) Climatology is necessary in case not all atmosphere structures are provided. Think of it as default settings. If you override them with updated information, it doesn’t matter. This is to avoid forcing you fill every single structure.

(2) Regarding surface wind component: Wind Direction Surface is “deg. E from N.” Default is 0.0.
See the CRTM User Guide for more information.
Not sure about your question regarding emissivity, you can ask Ming Chen for details (

(3) Geometry: Yes, scan angle and zenith angle should be closely related to each other, and is dependent on the altitude of the sensor. SENSOR_SCAN_ANGLE is the angle from nadir, and it’s always positive. See figure 4.1 from the User Guide.

(4) See the following code for an example (if you’re using CRTM v2.4.0 or newer): ./test/mains/regression/forward/test_ChannelSubset/test_ChannelSubset.f90
This should answer all of your questions.

Please email me at for additional discussion / details.

1 Like

Thank you, Benjamin!
Would you please further clarify the following questions?
(1) Surface%Wind_Direction, the range is 0~360 deg, no negative values, right?
(2) As for the empirical snow and ice emissivity, it is mentioned on page 41-42 of the user guide. ATMS is not listed in Table 4.20. I’m wondering if ATMS also has the empirical model
(3) I understand that the zenith angle and scan angle must satisfy the relation manifested in Equation (4.1). We have a geolocation model that outputs both these two angles. But they may not satisfy the equation, as the Earth is considered as an ellipsoid in the model instead of a spheroid in the equation. I’m wondering what will crtm do in this case. Select one angle and calculate the other through the equation? Which angle will it select?


But there is no component in Geometry structure that allows me to enter the satellite altitude. Does CRTM use some fixed value for the satellite altitude?


CRTM does not compute the SCAN_ANGLE for you, because there are several dependencies.
For example, with CrIS, the sensor face rotates throughout the scan, causing a difference in the scan angle across the scan for each of the 9 sensors.

If you’re using GSI, you can look at how they do the computation. For example:
read_atms.f90 (
search for “rato”

rato is defined as “Distance_Ratio” in CRTM, which is pre-computed. All you’d need to do is (for a simple sensor) is the following:

In your calling code for CRTM, you can add:





Then you can assign:

CALL CRTM_Geometry_SetValue( Geometry, &
Sensor_Zenith_Angle = ZENITH_ANGLE, &
Sensor_Scan_Angle = SCAN_ANGLE)

Note that SATELLITE_HEIGHT defaults to 800 in CRTM_Parameters.f90, you can change it there and recompile, or use your own height values.

1 Like

Thank you for your clarification! It is very helpful!