diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e8457ce10..366e0e9d9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,9 @@ if (${CMAKE_VERSION} VERSION_LESS 3.12) endif() # Set the project name and version. -project(ufs-srweather-app VERSION 1.0) +project(ufs-srweather-app VERSION 1.0 LANGUAGES C CXX Fortran) + +find_package(MPI REQUIRED COMPONENTS C CXX Fortran) # Set extended version info. SET(SRWA_VERSION_MAJOR 1) @@ -139,3 +141,4 @@ configure_file( FILE(COPY "${CMAKE_CURRENT_BINARY_DIR}/ufs_srweather_app_meta.h" DESTINATION include) +add_subdirectory(src) diff --git a/Externals.cfg b/Externals.cfg index 88807bb364..655813a3e2 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -8,12 +8,8 @@ required = True [ufs_utils] protocol = git -#repo_url = https://github.com/JeffBeck-NOAA/UFS_UTILS -repo_url = https://github.com/NCAR/UFS_UTILS -# Specify either a branch name or a hash but not both. -#branch = feature/regional_release -branch = feature/regional_release_STRING -#hash = e5419633 +repo_url = https://github.com/JeffBeck-NOAA/UFS_UTILS +tag = v2.0alpha01 local_path = src/UFS_UTILS required = True diff --git a/docs/README_cheyenne_intel.txt b/docs/README_cheyenne_intel.txt new file mode 100644 index 0000000000..cdd8ab0c84 --- /dev/null +++ b/docs/README_cheyenne_intel.txt @@ -0,0 +1,50 @@ +#Setup instructions for CISL Cheyenne using Intel-19.1.1 (bash shell) + +module purge +module load ncarenv/1.3 +module load intel/19.1.1 +module load mpt/2.19 +module load ncarcompilers/0.5.0 +module load cmake/3.16.4 + +export CC=mpicc +export FC=mpif90 +export CXX=mpicxx + +NCEPLIBS_INSTALL=/glade/p/ral/jntp/GMTB/tools/NCEPLIBS-ufs-v2.0.0/intel-19.1.1/mpt-2.19 + +module use -a ${NCEPLIBS_INSTALL}/modules + +module load bacio/2.4.1 +module load g2/3.4.1 +module load ip/3.3.3 +module load nemsio/2.5.2 +module load sp/2.3.3 +module load w3emc/2.7.3 +module load w3nco/2.4.1 +module load sigio/2.3.2 +module load g2tmpl/1.9.1 +module load sfcio/1.4.1 +module load gfsio/1.4.1 +module load nemsiogfs/2.5.3 +module load landsfcutil/2.4.1 +module load wgrib2/2.0.8 +module load netcdf/4.7.4 +module load crtm/2.3.0 + +export ESMFMKFILE=/glade/p/ral/jntp/GMTB/tools/NCEPLIBS-ufs-v2.0.0/intel-19.1.1/mpt-2.19/lib64/esmf.mk + +export CMAKE_C_COMPILER=mpicc +export CMAKE_CXX_COMPILER=mpicxx +export CMAKE_Fortran_COMPILER=mpif90 +export CMAKE_Platform=cheyenne.intel + +git clone -b release/public-v1 git@github.com:ufs-community/ufs-srweather-app + +cd ufs-srweather-app/ +./manage_externals/checkout_externals + +mkdir build +cd build +cmake .. -DCMAKE_INSTALL_PREFIX=.. +make diff --git a/docs/README_hera_intel.txt b/docs/README_hera_intel.txt new file mode 100644 index 0000000000..41e6480651 --- /dev/null +++ b/docs/README_hera_intel.txt @@ -0,0 +1,50 @@ +#Setup instructions for NOAA RDHPC Hera using Intel-18.0.5.274 (bash shell) + +module purge +module load intel/18.0.5.274 +module load impi/2018.0.4 +module load cmake/3.16.1 + +export CC=icc +export CXX=icpc +export FC=ifort + +NCEPLIBS_INSTALL=/scratch1/BMC/gmtb/software/NCEPLIBS-ufs-v2.0.0/intel-18.0.5.274/impi-2018.0.4 + +module use ${NCEPLIBS_INSTALL}/modules + +module load libpng/1.6.35 + +module load bacio/2.4.1 +module load g2/3.4.1 +module load g2tmpl/1.9.1 +module load ip/3.3.3 +module load nemsio/2.5.2 +module load sp/2.3.3 +module load w3emc/2.7.3 +module load w3nco/2.4.1 +module load sigio/2.3.2 + +module load sfcio/1.4.1 +module load gfsio/1.4.1 +module load nemsiogfs/2.5.3 +module load landsfcutil/2.4.1 +module load wgrib2/2.0.8 +module load netcdf/4.7.4 +module load esmf/8.0.0 +module load crtm/2.3.0 + +export CMAKE_C_COMPILER=mpiicc +export CMAKE_CXX_COMPILER=mpiicpc +export CMAKE_Fortran_COMPILER=mpiifort +export CMAKE_Platform=hera.intel + +git clone -b release/public-v1 git@github.com:ufs-community/ufs-srweather-app + +cd ufs-srweather-app/ +./manage_externals/checkout_externals + +mkdir build +cd build +cmake .. -DCMAKE_INSTALL_PREFIX=.. +make diff --git a/docs/README_jet_intel.txt b/docs/README_jet_intel.txt new file mode 100644 index 0000000000..7dffb7289c --- /dev/null +++ b/docs/README_jet_intel.txt @@ -0,0 +1,54 @@ +#Setup instructions for NOAA RDHPC Jet using Intel-18.0.5.274 (bash shell) + +module purge + +module use -a /contrib/sutils/modulefiles +module load sutils + +module load intel/18.0.5.274 +module load impi/2018.4.274 +module load hdf5/1.10.4 +module load netcdf/4.6.1 +module load cmake/3.16.1 + +export CC=icc +export CXX=icpc +export FC=ifort + +NCEPLIBS_INSTALL=/lfs4/HFIP/hfv3gfs/software/NCEPLIBS-ufs-v2.0.0/intel-18.0.5.274/impi-2018.4.274 + +module use -a ${NCEPLIBS_INSTALL}/modules + +module load bacio/2.4.1 +module load crtm/2.3.0 +module load g2/3.4.1 +module load g2tmpl/1.9.1 +module load ip/3.3.3 +module load landsfcutil/2.4.1 +module load nceppost/dceca26 +module load nemsio/2.5.2 +module load nemsiogfs/2.5.3 +module load sp/2.3.3 +module load w3emc/2.7.3 +module load w3nco/2.4.1 + +module load gfsio/1.4.1 +module load sfcio/1.4.1 +module load sigio/2.3.2 +module load esmf/8.0.0 +module load wgrib2/2.0.8 + +export CMAKE_C_COMPILER=mpiicc +export CMAKE_CXX_COMPILER=mpiicpc +export CMAKE_Fortran_COMPILER=mpiifort +export CMAKE_Platform=jet.intel + +git clone -b release/public-v1 git@github.com:ufs-community/ufs-srweather-app + +cd ufs-srweather-app/ +./manage_externals/checkout_externals + +mkdir build +cd build +cmake .. -DCMAKE_INSTALL_PREFIX=.. +make diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000000..b326922f49 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,31 @@ +include(ExternalProject) + +ExternalProject_Add(UFS_UTILS + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/UFS_UTILS + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/UFS_UTILS + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" + ) + + +set(CCPP_SUITES "FV3_CPT_v0,FV3_GFS_2017_gfdlmp,FV3_GFS_2017_gfdlmp_regional,FV3_GSD_SAR,FV3_GSD_v0,FV3_GFS_v15p2,FV3_GFS_v16beta,FV3_RRFS_v1beta") + +ExternalProject_Add(ufs_weather_model + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/ufs_weather_model + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ufs_weather_model + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" + "-DCCPP_SUITES=${CCPP_SUITES}" + "-DCMAKE_C_COMPILER=${MPI_C_COMPILER}" + "-DCMAKE_CXX_COMPILER=${MPI_CXX_COMPILER}" + "-DCMAKE_Fortran_COMPILER=${MPI_Fortran_COMPILER}" + "-DNETCDF_DIR=$ENV{NETCDF}" + INSTALL_COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX}/bin && cp ${CMAKE_CURRENT_BINARY_DIR}/ufs_weather_model/src/ufs_weather_model-build/NEMS.exe ${CMAKE_INSTALL_PREFIX}/bin/ + ) + +ExternalProject_Add(EMC_post + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/EMC_post + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/EMC_post + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" + )