diff --git a/.github/workflows/hera.yaml b/.github/workflows/hera.yaml index 3685ea4bd..3b4ef6245 100644 --- a/.github/workflows/hera.yaml +++ b/.github/workflows/hera.yaml @@ -5,7 +5,7 @@ on: jobs: test: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: Passes on Hera steps: diff --git a/.github/workflows/norms.yaml b/.github/workflows/norms.yaml index 2e721e7af..36b56d554 100644 --- a/.github/workflows/norms.yaml +++ b/.github/workflows/norms.yaml @@ -3,7 +3,7 @@ on: [push] jobs: check_pynorms: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: Check coding norms with pycodestyle and cpplint steps: diff --git a/.github/workflows/orion.yaml b/.github/workflows/orion.yaml index f75de79c4..a0b841fe4 100644 --- a/.github/workflows/orion.yaml +++ b/.github/workflows/orion.yaml @@ -5,7 +5,7 @@ on: jobs: test: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: Passes on Orion steps: diff --git a/.github/workflows/unittests.yaml b/.github/workflows/unittests.yaml index c103aee50..e716b0e89 100644 --- a/.github/workflows/unittests.yaml +++ b/.github/workflows/unittests.yaml @@ -3,7 +3,7 @@ on: [push, pull_request] jobs: ctests: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: Run Unit Tests with ctest steps: diff --git a/.github/workflows/unittests_g-w.yaml b/.github/workflows/unittests_g-w.yaml index 9abaa046a..2d6dc9602 100644 --- a/.github/workflows/unittests_g-w.yaml +++ b/.github/workflows/unittests_g-w.yaml @@ -3,7 +3,7 @@ on: [push, pull_request] jobs: ctests: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: Run Unit Tests inside global-workflow with ctest steps: diff --git a/build.sh b/build.sh index 48931b553..42ec34284 100755 --- a/build.sh +++ b/build.sh @@ -71,7 +71,7 @@ while getopts "p:t:c:hvdfa" opt; do done case ${BUILD_TARGET} in - hera | orion | hercules | wcoss2 | noaacloud | gaea) + hera | orion | hercules | wcoss2 | noaacloud | gaea | gaeac6 ) echo "Building GDASApp on $BUILD_TARGET" source $dir_root/ush/module-setup.sh module use $dir_root/modulefiles diff --git a/modulefiles/GDAS/gaeac6.intel.lua b/modulefiles/GDAS/gaeac6.intel.lua new file mode 100644 index 000000000..9069da3b8 --- /dev/null +++ b/modulefiles/GDAS/gaeac6.intel.lua @@ -0,0 +1,95 @@ +help([[ +Load environment for running the GDAS application with Intel compilers and MPI. +]]) + +local pkgName = myModuleName() +local pkgVersion = myModuleVersion() +local pkgNameVer = myModuleFullName() + +prepend_path("MODULEPATH", '/ncrc/proj/epic/spack-stack/c6/spack-stack-1.6.0/envs/unified-env/install/modulefiles/Core') +prepend_path("MODULEPATH", '/ncrc/proj/epic/rocoto/modulefiles') + +-- below two lines get us access to the spack-stack modules +load("stack-intel/2023.2.0") +load("stack-cray-mpich/8.1.29") +-- JCSDA has 'jedi-fv3-env/unified-dev', but we should load these manually as needed +load("cmake/3.23.1") +load("gettext/0.20.2") +--load("libunistring/1.1") +--load("libidn2/2.3.4") +load("pcre2/10.42") +load("curl/8.4.0") +load("zlib/1.2.13") +load("git/2.42.0") +load("pkg-config/0.29.2") +load("hdf5/1.14.0") +load("parallel-netcdf/1.12.2") +load("netcdf-c/4.9.2") +load("nccmp/1.9.0.1") +load("netcdf-fortran/4.6.1") +load("nco/5.0.6") +load("parallelio/2.5.10") +load("wget/1.21.3") +load("boost/1.83.0") +load("bufr/12.0.1") +load("git-lfs/2.11.0") +load("ecbuild/3.7.2") +load("openjpeg/2.3.1") +load("eccodes/2.32.0") +load("eigen/3.4.0") +load("openblas/0.3.24") +load("eckit/1.24.5") +load("fftw/3.3.10") +load("fckit/0.11.0") +load("fiat/1.2.0") +load("ectrans/1.2.0") +load("fms/2023.04") +load("esmf/8.6.0") +load("atlas/0.35.1") +load("sp/2.5.0") +load("gsl-lite/0.37.0") +load("libjpeg/2.1.0") +load("krb5/1.20.1") +load("libtirpc/1.3.3") +load("hdf/4.2.15") +load("jedi-cmake/1.4.0") +load("libpng/1.6.37") +--load("libxt/1.1.5") +--load("libxmu/1.1.4") +--load("libxpm/4.11.0") +load("libxaw/1.10.13") +load("udunits/2.2.28") +load("ncview/2.1.9") +load("netcdf-cxx4/4.3.1") +load("json/3.10.5") +load("crtm/2.4.0.1") +load("rocoto/1.3.6") +load("prod_util/2.1.1") + +load("py-jinja2/3.0.3") +load("py-netcdf4/1.5.8") +load("py-pybind11/2.11.0") +load("py-pycodestyle/2.11.0") +load("py-pyyaml/6.0") +load("py-scipy/1.11.3") +load("py-xarray/2023.7.0") +load("py-f90nml/1.4.3") +load("py-pip/23.1.2") + +setenv("CC","cc") +setenv("CXX","CC") +setenv("FC","ftn") + +local mpiexec = '/usr/bin/srun' +local mpinproc = '-n' +setenv('MPIEXEC_EXEC', mpiexec) +setenv('MPIEXEC_NPROC', mpinproc) + +setenv("CRTM_FIX","/gpfs/f6/ira-sti/world-shared/GDASApp/fix/crtm/2.4.0") +setenv("GDASAPP_TESTDATA","/gpfs/f6/ira-sti/world-shared/GDASApp/testdata") +setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/gpfs/f6/ira-sti/world-shared/GDASApp/unittestdata") + +whatis("Name: ".. "pkgName") +whatis("Version: ".. "pkgVersion") +whatis("Category: GDASApp") +whatis("Description: Load all libraries needed for GDASApp") diff --git a/parm/atm/jcb-base.yaml.j2 b/parm/atm/jcb-base.yaml.j2 index 6387fffbb..d7e1e5907 100644 --- a/parm/atm/jcb-base.yaml.j2 +++ b/parm/atm/jcb-base.yaml.j2 @@ -71,6 +71,8 @@ observations: all_observations crtm_coefficient_path: "{{ DATA }}/crtm/" # Naming conventions for observational files +atmosphere_obsdataroot_path: "{{COM_OBS}}" + atmosphere_obsdatain_path: "{{atm_obsdatain_path}}" atmosphere_obsdatain_prefix: "{{OPREFIX}}" atmosphere_obsdatain_suffix: ".tm00.nc" @@ -80,6 +82,8 @@ atmosphere_obsdataout_prefix: diag_ atmosphere_obsdataout_suffix: "_{{ current_cycle | to_YMDH }}.nc" # Naming conventions for bias correction files +atmosphere_obsbiasroot_path: "{{COM_ATMOS_ANALYSIS_PREV}}" + atmosphere_obsbiasin_path: "{{DATA}}/obs/" atmosphere_obsbiasin_prefix: "{{GPREFIX}}" atmosphere_obsbiasin_suffix: ".satbias.nc" @@ -94,6 +98,16 @@ atmosphere_obsbiasout_suffix: ".satbias.nc" atmosphere_obsbiascovout_prefix: "{{APREFIX}}" atmosphere_obsbiascovout_suffix: ".satbias_cov.nc" +bias_files: + atms_n20: rad_varbc_params.tar + atms_npp: rad_varbc_params.tar + mtiasi_metop-a: rad_varbc_params.tar + mtiasi_metop-b: rad_varbc_params.tar + amsua_n19: rad_varbc_params.tar + ssmis_f17: rad_varbc_params.tar + ssmis_f18: rad_varbc_params.tar + cris-fsr_n20: rad_varbc_params.tar + cris-fsr_npp: rad_varbc_params.tar # Local Ensemble DA (LETKF) # ------------------------- diff --git a/parm/jcb-gdas b/parm/jcb-gdas index 2b46aa19b..7717c0e74 160000 --- a/parm/jcb-gdas +++ b/parm/jcb-gdas @@ -1 +1 @@ -Subproject commit 2b46aa19b22df22f33ef0be5030fb719a8fa6298 +Subproject commit 7717c0e7401e344a6bce37a4f8ecc11399256936 diff --git a/sorc/oops b/sorc/oops index 78a7a1ac3..0d2c235d7 160000 --- a/sorc/oops +++ b/sorc/oops @@ -1 +1 @@ -Subproject commit 78a7a1ac378db5b7950a597e7fe119f4ce684514 +Subproject commit 0d2c235d791e1ba0023ce300103174dddf71aed7 diff --git a/sorc/saber b/sorc/saber index bfab007ac..1f23a3665 160000 --- a/sorc/saber +++ b/sorc/saber @@ -1 +1 @@ -Subproject commit bfab007ac003bec1d6adddee5517f3abb701fdd3 +Subproject commit 1f23a36657f6d10b770348de0f5454e01d377105 diff --git a/test/atm/global-workflow/config.yaml b/test/atm/global-workflow/config.yaml index c06019628..d8bf2e4c2 100644 --- a/test/atm/global-workflow/config.yaml +++ b/test/atm/global-workflow/config.yaml @@ -10,7 +10,7 @@ base: PTMP: "@bindir@/test/atm/global-workflow/testrun" atmanl: - JCB_ALGO_YAML: "@srcdir@/test/atm/global-workflow/jcb-prototype_3dvar.yaml.j2" + JCB_ALGO_YAML_VAR: "@srcdir@/test/atm/global-workflow/jcb-prototype_3dvar.yaml.j2" STATICB_TYPE: "identity" ATMRES_ANL: "C48" LAYOUT_X_ATMANL: 1 @@ -19,11 +19,6 @@ atmanl: atmensanl: JCB_ALGO_YAML_LETKF: "@srcdir@/test/atm/global-workflow/jcb-prototype_lgetkf.yaml.j2" JCB_ALGO_YAML_OBS: "@srcdir@/test/atm/global-workflow/jcb-prototype_lgetkf_observer.yaml.j2" + JCB_ALGO_YAML_SOL: "@srcdir@/test/atm/global-workflow/jcb-prototype_lgetkf_solver.yaml.j2" LAYOUT_X_ATMENSANL: 1 LAYOUT_Y_ATMENSANL: 1 - -atmensanlobs: - JCB_ALGO_YAML: "@srcdir@/test/atm/global-workflow/jcb-prototype_lgetkf_observer.yaml.j2" - -atmensanlsol: - JCB_ALGO_YAML: "@srcdir@/test/atm/global-workflow/jcb-prototype_lgetkf_solver.yaml.j2" diff --git a/test/gw-ci/CMakeLists.txt b/test/gw-ci/CMakeLists.txt index 1dba4dc0d..6c9faedf1 100644 --- a/test/gw-ci/CMakeLists.txt +++ b/test/gw-ci/CMakeLists.txt @@ -20,17 +20,17 @@ function(add_cycling_tests pslot YAML_PATH HOMEgfs RUNTESTS PROJECT_SOURCE_DIR T # stage IC's message(STATUS "staging the 1/2 cycle IC's for ${test_name} ctest") - add_test(NAME ${test_name}_gdasstage_ic_${HALF_CYCLE} - COMMAND /bin/bash -c "${PROJECT_SOURCE_DIR}/test/gw-ci/run_exp.sh ${pslot} gdasstage_ic ${HALF_CYCLE}" + add_test(NAME ${test_name}_gdas_stage_ic_${HALF_CYCLE} + COMMAND /bin/bash -c "${PROJECT_SOURCE_DIR}/test/gw-ci/run_exp.sh ${pslot} gdas_stage_ic ${HALF_CYCLE}" WORKING_DIRECTORY ${RUNTESTS}) - set_tests_properties(${test_name}_gdasstage_ic_${HALF_CYCLE} PROPERTIES LABELS "manual") + set_tests_properties(${test_name}_gdas_stage_ic_${HALF_CYCLE} PROPERTIES LABELS "manual") - # 1/2 cycle gdasfcst - message(STATUS "preparing 1/2 cycle gdasfcst for ${pslot} ctest") - add_test(NAME ${test_name}_gdasfcst_${HALF_CYCLE} - COMMAND /bin/bash -c "${PROJECT_SOURCE_DIR}/test/gw-ci/run_exp.sh ${pslot} gdasfcst_seg0 ${HALF_CYCLE}" + # 1/2 cycle gdas_fcst + message(STATUS "preparing 1/2 cycle gdas_fcst for ${pslot} ctest") + add_test(NAME ${test_name}_gdas_fcst_${HALF_CYCLE} + COMMAND /bin/bash -c "${PROJECT_SOURCE_DIR}/test/gw-ci/run_exp.sh ${pslot} gdas_fcst_seg0 ${HALF_CYCLE}" WORKING_DIRECTORY ${RUNTESTS}) - set_tests_properties(${test_name}_gdasfcst_${HALF_CYCLE} PROPERTIES LABELS "manual") + set_tests_properties(${test_name}_gdas_fcst_${HALF_CYCLE} PROPERTIES LABELS "manual") # Select the list of tasks to run for the full cycle message(STATUS "Tasks ${TASK_LIST}") @@ -54,12 +54,12 @@ if (WORKFLOW_TESTS) set(pslot "WCDA-3DVAR-C48mx500") set(YAML_PATH ${HOMEgfs}/ci/cases/pr/C48mx500_3DVarAOWCDA.yaml) set(TASK_LIST - "gdasprepoceanobs" - "gdasmarinebmat" - "gdasmarineanlinit" - "gdasmarineanlvar" - "gdasmarineanlchkpt" - "gdasmarineanlfinal" + "gdas_prepoceanobs" + "gdas_marinebmat" + "gdas_marineanlinit" + "gdas_marineanlvar" + "gdas_marineanlchkpt" + "gdas_marineanlfinal" ) add_cycling_tests(${pslot} ${YAML_PATH} ${HOMEgfs} ${RUNTESTS} ${PROJECT_SOURCE_DIR} "${TASK_LIST}") endif() @@ -85,15 +85,15 @@ if (RUN_GW_CI) set(pslot "GFSv17-3DVAR-C384mx025") set(YAML_PATH ${HOMEgfs}/ci/cases/gfsv17/C384mx025_3DVarAOWCDA.yaml) set(TASK_LIST - "gdasprepoceanobs" - "gdasmarinebmat" - "gdasmarineanlinit" - "gdasmarineanlvar" - "gdasmarineanlchkpt" - "gdasmarineanlfinal" - "gdasocnanalvrfy" - "gdasprep" - "gdasanal" + "gdas_prepoceanobs" + "gdas_marinebmat" + "gdas_marineanlinit" + "gdas_marineanlvar" + "gdas_marineanlchkpt" + "gdas_marineanlfinal" + "gdas_ocnanalvrfy" + "gdas_prep" + "gdas_anal" ) add_cycling_tests(${pslot} ${YAML_PATH} ${HOMEgfs} ${RUNTESTS} ${PROJECT_SOURCE_DIR} "${TASK_LIST}") endif() diff --git a/ush/detect_machine.sh b/ush/detect_machine.sh index 683ee0db7..997c394fa 100755 --- a/ush/detect_machine.sh +++ b/ush/detect_machine.sh @@ -24,6 +24,9 @@ case $(hostname -f) in gaea5[1-8]) MACHINE_ID=gaea ;; ### gaea51-58 gaea5[1-8].ncrc.gov) MACHINE_ID=gaea ;; ### gaea51-58 + gaea6[1-8]) MACHINE_ID=gaeac6 ;; ### gaea61-68 + gaea6[1-8].ncrc.gov) MACHINE_ID=gaeac6 ;; ### gaea61-68 + hfe0[1-9]) MACHINE_ID=hera ;; ### hera01-09 hfe1[0-2]) MACHINE_ID=hera ;; ### hera10-12 hecflow01) MACHINE_ID=hera ;; ### heraecflow01