Opened 3 years ago

Closed 3 years ago

#702 closed task (fixed)

Update roppbufrcodes.nl for new satellites

Reported by: olewis Owned by: olewis
Priority: normal Milestone: 11.0
Component: ropp_io Version: 11.0
Keywords: Cc: Ian Culverwell

Description

This ticket is linked to https://trac.romsaf.org/ropp/ticket/699. Ticket 699 is concerned with updating the BUFR tables to version 35 for the latest satellites. For the ropp2bufr and bufr2ropp tools to work effectively with these new satellites the roppbufrcodes.nl namelist file needs to be updated.

Attachments (2)

roppbufrcodes.nl (4.4 KB ) - added by olewis 3 years ago.
All three new sattellite types
roppbufrcodes_spire.nl (4.2 KB ) - added by olewis 3 years ago.
Just Spire added to the namelist

Download all attachments as: .zip

Change history (11)

comment:1 by olewis, 3 years ago

I have created two namelists that can be used for the more up to date Master table version.

The first contains all the new RO satellites added in Master table version 35. These include Spire, Geoptics and PlanetIQ. However only the Spire data has been available for me to test that this namelist file functions as we would expect and so I have also included a namelist which only contains the Spire updates. The satellite 4 character IDs have been selected by me as a best fit.

As well as the namelist being updated the ropp_io/bufr/convertcodes.f90 file is also updated to have the correct size arrays with the same details as the namelist file also being included in this code.

For including Spire, Geoptics and PlanetIQ the convertcodes.f90 file needs to be dited to the following values

  INTEGER, PARAMETER :: nrx = 47              ! Max. no. of LEO  Rx types
  INTEGER, PARAMETER :: noc = 14              ! Max. no. of orig. centre types
  CHARACTER (LEN=4),  DIMENSION(nrx) :: LEOlist =                &
                      (/ "UNKN", "OERS", "CHMP", "SUNS", "SACC", &
                                 "GRAA", "GRAB", "GRAC", "GRAD", &
                                 "C001", "C002", "C003",         &
                                 "C004", "C005", "C006",         &
                                 "META", "METB", "METC", "TSRX", &
                                 "TDMX", "PAZE", "OSAT", "CNOF", &
                                 "MGTP", "FY3C", "FY3D", "KOM5", &
                                 "C2E1", "C2E2", "C2E3",         &
                                 "C2E4", "C2E5", "C2E6",         &
                                 "C2P1", "C2P2", "C2P3",         &
                                 "C2P4", "C2P5", "C2P6",         &
                                 "Sp3U", "GOP1", "GOP2",         &
                                 "PLIA", "PLIB",                 &
                                 "UNKN", "UNKN", "UNKN" /)

  INTEGER,            DIMENSION(nrx) :: LEOcode =               &
                        (/ NVIND,  040,    041,    800,    820, &
                                   722,    723,    803,    804, &
                                   740,    741,    742,         &
                                   743,    744,    745,         &
                                   004,    003,    005,    042, &
                                   043,    044,    421,    786, &
                                   440,    522,    523,    825, &
                                   750,    751,    752,         &
                                   753,    754,    755,         &
                                   724,    725,    726,         &
                                   727,    728,    729,         &
                                   269,    265,    266,         &
                                   267,    268,                 &
                                  NVIND, NVIND, NVIND   /)

  INTEGER,            DIMENSION(nrx) :: Inscode =               &
                        (/ NVIND,  102,    102,    102,    102, &
                                   102,    102,    104,    104, &
                                   102,    102,    102,         &
                                   102,    102,    102,         &
                                   202,    202,    202,    103, &
                                   103,    103,    287,    102, &
                                   287,    958,    958,    103, &
                                   104,    104,    104,         &
                                   104,    104,    104,         &
                                   104,    104,    104,         &
                                   104,    104,    104,         &
                                   530,    526,    527,         &
                                   534,    535,                 &
                                  NVIND, NVIND, NVIND   /)
  CHARACTER (LEN=8), DIMENSION(noc) :: ORGlist = &
                      (/ "UNKNOWN ", "DMI     ", "GFZ     ", &
                                     "METO    ", "UCAR    ", &
                                     "NESDIS  ", "EUMETSAT", &
                                     "CMA     ", "ISRO    ", &
                                     "SPIRE   ", "GEOPTICS", &
                                     "PLANETIQ",             &
                                     "UNKNOWN ", "UNKNOWN " /)
  INTEGER,            DIMENSION(noc) :: ORGcode =            &
                      (/ NVIND,      094,        078,        &
                                     074,        060,        &
                                     160,        254,        &
                                     038,        028,        &
                                     178,        179,        &
                                     180,                    &
				     NVIND,      NVIND /)
  INTEGER,            DIMENSION(noc) :: Subcode =            &
                      (/ NVIND,      000,        173,        &
                                     000,        000,        &
                                     000,        000,        &
                                     000,        000,        &
                                     000,        000,        &
                                     000,                    &
                                     000,        000 /)
  CHARACTER (LEN=35), DIMENSION(noc) :: ORGname = &
                                    (/ "                                   ", &
                                       "(ROM SAF)                          ", &
                                       "Helmholtz Centre, Potsdam          ", &
                                       "Met Office, Exeter                 ", &
                                       "Boulder                            ", &
                                       "Washington                         ", &
                                       "Darmstadt                          ", &
                                       "Beijing                            ", &
                                       "New Delhi                          ", &
                                       "Spire Global, Inc.                 ", &
                                       "GeoOptics, Inc.                    ", &
                                       "PlanetiQ                           ", &
                                       "                                   ", &
                                       "                                   " /)
  CHARACTER (LEN=4), DIMENSION(noc)  :: ICAOcode = &
                      (/ "ZZZZ",     "EKMI",     "EDZW",  &
                                     "EGRR",     "KWBC",  &
                                     "KNES",     "EUMS",  &
                                     "BAWX",     "DEMS",  &
                                     "ZZZZ",     "ZZZZ",  &
                                     "ZZZZ",              &
                                     "ZZZZ",     "ZZZZ"  /)

To set for only using Spire

  INTEGER, PARAMETER :: nrx = 43              ! Max. no. of LEO  Rx types
  INTEGER, PARAMETER :: noc = 12              ! Max. no. of orig. centre types
  CHARACTER (LEN=4),  DIMENSION(nrx) :: LEOlist =                &
                      (/ "UNKN", "OERS", "CHMP", "SUNS", "SACC", &
                                 "GRAA", "GRAB", "GRAC", "GRAD", &
                                 "C001", "C002", "C003",         &
                                 "C004", "C005", "C006",         &
                                 "META", "METB", "METC", "TSRX", &
                                 "TDMX", "PAZE", "OSAT", "CNOF", &
                                 "MGTP", "FY3C", "FY3D", "KOM5", &
                                 "C2E1", "C2E2", "C2E3",         &
                                 "C2E4", "C2E5", "C2E6",         &
                                 "C2P1", "C2P2", "C2P3",         &
                                 "C2P4", "C2P5", "C2P6",         &
                                 "Sp3U",                         &
                                 "UNKN", "UNKN", "UNKN" /)
  INTEGER,            DIMENSION(nrx) :: LEOcode =               &
                        (/ NVIND,  040,    041,    800,    820, &
                                   722,    723,    803,    804, &
                                   740,    741,    742,         &
                                   743,    744,    745,         &
                                   004,    003,    005,    042, &
                                   043,    044,    421,    786, &
                                   440,    522,    523,    825, &
                                   750,    751,    752,         &
                                   753,    754,    755,         &
                                   724,    725,    726,         &
                                   727,    728,    729,         &
                                   269,                         &
                                  NVIND, NVIND, NVIND   /)
  INTEGER,            DIMENSION(nrx) :: Inscode =               &
                        (/ NVIND,  102,    102,    102,    102, &
                                   102,    102,    104,    104, &
                                   102,    102,    102,         &
                                   102,    102,    102,         &
                                   202,    202,    202,    103, &
                                   103,    103,    287,    102, &
                                   287,    958,    958,    103, &
                                   104,    104,    104,         &
                                   104,    104,    104,         &
                                   104,    104,    104,         &
                                   104,    104,    104,         &
                                   530,                         &
                                  NVIND, NVIND, NVIND   /)
  CHARACTER (LEN=8), DIMENSION(noc) :: ORGlist = &
                      (/ "UNKNOWN ", "DMI     ", "GFZ     ", &
                                     "METO    ", "UCAR    ", &
                                     "NESDIS  ", "EUMETSAT", &
                                     "CMA     ", "ISRO    ", &
                                     "SPIRE   ",             &
                                     "UNKNOWN ", "UNKNOWN " /)
  INTEGER,            DIMENSION(noc) :: ORGcode =            &
                      (/ NVIND,      094,        078,        &
                                     074,        060,        &
                                     160,        254,        &
                                     038,        028,        &
                                     178,                    &
				     NVIND,      NVIND /)
  INTEGER,            DIMENSION(noc) :: Subcode =            &
                      (/ NVIND,      000,        173,        &
                                     000,        000,        &
                                     000,        000,        &
                                     000,        000,        &
                                     000,                    &
                                     000,        000 /)
  CHARACTER (LEN=35), DIMENSION(noc) :: ORGname = &
                                    (/ "                                   ", &
                                       "(ROM SAF)                          ", &
                                       "Helmholtz Centre, Potsdam          ", &
                                       "Met Office, Exeter                 ", &
                                       "Boulder                            ", &
                                       "Washington                         ", &
                                       "Darmstadt                          ", &
                                       "Beijing                            ", &
                                       "New Delhi                          ", &
                                       "Spire Global, Inc.                 ", &
                                       "                                   ", &
                                       "                                   " /)
  CHARACTER (LEN=4), DIMENSION(noc)  :: ICAOcode = &
                      (/ "ZZZZ",     "EKMI",     "EDZW",  &
                                     "EGRR",     "KWBC",  &
                                     "KNES",     "EUMS",  &
                                     "BAWX",     "DEMS",  &
                                     "ZZZZ",              &
                                     "ZZZZ",     "ZZZZ"  /)

by olewis, 3 years ago

Attachment: roppbufrcodes.nl added

All three new sattellite types

by olewis, 3 years ago

Attachment: roppbufrcodes_spire.nl added

Just Spire added to the namelist

comment:2 by Ian Culverwell, 3 years ago

Cc: Ian Culverwell added

Spire, GeoOptics and PlanetiQ BUFR codes added to ROPP-11 devt branch at r6909. (Checks out OK with core tests; haven't done any further testing.)

comment:3 by Ian Culverwell, 3 years ago

Might as well take the opportunity to include Sentinel 6 BUFR codes. Axel listed these at https://gitlab.eumetsat.int/ro/ropp/-/commit/9f345b6b89e9049b77f0750d6be345a881f8d312. At present there is no info on the correct Originating Centre IDs etc, so leave those alone. A small change is also needed to ropp_io/ropp/ropp_io_read_ncdf_get.f90 so that ROPP can infer the data%leo_id from the S6 files produced by EUM.

Changes committed to the ROPP-11 protottype branch at r6910. Build and run core test OK, but again no thorough testing has been done.

comment:4 by Ian Culverwell, 3 years ago

The ROPP-11 I/O user guide has been updated to include these new LEO IDs at r6911.

comment:5 by Ian Culverwell, 3 years ago

The ROPP BUFR document has been updated with the Spire codes at r6913.

comment:6 by Ian Culverwell, 3 years ago

The ROPP BUFR document has been updated with the Sentinel codes at r6914.

comment:7 by Ian Culverwell, 3 years ago

The ROPP BUFR document has been updated with the Sentinel ARH codes at r6916. These are informed by the following email from Chad Galley, Sentinel-6/Jason-CS JPL Radio Occultation Processing Lead, to Hui Shao, NOAA Affiliate, which was forwarded to me by Kent on 21/7/21:

Hi Hui,

I recall that we sent out the WMO header information earlier 
and Chris Sisko at NOAA has done the same to his distribution 
list but apologies if you haven't received them yet. 

Our primary processor will be sending out BUFR products with 
the "IPXA01 KWBC" header and the backup processor will have 
"IPXA02 KWBC" when there is a disruption in service from the 
primary. The ("A" or "B" after "IPX" indicates the satellite 
identifier "A" for Sentinel-6 Michael Freilich, also known as 
Sentinel-6A, and "B" for Sentinel-6B). For the future, the 
headers for Sentinel-6B BUFR products will be "IPXB01 KWBC" and 
"IPXB02 KWBC" from the primary (01) and backup (02) processors, 
respectively, which will start appearing on GTS in ~5 years.

Please let us know if you have any further questions.
 
    Best,
 
    Chad

Note that it would take a bit of work to ropp_io/bufr/gtshdrs.f90 to get ROPP to generate these ARHs when writing BUFR files. I think we would also need to know the Originating Centre and ICAO code of the Sentinel-6 data, which, as mentioned above, we don't yet have.

comment:8 by Ian Culverwell, 3 years ago

Test folder test CC-QU-03 says:

WARNING (from ConvertCodes):  Error loading NAMELIST ORGcodes

(I think this was present before, but I hadn't noticed it.)

2-part bug-fix committed at r6949.

comment:9 by Ian Culverwell, 3 years ago

Resolution: fixed
Status: newclosed

Done.

Note: See TracTickets for help on using tickets.