2022-09-26 11:08:03 +03:30
cmake_minimum_required ( VERSION 3.16 FATAL_ERROR )
2022-09-02 12:30:54 +04:30
# set the project name and version
2023-09-27 11:28:39 +03:30
project ( phasicFlow VERSION 1.0 )
2022-09-02 12:30:54 +04:30
2022-09-26 11:08:03 +03:30
set ( CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE )
2022-09-02 12:30:54 +04:30
set ( CMAKE_CXX_STANDARD_REQUIRED True )
set ( CMAKE_INSTALL_PREFIX ${ phasicFlow_SOURCE_DIR } CACHE PATH "Install path of phasicFlow" FORCE )
2024-04-04 12:33:09 -07:00
set ( CMAKE_BUILD_TYPE Relase CACHE STRING "build type" FORCE )
2023-09-27 11:28:39 +03:30
set ( BUILD_SHARED_LIBS ON CACHE BOOL "Build using shared libraries" FORCE )
mark_as_advanced ( FORCE var BUILD_SHARED_LIBS )
2022-09-02 12:30:54 +04:30
message ( STATUS ${ CMAKE_INSTALL_PREFIX } )
2023-09-27 11:28:39 +03:30
include ( cmake/globals.cmake )
#Kokkos directory to be included
set ( Kokkos_Source_DIR )
if ( DEFINED ENV{Kokkos_DIR} )
set ( Kokkos_Source_DIR $ENV{ Kokkos_DIR } )
else ( )
set ( Kokkos_Source_DIR $ENV{ HOME } /Kokkos/kokkos )
endif ( )
message ( STATUS "Kokkos source directory is ${Kokkos_Source_DIR}" )
add_subdirectory ( ${ Kokkos_Source_DIR } ${ phasicFlow_BINARY_DIR } /kokkos )
Kokkos_cmake_settings ( )
2022-09-02 12:30:54 +04:30
2023-09-27 11:28:39 +03:30
option ( pFlow_STD_Parallel_Alg "Use TTB std parallel algorithms" ON )
2022-09-07 14:46:46 +04:30
option ( pFlow_Build_Serial "Build phasicFlow and backends for serial execution" OFF )
2022-09-02 12:30:54 +04:30
option ( pFlow_Build_OpenMP "Build phasicFlow and backends for OpenMP execution" OFF )
option ( pFlow_Build_Cuda "Build phasicFlow and backends for Cuda execution" OFF )
2023-09-27 11:28:39 +03:30
option ( pFlow_Build_Double "Build phasicFlow with double precision floating-oint variables" ON )
option ( pFlow_Build_MPI "Build for MPI parallelization. This will enable multi-gpu run, CPU run on clusters (distributed memory machine). Use this combination Cuda+MPI, OpenMP + MPI or Serial+MPI " OFF )
2022-09-02 12:30:54 +04:30
2022-09-05 01:56:29 +04:30
if ( pFlow_Build_Serial )
2022-09-02 12:30:54 +04:30
set ( Kokkos_ENABLE_SERIAL ON CACHE BOOL "Serial execution" FORCE )
set ( Kokkos_ENABLE_OPENMP OFF CACHE BOOL "OpenMP execution" FORCE )
set ( Kokkos_ENABLE_CUDA OFF CACHE BOOL "Cuda execution" FORCE )
set ( Kokkos_ENABLE_CUDA_LAMBDA OFF CACHE BOOL "Cuda execution" FORCE )
2023-09-27 11:28:39 +03:30
set ( Kokkos_ENABLE_CUDA_CONSTEXPR OFF CACHE BOOL "Enable constexpr on cuda code" FORCE )
2022-09-05 01:56:29 +04:30
elseif ( pFlow_Build_OpenMP )
2022-09-02 12:30:54 +04:30
set ( Kokkos_ENABLE_SERIAL ON CACHE BOOL "Serial execution" FORCE )
set ( Kokkos_ENABLE_OPENMP ON CACHE BOOL "OpenMP execution" FORCE )
set ( Kokkos_ENABLE_CUDA OFF CACHE BOOL "Cuda execution" FORCE )
set ( Kokkos_ENABLE_CUDA_LAMBDA OFF CACHE BOOL "Cuda execution" FORCE )
2022-09-07 14:46:46 +04:30
set ( Kokkos_DEFAULT_HOST_PARALLEL_EXECUTION_SPACE SERIAL CACHE STRING "" FORCE )
2023-09-27 11:28:39 +03:30
set ( Kokkos_ENABLE_CUDA_CONSTEXPR OFF CACHE BOOL "Enable constexpr on cuda code" FORCE )
2022-09-05 01:56:29 +04:30
elseif ( pFlow_Build_Cuda )
2022-09-02 12:30:54 +04:30
set ( Kokkos_ENABLE_SERIAL ON CACHE BOOL "Serial execution" FORCE )
set ( Kokkos_ENABLE_OPENMP OFF CACHE BOOL "OpenMP execution" FORCE )
set ( Kokkos_ENABLE_CUDA ON CACHE BOOL "Cuda execution" FORCE )
set ( Kokkos_ENABLE_CUDA_LAMBDA ON CACHE BOOL "Cuda execution" FORCE )
2023-09-27 11:28:39 +03:30
set ( Kokkos_ENABLE_CUDA_CONSTEXPR ON CACHE BOOL "Enable constexpr on cuda code" FORCE )
2022-09-02 12:30:54 +04:30
endif ( )
2023-09-27 11:28:39 +03:30
if ( pFlow_Build_MPI )
find_package ( MPI REQUIRED )
endif ( )
2022-09-02 12:30:54 +04:30
include ( cmake/makeLibraryGlobals.cmake )
include ( cmake/makeExecutableGlobals.cmake )
configure_file ( phasicFlowConfig.H.in phasicFlowConfig.H )
2024-01-18 04:51:06 -08:00
set ( CMAKE_EXPORT_COMPILE_COMMANDS ON )
2022-09-02 12:30:54 +04:30
#add a global include directory
include_directories ( src/setHelpers src/demComponent "${PROJECT_BINARY_DIR}" )
add_subdirectory ( src )
2024-01-29 07:58:19 -08:00
add_subdirectory ( solvers )
2022-09-02 12:30:54 +04:30
2024-01-21 13:26:23 -08:00
add_subdirectory ( utilities )
2023-01-30 14:45:05 +01:00
2023-09-28 07:44:39 +03:30
#add_subdirectory(DEMSystems)
2023-09-30 20:18:17 +03:30
add_subdirectory ( testIO )
2022-09-02 12:30:54 +04:30
install ( FILES "${PROJECT_BINARY_DIR}/phasicFlowConfig.H"
2023-09-27 11:28:39 +03:30
D E S T I N A T I O N i n c l u d e )
2022-09-02 12:30:54 +04:30
include ( InstallRequiredSystemLibraries )
set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" )
set ( CPACK_PACKAGE_VERSION_MAJOR "${phasicFlow_VERSION_MAJOR}" )
set ( CPACK_PACKAGE_VERSION_MINOR "${phasicFlow_VERSION_MINOR}" )
include ( CPack )
2022-12-10 01:32:54 +03:30