Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
eb24a03
updates to get things building/linking
mark-a-potts Jan 25, 2022
142975a
using two different versions of fv3-jedi depending on UFS_APP
mark-a-potts Jan 26, 2022
2c2a90f
small change to ioda for expat linking
mark-a-potts Jan 27, 2022
6e4c053
fix for building in container
mark-a-potts Jan 27, 2022
81895ee
Merge branch 'feature/soca' of https://github.com/JCSDA/ufs-jedi-bund…
mark-a-potts Jan 27, 2022
eb61ff0
update for godas
mark-a-potts Mar 18, 2022
25ade24
Updating with consolidated versions for atm/godas/s2s builds
mark-a-potts Jun 24, 2022
aa86ef2
Updated atlas version and README
mark-a-potts Jun 30, 2022
a5851a4
updated readme
mark-a-potts Jun 30, 2022
c92d43c
updated atlas version
mark-a-potts Jun 30, 2022
379dd4b
Merge branch 'feature/soca' of https://github.com/jcsda/ufs-jedi-bund…
mark-a-potts Jun 30, 2022
e9dbfe0
updated README for cheyenne
mark-a-potts Jun 30, 2022
0cd1352
updated README for cheyenne
mark-a-potts Jun 30, 2022
ea2387b
Changed to hashes
mark-a-potts Jun 30, 2022
31e2a88
Switched version of FMS. Might be able to remove it as an external now
mark-a-potts Jul 29, 2022
285c325
Merge branch 'develop' into feature/soca
climbfuji Aug 22, 2022
18be977
Add vader and ufs-weather-model to .gitignore
climbfuji Oct 18, 2022
dd3c425
Update CMakeLists.txt
climbfuji Oct 18, 2022
e1a5aee
Update CMakeLists.txt
climbfuji Oct 18, 2022
3a81f4a
Update CMakeLists.txt
climbfuji Oct 18, 2022
089ad9c
More updates to CMakeLists.txt
climbfuji Oct 19, 2022
a75ca11
Work in progress: README.md
climbfuji Oct 19, 2022
4efaf34
Update soca branch in CMakeLists.txt
climbfuji Oct 20, 2022
28f8b37
Use MPI compiler wrappers for external project ufs-weather-model
climbfuji Oct 20, 2022
50bb3e7
Attempt to fix dependency for gsw in CMakeLists.txt
climbfuji Oct 20, 2022
b0b1ee0
Update README.md
climbfuji Oct 21, 2022
2b7866f
Add missing imported library statements to CMakeLists.txt, update REA…
climbfuji Oct 26, 2022
2516495
Catch unknown UFS_APP in top-level CMakeLists.txt
climbfuji Oct 27, 2022
48d5a7d
Point to branch feature/ufs_dom of fv3-jedi-data
climbfuji Nov 1, 2022
73d4192
WIP on README.md
climbfuji Nov 1, 2022
266c9a3
Update CMakeLists.txt, now s2s compiles
climbfuji Nov 21, 2022
8d5c551
Update JEDI repo versions in bundle CMakeLists
fmahebert Nov 21, 2022
7bf14ba
Update README.md
climbfuji Nov 22, 2022
ebdfa59
Update CMakeLists.txt
climbfuji Nov 22, 2022
ebf3bac
Merge branch 'feature/atm-soca-s2s_dom' of https://github.com/jcsda/u…
climbfuji Nov 22, 2022
f6d7324
Update CMakeLists.txt
climbfuji Nov 22, 2022
a517472
Update CMakeLists.txt
climbfuji Nov 23, 2022
a675dc8
Update ufs-weather-model branch name
climbfuji Jan 18, 2023
8092f79
macOS OpenMP flags for ufs-weather-model
climbfuji Jan 18, 2023
e695f93
Fix macOS OpenMP linker issue
climbfuji Jan 19, 2023
842d20e
Temporarily add PRs.txt TMP_README_UFS_STANDALONE.sh
climbfuji Jan 19, 2023
d83842e
Update PRs.txt
climbfuji Jan 19, 2023
c78d0dd
Bug fix in CMakeLists.txt, update README.md
climbfuji Jan 21, 2023
35c899c
Add more info on ctests to README.md
climbfuji Jan 23, 2023
234f3cb
Cleanup to finalize ufs atm build and warmstart tests
climbfuji Jan 27, 2023
7577716
Bump eckit etc versions in CMakeLists.txt
climbfuji Jan 27, 2023
0034a26
Merge branch 'develop' of https://github.com/jcsda/ufs-bundle into fe…
climbfuji Jan 27, 2023
f7023c9
Update jedi repos to develop as of Jan 28 2023 (#20)
shlyaeva Feb 1, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ ioda/
oops/
ufo/
ewok/
soca/
vader/

# FMS
fms/
Expand All @@ -41,6 +43,7 @@ fv3/
femps/
fv3-jedi-lm/
fv3-jedi/
ufs-weather-model/

# Observation operators
crtm/
Expand Down
115 changes: 62 additions & 53 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# (C) Copyright 2021-2021 NOAA

# ##########
# ufs-jedi-bundle
# ufs-bundle
# ##########

cmake_minimum_required( VERSION 3.12 FATAL_ERROR )

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")

Expand All @@ -23,33 +23,40 @@ set( ECBUILD_DEFAULT_BUILD_TYPE Release )

# Enable MPI
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 RECURSIVE )
include( jedicmake/cmake/Functions/git_functions.cmake )
set( ENABLE_OMP ON CACHE BOOL "Compile with OpenMP")

# Use external jedi-cmake or build in bundle
if(DEFINED ENV{jedi_cmake_ROOT})
include( $ENV{jedi_cmake_ROOT}/share/jedicmake/Functions/git_functions.cmake )
else()
ecbuild_bundle( PROJECT jedicmake GIT "https://github.com/jcsda-internal/jedi-cmake.git" TAG 1.4.0 UPDATE RECURSIVE )
include( jedicmake/cmake/Functions/git_functions.cmake )
endif()

# 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.18.2 )
ecbuild_bundle( PROJECT eckit GIT "https://github.com/ecmwf/eckit.git" TAG 1.20.2 )
ecbuild_bundle( PROJECT fckit GIT "https://github.com/ecmwf/fckit.git" TAG 0.9.5 )
ecbuild_bundle( PROJECT atlas GIT "https://github.com/ecmwf/atlas.git" TAG 0.29.0 )
ecbuild_bundle( PROJECT atlas GIT "https://github.com/ecmwf/atlas.git" TAG 0.31.1 )

# 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 )
# External FMS
find_package(FMS 2022.04 REQUIRED COMPONENTS R4 R8)

if(UFS_APP MATCHES "^(S2S)$" OR UFS_APP MATCHES "^(NG-GODAS)$")
ecbuild_bundle( PROJECT gsw GIT "https://github.com/jcsda-internal/GSW-Fortran.git" TAG 1a02ebaf6f7a4e9f2c2d2dd973fb050e697bcc74 ) # develop on jan 28
endif()

# 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-internal/oops.git" TAG 0932772f4b20b0defedfb12e31a0c17c18caac71 ) # develop on feb 1
ecbuild_bundle( PROJECT vader GIT "https://github.com/jcsda-internal/vader.git" TAG 3c8fc58ed67c013a955ca7d8f8d2346f2844ac96 ) # develop on jan 28
ecbuild_bundle( PROJECT saber GIT "https://github.com/jcsda-internal/saber.git" TAG 1203356523b123654a8871846a55a06ed26b7247 ) # develop on jan 28
ecbuild_bundle( PROJECT ioda GIT "https://github.com/jcsda-internal/ioda.git" TAG 39ab4dd1dfe737f71385af802c2b5c67c2ef8efc ) # develop on jan 28
ecbuild_bundle( PROJECT ufo GIT "https://github.com/jcsda-internal/ufo.git" TAG ab106a84c770414a3edf9dacabeadea5d70d9edf ) # develop on jan 28

# Options for building with certain models
# ----------------------------------------
Expand All @@ -59,71 +66,73 @@ if(NOT UFS_APP MATCHES "^(ATM|NG-GODAS|S2S)$")
ecbuild_error("Valid options for -DUFS_APP are 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 )
ecbuild_bundle( PROJECT fv3-jedi-lm GIT "https://github.com/jcsda-internal/fv3-jedi-linearmodel.git" BRANCH feature/ufs_dom ) # updated from develop on nov 22, develop hasn't changed by jan 28

include_directories(${DEPEND_LIB_ROOT}/include)
include_directories(${DEPEND_LIB_ROOT}/include_r8)
link_directories(${DEPEND_LIB_ROOT}/lib)

include( ExternalProject )

# Needed to get correct OpenMP link libraries on macOS
set(UFS_CMAKE_EXE_LINKER_FLAGS "-L${CMAKE_CURRENT_BINARY_DIR}/lib")
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}")

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_REPOSITORY https://github.com/climbfuji/ufs-weather-model
GIT_SUBMODULES_RECURSE TRUE
GIT_TAG develop
GIT_TAG feature/consolidate_dom_update_20230117 # updated from develop on Jan 17
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ufs-weather-model
UPDATE_DISCONNECTED ON
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 -DCMAKE_C_FLAGS=-fPIC -DCMAKE_Fortran_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_coupled,FV3_GFS_v15p2 -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} -DCMAKE_PREFIX_PATH=${CMAKE_CURRENT_BINARY_DIR}/gsw -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_SUBMODULES_RECURSE TRUE
GIT_TAG dev/jcsda
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/fms
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}
INSTALL_COMMAND make install
BUILD_ALWAYS TRUE
)

add_dependencies(ufs-weather-model FMS )
if(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( 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)
add_library( mom6 IMPORTED STATIC)
set_target_properties( ufs PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libufs.a)
set_target_properties( cdeps PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libcdeps.a)
set_target_properties( cmeps PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libcmeps.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)
set_target_properties(mom6 PROPERTIES IMPORTED_LOCATION ${DEPEND_LIB_ROOT}/lib/libmom6.a)

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 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 femps GIT "https://github.com/jcsda-internal/femps.git" TAG 1.2.0 )
ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda-internal/fv3-jedi.git" BRANCH feature/ufs_dom ) # updated from develop on jan28
ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda-internal/soca.git" BRANCH feature/ufs_dom ) # updated from develop on jan28
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 develop UPDATE )
ecbuild_bundle( PROJECT soca GIT "https://github.com/jcsda-internal/soca.git" BRANCH feature/ufs_dom ) # updated from develop on jan28
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-internal/femps.git" TAG 1.2.0 )
ecbuild_bundle( PROJECT fv3-jedi GIT "https://github.com/jcsda-internal/fv3-jedi.git" BRANCH feature/ufs_dom ) # updated from develop on jan28
else()
message(FATAL_ERROR "ufs-bundle unknown UFS_APP ${UFS_APP}")
endif()


Expand All @@ -140,7 +149,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" TAG 3b4c1ba80a7cb9ae132d74c715492eae36d9d87f ) # develop on jan 28
endif()

# If IODA's current branch is available in ioda-data repo, that branch will be checked out
Expand All @@ -150,7 +159,7 @@ branch_checkout (REPO_DIR_NAME ioda-data
# 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 )
ecbuild_bundle( PROJECT ufo-data GIT "https://github.com/JCSDA-internal/ufo-data.git" TAG 87702a24ac6349495e9182d5ee833b488fb1f2fb ) # develop on jan 28
endif()

# If UFO's current branch is available in ufo-data repo, that branch will be checked out
Expand All @@ -160,7 +169,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_dom ) # updated from develop on jan 28
endif()

# If fv3-jedi's current branch is available in fv3-jedi-data repo, that branch will be checked out
Expand Down
Loading