MPAS-JEDI GnssroBndNBAM with modeltop 30: experience in cycling, observation errors, and extrapolation above the lid

I am testing GnssroBndNBAM as the RO anchor for AMSU-A VarBC in MPAS-JEDI (mpas-bundle 4.0.0 with UFO 1.13.0, MPAS v8.4.1, 120 km mesh, 55 levels, 30 km top). In the MPAS-Workflow configuration I noticed the comment “gnssrobndnbam: so far unsuccessful in cycling experiments, even for HofX3D” [1], written in December 2022 [2], before UFO added the low-model-top option in November 2023 [3, 4]. A single-cycle 3DEnVar test with modeltop 30, assimilating bending angles with impact heights of 0-30 km, completed successfully, but cycling stability and analysis quality have not been established yet. I would be grateful for any information on those earlier tests: what “unsuccessful” referred to, which MPAS and UFO versions and model top were used, whether NBAM was tested again after the low-top option was added, and whether a configuration that cycled successfully is available.

For NBAM I use the built-in error model (ROobserror, errmodel NBAM) [5, 6]. NCAR’s Desroziers tables cover refractivity, bndmo and ROPP1D, but I could not find one for NBAM [7]. In a preliminary single-cycle check (2023-12-02 00Z, impact heights 0-30 km, all latitudes), the ratio of the Desroziers estimate, sqrt(mean(d_ob d_oa)), to the RMS of the final effective observation error was about 0.9 for COSMIC-2, 1.95 for Metop-B/C and 1.40 for Sentinel-6 (a ratio of standard deviations). This is not yet a calibrated error estimate. Has anyone derived MPAS-specific NBAM error estimates, for example by mission, impact height and latitude, or is there an established calibration procedure?

With modeltop 30 and the default nlevadd, the low-top branch sets nlevAdd to 63 and extends refractivity above the lid with a constant ratio from the top two levels [3, 8]. I could not find a validation of this for a 30 km top. For a 30 km-top MPAS configuration, has an upper impact-height cutoff been tested or recommended for assimilation, particularly when NBAM is used as a VarBC anchor?

[1] MPAS-Workflow/config/jedi/ObsPlugs/ObsErrorAnchors.yaml at 2d68bd1a623a7173596f8b1d5aa7baa28e7df2cf · NCAR/MPAS-Workflow · GitHub
[2] NCAR/MPAS-Workflow commit d2b8375
[3] ufo/src/ufo/operators/gnssro/BndNBAM/ufo_gnssro_bndnbam_mod.F90 at 1.13.0 · JCSDA/ufo · GitHub
[4] JCSDA/ufo commit 3eca0a0
[5] JCSDA/ufo 1.13.0, src/ufo/operators/gnssro/utils/gnssro_mod_obserror.F90, line 85
[6] NCAR/MPAS-Workflow 2d68bd1, config/jedi/ObsPlugs/da/filters/gnssrobndnbam.yaml, lines 16-38
[7] NCAR/MPAS-Workflow 2d68bd1, config/jedi/ObsPlugs/ObsErrorAnchors.yaml, lines 55-170
[8] JCSDA/ufo 1.13.0, src/ufo/operators/gnssro/BndNBAM/ufo_gnssro_bndnbam_util_mod.F90, lines 60-64

Hello,

Thank you for your questions!

First, I would like to mention that for assimilating bending angles in MPAS-JEDI we use ROPP1D (gnssrobndropp1d), not NBAM, so our experience with NBAM is limited.

Answering your questions:

1. The comment “unsuccessful” refers to earlier NBAM tests where we had issues assimilating bending angles due to MPAS’s low model top. A fix was later added to UFO that makes the relevant parameters configurable in the YAML for low-top models. After this, ctests were added (hofx3d_nbam and 3dvar_bumpcov_nbam), using modeltop: 30 with default values for the other parameters, and this part of the code is exercised with every build/ctest run. However, NBAM has not been tested in our cycling DA experiments since then, and therefore there is no cycled configuration so far.

2. Observation errors: there is no MPAS-JEDI specific NBAM table. The existing tables for ROPP1D and the other RO operators are relative Desroziers estimates in 1 km impact height bins and 5 latitude bands, with missions pooled, produced with the mpas-jedi graphics and MPAS-Workflow’s retrieveObsErrors scripts. The same procedure could be applied to NBAM.

3. Upper cutoff: none has been tested for NBAM. MPAS-Workflow has exclusion heights for refractivity and ROPP1D, but they are not used by default (MPAS-Workflow/config/jedi/ObsPlugs/ObsErrorAnchors.yaml at develop · NCAR/MPAS-Workflow · GitHub).

Hope this helps!