Revision History | |||
Document revision | Date | Author | Notes |
Version 3.1 | 23/3/04 | A. Collard | Documentation for version 3.1 |
Version 3.2.0 | 15/2/06 | E. Pavelin | Updated text to include references to RTTOV 8 (1D-Var version 3.2) |
Version 3.2.1 | 22/2/06 | E. Pavelin | Started this revision history |
Version 3.2.2 | 8/1/07 | E. Pavelin | Updated for v3.2 final release |
Version 3.3.0 | 11/02/09 | E. Pavelin | Added support for RTTOV 9 |
Version 3.3.1 | 6/10/09 | E. Pavelin | Updated for v3.3 final release |
Version 3.4.0 | 21/02/12 | P. Weston | Added support for RTTOV 10 |
Version 3.4.1 | 29/03/12 | P. Weston | Updated for v3.4 final release |
Version 3.5.0 | 13/06/13 | P. Weston | Added support for RTTOV 11 |
© EUMETSAT 2006-2013, All Rights Reserved.
Retrievals are made through the optimal estimation methods of Rodgers (1976). Three minimisation routines are provided with the one that is used depending on the size and linearity of the problem.
A radiative transfer program is required that will supply both radiances and Jacobians and this is accessed through a general purpose interface routine. Currently RTTOV (versions 7.1, 8.7, 9.3, 10.2 and 11.1), Gastropod and RTIASI version 4 (with some modifications) are implemented.
The code is written is European Standard Fortran 90 and advanced F90 features are used as much as possible. The code was originally designed to closely follow the structures in the Met Office's Observation Processing System (OPS) and is partly based on the operational ATOVS 1DVar code written at the Met Office by Andrew Smith.
To run the code successfully a radiative transfer coefficients file must be located in the top IASI_1DVar directory. This coefficients file must be compatible with the radiative transfer model chosen and the instrument whose data is being used. Coefficients files can be downloaded for free from the NWPSAF RTTOV website for example RTTOV v11 coefficients can be downloaded from here.
3a. Control Files: ControlData.NL
3b. Control Files: Retrievals.NL
3c. Data Files: ObsFile.dat
3d. Data Files: Background.dat
3e. Auxiliary Files: Rmatrix.dat
3f. Auxiliary Files: Bmatrix.dat
3g. Auxiliary Files: ChannelChoice.dat
There are two main control files, ControlData.NL and Retrieval.NL, and two main data files, ObsFile.dat and Background.dat. Auxiliary data such as error covariance matrices and channel selection choices are stored for each data type in a directory called xxx_COEFFS_DIR where xxx refers to the data type being processed (e.g., IASI_COEFFS_DIR).
All input files are ASCII and all values are in free-format.
3a. Control Files: ControlData.NL
ControlData.NL is a Fortran90 namelist file containing the input parameters required for the running of the code. The table below lists the parameters that may be specified through this file and which ones would normally be required. As one can see most of these parameters have a default value. This file and the IASI_Read_ControlData that reads it may be easily expanded in future if one wants to add further options. Note that there are comments included in this file as supplied, but some Fortran90 compilers may not allow this, in which case they would need to be removed.
Variable | Required? | Default Value | Type | Notes |
RTModelToUse | No | RTTOV | String | 'RTTOV','RTTOV8','RTTOV9','RTTOV10','RTTOV11','RTIASI' & 'Gastropod' allowed |
Coeffs_Dir | Yes | - | String | Relative path of directory containing auxiliary data. |
FirstOb, LastOb | No | 1, Number of obs. | INTEGER | |
GeneralMode | No | 10='ProductionMode' | INTEGER | Allowed values are 0='Operational', 10='Production', 20='Diagnostic', 30='Debug' and 40='Verbose' |
Perform1DVar | No | True | LOGICAL | |
DetectCloud | No | True | LOGICAL | |
MaxIterations | No | 10 | INTEGER | |
DeltaJ | No | 0.01 | REAL | Maximum fractional change in cost function for convergence. |
SmallJCost_Gradient | No | 1. | REAL | Maximum value of cost function gradient (in terms of total cost) for convergence. Marquardt-Levenberg minimisation only. |
Max_ML_Iterations | No | 10 | INTEGER | Marquardt-Levenberg minimisation only |
Gamma_Factor | No | 10 | REAL | Factor by which Gamma is changed between iterations. Marquardt-Levenberg minimisation only |
GammaMax | No | 1025 | REAL | Marquardt-Levenberg minimisation only |
DoTExtrapolation | No | TRUE | LOGICAL | |
Minimisation_Method | No | 1='Newtonian' | INTEGER | 0=None, 1=Newtonian, 2=Marquardt-Levenberg |
Allow_Eqn_101 | No | .TRUE. | LOGICAL | Set to false if the Eqn 101 minimisation is never to be used. |
Force_Eqn_101 | No | .FALSE. | LOGICAL | Set to true to use Eqn 101 in all situations (Marquardt-Levenberg and additional cost function terms cannot be used in this case). |
MaxChanUsed | No | 10000 | INTEGER | |
CostThresh_Land Cost_Thresh_Sea |
Yes | Missing | REAL | If IASI_DetectCloud is TRUE |
CostThresh_IRWindow_Land CostThresh_IRWindow_Sea |
Yes | Missing | REAL | If IASI_DetectCloud is TRUE |
CloudAbsThresh_IRWindow | Yes | Missing | REAL | If IASI_DetectCloud is TRUE |
HighCloudAbsThresh_IRWindow | Yes | Missing | REAL | If IASI_DetectCloud is TRUE |
Additional_Cost_Function | No | 0=None | INTEGER | 0=None, 1=CloudBoundaries Retrieval of cloud only |
Cloud_Min_Pressure | No | 200hPa | REAL | Minimum allowed pressure for retrieved cloud top in hPa. Retrieval of cloud only. |
Use_EmisAtlas | No | .FALSE. | LOGICAL | Switch to control whether an emissivity atlas is used or not |
Atlas_Dir | No | 'EmisAtlas' | CHARACTER | Directory containing the emissivity atlas |
Read_CLW_Background |
No |
0=no clw profile |
INTEGER |
Allowed values are 0 and
1. 0= No clw profile in the Background file and
1=clw profile in the Background file |
Lqtotal |
No |
0=no qtotal retrieval |
INTEGER |
Allowed values are 0 and
1. 0=LWP retrieval, 1=Qtotal retrieval |
An example ControlData.NL file is:
! AIRS Control file for IASI_1DVar
! ******** THESE COMMENTS MAY NEED TO BE REMOVED IF COMPILING ***********
! ******** WITH F90 (rather than F95) ***********************************
&Control SoundingType_Text='AIRS'
! Relative path of the coefficients directory
Coeffs_Dir='AIRS_COEFFS_DIR/'
! This controls the verbosity of the output 0=Minimal, 40=verbose
GeneralMode=0
! For the minimisation option, 1 is Newtonian, 2 is Marquardt-Levenberg
Minimisation_Method=1
MaxIterations=10
! Cloud liquid water profile in the background, 0=no (default), 1=yes
Read_CLW_Background=0
! Cloud liquid water retrieval method, 0=LWP retrieval, 1=qtotal retrieval
Lqtotal=0
! These are cloud cost thresholds:
CostThresh_Land=20.
CostThresh_Sea=20.
CostThresh_IRWindow_Land=0.
CostThresh_IRWindow_Sea=0.
CloudAbsThresh_IRWindow=-10.
HighCloudAbsThresh_IRWindow=-55. /
3b. Control Files: Retrievals.NL
! Retrieval set up file for AIRS
!
! ******** THESE COMMENTS MAY NEED TO BE REMOVED IF COMPILING ***********
! ******** WITH F90 (rather than F95) ***********************************
&Retrieval Temperature=1,43,1
Humidity= 18,26,44
Ozone= 0,0,0
Surface_Temperature= 1,70
Surface_Humidity= 1,71
Surface_Pressure= 0,0
Skin_Temperature= 1,72
Cloud_Liquid_Water= 0,0
Cloud_Top_Pressure= 0,0
Cloud_Fraction= 0,0
Surface_UWind= 0,0
Surface_VWind= 0,0 /
Cloud_Top_Pressure and Cloud_Fraction do not require a background error covariance entry as the default is to assume large background errors for these quantities if they are to be retrieved. The retrieval of these cloudy parameters uses some additional code to the normal retrieval. The methodology for this is documented in Appendix C.
In the example given, surface temperature, skin temperature and surface humidity are retrieved.
There are are two optional header entries: "Composite Instruments:" and "Channels".
This is a test ATOVS observations fileFor the case where the "Composite Instruments" option isn't specified (e.g., for IASI) the section between "Number of Observations" and "-----------" above is replaced with:
This is based on a RTTOV simulated set of radiances from NOAA-15
which is computed from ADC's background profile surf emis=0 RWS
22nd March 2
001
There are 10 header lines in total here!!!
So this is line 10.
Number of Observations in File: 10
No. of Chans per Observation: 40
Total Number of instruments making up observations : 6
*** In the following Series, Platform and Instrument are defined ***
*** according to the relevant RT Model definitions (if required): ***
Composite Instruments: 2
NOAA-15 ATOVS
NOAA-16 ATOVS
Sat. Series Platform Instrument First_Channel Last_Channel Sat ID
1 15 0 1 20 15
1 15 3 21 35 15
1 15 4 36 40 15
1 16 0 1 20 16
1 16 3 21 35 16
1 16 4 36 40 16
----------------------------------------------------------------------
Obs ID: 1 Obs Type: 2 Satellite ID: 15
Latitude: 0.000 Longitude: 0.000 Elevation: 0.0
Surface Type: 1 Sat Zen Angle: 0.000 Solar Zen Ang: 38.000
Brightness Temperatures:
226.717 218.949 219.645 224.452 236.374 247.804
257.609 274.562 247.897 269.388 248.331 226.588
261.211 252.591 241.597 236.591 266.911 271.983
271.537 -9999.00 152.095 152.105 209.206 245.611
244.334 233.650 226.083 220.954 216.761 215.937
217.657 221.861 233.096 245.561 200.407 206.016
235.261 242.110 252.165 261.941
Obs ID: 2 Obs Type: 2 Satellite ID: 16
Latitude: 0.000 Longitude: 0.000 Elevation: 0.0
Surface Type: 1 Sat Zen Angle: 0.000 Solar Zen Ang: 38.000
Brightness Temperatures:
225.552 219.724 219.573 226.521 237.666 246.276
255.913 267.355 250.477 259.886 251.149 229.323
260.399 248.081 240.887 237.802 264.660 266.901
266.492 -9999.00 152.369 156.488 217.802 243.712
243.308 234.084 225.322 220.200 217.276 217.978
Number of Observations in File : 980The "Sat ID" is used to keep track of the instruments where more than one is being used at a time (it was previously called the "WMO No." but this was misleading).
No. of Chans per Observation: 8461
Number of instruments making up observations : 1
*** In the following Series, Platform and Instrument are defined ***
*** according to the relevant RT Model definitions (if required): ***
Sat. Series Platform Instrument First_Channel Last_Channel Sat ID
1 1 1 1 8461 300
----------------------------------------------------------------------
The "Channels" option is used for those cases where only a subset of available instrument channels are required. After this the instrument channels that are actually being used are listed. This is purely to allow the correct channels to be set up in the RT code and in all other places (except the R-matrix - see below) the n input channels a re referred to as channels 1 ... n.
After the headers lines, each observation is listed, prefixed by a sub-header detailing auxiliary data for the observation in question such as observation number, latitude, longitude, satellite view angle, etc.
Entry | Notes | Type | Variable set in IASI_Read_Observations |
First sub-header line: | |||
Obs ID | Integer | Number identifying the current observation (usually 1-Number of Obs.) | Observations % ID |
Obs Type | Integer | Obsolete but retained for backward compatibility | - |
Satellite ID | Integer | Specifies the satellite to be used (ref. "Sat ID" in main header) | Observations % SatID |
Second sub-header line (Optional): | |||
Year | Integer | Year of Observation (YYYY) | Observations % Date(1) |
Month | Integer | Month of Observation (MM). | Observations % Date(2) |
Day | Integer | Day of Observation (DD) | Observations % Date(3) |
Third sub-header line: | |||
Latitude | Real | Latitude of Observations (°N) | Observations % Latitude % Value |
Longitude | Real | Longitude of Observations (°E). | Observations % Longitude % Value |
Elevation | Real | Height of surface (metres above sea level). (Not currently used) | Observations % Elevation |
Fourth sub-header line: | |||
Surface Type | Integer | Type of surface. 1=Sea; 2=SeaIce; 3=Land; 4=Highland; 5=Mismatch. For types 3-5, land is assumed by the radiative transfer model. | Observations % Surface |
Sat Zen Angle | Real | Satellite Zenith Angle at surface (°). (This was in previous versions erroneously labelled Sat View Angle). | Observations % SatZenith |
Solar Zen. Ang. | Real | Solar Zenith Angle at surface (°) | Observations % SolarZenith |
Please note once more that the colons in the header and sub-header lines are used by the program as delimiters and must be included. Please also note that the second (optional) sub-header line is required when using an emissivity atlas with RTTOV-10 or RTTOV-11. In all other situations it may be omitted. Following the sub-header lines, the observed brightness temperatures are listed (free-format).
This file and the subroutine that reads it may be replaced by one in a format defined by the user.
3d. Data Files: Background.dat
The Background.dat file starts with a 10 header lines that are reserved for user's comments.
Value | Definition |
1 | volume mixing ratio in ppmv with respect to dry air |
2 | mass mixing ratio in kg/kg dry air |
3 | relative humidity |
3e. Auxiliary Files: Rmatrix.dat
The file is formatted as follows (all entries are in free-format):
The second line is made up of four integers
which are (in order):
Next, before the errors themselves, the channels used are listed. This is the only place apart from the observation file where the absolute instrument channel numbers are used. This is done to ensure that the observation error covariances are indeed for the channels that are present in the observation file. See the example below for ATOVS where channels 1-20 for HIRS, 1-15 for AMSU-A, and 1-5 for AMSU-B are lsited.
Finally, the R-matrix itself is read in.
An example Rmatrix file is shown here:
NOAA-15 ATOVSIn this example the matrix type is band-diagonal with 40 channels and 1 band (so it is a diagonal matrix). The matrix is not already inverted. The R-matrix for HIRS 1-20, AMSU-A 1-15 and AMSU-B 1-5 is set up.
2 40 1 0
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
19 20 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15 1
2 3 4 5
1.22 0.5 0.5 0.5 0.5 0.5 1.22 6.32 1.4 6.32
3.0 4.0 1.22 1.22 0.5 0.4 0.4 0.4 0.4 9.9
2.0 2.0 2.0 1.26 0.25 0.25 0.25 0.25 0.4 0.4
0.5 0.95 1.22 1.22 3.0 8.0 5.0 4.0 4.0 4.0
3f. Auxiliary Files: Bmatrix_43L.dat & Bmatrix_51L.dat
3g. Auxiliary Files: ChannelChoice.dat
The codes employed in this file are as follows:
2nd column: Retrievals Code. The situations in which the channel is used are determined by the value of the integer in this column. The code is based on which bits are one in the binary representation of the integer. Bits for surface type and cloud situation are coded as follows:
Bit Number Sounding OptionSo, for example, if the code is 1023 (=1111111111 in binary) the channel is used in all cases. If the code is 33 (=100001) then the channel is to be used only for clear skies over sea.
1 Surface = Sea
2 Surface = SeaIce
3 Surface = Land
4 Surface = Highland
5 Surface = Surface Mismatch
6 Cloud = Clear
7 Cloud = IRCloudy
8 Cloud = MWCloudy *
9 Cloud = Rain *
10 Cloud = High Cloud
* The cloud codes corresponding to bits 8 & 9 are not used at present, but are reserved for microwave cloudy and rain situations.
3rd column: Monitoring and Cloud Detection Code. If the absolute integer value in this column is set to 1, the channel is to be monitored (i.e., the radiances for this channel are to be calculated for the background profile and compared to the observations. If the column value is 3, the channel is used for monitoring and cloud detection. If the value is 2, the channel is used in cloud detection but not monitoring. All channels that are to be used in retrievals are monitored by default.
If the value of the Monitoring and Cloud Detection Code is negative, the same codes as above apply to the absolute value plus the channel is the designated window channel (if more than one window channel is specified, the last one is used). The window channel is used in the window channel test where the field of view is designated as cloudy if the difference between the observed and background brightness temperatures for the window channel exceeds the value of CostThresh_IRWindow_sea/land which is set up through the
In the following example file the selection codes for 11 channels are specified. HIRS 5-12 are used for retrievals in clear cases and AMSU-A 3-5 in all cases. HIRS-8 is also used as the window channel:
11
5 33 3 HIRS-5
6 33 3 HIRS-6
7 33 3 HIRS-7
8 33 -3 HIRS-8
9 33 3 HIRS-9
10 33 3 HIRS-10
11 33 3 HIRS-11
12 33 3 HIRS-12
23 1023 3 AMSU-3
24 1023 3 AMSU-4
25 1023 3 AMSU-5
4a. Retrieved_Profiles.dat
4b. Retrieved_BTs.dat
4c. Additional Output: Minimisation.log and
Minimisation_BTs.log
4d. Additional Output: A-Matrix and Am-Matrix
There are two main output files, Retrieved_BTs.dat and Retrieved_Profiles.dat. These are ASCII files and their contents should be obvious from inspection.
Additional diagnostic files are produced if the program is run in DebugMode or higher (set GeneralMode to 30 or more in ControlData.NL). These files are A-Matrix.out, Am-Matrix.out, Minimisation.log, and Minimisation_BT.log.
4a. Output: Retrieved_Profiles.dat
The file is written in ASCII and should be self-explanatory. Both background and retrieved fields are supplied. The retrieved fields that are output are: Temperature Profile, Humidity Profile (in the same units as set up in the Background.dat file), Ozone profile, surface temperature, surface humidity (in same units as in the background file), skin temperature and surface pressure. If a Cloudy Retrieval is being done, cloud top pressure and cloud fraction are also output. If a microwave LWP retreival is being done, that will also be output. In addition the observation number, number of iterations, normalised cost function and normalised cost function gradient are reported.
An abridged example of the contents of this file is:
Observation = 1[ Return to Top of Section ]
Retrieval Background
Pressure (Pa) T (K) q (ppmv) Ozone T (K) q (ppmv) Ozone
101325. 272.132 0.4296E+04 0.2456E-01 272.070 0.4280E+04 0.2456E-01
100543. 271.952 0.4227E+04 0.2507E-01 271.854 0.4220E+04 0.2507E-01
98588. 271.509 0.4061E+04 0.2643E-01 271.311 0.4074E+04 0.2643E-01
. . . . . . .
. . . . . . .
. . . . . . .
69. 265.252 0.5636E+01 0.6042E+01 265.741 0.5636E+01 0.6042E+01
29. 256.937 0.5410E+01 0.5971E+01 257.553 0.5410E+01 0.5971E+01
10. 241.249 0.4361E+01 0.5792E+01 241.635 0.4361E+01 0.5792E+01
Surface Temperature (K): 272.935 272.070
Surface Humidity (ppmv): 5202.160 4279.650
Skin Temperature (K): 272.935 272.070
Surface Pressure (Pa): 101325. 101325.
No. of Iterations: 2
Normalised Cost Function: 0.654 Normalised Gradient: 0.001
--------------------------------------------------------------
Observation = 2
Retrieval Background
Pressure (Pa) T (K) q (ppmv) Ozone T (K) q (ppmv) Ozone
101325. 271.698 0.4169E+04 0.2456E-01 272.070 0.4280E+04 0.2456E-01
100543. 271.480 0.4110E+04 0.2507E-01 271.854 0.4220E+04 0.2507E-01
98588. 271.008 0.3965E+04 0.2643E-01 271.311 0.4074E+04 0.2643E-01
. . . . . . .
. . . . . . .
. . . . . . .
261. 242.475 0.4945E+01 0.6106E+01 242.500 0.4945E+01 0.6106E+01
142. 256.285 0.5429E+01 0.6080E+01 256.212 0.5429E+01 0.6080E+01
69. 265.855 0.5636E+01 0.6042E+01 265.741 0.5636E+01 0.6042E+01
29. 257.713 0.5410E+01 0.5971E+01 257.553 0.5410E+01 0.5971E+01
10. 241.273 0.4361E+01 0.5792E+01 241.635 0.4361E+01 0.5792E+01
Surface Temperature (K): 268.230 272.070
Surface Humidity (ppmv): 4559.714 4279.650
Skin Temperature (K): 268.230 272.070
Surface Pressure (Pa): 101325. 101325.
No. of Iterations: 2
Normalised Cost Function: 0.782 Normalised Gradient: 0.000
--------------------------------------------------------------
Each observation has three headers: the observation number, the number of channels used in the retrieval and the column titles. Four columns are then reported: the channel number, the background brightness temperature, the observed brightness temperature and the retrieved brightness temperature. The channel numbers reported are those specified in the first column of the ChannelChoice.dat file. Only those channels used in the retrieval are reported.
The following is a typical Retrieved_BTs.dat produced from a retrieval using HIRS 1-19 and AMSU-13:
Observation = 1[ Return to Top of Section ]
Number of Channels Used = 20
Channel Background Observed Retrieved
1 226.579 226.717 226.167
2 219.569 218.949 219.310
3 219.321 219.645 219.153
4 225.255 224.452 225.000
5 237.027 236.374 236.813
6 247.197 247.804 247.077
7 256.419 257.609 256.574
8 271.211 274.562 271.996
9 250.658 247.897 251.042
10 269.220 269.388 269.773
11 251.843 248.331 250.209
12 232.814 226.588 230.007
13 261.277 261.211 261.721
14 250.869 252.591 250.952
15 241.685 241.597 241.568
16 237.392 236.591 237.163
17 266.360 266.911 266.937
18 270.537 271.983 271.343
19 271.088 271.537 271.877
32 223.373 221.861 222.736
4c. Additional Output: Minimisation.log and Minimisation_BT.log
4d. Additional Output: A-Matrix and Am-Matrix
If a fastmodel other than RTTOV, Gastropod or RTIASI is required, the interface with the new fastmodel will need to be coded up and called from IASI_Fastmodel_Interface.f90. Follow the example of one of the the step-by-step guide in Appendix D.
Additional retrieval variables will require changes to the fastmodel interfaces (at least for the fastmodels to be used), IASIMod_RTModel, IASI_Read_Background, IASI_SetUpBackground, IASI_SetUpRetrievals, IASI_TranslateDataOut and probably IASI_CheckIteration.
Contact nwpsaf@metoffice.gov.uk for questions on changing the code.
There are many user-defined parameters in this code. Some of these parameters may not have been optimised for the users requirements. This particularly applies to channel selection and and cloud detection channels and thresholds. The user is invited to critically review these.
Appendix A. Structure of Code
Appendix B. Minimization
Appendix C. Cloudy
Retrievals
Appendix D. Adding a New Radiative
Transfer Model