Skip to content
Snippets Groups Projects
Commit cecd9423 authored by Cristian Lalescu's avatar Cristian Lalescu
Browse files

Merge branch 'bugfix/compilation_flags' into 'develop'

implements alternate linking to MPI/OpenMP

See merge request !47
parents 148d3b46 ac00c7f1
Branches
Tags 4.3
2 merge requests!48merge develop,!47implements alternate linking to MPI/OpenMP
Pipeline #140801 passed
...@@ -31,6 +31,14 @@ project(TurTLE) ...@@ -31,6 +31,14 @@ project(TurTLE)
string(TIMESTAMP BUILD_DATE "%Y-%m-%d") string(TIMESTAMP BUILD_DATE "%Y-%m-%d")
#####################################################################################
## CXX Standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#####################################################################################
##################################################################################### #####################################################################################
## Python and version ## Python and version
...@@ -49,33 +57,32 @@ execute_process( ...@@ -49,33 +57,32 @@ execute_process(
project(TurTLE project(TurTLE
VERSION ${TURTLE_VERSION} VERSION ${TURTLE_VERSION}
LANGUAGES C CXX) LANGUAGES C CXX)
#####################################################################################
##################################################################################### add_library(TurTLE STATIC "")
## CXX Standard
set(CMAKE_CXX_STANDARD 17) target_compile_options(TurTLE PRIVATE $<$<CONFIG:DEBUG>:-O1>)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
##################################################################################### #####################################################################################
##################################################################################### #####################################################################################
## OpenMP ## OpenMP
find_package(OpenMP REQUIRED) find_package(OpenMP REQUIRED)
target_link_libraries(TurTLE
PRIVATE
OpenMP::OpenMP_CXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
##################################################################################### #####################################################################################
##################################################################################### #####################################################################################
## MPI ## MPI
find_package(MPI REQUIRED) find_package(MPI REQUIRED)
target_link_libraries(TurTLE
PRIVATE
MPI::MPI_C)
set(CMAKE_CXX_COMPILE_FLAGS "${CMAKE_CXX_COMPILE_FLAGS} ${MPI_CXX_COMPILE_OPTIONS}") #include_directories(${MPI_CXX_INCLUDE_DIRS})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MPI_CXX_LINK_FLAGS}") #add_definitions(${MPI_CXX_COMPILE_DEFINITIONS})
include_directories(${MPI_CXX_INCLUDE_DIRS})
add_definitions(${MPI_CXX_COMPILE_DEFINITIONS})
# set(CMAKE_CXX_EXTENSIONS OFF) # set(CMAKE_CXX_EXTENSIONS OFF)
##################################################################################### #####################################################################################
...@@ -212,13 +219,19 @@ endif() ...@@ -212,13 +219,19 @@ endif()
set(HDF5_PREFER_PARALLEL TRUE) set(HDF5_PREFER_PARALLEL TRUE)
set(HDF5_NO_FIND_PACKAGE_CONFIG_FILE TRUE) set(HDF5_NO_FIND_PACKAGE_CONFIG_FILE TRUE)
find_package(HDF5 REQUIRED) find_package(HDF5 REQUIRED COMPONENTS C)
target_link_libraries(TurTLE
PRIVATE
HDF5::HDF5)
target_include_directories(TurTLE
PUBLIC
${HDF5_C_INCLUDE_DIR})
message(STATUS "HDF5_C_INCLUDE_DIRS ${HDF5_C_INCLUDE_DIRS}") #message(STATUS "HDF5_C_INCLUDE_DIRS ${HDF5_C_INCLUDE_DIRS}")
include_directories(${HDF5_C_INCLUDE_DIRS}) #include_directories(${HDF5_C_INCLUDE_DIRS})
add_definitions(${HDF5_C_DEFINITIONS}) #add_definitions(${HDF5_C_DEFINITIONS})
list(APPEND TURTLE_LIBS "${HDF5_C_LIBRARIES}") #list(APPEND TURTLE_LIBS "${HDF5_C_LIBRARIES}")
option(TURTLE_HDF5_USE_SZIP "Set to on to also link against SZIP" OFF) option(TURTLE_HDF5_USE_SZIP "Set to on to also link against SZIP" OFF)
...@@ -227,7 +240,10 @@ if(TURTLE_HDF5_USE_SZIP) ...@@ -227,7 +240,10 @@ if(TURTLE_HDF5_USE_SZIP)
if(TURTLE_HDF5_SZIP_LIB_PATH) if(TURTLE_HDF5_SZIP_LIB_PATH)
link_directories(${TURTLE_HDF5_SZIP_LIB_PATH}) link_directories(${TURTLE_HDF5_SZIP_LIB_PATH})
endif() endif()
list(APPEND TURTLE_LIBS "z") #list(APPEND TURTLE_LIBS "z")
target_link_libraries(TurTLE
PRIVATE
z)
endif() endif()
##################################################################################### #####################################################################################
...@@ -237,8 +253,9 @@ endif() ...@@ -237,8 +253,9 @@ endif()
find_package(GSL) find_package(GSL)
if (GSL_FOUND) if (GSL_FOUND)
include_directories(${GSL_INCLUDE_DIRS}) target_link_libraries(TurTLE
list(APPEND TURTLE_LIBS "${GSL_LIBRARIES}") PRIVATE
GSL::gsl)
endif() endif()
##################################################################################### #####################################################################################
...@@ -252,9 +269,8 @@ if(DEFINED ENV{PINCHECK_ROOT}) ...@@ -252,9 +269,8 @@ if(DEFINED ENV{PINCHECK_ROOT})
HINTS ${PINCHECK_INCLUDE}) HINTS ${PINCHECK_INCLUDE})
if(PINCHECK_HEADER) if(PINCHECK_HEADER)
message("found pincheck header ${PINCHECK_HEADER}") message("found pincheck header ${PINCHECK_HEADER}")
include_directories($ENV{PINCHECK_ROOT}/include) target_include_directories(TurTLE PUBLIC $ENV{PINCHECK_ROOT}/include)
#add_definitions(-DPINCHECK_FOUND) target_compile_definitions(TurTLE PRIVATE PINCHECK_FOUND)
set(CMAKE_CXX_COMPILE_FLAGS "${CMAKE_CXX_COMPILE_FLAGS} -DPINCHECK_FOUND")
endif() endif()
endif() endif()
##################################################################################### #####################################################################################
...@@ -311,9 +327,6 @@ find_library( ...@@ -311,9 +327,6 @@ find_library(
set(TURTLE_LIBS ${FFTW_MPI} ${TURTLE_LIBS}) set(TURTLE_LIBS ${FFTW_MPI} ${TURTLE_LIBS})
##################################################################################### #####################################################################################
list(APPEND TURTLE_LIBS "${MPI_CXX_LIBRARIES}")
list(APPEND TURTLE_LIBS "${OpenMP_CXX_LIB_NAMES}")
##################################################################################### #####################################################################################
## Get the links and include from deps ## Get the links and include from deps
...@@ -322,194 +335,11 @@ get_property(ALL_LINK_DIRS DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY LINK_D ...@@ -322,194 +335,11 @@ get_property(ALL_LINK_DIRS DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY LINK_D
##################################################################################### #####################################################################################
##################################################################################### #####################################################################################
## Build the lib ## Add sources
include_directories(${PROJECT_SOURCE_DIR}/cpp) include_directories(${PROJECT_SOURCE_DIR}/cpp)
#file(GLOB_RECURSE cpp_for_lib ${PROJECT_SOURCE_DIR}/*.cpp) add_subdirectory(cpp)
set(cpp_for_lib
${PROJECT_SOURCE_DIR}/cpp/full_code/code_base.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/direct_numerical_simulation.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSE.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVE.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/static_field.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/kraichnan_field.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/joint_acc_vel_stats.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/pressure_stats.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/filter_test.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/field_test.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/write_filtered_test.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/dealias_test.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/Gauss_field_test.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/symmetrize_test.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/field_output_test.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/phase_shift_test.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test_tracer_set.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/get_rfields.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/get_velocity.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/get_3D_correlations.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/write_rpressure.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/bandpass_stats.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/field_single_to_double.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/resize.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVE_field_stats.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/native_binary_to_hdf5.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/postprocess.cpp
${PROJECT_SOURCE_DIR}/cpp/base.cpp
${PROJECT_SOURCE_DIR}/cpp/field.cpp
${PROJECT_SOURCE_DIR}/cpp/kspace.cpp
${PROJECT_SOURCE_DIR}/cpp/field_layout.cpp
${PROJECT_SOURCE_DIR}/cpp/hdf5_tools.cpp
${PROJECT_SOURCE_DIR}/cpp/fftw_tools.cpp
${PROJECT_SOURCE_DIR}/cpp/vorticity_equation.cpp
${PROJECT_SOURCE_DIR}/cpp/field_binary_IO.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n0.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n1.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n2.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n3.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n4.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n5.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n6.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n7.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n8.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n9.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n10.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/Lagrange_polys.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/field_tinterpolator.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/particle_set.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/rhs/tracer_rhs.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/rhs/tracer_with_collision_counter_rhs.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/particle_solver.cpp
${PROJECT_SOURCE_DIR}/cpp/scope_timer.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test_interpolation.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVEparticles.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVEcomplex_particles.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVE_Stokes_particles.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVEp_extra_sampling.cpp
${PROJECT_SOURCE_DIR}/cpp/particles/inner/particles_inner_computer.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/ornstein_uhlenbeck_process.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/ou_vorticity_equation.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test_interpolation_methods.cpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test_particle_integration.cpp)
set(hpp_for_lib
${PROJECT_SOURCE_DIR}/cpp/full_code/code_base.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/direct_numerical_simulation.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSE.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVE.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/static_field.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/kraichnan_field.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/joint_acc_vel_stats.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/pressure_stats.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/filter_test.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/dealias_test.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/Gauss_field_test.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/field_test.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/write_filtered_test.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/symmetrize_test.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/field_output_test.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/phase_shift_test.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test_tracer_set.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/get_rfields.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/get_velocity.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/get_3D_correlations.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/write_rpressure.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/bandpass_stats.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/field_single_to_double.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/resize.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVE_field_stats.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/native_binary_to_hdf5.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/postprocess.hpp
${PROJECT_SOURCE_DIR}/cpp/field.hpp
${PROJECT_SOURCE_DIR}/cpp/kspace.hpp
${PROJECT_SOURCE_DIR}/cpp/field_layout.hpp
${PROJECT_SOURCE_DIR}/cpp/hdf5_tools.hpp
${PROJECT_SOURCE_DIR}/cpp/fftw_tools.hpp
${PROJECT_SOURCE_DIR}/cpp/vorticity_equation.hpp
${PROJECT_SOURCE_DIR}/cpp/field_binary_IO.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n0.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n1.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n2.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n3.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n4.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n5.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n6.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n7.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n8.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n9.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/spline_n10.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/Lagrange_polys.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/abstract_particle_set.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/particle_set.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/field_tinterpolator.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/abstract_particle_rhs.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/rhs/tracer_rhs.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/rhs/deformation_tensor_rhs.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/rhs/tracer_with_collision_counter_rhs.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particle_solver.hpp
${PROJECT_SOURCE_DIR}/cpp/scope_timer.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test_interpolation.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVEparticles.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVEcomplex_particles.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVE_Stokes_particles.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVEp_extra_sampling.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/inner/particles_inner_computer.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/inner/particles_inner_computer_2nd_order.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/inner/particles_inner_computer_empty.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/abstract_particles_input.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/abstract_particles_output.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/abstract_particles_system.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/abstract_particles_system_with_p2p.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/alltoall_exchanger.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/lock_free_bool_array.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/p2p/p2p_computer_empty.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/p2p/p2p_computer.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/p2p/p2p_ghost_collisions.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/p2p/p2p_distr_mpi.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/p2p/p2p_tree.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_adams_bashforth.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_distr_mpi.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/particles_field_computer.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/interpolation/particles_generic_interp.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_input_hdf5.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_output_hdf5.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_output_mpiio.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_output_sampling_hdf5.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_sampling.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_system_builder.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_system.hpp
${PROJECT_SOURCE_DIR}/cpp/particles/particles_utils.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/main_code.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/codes_with_no_output.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVE_no_output.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/NSVEparticles_no_output.hpp
${PROJECT_SOURCE_DIR}/cpp/base.hpp
${PROJECT_SOURCE_DIR}/cpp/env_utils.hpp
${PROJECT_SOURCE_DIR}/cpp/fftw_interface.hpp
${PROJECT_SOURCE_DIR}/cpp/turtle_timer.hpp
${PROJECT_SOURCE_DIR}/cpp/omputils.hpp
${PROJECT_SOURCE_DIR}/cpp/shared_array.hpp
${PROJECT_SOURCE_DIR}/cpp/spectrum_function.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/ornstein_uhlenbeck_process.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/ou_vorticity_equation.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test_interpolation_methods.hpp
${PROJECT_SOURCE_DIR}/cpp/full_code/test_particle_integration.hpp)
if(GSL_FOUND)
LIST(APPEND cpp_for_lib ${PROJECT_SOURCE_DIR}/cpp/particles/rhs/deformation_tensor_rhs.cpp)
LIST(APPEND hpp_for_lib ${PROJECT_SOURCE_DIR}/cpp/particles/rhs/deformation_tensor_rhs.hpp)
endif()
#file(GLOB_RECURSE hpp_for_lib ${PROJECT_SOURCE_DIR}/*.hpp)
LIST(APPEND source_files ${hpp_for_lib} ${cpp_for_lib})
add_library(TurTLE ${source_files})
target_link_libraries(TurTLE ${TURTLE_LIBS})
target_compile_options(TurTLE PRIVATE $<$<CONFIG:DEBUG>:-O1>)
install(TARGETS TurTLE EXPORT TURTLE_EXPORT DESTINATION lib/ ) install(TARGETS TurTLE EXPORT TURTLE_EXPORT DESTINATION lib/ )
install(DIRECTORY ${PROJECT_SOURCE_DIR}/cpp/ DESTINATION include/TurTLE/ FILES_MATCHING PATTERN "*.h*") install(DIRECTORY ${PROJECT_SOURCE_DIR}/cpp/ DESTINATION include/TurTLE/ FILES_MATCHING PATTERN "*.h*")
......
...@@ -205,17 +205,20 @@ class _code(_base): ...@@ -205,17 +205,20 @@ class _code(_base):
with open('CMakeLists.txt', 'w') as outfile: with open('CMakeLists.txt', 'w') as outfile:
outfile.write('cmake_minimum_required(VERSION 3.10)\n') outfile.write('cmake_minimum_required(VERSION 3.10)\n')
outfile.write('cmake_policy(VERSION 3.12)\n') outfile.write('cmake_policy(VERSION 3.12)\n')
outfile.write('project(project_{0} LANGUAGES C CXX)\n'.format(self.name))
outfile.write('set(CMAKE_CXX_STANDARD 17)\n') outfile.write('set(CMAKE_CXX_STANDARD 17)\n')
outfile.write('set(CMAKE_CXX_STANDARD_REQUIRED ON)\n') outfile.write('set(CMAKE_CXX_STANDARD_REQUIRED ON)\n')
outfile.write('project(project_{0} LANGUAGES C CXX)\n'.format(self.name))
outfile.write('add_executable({0} {0}.cpp)\n'.format(self.name))
outfile.write('find_package(OpenMP REQUIRED)\n') outfile.write('find_package(OpenMP REQUIRED)\n')
outfile.write('set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")\n')
outfile.write('find_package(MPI REQUIRED)\n') outfile.write('find_package(MPI REQUIRED)\n')
outfile.write('set(CMAKE_CXX_COMPILE_FLAGS "${CMAKE_CXX_COMPILE_FLAGS} ${MPI_CXX_COMPILE_OPTIONS}")\n') outfile.write('target_link_libraries({0} PRIVATE OpenMP::OpenMP_CXX MPI::MPI_C)\n'.format(self.name))
outfile.write('include_directories(${MPI_CXX_INCLUDE_DIRS})\n') outfile.write('set(HDF5_STATIC ON)\n')
outfile.write('add_definitions(${MPI_CXX_COMPILE_DEFINITIONS})\n') outfile.write('set(HDF5_PREFER_PARALLEL TRUE)\n')
outfile.write('list(APPEND TURTLE_LIBS "${MPI_CXX_LIBRARIES}")\n') outfile.write('set(HDF5_NO_FIND_PACKAGE_CONFIG_FILE TRUE)\n')
outfile.write('list(APPEND TURTLE_LIBS "${OpenMP_CXX_LIB_NAMES}")\n') outfile.write('find_package(HDF5 REQUIRED COMPONENTS C)\n')
outfile.write('message("found HDF5 include dir at ${HDF5_C_INCLUDE_DIR}")\n')
outfile.write('target_link_libraries({0} PRIVATE HDF5::HDF5)\n'.format(self.name))
outfile.write('target_include_directories({0} PRIVATE ${{HDF5_C_INCLUDE_DIR}})\n'.format(self.name))
#ideally we should use something like the following 2 lines #ideally we should use something like the following 2 lines
#outfile.write('set(CMAKE_CXX_COMPILER ${TURTLE_CXX_COMPILER})\n') #outfile.write('set(CMAKE_CXX_COMPILER ${TURTLE_CXX_COMPILER})\n')
#outfile.write('set(CMAKE_C_COMPILER ${TURTLE_C_COMPILER})\n') #outfile.write('set(CMAKE_C_COMPILER ${TURTLE_C_COMPILER})\n')
...@@ -223,8 +226,6 @@ class _code(_base): ...@@ -223,8 +226,6 @@ class _code(_base):
outfile.write('set(CMAKE_CXX_COMPILE_FLAGS "${CMAKE_CXX_COMPILE_FLAGS} ${TURTLE_CXX_COMPILE_FLAGS}")\n') outfile.write('set(CMAKE_CXX_COMPILE_FLAGS "${CMAKE_CXX_COMPILE_FLAGS} ${TURTLE_CXX_COMPILE_FLAGS}")\n')
outfile.write('set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_COMPILE_FLAGS}")\n') outfile.write('set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_COMPILE_FLAGS}")\n')
outfile.write('set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${TURTLE_EXE_LINKER_FLAGS}")\n') outfile.write('set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${TURTLE_EXE_LINKER_FLAGS}")\n')
outfile.write('set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MPI_CXX_LINK_FLAGS}")\n')
outfile.write('set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")\n')
outfile.write('if(NDEBUG)\n') outfile.write('if(NDEBUG)\n')
outfile.write(' add_definitions(-DNDEBUG)\n') outfile.write(' add_definitions(-DNDEBUG)\n')
outfile.write('endif()\n') outfile.write('endif()\n')
...@@ -234,9 +235,8 @@ class _code(_base): ...@@ -234,9 +235,8 @@ class _code(_base):
outfile.write('include_directories(${TURTLE_INCLUDE_DIRECTORIES} ${TURTLE_INCLUDE_DIR}/TurTLE)\n') outfile.write('include_directories(${TURTLE_INCLUDE_DIRECTORIES} ${TURTLE_INCLUDE_DIR}/TurTLE)\n')
outfile.write('link_directories(${TURTLE_LINK_DIRECTORIES} ${TURTLE_LIBRARIES_DIR})\n') outfile.write('link_directories(${TURTLE_LINK_DIRECTORIES} ${TURTLE_LIBRARIES_DIR})\n')
outfile.write('find_library(TURTLE_STATIC_LIBRARY TurTLE HINTS ${TURTLE_LIBRARIES_DIR})\n') outfile.write('find_library(TURTLE_STATIC_LIBRARY TurTLE HINTS ${TURTLE_LIBRARIES_DIR})\n')
outfile.write('add_executable({0} {0}.cpp)\n'.format(self.name)) outfile.write('target_link_libraries(' + self.name + ' PRIVATE ${TURTLE_STATIC_LIBRARY})\n')
outfile.write('target_link_libraries(' + self.name + ' ${TURTLE_STATIC_LIBRARY})\n') outfile.write('target_link_libraries(' + self.name + ' PRIVATE ${TURTLE_LIBS})\n')
outfile.write('target_link_libraries(' + self.name + ' ${TURTLE_LIBS})\n')
fname = self.dns_type + '_extra_cmake.txt' fname = self.dns_type + '_extra_cmake.txt'
if os.path.exists(fname): if os.path.exists(fname):
with open(fname, 'r') as ifile: with open(fname, 'r') as ifile:
......
#######################################################################
# #
# Copyright 2019 Max Planck Institute #
# for Dynamics and Self-Organization #
# #
# This file is part of TurTLE. #
# #
# TurTLE is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published #
# by the Free Software Foundation, either version 3 of the License, #
# or (at your option) any later version. #
# #
# TurTLE is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with TurTLE. If not, see <http://www.gnu.org/licenses/> #
# #
# Contact: Cristian.Lalescu@ds.mpg.de #
# #
#######################################################################
set(cpp_for_lib
${CMAKE_CURRENT_LIST_DIR}/full_code/code_base.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/direct_numerical_simulation.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSE.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVE.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/static_field.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/kraichnan_field.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/joint_acc_vel_stats.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/pressure_stats.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/filter_test.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/field_test.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/write_filtered_test.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/dealias_test.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/Gauss_field_test.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/symmetrize_test.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/field_output_test.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/phase_shift_test.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test_tracer_set.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/get_rfields.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/get_velocity.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/get_3D_correlations.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/write_rpressure.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/bandpass_stats.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/field_single_to_double.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/resize.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVE_field_stats.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/native_binary_to_hdf5.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/postprocess.cpp
${CMAKE_CURRENT_LIST_DIR}/base.cpp
${CMAKE_CURRENT_LIST_DIR}/field.cpp
${CMAKE_CURRENT_LIST_DIR}/kspace.cpp
${CMAKE_CURRENT_LIST_DIR}/field_layout.cpp
${CMAKE_CURRENT_LIST_DIR}/hdf5_tools.cpp
${CMAKE_CURRENT_LIST_DIR}/fftw_tools.cpp
${CMAKE_CURRENT_LIST_DIR}/vorticity_equation.cpp
${CMAKE_CURRENT_LIST_DIR}/field_binary_IO.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n0.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n1.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n2.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n3.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n4.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n5.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n6.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n7.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n8.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n9.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n10.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/Lagrange_polys.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/field_tinterpolator.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/particle_set.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/rhs/tracer_rhs.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/rhs/tracer_with_collision_counter_rhs.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/particle_solver.cpp
${CMAKE_CURRENT_LIST_DIR}/scope_timer.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test_interpolation.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVEparticles.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVEcomplex_particles.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVE_Stokes_particles.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVEp_extra_sampling.cpp
${CMAKE_CURRENT_LIST_DIR}/particles/inner/particles_inner_computer.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/ornstein_uhlenbeck_process.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/ou_vorticity_equation.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test_interpolation_methods.cpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test_particle_integration.cpp)
set(hpp_for_lib
${CMAKE_CURRENT_LIST_DIR}/full_code/code_base.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/direct_numerical_simulation.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSE.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVE.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/static_field.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/kraichnan_field.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/joint_acc_vel_stats.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/pressure_stats.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/filter_test.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/dealias_test.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/Gauss_field_test.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/field_test.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/write_filtered_test.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/symmetrize_test.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/field_output_test.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/phase_shift_test.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test_tracer_set.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/get_rfields.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/get_velocity.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/get_3D_correlations.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/write_rpressure.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/bandpass_stats.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/field_single_to_double.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/resize.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVE_field_stats.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/native_binary_to_hdf5.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/postprocess.hpp
${CMAKE_CURRENT_LIST_DIR}/field.hpp
${CMAKE_CURRENT_LIST_DIR}/kspace.hpp
${CMAKE_CURRENT_LIST_DIR}/field_layout.hpp
${CMAKE_CURRENT_LIST_DIR}/hdf5_tools.hpp
${CMAKE_CURRENT_LIST_DIR}/fftw_tools.hpp
${CMAKE_CURRENT_LIST_DIR}/vorticity_equation.hpp
${CMAKE_CURRENT_LIST_DIR}/field_binary_IO.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n0.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n1.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n2.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n3.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n4.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n5.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n6.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n7.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n8.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n9.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/spline_n10.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/Lagrange_polys.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/abstract_particle_set.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/particle_set.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/field_tinterpolator.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/abstract_particle_rhs.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/rhs/tracer_rhs.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/rhs/deformation_tensor_rhs.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/rhs/tracer_with_collision_counter_rhs.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particle_solver.hpp
${CMAKE_CURRENT_LIST_DIR}/scope_timer.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test_interpolation.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVEparticles.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVEcomplex_particles.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVE_Stokes_particles.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVEp_extra_sampling.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/inner/particles_inner_computer.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/inner/particles_inner_computer_2nd_order.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/inner/particles_inner_computer_empty.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/abstract_particles_input.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/abstract_particles_output.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/abstract_particles_system.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/abstract_particles_system_with_p2p.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/alltoall_exchanger.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/lock_free_bool_array.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/p2p/p2p_computer_empty.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/p2p/p2p_computer.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/p2p/p2p_ghost_collisions.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/p2p/p2p_distr_mpi.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/p2p/p2p_tree.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_adams_bashforth.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_distr_mpi.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/particles_field_computer.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/interpolation/particles_generic_interp.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_input_hdf5.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_output_hdf5.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_output_mpiio.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_output_sampling_hdf5.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_sampling.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_system_builder.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_system.hpp
${CMAKE_CURRENT_LIST_DIR}/particles/particles_utils.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/main_code.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/codes_with_no_output.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVE_no_output.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/NSVEparticles_no_output.hpp
${CMAKE_CURRENT_LIST_DIR}/base.hpp
${CMAKE_CURRENT_LIST_DIR}/env_utils.hpp
${CMAKE_CURRENT_LIST_DIR}/fftw_interface.hpp
${CMAKE_CURRENT_LIST_DIR}/turtle_timer.hpp
${CMAKE_CURRENT_LIST_DIR}/omputils.hpp
${CMAKE_CURRENT_LIST_DIR}/shared_array.hpp
${CMAKE_CURRENT_LIST_DIR}/spectrum_function.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/ornstein_uhlenbeck_process.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/ou_vorticity_equation.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test_interpolation_methods.hpp
${CMAKE_CURRENT_LIST_DIR}/full_code/test_particle_integration.hpp)
if(GSL_FOUND)
LIST(APPEND cpp_for_lib ${CMAKE_CURRENT_LIST_DIR}/particles/rhs/deformation_tensor_rhs.cpp)
LIST(APPEND hpp_for_lib ${CMAKE_CURRENT_LIST_DIR}/particles/rhs/deformation_tensor_rhs.hpp)
endif()
LIST(APPEND source_files ${hpp_for_lib} ${cpp_for_lib})
target_sources(TurTLE
PRIVATE
${source_files})
#EOF
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment