Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
47e3ec4
changes to address new hsd container
EdwardSnyder-NOAA Sep 16, 2025
bf7b620
Merge branch 'ufs-community:develop' into hsd-doc-updates
EdwardSnyder-NOAA Sep 17, 2025
13b9da0
update PR template
gspetro-NOAA Sep 17, 2025
3929d4b
Default stochy off and intervals 0 to use timestep
NickSzapiro-NOAA Sep 17, 2025
87a2e3e
Requested stochy defaults in default_vars.sh
NickSzapiro-NOAA Sep 17, 2025
da38903
Current GEFS RT stochy defaults now in cpld_control_gefs
NickSzapiro-NOAA Sep 17, 2025
cf8016d
OCNSPPT not OCN_SPPT in cpld_control_gefs
NickSzapiro-NOAA Sep 17, 2025
cc020f9
Tests pass bit-for-bit on Ursa,
NickSzapiro-NOAA Sep 17, 2025
9c245f7
add exceptions to log push
gspetro-NOAA Sep 18, 2025
70d8df1
minor pr template updates
gspetro-NOAA Sep 18, 2025
c84e51a
shorten comments/instructions
gspetro-NOAA Sep 18, 2025
10ad6c2
update template order
gspetro-NOAA Sep 18, 2025
5801d5c
formatting updates
gspetro-NOAA Sep 18, 2025
1101277
add 'if any' nuance
gspetro-NOAA Sep 22, 2025
9c64d9d
Merge branch 'ufs-community:develop' into text/pr-template
gspetro-NOAA Sep 22, 2025
bb0f4d6
Merge branch 'develop' into hsd-doc-updates
gspetro-NOAA Sep 22, 2025
e217d17
Merge branch 'develop' into defaults_nam_stochy
NickSzapiro-NOAA Sep 22, 2025
f55cd94
Merge 2885 from EdwardSnyder-NOAA/hsd-doc-updates
NickSzapiro-NOAA Sep 22, 2025
0f02ee3
Merge 2891 from gspetro-NOAA/text/pr-template
NickSzapiro-NOAA Sep 22, 2025
68e7a5b
hercules rt log - passed
gspetro-NOAA Sep 22, 2025
523a632
add hera RT log passed
FernandoAndrade-NOAA Sep 22, 2025
9d562af
orion rt log - passed
gspetro-NOAA Sep 22, 2025
8a5cb91
ORT Jobs Completed.
epic-cicd-jenkins Sep 22, 2025
a03fc49
add ursa RT log passed
FernandoAndrade-NOAA Sep 22, 2025
114965a
Acorn RT Log: Passed
BrianCurtis-NOAA Sep 22, 2025
6f94169
WCOSS2 RT Log: Passed
BrianCurtis-NOAA Sep 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 44 additions & 53 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,34 @@
<!-- INSTRUCTIONS:
- PLEASE READ/FOLLOW THE DIRECTIONS IN EACH SECTION
- READ/FOLLOW THE DIRECTIONS IN EACH SECTION
- Complete the 'Commit Queue Requirements' below
- Please use github markup as much as possible (https://docs.github.com/en/get-started/writing-on-github)
- Please leave your PR in a draft state until all underlying work is completed.
- Use GitHub markup as much as possible (https://docs.github.com/en/get-started/writing-on-github)
- Leave your PR in a draft state until all underlying work is completed.
-->

## Commit Queue Requirements:
<!--
- Please complete the items that follow this.
- Please "check off" completed items. Use [X] for a filled in checkbox or leave it [ ] for an empty checkbox
- Your PR will not be considered until all requirements are met.
- Check off completed items. Use [X] for a filled in checkbox or leave it [ ] for an empty checkbox
- Your pull request (PR) will not be considered until all requirements are met.
- THIS IS YOUR RESPONSIBILITY
-->
- [ ] This PR addresses a relevant WM issue (if not, create an issue).
- [ ] All subcomponent pull requests (if any) have been reviewed by their code managers.
- [ ] Run the full Intel+GNU RT suite (compared to current baselines), preferably on Ursa (Derecho or Hercules are acceptable alternatives). **Exceptions:** documentation-only PRs, CI-only PRs, etc.
- [ ] Commit log file w/full results from RT suite run (if applicable).
- [ ] Commit 'test_changes.list' (unless file is empty).
- [ ] Fill out all sections of this template.
- [ ] All sub component pull requests have been reviewed by their code managers.
- [ ] Run the full Intel+GNU RT suite (compared to current baselines) on either Hera/Derecho/Hercules
- [ ] Commit 'test_changes.list' from previous step

---

## Description:
<!--
Please provide a detailed verbose description of what this PR does
Provide a detailed verbose description of what this PR does
-->


### Commit Message:
<!--
Please provide concise information for The UFS-WM and/or each sub-component:
Please delete what is not needed.
Provide a concise commit message for the UFS WM and any subcomponents; delete unnecessary info.
-->
```
* UFSWM -
Expand All @@ -48,34 +51,27 @@ Please delete what is not needed.

### Priority:
<!--
Please provide the priority you would prefer this pull request to have.
* Critical Bugfix: Model is wrong.
* High: Time-sensitive project.
* Normal.
Please delete the ones that are not applicable
Indicate PR priority and include a justification for high/critical priority PRs; delete options that are not applicable.
-->
* Critical Bugfix: Reason
* High: Reason
* Normal
- [ ] Critical Bugfix: Reason
- [ ] High: Reason
- [ ] Normal

## Git Tracking
### UFSWM:
<!--
Please add the UFS-WM github issue here if there is one
Please delete the one that is not applicable.
Add the related UFS WM Github Issue here:
-->
* Closes #
* None

### Sub component Pull Requests:
<!--
Please provide a list of sub-components involved with this pull request.
Please provide links to the sub-component pull requests as shown below.
Please delete what is not needed.
Provide a list of subcomponents involved with this PR and include links to subcomponent PRs.
Example:
* FV3: NOAA-EMC/fv3atm#734
* ccpp-physics: ufs-community/ccpp-physics#33
* WW3: NOAA-EMC/WW3#321
Delete sections that are not needed.
-->
* AQM:
* CDEPS:
Expand All @@ -96,56 +92,51 @@ Example:

### UFSWM Blocking Dependencies:
<!--
If there are any UFSWM PR's that are needed to be completed before this one, please add links
to them here
Please delete what is not needed.
Please include any UFS WM PRs (with links) that need to be completed before this one; delete what is not needed.
-->
* Blocked by #
* None
- [ ] Blocked by #
- [ ] None

### Documentation:
<!--
Indicate what documentation, if any, is needed for this PR and who will add it (if applicable).
Please delete what is not needed.
Delete what is not needed.
-->
* This PR requires a documentation update, and the WM User's Guide has been updated based on the changes in this PR.
* This PR requires a documentation update, and a WM issue has been opened to track the need for a documentation update; a person responsible for submitting the update has been assigned to the issue (link issue).
* No documentation update is required for this PR (please explain).
- [ ] Documentation update required.
- [ ] Relevant updates are included with this PR.
- [ ] A WM issue has been opened to track the need for a documentation update; a person responsible for submitting the update has been assigned to the issue (link issue).
- [ ] Documentation update NOT required.
- Explanation:

---
## Changes
### Regression Test Changes (Please commit test_changes.list):
<!--
Please let us know if this PR creates new baselines, changes baselines or not.
Please delete what is not needed.
Please make sure you have properly submitted test_changes.list
Indicate whether this PR creates new baselines, changes baselines, or not. Delete what is not needed.
For baseline changes, make sure to submit the test_changes.list file generated by a full RT run (Intel+GNU)
-->
* PR Adds New Tests/Baselines.
* PR Updates/Changes Baselines.
* No Baseline Changes.
- [ ] PR Adds New Tests/Baselines.
- [ ] PR Updates/Changes Baselines.
- [ ] No Baseline Changes.

### Input data Changes:
<!--
If there are any changes to input-data for a test, please provide information here.
Please delete what is not needed.
If there are changes to input data for a test, provide information here. Delete options that are not needed.
-->
* None.
* New input data.
* Updated input data.
- [ ] None.
- [ ] New input data.
- [ ] Updated input data.

### Library Changes/Upgrades:
<!-- Library updates take time. Please provide library and version information here.
<!-- Library updates take time. Provide library and version information here, and delete what is not needed.
** SPECIAL INSTRUCTIONS **
If this PR needs updates to libraries please make sure to accomplish the following tasks:
- Create separate issue in (https://github.com/JCSDA/spack-stack) asking for update to library. Include library name, library version.
- Create a separate issue in (https://github.com/JCSDA/spack-stack) asking for update to library. Include library name, library version.
- Add issue link from JCSDA/spack-stack following this item <!-- for example: "* JCSDA/spack-stack#1757"

Please delete what is not needed.
-->
* Required
- [ ] Required
* Library names w/versions:
* Git Stack Issue (JCSDA/spack-stack#)
* No Updates
- [ ] No Updates

---
<!-- STOP!!! THE FOLLOWING IS FOR CODE MANAGERS ONLY. PLEASE DO NOT FILL OUT -->
Expand Down
40 changes: 21 additions & 19 deletions doc/UsersGuide/source/HSDcontainer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ Running UFS WM Idealized Cases in a Container

This chapter provides instructions for running the Unified Forecast System (:term:`UFS`) Weather Model (WM) Hierarchical System Develop (HSD) cases using a `Singularity/Apptainer <https://apptainer.org/docs/user/latest/>`_ container. Normally, the details of building and running Earth system models will vary based on the computing platform because there are many possible combinations of operating systems, compilers, :term:`MPIs <MPI>`, and package versions available. Installation via Singularity/Apptainer container reduces this variability and allows for a smoother experience building and running the UFS WM. This approach is recommended for users not running the UFS WM on a supported :wm-wiki:`Level 1 <Regression-Test-Policy-for-Weather-Model-Platforms-and-Compilers>` system (e.g., Hera, Orion).

The container includes: spack-stack, Intel’s runtime environment, ufs-weather-model repository, and the prebuilt executables for the HSD cases. These are all the components needed to run the HSD cases besides the HSD data, which is discussed later in this chapter.

This chapter provides instructions for building and running the Unified Forecast System UFS WM HSD cases using a container. Currently, users can select from the following cases:

* The :ref:`July 2020 CAPE Case <cape-2020>`
Expand Down Expand Up @@ -100,7 +102,7 @@ where ``/path/to/hsd`` is the path to this top-level directory (e.g., ``/Users/J
NOAA RDHPCS Systems
----------------------

On many NOAA :term:`RDHPCS`, a container named ``ubuntu22.04-intel-wm-dev-hsd-test.img`` has already been built, and users may access the container at the locations in :numref:`Table %s <PreBuiltContainers>`.
On many NOAA :term:`RDHPCS`, a container named ``ubuntu22.04-intel-ue-1.6.0-wm-hsd.img`` has already been built, and users may access the container at the locations in :numref:`Table %s <PreBuiltContainers>`.

.. _PreBuiltContainers:

Expand All @@ -111,7 +113,7 @@ On many NOAA :term:`RDHPCS`, a container named ``ubuntu22.04-intel-wm-dev-hsd-te
+====================+========================================================+
| Gaea | /gpfs/f6/bil-fire8/world-shared/containers |
+--------------------+--------------------------------------------------------+
| Hera | /scratch1/NCEPDEV/nems/role.epic/containers |
| Hera | /scratch3/NCEPDEV/nems/role.epic/containers |
+--------------------+--------------------------------------------------------+
| NOAA Cloud [#fn]_ | /contrib/EPIC/containers |
+--------------------+--------------------------------------------------------+
Expand All @@ -124,30 +126,30 @@ Users can simply set an environment variable to point to the container:

.. code-block:: console

export img=path/to/ubuntu22.04-intel-wm-dev-hsd-test.img
export img=path/to/ubuntu22.04-intel-ue-1.6.0-wm-hsd.img

If users prefer, they may copy the container to their local working directory. For example, on Gaea

.. code-block:: console

cp /gpfs/f6/bil-fire8/world-shared/containers/ubuntu22.04-intel-wm-dev-hsd-test.img .
cp /gpfs/f6/bil-fire8/world-shared/containers/ubuntu22.04-intel-ue-1.6.0-wm-hsd.img .

Other Systems
----------------

On other systems, users can build the Singularity container from a public Docker :term:`container` image or download the ``ubuntu22.04-intel-wm-dev-hsd-test.img`` container from the `UFS Hierarchical Testing Framework (HTF) Data Bucket <https://registry.opendata.aws/noaa-ufs-htf-pds/>`_. Downloading may be faster depending on the download speed on the user's system. Note that the container in the data bucket is from the May 30, 2025 ``develop`` branch.
On other systems, users can build the Singularity container from a public Docker :term:`container` image or download the ``ubuntu22.04-intel-ue-1.6.0-wm-hsd.img`` container from the `UFS Hierarchical Testing Framework (HTF) Data Bucket <https://registry.opendata.aws/noaa-ufs-htf-pds/>`_. Downloading may be faster depending on the download speed on the user's system. Note that the container in the data bucket is from the May 30, 2025 ``develop`` branch.

To download from the data bucket, users can run:

.. code-block:: console

wget https://noaa-ufs-htf-pds.s3.amazonaws.com/develop-20250530/ubuntu22.04-intel-wm-dev-hsd-test.img
wget https://noaa-ufs-htf-pds.s3.amazonaws.com/develop-20250530/ubuntu22.04-intel-ue-1.6.0-wm-hsd.img

To build the container from a Docker image, users can run:

.. code-block:: console

singularity build --force ubuntu22.04-intel-wm-dev-hsd-test.img docker://noaaepic/ubuntu22.04-intel21.10-wm:ue160-fms202401-dev-tc
singularity build --force ubuntu22.04-intel-ue-1.6.0-wm-hsd.img docker://noaaepic/ubuntu22.04-intel2023.2.1-wm:ue160-fms202401-dev-hsd

This process may take several hours depending on the system.

Expand Down Expand Up @@ -190,34 +192,34 @@ Save the location of the container in an environment variable.

.. code-block:: console

export img=/path/to/ubuntu22.04-intel-wm-dev-hsd-test.img
export img=/path/to/ubuntu22.04-intel-ue-1.6.0-wm-hsd.img

Users may convert a container ``.img`` file to a writable sandbox. This step is optional and unnecessary on most systems (it can take several hours):

.. code-block:: console

singularity build --sandbox ubuntu22.04-intel-wm-dev-hsd-test $img
singularity build --sandbox ubuntu22.04-intel-ue-1.6.0-wm-hsd $img

When making a writable sandbox on NOAA :term:`RDHPCS`, the following warnings commonly appear and can be ignored:

.. code-block:: console

INFO: Starting build...
INFO: Verifying bootstrap image ubuntu22.04-intel-wm-dev-hsd-test.img
INFO: Verifying bootstrap image ubuntu22.04-intel-ue-1.6.0-wm-hsd.img
WARNING: integrity: signature not found for object group 1
WARNING: Bootstrap image could not be verified, but build will continue.

From within the ``$HSD`` directory, copy the ``stage-rt.sh`` script out of the container.

.. code-block:: console

singularity exec -H $PWD $img cp /opt/stage-rt.sh .
singularity exec -H $PWD $img cp /opt/ufs-weather-model/container-scripts/stage-rt.sh .

The ``stage-rt.sh`` script should now be in the ``$HSD`` directory. If for some reason, the previous command was unsuccessful, users may try a version of the following command instead:

.. code-block:: console

singularity exec -B /<local_base_dir>:/<container_dir> $img cp /opt/stage-rt.sh .
singularity exec -B /<local_base_dir>:/<container_dir> $img cp /opt/ufs-weather-model/container-scripts/stage-rt.sh .

where ``<local_base_dir>`` and ``<container_dir>`` are replaced with a top-level directory on the local system and in the container, respectively. Additional directories can be bound by adding another ``-B /<local_base_dir>:/<container_dir>`` argument before the container location (``$img``). Note that if previous steps included a ``sudo`` command, ``sudo`` may be required in front of this command.

Expand All @@ -236,7 +238,7 @@ where:
* ``-c`` is the compiler on the user's local machine (e.g., ``intel/2022.1.2``, ``intel-oneapi-compilers/2022.2.1``, ``intel/2023.2.0``)
* ``-m`` is the :term:`MPI` on the user's local machine (e.g., ``impi/2022.1.2``, ``intel-oneapi-mpi/2021.7.1``, ``cray-mpich/8.1.28``)
* ``-p`` refers to the local machine/platform (e.g., ``hera``, ``gaea``, ``noaacloud``). Required for Gaea, Hercules, and Orion only.
* ``-i`` is the full path to the container image (e.g., ``$img`` or ``$HSD/ubuntu22.04-intel-wm-dev-hsd-test.img``).
* ``-i`` is the full path to the container image (e.g., ``$img`` or ``$HSD/ubuntu22.04-intel-ue-1.6.0-wm-hsd.img``).

.. note::

Expand All @@ -252,6 +254,8 @@ When this command runs, ``stage-rt.sh`` will print the following message to the
Creating ufs_singularity.intel.lua
Tricking ufs_test.sh file
Updating various files with host paths
Removing compile task
Updating various files with host paths
Done

Additionally, the user should see the ``ufs-weather-model`` directory in the ``$HSD`` directory (``ls``).
Expand Down Expand Up @@ -330,8 +334,7 @@ It will print a status table:

CYCLE TASK JOBID STATE EXIT STATUS TRIES DURATION
===========================================================================================
197001010000 compile_atm_dyn32_intel 1 RUNNING - 0 0.0
197001010000 2020_CAPE_intel - - - - -
197001010000 2020_CAPE_intel 1 RUNNING - 0 0.0

If the job hangs or otherwise fails, stop the workflow in the active terminal using ``(Ctrl+C)``. To resubmit the experiment, remove the ``rocoto_workflow*`` files and lock directory before rerunning the ``ufs_test.sh`` script again:

Expand All @@ -357,7 +360,7 @@ If the experiment completes successfully, the loop will exit with output similar
+ TEST_END_TIME='20241115 16:43:41'
+ export TEST_END_TIME
+ python -c 'import create_log; create_log.finish_log()'
running: /usr/bin/singularity exec --env-file /scratch1/NCEPDEV/stmp4/User.Name/hsd-test/new-cont/ufs-weather-model/container-scripts/ufswm.env -B /scratch1:/scratch1 /scratch1/NCEPDEV/stmp4/User.Name/hsd-test/new-cont/ubuntu22.04-intel-wm-dev-hsd-test.img python tmp_arg_file.py
running: /usr/bin/singularity exec --env-file /scratch1/NCEPDEV/stmp4/User.Name/hsd-test/new-cont/ufs-weather-model/container-scripts/ufswm.env -B /scratch1:/scratch1 /scratch1/NCEPDEV/stmp4/User.Name/hsd-test/new-cont/ubuntu22.04-intel-ue-1.6.0-wm-hsd.img python tmp_arg_file.py
Performing Cleanup...
REGRESSION TEST RESULT: SUCCESS
+ echo 'ufs_test.sh finished'
Expand All @@ -371,10 +374,9 @@ If the experiment completes successfully, the loop will exit with output similar
+ trap 0
+ exit

The experiment output can be found under the run directory (``${PTMP}/${USER}/FV3_RT/rt_${pid}``), which will contain two subdirectories, two log files, and two environment variable files (one for the compile task and one for the experiment task). For example:
The experiment output can be found under the run directory (``${PTMP}/${USER}/FV3_RT/rt_${pid}``), which will contain one subdirectory and log file, and two environment variable files (one for the compile task, which doesn't run and one for the experiment task). For example:

.. code-block:: console

$ ls run_dir/
baroclinic_wave_intel compile_atm_dyn32_intel compile_atm_dyn32_intel.log
baroclinic_wave_intel.log compile_atm_dyn32_intel.env run_test_baroclinic_wave_intel.env
baroclinic_wave_intel baroclinic_wave_intel.log compile_atm_dyn32_intel.env run_test_baroclinic_wave_intel.env
32 changes: 16 additions & 16 deletions tests/default_vars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1269,31 +1269,31 @@ export LNDP_LSCALE=500000,
export ISEED_LNDP=2010,
export ISEED_SKEB=0
export SKEB_TAU=21600,
export SKEB_LSCALE=500000,
export SKEBNORM=1,
export SKEB_LSCALE=250000,
export SKEBNORM=0,
export SKEB_NPASS=30,
export SKEB_VDOF=5,
export ISEED_SHUM=1,
export SHUM_TAU=21600,
export SHUM_LSCALE=500000,
export ISEED_SPPT=20210325000103,20210325000104,20210325000105,20210325000106,20210325000107
export SPPT_TAU=2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7
export SPPT_LSCALE=500.E3,1000.E3,2000.E3,2000.E3,2000.E3
export ISEED_SPPT=20210325000103
export SPPT_TAU=2.16E4
export SPPT_LSCALE=500.E3
export SPPT_LOGIT=.true.,
export SPPT_SFCLIMIT=.true.,
export USE_ZMTNBLCK=.true.
export PBL_TAPER=0,0,0,0.125,0.25,0.5,0.75
export OCNSPPT=0.8,0.4,0.2,0.08,0.04
export OCNSPPT_LSCALE=500.E3,1000.E3,2000.E3,2000.E3,2000.E3
export OCNSPPT_TAU=2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7
export ISEED_OCNSPPT=20210325000108,20210325000109,20210325000110,20210325000111,20210325000112
export EPBL=0.8,0.4,0.2,0.08,0.04
export EPBL_LSCALE=500.E3,1000.E3,2000.E3,2000.E3,2000.E3
export EPBL_TAU=2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7
export ISEED_EPBL=20210325000113,20210325000114,20210325000115,20210325000116,20210325000117
export SKEBINT=1800
export SHUMINT=3600
export SPPTINT=1800
export OCNSPPT=-999.
export OCNSPPT_LSCALE=500.E3
export OCNSPPT_TAU=2.16E4
export ISEED_OCNSPPT=20210325000108
export EPBL=-999.
export EPBL_LSCALE=500.E3
export EPBL_TAU=2.16E4
export ISEED_EPBL=20210325000113
export SKEBINT=0
export SHUMINT=0
export SPPTINT=0

#IAU
export IAU_INC_FILES="''"
Expand Down
Loading