Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JCB-based obs+bias staging, Jedi class updates, and marine B-matrix refactoring #2992

Open
wants to merge 108 commits into
base: develop
Choose a base branch
from

Conversation

DavidNew-NOAA
Copy link
Contributor

@DavidNew-NOAA DavidNew-NOAA commented Oct 8, 2024

Description

This PR is a companion to GDASApp PR #1312 (merged) and JCB-GDAS PR #31 (merged).

This PR does four things:

  1. It changes the observation and bias staging for the atmospheric analysis tasks to use JCB templates instead of reading the full JEDI input configuration dictionary in order to construct a list of files to stage. This is cleaner and places fewer constraints on how to initialize the analysis.
  2. It removes the initialize_jedi and execute methods from the AtmAnalysis and AtmEnsAnalysis classes and has that functionality handled directly by the Jedi class. This removes a lot of redundant code from the analysis classes.
  3. The Jedi constructor now takes as input a dictionary that is a subset of the task_config dictionary. This makes the code clearer and less opaque and makes debugging easier.
  4. All JEDI applications and their input YAMLs are now initialized in the initialize job of the AtmAnalysis and AtmEnsAnalysis. Before, in the atmensanl* jobs for example, the LETKF solver was initialized in the atmensanlinitcjob, but the LETKF solver and FV3 increment converter were both initialized and executed in the atmensanlobs and atmensanlfv3inc jobs respectively. This was because the Jedi class was looking for the JEDIEXE, JCB_ALGO_YAML, etc environment variables, which could only hold information for one application per job. Now, there are variables called JEDIEXE_OBS, JEDIEXE_SOL, JEDIEXE_FV3INC, etc which are specified in the input dictionary for the Jedi class constructor, all performed in atmensanlinit. This not only makes more sense in terms of resources allocation for jobs, but it also makes the code less opaque.

Addendum:

I'm now rolling in the refactoring of the marine B-matrix task into this PR. That makes it also a companion of GDASApp PR #1346 and JCB-GDAS PR #36.

These new changes introduce the Jedi class and JCB into the marine B-matrix job.

Type of change

  • Bug fix (fixes something broken)
  • New feature (adds functionality)
  • Maintenance (code refactor, clean-up, new CI test, etc.)

Change characteristics

  • Is this a breaking change (a change in existing functionality)? YES
  • Does this change require a documentation update? NO
  • Does this change require an update to any of the following submodules? NO
    • EMC verif-global
    • GDAS #1346
    • GFS-utils
    • GSI
    • GSI-monitor
    • GSI-utils
    • UFS-utils
    • UFS-weather-model
    • wxflow

How has this been tested?

C96C48_ufs_hybatmDA CI runs successfully
GDASApp jjob tests pass successfully

Checklist

  • Any dependent changes have been merged and published
  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have documented my code, including function, input, and output descriptions
  • My changes generate no new warnings
  • New and existing tests pass with my changes
  • This change is covered by an existing CI test or a new one has been added
  • I have made corresponding changes to the system documentation if necessary

RussTreadon-NOAA and others added 30 commits August 28, 2024 17:01
@DavidNew-NOAA DavidNew-NOAA changed the title JCB-based obs+bias staging and fully move init+exec codes from Task to Jedi class JCB-based obs+bias staging, Jedi class updates, and marine B-matrix refactoring Oct 23, 2024
@DavidNew-NOAA
Copy link
Contributor Author

DavidNew-NOAA commented Oct 23, 2024

@guillaumevernieres and @AndrewEichmann-NOAA , FYI, I'm rolling the marine B-matrix refactoring into this PR since that refactoring depends on the changes made to the Jedi class in this PR.

The relevant files changed for the B-matrix refactoring are:
parm/config/gfs/config.marineanl
parm/config/gfs/config.marinebmat
scripts/exglobal_marinebmat.py
ush/python/pygfs/task/marine_analysis.py (very minor JCB-related change)
ush/python/pygfs/task/marine_bmat.py

Copy link
Contributor

@guillaumevernieres guillaumevernieres left a comment

Choose a reason for hiding this comment

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

Looks good. Thanks @DavidNew-NOAA .

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.

4 participants