diff --git a/CMakeLists.txt b/CMakeLists.txt index b350620b8..d1b3b4b4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,6 +111,9 @@ endif() # Force HIGHFIVE_USE_INSTALL_DEPS option to be true option(HIGHFIVE_USE_INSTALL_DEPS "End applications by default use detected dependencies here" OFF) +option(H5_USE_XTENSOR OFF) +option(HIGHFIVE_USE_XTENSOR OFF) + foreach(DEPENDENCY ${DEPENDENCIES_CONFIGURED}) find_package(${DEPENDENCY} CONFIG REQUIRED) @@ -129,12 +132,29 @@ if(SAMURAI_FIELD_CONTAINER MATCHES xtensor) message(STATUS "Using xtensor as field container") list(APPEND DEPENDENCIES_CONFIGURED xtensor) find_package(xtensor CONFIG REQUIRED) + + # if(DEFINED xtensor_VERSION_MINOR) + message(STATUS "xtensor version detected by find_package: ${xtensor_VERSION}") + message(STATUS "xtensor minor version: ${xtensor_VERSION_MINOR}") + + # Add the definitions to the samurai target + target_compile_definitions(samurai INTERFACE + XTENSOR_VERSION_MAJOR=${xtensor_VERSION_MAJOR} + XTENSOR_VERSION_MINOR=${xtensor_VERSION_MINOR} + XTENSOR_VERSION_PATCH=${xtensor_VERSION_PATCH} + ) + + # endif() + target_link_system_libraries( samurai INTERFACE xtensor ) + endif() + + if(SAMURAI_FIELD_CONTAINER MATCHES eigen3) message(STATUS "Using Eigen3 as field container") endif() diff --git a/benchmark/benchmark_search.cpp b/benchmark/benchmark_search.cpp index 9bb3cbf67..ef3b59331 100644 --- a/benchmark/benchmark_search.cpp +++ b/benchmark/benchmark_search.cpp @@ -2,8 +2,10 @@ #include #include -#include -#include +// #include +// #include +#include +#include #include #include diff --git a/demos/FiniteVolume/advection_1d.cpp b/demos/FiniteVolume/advection_1d.cpp index 5f8f409b6..ad2d9e7f7 100644 --- a/demos/FiniteVolume/advection_1d.cpp +++ b/demos/FiniteVolume/advection_1d.cpp @@ -1,6 +1,11 @@ // Copyright 2018-2025 the samurai's authors // SPDX-License-Identifier: BSD-3-Clause + +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include #include diff --git a/demos/FiniteVolume/advection_2d.cpp b/demos/FiniteVolume/advection_2d.cpp index c07d2296b..0199aa0ac 100644 --- a/demos/FiniteVolume/advection_2d.cpp +++ b/demos/FiniteVolume/advection_2d.cpp @@ -3,7 +3,11 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include #include diff --git a/demos/FiniteVolume/advection_2d_user_bc.cpp b/demos/FiniteVolume/advection_2d_user_bc.cpp index 017b55a41..ccfe59a76 100644 --- a/demos/FiniteVolume/advection_2d_user_bc.cpp +++ b/demos/FiniteVolume/advection_2d_user_bc.cpp @@ -2,7 +2,11 @@ // SPDX-License-Identifier: BSD-3-Clause #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif // ----------------------------- diff --git a/demos/tutorial/AMR_1D_Burgers/step_5/make_graduation.hpp b/demos/tutorial/AMR_1D_Burgers/step_5/make_graduation.hpp index d4a8f7afd..75a77306f 100644 --- a/demos/tutorial/AMR_1D_Burgers/step_5/make_graduation.hpp +++ b/demos/tutorial/AMR_1D_Burgers/step_5/make_graduation.hpp @@ -5,7 +5,11 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include #include diff --git a/demos/tutorial/graduation_case_1.cpp b/demos/tutorial/graduation_case_1.cpp index 7de51c534..fb5c5fab6 100644 --- a/demos/tutorial/graduation_case_1.cpp +++ b/demos/tutorial/graduation_case_1.cpp @@ -3,10 +3,17 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include #include #include #include +#else +#include +#include +#include +#include +#endif #include #include diff --git a/demos/tutorial/graduation_case_2.cpp b/demos/tutorial/graduation_case_2.cpp index 8f6821325..fa418ecab 100644 --- a/demos/tutorial/graduation_case_2.cpp +++ b/demos/tutorial/graduation_case_2.cpp @@ -3,10 +3,17 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include #include #include #include +#else +#include +#include +#include +#include +#endif #include #include diff --git a/demos/tutorial/graduation_case_3.cpp b/demos/tutorial/graduation_case_3.cpp index 73dcd2904..65c8f6d04 100644 --- a/demos/tutorial/graduation_case_3.cpp +++ b/demos/tutorial/graduation_case_3.cpp @@ -5,7 +5,11 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include #include diff --git a/include/samurai/algorithm.hpp b/include/samurai/algorithm.hpp index d07483d53..3cc2f4413 100644 --- a/include/samurai/algorithm.hpp +++ b/include/samurai/algorithm.hpp @@ -7,10 +7,13 @@ #include #endif #include - +#if XTENSOR_VERSION_MINOR < 26 #include #include - +#else +#include +#include +#endif #include "cell.hpp" #include "mesh_holder.hpp" diff --git a/include/samurai/algorithm/graduation.hpp b/include/samurai/algorithm/graduation.hpp index d749f3201..d25a9f630 100644 --- a/include/samurai/algorithm/graduation.hpp +++ b/include/samurai/algorithm/graduation.hpp @@ -3,8 +3,13 @@ #pragma once +#if XTENSOR_VERSION_MINOR < 26 #include #include +#else +#include +#include +#endif #include "../array_of_interval_and_point.hpp" #include "../cell_flag.hpp" diff --git a/include/samurai/algorithm/update.hpp b/include/samurai/algorithm/update.hpp index d6c6436ed..ae700d7fb 100644 --- a/include/samurai/algorithm/update.hpp +++ b/include/samurai/algorithm/update.hpp @@ -5,7 +5,11 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include "../algorithm.hpp" #include "../bc.hpp" @@ -21,7 +25,11 @@ using namespace xt::placeholders; #ifdef SAMURAI_WITH_MPI #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif namespace mpi = boost::mpi; #endif diff --git a/include/samurai/box.hpp b/include/samurai/box.hpp index ff55b83b8..e166f42da 100644 --- a/include/samurai/box.hpp +++ b/include/samurai/box.hpp @@ -3,8 +3,13 @@ #pragma once +#if XTENSOR_VERSION_MINOR < 26 #include #include +#else +#include +#include +#endif namespace samurai { diff --git a/include/samurai/cell.hpp b/include/samurai/cell.hpp index 901e7fb77..dbb12d402 100644 --- a/include/samurai/cell.hpp +++ b/include/samurai/cell.hpp @@ -5,10 +5,15 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include #include #include - +#else +#include +#include +#include +#endif namespace samurai { template ::value, bool> = true> diff --git a/include/samurai/field.hpp b/include/samurai/field.hpp index be02e9162..23e73d751 100644 --- a/include/samurai/field.hpp +++ b/include/samurai/field.hpp @@ -14,8 +14,13 @@ namespace fs = std::filesystem; #include +#if XTENSOR_VERSION_MINOR < 26 #include #include +#else +#include +#include +#endif #include "algorithm.hpp" #include "bc.hpp" diff --git a/include/samurai/field_expression.hpp b/include/samurai/field_expression.hpp index 7a459f55a..f0208557f 100644 --- a/include/samurai/field_expression.hpp +++ b/include/samurai/field_expression.hpp @@ -5,9 +5,13 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include #include - +#else +#include +#include +#endif #include "cell.hpp" #include "interval.hpp" #include "samurai_config.hpp" @@ -26,7 +30,11 @@ namespace samurai }; template +#if XTENSOR_VERSION_MINOR < 26 struct field_comparable : xtl::conjunction...> +#else + struct field_comparable : std::conjunction...> +#endif { }; diff --git a/include/samurai/io/cgal.hpp b/include/samurai/io/cgal.hpp index 0b15b03c5..4491e7f9d 100644 --- a/include/samurai/io/cgal.hpp +++ b/include/samurai/io/cgal.hpp @@ -13,7 +13,11 @@ #include #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include "../box.hpp" #include "../cell_array.hpp" diff --git a/include/samurai/io/hdf5.hpp b/include/samurai/io/hdf5.hpp index cf368878e..5133dca5d 100644 --- a/include/samurai/io/hdf5.hpp +++ b/include/samurai/io/hdf5.hpp @@ -22,9 +22,16 @@ namespace fs = std::filesystem; #include #include #include + +#if XTENSOR_VERSION_MINOR < 26 #include #include #include +#else +#include +#include +#include +#endif #include diff --git a/include/samurai/level_cell_list.hpp b/include/samurai/level_cell_list.hpp index 8033f4fce..fe910b96a 100644 --- a/include/samurai/level_cell_list.hpp +++ b/include/samurai/level_cell_list.hpp @@ -7,8 +7,13 @@ #include #include +#if XTENSOR_VERSION_MINOR < 26 #include #include +#else +#include +#include +#endif #include "cell.hpp" #include "list_of_intervals.hpp" diff --git a/include/samurai/mesh_interval.hpp b/include/samurai/mesh_interval.hpp index 6c58211e4..4df9d2ba8 100644 --- a/include/samurai/mesh_interval.hpp +++ b/include/samurai/mesh_interval.hpp @@ -1,6 +1,12 @@ #pragma once + +#if XTENSOR_VERSION_MINOR < 26 #include #include +#else +#include +#include +#endif using namespace xt::placeholders; diff --git a/include/samurai/mr/mesh.hpp b/include/samurai/mr/mesh.hpp index b847cad98..34ea761f8 100644 --- a/include/samurai/mr/mesh.hpp +++ b/include/samurai/mr/mesh.hpp @@ -5,8 +5,13 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include #include +#else +#include +#include +#endif #include "../box.hpp" #include "../mesh.hpp" diff --git a/include/samurai/mr/mesh_with_overleaves.hpp b/include/samurai/mr/mesh_with_overleaves.hpp index 5bd2d0d41..00595fcdb 100644 --- a/include/samurai/mr/mesh_with_overleaves.hpp +++ b/include/samurai/mr/mesh_with_overleaves.hpp @@ -5,7 +5,11 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include "../box.hpp" #include "../mesh.hpp" diff --git a/include/samurai/mr/operators.hpp b/include/samurai/mr/operators.hpp index 549798179..620cf5d5c 100644 --- a/include/samurai/mr/operators.hpp +++ b/include/samurai/mr/operators.hpp @@ -3,9 +3,15 @@ #pragma once +#if XTENSOR_VERSION_MINOR < 26 #include #include #include +#else +#include +#include +#include +#endif #include "../cell_flag.hpp" #include "../field.hpp" diff --git a/include/samurai/numeric/prediction.hpp b/include/samurai/numeric/prediction.hpp index 506a8a748..657d8c91c 100644 --- a/include/samurai/numeric/prediction.hpp +++ b/include/samurai/numeric/prediction.hpp @@ -6,8 +6,13 @@ #include #include +#if XTENSOR_VERSION_MINOR < 26 #include #include +#else +#include +#include +#endif #include "../operators_base.hpp" #include "../storage/utils.hpp" diff --git a/include/samurai/operators_base.hpp b/include/samurai/operators_base.hpp index ad7002723..746566f64 100644 --- a/include/samurai/operators_base.hpp +++ b/include/samurai/operators_base.hpp @@ -3,7 +3,11 @@ #pragma once +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include "field_expression.hpp" #include "utils.hpp" diff --git a/include/samurai/petsc/utils.hpp b/include/samurai/petsc/utils.hpp index 29816ef62..654870c4a 100644 --- a/include/samurai/petsc/utils.hpp +++ b/include/samurai/petsc/utils.hpp @@ -1,6 +1,11 @@ #pragma once #include + +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif namespace samurai { diff --git a/include/samurai/schemes/fv/cell_based/local_field.hpp b/include/samurai/schemes/fv/cell_based/local_field.hpp index 1cb35c065..45b66d109 100644 --- a/include/samurai/schemes/fv/cell_based/local_field.hpp +++ b/include/samurai/schemes/fv/cell_based/local_field.hpp @@ -1,5 +1,10 @@ #pragma once + +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif namespace samurai { diff --git a/include/samurai/static_algorithm.hpp b/include/samurai/static_algorithm.hpp index 048b15623..0a0f05d78 100644 --- a/include/samurai/static_algorithm.hpp +++ b/include/samurai/static_algorithm.hpp @@ -5,7 +5,11 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif namespace samurai { diff --git a/include/samurai/stencil_field.hpp b/include/samurai/stencil_field.hpp index 95a23b75d..6aca92107 100644 --- a/include/samurai/stencil_field.hpp +++ b/include/samurai/stencil_field.hpp @@ -3,9 +3,15 @@ #pragma once +#if XTENSOR_VERSION_MINOR < 26 #include #include #include +#else +#include +#include +#include +#endif #include "cell.hpp" #include "field_expression.hpp" diff --git a/include/samurai/storage/containers_config.hpp b/include/samurai/storage/containers_config.hpp index a70d4261c..7b84c5b3a 100644 --- a/include/samurai/storage/containers_config.hpp +++ b/include/samurai/storage/containers_config.hpp @@ -14,7 +14,11 @@ // #define EIGEN_DEFAULT_DENSE_INDEX_TYPE int64_t #include "eigen/eigen.hpp" #else - #include "xtensor/xtensor.hpp" + //#if XTENSOR_VERSION_MINOR < 26 + #include "xtensor/xtensor.hpp" + //#else + // #include "xtensor/containers/xtensor.hpp" + //#endif #endif #include "xtensor/xtensor_static.hpp" @@ -24,6 +28,11 @@ // clang-format on +#if XTENSOR_VERSION_MINOR < 26 +#else +using namespace xt; +#endif + namespace samurai { //-----------------// diff --git a/include/samurai/storage/xtensor/xtensor.hpp b/include/samurai/storage/xtensor/xtensor.hpp index b415d6a72..77aa961ce 100644 --- a/include/samurai/storage/xtensor/xtensor.hpp +++ b/include/samurai/storage/xtensor/xtensor.hpp @@ -4,9 +4,16 @@ #pragma once // #include + +#if XTENSOR_VERSION_MINOR < 26 #include #include #include +#else +#include +#include +#include +#endif #include "../utils.hpp" diff --git a/include/samurai/storage/xtensor/xtensor_static.hpp b/include/samurai/storage/xtensor/xtensor_static.hpp index 463e422c2..a95cd222a 100644 --- a/include/samurai/storage/xtensor/xtensor_static.hpp +++ b/include/samurai/storage/xtensor/xtensor_static.hpp @@ -4,7 +4,12 @@ #pragma once #include "../collapsable.hpp" + +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif namespace samurai { diff --git a/include/samurai/subset/node.hpp b/include/samurai/subset/node.hpp index c12ea1a5f..5692940f8 100644 --- a/include/samurai/subset/node.hpp +++ b/include/samurai/subset/node.hpp @@ -10,7 +10,11 @@ #include #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include "../algorithm.hpp" #include "apply.hpp" diff --git a/tests/test_bc.cpp b/tests/test_bc.cpp index 085fa2f1a..1f456c7f5 100644 --- a/tests/test_bc.cpp +++ b/tests/test_bc.cpp @@ -4,7 +4,11 @@ #include #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif namespace samurai { diff --git a/tests/test_box.cpp b/tests/test_box.cpp index fa11baa65..f9e69cd03 100644 --- a/tests/test_box.cpp +++ b/tests/test_box.cpp @@ -3,7 +3,11 @@ #include // #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include diff --git a/tests/test_cell.cpp b/tests/test_cell.cpp index 9893d47dd..fbaba5e63 100644 --- a/tests/test_cell.cpp +++ b/tests/test_cell.cpp @@ -1,6 +1,12 @@ #include + +#if XTENSOR_VERSION_MINOR < 26 #include #include +#else +#include +#include +#endif #include #include diff --git a/tests/test_common.hpp b/tests/test_common.hpp index c1d8bbe8d..b8952fef2 100644 --- a/tests/test_common.hpp +++ b/tests/test_common.hpp @@ -1,6 +1,10 @@ #pragma once +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include #include diff --git a/tests/test_interval.cpp b/tests/test_interval.cpp index 90b2a9966..0afeff57a 100644 --- a/tests/test_interval.cpp +++ b/tests/test_interval.cpp @@ -2,7 +2,11 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include diff --git a/tests/test_level_cell_list.cpp b/tests/test_level_cell_list.cpp index e46b722e3..a81dd5ddd 100644 --- a/tests/test_level_cell_list.cpp +++ b/tests/test_level_cell_list.cpp @@ -1,5 +1,10 @@ #include + +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include diff --git a/tests/test_list_of_intervals.cpp b/tests/test_list_of_intervals.cpp index 48e6ded6a..6955791e1 100644 --- a/tests/test_list_of_intervals.cpp +++ b/tests/test_list_of_intervals.cpp @@ -1,6 +1,12 @@ #include + +#if XTENSOR_VERSION_MINOR < 26 #include #include +#else +#include +#include +#endif #include #include diff --git a/tests/test_periodic.cpp b/tests/test_periodic.cpp index 0b8695e2a..fd461e20c 100644 --- a/tests/test_periodic.cpp +++ b/tests/test_periodic.cpp @@ -1,6 +1,10 @@ #include +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include #include diff --git a/tests/test_subset.cpp b/tests/test_subset.cpp index 04da53e45..a048f30dc 100644 --- a/tests/test_subset.cpp +++ b/tests/test_subset.cpp @@ -2,7 +2,12 @@ #include #include #include + +#if XTENSOR_VERSION_MINOR < 26 #include +#else +#include +#endif #include