Skip to content

Add marine LEKTF workflow support#2175

Open
AndrewEichmann-NOAA wants to merge 24 commits into
developfrom
feature/revive_marine_letkf_workflow
Open

Add marine LEKTF workflow support#2175
AndrewEichmann-NOAA wants to merge 24 commits into
developfrom
feature/revive_marine_letkf_workflow

Conversation

@AndrewEichmann-NOAA

@AndrewEichmann-NOAA AndrewEichmann-NOAA commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

Description

Companion PR to NOAA-EMC/global-workflow#4789 to add marine LETKF to workflow and recenter increments around deterministic background to initialize ensemble.

Companion PRs

NOAA-EMC/global-workflow#4789

Issues

NOAA-EMC/global-workflow#5025
Also resolves #2155

Automated CI tests to run in Global Workflow

  • atm_jjob
  • C96C48_ufs_hybatmDA
  • C96C48_hybatmsnowDA
  • C96_gcafs_cycled
  • C48mx500_3DVarAOWCDA
  • C48mx500_hybAOWCDA
  • C96C48_ufsgsi_hybatmDA
  • C48_ufsenkf_atmDA
  • C96C48_hybatmDA

@AndrewEichmann-NOAA AndrewEichmann-NOAA changed the title Feature/revive marine letkf workflow Add marine LEKTF workflow support Jun 15, 2026
@AndrewEichmann-NOAA

Copy link
Copy Markdown
Collaborator Author

@shlyaeva Is @lslivins Laura?

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 is a draft companion to global-workflow changes, intended to add/enable marine LETKF workflow support and related recentering/ensemble-increment handling in GDASApp’s marine configuration templates.

Changes:

  • Updates marine workflow YAML templates to stage/route LETKF increment outputs into analysis COM locations and to stage recentering inputs (increments/analysis).
  • Extends marine LETKF configuration to include additional sea-ice increment variables and enables saving posterior ensemble increments.
  • Adds a JCB marine output template for ensemble increments and introduces marine_letkf_app-conditioned behavior in marine JCB templates.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
parm/marine/marine_ens_config.yaml.j2 Updates LETKF staging/output paths and switches per-resolution fix template inclusion to zero-padded OCNRES.
parm/marine/marine_ecen_config.yaml.j2 Adds staging for LETKF increments/analysis for ensemble recentering and updates fix-template inclusion formatting.
parm/marine/marine_det_config.yaml.j2 Zero-pads OCNRES when including the marine fix staging template.
parm/marine/marine_bmat_config.yaml.j2 Zero-pads OCNRES when including the marine fix staging template.
parm/marine/jcb-base.yaml.j2 Adds ice thickness variables and enables saving posterior ensemble increments for marine LETKF driver settings.
parm/jcb-gdas/model/marine/marine_output_ensemble_increments.yaml.j2 Introduces a marine model output template intended for ensemble increment output.
parm/jcb-gdas/model/marine/marine_background_ensemble.yaml.j2 Conditions ensemble state variable lists on LETKF-app mode (and adds additional ice variables for that path).
parm/jcb-gdas/algorithm/marine/soca_ens_handler.yaml.j2 Adds LETKF-app-conditioned behavior for increment variables, optional analysis-increment inputs, and recentering background selection.

Comment thread parm/marine/marine_ens_config.yaml.j2
Comment thread parm/marine/marine_ecen_config.yaml.j2 Outdated
Comment thread parm/marine/marine_ecen_config.yaml.j2 Outdated
Comment thread parm/marine/jcb-base.yaml.j2
Comment thread parm/jcb-gdas/model/marine/marine_background_ensemble.yaml.j2 Outdated
@guillaumevernieres

Copy link
Copy Markdown
Contributor

@AndrewEichmann-NOAA , is it ready to be ci tested? If so, trigger the tests.

@lslivins

lslivins commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

@AndrewEichmann-NOAA I'm running the workflow now, and so far it's working as expected, though I haven't read through the code. It's made it through 3 cycles.

I do have to make some changes to dev/jobs/JGLOBAL_MARINE_ANALYSIS_ECEN and dev/jobs/JGLOBAL_MARINE_ANALYSIS_LETKF, because my project name is 'gsienkf'. I need to change the following for myself, though this isn't relevant for NCEPDEV projects unless they have 'enkf' in the name. Leaving the code as-is results in changing my directory names from /scratch4/BMC/gsienkf/to /scratch4/BMC/gsi/.

Replace: export DATAjob="${DATAROOT/enkf/}/marineanalysis.${PDY:-}${cyc}" with export DATAjob="${DATAROOT%enkf*}${DATAROOT##*enkf}/marineanalysis.${PDY:-}${cyc}"
Replace: cd "${DATAROOT/enkf/}" && true with cd "${DATAROOT%enkf*}${DATAROOT##*enkf}" && true
Replace: ${RUN/enkf/} with "${RUN%enkf*}${RUN##*enkf}

I'm not sure if this is something worth modifying for this PR or not though.

@AndrewEichmann-NOAA AndrewEichmann-NOAA self-assigned this Jun 17, 2026
@emcbot

emcbot commented Jun 17, 2026

Copy link
Copy Markdown

Automated GW-GDASApp Testing Results:
Machine: ursa

Start: Wed Jun 17 21:46:38 UTC 2026 on ufe02
---------------------------------------------------
Build:                                  *FAILED*
Build: Failed at Wed Jun 17 21:48:00 UTC 2026
Build: see output at /scratch4/NCEPDEV/stmp/role.jedipara/CI/ursa/GDASApp/workflow/PR/2175/global-workflow/sorc/log.build

@RussTreadon-NOAA

Copy link
Copy Markdown
Contributor

@AndrewEichmann-NOAA : The CI failure was due to soca compilation issues. Not sure why this happened. I will log into Ursa role.jedipara and manually rerun CI to troubleshoot.

@emcbot

emcbot commented Jun 18, 2026

Copy link
Copy Markdown

Automated GW-GDASApp Testing Results:
Machine: ursa

Start: Thu Jun 18 11:19:17 UTC 2026 on ufe04
---------------------------------------------------
Build:                                  *FAILED*
Build: Failed at Thu Jun 18 11:20:36 UTC 2026
Build: see output at /scratch4/NCEPDEV/stmp/role.jedipara/CI/ursa/GDASApp/workflow/PR/2175/global-workflow/sorc/log.build

@emcbot

emcbot commented Jun 18, 2026

Copy link
Copy Markdown

Automated GW-GDASApp Testing Results:
Machine: ursa

Start: Thu Jun 18 11:48:48 UTC 2026 on ufe04
---------------------------------------------------
Build:                                  *FAILED*
Build: Failed at Thu Jun 18 11:50:07 UTC 2026
Build: see output at /scratch4/NCEPDEV/stmp/role.jedipara/CI/ursa/GDASApp/workflow/PR/2175/global-workflow/sorc/log.build

@RussTreadon-NOAA

Copy link
Copy Markdown
Contributor

@AndrewEichmann-NOAA :

Not sure if the following is the problem, but it's something I noticed:

I would update sorc/gdas.cd in your g-w branch AndrewEichmann-NOAA:feature/revive_marine_letkf_workflow to point at hash ad9c3ea, Apply the ursa-GW-RT label in this PR after updating your g-w branch and see what happens.

@shlyaeva shlyaeva left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I have one major question below (on whether DOLETKF_OCN_INC means the same as marine_letkf_app). Also, I think it would be good to add @lslivins's changes.

- sea_ice_thickness
- sea_ice_snow_thickness

{% if marine_letkf_app | default(false) %}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think we only need this when we have DOLETKF_OCN_INC, is the check consistent here?

Comment on lines +57 to +58
# - eastward_sea_water_velocity
# - northward_sea_water_velocity

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

suggest removing commented out lines

Comment on lines +12 to +15
{% if not marine_letkf_app | default(false) %}
- eastward_sea_water_velocity
- northward_sea_water_velocity
{% endif %}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think we can just remove the velocities altogether, for both with and without LETKF cases.
I would however ignore this comment (because it requires more testing, and it's probably easier to not do it at this point), not very important.

Comment thread parm/marine/fms/input.nml
@@ -1,29 +0,0 @@
&MOM_input_nml

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

did you mean to remove this file?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Have marine letkf task use input.nml.j2 and remove input.nml

7 participants