Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DRAFT] Remove local copies of FindESMF from all components, update ESMF to 8.6.1 and MAPL to 2.46.3 #2406

Draft
wants to merge 9 commits into
base: develop
Choose a base branch
from
42 changes: 28 additions & 14 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion AQM
Submodule AQM updated 1 files
+5 −5 CMakeLists.txt
2 changes: 1 addition & 1 deletion CDEPS-interface/CDEPS
Submodule CDEPS updated 1 files
+0 −47 cmake/FindESMF.cmake
20 changes: 10 additions & 10 deletions CDEPS-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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})
Expand All @@ -37,63 +37,63 @@ set_target_properties(streams PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURREN
target_include_directories(streams PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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})
add_dependencies(dshr share streams)
set_target_properties(dshr PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(dshr PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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})
add_dependencies(datm share streams dshr)
set_target_properties(datm PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(datm PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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})
add_dependencies(dice share streams dshr)
set_target_properties(dice PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(dice PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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})
add_dependencies(dlnd share streams dshr)
set_target_properties(dlnd PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(dlnd PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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})
add_dependencies(docn share streams dshr)
set_target_properties(docn PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(docn PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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})
add_dependencies(drof share streams dshr)
set_target_properties(drof PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(drof PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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})
add_dependencies(dwav share streams dshr)
set_target_properties(dwav PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(dwav PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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 $<TARGET_OBJECTS:share>
Expand All @@ -108,7 +108,7 @@ add_library(cdeps STATIC $<TARGET_OBJECTS:share>
add_library(cdeps::cdeps ALIAS cdeps)
target_include_directories(cdeps PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
$<INSTALL_INTERFACE:mod>)
target_link_libraries(cdeps PUBLIC esmf PIO::PIO_Fortran)
target_link_libraries(cdeps PUBLIC ESMF::ESMF PIO::PIO_Fortran)
list(APPEND LIB_TARGETS cdeps)

###############################################################################
Expand Down
2 changes: 1 addition & 1 deletion CICE-interface/CICE
Submodule CICE updated 105 files
2 changes: 1 addition & 1 deletion CICE-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
$<INSTALL_INTERFACE:mod>)
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")
Expand Down
2 changes: 1 addition & 1 deletion CMEPS-interface/CMEPS
Submodule CMEPS updated 1 files
+0 −47 cmake/FindESMF.cmake
2 changes: 1 addition & 1 deletion CMEPS-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ set_target_properties(cmeps PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_
target_include_directories(cmeps PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
$<INSTALL_INTERFACE:mod>)
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)
Expand Down
22 changes: 17 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)

###############################################################################
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)$")
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)

###############################################################################
Expand Down
2 changes: 1 addition & 1 deletion CMakeModules
2 changes: 1 addition & 1 deletion FV3
Submodule FV3 updated 2 files
+4 −2 .gitmodules
+1 −1 atmos_cubed_sphere
4 changes: 2 additions & 2 deletions HYCOM-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ target_include_directories(hycom_nuopc_obj PRIVATE $<BUILD_INTERFACE:${CMAKE_CUR
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/HYCOM/NUOPC>)
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
Expand All @@ -96,7 +96,7 @@ target_include_directories(hycom PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY
target_include_directories(hycom PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/HYCOM>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/HYCOM/NUOPC>)
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
Expand Down
8 changes: 4 additions & 4 deletions MOM6-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ else()
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/src/framework>)
endif()
target_link_libraries(mom6_obj PRIVATE fms
esmf
ESMF::ESMF
stochastic_physics
NetCDF::NetCDF_Fortran)
# OpenMP is disabled in MOM6
Expand All @@ -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)
Expand All @@ -80,7 +80,7 @@ target_include_directories(mom6 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/src/framework>)
target_link_libraries(mom6 PUBLIC fms
stochastic_physics
esmf
ESMF::ESMF
NetCDF::NetCDF_Fortran)
# OpenMP is disabled in MOM6
#if(OpenMP_Fortran_FOUND)
Expand All @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion NOAHMP-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
$<INSTALL_INTERFACE:mod>)
target_link_libraries(noahmp PUBLIC esmf)
target_link_libraries(noahmp PUBLIC ESMF::ESMF)

###############################################################################
### Install
Expand Down
2 changes: 1 addition & 1 deletion NOAHMP-interface/noahmp
2 changes: 1 addition & 1 deletion WW3
4 changes: 2 additions & 2 deletions modulefiles/ufs_common.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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"},
Expand All @@ -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"},
}

Expand Down
2 changes: 1 addition & 1 deletion modulefiles/ufs_hercules.gnu.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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")

Expand Down
2 changes: 1 addition & 1 deletion modulefiles/ufs_hercules.intel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down