Opened 14 years ago
Closed 14 years ago
#215 closed defect (fixed)
Default BUFR ARH?
Reported by: | Dave Offiler | Owned by: | Dave Offiler |
---|---|---|---|
Priority: | minor | Milestone: | 4.1 |
Component: | ropp_io | Version: | 4.0 |
Keywords: | BUFR, abbrevaited routing headers, ARH | Cc: |
Description (last modified by )
Rune has been testing the DRI Candidate Release v4.1 and reports an anomaly in the v4.1 ropp2bufr tool wrt the currently operational v3.0 version:
I've run the GRAS SAF production on a days occulations using ROPP-3 and ROPP-4.1 . The are some differences in the output netcdf files that I guess is due to going from float to doubles. I've tried to compare output bufr files generated using ropp2bufr using input netcdf ('dis'-)files. When I run the old ropp2bufr on both the old and new dis-files there is no difference between the output bufr files. It is the same when I run the new version on both files. But the bufr output files of ropp2bufr version 3,0 and the ropp2bufr version 4.1 doesn't compare well. Looking at the binary dump it seems that the GTS header data is now added as default ? I can see the 'IUTL14 EKMI 050812' header in the bufr output files.
The intent is that -g or -gi switches are required to generate any abbreviated routing header (ARH) (default: no ARH generated), and -c nn (nn=BUFR code for originating centre) to set the ICAO code in the header (default nn=74 for 'EGRR').
So code needs checking to see why this non-default default ARH is being generated. From memory I don't recall any deliberate change to the way headers are generated between v3.0 and v4.0, and onlt DateTime changes have been made to v4.1.
Since the ARH Rune quotes are correct and required for operational BUFR, this is consisderd a minor anomoly, though ought to be closed for v4.1 release.
Change history (4)
comment:1 by , 14 years ago
comment:2 by , 14 years ago
Status: | new → accepted |
---|
comment:3 by , 14 years ago
Description: | modified (diff) |
---|
In ropp2bufr.f90/ConvertROPPtoBUFR, added a section before L1b, L2a & L2b are converted to test
for the whole profile key parameters set missing (except height coordinates), viz:
L1b : BA_L1, BA_L2 and BA
L2a : N
L2b : P, T, and q
If count of missing samples is equal to ..%Npoints, reset ..%Npoints to zero, thus skipping the conversion for that Level using the existing code tests. A (diagnostic) message is written if this happens.
Tested on Rune's netCDF file, and correctly skips the L2b dummy profile generated by the LOG-247 thinner, generating an identical number of BUFR octets (12594) as produced by the v3.0 and v4.0 encoders.
Run t_ropp2bufr in ropp_io/tests - FAIL. Reference datasets (notably ropp_test.bfr) regenerated to reflect reverted Local Data Sub-Category value (see BUFR header item (2) above). Re-run t_ropp2bufr - PASS.
Changeset [2564]. Will provide Rune with updated f90 & bfr files for him to confirm expected outputs.
NB original issue of 'default' ARH is yet to be explained, so this Ticket remains open for now.
comment:4 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Rune has replied today:
Hi Dave Just had to add that I have made a mistake concerning the GTS headers. These are included both in the refenrence and on the test system so there is no difference. /Rune
So closing this ticket.
Rune also notes binary differences in the BUFR when no ARH is generated, and has provided the input netCDF file, BUFR generated with v3.0 ('old') and v4.1 ('new') ropp2bufr versions and decbufr dumps of both.
Inspection of the dump files reveals (in email reply to Rune):
The header value for data sub-category is reverted to 255 with [2562].
Discussing the L2c data, Huw suggests that this may be a consequence of the change to always force 247 (or whatever) levels for the interpolation methods, even if the input no. of levels is smaller (including none). In the case of L2b%Npoints=0, a nominal set of geopotential heights will be generated with P,T,q set invalid/missing and Npoints=247. Since the BUFR encoder only skips a section if Npoints=0, it will encode 247 levels with missing data (but seemingly valid heights). This is indeed what is seen in Rune's 'new' dumps, so this is a likely reason for the difference.
If this is confirmed by running the same v3.0 and v4.0/v4.1 versons on Rune's netCDF file, then since the forced 247-level output is appropriate for netCDF output, but not for BUFR, the encoder should be modified test for all P,T,q missing, and reset Npoints=0 for any data section to suppress useless output and restore previous behaviour.