From 3f7b1752c4e04aef503c2b2a4db05d65e929ba7e Mon Sep 17 00:00:00 2001 From: Cristian C Lalescu <Cristian.Lalescu@mpcdf.mpg.de> Date: Tue, 23 Aug 2022 18:01:13 +0200 Subject: [PATCH 1/5] [expt] implements alternate linking to MPI/OpenMP this is an attempt to fix problems related to gcc receiving semicolon-separated lists of parameters. I don't have this problem myself on any of my machines, so I'm trying blind... --- CMakeLists.txt | 60 ++++++++++++++++++++++++++++++------------------- TurTLE/_code.py | 22 +++++++++--------- 2 files changed, 48 insertions(+), 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 81488582..760e377d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,9 +28,11 @@ cmake_minimum_required(VERSION 3.6) cmake_policy(VERSION 3.12) project(TurTLE) +add_library(TurTLE STATIC "") string(TIMESTAMP BUILD_DATE "%Y-%m-%d") + ##################################################################################### ## Python and version @@ -49,6 +51,8 @@ execute_process( project(TurTLE VERSION ${TURTLE_VERSION} LANGUAGES C CXX) + +target_compile_options(TurTLE PRIVATE $<$<CONFIG:DEBUG>:-O1>) ##################################################################################### ##################################################################################### @@ -62,20 +66,22 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) ## OpenMP 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 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}") -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MPI_CXX_LINK_FLAGS}") -include_directories(${MPI_CXX_INCLUDE_DIRS}) -add_definitions(${MPI_CXX_COMPILE_DEFINITIONS}) +#include_directories(${MPI_CXX_INCLUDE_DIRS}) +#add_definitions(${MPI_CXX_COMPILE_DEFINITIONS}) # set(CMAKE_CXX_EXTENSIONS OFF) ##################################################################################### @@ -212,13 +218,19 @@ endif() set(HDF5_PREFER_PARALLEL 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}) -add_definitions(${HDF5_C_DEFINITIONS}) -list(APPEND TURTLE_LIBS "${HDF5_C_LIBRARIES}") +#include_directories(${HDF5_C_INCLUDE_DIRS}) +#add_definitions(${HDF5_C_DEFINITIONS}) +#list(APPEND TURTLE_LIBS "${HDF5_C_LIBRARIES}") option(TURTLE_HDF5_USE_SZIP "Set to on to also link against SZIP" OFF) @@ -227,7 +239,10 @@ if(TURTLE_HDF5_USE_SZIP) if(TURTLE_HDF5_SZIP_LIB_PATH) link_directories(${TURTLE_HDF5_SZIP_LIB_PATH}) endif() - list(APPEND TURTLE_LIBS "z") + #list(APPEND TURTLE_LIBS "z") + target_link_libraries(TurTLE + PRIVATE + z) endif() ##################################################################################### @@ -237,8 +252,9 @@ endif() find_package(GSL) if (GSL_FOUND) - include_directories(${GSL_INCLUDE_DIRS}) - list(APPEND TURTLE_LIBS "${GSL_LIBRARIES}") + target_link_libraries(TurTLE + PRIVATE + GSL) endif() ##################################################################################### @@ -252,9 +268,8 @@ if(DEFINED ENV{PINCHECK_ROOT}) HINTS ${PINCHECK_INCLUDE}) if(PINCHECK_HEADER) message("found pincheck header ${PINCHECK_HEADER}") - include_directories($ENV{PINCHECK_ROOT}/include) - #add_definitions(-DPINCHECK_FOUND) - set(CMAKE_CXX_COMPILE_FLAGS "${CMAKE_CXX_COMPILE_FLAGS} -DPINCHECK_FOUND") + target_include_directories(TurTLE PUBLIC $ENV{PINCHECK_ROOT}/include) + target_compile_definitions(TurTLE PRIVATE PINCHECK_FOUND) endif() endif() ##################################################################################### @@ -311,8 +326,8 @@ find_library( set(TURTLE_LIBS ${FFTW_MPI} ${TURTLE_LIBS}) ##################################################################################### -list(APPEND TURTLE_LIBS "${MPI_CXX_LIBRARIES}") -list(APPEND TURTLE_LIBS "${OpenMP_CXX_LIB_NAMES}") +#list(APPEND TURTLE_LIBS "${MPI_CXX_LIBRARIES}") +#list(APPEND TURTLE_LIBS "${OpenMP_CXX_LIB_NAMES}") ##################################################################################### ## Get the links and include from deps @@ -506,10 +521,9 @@ 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>) +target_sources(TurTLE + PRIVATE + ${source_files}) install(TARGETS TurTLE EXPORT TURTLE_EXPORT DESTINATION lib/ ) install(DIRECTORY ${PROJECT_SOURCE_DIR}/cpp/ DESTINATION include/TurTLE/ FILES_MATCHING PATTERN "*.h*") diff --git a/TurTLE/_code.py b/TurTLE/_code.py index 24481fbc..6f772ba5 100644 --- a/TurTLE/_code.py +++ b/TurTLE/_code.py @@ -206,16 +206,19 @@ class _code(_base): outfile.write('cmake_minimum_required(VERSION 3.10)\n') outfile.write('cmake_policy(VERSION 3.12)\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('set(CMAKE_CXX_STANDARD 17)\n') outfile.write('set(CMAKE_CXX_STANDARD_REQUIRED ON)\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('set(CMAKE_CXX_COMPILE_FLAGS "${CMAKE_CXX_COMPILE_FLAGS} ${MPI_CXX_COMPILE_OPTIONS}")\n') - outfile.write('include_directories(${MPI_CXX_INCLUDE_DIRS})\n') - outfile.write('add_definitions(${MPI_CXX_COMPILE_DEFINITIONS})\n') - outfile.write('list(APPEND TURTLE_LIBS "${MPI_CXX_LIBRARIES}")\n') - outfile.write('list(APPEND TURTLE_LIBS "${OpenMP_CXX_LIB_NAMES}")\n') + outfile.write('target_link_libraries({0} PRIVATE OpenMP::OpenMP_CXX MPI::MPI_C)\n'.format(self.name)) + outfile.write('set(HDF5_STATIC ON)\n') + outfile.write('set(HDF5_PREFER_PARALLEL TRUE)\n') + outfile.write('set(HDF5_NO_FIND_PACKAGE_CONFIG_FILE TRUE)\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 #outfile.write('set(CMAKE_CXX_COMPILER ${TURTLE_CXX_COMPILER})\n') #outfile.write('set(CMAKE_C_COMPILER ${TURTLE_C_COMPILER})\n') @@ -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_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} ${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(' add_definitions(-DNDEBUG)\n') outfile.write('endif()\n') @@ -234,9 +235,8 @@ class _code(_base): 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('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 + ' ${TURTLE_STATIC_LIBRARY})\n') - outfile.write('target_link_libraries(' + self.name + ' ${TURTLE_LIBS})\n') + outfile.write('target_link_libraries(' + self.name + ' PRIVATE ${TURTLE_STATIC_LIBRARY})\n') + outfile.write('target_link_libraries(' + self.name + ' PRIVATE ${TURTLE_LIBS})\n') fname = self.dns_type + '_extra_cmake.txt' if os.path.exists(fname): with open(fname, 'r') as ifile: -- GitLab From 009cae6df1f72890b232673814813403bb43918c Mon Sep 17 00:00:00 2001 From: Cristian C Lalescu <Cristian.Lalescu@mpcdf.mpg.de> Date: Tue, 23 Aug 2022 18:51:50 +0200 Subject: [PATCH 2/5] [expt] fixes GSL linking step --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 760e377d..17826be0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -254,7 +254,7 @@ find_package(GSL) if (GSL_FOUND) target_link_libraries(TurTLE PRIVATE - GSL) + GSL::gsl) endif() ##################################################################################### -- GitLab From a83d266005218b3f8f6a12da9fabdc937d64d043 Mon Sep 17 00:00:00 2001 From: Cristian C Lalescu <Cristian.Lalescu@mpcdf.mpg.de> Date: Tue, 23 Aug 2022 18:55:13 +0200 Subject: [PATCH 3/5] [expt] permute CXX standard with add_library command --- CMakeLists.txt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 17826be0..fd6f53a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,10 +28,16 @@ cmake_minimum_required(VERSION 3.6) cmake_policy(VERSION 3.12) project(TurTLE) -add_library(TurTLE STATIC "") string(TIMESTAMP BUILD_DATE "%Y-%m-%d") +##################################################################################### +## CXX Standard + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +##################################################################################### + ##################################################################################### ## Python and version @@ -52,14 +58,9 @@ project(TurTLE VERSION ${TURTLE_VERSION} LANGUAGES C CXX) -target_compile_options(TurTLE PRIVATE $<$<CONFIG:DEBUG>:-O1>) -##################################################################################### - -##################################################################################### -## CXX Standard +add_library(TurTLE STATIC "") -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) +target_compile_options(TurTLE PRIVATE $<$<CONFIG:DEBUG>:-O1>) ##################################################################################### ##################################################################################### -- GitLab From 5a0641265eea8b0b2f7a5226e64553948e51def6 Mon Sep 17 00:00:00 2001 From: Cristian C Lalescu <Cristian.Lalescu@mpcdf.mpg.de> Date: Tue, 23 Aug 2022 19:16:50 +0200 Subject: [PATCH 4/5] fixes _code.py CMake standard request --- TurTLE/_code.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TurTLE/_code.py b/TurTLE/_code.py index 6f772ba5..fcd6ac5b 100644 --- a/TurTLE/_code.py +++ b/TurTLE/_code.py @@ -205,10 +205,10 @@ class _code(_base): with open('CMakeLists.txt', 'w') as outfile: outfile.write('cmake_minimum_required(VERSION 3.10)\n') outfile.write('cmake_policy(VERSION 3.12)\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('set(CMAKE_CXX_STANDARD 17)\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(MPI REQUIRED)\n') outfile.write('target_link_libraries({0} PRIVATE OpenMP::OpenMP_CXX MPI::MPI_C)\n'.format(self.name)) -- GitLab From ac00c7f171f36a6809e3bdcd9fb3414857755a88 Mon Sep 17 00:00:00 2001 From: Cristian C Lalescu <Cristian.Lalescu@mpcdf.mpg.de> Date: Wed, 24 Aug 2022 07:41:27 +0200 Subject: [PATCH 5/5] splits CMakeLists.txt to ease parsing --- CMakeLists.txt | 189 +--------------------------------------- cpp/CMakeLists.txt | 210 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 212 insertions(+), 187 deletions(-) create mode 100644 cpp/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index fd6f53a1..a2a18ce0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -327,9 +327,6 @@ find_library( 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 @@ -338,193 +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) -#file(GLOB_RECURSE cpp_for_lib ${PROJECT_SOURCE_DIR}/*.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}) - -target_sources(TurTLE - PRIVATE - ${source_files}) +add_subdirectory(cpp) install(TARGETS TurTLE EXPORT TURTLE_EXPORT DESTINATION lib/ ) install(DIRECTORY ${PROJECT_SOURCE_DIR}/cpp/ DESTINATION include/TurTLE/ FILES_MATCHING PATTERN "*.h*") diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt new file mode 100644 index 00000000..6421dd5c --- /dev/null +++ b/cpp/CMakeLists.txt @@ -0,0 +1,210 @@ +####################################################################### +# # +# 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 + -- GitLab