Skip to content

Commit dbebb2e

Browse files
committed
Merge branch 'develop' into feature/lnd_regrid_iau
* develop: Add echgres as a dependency only for RUN=enkfgdas, not enkfgfs (NOAA-EMC#3246) Add domain level to wave gridded COM path (NOAA-EMC#3137) CI JJOB Tests using CMake (NOAA-EMC#3214) Make assorted updates to waves (NOAA-EMC#3190) Move WCOSS2 LD_LIBRARY_PATH patches to load_ufsda_modules.sh (NOAA-EMC#3236) Adding a gefs_arch task to GEFS workflow (NOAA-EMC#3211) Add additional GEFS variables needed for AI/ML applications (NOAA-EMC#3221) Add bmat task dependency to marine LETKF task (NOAA-EMC#3224) Resolve bug with LMOD_TMOD_FIND_FIRST setting affecting build on WCOSS2 (NOAA-EMC#3229) Reinstate product groups (NOAA-EMC#3208) Additional fixes for downstream jobs (NOAA-EMC#3187) Turn IAU off during staging job for cold start experiments (NOAA-EMC#3215) Update the gdas.cd hash and enable GDASApp to run on WCOSS2 (NOAA-EMC#3220) Update upload-artifact to v4 (NOAA-EMC#3216) Prevent duplicate case generation in generate_workflows.sh (NOAA-EMC#3217) Update g-w to cycle with C1152 ATM (NOAA-EMC#3206) Separate use of initial increment/perturbation file from REPLAY/+03 ICs (NOAA-EMC#3119) Update gsi_enkf hash and gsi_ver (NOAA-EMC#3207) Remove cpus-per-task from APRUN_OCNANALECEN on WCOSS2 (NOAA-EMC#3212) Remove 5WAVH from AWIPS GRIB2 parm files (NOAA-EMC#3146) Remove multi-grid wave support (NOAA-EMC#3188) Add echgres as a dependency for earc (NOAA-EMC#3202)
2 parents 066f60f + 4ab8cf8 commit dbebb2e

File tree

189 files changed

+2206
-1346
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

189 files changed

+2206
-1346
lines changed

.github/workflows/docs.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ jobs:
4242
./.github/scripts/build_docs.sh
4343
4444
- name: Upload documentation (on success)
45-
uses: actions/upload-artifact@v3
45+
uses: actions/upload-artifact@v4
4646
if: always()
4747
with:
4848
name: documentation
4949
path: artifact/documentation
5050

5151
- name: Upload warnings (on failure)
52-
uses: actions/upload-artifact@v3
52+
uses: actions/upload-artifact@v4
5353
if: failure()
5454
with:
5555
name: documentation_warnings.log

.github/workflows/linters.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131

3232
- if: ${{ always() }}
3333
name: Upload artifact with ShellCheck defects in SARIF format
34-
uses: actions/upload-artifact@v3
34+
uses: actions/upload-artifact@v4
3535
with:
3636
name: Differential ShellCheck SARIF
3737
path: ${{ steps.ShellCheck.outputs.sarif }}

.gitignore

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ parm/ufs/MOM6_data_table.IN
8181
parm/ufs/ice_in.IN
8282
parm/ufs/ufs.configure.*.IN
8383
parm/ufs/post_itag_gfs
84+
parm/ufs/ww3_shel.nml.IN
8485
parm/wafs
8586

8687
# Ignore sorc and logs folders from externals
@@ -162,10 +163,6 @@ ush/global_cycle_driver.sh
162163
ush/jediinc2fv3.py
163164
ush/ufsda
164165
ush/soca
165-
ush/make_NTC_file.pl
166-
ush/make_ntc_bull.pl
167-
ush/make_tif.sh
168-
ush/month_name.sh
169166
ush/imsfv3_scf2ioda.py
170167
ush/atparse.bash
171168
ush/run_bufr2ioda.py

CMakeLists.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# ------------------------------------------------------------------------- #
2+
# Global Workflow
3+
# ------------------------------------------------------------------------- #
4+
5+
# Check for minimum cmake requirement
6+
cmake_minimum_required( VERSION 3.20 FATAL_ERROR )
7+
8+
project(global_workflow VERSION 1.0.0)
9+
10+
include(GNUInstallDirs)
11+
enable_testing()
12+
13+
# Build type.
14+
if(NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel)$")
15+
message(STATUS "Setting build type to 'Release' as none was specified.")
16+
set(CMAKE_BUILD_TYPE
17+
"Release"
18+
CACHE STRING "Choose the type of build." FORCE)
19+
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
20+
"MinSizeRel" "RelWithDebInfo")
21+
endif()
22+
23+
# Build global-workflow source codes
24+
# add_subdirectory(sorc)
25+
26+
# Setup tests
27+
add_subdirectory(ctests)

ci/cases/pr/C48_S2SW_extended.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
experiment:
2+
system: gfs
3+
mode: forecast-only
4+
5+
arguments:
6+
pslot: {{ 'pslot' | getenv }}
7+
app: S2SW
8+
resdetatmos: 48
9+
resdetocean: 5.0
10+
comroot: {{ 'RUNTESTS' | getenv }}/COMROOT
11+
expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR
12+
idate: 2021032312
13+
edate: 2021032312
14+
yaml: {{ HOMEgfs }}/ci/cases/yamls/gfs_extended_ci.yaml
15+
16+
skip_ci_on_hosts:
17+
- hera
18+
- gaea
19+
- orion
20+
- hercules
21+
- wcoss2 # TODO run on WCOSS2 once the gfs_waveawipsbulls job is fixed

ci/cases/yamls/gefs_defaults_ci.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ base:
44
ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }}
55
SFS_POST: "NO"
66
FHOUT_GFS: 6
7-
stage_ic:
87
USE_OCN_ENS_PERTURB_FILES: "NO"
98
USE_ATM_ENS_PERTURB_FILES: "NO"
109
ocn:

ci/cases/yamls/gfs_extended_ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ base:
66
DO_GOES: "YES"
77
DO_BUFRSND: "YES"
88
DO_GEMPAK: "YES"
9-
DO_AWIPS: "NO"
9+
DO_AWIPS: "YES"
1010
DO_NPOESS: "YES"
1111
DO_GENESIS_FSU: "NO"
1212
FCST_BREAKPOINTS: 192

ci/cases/yamls/sfs_defaults.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ base:
77
DO_BUFRSND: "NO"
88
DO_GEMPAK: "NO"
99
DO_AWIPS: "NO"
10-
KEEPDATA: "YES"
10+
KEEPDATA: "NO"
1111
DO_EXTRACTVARS: "NO"
1212
FHMAX_GFS: 2976
1313
FHMAX_HF_GFS: 0
@@ -17,6 +17,8 @@ base:
1717
FHOUT_ICE_GFS: 24
1818
FCST_BREAKPOINTS: ""
1919
REPLAY_ICS: "NO"
20+
USE_OCN_ENS_PERTURB_FILES: "YES"
21+
USE_ATM_ENS_PERTURB_FILES: "YES"
2022
HPSSARCH: "NO"
2123
LOCALARCH: "NO"
2224
SFS_POST: "YES"
@@ -26,8 +28,5 @@ fcst:
2628
MONO: "mono"
2729
reforecast: "YES"
2830
FHZER: 24
29-
stage_ic:
30-
USE_OCN_ENS_PERTURB_FILES: "YES"
31-
USE_ATM_ENS_PERTURB_FILES: "YES"
3231
ocn:
3332
MOM6_INTERP_ICS: "YES"

ci/platforms/config.hera

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
export GFS_CI_ROOT=/scratch1/NCEPDEV/global/Terry.McGuinness/GFS_CI_ROOT
44
export ICSDIR_ROOT=/scratch1/NCEPDEV/global/glopara/data/ICSDIR
5+
6+
export STAGED_TESTS_DIR=${GFS_CI_ROOT}/STAGED_TESTS_DIR
57
export HPC_ACCOUNT=nems
68
export max_concurrent_cases=5
79
export max_concurrent_pr=4

ci/platforms/config.orion

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
export GFS_CI_ROOT=/work2/noaa/stmp/GFS_CI_ROOT/ORION
44
export ICSDIR_ROOT=/work/noaa/global/glopara/data/ICSDIR
5+
export STAGED_TESTS_DIR=${GFS_CI_ROOT}/STAGED_TESTS_DIR
56
export HPC_ACCOUNT=nems
67
export max_concurrent_cases=5
78
export max_concurrent_pr=4

ctests/CMakeLists.txt

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# ------------------------------------------------------------------------- #
2+
# CTests for Global Workflow
3+
# ------------------------------------------------------------------------- #
4+
# These ctests correspond to JJOBs (individual Rocoto jobs) that can be
5+
# run independently, each requiring its own YAML definition of inputs
6+
# and configurations. By integrating with Rocoto, these jobs can be
7+
# validated, staged, and executed as self-contained tests using
8+
# their own data and test parameters.
9+
# ------------------------------------------------------------------------- #
10+
11+
# Function to set a variable from an environment variable or default value
12+
function(set_from_env_or_default VAR_NAME ENV_VAR DEFAULT_VALUE)
13+
if (DEFINED ENV{${ENV_VAR}} AND NOT DEFINED ${VAR_NAME})
14+
set(${VAR_NAME} $ENV{${ENV_VAR}} CACHE STRING "Set from environment variable ${ENV_VAR}")
15+
elseif(NOT DEFINED ${VAR_NAME} AND NOT ${DEFAULT_VALUE} STREQUAL "")
16+
set(${VAR_NAME} ${DEFAULT_VALUE} CACHE STRING "Default value for ${VAR_NAME}")
17+
endif()
18+
endfunction()
19+
20+
# Set HOMEgfs
21+
if (NOT DEFINED HOMEgfs)
22+
set(HOMEgfs ${PROJECT_SOURCE_DIR})
23+
endif()
24+
25+
# Set RUNTESTS
26+
set_from_env_or_default(RUNTESTS RUNTESTS "${CMAKE_CURRENT_BINARY_DIR}/RUNTESTS")
27+
28+
# Set HPC_ACCOUNT
29+
set_from_env_or_default(HPC_ACCOUNT HPC_ACCOUNT " ")
30+
if (NOT DEFINED HPC_ACCOUNT)
31+
message(WARNING "HPC_ACCOUNT must be set. CTests will not be created.")
32+
return()
33+
endif()
34+
35+
# Set ICSDIR_ROOT
36+
set_from_env_or_default(ICSDIR_ROOT ICSDIR_ROOT "")
37+
if (NOT DEFINED ICSDIR_ROOT)
38+
message(WARNING "ICSDIR_ROOT must be set. CTests will not be created.")
39+
return()
40+
endif()
41+
42+
# Set STAGED_TESTS_DIR
43+
set_from_env_or_default(STAGED_TESTS_DIR STAGED_TESTS_DIR "")
44+
if (NOT DEFINED STAGED_TESTS_DIR)
45+
message(WARNING "STAGED_TESTS_DIR must be set. CTests will not be created.")
46+
return()
47+
endif()
48+
49+
message(STATUS "gw: global-workflow baselines will be used from: '${HOMEgfs}'")
50+
message(STATUS "gw: global-workflow tests will be run at: '${RUNTESTS}'")
51+
message(STATUS "gw: global-workflow tests will use the allocation: '${HPC_ACCOUNT}'")
52+
message(STATUS "gw: global-workflow tests will use ICSDIR_ROOT: '${ICSDIR_ROOT}'")
53+
message(STATUS "gw: global-workflow tests will use staged data from: '${STAGED_TESTS_DIR}'")
54+
55+
# Prepare test scripts
56+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/setup.sh.in
57+
${CMAKE_CURRENT_BINARY_DIR}/scripts/setup.sh @ONLY)
58+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/stage.sh.in
59+
${CMAKE_CURRENT_BINARY_DIR}/scripts/stage.sh @ONLY)
60+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/execute.sh.in
61+
${CMAKE_CURRENT_BINARY_DIR}/scripts/execute.sh @ONLY)
62+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/validate.sh.in
63+
${CMAKE_CURRENT_BINARY_DIR}/scripts/validate.sh @ONLY)
64+
65+
function(AddJJOBTest)
66+
67+
set(prefix ARG)
68+
set(novals NOTRAPFPE NOVALGRIND)
69+
set(singlevals CASE JOB TEST_DATE)
70+
set(multivals TEST_DEPENDS)
71+
72+
cmake_parse_arguments(${prefix}
73+
"${novals}" "${singlevals}" "${multivals}"
74+
${ARGN})
75+
76+
set(TEST_NAME ${ARG_CASE}_${ARG_JOB})
77+
set(CASE_PATH ${HOMEgfs}/ci/cases/pr)
78+
set(CASE_YAML ${CASE_PATH}/${ARG_CASE}.yaml)
79+
80+
add_test(NAME test_${TEST_NAME}_setup
81+
COMMAND ./setup.sh ${TEST_NAME} ${CASE_YAML} ${ARG_TEST_DATE}
82+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/scripts)
83+
set_tests_properties(test_${TEST_NAME}_setup PROPERTIES LABELS "${ARG_CASE};${ARG_JOB}")
84+
85+
add_test(NAME test_${TEST_NAME}_stage
86+
COMMAND ./stage.sh ${TEST_NAME} ${ARG_TEST_DATE}
87+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/scripts)
88+
set_tests_properties(test_${TEST_NAME}_stage PROPERTIES DEPENDS test_${TEST_NAME}_setup LABELS "${ARG_CASE};${ARG_JOB}")
89+
90+
add_test(NAME test_${TEST_NAME}_execute
91+
COMMAND ./execute.sh ${TEST_NAME} ${ARG_JOB} ${ARG_TEST_DATE}
92+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/scripts)
93+
set_tests_properties(test_${TEST_NAME}_execute PROPERTIES DEPENDS test_${TEST_NAME}_stage LABELS "${ARG_CASE};${ARG_JOB}")
94+
95+
# TODO - This is a stub for the validation step
96+
add_test(NAME test_${TEST_NAME}_validate
97+
COMMAND ./validate.sh ${TEST_NAME} ${CASE_YAML}
98+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/scripts)
99+
set_tests_properties(test_${TEST_NAME}_validate PROPERTIES DEPENDS test_${TEST_NAME}_execute LABELS "${ARG_CASE};${ARG_JOB}")
100+
endfunction()
101+
102+
AddJJOBTest(
103+
CASE "C48_ATM"
104+
JOB "gfs_fcst_seg0"
105+
TEST_DATE "2021032312"
106+
)

ctests/README.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# CTest Framework for NOAA Global Workflow
2+
3+
This directory contains the CTest framework for testing Rocoto JJOBS. The framework allows you to stage, execute, and validate individual JJOBS independently from other jobs in the workflow. Each test requires its own YAML definition of inputs and configurations.
4+
5+
## Overview
6+
7+
The CTest framework consists of the following scripts:
8+
- **setup.sh.in**: Prepares the environment and creates the experiment.
9+
- **stage.sh.in**: Stages the input files needed to run a JJOB.
10+
- **execute.sh.in**: Executes the JJOB and monitors its status.
11+
- **validate.sh.in**: (TODO) Validates the results of the JJOB.
12+
13+
## Usage
14+
15+
### CMake Configuration
16+
17+
To configure the CTest framework using CMake, you need to provide several environment variables or default values. Here is an example of how to configure and build the project:
18+
19+
```bash
20+
# Set environment variables (may also be include at command line with -D)
21+
export HPC_ACCOUNT="your_hpc_account"
22+
export ICSDIR_ROOT="/path/to/icsdir_root"
23+
export STAGED_TESTS_DIR="/path/to/staged_tests_dir"
24+
25+
# Run CMake to configure the ctest framework
26+
cmake -S /path/to/HOMEgfs -B /path/to/build -DRUNTESTS=/path/to/runtests
27+
28+
```
29+
30+
### Running Tests with CTest
31+
32+
Once the project is configured, you can run the tests using CTest. Here are some examples:
33+
34+
#### Run All Tests
35+
36+
```bash
37+
cd /path/to/build
38+
ctest
39+
```
40+
41+
#### Run Tests for a Specific Case
42+
43+
You can use the `-L` option with CTest to run tests for a specific case. For example, to run tests for the `C48_ATM` case:
44+
45+
```bash
46+
cd /path/to/build
47+
ctest -L C48_ATM
48+
```
49+
50+
To add a new test use the **AddJJOBTest()** function at the end of the `$HOMEgfs/ctest/CMakeLists.txt` file as follows:
51+
```cmake
52+
AddJJOBTest(
53+
CASE "C48_ATM"
54+
JOB "gfs_fcst_seg0"
55+
TEST_DATE "2021032312"
56+
)
57+
```
58+
Then create a new YAML file with the required staged input files as is done with this example found in `$HOMEgfs/ctests/cases/C48_ATM_gfs_fcts_seg0.yaml`
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
input_files:
2+
mkdir:
3+
- "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input"
4+
copy:
5+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/gfs_ctrl.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/gfs_ctrl.nc"]
6+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/gfs_data.tile1.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/gfs_data.tile1.nc"]
7+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/gfs_data.tile2.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/gfs_data.tile2.nc"]
8+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/gfs_data.tile3.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/gfs_data.tile3.nc"]
9+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/gfs_data.tile4.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/gfs_data.tile4.nc"]
10+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/gfs_data.tile5.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/gfs_data.tile5.nc"]
11+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/gfs_data.tile6.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/gfs_data.tile6.nc"]
12+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/sfc_data.tile1.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/sfc_data.tile1.nc"]
13+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/sfc_data.tile2.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/sfc_data.tile2.nc"]
14+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/sfc_data.tile3.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/sfc_data.tile3.nc"]
15+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/sfc_data.tile4.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/sfc_data.tile4.nc"]
16+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/sfc_data.tile5.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/sfc_data.tile5.nc"]
17+
- ["{{ 'STAGED_TESTS_DIR' | getenv }}/{{ 'TEST_NAME' | getenv }}/input_files/gfs.{{ TEST_DATE | to_YMD }}/{{ TEST_DATE | strftime('%H') }}/model/atmos/input/sfc_data.tile6.nc", "{{ 'RUNTESTS' | getenv }}/COMROOT/{{ 'TEST_NAME' | getenv }}/gfs.{{TEST_DATE | to_YMD}}/{{TEST_DATE | strftime('%H')}}/model/atmos/input/sfc_data.tile6.nc"]

0 commit comments

Comments
 (0)