Skip to content

Conversation

@shlyaeva
Copy link
Collaborator

Description

This expands the ensemble postprocessing app to optionally use ensemble DA increments. Changes are backward-compatible, no changes needed to the existing yamls.

The application now does the below (new functions are marked in bold):

  1. Reads the background ensemble, computes and optionally saves background ensemble mean, variance, stddev, computes background ensemble perturbations.
  2. Computes the IAU increments before the recentering:
    a. if available (analysis increments section specified in yaml, reads analysis ensemble increments. if ensemble inflation is specified, creates oops::Inflation (currently available options: multiplicative, RTPS and RTPP) and inflates the analysis increments ensemble. Updates ensemble mean (background mean + mean analysis increment). Computes and optionally saves resulting analysis ensemble stats. The IAU increments are assigned to equal analysis increments (after inflation).
    b. otherwise, as before, optionally inflates background perturbations (if ensemble inflation is specified). As before, only multiplicative inflation is available in this case. The IAU increments are assigned to equal inflated perturbations - original perturbations, or zero if there's no inflation
  3. Updates the IAU increments with the recentering increment (recentering state - ensemble mean) if needed (if recentering state is specified in yaml, previously this was required).
  4. Postprocesses and writes out all IAU increments and states if increment postprocessing/analysis postprocessing are specified in yaml.

This allows to run this app for:

  • just recentering an ensemble of states (e.g. recenter ensemble backgrounds around the control background as in gfs v17)
  • just using ensemble DA increments to update the ensemble of states
  • using ensemble DA increments and recentering to update the ensemble of states.

Issue(s) addressed

Resolves #1198

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds support for using ensemble DA (Data Assimilation) increments in the analysis postprocessing application, enabling more flexible ensemble update workflows. The changes maintain backward compatibility with existing configurations.

Key changes:

  • Enhanced the ensemble postprocessing application to optionally read and apply ensemble DA increments
  • Added support for using oops::Inflation classes (Multiplicative, RTPS, RTPP) to inflate analysis increments
  • Made recentering optional - the application can now run with just DA increments, just recentering, or both
  • Updated logging to distinguish between background and analysis ensemble statistics

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/mains/AnalysisPostproc.h Main implementation: added analysis increment reading, inflation with oops::Inflation classes, optional recentering, and improved logging
test/testinput/ensanpproc_ensda.yml New test configuration demonstrating ensemble DA increments with inflation and recentering
test/testinput/letkf.yml Added option to save posterior ensemble increments for use in postprocessing
test/testref/ensanpproc_ensda.test New test reference file for ensemble DA increments test case
test/testref/ensanpproc.test Updated reference with improved logging labels and new statistics output
test/CMakeLists.txt Added new test files and appropriate test dependencies

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

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.

Add capability to use LETKF ensemble analysis to AnPproc

2 participants