RTTOV v12 Code Updates and Known Issues

RTTOV v12 Code Updates

Updates and bug fixes to RTTOV v12 will be published here.

Known bugs and issues

Please report any bugs you find in RTTOV using the NWP SAF Helpdesk. The official release packages for each version don’t contain the bug fixes or updates listed here under that version so you should apply any fixes provided below. Bugs/updates in earlier versions have been fixed/implemented in later versions.

NB Bugs in RTTOV v13 may affect RTTOV v12.

DateType/StatusDescription
14/06/2021Updated test reference dataVarious bug fixes below modify the output of the test scripts supplied with RTTOV v12.x as indicated in each bug report below. Updated test reference data for RTTOV v12.3 are available: after applying all bugs listed below for RTTOV v12.3, these reference data should be extracted within the rttov_test/ directory. These data supersede all data linked in the table below for RTTOV v12.3.
14/06/2021Bug - fixedAffects: FASTEM 3-6 10m wind u and v component TL/AD/K (all versions of RTTOV from v13.0 back to v9 at least).

Issue: there is a TL/AD/K bug in the FASTEM code related to the wind azimuth direction calculation. This affects all versions of FASTEM that account for azimuthal variation (FASTEM-3 and later). Wind u/v adjoints and Jacobians are incorrect when the input wind u and v have opposite signs. The direct model is not affected.

Fix: download and extract this tarball in the src/main/ directory, and recompile RTTOV (a clean compilation is not necessary). This fix is for RTTOV v12.3 and v12.2 only. Please contact the help desk if you require a fix for RTTOV v12.1. For RTTOV v13.0, see the RTTOV v13 bug fix table.

This bug fix modifies the output from the test_rttov12.sh and test_multi_instrument.sh scripts. See above for updated test reference data.
11/06/2021Bug - fixedAffects: NLTE bias correction (RTTOV v13.0, v12.x).

See RTTOV v13.0 bug fix dated 11/06/2021 for details and fix.
20/05/2021Bug - fixedAffects: PC-RTTOV simulations with aerosols when the interpolator is not used. (RTTOV v13.0, v12.3, v12.2).

Issue: two array indices were the wrong way around which causes run-time failures.

Fix: download this source file to the src/main/ directory, and recompile RTTOV (a clean compilation is not necessary). This fix can be applied to RTTOV v13.0, v12.3 and v12.2.
11/11/2020Bug - fixedAffects: K model when using new v8 predictor coefficients based on LBLRTM v12.8. NB there is no problem with older coefficients based on LBLRTM v12.2 or with v7/v9 predictors. (RTTOV v12.2, v12.3).

Issue: a missing initialisation means that Jacobians can be in error for a small number of LBLRTM v12.8 v8 predictor coefficient files. This only affects files where one or more channels have no sensitivity to CO2 so that all the optical depth coefficients for the channel(s) are zero. At the time of writing this only affects the new v8 predictor CLARREO MRFIRS and the lightly apodised MTG-IRS coefficients released with RTTOV v13.

Fix: download this source file to the src/main/ directory, and recompile RTTOV (a clean compilation is not necessary). This fix can be applied to RTTOV v12.2 and v12.3.
25/08/2020Bug - fixedAffects: RTTOV-SCATT simulations (at least RTTOV v12.x, v11.x, v10.x).

Issue: a mathematical error in the routine which integrates the radiative transfer equation yields incorrect values for the downwelling radiances for the cloudy column. In many cases the impact is very small (generally much smaller than 1K), but in surface sensitive channels (e.g. 90-150GHz) the impact can be a cooling of brightness temperature of up to ~1K in situations with significant scattering, such as frontal snowfall. Experiments in the ECMWF operational system indicate the bug does not have a significant impact in a data assimilation context.

Fix: download and extract this file in the src/mw_scatt/ directory of your RTTOV v12.3 installation and recompile RTTOV (a clean build is not necessary). NB This fix is only for RTTOV v12.3. See below for the fix for RTTOV v12.2. If you require a fix for an earlier version of RTTOV please contact the Helpdesk.

Updated reference data for the test_rttovscatt.sh script and example_rttovscatt_fwd.F90 program can be extracted in rttov_test/.
19/08/2020UpdateAffects: coefficient download script rttov_coef_download.sh

Issue: script needs updating with the new NWP SAF web server domain.

Fix: the updated script is available here. Coefficient files can always be downloaded directly from the coefficient download page.
18/08/2020Bug - fixedAffects: reading HDF5 coefficient files containing NLTE coefficients when RTTOV is compiled against HDF5 v1.12.x. There is no impact when compiling against HDF5 v1.8.x or v1.10.x. (RTTOV v12.x, v11.x).

Issue: the bug causes run-time failures when reading coefficient files containing NLTE coefficients.

Fix: download this source file to the src/hdf/ directory, and recompile RTTOV (a clean compilation is not necessary). This fix can be applied to RTTOV v12.1, v12.2 and v12.3. Fixes for v11.x can be found here.
26/03/2020Bug - fixedAffects: temperature, water vapour and CO2 Jacobians for solar-affected channels (those less than 5 microns) when using the RTTOV sea surface BRDF model with refraction enabled (RTTOV v12.2 and v12.3).

Issue: a bug in the Jacobian of the sea surface BRDF reflectance calculation leads to errors in T, q and CO2 Jacobians in specific levels (level 2, the bottom level and the level immediately below the surface). The size of the error depends very much on the profile: in many cases it is negligible, but in some cases it can yield Jacobian values that are wrong by a factor of ~2, for example.

Fix: download this source file to the src/main/ directory, and recompile RTTOV (a clean compilation is not necessary).
18/12/2019Bug - fixedAffects: RTTOV wrapper when running simulations simultaneously for multiple instruments (RTTOV v12.x, v11.3).

Issue: the code will fail due to some variables being shared between instances in the main subroutines of the wrapper interface.

Fix: download this tarball, extract it in the src/wrapper/ directory, and recompile RTTOV (a clean compilation is not necessary).
Note: this fix applies only to RTTOV v12.3. For v12.1 and v12.2 fixes see the tables below. The fix for v11.3 can be found here.
29/08/2019Bug - fixedAffects: AD/K of solar simulations (excluding MFASIS simulations) with the addrefrac (atmospheric refraction) option enabled for multiple profiles where some, but not all, profiles have solar zenith angles above 85.3 degrees (the maximum for which RTTOV can compute solar radiation). There is no problem if all profiles passed to RTTOV have solar zenith angles which exceed this limit or if all profiles have solar zenith angles below this limit. There is no problem if addrefrac false which includes simulations where plane_parallel is set to true (which includes simulations using the DOM solver). This affects all v11.x and v12.x releases.

Issue: a missing initialisation in the local path calculations for profiles with solar zenith angles above the maximum results in spurious values in AD and K output.

Fix: download this tarball, extract it in the src/main/ directory, and recompile RTTOV (a clean compilation is not necessary). This fix can be applied to RTTOV v12.2 as well. Contact the helpdesk if you require a fix for an earlier version of RTTOV.

NB This tarball includes the fix for the bug dated 16/04/2019 below which affects similar solar simulations.
02/08/2019Bug - fixedAffects: Rayleigh single-scattering calculation in TL/AD/K models (i.e. visible/near-IR channels for clear-sky and scattering simulations excluding MFASIS; the direct model is not affected). This affects all RTTOV v12.x releases and v11.3.

Issue: there is a minor bug in the TL/AD/K calculation of the Rayleigh single-scattering contribution to visible/near-IR radiances which has a small impact on tangent linear radiance and reflectance outputs, and on the AD/K of the water vapour profile and 2m water vapour.

Fix: the following fix is for v12.3 only. If you require a fix for an earlier version of RTTOV please contact the helpdesk.
Download this tarball, extract it in the src/main/ directory, and recompile RTTOV (a clean compilation is not necessary). This bug fix affects the output from the test_rttov12.sh and test_solar.sh test scripts. Updated test reference data are available: download this tarball and extract it in the rttov_test/ directory.
23/04/2019Bug - fixedAffects: NLTE simulations (RTTOV v12.1, v12.2 and v12.3).

Issue: if the solar zenith angle is exactly 90 degrees a numerical error occurs.

Fix: see the RTTOV v13.0 bug fix dated 11/06/2021.
16/04/2019Bug - fixedAffects: solar simulations (excluding MFASIS simulations) for multiple profiles where some, but not all, profiles have solar zenith angles above 85.3 degrees (the maximum for which RTTOV can compute solar radiation). There is no problem if all profiles passed to RTTOV have solar zenith angles which exceed this limit or if all profiles have solar zenith angles below this limit. This affects all v11.x and v12.x releases.

Issue: this particular case is not checked during the local satellite/solar path geometry calculations and a numerical error results. For profiles with large solar zenith angles above the limit RTTOV should return zero radiances.

Fix: the fix for this bug is included in the fix for the issue above dated 29/08/2019.
16/04/2019Bug - fixedAffects: VIS/IR cloud simulations with the simple cloud overlap option (cldstr_simple) and the new grid_box_avg_cloud option both true (v12.3 only).

NB The simple cloud overlap option generates one clear and one cloudy column with a single effective cloud fraction computed as the maximum cfrac value in the layers from the top of atmosphere down to the pressure specified in the cldstr_low_cloud_top option. It is intended for use in very specific scenarios (for example high-peaking sounder channels) and in the general case it can have a very detrimental effect on the accuracy of simulations. It is therefore not recommended unless you really know what you are doing. This bug does not affect simulations using the default maximum/random cloud overlap so the majority of users will be unaffected.

Issue: when the grid_box_avg_cloud option is true the input grid-box-layer-average cloud concentrations are divided by the cloud fraction inside RTTOV to obtain the cloud concentration of the cloudy fraction of each layer. The code always divided the cloud concentrations by the corresponding layer cfrac which is correct for the maximum/random overlap scheme. However, for the simple overlap scheme the cloud concentrations should be divided by the calculated effective profile cloud fraction instead.

Fix: download this tarball, extract it in the src/main/ directory, and recompile RTTOV (a clean compilation is not necessary).
04/04/2019Bugs - fixedAffects: HTFRTC Jacobian model (v12.3 only).

Issues:
- Tskin Jacobians are zero
- Variable gas Jacobians (water vapour, ozone, etc) are incorrect if the gas units are not kg/kg
- The emissivity Jacobians are output in emissivity_k%emis_out instead of emissivity_k%emis_in, the latter being consistent with RTTOV.

Fix: download this file to src/main/ and recompile RTTOV (a clean compilation is not necessary).
01/04/2019Bug - fixedAffects: new Baran 2018 ice optical property parameterisation (v12.3 only).

Issue: a bug in the code means that the optical property parameterisation is not implemented correctly. The impact can be quite variable, but is especially large for visible/near-IR channels. This bug does not affect the pre-existing Baran 2014 parameterisation.

Fix: download this tarball, extract it in the src/main/ directory, and recompile RTTOV (a clean compilation is not necessary). This bug fix affects the output from the test_rttov12_hires.sh and test_multi_instrument.sh test scripts. Updated test reference data are available: download this tarball and extract it in the rttov_test/ directory.

DateType/StatusDescription
25/08/2020Bug - fixedAffects: RTTOV-SCATT simulations (at least RTTOV v12.x, v11.x, v10.x).

Issue: a mathematical error in the routine which integrates the radiative transfer equation yields incorrect values for the downwelling radiances for the cloudy column. In many cases the impact is very small (generally much smaller than 1K), but in surface sensitive channels (e.g. 90-150GHz) the impact can be a cooling of brightness temperature of up to ~1K in situations with significant scattering, such as frontal snowfall. Experiments in the ECMWF operational system indicate the bug does not have a significant impact in a data assimilation context.

Fix: download and extract this file in the src/mw_scatt/ directory of your RTTOV v12.2 installation and recompile RTTOV (a clean build is not necessary). NB This fix is only for RTTOV v12.2. See above for the fix for RTTOV v12.3. If you require a fix for an earlier version of RTTOV please contact the Helpdesk.

Updated reference data for the test_rttovscatt.sh script and example_rttovscatt_fwd.F90 program can be extracted in rttov_test/.
18/12/2019Bug - fixedAffects: RTTOV wrapper when running simulations simultaneously for multiple instruments.

Issue: the code will fail due to some variables being shared between instances in the main subroutines of the wrapper interface.

Fix: download this tarball, extract it in the src/wrapper/ directory, and recompile RTTOV (a clean compilation is not necessary).
Note: this fix applies only to RTTOV v12.2. For v12.1 and v12.3 fixes see the tables below and above respectively.
14/02/2019Bug - fixedAffects: HTFRTC simulations (RTTOV v12.2 only)

Issue: there was an error in the calculation of geopotential height which is used when calculating the local path angle through the atmosphere. There is no impact for nadir simulations, and the errors increase to order 0.1K at zenith angles of 60 degrees (though in many channels the errors are smaller than this).

Fix: download and extract this file in your top level RTTOV v12.2 directory (e.g. ~/rttov12/) and recompile RTTOV.
NB This tarball includes the HTFRTC bug fix and optional update dated 09/05/2018 below.
Updated reference data for the test_htfrtc.sh script can be extracted in rttov_test/. Output from the example_htfrtc_fwd.F90 example program does not change as a result of this update.
30/01/2019Bug - fixedAffects: RTTOV GUI

Issue: minor problem with incorrect wavenumbers displayed in status bar in the display of Jacobians.

Fix: download this file and extract it in the gui/ directory in the top-level of your RTTOV installation and re-run the GUI. NB This includes the fixes below dated 25/01/2019 and 11/01/2019.
25/01/2019Bug - fixedAffects: PC-RTTOV simulations in the RTTOV GUI

Issue: with recent versions of matplotlib, labels were incorrect on the y-axis in the kmatrix / kpcmatrix views, and the number of PC scores was incorrectly set in kpcmatrix.

Fix: this bug is fixed in the code update available above dated 30/01/2019.
11/01/2019Bug - fixedAffects: RTTOV GUI

Issue: there is a mis-match in the wavelength/wavenumber displayed in the status bar of the Radiance window.

Fix: this bug is fixed in the code update available above dated 30/01/2019.
30/10/2018Bug - fixedAffects: MFASIS simulations.

Issue: the MFASIS parameterisation as originally implemented gave larger-than-expected errors for mixed-phase cloud. The model has been revised to improve the accuracy in these cases.

Fix: download and extract this file in your top level RTTOV v12.2 directory (e.g. ~/rttov12/) and recompile RTTOV. The tarball includes updated reference data for the example_cld_mfasis_fwd.F90 example program. This code update should be used in conjunction with the new MFASIS LUT files now available on the coefficients download page.
26/09/2018Bug - fixedAffects: Mietable generation software

Issue: there are errors in generated Mietable files if more than one particle type uses the ARTS database of optical properties. This does not affect the Mietable files available to download on the coefficients download page because they only use the ARTS database for one particle type. It only affects the code which generates the Mietable files, it does not affect RTTOV-SCATT itself.

Fix: download this file to src/mw_scatt_coef/ and recompile RTTOV.
01/08/2018Bug - fixedAffects: reading HDF5 PC-RTTOV coefficients using rttov_read_coefs with the optional channels_rec argument.

Issue: the channels_rec argument to rttov_read_coefs is ignored for pccoef files unless the channels argument is also passed. This is not consistent with ASCII and binary format files for which the two arguments are independent.

Fix: download this file, extract to src/coef_io/ and recompile RTTOV. Note that after this update the reconstructed radiance channels will be numbered from 1...n if you supply the channels_rec argument, regardless of whether you pass the channels argument: this is the intended behaviour and is consistent with the user guide.
12/07/2018Bug - fixedAffects: secondary radiance output radiance2%down(:,:) when the do_lambertian option is true.

Description: the downwelling radiances are not modified with the Lambertian correction and so are inconsistent with the other radiance and radiance2 outputs.

Fix: download this file to src/main/ and recompile RTTOV.
30/05/2018Bug - fixedAffects: non-solar IR cloud/aerosol simulations. Most likely to affect code where the coefficients structure variable (type rttov_coefs) is allocated dynamically at run-time.

Description: some potentially uninitialised values in the cloud/aerosol optical properties structure cause intermittent/occasional segmentation faults when they are used to size arrays later on inside RTTOV.

Fix: download this file to src/coef_io/ and recompile RTTOV. Note that this will not work with RTTOV v12.1: see the table below for the v12.1 fix.
10/05/2018Optional updateAffects: output warnings when apply_reg_limits is true.

Description: in v12.1 and earlier, no warnings are printed out when input profiles exceed the regression limits if the apply_reg_limits option is true. In v12.2 warnings are printed out regardless of apply_reg_limits. This update reverts to previous the behaviour.

Update: download this file to src/main/ and recompile RTTOV.
09/05/2018Updated test reference dataAffects: RTTOV-SCATT

Description: since the RTTOV v12.2 release, updated Mietable files were made available for download (see the coefficients download page). These result in changes to the test outputs for the test_rttovscatt.sh and run_example_rttovscatt_fwd.sh scripts which now differ to the test reference data included in the v12.2 package.

Update: download and extract this file in the rttov_test/ directory. This will enable you to verify RTTOV-SCATT in your RTTOV installation using the latest Mietable files.
09/05/2018Optional updateAffects: HTFRTC simulations (RTTOV v12.2 only)

Description: in the v12.2 release, HTFRTC cannot be run via the RTTOV parallel interface. This update enables the capability for multi-threaded HTFRTC simulations using OpenMP.

Update: this update is included in the HTFRTC bug fix dated 14/02/2019 above. When compiling you must specify one of the *-openmp compiler flag files in build/arch/ to enable multi-threaded simulations. The update tarball includes the modified example code and associated calling script (src/test/example_htfrtc_fwd.F90 and rttov_test/run_example_htfrtc_fwd.sh) which demonstrates use of the RTTOV parallel interface.
09/05/2018Bug - fixedAffects: HTFRTC simulations (RTTOV v12.2 only)

Description: due to a bug in the calculation of geopotential height (used in the calculation of local path angles through the atmosphere) there are small errors in the HTFRTC outputs equivalent to up ~1mK in reconstructed brightness temperatures. In addition the rttov_read_coefs_htfrtc.F90 subroutine has been updated to improve compiler compatibility (this has no impact on outputs).

Fix: the fix for this is included in the HTFRTC bug fix dated 14/02/2019 above. The fix changes forward model outputs slightly (equivalent to up to ~1mK in reconstructed brightness temperatures), and also has a small impact on Jacobians. Updated test reference data are available under the 14/02/2019 bug fix above.

DateType/StatusDescription
18/12/2019Bug - fixedAffects: RTTOV wrapper when running simulations simultaneously for multiple instruments.

Issue: the code will fail due to some variables being shared between instances in the main subroutines of the wrapper interface.

Fix: download this tarball, extract it in the src/wrapper/ directory, and recompile RTTOV (a clean compilation is not necessary).
Note: this fix applies only to RTTOV v12.1. For v12.2 and v12.3 fixes see the tables above.
30/01/2019Bug - fixedAffects: RTTOV GUI

Issue: minor problem with incorrect wavenumbers displayed in status bar in the display of Jacobians.

Fix: download this file and extract it in the gui/ directory in the top-level of your RTTOV installation and re-run the GUI. NB This includes the fixes below dated 25/01/2019 and 14/01/2019.
25/01/2019Bug - fixedAffects: PC-RTTOV simulations in the RTTOV GUI

Issue: with recent versions of matplotlib, labels were incorrect on the y-axis in the kmatrix / kpcmatrix views, and the number of PC scores was incorrectly set in kpcmatrix.

Fix: this bug is fixed in the code update available above dated 30/01/2019.
14/01/2019Bug - fixedAffects: RTTOV GUI

Issue: there was an issue with the location in which the GUI was looking for icons for the interface. This can cause the GUI to fail to operate correctly, for example, when running K model simulations.

Fix: this bug is fixed in the code update available above dated 30/01/2019.
30/05/2018Bug - fixedAffects: non-solar IR cloud/aerosol simulations. Most likely to affect code where the coefficients structure variable (type rttov_coefs) is allocated dynamically at run-time.

Issue: some potentially uninitialised values in the cloud/aerosol optical properties structure cause intermittent/occasional segmentation faults when they are used to size arrays later on inside RTTOV.

Fix: download the file rttov_nullify_coef_scatt_ir.F90.v12.1 to src/coef_io/, rename it to rttov_nullify_coef_scatt_ir.F90, and recompile RTTOV. Note there is a different fix for RTTOV v12.2 (see table above).
16/08/2017Bug - fixedThe ocean and coastal water reflectance spectra from the USGS Digital Spectral Library have been incorrectly sampled in wavenumber space leading to incorrect fixed reflectances being used for water in the sea surface BRDF model (see the RTTOV v12 user guide for details) and incorrect fixed reflectances for sea-surface profiles being returned by the BRDF atlas. The "old" (incorrect) and "new" (corrected) spectra can be seen in the following plots (note that the precision of the data has also been increased in the corrected spectra):
- ocean water spectrum
- coastal water spectrum

For the ocean water case the largest impact on top-of-atmosphere simulated reflectances is up to order 0.01 in channels around 0.4-0.55µm while for other channels the impact is of order 0.001.

A code fix is available: copy this updated source file to src/main/ and recompile RTTOV.

This update changes the test output for test_fwd.sh, test_rttov12.sh, test_solar.sh and test_brdf_atlas.sh. If you wish to update the reference data for these test scripts download and extract this tarball in the rttov_test/ directory.
11/08/2017Bug - fixedMinor bug in pyrttov (the Python RTTOV wrapper) which causes a fatal error if the Atlas class is initialised with the verbose argument set to False.

A code fix is available: copy the file (right-click and "Save As...") __init__.py_ and rename it to wrapper/pyrttov/__init__.py
11/08/2017Bug - fixedArray bounds errors occur with the BRDF atlas if the latitude is set to exactly -90 degrees or if the longitude is set to exactly 180 degrees.

A code fix is available: copy this updated source file to src/brdf_atlas/ and recompile RTTOV.
07/07/2017Bug - fixedArray bounds errors occur with the CAMEL atlas if the latitude is set to exactly -90 degrees or if the surface type is set to land and the atlas has no data for the given lat/lon.

A code fix is available: copy this updated source file to src/emis_atlas/ and recompile RTTOV.
07/07/2017Bug - fixedAn array bounds error occurs with the UWIRemis atlas if the latitude is set to exactly -90 degrees.

A code fix is available: copy this updated source file to src/emis_atlas/ and recompile RTTOV.
08/06/2017Bug - fixedAn array bounds error occurs if the TELSEM2 atlas is called for a profile with a latitude of exactly 90 degrees.

A code fix is available: copy this updated source file to src/emis_atlas/ and recompile RTTOV (NB this includes the bug fix below dated 27/02/2017).
17/03/2017Bug - fixedIf you carry out visible/IR aerosol simulations using the predefined particle types and you do not use the RTTOV interpolator (i.e. profiles are input on coefficient levels) then the relative humidity calculation is not carried out. This will result in errors in the calculation of optical properties of those aerosol types which vary with humidity. There is no problem if you are using the RTTOV interpolator.

A code fix is available: extract the file rttov121_bugfix_20170317_aerosol.tar.gz in the src/main/ directory and recompile RTTOV.
27/02/2017Bug - fixedThe TELSEM2 emissivity atlas returns emissivity values slightly greater than one for some locations with climatological sea ice for channels at 85GHz and greater. If these values are passed directly into RTTOV v12, it will fail with an error saying there are invalid emissivity values.

This can be avoided either by explicitly capping the emissivities from the atlas at 1. in your own code (e.g. "emis = MIN(1., emis)") or by downloading this updated source file to src/emis_atlas/ and recompiling RTTOV (NB this includes the bug fix above dated 08/06/2017).