# This is the cmake build file for the tests directory of the # UFS_UTILS project. # # George Gayno, Lin Gan, Ed Hartnett, Larissa Reames set(CHGRES_URL "https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/chgres_cube") set(V16SFC_FILE "gfs.v16.sfc.history.nc") set(V16SFC_FILE2 "gfs.v16.sfc2.history.nc") set(V16ATM_FILE "gfs.v16.atm.history.nc") set(V14SFC_FILE "gfs.v14.sfc.history.nemsio") set(V15SFC_FILE "gfs.v15.sfc.history.nemsio") set(GFS_GRIB_FILE "gfs.t00z.pgrb2.0p50.f000") foreach(THE_FILE IN LISTS V16SFC_FILE V16SFC_FILE2 V16ATM_FILE V14SFC_FILE V15SFC_FILE GFS_GRIB_FILE) PULL_DATA(${CHGRES_URL} ${THE_FILE}) endforeach() include (LibMPI) if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -assume byterecl") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-0 -fdefault-real-8") endif() include_directories(${PROJECT_SOURCE_DIR}) # Copy necessary test files from the source data directory to the # build data directory. execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/config_fv3_tiled.nml ${CMAKE_CURRENT_BINARY_DIR}/data/config_fv3_tiled.nml) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/config_fv3_tiled_warm_restart.nml ${CMAKE_CURRENT_BINARY_DIR}/data/config_fv3_tiled_warm_restart.nml) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/config_gaussian_nemsio.nml ${CMAKE_CURRENT_BINARY_DIR}/data/config_gaussian_nemsio.nml) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/config_gfs_grib2.nml ${CMAKE_CURRENT_BINARY_DIR}/data/config_gfs_grib2.nml) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/global_hyblev.l28.txt ${CMAKE_CURRENT_BINARY_DIR}/data/global_hyblev.l28.txt) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/config_spectral_sigio.nml ${CMAKE_CURRENT_BINARY_DIR}/data/config_spectral_sigio.nml) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/GFSphys_varmap.txt ${CMAKE_CURRENT_BINARY_DIR}/data/GFSphys_varmap.txt) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/parm/msis_lib/msis21.parm ${CMAKE_CURRENT_BINARY_DIR}/data/msis21.parm) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/msis2.1_test_ref_dp.txt ${CMAKE_CURRENT_BINARY_DIR}/data/msis2.1_test_ref_dp.txt) # This one does not end up in the data directory. execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/config_gaussian_nemsio.nml ${CMAKE_CURRENT_BINARY_DIR}/fort.41) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LSanSuppress.supp ${CMAKE_CURRENT_BINARY_DIR}/LSanSuppress.supp) add_executable(ftst_utils ftst_utils.F90) add_test(NAME chgres_cube-ftst_utils COMMAND ftst_utils) target_link_libraries(ftst_utils chgres_cube_lib) add_executable(ftst_read_atm_grib2 ftst_read_atm_grib2.F90) target_link_libraries(ftst_read_atm_grib2 chgres_cube_lib) add_mpi_test(chgres_cube-ftst_read_atm_grib2 EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_read_atm_grib2 NUMPROCS 1 TIMEOUT 60) add_executable(ftst_read_sfc_grib2 ftst_read_sfc_grib2.F90) target_link_libraries(ftst_read_sfc_grib2 chgres_cube_lib) add_mpi_test(chgres_cube-ftst_read_sfc_grib2 EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_read_sfc_grib2 NUMPROCS 1 TIMEOUT 60) add_executable(ftst_program_setup ftst_program_setup.F90) target_link_libraries(ftst_program_setup chgres_cube_lib) add_mpi_test(chgres_cube-ftst_program_setup EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_program_setup NUMPROCS 4 TIMEOUT 60) add_executable(ftst_program_setup_varmaps ftst_program_setup_varmaps.F90) target_link_libraries(ftst_program_setup_varmaps chgres_cube_lib) add_mpi_test(chgres_cube-ftst_program_setup_varmaps EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_program_setup_varmaps NUMPROCS 4 TIMEOUT 60) add_executable(ftst_search_util ftst_search_util.F90) target_link_libraries(ftst_search_util chgres_cube_lib) if(OpenMP_Fortran_FOUND) target_link_libraries(ftst_search_util OpenMP::OpenMP_Fortran) endif() # Cause test to be run with MPI. The search routine was # written to work on a single task. So set NUMPROCS to 1. add_mpi_test(chgres_cube-ftst_search_util EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_search_util NUMPROCS 1 TIMEOUT 60) add_executable(ftst_sfc_input_data ftst_sfc_input_data.F90) target_link_libraries(ftst_sfc_input_data chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_sfc_input_data EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_sfc_input_data NUMPROCS 4 TIMEOUT 60) add_executable(ftst_dint2p ftst_dint2p.F90) target_link_libraries(ftst_dint2p chgres_cube_lib) add_test(NAME chgres_cube-ftst_dint2p COMMAND ftst_dint2p) add_executable(ftst_rh2spfh_gfs ftst_rh2spfh_gfs.F90) target_link_libraries(ftst_rh2spfh_gfs chgres_cube_lib) add_test(NAME chgres_cube-ftst_rh2spfh_gfs COMMAND ftst_rh2spfh_gfs) add_executable(ftst_quicksort ftst_quicksort.F90) target_link_libraries(ftst_quicksort chgres_cube_lib) add_test(NAME chgres_cube-ftst_quicksort COMMAND ftst_quicksort) add_executable(ftst_convert_winds ftst_convert_winds.F90) target_link_libraries(ftst_convert_winds chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_convert_winds EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_convert_winds NUMPROCS 3 TIMEOUT 60) add_executable(ftst_read_sfc_gfs_nemsio ftst_read_sfc_gfs_nemsio.F90) target_link_libraries(ftst_read_sfc_gfs_nemsio chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_read_sfc_gfs_nemsio EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_read_sfc_gfs_nemsio NUMPROCS 1 TIMEOUT 60) ## Comment out this unit test until ESMF memory leaks are solved ## add_executable(ftst_surface_interp ftst_surface_interp.F90) ## target_link_libraries(ftst_surface_interp chgres_cube_lib) ## ## Cause test to be run with MPI. ## add_mpi_test(chgres_cube-ftst_surface_interp ## EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_surface_interp ## NUMPROCS 1 ## TIMEOUT 60) add_executable(ftst_read_sfc_nemsio ftst_read_sfc_nemsio.F90) target_link_libraries(ftst_read_sfc_nemsio chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_read_sfc_nemsio EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_read_sfc_nemsio NUMPROCS 1 TIMEOUT 60) add_executable(ftst_read_sfc_netcdf ftst_read_sfc_netcdf.F90) target_link_libraries(ftst_read_sfc_netcdf chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_read_sfc_netcdf EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_read_sfc_netcdf NUMPROCS 1 TIMEOUT 60) add_executable(ftst_read_nst_netcdf ftst_read_nst_netcdf.F90) target_link_libraries(ftst_read_nst_netcdf chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_read_nst_netcdf EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_read_nst_netcdf NUMPROCS 1 TIMEOUT 60) add_executable(ftst_read_nst_nemsio ftst_read_nst_nemsio.F90) target_link_libraries(ftst_read_nst_nemsio chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_read_nst_nemsio EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_read_nst_nemsio NUMPROCS 1 TIMEOUT 60) add_executable(ftst_read_atm_gaussian_netcdf ftst_read_atm_gaussian_netcdf.F90) target_link_libraries(ftst_read_atm_gaussian_netcdf chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_read_atm_gaussian_netcdf EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_read_atm_gaussian_netcdf NUMPROCS 1 TIMEOUT 60) add_executable(ftst_surface_nst_landfill ftst_surface_nst_landfill.F90) target_link_libraries(ftst_surface_nst_landfill chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_surface_nst_landfill EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_surface_nst_landfill NUMPROCS 1 TIMEOUT 60) add_executable(ftst_surface_regrid_many ftst_surface_regrid_many.F90) target_link_libraries(ftst_surface_regrid_many chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_surface_regrid_many EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_surface_regrid_many NUMPROCS 1 TIMEOUT 60) add_executable(ftst_surface_search_many ftst_surface_search_many.F90) target_link_libraries(ftst_surface_search_many chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_surface_search_many EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_surface_search_many NUMPROCS 1 TIMEOUT 60) add_executable(ftst_read_vcoord ftst_read_vcoord.F90) target_link_libraries(ftst_read_vcoord chgres_cube_lib) add_test(NAME chgres_cube-ftst_read_vcoord COMMAND ftst_read_vcoord) add_executable(ftst_msis_lib ftst_msis2.1_lib.F90) target_link_libraries(ftst_msis_lib msis2) # Cause test to be run with MPI. add_mpi_test(chgres_cube-ftst_msis_lib EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/ftst_msis_lib NUMPROCS 1 TIMEOUT 60) add_executable(ftst_example ftst_example.F90) target_link_libraries(ftst_example chgres_cube_lib) add_test(NAME chgres_cube-ftst_example COMMAND ftst_example)