Runtime Error with ROPP2D GNSSRO Operator

Hi all,

I was able to successfully compile and link JEDI with ROPP so that I could use the ROPP GNSSRO operators in our work. The ROPP1D operator works fine but then when I try to run the same thing for the ROPP2D operator I get the following error:

Exception: Assertion failed: nlocs == data_.getGeoVaLs()->nlocs() in get_geovals, line 85 of /cw3e/mead/projects/cwp106/projects/hiaper/mjmurphy/modeling/jedi_ropp/src/fv3-bundle/ufo/src/ufo/gnssro/QC/ROobserror.cc

Here is my yaml file:

# hofx3d jedi config.yaml
window begin: 2022-02-02T21:00:00Z
window length: PT6H
forecast length: PT6H
# model/gfs/hofx3d.jedi.yaml
geometry:
  nml_file_mpp: config/fmsmpp.nml
  trc_file: config/field_table
  akbk: config/akbk_gfs.nc4
  nml_file: config/geometry_gfs_c768.nml
  layout: [1,2]
  io_layout: [1,1]
  npx: 769
  npy: 769
  npz: 127
  ntiles: 6
  fieldsets:
  - fieldset: config/fieldsets/dynamics.yaml
  - fieldset: config/fieldsets/ufo.yaml
state:
  filetype: gfs
  datapath: input/bg/window_center
  filename_core: 20220203.000000.fv_core.res.nc
  filename_trcr: 20220203.000000.fv_tracer.res.nc
  filename_sfcd: 20220203.000000.sfc_data.nc
  filename_sfcw: 20220203.000000.fv_srf_wnd.res.nc
  filename_cplr: 20220203.000000.coupler.res
  state variables: [u,v,ua,va,T,DELP,sphum,ice_wat,liq_wat,o3mr,phis,
                    slmsk,sheleg,tsea,vtype,stype,vfrac,stc,smc,snwdph,
                    u_srf,v_srf,f10m]

observations:
- obs space:
    name: GnssroBndROPP2D
    obsdatain:
      obsfile: input/obs/ioda_nomads_gnssro_PT6H_20220203_0000Z_v2.nc4
      obsgrouping:
        group variables: ["record_number"]
        sort variable: "impact_height"
    obsdataout:
      obsfile: output/hofx/hofx3d_gfs_c48_nomads_gnssro_PT6H_20220203_0000Z.nc4
    simulated variables: ["bending_angle"]
  obs operator:
    name: GnssroBndROPP2D
    obs options:
       n_horiz: 31
       res: 40.0
       top_2d: 20.0

  obs filters:
   - filter: Domain Check
     filter variables:
     - name: [bending_angle]
     where:
     - variable:
         name: impact_height@MetaData
       minvalue: 0
       maxvalue: 50000
   - filter: ROobserror
     filter variables:
     - name: bending_angle
     errmodel: NRL
   - filter: Background Check
     filter variables:
     - name: [bending_angle]
     threshold: 3

For reference I am running from within in the following singularity container:
jedi-gnu-openmpi-dev_latest.sif

Please advise how I can get the ROPP2D operator to work.

mjm

The routine mentioned is related to the filter for the RO errors. When you turn off all the obs filters, does it run?

Hi Michael, You need to have “n_horiz: 31” after “filter: ROobserror” with the same indent. see line 97 fv3-jedi/hofx_gnssro_ropp.yaml at develop · JCSDA/fv3-jedi · GitHub

Thanks for your help Hailing and Hui, adding in the n_horiz variable like Hailing said got it to work for me!