diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..53eb8fe30 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +build/ +install/ +exec/ + +*.[ao] +*.mod +*.so +*.exe +*.x + +*.swp diff --git a/.gitmodules b/.gitmodules index 5efb05cac..e17e00eca 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "cmake"] - path = cmake + path = CMakeModules url = https://github.com/NOAA-EMC/CMakeModules branch = develop diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ae7980d4..2c7357146 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ project( ufs_util VERSION ${pVersion} LANGUAGES C Fortran) -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/Modules") if(NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel)$") message(STATUS "Setting build type to 'Release' as none was specified.") @@ -17,96 +17,52 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel)$") "MinSizeRel" "RelWithDebInfo") endif() -if(NOT CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel|GNU|Clang|AppleClang)$") - message(WARNING "Compiler not officially supported: ${CMAKE_Fortran_COMPILER_ID}") +if(NOT CMAKE_C_COMPILER_ID MATCHES "^(Intel|GNU|Clang|AppleClang)$") + message(WARNING "Compiler not officially supported: ${CMAKE_C_COMPILER_ID}") endif() -if(NOT CMAKE_C_COMPILER_ID MATCHES "^(Intel|GNU)$") - message(WARNING "Compiler not officially supported: ${CMAKE_C_COMPILER_ID}") +if(NOT CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel|GNU)$") + message(WARNING "Compiler not officially supported: ${CMAKE_Fortran_COMPILER_ID}") endif() if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") - set(CMAKE_Fortran_FLAGS "-g -traceback") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -traceback") set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -fp-model precise") set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -check -check noarg_temp_created -check nopointer -fp-stack-check -fstack-protector-all -fpe0 -debug -ftrapuv") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") - set(CMAKE_Fortran_FLAGS "-g -fbacktrace") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -fbacktrace") set(CMAKE_Fortran_FLAGS_RELEASE "-O3") set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -ggdb -fno-unsafe-math-optimizations -frounding-math -fsignaling-nans -ffpe-trap=invalid,zero,overflow -fbounds-check") endif() if(CMAKE_C_COMPILER_ID MATCHES "^(Intel)$") - set(CMAKE_C_FLAGS "-g -traceback") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -traceback") set(CMAKE_C_FLAGS_RELEASE "-O2") set(CMAKE_C_FLAGS_DEBUG "-O0") -elseif(CMAKE_C_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") - set(CMAKE_C_FLAGS " ") - set(CMAKE_C_FLAGS_RELEASE " ") - set(CMAKE_C_FLAGS_DEBUG " ") endif() -find_package(PNG REQUIRED) -find_package(ZLIB REQUIRED) -find_package(Jasper REQUIRED) find_package(NetCDF REQUIRED C Fortran) -find_package(MPI REQUIRED ) +find_package(MPI REQUIRED) find_package(ESMF MODULE REQUIRED) -find_package(WGRIB2 REQUIRED) option(OPENMP "use OpenMP threading" ON) if(OPENMP) find_package(OpenMP REQUIRED COMPONENTS Fortran) endif() -set(CMAKE_FIND_PACKAGE_PREFER_CONFIG true) - -if(NOT TARGET gfsio_4) - find_package(gfsio REQUIRED) -endif() - -if(NOT TARGET sfcio_4) - find_package(sfcio REQUIRED) -endif() - -if(NOT TARGET w3nco_d) - find_package(w3nco REQUIRED) -endif() - -if(NOT TARGET landsfcutil_d) - find_package(landsfcutil REQUIRED) -endif() - -if(NOT TARGET bacio_4) - find_package(bacio REQUIRED) -endif() - -if(NOT TARGET nemsio) - find_package(nemsio REQUIRED) -endif() - -if(NOT TARGET nemsiogfs) - find_package(nemsiogfs REQUIRED) -endif() - -if(NOT TARGET sigio_4) - find_package(sigio REQUIRED) -endif() - -if(NOT TARGET sp_d) - find_package(sp REQUIRED) -endif() - -if(NOT TARGET ip_d) - find_package(ip REQUIRED) -endif() - -if(NOT TARGET w3emc_d) - find_package(w3emc REQUIRED) -endif() - -if(NOT TARGET g2_d) - find_package(g2 REQUIRED) -endif() +find_package(gfsio REQUIRED) +find_package(sfcio REQUIRED) +find_package(w3nco REQUIRED) +find_package(landsfcutil REQUIRED) +find_package(bacio REQUIRED) +find_package(nemsio REQUIRED) +find_package(nemsiogfs REQUIRED) +find_package(sigio REQUIRED) +find_package(sp REQUIRED) +find_package(ip REQUIRED) +find_package(w3emc REQUIRED) +find_package(g2 REQUIRED) +find_package(wgrib2 REQUIRED) # EMC requires executables in ./exec set(exec_dir bin) diff --git a/CMakeModules b/CMakeModules new file mode 160000 index 000000000..3eaddb8c9 --- /dev/null +++ b/CMakeModules @@ -0,0 +1 @@ +Subproject commit 3eaddb8c9d5cfc07c2b2388e70b0f19326c1cfc0 diff --git a/build_all.sh b/build_all.sh index 854538b76..64d159c1d 100755 --- a/build_all.sh +++ b/build_all.sh @@ -3,16 +3,20 @@ set -eux target=${target:-"NULL"} -if [[ $target == "linux.gnu" || $target == "linux.intel" ]]; then +if [[ "$target" == "linux.gnu" || "$target" == "linux.intel" ]]; then unset -f module else + set +x source ./sorc/machine-setup.sh > /dev/null 2>&1 + set -x fi export MOD_PATH +set +x source ./modulefiles/build.$target > /dev/null 2>&1 +module list +set -x -# # --- Build all programs. # @@ -20,12 +24,14 @@ rm -fr ./build mkdir ./build cd ./build -if [[ $target == "wcoss_cray" ]]; then - cmake .. -DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -else - cmake .. -DCMAKE_Fortran_COMPILER=ifort -DCMAKE_C_COMPILER=icc -DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON +CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON" + +if [[ "$target" != "wcoss_cray" ]]; then + CMAKE_FLAGS+=" -DCMAKE_Fortran_COMPILER=ifort -DCMAKE_C_COMPILER=icc" fi +cmake .. ${CMAKE_FLAGS} + make -j 8 VERBOSE=1 make install diff --git a/cmake b/cmake deleted file mode 160000 index ff93c2d2c..000000000 --- a/cmake +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ff93c2d2ca7df9e8ba6372b70f5d58110c9210f1 diff --git a/modulefiles/build.hera b/modulefiles/build.hera index d7068c38d..cbae95e56 100644 --- a/modulefiles/build.hera +++ b/modulefiles/build.hera @@ -7,22 +7,23 @@ module load cmake/3.16.1 module load intel/18.0.5.274 module load impi/2018.0.4 -module use -a /scratch2/NCEPDEV/nwprod/NCEPLIBS/modulefiles -module load prod_util/1.1.0 -module load w3nco/2.0.6 -module load w3emc/2.3.0 -module load nemsio/2.2.3 -module load bacio/2.0.2 -module load sp/2.0.2 -module load ip/3.0.1 -module load sfcio/1.1.0 -module load sigio/2.1.0 -module load gfsio/1.1.0 -module load nemsiogfs/2.2.0 -module load landsfcutil/2.1.0 -module load g2/2.5.0 +module use /scratch2/NCEPDEV/nwprod/NCEPLIBS/cmake/install/NCEPLIBS-v1.2.0/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 gfsio/1.4.1 +module load sfcio/1.4.1 +module load sigio/2.3.2 +module load nemsiogfs/2.5.3 +module load landsfcutil/2.4.1 +module load wgrib2/2.0.8 + +module use /scratch1/NCEPDEV/nems/emc.nemspara/soft/modulefiles +module load hdf5_parallel/1.10.6 module load netcdf_parallel/4.7.4 module load esmf/8.0.0_ParallelNetCDF - -export WGRIB2_ROOT="/scratch1/NCEPDEV/da/George.Gayno/noscrub/wgrib2" diff --git a/modulefiles/build.jet b/modulefiles/build.jet index 5b552697c..b81a52cd0 100644 --- a/modulefiles/build.jet +++ b/modulefiles/build.jet @@ -1,30 +1,34 @@ #%Module##################################################### ## Build and run module for Jet ############################################################# - -module use /lfs4/HFIP/hfv3gfs/nwprod/NCEPLIBS/modulefiles module load cmake/3.16.1 module load intel/18.0.5.274 module load impi/2018.4.274 module load szip/2.1 -module load hdf5/1.10.4 -module load netcdf/4.6.1 -export NETCDF="/apps/netcdf/4.6.1/intel/18.0.5.274" -module load w3nco/v2.0.6 -module load w3emc/v2.2.0 -module load sp/v2.0.2 -module load ip/v3.0.0 -module load bacio/v2.0.2 -module load sigio/v2.1.0 -module load sfcio/v1.0.0 -module load nemsio/v2.2.3 -module load nemsiogfs/v2.0.1 -module load gfsio/v1.1.0 -module load landsfcutil/v2.1.0 -module load g2/v3.1.0 +module load hdf5/1.10.5 +module load netcdf/4.7.0 + +export CC=icc +export FC=ifort +export CXX=icpc + +export ESMFMKFILE=/lfs4/HFIP/hfv3gfs/software/NCEPLIBS-ufs-v2.0.0beta01/intel-18.0.5.274/impi-2018.4.274/lib64/esmf.mk +export Jasper_ROOT=/lfs4/HFIP/hfv3gfs/software/NCEPLIBS-ufs-v2.0.0beta01/intel-18.0.5.274/impi-2018.4.274 + +module use /lfs4/HFIP/hfv3gfs/software/NCEPLIBS-ufs-v2.0.0beta01/intel-18.0.5.274/impi-2018.4.274/modules +module load w3nco/2.4.1 +module load w3emc/2.7.3 +module load sp/2.3.3 +module load ip/3.3.3 +module load bacio/2.4.1 +module load sigio/2.3.2 +module load sfcio/1.4.1 +module load nemsio/2.5.2 +module load nemsiogfs/2.5.3 +module load gfsio/1.4.1 +module load landsfcutil/2.4.1 +module load g2/3.4.1 +module load wgrib2/2.0.8 + -# Use DTCs version of esmf v8. POC Dom H. -module use -a /lfs4/HFIP/hfv3gfs/software/modulefiles/intel-18.0.5.274/impi-2018.4.274 -module load esmf/8.0.0 -export WGRIB2_ROOT="/lfs4/HFIP/hwrfv3/Jili.Dong/wgrib2-2.0.8/grib2/lib" diff --git a/modulefiles/build.orion b/modulefiles/build.orion index 145ec66c8..5c623989a 100644 --- a/modulefiles/build.orion +++ b/modulefiles/build.orion @@ -6,23 +6,24 @@ module load cmake/3.15.4 module load intel/2020 module load impi/2020 -module use -a /apps/contrib/NCEPLIBS/orion/modulefiles -module load w3nco/2.1.0 -module load nemsio/2.3.0 -module load bacio/2.2.0 -module load sfcio/1.2.0 -module load sigio/2.2.0 -module load gfsio/1.2.0 -module load w3emc/2.4.0 -module load ip/3.1.0 -module load nemsiogfs/2.3.0 -module load landsfcutil/2.2.0 -module load g2/3.1.1 -module load sp/2.0.3 +module use /apps/contrib/NCEPLIBS/orion/cmake/install/NCEPLIBS-v1.2.0/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 gfsio/1.4.1 +module load sfcio/1.4.1 +module load sigio/2.3.2 +module load nemsiogfs/2.5.3 +module load landsfcutil/2.4.1 +module load wgrib2/2.0.8 + export Jasper_ROOT="/apps/jasper-1.900.1" module use -a /apps/contrib/NCEPLIBS/lib/modulefiles module load netcdfp/4.7.4.release module load esmflocal/8_0_0.release -export WGRIB2_ROOT="/work/noaa/da/ggayno/save/wgrib2" diff --git a/modulefiles/build.wcoss_cray b/modulefiles/build.wcoss_cray index 14506ef13..b6ce5aa57 100644 --- a/modulefiles/build.wcoss_cray +++ b/modulefiles/build.wcoss_cray @@ -9,32 +9,36 @@ module load cfp-intel-sandybridge/1.1.0 module load cmake/3.16.2 module load PrgEnv-intel/5.2.56 module rm intel -module load intel/16.3.210 +module load intel/18.1.163 module load cray-mpich/7.2.0 module load craype-haswell module load alps/5.2.4-2.0502.9822.32.1.ari module load cray-netcdf/4.3.3.1 module load cray-hdf5/1.8.14 -module load w3nco-intel/2.0.6 -module load nemsio-intel/2.2.3 -module load bacio-intel/2.0.2 -module load sp-intel/2.0.2 -module load ip-intel/3.0.0 -module load sigio-intel/2.1.0 -module load sfcio-intel/1.0.0 -module load landsfcutil-intel/2.1.0 -module load gfsio-intel/1.1.0 -module load w3emc-intel/2.2.0 -module load nemsiogfs-intel/2.0.1 -module load g2-intel/2.5.0 + +module use /usrx/local/nceplibs/NCEPLIBS/cmake/install/NCEPLIBS-v1.2.0/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 gfsio/1.4.1 +module load sfcio/1.4.1 +module load sigio/2.3.2 +module load nemsiogfs/2.5.3 +module load landsfcutil/2.4.1 +module load wgrib2/2.0.8 + export ZLIB_ROOT=/usrx/local/prod/zlib/1.2.7/intel/haswell export PNG_ROOT=/usrx/local/prod//png/1.2.49/intel/haswell export Jasper_ROOT=/usrx/local/prod/jasper/1.900.1/intel/haswell module use /gpfs/hps3/emc/nems/noscrub/emc.nemspara/soft/modulefiles module load esmf/8.0.0 +export ESMFMKFILE=/gpfs/hps3/emc/nems/noscrub/emc.nemspara/soft/esmf/8.0.0/lib/esmf.mk export NETCDF=/opt/cray/netcdf/4.3.3.1/INTEL/14.0 module rm gcc module load gcc/6.3.0 -export WGRIB2_ROOT=/gpfs/hps3/emc/global/noscrub/George.Gayno/wgrib2 diff --git a/modulefiles/build.wcoss_dell_p3 b/modulefiles/build.wcoss_dell_p3 index 338663c9b..ae9d55e2c 100644 --- a/modulefiles/build.wcoss_dell_p3 +++ b/modulefiles/build.wcoss_dell_p3 @@ -7,18 +7,8 @@ module load HPSS/5.0.2.5 module load cmake/3.16.2 module load ips/18.0.1.163 module load impi/18.0.1 -module load w3nco/2.0.6 -module load w3emc/2.3.0 -module load sp/2.0.2 -module load nemsio/2.2.3 -module load bacio/2.0.2 -module load ip/3.0.1 -module load sfcio/1.0.0 -module load sigio/2.1.0 -module load gfsio/1.1.0 -module load landsfcutil/2.1.0 -module load nemsiogfs/2.0.1 -module load g2/3.1.0 + + module load jasper/1.900.29 export Jasper_ROOT="/usrx/local/prod/packages/gnu/4.8.5/jasper/1.900.29" @@ -28,7 +18,20 @@ module load netcdf_parallel/4.7.4 module use /gpfs/dell2/emc/modeling/noscrub/emc.nemspara/soft/modulefiles module load esmf/8.0.0_ParallelNetCDF -export WGRIB2_ROOT=/gpfs/dell2/emc/modeling/noscrub/George.Gayno/wgrib2 - module use /usrx/local/dev/modulefiles module load prod_util/1.1.3 + +module use /usrx/local/nceplibs/dev/NCEPLIBS/cmake/install/NCEPLIBS-v1.2.0/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 gfsio/1.4.1 +module load sfcio/1.4.1 +module load sigio/2.3.2 +module load nemsiogfs/2.5.3 +module load landsfcutil/2.4.1 +module load wgrib2/2.0.8 diff --git a/sorc/CMakeLists.txt b/sorc/CMakeLists.txt index 6daacc548..2cbca0d16 100644 --- a/sorc/CMakeLists.txt +++ b/sorc/CMakeLists.txt @@ -15,7 +15,5 @@ add_subdirectory(mkgfsnemsioctl.fd) add_subdirectory(fre-nctools.fd) add_subdirectory(grid_tools.fd) add_subdirectory(chgres_cube.fd) -add_subdirectory(orog_mask_tools.fd/orog.fd) -add_subdirectory(orog_mask_tools.fd/lake.fd) -add_subdirectory(orog_mask_tools.fd/inland.fd) +add_subdirectory(orog_mask_tools.fd) add_subdirectory(sfc_climo_gen.fd) diff --git a/sorc/chgres_cube.fd/CMakeLists.txt b/sorc/chgres_cube.fd/CMakeLists.txt index 3c5f6f6cc..dd7dc4a6c 100644 --- a/sorc/chgres_cube.fd/CMakeLists.txt +++ b/sorc/chgres_cube.fd/CMakeLists.txt @@ -14,7 +14,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian -assume byterecl") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-0 -fdefault-real-8 -fconvert=big-endian") endif() @@ -22,14 +22,15 @@ set(exe_name chgres_cube) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - nemsio - sfcio_4 - sigio_4 - bacio_4 - sp_d - w3nco_d + nemsio::nemsio + sfcio::sfcio + sigio::sigio + bacio::bacio_4 + sp::sp_d + w3nco::w3nco_d esmf - wgrib2 + wgrib2::wgrib2_lib + wgrib2::wgrib2_api MPI::MPI_Fortran NetCDF::NetCDF_Fortran) if(OpenMP_Fortran_FOUND) diff --git a/sorc/emcsfc_ice_blend.fd/CMakeLists.txt b/sorc/emcsfc_ice_blend.fd/CMakeLists.txt index ecfe7af75..e50646381 100644 --- a/sorc/emcsfc_ice_blend.fd/CMakeLists.txt +++ b/sorc/emcsfc_ice_blend.fd/CMakeLists.txt @@ -5,11 +5,8 @@ set(exe_name emcsfc_ice_blend) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - bacio_4 - g2_4 - w3nco_4 - ${JASPER_LIBRARIES} - PNG::PNG - ZLIB::ZLIB) + bacio::bacio_4 + g2::g2_4 + w3nco::w3nco_4) install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/emcsfc_snow2mdl.fd/CMakeLists.txt b/sorc/emcsfc_snow2mdl.fd/CMakeLists.txt index 8a4561a1a..e884e1d7a 100644 --- a/sorc/emcsfc_snow2mdl.fd/CMakeLists.txt +++ b/sorc/emcsfc_snow2mdl.fd/CMakeLists.txt @@ -8,7 +8,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -FR -convert big_endian -assume byterecl") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-form -fdefault-real-8 -fconvert=big-endian") endif() @@ -16,15 +16,12 @@ set(exe_name emcsfc_snow2mdl) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - g2_d - ip_d - sp_d - landsfcutil_d - bacio_4 - w3nco_d - ${JASPER_LIBRARIES} - PNG::PNG - ZLIB::ZLIB) + g2::g2_d + ip::ip_d + sp::sp_d + landsfcutil::landsfcutil_d + bacio::bacio_4 + w3nco::w3nco_d) if(OpenMP_Fortran_FOUND) target_link_libraries(${exe_name} OpenMP::OpenMP_Fortran) endif() diff --git a/sorc/global_chgres.fd/CMakeLists.txt b/sorc/global_chgres.fd/CMakeLists.txt index a3298825e..dc62c1a7d 100644 --- a/sorc/global_chgres.fd/CMakeLists.txt +++ b/sorc/global_chgres.fd/CMakeLists.txt @@ -14,7 +14,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8 -fconvert=big-endian") endif() @@ -22,18 +22,20 @@ set(exe_name global_chgres) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - gfsio_4 - nemsiogfs - nemsio - sigio_4 - sfcio_4 - landsfcutil_d - ip_d - sp_d - w3emc_d - w3nco_d - bacio_4 - NetCDF::NetCDF_Fortran - OpenMP::OpenMP_Fortran) + gfsio::gfsio + nemsiogfs::nemsiogfs + nemsio::nemsio + sigio::sigio + sfcio::sfcio + landsfcutil::landsfcutil_d + ip::ip_d + sp::sp_d + w3emc::w3emc_d + w3nco::w3nco_d + bacio::bacio_4 + NetCDF::NetCDF_Fortran) +if(OpenMP_Fortran_FOUND) + target_link_libraries(${exe_name} OpenMP::OpenMP_Fortran) +endif() install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/global_cycle.fd/CMakeLists.txt b/sorc/global_cycle.fd/CMakeLists.txt index 94d44e144..d962bf79e 100644 --- a/sorc/global_cycle.fd/CMakeLists.txt +++ b/sorc/global_cycle.fd/CMakeLists.txt @@ -1,5 +1,5 @@ set(fortran_src - cycle.f90 + cycle.f90 machine.f90 num_parthds.f90 sfcsub.F @@ -7,7 +7,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8 -fconvert=big-endian") endif() @@ -15,12 +15,14 @@ set(exe_name global_cycle) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - w3nco_d - bacio_4 - ip_d - sp_d + w3nco::w3nco_d + bacio::bacio_4 + ip::ip_d + sp::sp_d MPI::MPI_Fortran - NetCDF::NetCDF_Fortran - OpenMP::OpenMP_Fortran) + NetCDF::NetCDF_Fortran) +if(OpenMP_Fortran_FOUND) + target_link_libraries(${exe_name} OpenMP::OpenMP_Fortran) +endif() install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/grid_tools.fd/filter_topo.fd/CMakeLists.txt b/sorc/grid_tools.fd/filter_topo.fd/CMakeLists.txt index bd56685b1..b854a11b8 100644 --- a/sorc/grid_tools.fd/filter_topo.fd/CMakeLists.txt +++ b/sorc/grid_tools.fd/filter_topo.fd/CMakeLists.txt @@ -3,7 +3,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -assume byterecl -real_size 64 -fno-alias -stack_temps -safe_cray_ptr -ftz") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-0 -fdefault-real-8") endif() diff --git a/sorc/grid_tools.fd/global_equiv_resol.fd/global_equiv_resol.f90 b/sorc/grid_tools.fd/global_equiv_resol.fd/global_equiv_resol.f90 index 7bd9c813f..9d40db90e 100644 --- a/sorc/grid_tools.fd/global_equiv_resol.fd/global_equiv_resol.f90 +++ b/sorc/grid_tools.fd/global_equiv_resol.fd/global_equiv_resol.f90 @@ -131,7 +131,7 @@ program global_equiv_resol WRITE(*,530) " min_cell_size = ", min_cell_size WRITE(*,530) " max_cell_size = ", max_cell_size WRITE(*,530) " avg_cell_size = ", avg_cell_size -530 FORMAT(A, G) +530 FORMAT(A, G10.4) ! !======================================================================= ! @@ -147,7 +147,7 @@ program global_equiv_resol WRITE(*,500) WRITE(*,500) "Equivalent global uniform cubed-sphere resolution is:" - WRITE(*,530) " RES_equiv = ", RES_equiv + WRITE(*,*) " RES_equiv = ", RES_equiv ! !======================================================================= ! diff --git a/sorc/mkgfsnemsioctl.fd/CMakeLists.txt b/sorc/mkgfsnemsioctl.fd/CMakeLists.txt index 7002cf37f..ced548712 100644 --- a/sorc/mkgfsnemsioctl.fd/CMakeLists.txt +++ b/sorc/mkgfsnemsioctl.fd/CMakeLists.txt @@ -5,8 +5,6 @@ set(exe_name mkgfsnemsioctl) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - nemsio - bacio_4 - w3nco_d) + nemsio::nemsio bacio::bacio_4 w3nco::w3nco_d) install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/nemsio_chgdate.fd/CMakeLists.txt b/sorc/nemsio_chgdate.fd/CMakeLists.txt index bb04b6c8d..d70d62aea 100644 --- a/sorc/nemsio_chgdate.fd/CMakeLists.txt +++ b/sorc/nemsio_chgdate.fd/CMakeLists.txt @@ -3,7 +3,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -convert big_endian") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fconvert=big-endian") endif() @@ -11,7 +11,6 @@ set(exe_name nemsio_chgdate) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - nemsio - bacio_4) + nemsio::nemsio bacio::bacio_4 w3nco::w3nco_d) install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/nemsio_get.fd/CMakeLists.txt b/sorc/nemsio_get.fd/CMakeLists.txt index 435602ef8..108c31476 100644 --- a/sorc/nemsio_get.fd/CMakeLists.txt +++ b/sorc/nemsio_get.fd/CMakeLists.txt @@ -3,7 +3,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -convert big_endian") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fconvert=big-endian") endif() @@ -11,8 +11,6 @@ set(exe_name nemsio_get) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - nemsio - bacio_4 - w3nco_d) + nemsio::nemsio bacio::bacio_4 w3nco::w3nco_d) install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/nemsio_read.fd/CMakeLists.txt b/sorc/nemsio_read.fd/CMakeLists.txt index 9e192044d..ac116193b 100644 --- a/sorc/nemsio_read.fd/CMakeLists.txt +++ b/sorc/nemsio_read.fd/CMakeLists.txt @@ -5,8 +5,6 @@ set(exe_name nemsio_read) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - nemsio - bacio_4 - w3nco_d) + nemsio::nemsio bacio::bacio_4 w3nco::w3nco_d) install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/nst_tf_chg.fd/CMakeLists.txt b/sorc/nst_tf_chg.fd/CMakeLists.txt index 43cd32228..8a6ad20fb 100644 --- a/sorc/nst_tf_chg.fd/CMakeLists.txt +++ b/sorc/nst_tf_chg.fd/CMakeLists.txt @@ -8,7 +8,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8") endif() @@ -16,9 +16,7 @@ set(exe_name nst_tf_chg) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - nemsio - w3nco_d - bacio_4 + nemsio::nemsio bacio::bacio_4 w3nco::w3nco_d NetCDF::NetCDF_Fortran) install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/orog_mask_tools.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/CMakeLists.txt new file mode 100644 index 000000000..551d728c5 --- /dev/null +++ b/sorc/orog_mask_tools.fd/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(orog.fd) +add_subdirectory(lake.fd) +add_subdirectory(inland.fd) diff --git a/sorc/orog_mask_tools.fd/inland.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/inland.fd/CMakeLists.txt index e2078e76f..e88bc2030 100644 --- a/sorc/orog_mask_tools.fd/inland.fd/CMakeLists.txt +++ b/sorc/orog_mask_tools.fd/inland.fd/CMakeLists.txt @@ -1,10 +1,10 @@ set(fortran_src - nb.F90 + nb.F90 inland.F90) if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -assume byterecl") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fno-range-check") endif() diff --git a/sorc/orog_mask_tools.fd/lake.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/lake.fd/CMakeLists.txt index b33ddfd6d..5e071590d 100644 --- a/sorc/orog_mask_tools.fd/lake.fd/CMakeLists.txt +++ b/sorc/orog_mask_tools.fd/lake.fd/CMakeLists.txt @@ -1,11 +1,11 @@ set(fortran_src - enclosure_cnvx.F90 - find_limit.F90 + enclosure_cnvx.F90 + find_limit.F90 lakefrac.F90) if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -assume byterecl") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fno-range-check") endif() diff --git a/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt index 28a57938a..2ef189199 100644 --- a/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt +++ b/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt @@ -4,7 +4,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian -assume byterecl") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8 -fconvert=big-endian -fno-range-check") endif() @@ -12,10 +12,10 @@ set(exe_name orog) add_executable(${exe_name} ${fortran_src}) target_link_libraries( ${exe_name} - bacio_4 - w3nco_d - ip_d - sp_d + bacio::bacio_4 + w3nco::w3nco_d + ip::ip_d + sp::sp_d NetCDF::NetCDF_Fortran) if(OpenMP_Fortran_FOUND) target_link_libraries(${exe_name} OpenMP::OpenMP_Fortran) diff --git a/sorc/orog_mask_tools.fd/orog.fd/README b/sorc/orog_mask_tools.fd/orog.fd/README old mode 100755 new mode 100644 diff --git a/sorc/orog_mask_tools.fd/orog.fd/README_OC b/sorc/orog_mask_tools.fd/orog.fd/README_OC old mode 100755 new mode 100644 diff --git a/sorc/orog_mask_tools.fd/orog.fd/machine.h b/sorc/orog_mask_tools.fd/orog.fd/machine.h old mode 100755 new mode 100644 diff --git a/sorc/orog_mask_tools.fd/orog.fd/mtnlm7_oclsm.f b/sorc/orog_mask_tools.fd/orog.fd/mtnlm7_oclsm.f old mode 100755 new mode 100644 diff --git a/sorc/orog_mask_tools.fd/orog.fd/netcdf_io.F90 b/sorc/orog_mask_tools.fd/orog.fd/netcdf_io.F90 old mode 100755 new mode 100644 diff --git a/sorc/orog_mask_tools.fd/orog.fd/resevod.h b/sorc/orog_mask_tools.fd/orog.fd/resevod.h old mode 100755 new mode 100644 diff --git a/sorc/sfc_climo_gen.fd/CMakeLists.txt b/sorc/sfc_climo_gen.fd/CMakeLists.txt index b57f47fa9..1af894b82 100644 --- a/sorc/sfc_climo_gen.fd/CMakeLists.txt +++ b/sorc/sfc_climo_gen.fd/CMakeLists.txt @@ -10,7 +10,7 @@ set(fortran_src if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian") -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") +elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-0 -fdefault-real-8 -fconvert=big-endian") endif()