build system is added and is tested for serial execution
This commit is contained in:
parent
757eeb8f62
commit
9d177aba28
|
@ -0,0 +1,85 @@
|
|||
cmake_minimum_required(VERSION 3.22 FATAL_ERROR)
|
||||
|
||||
# set the project name and version
|
||||
project(phasicFlow VERSION 0.1 )
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||
set(CMAKE_INSTALL_PREFIX ${phasicFlow_SOURCE_DIR} CACHE PATH "Install path of phasicFlow" FORCE)
|
||||
|
||||
message(STATUS ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
mark_as_advanced(FORCE var Kokkos_ENABLE_CUDA_LAMBDA)
|
||||
mark_as_advanced(FORCE var Kokkos_ENABLE_OPENMP)
|
||||
mark_as_advanced(FORCE var Kokkos_ENABLE_SERIAL)
|
||||
mark_as_advanced(FORCE var Kokkos_ENABLE_CUDA_LAMBDA)
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
|
||||
option(USE_STD_PARALLEL_ALG "Use TTB std parallel algorithms" ON)
|
||||
option(pFlow_Build_Serial "Build phasicFlow and backends for serial execution" ON)
|
||||
option(pFlow_Build_OpenMP "Build phasicFlow and backends for OpenMP execution" OFF)
|
||||
option(pFlow_Build_Cuda "Build phasicFlow and backends for Cuda execution" OFF)
|
||||
|
||||
if(dFlow_Build_Serial)
|
||||
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)
|
||||
elseif(dFlow_Build_OpenMP )
|
||||
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)
|
||||
elseif(dFlow_Build_Cuda)
|
||||
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)
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
include(cmake/globals.cmake)
|
||||
message(STATUS "Valid file extensions are ${validFiles}")
|
||||
|
||||
include(cmake/makeLibraryGlobals.cmake)
|
||||
include(cmake/makeExecutableGlobals.cmake)
|
||||
|
||||
configure_file(phasicFlowConfig.H.in phasicFlowConfig.H)
|
||||
|
||||
#add a global include directory
|
||||
include_directories(src/setHelpers src/demComponent "${PROJECT_BINARY_DIR}")
|
||||
|
||||
#main subdirectories of the code
|
||||
set(Kokkos_Source_DIR)
|
||||
|
||||
if(DEFINED ENV{Kokkos_DIR})
|
||||
set(Kokkos_Source_DIR $ENV{Kokkos_DIR})
|
||||
# add_subdirectory($ENV{Kokkos_DIR} ${phasicFlow_BINARY_DIR}/kokkos)
|
||||
# message(STATUS "Kokkos directory is $ENV{Kokkos_DIR}")
|
||||
else()
|
||||
# add_subdirectory($ENV{HOME}/Kokkos/kokkos ${phasicFlow_BINARY_DIR}/kokkos)
|
||||
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)
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
#add_subdirectory(solvers)
|
||||
|
||||
#add_subdirectory(utilities)
|
||||
|
||||
#add_subdirectory(test)
|
||||
|
||||
|
||||
install(FILES "${PROJECT_BINARY_DIR}/phasicFlowConfig.H"
|
||||
DESTINATION include
|
||||
)
|
||||
|
||||
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)
|
2
LICENSE
2
LICENSE
|
@ -1,7 +1,7 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Copyright (C) CEMF (https://cemf.ir/)
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
export pFlow_PROJECT_VERSION=v0.1
|
||||
|
||||
export pFlow_PROJECT=phasicFlow-$pFlow_PROJECT_VERSION
|
||||
|
||||
|
||||
projectDir="$HOME/PhasicFlow"
|
||||
kokkosDir="$HOME/Kokkos/kokkos"
|
||||
|
||||
export pFlow_PROJECT_DIR="$projectDir/$pFlow_PROJECT"
|
||||
|
||||
# [WM_PROJECT_USER_DIR] - Location of user files
|
||||
export pFlow_PROJECT_USER_DIR="$projectDir/$USER-$pFlow_PROJECT_VERSION"
|
||||
|
||||
export pFlow_LIB_DIR="$pFlow_PROJECT_DIR/lib"
|
||||
|
||||
export pFlow_BIN_DIR="$pFlow_PROJECT_DIR/bin"
|
||||
|
||||
export pFlow_SRC_DIR="$pFlow_PROJECT_DIR/src"
|
||||
|
||||
export Kokkos_DIR="$kokkosDir"
|
||||
|
||||
# Cleanup variables (done as final statement for a clean exit code)
|
||||
unset projectDir
|
||||
|
||||
export PATH="$pFlow_BIN_DIR:$PATH"
|
||||
|
||||
export LD_LIBRARY_PATH="$pFlow_LIB_DIR:$LD_LIBRARY_PATH"
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
set(validFiles)
|
||||
list(APPEND validFiles *.C *.cpp *.cxx *.c *.cu *.H *.hpp *.hxx *.h *.cuh)
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
#add a library to dFlow with source files and target_link_libs (thouse under the main CMakeLists.txt)
|
||||
macro(pFlow_make_executable_install target_name source_files target_link_libs)
|
||||
|
||||
# add library
|
||||
add_executable(${target_name} ${${source_files}})
|
||||
|
||||
target_link_libraries(${target_name} PUBLIC ${${target_link_libs}})
|
||||
|
||||
#get all valid the source files under the current folder
|
||||
file(GLOB_RECURSE allValidFilePaths RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${validFiles})
|
||||
|
||||
set(validFilePathsExcSRCs ${allValidFilePaths})
|
||||
list(REMOVE_ITEM validFilePathsExcSRCs ${${source_files}})
|
||||
set(includeDirs)
|
||||
set(includeFiles ${validFilePathsExcSRCs})
|
||||
|
||||
# get the directory names
|
||||
foreach(file_path ${validFilePathsExcSRCs})
|
||||
GET_FILENAME_COMPONENT(dir_path ${file_path} DIRECTORY)
|
||||
list(APPEND includeDirs ${dir_path})
|
||||
endforeach()
|
||||
|
||||
#remove duplicates
|
||||
list(REMOVE_DUPLICATES includeDirs)
|
||||
|
||||
target_include_directories(${target_name}
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${includeDirs}
|
||||
)
|
||||
|
||||
message(STATUS "\nCreating make file for executable ${target_name}")
|
||||
message(STATUS " ${target_name} link libraries are: ${${target_link_libs}}")
|
||||
message(STATUS " ${target_name} source files are: ${source_files}")
|
||||
message(STATUS " ${target_name} include dirs are: ${includeDirs}\n")
|
||||
|
||||
|
||||
install(TARGETS ${target_name} DESTINATION bin)
|
||||
|
||||
|
||||
endmacro()
|
||||
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
#add a library to dFlow with source files and target_link_libs (thouse under the main CMakeLists.txt)
|
||||
macro(pFlow_add_library_install target_name src_files target_link_libs)
|
||||
|
||||
set(source_files ${${src_files}})
|
||||
|
||||
# add library
|
||||
add_library(${target_name} ${source_files})
|
||||
|
||||
set_target_properties(${target_name} PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ${BUILD_SHARED_LIBS}
|
||||
)
|
||||
|
||||
target_link_libraries(${target_name} PUBLIC ${${target_link_libs}})
|
||||
|
||||
#get all valid the source files under the current folder
|
||||
file(GLOB_RECURSE allValidFilePaths RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${validFiles})
|
||||
|
||||
set(validFilePathsExcSRCs ${allValidFilePaths})
|
||||
foreach(file ${source_files})
|
||||
list(REMOVE_ITEM validFilePathsExcSRCs ${file})
|
||||
endforeach()
|
||||
|
||||
set(includeDirs)
|
||||
set(includeFiles ${validFilePathsExcSRCs})
|
||||
|
||||
# get the directory names
|
||||
foreach(file_path ${validFilePathsExcSRCs})
|
||||
GET_FILENAME_COMPONENT(dir_path ${file_path} DIRECTORY)
|
||||
list(APPEND includeDirs ${dir_path})
|
||||
endforeach()
|
||||
|
||||
#remove duplicates
|
||||
list(REMOVE_DUPLICATES includeDirs)
|
||||
|
||||
|
||||
target_include_directories(${target_name}
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${includeDirs}
|
||||
)
|
||||
|
||||
message(STATUS "\nCreating make file for library ${target_name}")
|
||||
message(STATUS " ${target_name} link libraries are: ${${target_link_libs}}")
|
||||
message(STATUS " ${target_name} source files are: ${source_files}")
|
||||
message(STATUS " ${target_name} include dirs are: ${includeDirs}\n")
|
||||
|
||||
install(TARGETS ${target_name} DESTINATION lib)
|
||||
install(FILES ${includeFiles} DESTINATION include/${target_name})
|
||||
|
||||
endmacro()
|
||||
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
// the configured options and settings for Tutorial
|
||||
#define phasicFlow_VERSION_MAJOR @phasicFlow_VERSION_MAJOR@
|
||||
#define phasicFlow_VERSION_MINOR @phasicFlow_VERSION_MINOR@
|
||||
#cmakedefine BUILD_SHARED_LIBS
|
||||
#cmakedefine pFlow_Build_Serial
|
||||
#cmakedefine pFlow_Build_OpenMP
|
||||
#cmakedefine pFlow_Build_Cuda
|
||||
#cmakedefine USE_STD_PARALLEL_ALG
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
add_subdirectory(phasicFlow)
|
||||
|
||||
#add_subdirectory(Integration)
|
||||
|
||||
#add_subdirectory(Property)
|
||||
|
||||
#add_subdirectory(Particles)
|
||||
|
||||
#add_subdirectory(Interaction)
|
||||
|
||||
#add_subdirectory(MotionModel)
|
||||
|
||||
#add_subdirectory(Geometry)
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
|
||||
list(APPEND SourceFiles
|
||||
types/basicTypes/bTypesFunctions.C
|
||||
types/basicTypes/Logical.C
|
||||
types/types.C
|
||||
|
||||
globals/error.C
|
||||
|
||||
streams/token/tokenIO.C
|
||||
streams/token/token.C
|
||||
streams/iStream/IOstream.C
|
||||
streams/iStream/iIstream.C
|
||||
streams/iStream/iOstream.C
|
||||
streams/Stream/Istream.C
|
||||
streams/Stream/Ostream.C
|
||||
streams/Fstream/iFstream.C
|
||||
streams/Fstream/oFstream.C
|
||||
streams/Fstream/fileStream.C
|
||||
streams/TStream/iTstream.C
|
||||
streams/TStream/oTstream.C
|
||||
streams/streams.C
|
||||
|
||||
dictionary/dictionary.C
|
||||
dictionary/entry/iEntry.C
|
||||
dictionary/entry/dataEntry.C
|
||||
dictionary/twoPartEntry/twoPartEntry.C
|
||||
|
||||
fileSystem/fileSystem.C
|
||||
|
||||
commandLine/commandLine.C
|
||||
|
||||
random/randomReal/randomReal.C
|
||||
random/randomReal/randomReals.C
|
||||
|
||||
Timer/Timer.C
|
||||
Timer/Timers.C
|
||||
|
||||
repository/Time/Time.C
|
||||
repository/Time/timeControl.C
|
||||
repository/systemControl/systemControl.C
|
||||
repository/repository/repository.C
|
||||
repository/IOobject/objectFile.C
|
||||
repository/IOobject/IOobject.C
|
||||
repository/IOobject/IOfileHeader.C
|
||||
|
||||
structuredData/box/box.C
|
||||
structuredData/iBox/iBoxs.C
|
||||
structuredData/line/line.C
|
||||
structuredData/pointStructure/pointStructure.C
|
||||
structuredData/pointStructure/selectors/pStructSelector/pStructSelector.C
|
||||
structuredData/pointStructure/selectors/boxAll/boxAll.C
|
||||
structuredData/pointStructure/selectors/rangeAll/rangeAll.C
|
||||
structuredData/trisurfaceStructure/triSurface.C
|
||||
structuredData/trisurfaceStructure/multiTriSurface.C
|
||||
structuredData/trisurfaceStructure/stlFile.C
|
||||
structuredData/peakableRegion/sphereRegion/sphereRegion.C
|
||||
structuredData/peakableRegion/boxRegion/boxRegion.C
|
||||
structuredData/peakableRegion/peakableRegion/peakableRegion.C
|
||||
structuredData/peakableRegion/peakableRegions.C
|
||||
|
||||
containers/Vector/Vectors.C
|
||||
containers/Field/Fields.C
|
||||
containers/symArrayHD/symArrays.C
|
||||
containers/triSurfaceField/triSurfaceFields.C
|
||||
containers/bitsetHD/bitsetHDs.C
|
||||
containers/indexContainer/indexContainer.C
|
||||
|
||||
setFieldList/setFieldList.C
|
||||
setFieldList/setFieldEntry.C
|
||||
|
||||
eventSubscriber/eventSubscriber.C
|
||||
eventSubscriber/eventObserver.C)
|
||||
|
||||
set(link_libs Kokkos::kokkos tbb)
|
||||
|
||||
pFlow_add_library_install(phasicFlow SourceFiles link_libs)
|
||||
|
||||
target_include_directories(phasicFlow PUBLIC ./Kokkos ./algorithms ./globals)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
/*------------------------------- phasicFlow ---------------------------------
|
||||
O C enter of
|
||||
O O E ngineering and
|
||||
O O M ultiscale modeling of
|
||||
OOOOOOO F luid flow
|
||||
------------------------------------------------------------------------------
|
||||
Copyright (C): www.cemf.ir
|
||||
email: hamid.r.norouzi AT gmail.com
|
||||
------------------------------------------------------------------------------
|
||||
Licence:
|
||||
This file is part of phasicFlow code. It is a free software for simulating
|
||||
granular and multiphase flows. You can redistribute it and/or modify it under
|
||||
the terms of GNU General Public License v3 or any other later versions.
|
||||
|
||||
phasicFlow is distributed to help others in their research in the field of
|
||||
granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
#ifndef __bTypes_H__
|
||||
#define __bTypes_H__
|
||||
|
||||
#include "builtinTypes.H"
|
||||
#include "bTypesFunctions.H"
|
||||
#include "Logical.H"
|
||||
#include "math.H"
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
|
@ -44,11 +44,13 @@ using int32 = int;
|
|||
|
||||
using int64 = long long int;
|
||||
|
||||
using uint16 = unsigned short int ;
|
||||
|
||||
using uint32 = unsigned int;
|
||||
|
||||
using label = std::size_t;
|
||||
|
||||
using word = std:string;
|
||||
using word = std::string;
|
||||
|
||||
|
||||
} // end of pFlow
|
||||
|
|
Loading…
Reference in New Issue