Skip to content

Conversation

@steve-marshall-piq
Copy link

@steve-marshall-piq steve-marshall-piq commented Dec 10, 2025

This is a new 2D GNSSRO forward operator based on refractivity that simulates a path-integrated variable called nonLocalPseudoExcessPhase.

Summary of changes:

  • New code for the RefNLPEP2D GNSSRO forward operator
  • Additional GNSSRO utility classes related to ray path generation, GeoVaLs access in C++, and refractivity computation.
  • Two new variable transforms: NonLocalPseudoExcessPhase and GnssroRefractivityGradient.
  • Extension of GeoVaLs code to allow reading and writing GeoVaLs where the number of profiles differs from the number of locations.
  • Extension of the NCEP refractivity error model in ROobserror to handle the nonLocalPseudoExcessPhase variable.
  • Units tests for the forward operator and variable transforms.

Description

This PR provides a new GNSSRO forward operator called RefNLPEP2D. The RefNLPEP2D forward operator is a JEDI UFO implementation of the non-local pseudo excess phase approach of Sokolovskiy, et al, 2005. This is logically similar to the GPSEPH forward operator in WRFDA, but shares no code with that earlier implementation.

RefNLPEP2D is a 2D forward operator based integrating excess refractive index, computed from refractivity, over a predefined GNSS RO ray path that does not change during the data assimilation process. The same ray path is used to compute a derived observation of non-local pseudo excess phase from refractivity observations and the assumption of spherical symmetry. The operator allows a model's horizontal variations in refractivity to be used when simulating GNSS RO observations.

Issue(s) addressed

This is not associated with an issue number.

Dependencies

There are corresponding PRs in ufo-data and jedi-docs that include unit test data and documentation for this PR.

Impact

Most of the code is in new modules, and hence should have no impact on other subsystems.
The only two code changes are:

  1. Extensions to how GeoVaLs are serialized into NetCDF files that allow the number of profiles to differ from the number of locations. This is a more flexible and self-describing method than the one used by the only other 2D GNSSRO forward operator: BndROPP2D.
  2. Extension of the ROobserror model to allow specification of observational errors to for the variable used by the RefNLPEP2D forward operator (nonLocalPseudoExcessPhase).

Checklist

  • [ X] I have performed a self-review of my own code
  • [ X] I have made corresponding changes to the documentation
  • [ X] I have run the unit tests before creating the PR

This is a new 2D GNSSRO forward operator based on refractivity that
simulates a path-integrated variable called nonLocalPseudoExcessPhase.

Summary of changes:
* New code for the RefNLPEP2D GNSSRO forward operator
* Additional GNSSRO utility classes related to ray path generation,
  GeoVaLs access in C++, and refractivity computation.
* Two new variable transforms: NonLocalPseudoExcessPhase and
  GnssroRefractivityGradient.
* Extension of GeoVaLs code to allow reading and writing GeoVaLs
  where the number of profiles differs from the number of locations.
* Extension of the NCEP refractivity error model in ROobserror to
  handle the nonLocalPseudoExcessPhase variable.
* Units tests for the forward operator and variable transforms.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant