From eb24a031a23bc48d8b5db30d94ae3a106aa6e919 Mon Sep 17 00:00:00 2001 From: Mark Potts Date: Tue, 25 Jan 2022 17:29:43 -0500 Subject: [PATCH 01/18] updates to get things building/linking --- CMakeLists.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2bcb2b2..e463c81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,11 +74,11 @@ ExternalProject_Add(ufs-weather-model PREFIX ${CMAKE_CURRENT_BINARY_DIR}/ufs-weather-model GIT_REPOSITORY https://github.com/mark-a-potts/ufs-weather-model.git GIT_SUBMODULES_RECURSE TRUE - GIT_TAG develop + GIT_TAG feature/soca SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ufs-weather-model INSTALL_DIR ${DEPEND_LIB_ROOT} CMAKE_ARGS ${UFS_WEATHER_MODEL_ARGS} - CMAKE_ARGS -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_coupled,FV3_GFS_v15p2 -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DREPRO=on -DOPENMP=ON -DINLINE_POST=OFF -DMULTI_GASES=OFF -DMPI=ON -DAPP=${UFS_APP} -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} + CMAKE_ARGS -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_coupled,FV3_GFS_v15p2 -DCMAKE_EXE_LINKER_FLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/lib -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DREPRO=on -DOPENMP=ON -DINLINE_POST=OFF -DMULTI_GASES=OFF -DMPI=ON -DAPP=${UFS_APP} -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} INSTALL_COMMAND make install BUILD_ALWAYS FALSE ) @@ -117,15 +117,16 @@ if(UFS_APP MATCHES "^(S2S)$") ecbuild_bundle( PROJECT femps GIT "https://github.com/jcsda-internal/femps.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda-internal/fv3-jedi.git" BRANCH feature/ufs UPDATE ) ecbuild_bundle( PROJECT gsw GIT "https://github.com/jcsda-internal/GSW-Fortran.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda-internal/soca.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda-internal/soca.git" BRANCH feature/ufs UPDATE ) elseif(UFS_APP MATCHES "^(NG-GODAS)$") ecbuild_bundle( PROJECT gsw GIT "https://github.com/jcsda-internal/GSW-Fortran.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda-internal/soca.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda-internal/soca.git" BRANCH feature/ufs UPDATE ) elseif(UFS_APP MATCHES "^(ATM)$") ecbuild_bundle( PROJECT femps GIT "https://github.com/jcsda-internal/femps.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda-internal/fv3-jedi.git" BRANCH feature/ufs UPDATE ) endif() +add_dependencies(soca ufs-weather-model) # ioda, ufo, fv3-jedi and saber test data #---------------------------------------- From 142975a8d356b51a7e393e98c11901e969889d77 Mon Sep 17 00:00:00 2001 From: Mark Potts Date: Wed, 26 Jan 2022 13:34:30 -0500 Subject: [PATCH 02/18] using two different versions of fv3-jedi depending on UFS_APP --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e463c81..d9a5939 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,7 +65,7 @@ set(FV3_FORECAST_MODEL "UFS") # --------------------- ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/jcsda-internal/fv3-jedi-linearmodel.git" BRANCH feature/ufs UPDATE ) -include_directories(${DEPEND_LIB_ROOT}/include) +include_directories(${DEPEND_LIB_ROOT}/include_r8) link_directories(${DEPEND_LIB_ROOT}/lib) include( ExternalProject ) @@ -115,7 +115,7 @@ if(UFS_APP MATCHES "^(S2S)$") # fv3-jedi and associated repositories # ------------------------------------ ecbuild_bundle( PROJECT femps GIT "https://github.com/jcsda-internal/femps.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda-internal/fv3-jedi.git" BRANCH feature/ufs UPDATE ) + ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda-internal/fv3-jedi.git" BRANCH feature/ufs-s2s UPDATE ) ecbuild_bundle( PROJECT gsw GIT "https://github.com/jcsda-internal/GSW-Fortran.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda-internal/soca.git" BRANCH feature/ufs UPDATE ) elseif(UFS_APP MATCHES "^(NG-GODAS)$") @@ -161,7 +161,7 @@ branch_checkout (REPO_DIR_NAME ufo-data # same procedure for fv3-jedi-data find_branch_name(REPO_DIR_NAME fv3-jedi) if( NOT DEFINED ENV{LOCAL_PATH_JEDI_TESTFILES} AND NOT DEFINED ${GIT_TAG_FUNC} ) - ecbuild_bundle( PROJECT fv3-jedi-data GIT "https://github.com/JCSDA-internal/fv3-jedi-data.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT fv3-jedi-data GIT "https://github.com/JCSDA-internal/fv3-jedi-data.git" BRANCH feature/ufs UPDATE ) endif() # If fv3-jedi's current branch is available in fv3-jedi-data repo, that branch will be checked out From 2c2a90f212030d2e1d93633dd1b2f8a17976a8fd Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Thu, 27 Jan 2022 16:54:37 +0000 Subject: [PATCH 03/18] small change to ioda for expat linking --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d9a5939..d2308fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -141,7 +141,7 @@ find_branch_name(REPO_DIR_NAME ioda) # When LOCAL_PATH_JEDI_TESTFILES is set to the directory of IODA test files stored # in a local directory, ioda-data repo will not be cloned if( NOT DEFINED ENV{LOCAL_PATH_JEDI_TESTFILES} AND NOT DEFINED ${GIT_TAG_FUNC} ) - ecbuild_bundle( PROJECT ioda-data GIT "https://github.com/JCSDA-internal/ioda-data.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT ioda-data GIT "https://github.com/JCSDA-internal/ioda-data.git" BRANCH feature/soca UPDATE ) endif() # If IODA's current branch is available in ioda-data repo, that branch will be checked out From 6e4c053179481d1dd39f69f4d2a1839f86d648de Mon Sep 17 00:00:00 2001 From: Mark Potts Date: Thu, 27 Jan 2022 17:10:33 -0500 Subject: [PATCH 04/18] fix for building in container --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d9a5939..d3b20ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,7 +78,7 @@ ExternalProject_Add(ufs-weather-model SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ufs-weather-model INSTALL_DIR ${DEPEND_LIB_ROOT} CMAKE_ARGS ${UFS_WEATHER_MODEL_ARGS} - CMAKE_ARGS -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_coupled,FV3_GFS_v15p2 -DCMAKE_EXE_LINKER_FLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/lib -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DREPRO=on -DOPENMP=ON -DINLINE_POST=OFF -DMULTI_GASES=OFF -DMPI=ON -DAPP=${UFS_APP} -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} + CMAKE_ARGS -DMPI_Fortran_LINK_FLAGS:STRING="-Wl,--copy-dt-needed-entries" -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_coupled,FV3_GFS_v15p2 -DCMAKE_EXE_LINKER_FLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/lib -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DREPRO=on -DOPENMP=ON -DINLINE_POST=OFF -DMULTI_GASES=OFF -DMPI=ON -DAPP=${UFS_APP} -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} INSTALL_COMMAND make install BUILD_ALWAYS FALSE ) From 603371d685562c83fc2bafaf6680d08932977222 Mon Sep 17 00:00:00 2001 From: Mark Potts Date: Fri, 11 Feb 2022 14:43:28 -0500 Subject: [PATCH 05/18] public version --- CMakeLists.txt | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d416769..690da0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ set( ENABLE_MPI ON CACHE BOOL "Compile with MPI") # Initialize ecbuild_bundle_initialize() -ecbuild_bundle( PROJECT jedicmake GIT "https://github.com/jcsda-internal/jedi-cmake.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT jedicmake GIT "https://github.com/JCSDA/jedi-cmake.git" BRANCH develop UPDATE ) include( jedicmake/cmake/Functions/git_functions.cmake ) # ECMWF libs @@ -42,14 +42,14 @@ ecbuild_bundle( PROJECT atlas GIT "https://github.com/ecmwf/atlas.git" TAG 0.24. # External (required) observation operators # ------------------------------ option("BUNDLE_SKIP_CRTM" "Don't build CRTM" "OFF") # Build crtm unless user passes -DBUNDLE_SKIP_CRTM=ON -ecbuild_bundle( PROJECT crtm GIT "https://github.com/jcsda-internal/crtm.git" BRANCH release/crtm_jedi UPDATE ) +ecbuild_bundle( PROJECT crtm GIT "https://github.com/JCSDA/crtm.git" BRANCH release/crtm_jedi UPDATE ) # Core JEDI repositories # ---------------------- -ecbuild_bundle( PROJECT oops GIT "https://github.com/jcsda-internal/oops.git" BRANCH develop UPDATE ) -ecbuild_bundle( PROJECT saber GIT "https://github.com/jcsda-internal/saber.git" BRANCH develop UPDATE ) -ecbuild_bundle( PROJECT ioda GIT "https://github.com/jcsda-internal/ioda.git" BRANCH develop UPDATE ) -ecbuild_bundle( PROJECT ufo GIT "https://github.com/jcsda-internal/ufo.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT oops GIT "https://github.com/JCSDA/oops.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT saber GIT "https://github.com/JCSDA/saber.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT ioda GIT "https://github.com/JCSDA/ioda.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT ufo GIT "https://github.com/JCSDA/ufo.git" BRANCH develop UPDATE ) # Options for building with certain models # ---------------------------------------- @@ -60,10 +60,11 @@ if(NOT UFS_APP MATCHES "^(ATM|NG-GODAS|S2S)$") endif() ecbuild_info("Building with UFS application: ${UFS_APP}") -set(FV3_FORECAST_MODEL "UFS") # fv3-jedi linear model # --------------------- -ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/jcsda-internal/fv3-jedi-linearmodel.git" BRANCH feature/ufs UPDATE ) +set(FV3_FORECAST_MODEL "UFS") +ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/JCSDA/fv3-jedi-linearmodel.git" BRANCH develop UPDATE ) + include_directories(${DEPEND_LIB_ROOT}/include_r8) link_directories(${DEPEND_LIB_ROOT}/lib) @@ -114,19 +115,21 @@ set_target_properties(ccppphys PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/l if(UFS_APP MATCHES "^(S2S)$") # fv3-jedi and associated repositories # ------------------------------------ - ecbuild_bundle( PROJECT femps GIT "https://github.com/jcsda-internal/femps.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda-internal/fv3-jedi.git" BRANCH feature/ufs-s2s UPDATE ) - ecbuild_bundle( PROJECT gsw GIT "https://github.com/jcsda-internal/GSW-Fortran.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda-internal/soca.git" BRANCH feature/ufs UPDATE ) + ecbuild_bundle( PROJECT femps GIT "https://github.com/JCSDA/femps.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/JCSDA/fv3-jedi.git" BRANCH feature/ufs-s2s UPDATE ) + ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT soca GIT "https://github.com/JCSDA-internal/soca.git" BRANCH feature/ufs UPDATE ) + add_dependencies(soca ufs-weather-model) elseif(UFS_APP MATCHES "^(NG-GODAS)$") - ecbuild_bundle( PROJECT gsw GIT "https://github.com/jcsda-internal/GSW-Fortran.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda-internal/soca.git" BRANCH feature/ufs UPDATE ) + ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT soca GIT "https://github.com/JCSDA-internal/soca.git" BRANCH feature/ufs UPDATE ) + add_dependencies(soca ufs-weather-model) elseif(UFS_APP MATCHES "^(ATM)$") - ecbuild_bundle( PROJECT femps GIT "https://github.com/jcsda-internal/femps.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda-internal/fv3-jedi.git" BRANCH feature/ufs UPDATE ) + ecbuild_bundle( PROJECT femps GIT "https://github.com/JCSDA/femps.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/JCSDA/fv3-jedi.git" BRANCH feature/ufs UPDATE ) + ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) endif() -add_dependencies(soca ufs-weather-model) # ioda, ufo, fv3-jedi and saber test data #---------------------------------------- From 30e2ab563699ebbe69731b5f4767674866aa44b9 Mon Sep 17 00:00:00 2001 From: Mark Potts Date: Fri, 11 Feb 2022 20:07:26 -0500 Subject: [PATCH 06/18] files to allow build without access to private repos --- CMakeLists.txt | 3 +++ patches.tar | Bin 0 -> 81920 bytes 2 files changed, 3 insertions(+) create mode 100644 patches.tar diff --git a/CMakeLists.txt b/CMakeLists.txt index 690da0a..27e2da1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,14 +120,17 @@ if(UFS_APP MATCHES "^(S2S)$") ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT soca GIT "https://github.com/JCSDA-internal/soca.git" BRANCH feature/ufs UPDATE ) add_dependencies(soca ufs-weather-model) + add_dependencies(gsw FMS) elseif(UFS_APP MATCHES "^(NG-GODAS)$") ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT soca GIT "https://github.com/JCSDA-internal/soca.git" BRANCH feature/ufs UPDATE ) add_dependencies(soca ufs-weather-model) + add_dependencies(gsw FMS) elseif(UFS_APP MATCHES "^(ATM)$") ecbuild_bundle( PROJECT femps GIT "https://github.com/JCSDA/femps.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/JCSDA/fv3-jedi.git" BRANCH feature/ufs UPDATE ) ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) + add_dependencies(gsw FMS) endif() diff --git a/patches.tar b/patches.tar new file mode 100644 index 0000000000000000000000000000000000000000..f69ffbdf8daa1c52aa9252ff24f15d20d31666a8 GIT binary patch literal 81920 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 z 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 literal 0 HcmV?d00001 From 099c4bbe9528ae2fc99f210b0aa76c01f18e5fb1 Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Mon, 14 Feb 2022 13:25:13 +0000 Subject: [PATCH 07/18] updates for public --- CMakeLists.txt | 4 ++-- patches.tar | Bin 81920 -> 20480 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 27e2da1..c8b63d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,8 +63,8 @@ ecbuild_info("Building with UFS application: ${UFS_APP}") # fv3-jedi linear model # --------------------- set(FV3_FORECAST_MODEL "UFS") -ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/JCSDA/fv3-jedi-linearmodel.git" BRANCH develop UPDATE ) - +execute_process( COMMAND "tar xvf patches.tar" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) +ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/mark-a-potts/fv3-jedi-linearmodel.git" BRANCH develop UPDATE ) include_directories(${DEPEND_LIB_ROOT}/include_r8) link_directories(${DEPEND_LIB_ROOT}/lib) diff --git a/patches.tar b/patches.tar index f69ffbdf8daa1c52aa9252ff24f15d20d31666a8..ba57b7a98bb9eadd511b835e056aafbf52fb6cfa 100644 GIT binary patch delta 156 zcmZo@U~O2yI3ZKW#Du}Xz{teh+!#cg8<-nTtd?OjHZWsQFqmw}m?BhKT#{I%pupgp zSd^_7kY7?#JW)}MB`-C%c=ANP%bS=o`LLKVxmrMm&BWN0I71c*>1=l}WIVtJA|03k D#ojAd literal 81920 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 z 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 From 83f4d4d2c443dc195ed83a117f89b923c92339d2 Mon Sep 17 00:00:00 2001 From: Mark Potts Date: Mon, 14 Feb 2022 08:06:18 -0600 Subject: [PATCH 08/18] moved ioda and fv3-jedi-lm to NOAA-EMC --- CMakeLists.txt | 4 ++-- patches.tar | Bin 20480 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 patches.tar diff --git a/CMakeLists.txt b/CMakeLists.txt index c8b63d6..bd19f38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,7 +48,7 @@ ecbuild_bundle( PROJECT crtm GIT "https://github.com/JCSDA/crtm.git" BRANCH rele # ---------------------- ecbuild_bundle( PROJECT oops GIT "https://github.com/JCSDA/oops.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT saber GIT "https://github.com/JCSDA/saber.git" BRANCH develop UPDATE ) -ecbuild_bundle( PROJECT ioda GIT "https://github.com/JCSDA/ioda.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT ioda GIT "https://github.com/NOAA-EMC/ioda.git" BRANCH feature/ufs UPDATE ) ecbuild_bundle( PROJECT ufo GIT "https://github.com/JCSDA/ufo.git" BRANCH develop UPDATE ) # Options for building with certain models @@ -64,7 +64,7 @@ ecbuild_info("Building with UFS application: ${UFS_APP}") # --------------------- set(FV3_FORECAST_MODEL "UFS") execute_process( COMMAND "tar xvf patches.tar" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/mark-a-potts/fv3-jedi-linearmodel.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/NOAA-EMC/fv3-jedi-linearmodel.git" BRANCH feature/ufs UPDATE ) include_directories(${DEPEND_LIB_ROOT}/include_r8) link_directories(${DEPEND_LIB_ROOT}/lib) diff --git a/patches.tar b/patches.tar deleted file mode 100644 index ba57b7a98bb9eadd511b835e056aafbf52fb6cfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 F{0m$shDQJZ From c514ebf05d17e5cf34a994b5b35af015d271f6c0 Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Mon, 14 Feb 2022 14:14:14 +0000 Subject: [PATCH 09/18] removed patch command --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bd19f38..93ca615 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,7 +63,6 @@ ecbuild_info("Building with UFS application: ${UFS_APP}") # fv3-jedi linear model # --------------------- set(FV3_FORECAST_MODEL "UFS") -execute_process( COMMAND "tar xvf patches.tar" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/NOAA-EMC/fv3-jedi-linearmodel.git" BRANCH feature/ufs UPDATE ) include_directories(${DEPEND_LIB_ROOT}/include_r8) From b0d63342949e1e9b2bb180f9619d24f0d3b548a4 Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Mon, 14 Feb 2022 19:29:40 +0000 Subject: [PATCH 10/18] Added readme with instructions on how to build on Orion and Hera --- CMakeLists.txt | 2 +- README | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 README diff --git a/CMakeLists.txt b/CMakeLists.txt index 93ca615..eeb3714 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,7 +48,7 @@ ecbuild_bundle( PROJECT crtm GIT "https://github.com/JCSDA/crtm.git" BRANCH rele # ---------------------- ecbuild_bundle( PROJECT oops GIT "https://github.com/JCSDA/oops.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT saber GIT "https://github.com/JCSDA/saber.git" BRANCH develop UPDATE ) -ecbuild_bundle( PROJECT ioda GIT "https://github.com/NOAA-EMC/ioda.git" BRANCH feature/ufs UPDATE ) +ecbuild_bundle( PROJECT ioda GIT "https://github.com/NOAA-EMC/ioda.git" BRANCH feature/ufs UPDATE) ecbuild_bundle( PROJECT ufo GIT "https://github.com/JCSDA/ufo.git" BRANCH develop UPDATE ) # Options for building with certain models diff --git a/README b/README new file mode 100644 index 0000000..4008ced --- /dev/null +++ b/README @@ -0,0 +1,19 @@ +2/14/2022 +While awaiting PRs to be approved for fv3-jedi-lm and fv3-jedi repos, this branch is designed to pull from the NOAA-EMC forks of those repos. +This build will build a special version of FMS (currently ahead of the jcsda release branch) and of the UFS. + +To build on Orion with Intel-- +module use /work/noaa/gsd-hpcs/dheinzel/jcsda/spack-stack-20220124/envs_orion/install/modulefiles/Core; module use /home/dheinzel/test_modulefiles/core +module load stack-compiler-intel intel-mpi esmf eckit w3nco gsl-lite hdf5 fckit sp atlas netcdf-c cmake eigen udunits netcdf-fortran bacio ecbuild parallelio python udunits +ecbuild -DCMAKE_C_COMPILER=mpiicc -DCMAKE_CXX_COMPILER=mpiicpc -DCMAKE_Fortran_COMPILER=mpiifort -DMPI_CXX_LINK_FLAGS:STRING="-Wl,--copy-dt-needed-entries" -DUFS_APP=NG-GODAS -DCMAKE_BUILD_TYPE=DEBUG .. +make -j 8 + +To build on Hera with gnu-- + +module use /scratch1/NCEPDEV/da/Mark.Potts/hpc-modules/modulefiles/stack +module use /scratch1/NCEPDEV/da/Mark.Potts/spack/share/spack/modules/linux-centos7-skylake_avx512 +module load hpc hpc-gnu hpc-openmpi esmf/8_2_0 hdf5/1.10.6 netcdf/4.7.4 eckit fckit cmake gsl-lite bacio nemsio sigio sfcio w3emc w3nco sp pio eigen boost-headers ecbuild atlas udunits openblas +ecbuild -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpif90 -DMPI_CXX_LINK_FLAGS:STRING="-Wl,--copy-dt-needed-entries" -DUFS_APP=NG-GODAS -DCMAKE_BUILD_TYPE=DEBUG .. +make -j 8 + +Note that the "-DUFS_APP=NG-GODAS" can be replaced with "-DUFS_APP=S2S" or "-DUFS_APP=ATM", depending on the configuration desired. From 1bc6e1201294485ae9f07998c0fba07b69739f18 Mon Sep 17 00:00:00 2001 From: Mark Potts Date: Mon, 14 Feb 2022 14:49:13 -0600 Subject: [PATCH 11/18] changed fv3-jedi to NOAA-EMC --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bd19f38..6724080 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,7 +116,7 @@ if(UFS_APP MATCHES "^(S2S)$") # fv3-jedi and associated repositories # ------------------------------------ ecbuild_bundle( PROJECT femps GIT "https://github.com/JCSDA/femps.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/JCSDA/fv3-jedi.git" BRANCH feature/ufs-s2s UPDATE ) + ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/NOAA-EMC/fv3-jedi.git" BRANCH feature/ufs-s2s UPDATE ) ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT soca GIT "https://github.com/JCSDA-internal/soca.git" BRANCH feature/ufs UPDATE ) add_dependencies(soca ufs-weather-model) @@ -128,7 +128,7 @@ elseif(UFS_APP MATCHES "^(NG-GODAS)$") add_dependencies(gsw FMS) elseif(UFS_APP MATCHES "^(ATM)$") ecbuild_bundle( PROJECT femps GIT "https://github.com/JCSDA/femps.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/JCSDA/fv3-jedi.git" BRANCH feature/ufs UPDATE ) + ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/NOAA-EMC/fv3-jedi.git" BRANCH feature/ufs UPDATE ) ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) add_dependencies(gsw FMS) endif() From de291f7c2a1393b482f8a2c1d982941fe7b24253 Mon Sep 17 00:00:00 2001 From: Mark Potts Date: Wed, 9 Mar 2022 09:49:56 -0500 Subject: [PATCH 12/18] updates for build with ufs --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9cf91f2..a695c5b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,9 +75,11 @@ ExternalProject_Add(ufs-weather-model GIT_REPOSITORY https://github.com/mark-a-potts/ufs-weather-model.git GIT_SUBMODULES_RECURSE TRUE GIT_TAG feature/soca + UPDATE_COMMAND "" SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ufs-weather-model INSTALL_DIR ${DEPEND_LIB_ROOT} CMAKE_ARGS ${UFS_WEATHER_MODEL_ARGS} +# CMAKE_ARGS -DMPI_Fortran_LINK_FLAGS:STRING="-Wl,--copy-dt-needed-entries" -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_coupled,FV3_GFS_v15p2 -DCMAKE_EXE_LINKER_FLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/lib -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DREPRO=on -DOPENMP=ON -DINLINE_POST=OFF -DMULTI_GASES=OFF -DMPI=ON -DAPP=ATM -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} CMAKE_ARGS -DMPI_Fortran_LINK_FLAGS:STRING="-Wl,--copy-dt-needed-entries" -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_coupled,FV3_GFS_v15p2 -DCMAKE_EXE_LINKER_FLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/lib -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DREPRO=on -DOPENMP=ON -DINLINE_POST=OFF -DMULTI_GASES=OFF -DMPI=ON -DAPP=${UFS_APP} -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} INSTALL_COMMAND make install BUILD_ALWAYS FALSE @@ -171,7 +173,7 @@ endif() # If fv3-jedi's current branch is available in fv3-jedi-data repo, that branch will be checked out branch_checkout (REPO_DIR_NAME fv3-jedi-data - BRANCH ${GIT_BRANCH_FUNC} ) + BRANCH feature/ufs ) # same procedure for saber-data find_branch_name(REPO_DIR_NAME saber) From 1772cc39b3fd4cc33e74108eaf1a90d7aa6d2a05 Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Thu, 6 Feb 2025 08:56:04 -0500 Subject: [PATCH 13/18] Updates to build ufs-bundle with ONLY public repos --- CMakeLists.txt | 263 +++++++++++++++++++++------------------- patches/ng-godas.patch | 269 +++++++++++++++++++++++++++++++++++++++++ patches/ufs-wm.patch | 81 +++++++++++++ 3 files changed, 486 insertions(+), 127 deletions(-) create mode 100644 patches/ng-godas.patch create mode 100644 patches/ufs-wm.patch diff --git a/CMakeLists.txt b/CMakeLists.txt index a695c5b..bdfe00f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,18 +1,21 @@ # (C) Copyright 2021-2021 NOAA # ########## -# ufs-jedi-bundle +# ufs-bundle # ########## cmake_minimum_required( VERSION 3.12 FATAL_ERROR ) +include( ExternalProject ) find_package( ecbuild 3.5 REQUIRED HINTS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../ecbuild) -project( ufs-jedi-bundle VERSION 1.1.0 LANGUAGES C CXX Fortran ) +project( ufs-bundle VERSION 1.1.0 LANGUAGES C CXX Fortran ) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include( ecbuild_bundle ) +include( GNUInstallDirs ) +set(CMAKE_INSTALL_LIBDIR "lib") set(DEPEND_LIB_ROOT ${CMAKE_CURRENT_BINARY_DIR}/Depends) list(APPEND CMAKE_PREFIX_PATH ${DEPEND_LIB_ROOT}) @@ -23,168 +26,174 @@ set( ECBUILD_DEFAULT_BUILD_TYPE Release ) # Enable MPI set( ENABLE_MPI ON CACHE BOOL "Compile with MPI") +set( ENABLE_OMP ON CACHE BOOL "Compile with OpenMP") -# Initialize -ecbuild_bundle_initialize() -ecbuild_bundle( PROJECT jedicmake GIT "https://github.com/JCSDA/jedi-cmake.git" BRANCH develop UPDATE ) -include( jedicmake/cmake/Functions/git_functions.cmake ) +# Use external jedi-cmake or build in bundle +include( $ENV{jedi_cmake_ROOT}/share/jedicmake/Functions/git_functions.cmake ) # ECMWF libs # ---------- -option("BUNDLE_SKIP_ECKIT" "Don't build eckit" "ON" ) # Skip eckit build unless user passes -DBUNDLE_SKIP_ECKIT=OFF -option("BUNDLE_SKIP_FCKIT" "Don't build fckit" "ON") # Skip fckit build unless user passes -DBUNDLE_SKIP_FCKIT=OFF -option("BUNDLE_SKIP_ATLAS" "Don't build atlas" "ON") # Skip atlas build unless user passes -DBUNDLE_SKIP_ATLAS=OFF - -ecbuild_bundle( PROJECT eckit GIT "https://github.com/ecmwf/eckit.git" TAG 1.16.0 ) -ecbuild_bundle( PROJECT fckit GIT "https://github.com/ecmwf/fckit.git" TAG 0.9.2 ) -ecbuild_bundle( PROJECT atlas GIT "https://github.com/ecmwf/atlas.git" TAG 0.24.1 ) +# ecbuild_bundle( PROJECT eckit GIT "https://github.com/ecmwf/eckit.git" TAG 1.23.0 ) +# ecbuild_bundle( PROJECT fckit GIT "https://github.com/ecmwf/fckit.git" TAG 0.10.1 ) +# ecbuild_bundle( PROJECT atlas GIT "https://github.com/ecmwf/atlas.git" TAG 0.33.0 ) -# External (required) observation operators -# ------------------------------ -option("BUNDLE_SKIP_CRTM" "Don't build CRTM" "OFF") # Build crtm unless user passes -DBUNDLE_SKIP_CRTM=ON -ecbuild_bundle( PROJECT crtm GIT "https://github.com/JCSDA/crtm.git" BRANCH release/crtm_jedi UPDATE ) +# External FMS +find_package(FMS 2022.04 REQUIRED COMPONENTS R4 R8) # Core JEDI repositories # ---------------------- -ecbuild_bundle( PROJECT oops GIT "https://github.com/JCSDA/oops.git" BRANCH develop UPDATE ) -ecbuild_bundle( PROJECT saber GIT "https://github.com/JCSDA/saber.git" BRANCH develop UPDATE ) -ecbuild_bundle( PROJECT ioda GIT "https://github.com/NOAA-EMC/ioda.git" BRANCH feature/ufs UPDATE) -ecbuild_bundle( PROJECT ufo GIT "https://github.com/JCSDA/ufo.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT oops GIT "https://github.com/jcsda/oops.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT vader GIT "https://github.com/jcsda/vader.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT saber GIT "https://github.com/jcsda/saber.git" BRANCH develop UPDATE ) + + +if(UFS_APP MATCHES "^(ATMAERO)$" OR UFS_APP MATCHES "^(S2S)$" OR UFS_APP MATCHES "^(NG-GODAS)$") + ecbuild_bundle( PROJECT gsw GIT "https://github.com/jcsda/GSW-Fortran.git" BRANCH develop UPDATE ) +endif() + +# Use last known working tag until issues with new pure cmake build are resolved +ecbuild_bundle( PROJECT crtm GIT "https://github.com/JCSDA/CRTMv3.git" TAG v3.1.0-skylabv7 ) # BRANCH develop UPDATE ) + +option(ENABLE_IODA_DATA "Obtain ioda test data from ioda-data repository (vs tarball)" ON) +ecbuild_bundle( PROJECT ioda-data GIT "https://github.com/JCSDA-internal/ioda-data.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT ioda GIT "https://github.com/jcsda/ioda.git" BRANCH develop UPDATE ) + +option(ENABLE_UFO_DATA "Obtain ufo test data from ufo-data repository (vs tarball)" ON) +ecbuild_bundle( PROJECT ufo-data GIT "https://github.com/jcsda-internal/ufo-data.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT ufo GIT "https://github.com/jcsda/ufo.git" BRANCH develop UPDATE ) # Options for building with certain models # ---------------------------------------- set(UFS_APP "ATM" CACHE STRING "Choose the UFS Application") -set_property(CACHE UFS_APP PROPERTY STRINGS "ATM" "NG-GODAS" "S2S") -if(NOT UFS_APP MATCHES "^(ATM|NG-GODAS|S2S)$") - ecbuild_error("Valid options for -DUFS_APP are ATM|NG-GODAS|S2S") +set_property(CACHE UFS_APP PROPERTY STRINGS "ATM" "ATMAERO" "NG-GODAS" "S2S") +if(NOT UFS_APP MATCHES "^(ATM|ATMAERO|NG-GODAS|S2S)$") + ecbuild_error("Valid options for -DUFS_APP are ATM|ATMAERO|NG-GODAS|S2S") endif() ecbuild_info("Building with UFS application: ${UFS_APP}") +set(FV3_FORECAST_MODEL "UFS") +# Warning! The ufs-weather-model configuration below compiles the +# FV3 dycore in double precision. Set FV3_PRECISION accordingly. +# If the ufs-weather-model FV3 dycore precision is changed to +# something else (e.g. via -D32BIT=ON), remember to adjust +# FV3_PRECISION and check if this configuration exists in +# fv3-jedi and fv3-jedi-linearmodel. +set(FV3_PRECISION DOUBLE CACHE STRING "Precision of FV3 core (SINGLE, DOUBLE)") # fv3-jedi linear model # --------------------- -set(FV3_FORECAST_MODEL "UFS") -ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/NOAA-EMC/fv3-jedi-linearmodel.git" BRANCH feature/ufs UPDATE ) - +ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/jcsda/fv3-jedi-linearmodel.git" BRANCH develop UPDATE ) +message(INFO "CMAKE_INSTALL_LIBDIR: ${CMAKE_INSTALL_LIBDIR}") +include_directories(${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_INCLUDEDIR}) include_directories(${DEPEND_LIB_ROOT}/include_r8) -link_directories(${DEPEND_LIB_ROOT}/lib) +link_directories(${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}) + + +# Set variables for UFS clone and build +# Needed to get correct OpenMP link libraries on macOS +set(UFS_CMAKE_EXE_LINKER_FLAGS "-L${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") +find_package(FMS 2023.04 REQUIRED COMPONENTS R4 R8) +if (FV3_PRECISION MATCHES DOUBLE) + add_library(fms ALIAS FMS::fms_r8) +elseif (FV3_PRECISION MATCHES SINGLE) + add_library(fms ALIAS FMS::fms_r4) +endif() +find_package(OpenMP REQUIRED) +if(APPLE) + set(UFS_CMAKE_EXE_LINKER_FLAGS "${UFS_CMAKE_EXE_LINKER_FLAGS} ${OpenMP_libomp_LIBRARY} ${OpenMP_libomp_LIBRARY}") +endif() +message (STATUS "UFS_CMAKE_EXE_LINKER_FLAGS: ${UFS_CMAKE_EXE_LINKER_FLAGS}") + +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(UFS_CMAKE_BUILD_TYPE_FLAG "-DDEBUG=ON") +else() + # MAYBE THIS SHOULD BE EMPTY SO THAT RELEASE IS USED, REPRO ISN'T REALLY SUPPORTED ANYMORE + set(UFS_CMAKE_BUILD_TYPE_FLAG "-DREPRO=ON") +endif() -include( ExternalProject ) + +#set(UFS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ufs-weather-model-cont) +set(UFS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ufs-weather-model) +set(UFS_REPO https://github.com/ufs-community/ufs-weather-model) +set(UFS_TAG "develop" ) +if(UFS_APP MATCHES "^(NG-GODAS)$") + set(patch_command ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/patches/ng-godas.patch && cd && git apply ng-godas.patch) +else() + set(patch_command ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/patches/ufs-wm.patch && cd && git apply ufs-wm.patch) +endif() ExternalProject_Add(ufs-weather-model PREFIX ${CMAKE_CURRENT_BINARY_DIR}/ufs-weather-model - GIT_REPOSITORY https://github.com/mark-a-potts/ufs-weather-model.git - GIT_SUBMODULES_RECURSE TRUE - GIT_TAG feature/soca - UPDATE_COMMAND "" - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ufs-weather-model - INSTALL_DIR ${DEPEND_LIB_ROOT} - CMAKE_ARGS ${UFS_WEATHER_MODEL_ARGS} -# CMAKE_ARGS -DMPI_Fortran_LINK_FLAGS:STRING="-Wl,--copy-dt-needed-entries" -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_coupled,FV3_GFS_v15p2 -DCMAKE_EXE_LINKER_FLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/lib -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DREPRO=on -DOPENMP=ON -DINLINE_POST=OFF -DMULTI_GASES=OFF -DMPI=ON -DAPP=ATM -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} - CMAKE_ARGS -DMPI_Fortran_LINK_FLAGS:STRING="-Wl,--copy-dt-needed-entries" -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_coupled,FV3_GFS_v15p2 -DCMAKE_EXE_LINKER_FLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/lib -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DREPRO=on -DOPENMP=ON -DINLINE_POST=OFF -DMULTI_GASES=OFF -DMPI=ON -DAPP=${UFS_APP} -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} - INSTALL_COMMAND make install - BUILD_ALWAYS FALSE - ) - -ExternalProject_Add(FMS - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/fms - GIT_REPOSITORY https://github.com/jcsda/FMS.git + GIT_REPOSITORY ${UFS_REPO} GIT_SUBMODULES_RECURSE TRUE - GIT_TAG dev/jcsda - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/fms + GIT_TAG ${UFS_TAG} + PATCH_COMMAND ${patch_command} + SOURCE_DIR ${UFS_SOURCE_DIR} + UPDATE_DISCONNECTED ON INSTALL_DIR ${DEPEND_LIB_ROOT} - CMAKE_ARGS -DGFS_PHYS=ON -DCMAKE_C_FLAGS="-fPIC" -DCMAKE_Fortran_FLAGS="-fPIC" -D64BIT=ON -DOPENMP=ON -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} + # DH* 20230316 turn off OpenMP for now ... + CMAKE_ARGS -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR} -DCMAKE_C_FLAGS=-fPIC -DCMAKE_Fortran_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v17_coupled_p8,FV3_GFS_v15p2,FV3_GFS_v17_p8 -DCMAKE_EXE_LINKER_FLAGS=${UFS_CMAKE_EXE_LINKER_FLAGS} -DCMAKE_C_COMPILER=${MPI_C_COMPILER} -DCMAKE_CXX_COMPILER=${MPI_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${MPI_Fortran_COMPILER} -DJEDI_DRIVER=ON -DCMAKE_PREFIX_PATH=${CMAKE_CURRENT_BINARY_DIR}/gsw ${UFS_CMAKE_BUILD_TYPE_FLAG} -DOPENMP=OFF -DINLINE_POST=OFF -DMULTI_GASES=OFF -DMPI=ON -DAPP=${UFS_APP} -DCMAKE_INSTALL_PREFIX=${DEPEND_LIB_ROOT} + # *DH INSTALL_COMMAND make install BUILD_ALWAYS TRUE ) -add_dependencies(ufs-weather-model FMS ) +if(UFS_APP MATCHES "^(ATMAERO)$" OR UFS_APP MATCHES "^(S2S)$" OR UFS_APP MATCHES "^(NG-GODAS)$") + add_dependencies(ufs-weather-model gsw) +endif() add_library( ufs IMPORTED STATIC) -add_library( FMS::fms_r4 IMPORTED STATIC) -add_library( FMS::fms_r8 IMPORTED STATIC) +add_library( ufs_aerosols IMPORTED STATIC) +add_library( aerosols_gridcomp IMPORTED STATIC) +add_library( gocart_gridcomp IMPORTED STATIC) +add_library( ca2g_gridcomp IMPORTED STATIC) +add_library( chem_shared IMPORTED STATIC) +add_library( gocart_process IMPORTED STATIC) +add_library( du2g_gridcomp IMPORTED STATIC) +add_library( ni2g_gridcomp IMPORTED STATIC) +add_library( ss2g_gridcomp IMPORTED STATIC) +add_library( su2g_gridcomp IMPORTED STATIC) +add_library( ga_environment IMPORTED STATIC) +add_library( cdeps IMPORTED STATIC) +add_library( cmeps IMPORTED STATIC) add_library( ccpp IMPORTED STATIC) add_library( stochastic_physics IMPORTED STATIC) add_library( fv3atm IMPORTED STATIC) add_library( ccppphys IMPORTED STATIC) -set_target_properties(FMS::fms_r4 PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libfms_r4.a) -set_target_properties(FMS::fms_r8 PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libfms_r8.a) -set_target_properties(ufs PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libufs.a) -set_target_properties(ccpp PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libccpp_framework.a) -set_target_properties(stochastic_physics PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libstochastic_physics.a) -set_target_properties(fv3atm PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libfv3atm.a) -set_target_properties(ccppphys PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libccpp_physics.a) - -if(UFS_APP MATCHES "^(S2S)$") - # fv3-jedi and associated repositories - # ------------------------------------ - ecbuild_bundle( PROJECT femps GIT "https://github.com/JCSDA/femps.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/NOAA-EMC/fv3-jedi.git" BRANCH feature/ufs-s2s UPDATE ) - ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT soca GIT "https://github.com/JCSDA-internal/soca.git" BRANCH feature/ufs UPDATE ) - add_dependencies(soca ufs-weather-model) - add_dependencies(gsw FMS) +add_library( mom6 IMPORTED STATIC) +set_target_properties( ufs PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libufs.a ) +set_target_properties( ufs_aerosols PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libUFS_Aerosols.a ) +set_target_properties( aerosols_gridcomp PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libAerosol_GridComp.a ) +set_target_properties( gocart_gridcomp PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libGOCART2G_GridComp.a ) +set_target_properties( ca2g_gridcomp PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libCA2G_GridComp.a ) +set_target_properties( chem_shared PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libChem_Shared2G.a ) +set_target_properties( gocart_process PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libProcess_Library.a ) +set_target_properties( du2g_gridcomp PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libDU2G_GridComp.a ) +set_target_properties( ni2g_gridcomp PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libNI2G_GridComp.a ) +set_target_properties( ss2g_gridcomp PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libSS2G_GridComp.a ) +set_target_properties( su2g_gridcomp PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libSU2G_GridComp.a ) +set_target_properties( ga_environment PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libGA_Environment.a ) +set_target_properties( cdeps PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libcdeps.a ) +set_target_properties( cmeps PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libcmeps.a ) +set_target_properties( ccpp PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libccpp_framework.a ) +set_target_properties( stochastic_physics PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libstochastic_physics.a ) +set_target_properties( fv3atm PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libfv3atm.a ) +set_target_properties( ccppphys PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libccpp_physics.a ) +set_target_properties( mom6 PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/${CMAKE_INSTALL_LIBDIR}/libmom6.a ) + +# Additional dependencies that we can't know about because ufs-weather-model is an external project +target_link_libraries( fv3atm INTERFACE fms ) + +ecbuild_bundle( PROJECT femps GIT "https://github.com/jcsda/femps.git" TAG 1.3.0 ) +if(UFS_APP MATCHES "^(ATMAERO)$" OR UFS_APP MATCHES "^(S2S)$" OR UFS_APP MATCHES "^(ATM)$") + option(ENABLE_FV3_JEDI_DATA "Obtain fv3-jedi test data from fv3-jedi-data repository (vs tarball)" ON) + ecbuild_bundle( PROJECT fv3-jedi-data GIT "https://github.com/JCSDA-internal/fv3-jedi-data.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda/fv3-jedi.git" BRANCH develop UPDATE ) elseif(UFS_APP MATCHES "^(NG-GODAS)$") - ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT soca GIT "https://github.com/JCSDA-internal/soca.git" BRANCH feature/ufs UPDATE ) + ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda/soca.git" BRANCH feature/ufs_dom_update UPDATE ) add_dependencies(soca ufs-weather-model) - add_dependencies(gsw FMS) -elseif(UFS_APP MATCHES "^(ATM)$") - ecbuild_bundle( PROJECT femps GIT "https://github.com/JCSDA/femps.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/NOAA-EMC/fv3-jedi.git" BRANCH feature/ufs UPDATE ) - ecbuild_bundle( PROJECT gsw GIT "https://github.com/JCSDA-internal/GSW-Fortran.git" BRANCH develop UPDATE ) - add_dependencies(gsw FMS) -endif() - - -# ioda, ufo, fv3-jedi and saber test data -#---------------------------------------- - -# If IODA branch is being built set GIT_BRANCH_FUNC to IODA's current branch. -# If a tagged version of IODA is being built set GIT_TAG_FUNC to ioda's current tag. In this case, -# IODA test files will be download from UCAR DASH and ioda-data repo will not be cloned. -# When LOCAL_PATH_JEDI_TESTFILES is set to the directory of IODA test files stored -# in a local directory, ioda-data repo will not be cloned - -find_branch_name(REPO_DIR_NAME ioda) -# When LOCAL_PATH_JEDI_TESTFILES is set to the directory of IODA test files stored -# in a local directory, ioda-data repo will not be cloned -if( NOT DEFINED ENV{LOCAL_PATH_JEDI_TESTFILES} AND NOT DEFINED ${GIT_TAG_FUNC} ) - ecbuild_bundle( PROJECT ioda-data GIT "https://github.com/JCSDA-internal/ioda-data.git" BRANCH feature/soca UPDATE ) +else() + message(FATAL_ERROR "ufs-bundle unknown UFS_APP ${UFS_APP}") endif() -# If IODA's current branch is available in ioda-data repo, that branch will be checked out -branch_checkout (REPO_DIR_NAME ioda-data - BRANCH ${GIT_BRANCH_FUNC} ) - -# same procedure for ufo-data -find_branch_name(REPO_DIR_NAME ufo) -if( NOT DEFINED ENV{LOCAL_PATH_JEDI_TESTFILES} AND NOT DEFINED ${GIT_TAG_FUNC} ) - ecbuild_bundle( PROJECT ufo-data GIT "https://github.com/JCSDA-internal/ufo-data.git" BRANCH develop UPDATE ) -endif() - -# If UFO's current branch is available in ufo-data repo, that branch will be checked out -branch_checkout (REPO_DIR_NAME ufo-data - BRANCH ${GIT_BRANCH_FUNC} ) - -# same procedure for fv3-jedi-data -find_branch_name(REPO_DIR_NAME fv3-jedi) -if( NOT DEFINED ENV{LOCAL_PATH_JEDI_TESTFILES} AND NOT DEFINED ${GIT_TAG_FUNC} ) - ecbuild_bundle( PROJECT fv3-jedi-data GIT "https://github.com/JCSDA-internal/fv3-jedi-data.git" BRANCH feature/ufs UPDATE ) -endif() - -# If fv3-jedi's current branch is available in fv3-jedi-data repo, that branch will be checked out -branch_checkout (REPO_DIR_NAME fv3-jedi-data - BRANCH feature/ufs ) - -# same procedure for saber-data -find_branch_name(REPO_DIR_NAME saber) -if( NOT DEFINED ENV{LOCAL_PATH_JEDI_TESTFILES} AND NOT DEFINED ${GIT_TAG_FUNC} ) - ecbuild_bundle( PROJECT saber-data GIT "https://github.com/JCSDA-internal/saber-data.git" BRANCH develop UPDATE ) -endif() - -# If saber's current branch is available in saber-data repo, that branch will be checked out -branch_checkout (REPO_DIR_NAME saber-data - BRANCH ${GIT_BRANCH_FUNC} ) - # Build Doxygen documentation # --------------------------- option(BUILD_UFSJEDI_BUNDLE_DOC "Build documentation" OFF) diff --git a/patches/ng-godas.patch b/patches/ng-godas.patch new file mode 100644 index 0000000..e89727f --- /dev/null +++ b/patches/ng-godas.patch @@ -0,0 +1,269 @@ +diff --git a/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_cap.F90 b/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_cap.F90 +index 2fdd6f59f..1dcb495c4 100644 +--- a/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_cap.F90 ++++ b/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_cap.F90 +@@ -795,6 +795,10 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) + call fld_list_add(fldsFrOcn_num, fldsFrOcn, "So_dhdy" , "will provide") + call fld_list_add(fldsFrOcn_num, fldsFrOcn, "Fioo_q" , "will provide") + call fld_list_add(fldsFrOcn_num, fldsFrOcn, "So_bldepth" , "will provide") ++ call fld_list_add(fldsFrOcn_num, fldsFrOcn, "tocn" , "will provide") ++ call fld_list_add(fldsFrOcn_num, fldsFrOcn, "socn" , "will provide") ++ call fld_list_add(fldsFrOcn_num, fldsFrOcn, "uocn" , "will provide") ++ call fld_list_add(fldsFrOcn_num, fldsFrOcn, "vocn" , "will provide") + + do n = 1,fldsToOcn_num + call NUOPC_Advertise(importState, standardName=fldsToOcn(n)%stdname, name=fldsToOcn(n)%shortname, rc=rc) +@@ -1059,10 +1063,10 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc) + end do + + ! realize the import and export fields using the mesh +- call MOM_RealizeFields(importState, fldsToOcn_num, fldsToOcn, "Ocn import", mesh=Emesh, rc=rc) ++ call MOM_RealizeFields(importState, fldsToOcn_num, fldsToOcn, "Ocn import", mesh=Emesh, ke=ocean_grid%ke, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + +- call MOM_RealizeFields(exportState, fldsFrOcn_num, fldsFrOcn, "Ocn export", mesh=Emesh, rc=rc) ++ call MOM_RealizeFields(exportState, fldsFrOcn_num, fldsFrOcn, "Ocn export", mesh=Emesh, ke=ocean_grid%ke, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + + !--------------------------------- +@@ -2064,7 +2068,7 @@ subroutine State_SetScalar(value, scalar_id, State, mytask, scalar_name, scalar_ + end subroutine State_SetScalar + + !> Realize the import and export fields using either a grid or a mesh. +-subroutine MOM_RealizeFields(state, nfields, field_defs, tag, grid, mesh, rc) ++subroutine MOM_RealizeFields(state, nfields, field_defs, tag, grid, mesh, ke, rc) + type(ESMF_State) , intent(inout) :: state !< ESMF_State object for + !! import/export fields. + integer , intent(in) :: nfields !< Number of fields. +@@ -2073,6 +2077,7 @@ subroutine MOM_RealizeFields(state, nfields, field_defs, tag, grid, mesh, rc) + character(len=*) , intent(in) :: tag !< Import or export. + type(ESMF_Grid) , intent(in), optional :: grid!< ESMF grid. + type(ESMF_Mesh) , intent(in), optional :: mesh!< ESMF mesh. ++ integer , intent(in), optional :: ke !< vertical levels + integer , intent(inout) :: rc !< Return code. + + ! local variables +@@ -2121,7 +2126,16 @@ subroutine MOM_RealizeFields(state, nfields, field_defs, tag, grid, mesh, rc) + + else if (present(mesh)) then + +- if (field_defs(i)%ungridded_lbound > 0 .and. field_defs(i)%ungridded_ubound > 0) then ++ if((field_defs(i)%shortname == 'tocn').or.(field_defs(i)%shortname == 'socn').or. & ++ (field_defs(i)%shortname == 'vocn').or.(field_defs(i)%shortname == 'uocn')) then ++ field = ESMF_FieldCreate(mesh=mesh, typekind=ESMF_TYPEKIND_R8, meshloc=ESMF_MESHLOC_ELEMENT, & ++ ungriddedLBound=(/1/), ungriddedUBound=(/ke/),name=field_defs(i)%shortname, rc=rc) ++ if (ChkErr(rc,__LINE__,u_FILE_u)) return ++ ! initialize fldptr to zero ++ call ESMF_FieldGet(field, farrayPtr=fldptr2d, rc=rc) ++ if (ChkErr(rc,__LINE__,u_FILE_u)) return ++ fldptr2d(:,:) = 0.0 ++ else if (field_defs(i)%ungridded_lbound > 0 .and. field_defs(i)%ungridded_ubound > 0) then + field = ESMF_FieldCreate(mesh=mesh, typekind=ESMF_TYPEKIND_R8, meshloc=ESMF_MESHLOC_ELEMENT, & + name=field_defs(i)%shortname, ungriddedLbound=(/field_defs(i)%ungridded_lbound/), & + ungriddedUbound=(/field_defs(i)%ungridded_ubound/), gridToFieldMap=(/2/), rc=rc) +diff --git a/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_cap_methods.F90 b/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_cap_methods.F90 +index f41c98b11..d2abb2ce1 100644 +--- a/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_cap_methods.F90 ++++ b/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_cap_methods.F90 +@@ -21,6 +21,7 @@ use MOM_surface_forcing_nuopc, only: ice_ocean_boundary_type + use MOM_grid, only: ocean_grid_type + use MOM_domains, only: pass_var + use mpp_domains_mod, only: mpp_get_compute_domain ++use MOM_variables, only: thermo_var_ptrs + + ! By default make data private + implicit none; private +@@ -38,6 +39,7 @@ interface State_getImport + end interface + + private :: State_setExport ++private :: State3d_setExport + + !> Get field pointer + interface State_GetFldPtr +@@ -380,7 +382,7 @@ subroutine mom_export(ocean_public, ocean_grid, ocean_state, exportState, clock, + integer :: isc, iec, jsc, jec ! indices + integer :: iloc, jloc ! indices + integer :: iglob, jglob ! indices +- integer :: n ++ integer :: n, k + integer :: icount + real :: slp_L, slp_R, slp_C + real :: slope, u_min, u_max +@@ -525,6 +527,46 @@ subroutine mom_export(ocean_public, ocean_grid, ocean_state, exportState, clock, + if (ChkErr(rc,__LINE__,u_FILE_u)) return + endif + ++ ! ------- ++ ! 3D Temperature ++ ! ------- ++ call ESMF_StateGet(exportState, 'tocn', itemFlag, rc=rc) ++ if (itemFlag /= ESMF_STATEITEM_NOTFOUND) then ++ call State3d_SetExport(exportState, 'tocn', & ++ isc, iec, jsc, jec, ocean_grid%ke, ocean_state%MOM_CSp%T, ocean_grid, rc=rc) ++ if (ChkErr(rc,__LINE__,u_FILE_u)) return ++ endif ++ ++ ! ------- ++ ! 3D Salinity ++ ! ------- ++ call ESMF_StateGet(exportState, 'socn', itemFlag, rc=rc) ++ if (itemFlag /= ESMF_STATEITEM_NOTFOUND) then ++ call State3d_SetExport(exportState, 'socn', & ++ isc, iec, jsc, jec, ocean_grid%ke, ocean_state%MOM_CSp%S, ocean_grid, rc=rc) ++ if (ChkErr(rc,__LINE__,u_FILE_u)) return ++ endif ++ ++ ! ------- ++ ! 3D U velocity ++ ! ------- ++ call ESMF_StateGet(exportState, 'uocn', itemFlag, rc=rc) ++ if (itemFlag /= ESMF_STATEITEM_NOTFOUND) then ++ call State3d_SetExport(exportState, 'uocn', & ++ isc, iec, jsc, jec, ocean_grid%ke, ocean_state%MOM_CSp%u, ocean_grid, rc=rc) ++ if (ChkErr(rc,__LINE__,u_FILE_u)) return ++ endif ++ ++ ! ------- ++ ! 3D V velocity ++ ! ------- ++ call ESMF_StateGet(exportState, 'vocn', itemFlag, rc=rc) ++ if (itemFlag /= ESMF_STATEITEM_NOTFOUND) then ++ call State3d_SetExport(exportState, 'vocn', & ++ isc, iec, jsc, jec, ocean_grid%ke, ocean_state%MOM_CSp%v, ocean_grid, rc=rc) ++ if (ChkErr(rc,__LINE__,u_FILE_u)) return ++ endif ++ + !---------------- + ! Sea-surface zonal and meridional slopes + !---------------- +@@ -664,7 +706,7 @@ subroutine State_GetFldPtr_2d(State, fldname, fldptr, rc) + ! local variables + type(ESMF_Field) :: lfield + integer :: lrc +- character(len=*),parameter :: subname='(MOM_cap:State_GetFldPtr)' ++ character(len=*),parameter :: subname='(MOM_cap:State_GetFldPtr2d)' + + call ESMF_StateGet(State, itemName=trim(fldname), field=lfield, rc=lrc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return +@@ -913,6 +955,55 @@ subroutine State_SetExport(state, fldname, isc, iec, jsc, jec, input, ocean_grid + + end subroutine State_SetExport + ++!> Map input array to export state ++subroutine State3d_SetExport(state, fldname, isc, iec, jsc, jec, ke, input, ocean_grid, areacor, rc) ++ type(ESMF_State) , intent(inout) :: state !< ESMF state ++ character(len=*) , intent(in) :: fldname !< Field name ++ integer , intent(in) :: isc !< The start i-index of cell centers within ++ !! the computational domain ++ integer , intent(in) :: iec !< The end i-index of cell centers within the ++ !! computational domain ++ integer , intent(in) :: jsc !< The start j-index of cell centers within ++ !! the computational domain ++ integer , intent(in) :: jec !< The end j-index of cell centers within ++ !! the computational domain ++ integer , intent(in) :: ke !< The number of vertical levels ++ real (ESMF_KIND_R8) , intent(in) :: input(isc:iec,jsc:jec,1:ke)!< Input 3D array ++ type(ocean_grid_type) , intent(in) :: ocean_grid !< Ocean horizontal grid ++ real (ESMF_KIND_R8), optional, intent(in) :: areacor(:) !< flux area correction factors ++ !! applicable to meshes ++ integer , intent(out) :: rc !< Return code ++ ++ ! local variables ++ type(ESMF_StateItem_Flag) :: itemFlag ++ integer :: n, i, j, i1, j1, ig,jg, k, ii, jj ++ integer :: lbnd1,lbnd2 ++ real(ESMF_KIND_R8), pointer :: dataPtr2d(:,:) ++ character(len=*) , parameter :: subname='(MOM_cap_methods:state_setexport)' ++ ! ---------------------------------------------- ++ ++ rc = ESMF_SUCCESS ++ ++ ! Indexing notes: ++ ! input array from "ocean_public" uses local indexing without halos ++ ! mask from "ocean_grid" uses local indexing with halos ++ ++ call ESMF_StateGet(State, trim(fldname), itemFlag, rc=rc) ++ if (itemFlag /= ESMF_STATEITEM_NOTFOUND) then ++ call state_getfldptr(State, trim(fldname), dataptr2d, rc) ++ if (ChkErr(rc,__LINE__,u_FILE_u)) return ++ do k=1,ke ++ do j=jsc,jec ++ jj = j - jsc ++ do i=isc,iec ++ ii = i - isc + 1 ++ dataptr2d(jj*(iec-isc + 1)+ii,k) = input(i,j,k) ++ enddo ++ enddo ++ enddo ++ endif ++end subroutine State3d_SetExport ++ + !> This subroutine writes the minimum, maximum and sum of each field + !! contained within an ESMF state. + subroutine state_diagnose(State, string, rc) +diff --git a/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_ocean_model_nuopc.F90 b/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_ocean_model_nuopc.F90 +index 04b60b0d3..e85e18d3b 100644 +--- a/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_ocean_model_nuopc.F90 ++++ b/MOM6-interface/MOM6/config_src/drivers/nuopc_cap/mom_ocean_model_nuopc.F90 +@@ -132,7 +132,7 @@ end type ocean_public_type + !> The ocean_state_type contains all information about the state of the ocean, + !! with a format that is private so it can be readily changed without disrupting + !! other coupled components. +-type, public :: ocean_state_type ; private ++type, public :: ocean_state_type ; + ! This type is private, and can therefore vary between different ocean models. + logical :: is_ocean_PE = .false. !< True if this is an ocean PE. + type(time_type) :: Time !< The ocean model's time and master clock. +diff --git a/MOM6-interface/MOM6/src/core/MOM.F90 b/MOM6-interface/MOM6/src/core/MOM.F90 +index 89d1ee200..fda9720f5 100644 +--- a/MOM6-interface/MOM6/src/core/MOM.F90 ++++ b/MOM6-interface/MOM6/src/core/MOM.F90 +@@ -183,7 +183,7 @@ end type MOM_diag_IDs + + !> Control structure for the MOM module, including the variables that describe + !! the state of the ocean. +-type, public :: MOM_control_struct ; private ++type, public :: MOM_control_struct ; + real ALLOCABLE_, dimension(NIMEM_,NJMEM_,NKMEM_) :: & + h, & !< layer thickness [H ~> m or kg m-2] + T, & !< potential temperature [C ~> degC] +diff --git a/MOM6-interface/MOM6/src/framework/MOM_horizontal_regridding.F90 b/MOM6-interface/MOM6/src/framework/MOM_horizontal_regridding.F90 +index 34d0b73cb..b7c656d51 100644 +--- a/MOM6-interface/MOM6/src/framework/MOM_horizontal_regridding.F90 ++++ b/MOM6-interface/MOM6/src/framework/MOM_horizontal_regridding.F90 +@@ -26,7 +26,7 @@ implicit none ; private + + #include + +-public :: horiz_interp_and_extrap_tracer, myStats, homogenize_field ++public :: horiz_interp_and_extrap_tracer, myStats, homogenize_field, meshgrid, fill_miss_2d + + !> Extrapolate and interpolate data + interface horiz_interp_and_extrap_tracer +diff --git a/MOM6-interface/MOM6/pkg/GSW-Fortran/modules/gsw_mod_toolbox.f90 b/MOM6-interface/MOM6/pkg/GSW-Fortran/modules/gsw_mod_toolbox.f90 +index a8012e1..9ae2f7d 100644 +--- a/MOM6-interface/MOM6/pkg/GSW-Fortran/modules/gsw_mod_toolbox.f90 ++++ b/MOM6-interface/MOM6/pkg/GSW-Fortran/modules/gsw_mod_toolbox.f90 +@@ -94,6 +94,7 @@ public :: gsw_melting_seaice_equilibrium_sa_ct_ratio_poly + public :: gsw_melting_seaice_into_seawater + public :: gsw_melting_seaice_sa_ct_ratio + public :: gsw_melting_seaice_sa_ct_ratio_poly ++public :: gsw_mlp + public :: gsw_nsquared + public :: gsw_pot_enthalpy_from_pt_ice + public :: gsw_pot_enthalpy_from_pt_ice_poly +@@ -842,6 +843,13 @@ interface + real (r8) :: gsw_melting_seaice_sa_ct_ratio_poly + end function gsw_melting_seaice_sa_ct_ratio_poly + ++ pure function gsw_mlp (sa, ct, p) ++ use gsw_mod_kinds ++ implicit none ++ real (r8), intent(in) :: sa(:), ct(:), p(:) ++ real (r8) :: gsw_mlp ++ end function gsw_mlp ++ + pure subroutine gsw_nsquared (sa, ct, p, lat, n2, p_mid) + use gsw_mod_kinds + implicit none diff --git a/patches/ufs-wm.patch b/patches/ufs-wm.patch new file mode 100644 index 0000000..e8c256e --- /dev/null +++ b/patches/ufs-wm.patch @@ -0,0 +1,81 @@ +diff --git a/FV3/atmos_cubed_sphere/model/fv_control.F90 b/FV3/atmos_cubed_sphere/model/fv_control.F90 +index bf111af..574e233 100644 +--- a/FV3/atmos_cubed_sphere/model/fv_control.F90 ++++ b/FV3/atmos_cubed_sphere/model/fv_control.F90 +@@ -457,6 +457,7 @@ module fv_control_mod + allocate(grids_on_this_pe(ngrids)) + grids_on_this_pe(:) = .false. + ++ grid_pes(1) = npes + do n=1,ngrids + + if (ngrids == 1 .or. grid_pes(n) == 0) then +diff --git a/FV3/module_fcst_grid_comp.F90 b/FV3/module_fcst_grid_comp.F90 +index 27cdf95..49825d7 100644 +--- a/FV3/module_fcst_grid_comp.F90 ++++ b/FV3/module_fcst_grid_comp.F90 +@@ -575,7 +575,7 @@ if (rc /= ESMF_SUCCESS) write(0,*) 'rc=',rc,__FILE__,__LINE__; if(ESMF_LogFoundE + type(ESMF_DistGrid) :: distgrid + integer :: jsc, jec, isc, iec, nlev + type(domain2D) :: domain +- integer :: n, fcstNpes, tmpvar, k ++ integer :: n, fcstNpes, tmpvar, k, ii + logical :: freq_restart, fexist + integer, allocatable, dimension(:) :: isl, iel, jsl, jel + integer, allocatable, dimension(:,:,:) :: deBlockList +@@ -600,7 +600,7 @@ if (rc /= ESMF_SUCCESS) write(0,*) 'rc=',rc,__FILE__,__LINE__; if(ESMF_LogFoundE + Time_restart, Time_step_restart + type(time_type) :: iautime + integer :: io_unit, calendar_type_res, date_res(6), date_init_res(6) +- ++ integer,allocatable :: pelistZero(:) + integer,allocatable :: grid_number_on_all_pets(:) + logical,allocatable :: is_moving_on_all_pets(:), is_moving(:) + character(len=7) :: nest_suffix +@@ -865,8 +865,9 @@ if (rc /= ESMF_SUCCESS) write(0,*) 'rc=',rc,__FILE__,__LINE__; if(ESMF_LogFoundE + + pelist => null() + call atmos_model_get_nth_domain_info(n, layout, nx, ny, pelist) +- call ESMF_VMBroadcast(vm, bcstData=layout, count=2, rootPet=pelist(1), rc=rc); ESMF_ERR_ABORT(rc) +- ++! call ESMF_VMBroadcast(vm, bcstData=layout, count=2, rootPet=pelist(1), rc=rc); ESMF_ERR_ABORT(rc) ++ call ESMF_VMBroadcast(vm, bcstData=layout, count=2, rootPet=0, rc=rc); ESMF_ERR_ABORT(rc) ++ write(6,*) 'HEY, mype, mpp_pe and petlist are',mype, mpp_pe(), pelist + if (n==1) then + ! on grid==1 (top level parent) determine if the domain is global or regional + top_parent_is_global = .true. +@@ -875,11 +876,16 @@ if (rc /= ESMF_SUCCESS) write(0,*) 'rc=',rc,__FILE__,__LINE__; if(ESMF_LogFoundE + endif + call mpi_bcast(top_parent_is_global, 1, MPI_LOGICAL, 0, fcst_mpi_comm, rc) + endif +- ++ + if (n==1 .and. top_parent_is_global) then +- +- fcstGridComp(n) = ESMF_GridCompCreate(name="global", petList=pelist, rc=rc); ESMF_ERR_ABORT(rc) +- ++ allocate(pelistZero(fcst_ntasks)) ++ do ii=1,fcst_ntasks ++ pelistZero(ii) = ii - 1 ++ enddo ++ write(6,*) 'HEY, mpp_pe and petlistZero are',mpp_pe(), pelistZero,fcst_ntasks ++ fcstGridComp(n) = ESMF_GridCompCreate(name="global", petList=pelistZero, rc=rc); ESMF_ERR_ABORT(rc) ++! fcstGridComp(n) = ESMF_GridCompCreate(name="global", petList=pelist, rc=rc); ESMF_ERR_ABORT(rc) ++ deallocate(pelistZero) + call ESMF_InfoGetFromHost(fcstGridComp(n), info=info, rc=rc); ESMF_ERR_ABORT(rc) + call ESMF_InfoSet(info, key="layout", values=layout, rc=rc); ESMF_ERR_ABORT(rc) + call ESMF_InfoSet(info, key="tilesize", value=Atmos%mlon, rc=rc); ESMF_ERR_ABORT(rc) +diff --git a/stochastic_physics/mpi_wrapper.F90 b/stochastic_physics/mpi_wrapper.F90 +index 7ccd5a7..8961474 100644 +--- a/stochastic_physics/mpi_wrapper.F90 ++++ b/stochastic_physics/mpi_wrapper.F90 +@@ -81,7 +81,8 @@ contains + integer, intent(in) :: mpiroot + type(MPI_Comm), intent(in) :: mpicomm + if (initialized) return +- root = mpiroot ++ root = 0 ++! root = mpiroot + comm = mpicomm + call MPI_COMM_RANK(comm, mype, ierror) + call MPI_COMM_SIZE(comm, npes, ierror) From a9114b71b515436181a4edacb6c8f6cfe8489580 Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Thu, 6 Feb 2025 09:07:44 -0500 Subject: [PATCH 14/18] Deleted outdated README and removed stdout from patch --- README | 19 ------------------- patches/ufs-wm.patch | 2 -- 2 files changed, 21 deletions(-) delete mode 100644 README diff --git a/README b/README deleted file mode 100644 index 4008ced..0000000 --- a/README +++ /dev/null @@ -1,19 +0,0 @@ -2/14/2022 -While awaiting PRs to be approved for fv3-jedi-lm and fv3-jedi repos, this branch is designed to pull from the NOAA-EMC forks of those repos. -This build will build a special version of FMS (currently ahead of the jcsda release branch) and of the UFS. - -To build on Orion with Intel-- -module use /work/noaa/gsd-hpcs/dheinzel/jcsda/spack-stack-20220124/envs_orion/install/modulefiles/Core; module use /home/dheinzel/test_modulefiles/core -module load stack-compiler-intel intel-mpi esmf eckit w3nco gsl-lite hdf5 fckit sp atlas netcdf-c cmake eigen udunits netcdf-fortran bacio ecbuild parallelio python udunits -ecbuild -DCMAKE_C_COMPILER=mpiicc -DCMAKE_CXX_COMPILER=mpiicpc -DCMAKE_Fortran_COMPILER=mpiifort -DMPI_CXX_LINK_FLAGS:STRING="-Wl,--copy-dt-needed-entries" -DUFS_APP=NG-GODAS -DCMAKE_BUILD_TYPE=DEBUG .. -make -j 8 - -To build on Hera with gnu-- - -module use /scratch1/NCEPDEV/da/Mark.Potts/hpc-modules/modulefiles/stack -module use /scratch1/NCEPDEV/da/Mark.Potts/spack/share/spack/modules/linux-centos7-skylake_avx512 -module load hpc hpc-gnu hpc-openmpi esmf/8_2_0 hdf5/1.10.6 netcdf/4.7.4 eckit fckit cmake gsl-lite bacio nemsio sigio sfcio w3emc w3nco sp pio eigen boost-headers ecbuild atlas udunits openblas -ecbuild -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpif90 -DMPI_CXX_LINK_FLAGS:STRING="-Wl,--copy-dt-needed-entries" -DUFS_APP=NG-GODAS -DCMAKE_BUILD_TYPE=DEBUG .. -make -j 8 - -Note that the "-DUFS_APP=NG-GODAS" can be replaced with "-DUFS_APP=S2S" or "-DUFS_APP=ATM", depending on the configuration desired. diff --git a/patches/ufs-wm.patch b/patches/ufs-wm.patch index e8c256e..c60f027 100644 --- a/patches/ufs-wm.patch +++ b/patches/ufs-wm.patch @@ -40,7 +40,6 @@ index 27cdf95..49825d7 100644 - +! call ESMF_VMBroadcast(vm, bcstData=layout, count=2, rootPet=pelist(1), rc=rc); ESMF_ERR_ABORT(rc) + call ESMF_VMBroadcast(vm, bcstData=layout, count=2, rootPet=0, rc=rc); ESMF_ERR_ABORT(rc) -+ write(6,*) 'HEY, mype, mpp_pe and petlist are',mype, mpp_pe(), pelist if (n==1) then ! on grid==1 (top level parent) determine if the domain is global or regional top_parent_is_global = .true. @@ -58,7 +57,6 @@ index 27cdf95..49825d7 100644 + do ii=1,fcst_ntasks + pelistZero(ii) = ii - 1 + enddo -+ write(6,*) 'HEY, mpp_pe and petlistZero are',mpp_pe(), pelistZero,fcst_ntasks + fcstGridComp(n) = ESMF_GridCompCreate(name="global", petList=pelistZero, rc=rc); ESMF_ERR_ABORT(rc) +! fcstGridComp(n) = ESMF_GridCompCreate(name="global", petList=pelist, rc=rc); ESMF_ERR_ABORT(rc) + deallocate(pelistZero) From a3359b579f233824815e6facce2024032f65a4fa Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Thu, 20 Feb 2025 14:52:32 -0500 Subject: [PATCH 15/18] reverted patch --- patches/ufs-wm.patch | 2 ++ 1 file changed, 2 insertions(+) diff --git a/patches/ufs-wm.patch b/patches/ufs-wm.patch index c60f027..e8c256e 100644 --- a/patches/ufs-wm.patch +++ b/patches/ufs-wm.patch @@ -40,6 +40,7 @@ index 27cdf95..49825d7 100644 - +! call ESMF_VMBroadcast(vm, bcstData=layout, count=2, rootPet=pelist(1), rc=rc); ESMF_ERR_ABORT(rc) + call ESMF_VMBroadcast(vm, bcstData=layout, count=2, rootPet=0, rc=rc); ESMF_ERR_ABORT(rc) ++ write(6,*) 'HEY, mype, mpp_pe and petlist are',mype, mpp_pe(), pelist if (n==1) then ! on grid==1 (top level parent) determine if the domain is global or regional top_parent_is_global = .true. @@ -57,6 +58,7 @@ index 27cdf95..49825d7 100644 + do ii=1,fcst_ntasks + pelistZero(ii) = ii - 1 + enddo ++ write(6,*) 'HEY, mpp_pe and petlistZero are',mpp_pe(), pelistZero,fcst_ntasks + fcstGridComp(n) = ESMF_GridCompCreate(name="global", petList=pelistZero, rc=rc); ESMF_ERR_ABORT(rc) +! fcstGridComp(n) = ESMF_GridCompCreate(name="global", petList=pelist, rc=rc); ESMF_ERR_ABORT(rc) + deallocate(pelistZero) From b783f3a5167b4f8b9fba88b30d0f1e71e3959265 Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Thu, 5 Jun 2025 12:43:33 +0000 Subject: [PATCH 16/18] updated patch --- patches/ufs-wm.patch | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/patches/ufs-wm.patch b/patches/ufs-wm.patch index e8c256e..f39bdda 100644 --- a/patches/ufs-wm.patch +++ b/patches/ufs-wm.patch @@ -1,7 +1,7 @@ -diff --git a/FV3/atmos_cubed_sphere/model/fv_control.F90 b/FV3/atmos_cubed_sphere/model/fv_control.F90 +diff --git a/FV3/fv3/atmos_cubed_sphere/model/fv_control.F90 b/FV3/fv3/atmos_cubed_sphere/model/fv_control.F90 index bf111af..574e233 100644 ---- a/FV3/atmos_cubed_sphere/model/fv_control.F90 -+++ b/FV3/atmos_cubed_sphere/model/fv_control.F90 +--- a/FV3/fv3/atmos_cubed_sphere/model/fv_control.F90 ++++ b/FV3/fv3/atmos_cubed_sphere/model/fv_control.F90 @@ -457,6 +457,7 @@ module fv_control_mod allocate(grids_on_this_pe(ngrids)) grids_on_this_pe(:) = .false. @@ -10,10 +10,10 @@ index bf111af..574e233 100644 do n=1,ngrids if (ngrids == 1 .or. grid_pes(n) == 0) then -diff --git a/FV3/module_fcst_grid_comp.F90 b/FV3/module_fcst_grid_comp.F90 +diff --git a/FV3/fv3/module_fcst_grid_comp.F90 b/FV3/fv3/module_fcst_grid_comp.F90 index 27cdf95..49825d7 100644 ---- a/FV3/module_fcst_grid_comp.F90 -+++ b/FV3/module_fcst_grid_comp.F90 +--- a/FV3/fv3/module_fcst_grid_comp.F90 ++++ b/FV3/fv3/module_fcst_grid_comp.F90 @@ -575,7 +575,7 @@ if (rc /= ESMF_SUCCESS) write(0,*) 'rc=',rc,__FILE__,__LINE__; if(ESMF_LogFoundE type(ESMF_DistGrid) :: distgrid integer :: jsc, jec, isc, iec, nlev From c5a8b98cc07fda6134fa2ed1bfbed826f35a4b00 Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Thu, 5 Jun 2025 15:41:52 +0000 Subject: [PATCH 17/18] moved oops and fv3-jedi to noaa-epic for sharing --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ddb1f3a..19e4426 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,7 +42,7 @@ find_package(FMS 2022.04 REQUIRED COMPONENTS R4 R8) # Core JEDI repositories # ---------------------- -ecbuild_bundle( PROJECT oops GIT "https://github.com/jcsda/oops.git" BRANCH develop UPDATE ) +ecbuild_bundle( PROJECT oops GIT "https://github.com/noaa-epic/oops.git" BRANCH feature/Rtranspose UPDATE ) ecbuild_bundle( PROJECT vader GIT "https://github.com/jcsda/vader.git" BRANCH develop UPDATE ) ecbuild_bundle( PROJECT saber GIT "https://github.com/jcsda/saber.git" BRANCH develop UPDATE ) @@ -185,7 +185,7 @@ ecbuild_bundle( PROJECT femps GIT "https://github.com/jcsda/femps.git" TAG if(UFS_APP MATCHES "^(ATMAERO)$" OR UFS_APP MATCHES "^(S2S)$" OR UFS_APP MATCHES "^(ATM)$") option(ENABLE_FV3_JEDI_DATA "Obtain fv3-jedi test data from fv3-jedi-data repository (vs tarball)" ON) ecbuild_bundle( PROJECT fv3-jedi-data GIT "https://github.com/JCSDA-internal/fv3-jedi-data.git" BRANCH develop UPDATE ) - ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda/fv3-jedi.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/noaa-epic/fv3-jedi.git" BRANCH feature/Rtranspose UPDATE ) elseif(UFS_APP MATCHES "^(NG-GODAS)$") ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda/soca.git" BRANCH feature/ufs_dom_update UPDATE ) add_dependencies(soca ufs-weather-model) From bd701f554105b3d51330482690be0f4048cf0aa7 Mon Sep 17 00:00:00 2001 From: Mark A Potts Date: Fri, 6 Jun 2025 11:04:50 +0000 Subject: [PATCH 18/18] updated fv3-jedi-data branch --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 19e4426..b34c6f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -184,7 +184,7 @@ target_link_libraries( fv3atm INTERFACE fms ) ecbuild_bundle( PROJECT femps GIT "https://github.com/jcsda/femps.git" TAG 1.3.0 ) if(UFS_APP MATCHES "^(ATMAERO)$" OR UFS_APP MATCHES "^(S2S)$" OR UFS_APP MATCHES "^(ATM)$") option(ENABLE_FV3_JEDI_DATA "Obtain fv3-jedi test data from fv3-jedi-data repository (vs tarball)" ON) - ecbuild_bundle( PROJECT fv3-jedi-data GIT "https://github.com/JCSDA-internal/fv3-jedi-data.git" BRANCH develop UPDATE ) + ecbuild_bundle( PROJECT fv3-jedi-data GIT "https://github.com/JCSDA-internal/fv3-jedi-data.git" BRANCH feature/public UPDATE ) ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/noaa-epic/fv3-jedi.git" BRANCH feature/Rtranspose UPDATE ) elseif(UFS_APP MATCHES "^(NG-GODAS)$") ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda/soca.git" BRANCH feature/ufs_dom_update UPDATE )