Opened 5 years ago
Closed 4 years ago
#660 closed task (fixed)
ecCodes: include ecCodes dependency and add associated routines to ropp_io
Reported by: | warrick | Owned by: | Kent Bækgaard Lauritsen |
---|---|---|---|
Priority: | normal | Milestone: | 10.0 |
Component: | ROPP(all) | Version: | 9.0 |
Keywords: | Cc: |
Description
The ECMWF ecCodes library is intended as a long-term replacement for ECMWF's GRIB_API and BUFRDC packages.
This ticket covers the inclusion of the ecCodes dependency package in ROPP and the changes to the ropp_io module needed to read and write BUFR files with ecCodes routines and to read GRIB files.
Reading GRIB with ecCodes is a small change that simply looks for the GRIB_API library within ecCodes instead of GRIB_API.
BUFR encoding/decoding with ecCodes takes a different approach to BUFRDC. ecCodes uses 'keys' such as 'meanFrequency' to read and write elements to/from BUFR. To handle this new approach new routines are now built if the ecCodes library is found: ropp2bufr_eccodes, bufr2ropp_eccodes and eum2bufr_eccodes.
For now, users can use continue to use or BUFRDC and/or GRIB_API, switching to ecCodes is optional. However ecCodes is expected to replace these dependencies entirely in the long run.
Attachments (1)
Change history (7)
comment:1 by , 5 years ago
comment:3 by , 4 years ago
The addition of ecCodes to ROPP_IO includes new tests in ropp_io/tests: t_eum2bufr_eccodes.sh and t_ropp2bufr_eccodes.sh (which also tests bufr2ropp_eccodes) The tests run are the same as their ECBUFR/MOBUFr counterparts, converting NetCDF to BUFR and back again, then checking whether the results are identical.
by , 4 years ago
Attachment: | test_gts_headers added |
---|
Script used to compare ECBUFR way of setting GTS headers with new way using perl script
comment:4 by , 4 years ago
The test in the above comment was necessary as in its current state, ecCodes can't set GTS headers. But there is a perl script available from the NWP SAF that can do it. The script writes GTS headers the old way with ECBUFR and the new way with the perl script, then compares the result with an octal dump.
comment:5 by , 4 years ago
Following the beta review, some improvments to the use of ecCodes were suggested, which you can read more about on the following tickets:
#667 - mention environment variable ECCODES_BUFR_SET_TO_MISSING_IF_OUT_OF_RANGE in more parts of ROPP documentation
#670 - provide a patch for editing ecCodes source, rather than just instructions.
#671 - rather than setting ECCODES_BUFR_SET_TO_MISSING_IF_OUT_OF_RANGE as environment variable, set from within Fortran using patch provided by EUMETSAT
#678 - make ecCodes GTS header encoding clearer by printing the key information for the user from eum2bufr_eccodes
and ropp2bufr_eccodes
comment:6 by , 4 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
This work is being carried out on this branch