Using gnssro_bufr2ioda with 2 input files

Hi JEDI Team,

It appears that the gnssro_bufr2ioda utility only accepts one input file. This is not made clear in the limited documentation but my experimenting suggest it. Please correct me if I am mistaken.

This is problematic for a 03 UTC DA run I am trying to attempt with FV3-JEDI as I need data from two GNSSRO BUFR files to get the data on both sides of the 03 UTC center time. In my case:
gdas.t00z.gpsro.tm00.bufr_d.nr
gdas.t06z.gpsro.tm00.bufr_d.nr

This could also be a problem for other situations, e.g., someone doing an experiment centered at 00 UTC but with a wide DA window of say +/- 4 hours. To be clear this is not the specific issue that is hindering my work.

Is there a workaround for this or maybe I am approaching things incorrectly?

Thanks,
Michael

Hi Michel, I guess you can “cat” the two or more bufr files to one before using the converter. right?
Thanks, Hailing

Thanks for the suggestion Hailing.

I was actually contacted privately by some of your colleagues and they suggest one option using the yaml file where I just duplicate the “obs space” section so that both files I needed were called. That worked for me and I am including what I did here for future users who might have this issue and use it as their solution:

  # Observation operators
  # ---------------------
  observations:
  - obs space:
      name: GnssroBndNBAM
      obsdatain:
        obsfile: input/obs/ioda_nomads_gnssro_PT6H_20220203_0000Z_v2.nc4
        obsgrouping:
          group variables: ["record_number"]
          sort variable: "impact_height"
          sort order: "ascending"
      obsdataout:
        obsfile: run-3denvar/hofx/gnssro_hyb-3dvar-gfs_20220203_0000Z.nc4
      simulated variables: ["bending_angle"]
    obs operator:
      name: GnssroBndNBAM
      obs options:
        sr_steps: 2   
        vertlayer: mass
        use_compress: 1
        super_ref_qc: NBAM
    obs filters:
     - filter: Domain Check 
       filter variables:
       - name: ["bending_angle"]
       where:
       - variable:
           name: impact_height@MetaData
         minvalue: 0
         maxvalue: 50000
     - filter: Bounds Check
       filter variables:
       - name: ["bending_angle"]
       where:
       - variable:
           name: occulting_sat_id@MetaData
         is_in: 3-5
       test variables:
       - name: impact_height@MetaData
       minvalue: 8000
     - filter: ROobserror
       filter variables:
       - name: bending_angle
       errmodel: NBAM
     - filter: Background Check RONBAM
       filter variables:
       - name: bending_angle

  - obs space:
      name: GnssroBndNBAM
      obsdatain:
        obsfile: input/obs/ioda_nomads_gnssro_PT6H_20220203_0600Z_v2.nc4
        obsgrouping:
          group variables: ["record_number"]
          sort variable: "impact_height"
          sort order: "ascending"
      obsdataout:
        obsfile: run-3denvar/hofx/gnssro_hyb-3dvar-gfs_20220203_0600Z.nc4
      simulated variables: ["bending_angle"]
    obs operator:
      name: GnssroBndNBAM
      obs options:
        sr_steps: 2   
        vertlayer: mass
        use_compress: 1
        super_ref_qc: NBAM
    obs filters:
     - filter: Domain Check 
       filter variables:
       - name: ["bending_angle"]
       where:
       - variable:
           name: impact_height@MetaData
         minvalue: 0
         maxvalue: 50000
     - filter: Bounds Check
       filter variables:
       - name: ["bending_angle"]
       where:
       - variable:
           name: occulting_sat_id@MetaData
         is_in: 3-5
       test variables:
       - name: impact_height@MetaData
       minvalue: 8000
     - filter: ROobserror
       filter variables:
       - name: bending_angle
       errmodel: NBAM
     - filter: Background Check RONBAM
       filter variables:
       - name: bending_angle


1 Like