diff --git a/.gitmodules b/.gitmodules index ab72b60a64..c256cfd9c3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,23 +1,31 @@ [submodule "FV3"] path = FV3 - url = https://github.com/NOAA-EMC/fv3atm - branch = develop + #url = https://github.com/NOAA-EMC/fv3atm + #branch = develop + url = https://github.com/DusanJovic-NOAA/fv3atm + branch = remove_findesmf [submodule "WW3"] path = WW3 - url = https://github.com/NOAA-EMC/WW3 - branch = dev/ufs-weather-model + #url = https://github.com/NOAA-EMC/WW3 + #branch = dev/ufs-weather-model + url = https://github.com/DusanJovic-NOAA/WW3 + branch = remove_findesmf [submodule "stochastic_physics"] path = stochastic_physics url = https://github.com/NOAA-PSL/stochastic_physics branch = master [submodule "CMakeModules"] path = CMakeModules - url = https://github.com/NOAA-EMC/CMakeModules - branch = develop + #url = https://github.com/NOAA-EMC/CMakeModules + #branch = develop + url = https://github.com/climbfuji/CMakeModules + branch = feature/remove_findesmf [submodule "CMEPS"] path = CMEPS-interface/CMEPS - url = https://github.com/NOAA-EMC/CMEPS - branch = emc/develop + #url = https://github.com/NOAA-EMC/CMEPS + #branch = emc/develop + url = https://github.com/DusanJovic-NOAA/CMEPS + branch = remove_findesmf [submodule "HYCOM"] path = HYCOM-interface/HYCOM url = https://github.com/NOAA-EMC/HYCOM-src @@ -32,20 +40,26 @@ branch = develop [submodule "CDEPS"] path = CDEPS-interface/CDEPS - url = https://github.com/NOAA-EMC/CDEPS - branch = develop + #url = https://github.com/NOAA-EMC/CDEPS + #branch = develop + url = https://github.com/DusanJovic-NOAA/CDEPS + branch = remove_findesmf [submodule "GOCART"] path = GOCART url = https://github.com/GEOS-ESM/GOCART branch = develop [submodule "AQM"] path = AQM - url = https://github.com/NOAA-EMC/AQM - branch = develop + #url = https://github.com/NOAA-EMC/AQM + #branch = develop + url = https://github.com/DusanJovic-NOAA/AQM + branch = remove_findesmf [submodule "NOAHMP"] path = NOAHMP-interface/noahmp - url = https://github.com/NOAA-EMC/noahmp - branch = develop + #url = https://github.com/NOAA-EMC/noahmp + #branch = develop + url = https://github.com/DusanJovic-NOAA/noahmp + branch = remove_findesmf [submodule "LM4-driver"] path = LM4-driver url = https://github.com/NOAA-GFDL/LM4-NUOPC-driver diff --git a/AQM b/AQM index 37cbb7d684..fc2cd7c887 160000 --- a/AQM +++ b/AQM @@ -1 +1 @@ -Subproject commit 37cbb7d6840ae7515a9a8f0dfd4d89461b3396d1 +Subproject commit fc2cd7c88703bcd2eb3f8ad2f71721c1fa01f5f9 diff --git a/CDEPS-interface/CDEPS b/CDEPS-interface/CDEPS index 1f9eaaa142..50c63f586a 160000 --- a/CDEPS-interface/CDEPS +++ b/CDEPS-interface/CDEPS @@ -1 +1 @@ -Subproject commit 1f9eaaa142c8b07ed6b788c9f44ea02cc86d0bae +Subproject commit 50c63f586ad6f0de59db8e616ff33552d4a5c71a diff --git a/CDEPS-interface/CMakeLists.txt b/CDEPS-interface/CMakeLists.txt index afea540965..4ad50123b2 100644 --- a/CDEPS-interface/CMakeLists.txt +++ b/CDEPS-interface/CMakeLists.txt @@ -28,7 +28,7 @@ set_target_properties(share PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_ target_include_directories(share PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/ufs/cdeps_share) target_include_directories(share PRIVATE $) target_compile_definitions(share PRIVATE ${CDEPS_SHARE_DEFS}) -target_link_libraries(share PRIVATE esmf) +target_link_libraries(share PRIVATE ESMF::ESMF) # CDEPS/streams add_library(streams OBJECT ${cdeps_streams_files}) @@ -37,7 +37,7 @@ set_target_properties(streams PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURREN target_include_directories(streams PRIVATE $) target_compile_definitions(streams PUBLIC "DISABLE_FoX") target_link_libraries(streams PRIVATE share) -target_link_libraries(streams PRIVATE esmf PIO::PIO_Fortran) +target_link_libraries(streams PRIVATE ESMF::ESMF PIO::PIO_Fortran) # CDEPS/dshr add_library(dshr OBJECT ${cdeps_dshr_files}) @@ -45,7 +45,7 @@ add_dependencies(dshr share streams) set_target_properties(dshr PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_include_directories(dshr PRIVATE $) target_link_libraries(dshr PRIVATE share streams) -target_link_libraries(dshr PRIVATE esmf PIO::PIO_Fortran) +target_link_libraries(dshr PRIVATE ESMF::ESMF PIO::PIO_Fortran) # CDEPS/datm add_library(datm OBJECT ${cdeps_datm_files}) @@ -53,7 +53,7 @@ add_dependencies(datm share streams dshr) set_target_properties(datm PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_include_directories(datm PRIVATE $) target_link_libraries(datm PRIVATE dshr share streams) -target_link_libraries(datm PRIVATE esmf PIO::PIO_Fortran) +target_link_libraries(datm PRIVATE ESMF::ESMF PIO::PIO_Fortran) # CDEPS/dice add_library(dice OBJECT ${cdeps_dice_files}) @@ -61,7 +61,7 @@ add_dependencies(dice share streams dshr) set_target_properties(dice PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_include_directories(dice PRIVATE $) target_link_libraries(dice PRIVATE dshr share streams) -target_link_libraries(dice PRIVATE esmf) +target_link_libraries(dice PRIVATE ESMF::ESMF) # CDEPS/dlnd add_library(dlnd OBJECT ${cdeps_dlnd_files}) @@ -69,7 +69,7 @@ add_dependencies(dlnd share streams dshr) set_target_properties(dlnd PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_include_directories(dlnd PRIVATE $) target_link_libraries(dlnd PRIVATE dshr share streams) -target_link_libraries(dlnd PRIVATE esmf) +target_link_libraries(dlnd PRIVATE ESMF::ESMF) # CDEPS/docn add_library(docn OBJECT ${cdeps_docn_files}) @@ -77,7 +77,7 @@ add_dependencies(docn share streams dshr) set_target_properties(docn PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_include_directories(docn PRIVATE $) target_link_libraries(docn PRIVATE dshr share streams) -target_link_libraries(docn PRIVATE esmf PIO::PIO_Fortran) +target_link_libraries(docn PRIVATE ESMF::ESMF PIO::PIO_Fortran) # CDEPS/drof add_library(drof OBJECT ${cdeps_drof_files}) @@ -85,7 +85,7 @@ add_dependencies(drof share streams dshr) set_target_properties(drof PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_include_directories(drof PRIVATE $) target_link_libraries(drof PRIVATE dshr share streams) -target_link_libraries(drof PRIVATE esmf) +target_link_libraries(drof PRIVATE ESMF::ESMF) # CDEPS/dwav add_library(dwav OBJECT ${cdeps_dwav_files}) @@ -93,7 +93,7 @@ add_dependencies(dwav share streams dshr) set_target_properties(dwav PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_include_directories(dwav PRIVATE $) target_link_libraries(dwav PRIVATE dshr share streams) -target_link_libraries(dwav PRIVATE esmf) +target_link_libraries(dwav PRIVATE ESMF::ESMF) # CDEPS add_library(cdeps STATIC $ @@ -108,7 +108,7 @@ add_library(cdeps STATIC $ add_library(cdeps::cdeps ALIAS cdeps) target_include_directories(cdeps PUBLIC $ $) -target_link_libraries(cdeps PUBLIC esmf PIO::PIO_Fortran) +target_link_libraries(cdeps PUBLIC ESMF::ESMF PIO::PIO_Fortran) list(APPEND LIB_TARGETS cdeps) ############################################################################### diff --git a/CICE-interface/CICE b/CICE-interface/CICE index 5e57a89cf5..2ffee5cd48 160000 --- a/CICE-interface/CICE +++ b/CICE-interface/CICE @@ -1 +1 @@ -Subproject commit 5e57a89cf533fe98352bcfd1a464b1d50713274d +Subproject commit 2ffee5cd48e0c389bdf75c0d910b3f6d53263563 diff --git a/CICE-interface/CMakeLists.txt b/CICE-interface/CMakeLists.txt index b027e1d3e2..8f0b16e5e2 100644 --- a/CICE-interface/CMakeLists.txt +++ b/CICE-interface/CMakeLists.txt @@ -85,7 +85,7 @@ set_target_properties(cice PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_B target_compile_definitions(cice PUBLIC "${_cice_defs}") target_include_directories(cice PUBLIC $ $) -target_link_libraries(cice PUBLIC esmf) +target_link_libraries(cice PUBLIC ESMF::ESMF) if(CICE_IO MATCHES "^(NetCDF|PIO)$") target_link_libraries(cice PUBLIC NetCDF::NetCDF_Fortran) if(CICE_IO MATCHES "PIO") diff --git a/CMEPS-interface/CMEPS b/CMEPS-interface/CMEPS index 24e9eed4ff..8c66c95481 160000 --- a/CMEPS-interface/CMEPS +++ b/CMEPS-interface/CMEPS @@ -1 +1 @@ -Subproject commit 24e9eed4ffe8138bef635c8f916f91b142595675 +Subproject commit 8c66c954814be7b01160e95ae35cc627e93c6120 diff --git a/CMEPS-interface/CMakeLists.txt b/CMEPS-interface/CMakeLists.txt index efbd585acc..ddb772a536 100644 --- a/CMEPS-interface/CMakeLists.txt +++ b/CMEPS-interface/CMakeLists.txt @@ -183,7 +183,7 @@ set_target_properties(cmeps PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_ target_include_directories(cmeps PUBLIC $ $) target_compile_definitions(cmeps PRIVATE ${CDEPS_SHARE_DEFS}) -target_link_libraries(cmeps PUBLIC esmf +target_link_libraries(cmeps PUBLIC ESMF::ESMF PIO::PIO_Fortran) if(OpenMP_Fortran_FOUND) target_link_libraries(cmeps PRIVATE OpenMP::OpenMP_Fortran) diff --git a/CMakeLists.txt b/CMakeLists.txt index 702cf6a459..323969c982 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,14 @@ if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU" AND CMAKE_Fortran_COMPILER_VERSION V message(FATAL_ERROR "GNU Compiler >= 9 is required") endif() -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) +set(CMAKE_Platform $ENV{CMAKE_Platform}) + +if(CMAKE_Platform STREQUAL "wcoss2") + list(APPEND CMAKE_MODULE_PATH $ENV{ESMF_ROOT}/include/ESMX/Driver/cmake) +endif() + +list(APPEND CMAKE_MODULE_PATH $ENV{ESMF_ROOT}/cmake) +list(APPEND CMAKE_MODULE_PATH $ENV{esmf_ROOT}/cmake) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules/Modules) ############################################################################### @@ -79,7 +86,6 @@ set(PDLIB OFF CACHE BOOL "Enable Domain Decomposition in WW3 via PDLIB set(CDEPS_INLINE OFF CACHE BOOL "Enable CDEPS inline capability") set(HYDRO OFF CACHE BOOL "Enable hydrostatic set") -set(CMAKE_Platform $ENV{CMAKE_Platform}) if(CMAKE_Platform) message("") if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/configure_${CMAKE_Platform}.cmake) @@ -151,7 +157,13 @@ if(OPENMP) endif() find_package(NetCDF 4.7.4 REQUIRED C Fortran) -find_package(ESMF 8.3.0 MODULE REQUIRED) +find_package(ESMF 8.6.0 MODULE REQUIRED) +if (NOT TARGET ESMF::ESMF) # This is needed for ESMF < 8.6.1 + add_library(ESMF::ESMF ALIAS ESMF) + if (NOT TARGET esmf) + add_library(esmf ALIAS ESMF) + endif() +endif () if(FMS) find_package(FMS 2022.04 REQUIRED COMPONENTS R4 R8) if(APP MATCHES "^(HAFSW)$") @@ -306,7 +318,7 @@ if(WW3) target_link_libraries(ufs PUBLIC WW3::WW3) endif() -list(APPEND _ufs_libs_public esmf) +list(APPEND _ufs_libs_public ESMF::ESMF) if(STOCH_PHYS) list(APPEND _ufs_libs_public stochastic_physics) @@ -376,7 +388,7 @@ target_link_libraries(ufs PUBLIC "${_ufs_libs_public}") ############################################################################### add_executable(ufs_model driver/UFS.F90) add_dependencies(ufs_model ufs) -target_link_libraries(ufs_model ufs esmf w3emc::w3emc_d) +target_link_libraries(ufs_model ufs ESMF::ESMF w3emc::w3emc_d) set_target_properties(ufs_model PROPERTIES LINKER_LANGUAGE Fortran) ############################################################################### diff --git a/CMakeModules b/CMakeModules index cabd7753ae..27485ff44a 160000 --- a/CMakeModules +++ b/CMakeModules @@ -1 +1 @@ -Subproject commit cabd7753ae17f7bfcc6dad56daf10868aa51c3f4 +Subproject commit 27485ff44a64b7168fd524ea68d07d1458f3f05c diff --git a/FV3 b/FV3 index 49967251b8..71d80c45a0 160000 --- a/FV3 +++ b/FV3 @@ -1 +1 @@ -Subproject commit 49967251b83255bdac7ac2f9626d2714e8b83d07 +Subproject commit 71d80c45a0e4ad6a8a4228344f9fb0ffd954b5d0 diff --git a/HYCOM-interface/CMakeLists.txt b/HYCOM-interface/CMakeLists.txt index 7debdcbc61..5fbc76f34d 100644 --- a/HYCOM-interface/CMakeLists.txt +++ b/HYCOM-interface/CMakeLists.txt @@ -85,7 +85,7 @@ target_include_directories(hycom_nuopc_obj PRIVATE $) target_compile_definitions(hycom_nuopc_obj PRIVATE "${_hycom_defs}") target_link_libraries(hycom_nuopc_obj PRIVATE hycom_obj - esmf + ESMF::ESMF NetCDF::NetCDF_Fortran) ### Create target library and set PUBLIC interfaces on the library @@ -96,7 +96,7 @@ target_include_directories(hycom PUBLIC $ $) target_compile_definitions(hycom PRIVATE "${_hycom_defs}") -target_link_libraries(hycom PUBLIC esmf +target_link_libraries(hycom PUBLIC ESMF::ESMF NetCDF::NetCDF_Fortran) ### Create HYCOM offline executable diff --git a/MOM6-interface/CMakeLists.txt b/MOM6-interface/CMakeLists.txt index 57f9f7b8c9..bf823a1357 100644 --- a/MOM6-interface/CMakeLists.txt +++ b/MOM6-interface/CMakeLists.txt @@ -44,7 +44,7 @@ else() $) endif() target_link_libraries(mom6_obj PRIVATE fms - esmf + ESMF::ESMF stochastic_physics NetCDF::NetCDF_Fortran) # OpenMP is disabled in MOM6 @@ -65,7 +65,7 @@ endif() target_link_libraries(mom6_nuopc_obj PRIVATE mom6_obj fms stochastic_physics - esmf) + ESMF::ESMF) # OpenMP is disabled in MOM6 #if(OpenMP_Fortran_FOUND) # target_link_libraries(mom6_nuopc_obj PRIVATE OpenMP::OpenMP_Fortran) @@ -80,7 +80,7 @@ target_include_directories(mom6 PUBLIC $) target_link_libraries(mom6 PUBLIC fms stochastic_physics - esmf + ESMF::ESMF NetCDF::NetCDF_Fortran) # OpenMP is disabled in MOM6 #if(OpenMP_Fortran_FOUND) @@ -100,7 +100,7 @@ if(MOM6SOLO) target_link_libraries(mom6solo PRIVATE mom6_obj fms stochastic_physics - esmf + ESMF::ESMF NetCDF::NetCDF_Fortran) # OpenMP is disabled in MOM6 #if(OpenMP_Fortran_FOUND) diff --git a/NOAHMP-interface/CMakeLists.txt b/NOAHMP-interface/CMakeLists.txt index f8b6d99ab1..c90f0d60a9 100644 --- a/NOAHMP-interface/CMakeLists.txt +++ b/NOAHMP-interface/CMakeLists.txt @@ -67,7 +67,7 @@ add_library(noahmp STATIC ${_noahmp_cap_files} ${_noahmp_ccpp_files} ${_noahmp_f set_target_properties(noahmp PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_include_directories(noahmp PUBLIC $ $) -target_link_libraries(noahmp PUBLIC esmf) +target_link_libraries(noahmp PUBLIC ESMF::ESMF) ############################################################################### ### Install diff --git a/NOAHMP-interface/noahmp b/NOAHMP-interface/noahmp index 3ac32f0db7..f1f607e4f0 160000 --- a/NOAHMP-interface/noahmp +++ b/NOAHMP-interface/noahmp @@ -1 +1 @@ -Subproject commit 3ac32f0db7a2a97d930f44fa5f060c983ff31ee8 +Subproject commit f1f607e4f0a7fa7491c721bbd2e2f8b357b2120f diff --git a/WW3 b/WW3 index c7004b658b..78731a0334 160000 --- a/WW3 +++ b/WW3 @@ -1 +1 @@ -Subproject commit c7004b658b9dae9fc473d4e6511dfc1cf8e6a7bd +Subproject commit 78731a03349b6cf646a264da600d1f706f3747ac diff --git a/modulefiles/ufs_common.lua b/modulefiles/ufs_common.lua index 062fa38449..44fe2f3848 100644 --- a/modulefiles/ufs_common.lua +++ b/modulefiles/ufs_common.lua @@ -10,7 +10,7 @@ local ufs_modules = { {["netcdf-c"] = "4.9.2"}, {["netcdf-fortran"] = "4.6.1"}, {["parallelio"] = "2.5.10"}, - {["esmf"] = "8.6.0"}, + {["esmf"] = "8.6.1"}, {["fms"] = "2024.01"}, {["bacio"] = "2.4.1"}, {["crtm"] = "2.4.0"}, @@ -20,7 +20,7 @@ local ufs_modules = { {["sp"] = "2.5.0"}, {["w3emc"] = "2.10.0"}, {["gftl-shared"] = "1.6.1"}, - {["mapl"] = "2.40.3-esmf-8.6.0"}, + {["mapl"] = "2.46.2-esmf-8.6.1"}, {["scotch"] = "7.0.4"}, } diff --git a/modulefiles/ufs_hercules.gnu.lua b/modulefiles/ufs_hercules.gnu.lua index 035290a9c7..9417c1452d 100644 --- a/modulefiles/ufs_hercules.gnu.lua +++ b/modulefiles/ufs_hercules.gnu.lua @@ -2,7 +2,7 @@ help([[ loads UFS Model prerequisites for Hercules/GNU ]]) -prepend_path("MODULEPATH", "/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/fms-2024.01/install/modulefiles/Core") +prepend_path("MODULEPATH", "/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/ue-esmf-8.6.1-mapl-2.46.3/install/modulefiles/Core") -- for mvapich2, need: prepend_path("MODULEPATH", "/work/noaa/epic/role-epic/spack-stack/hercules/modulefiles") diff --git a/modulefiles/ufs_hercules.intel.lua b/modulefiles/ufs_hercules.intel.lua index 455ea4d0f4..539aef53b1 100644 --- a/modulefiles/ufs_hercules.intel.lua +++ b/modulefiles/ufs_hercules.intel.lua @@ -2,7 +2,7 @@ help([[ loads UFS Model prerequisites for Hercules/Intel ]]) -prepend_path("MODULEPATH", "/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/fms-2024.01/install/modulefiles/Core") +prepend_path("MODULEPATH", "/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/ue-esmf-8.6.1-mapl-2.46.3/install/modulefiles/Core") stack_intel_ver=os.getenv("stack_intel_ver") or "2021.9.0" load(pathJoin("stack-intel", stack_intel_ver))