AAPP Updates and Bugfixes

Updates and Bugfixes

This page documents known bugs (and fixes) for AAPP v8, OPS-LRS v8, AAPP v7 and OPS-LRS v7. For a list of bugs and fixes for older versions of AAPP, please see the archived page.

Questions for other users and developers can be posted on the AAPP Forum.

The reported bugs and problems do not always cause harm. Especially the portability problems depend on the hardware platform, compiler version, option settings used. It is generally not necessary to implement all such modifications into your system. It is recommended to follow just the instructions of the Installation Guide and to consult this list only in case of problems. Nevertheless, programming bugs and algorithm improvements should be implemented.

List of Known Bugs and Problems of AAPP v8 (applicable to the current version)

  1. On some 64-bit systems the size of the default integer in Fortran is 8 bytes; AAPP requires 4 bytes. The behaviour can be different for different compilers. For example, a system has been reported in which g95 gives 8 byte integers but gfortran and gcc give 4-byte integers. gfortran is preferred in this case, but if you want to use g95 then we recommend the use of the “-i4” compiler flag – set this in Makefile.ARCH, and also use the flag if you are building the GMT example executables (which don’t use Makefile.ARCH).
  2. sdh2orbnum.exe is sensitive to spaces in the input date/time and gives wrong answers if you get it wrong. The solution is always to use the wrapper script sdh2orbnum.
  3. For decoding NOAA-20 CrIS Full-Spectral-Resolution BUFR files in AAPP, you need to use the ecCodes interfaces. However, this fails because some “allocate” statements are missing. Please go to directory src/tools/eccodes/libecbufr and edit the files eccodes_get_1c_cris.F and eccodes_get_1c_cris.F. In each file, find the first “allocate” statement and add 2 lines containing allocate(fovs(nsubsets)) and allocate(fors(nsubsets)). Then re-build in the usual way using “make lib; cd ../bin; make bin”.
  4. Sometimes eccodes_encodebufr_1c fails because it is trying to encode values that are outside the ranges permitted by the BUFR definition, e.g. because of bad data at the start of a pass. We recommend that you set the following environment variable so that the program is more tolerant. You can put this in ATOVS_ENV8 or in your calling script:
  5. Update (July 18): due to a bug in ecCodes this doesn’t always work: if a variable that is constant within a message (e.g. some IASI status flags) is out of range, the encoding will still fail. ECMWF are working on it. Further update (Oct 18): this is fixed in ecCodes release 2.9.0.

List of Known Bugs and Problems of OPS-LRS v8 (applicable to the current version)

  1. On some 64-bit systems the size of the default integer in Fortran is 8 bytes; OPS-LRS requires 4 bytes. This issue affects the C to Fortran calls in OPS-LRS and can cause run-time errors: the solution is to set the appropriate flag in ARCH_FFLAGS_BASE in Makefile.ARCH. If the build fails, try optimisation level 0 (work-around for a g95 compiler problem).
  2. Bad data at the start of a pass can cause OPS-LRS to fail. This is the subject of an ongoing investigation with CNES. One possible workaround for the user is to use the tool kai to strip off leading MDRs (say 100) from the IASI Level 0 file. If you consistently get problems, you might be able to configure the reception system to start acquiring data at a higher elevation.

List of Bugs and Problems found in earlier versions of AAPP v8

  1. In AAPP v8.1, there are two spurious lines in the NOAA-20 entry in file atms_channels.dat (in AAPP/src/tools/libaapphdf5). Please delete the two lines that contain the phrase “Dummy line”. Then re-install into AAPP/data/preproc using the command “make dat”. (Note that the install_aapp8.sh script dated 23/02/2018 will do this correction for you). Fixed in v8.2
  2. In AAPP v8.1, both BUFR decoding programs (aapp_decodebufr_1c and eccodes_decodebufr_1c) fail for NOAA-20 ATMS BUFR files, with an error reading atms_channels.dat. To fix it, please edit eccodes_get_1c_atms.F and aapp_get_1c_atms.F. In each case, look for the line that says “read(30,*) id” and insert the following immediately afterwards:
    line="     "

    Then re-compile with “make lib; cd ../bin; make bin”. Fixed in v8.2.

List of Bugs and Problems found in AAPP v7.x

  1. Orbit numbers derived from TLEs from EUMETSAT are not always consistent with orbit numbers from NOAA TLEs. Fixed in update 7.2.
  2. Bad ATMS BTs (>330K) can be included in the spatial filtering process, corrupting the good BTs. Fixed in update 7.2.
  3. In v7.2, the scripts atovin and atovin_antcorr can fail if there is a file in the working directory whose name is a single character long, e.g. “a”, “b”, etc. To fix the problem, insert single quotes round the [a-z] and [A-Z] at line 48 of atovin.ksh (and line 52 of atovin_antcorr.ksh), i.e. ‘[a-z]’ ‘[A-Z]’. Fixed in update 7.3.
  4. In v7.3, the mwts_sdr and mwhs_sdr utilities fail for FY-3B. Fixed in update 7.4.
  5. For level 1c CrIS BUFR encode/decode, the scaling factors for surface height and satellite height are incorrect. Fixed in update 7.4. But note that the surface height is currently the ellipsoid-geoid separation, not the land surface height. This will be addressed at a later date.
  6. in v7.1-7.3, compilation of lec_previ_grib_api.F fails for g77, as the “trim” function is not supported. Fixed in 7.4.
  7. MAIA2.1 threshold files are not correctly extracted under Cygwin, since Windows does not permit use of the “:” character in a file name. Fixed in update 7.5.
  8. Metop-B AVHRR channel 4 and 5 radiance calibration is wrong, due to formatting error in avhcal.txt. Fixed in update 7.5.
  9. Metop-B AMSU-A channel 3, 4, 5 and 8 calibration differs from EUMETSAT calibration by ~0.1K. Fixed in update 7.5.
  10. When using tool noaa_class_to_aapp to ingest AVHRR data from satellites that were operating before the year 2000, the year is not decoded correctly. Fixed in 7.7.
  11. When decoding EUMETSAT’s global stream of BUFR data for AMSU-A, MHS and HIRS, the first scan after crossing the equator (northbound) does not get included in the output. See Forum posting for more details. Fixed in 7.7
  12. In v7.7, the iras_sdr tool for decoding FY-3 IRAS data works for FY-3C but not for FY-3B. The problem was related to string comparisons. Fixed in v7.8.
  13. The mapping of MWTS2 to IRAS (introduced in v7.7) needs optimising, e.g. the angle tolerances. Fixed in v7.8.
  14. atovin can report an array overflow error in AAPP v7.11 and 7.12, following the introduction of NEDT information. Please see Forum posting for details on how to correct inhhdr.F, inahdf.F, inbhdr.F, inmhshdr.F and inmhsget.F. Fixed in AAPP v7.13.

List of Bugs and Problems found in earlier versions of OPS-LRS

  1. The OPS-LRS script ops_process fails with perl_5.18 and later versions. The solution is either (i) use 5.16 or earlier (available from CPAN) or (ii) modify file run/OPS/perl/lib/IASI/OPS.pm: at line 113, add an extra set of brackets around the qw(), i.e. (qw( DIR_NAVIGATION DIR_IASICONFIG ))
  2. OPS-LRS v7.0+p12 fails on Ubuntu (12.04) with a buffer overflow in SD_FRW__ServeurDonnees. A workaround is to edit file src/CMN/src/CMN__OPSFile.cc, and insert the following after line 936 (i.e. before the sprintf statement):
    // bug fix P. Roquet P. Brunel fails on ubuntu 12.04 en gcc -O2
    m_edSoft = 0;
    m_revSoft = 0;
    Then re-build OPS-LRS.