diff --git a/vendor/ddc/README.md b/vendor/ddc/README.md index 5dab08470..69b055dc1 100644 --- a/vendor/ddc/README.md +++ b/vendor/ddc/README.md @@ -1,11 +1,10 @@ +# The discrete domain computation library (DDC) -# The discrete domain computation library (DDC) - See https://ddc.mdls.fr/ [DDC](https://ddc.mdls.fr/), is a C++-17 library that aims to offer to the C++/MPI world an equivalent to the [`xarray.DataArray`](https://xarray.pydata.org/en/stable/generated/xarray.DataArray.html)/[`dask.Array`](https://docs.dask.org/en/stable/array.html) python environment. diff --git a/vendor/ddc/benchmarks/splines.cpp b/vendor/ddc/benchmarks/splines.cpp index fa985d7e8..f9f5b8cab 100644 --- a/vendor/ddc/benchmarks/splines.cpp +++ b/vendor/ddc/benchmarks/splines.cpp @@ -115,6 +115,7 @@ static void characteristics_advection(benchmark::State& state) DDimX, DDimY> spline_builder(x_mesh, state.range(2), state.range(3)); + ddc::PeriodicExtrapolationRule periodic_extrapolation; ddc::SplineEvaluator< Kokkos::DefaultExecutionSpace, Kokkos::DefaultExecutionSpace::memory_space, @@ -124,10 +125,7 @@ static void characteristics_advection(benchmark::State& state) ddc::PeriodicExtrapolationRule, DDimX, DDimY> - spline_evaluator( - spline_builder.spline_domain(), - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule()); + spline_evaluator(periodic_extrapolation, periodic_extrapolation); ddc::Chunk coef_alloc( spline_builder.spline_domain(), ddc::KokkosAllocator()); diff --git a/vendor/ddc/docs/first_steps.md b/vendor/ddc/docs/first_steps.md index 56161c2b9..9004ae29f 100644 --- a/vendor/ddc/docs/first_steps.md +++ b/vendor/ddc/docs/first_steps.md @@ -1,11 +1,10 @@ +# Commented example: the heat equation {#first_steps} -# Commented example: the heat equation {#first_steps} - In \subpage heat_equation "examples/heat_equation.cpp" is a DDC example implementing a forward finite-difference solver for the heat equation over a rectangle 2D domain with periodic boundary conditions. diff --git a/vendor/ddc/docs/heat_equation.md b/vendor/ddc/docs/heat_equation.md index 4dfd56ed4..555ac22d5 100644 --- a/vendor/ddc/docs/heat_equation.md +++ b/vendor/ddc/docs/heat_equation.md @@ -1,9 +1,8 @@ +# examples/heat_equation.cpp {#heat_equation} -# examples/heat_equation.cpp {#heat_equation} - \include{lineno} heat_equation.cpp diff --git a/vendor/ddc/examples/characteristics_advection.cpp b/vendor/ddc/examples/characteristics_advection.cpp index 0523aada4..e9a45d1f5 100644 --- a/vendor/ddc/examples/characteristics_advection.cpp +++ b/vendor/ddc/examples/characteristics_advection.cpp @@ -214,6 +214,7 @@ int main(int argc, char** argv) DDimX, DDimY> spline_builder(x_mesh); + ddc::PeriodicExtrapolationRule periodic_extrapolation; ddc::SplineEvaluator< Kokkos::DefaultExecutionSpace, Kokkos::DefaultExecutionSpace::memory_space, @@ -224,9 +225,8 @@ int main(int argc, char** argv) DDimX, DDimY> spline_evaluator( - spline_builder.spline_domain(), - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule()); + periodic_extrapolation, + periodic_extrapolation); //! [instantiate solver] //! [instantiate intermediate chunks] diff --git a/vendor/ddc/include/ddc/chunk.hpp b/vendor/ddc/include/ddc/chunk.hpp index 5f6a2bdc0..14b0cc812 100644 --- a/vendor/ddc/include/ddc/chunk.hpp +++ b/vendor/ddc/include/ddc/chunk.hpp @@ -104,16 +104,6 @@ class Chunk, Allocator> { } - /// Construct a Chunk from a deepcopy of a ChunkSpan - template - [[deprecated("Use 'ddc::create_mirror_and_copy' instead")]] explicit Chunk( - ChunkSpan, LayoutType> chunk_span, - Allocator allocator = Allocator()) - : Chunk(chunk_span.domain(), std::move(allocator)) - { - parallel_deepcopy(span_view(), chunk_span); - } - /// Deleted: use deepcopy instead Chunk(Chunk const& other) = delete; diff --git a/vendor/ddc/include/ddc/kernels/splines/spline_evaluator.hpp b/vendor/ddc/include/ddc/kernels/splines/spline_evaluator.hpp index ab9054dfd..fc5295c2d 100644 --- a/vendor/ddc/include/ddc/kernels/splines/spline_evaluator.hpp +++ b/vendor/ddc/include/ddc/kernels/splines/spline_evaluator.hpp @@ -42,6 +42,9 @@ class SplineEvaluator using bsplines_type = BSplinesType; + using left_extrapolation_rule_type = LeftExtrapolationRule; + using right_extrapolation_rule_type = RightExtrapolationRule; + using interpolation_mesh_type = InterpolationMesh; using interpolation_domain_type = ddc::DiscreteDomain; @@ -67,11 +70,9 @@ class SplineEvaluator private: - const spline_domain_type m_spline_domain; - LeftExtrapolationRule m_left_extrap_rule; - RightExtrapolationRule m_right_bc; + RightExtrapolationRule m_right_extrap_rule; public: static_assert( @@ -107,12 +108,10 @@ class SplineEvaluator "RightExtrapolationRule::operator() has to be callable with usual arguments."); explicit SplineEvaluator( - spline_domain_type const& spline_domain, LeftExtrapolationRule const& left_extrap_rule, RightExtrapolationRule const& right_extrap_rule) - : m_spline_domain(spline_domain) - , m_left_extrap_rule(left_extrap_rule) - , m_right_bc(right_extrap_rule) + : m_left_extrap_rule(left_extrap_rule) + , m_right_extrap_rule(right_extrap_rule) { } @@ -126,21 +125,14 @@ class SplineEvaluator SplineEvaluator& operator=(SplineEvaluator&& x) = default; - - - KOKKOS_FUNCTION spline_domain_type spline_domain() const noexcept + left_extrapolation_rule_type left_extrapolation_rule() const { - return m_spline_domain; + return m_left_extrap_rule; } - KOKKOS_FUNCTION bsplines_domain_type bsplines_domain() const noexcept // TODO : clarify name + right_extrapolation_rule_type right_extrapolation_rule() const { - return ddc::discrete_space().full_domain(); - } - - KOKKOS_FUNCTION batch_domain_type batch_domain() const noexcept - { - return ddc::remove_dims_of(spline_domain(), bsplines_domain()); + return m_right_extrap_rule; } template @@ -164,9 +156,11 @@ class SplineEvaluator spline_coef) const { interpolation_domain_type const interpolation_domain(spline_eval.domain()); + batch_domain_type const batch_domain(spline_eval.domain()); + ddc::parallel_for_each( exec_space(), - batch_domain(), + batch_domain, KOKKOS_CLASS_LAMBDA(typename batch_domain_type::discrete_element_type const j) { const auto spline_eval_1D = spline_eval[j]; const auto coords_eval_1D = coords_eval[j]; @@ -198,9 +192,11 @@ class SplineEvaluator spline_coef) const { interpolation_domain_type const interpolation_domain(spline_eval.domain()); + batch_domain_type const batch_domain(spline_eval.domain()); + ddc::parallel_for_each( exec_space(), - batch_domain(), + batch_domain, KOKKOS_CLASS_LAMBDA(typename batch_domain_type::discrete_element_type const j) { const auto spline_eval_1D = spline_eval[j]; const auto coords_eval_1D = coords_eval[j]; @@ -218,6 +214,7 @@ class SplineEvaluator ddc::ChunkSpan const spline_coef) const { + batch_domain_type const batch_domain(integrals.domain()); ddc::Chunk values_alloc( ddc::DiscreteDomain(spline_coef.domain()), ddc::KokkosAllocator()); @@ -228,7 +225,7 @@ class SplineEvaluator ddc::parallel_for_each( exec_space(), - batch_domain(), + batch_domain, KOKKOS_LAMBDA(typename batch_domain_type::discrete_element_type const j) { integrals(j) = 0; for (typename bsplines_domain_type::discrete_element_type const i : @@ -263,7 +260,7 @@ class SplineEvaluator return m_left_extrap_rule(coord_eval_interpolation, spline_coef); } if (coord_eval_interpolation > ddc::discrete_space().rmax()) { - return m_right_bc(coord_eval_interpolation, spline_coef); + return m_right_extrap_rule(coord_eval_interpolation, spline_coef); } } return eval_no_bc(coord_eval_interpolation, spline_coef); diff --git a/vendor/ddc/include/ddc/kernels/splines/spline_evaluator_2d.hpp b/vendor/ddc/include/ddc/kernels/splines/spline_evaluator_2d.hpp index 950162e9c..b32768275 100644 --- a/vendor/ddc/include/ddc/kernels/splines/spline_evaluator_2d.hpp +++ b/vendor/ddc/include/ddc/kernels/splines/spline_evaluator_2d.hpp @@ -48,6 +48,11 @@ class SplineEvaluator2D using bsplines_type1 = BSplinesType1; using bsplines_type2 = BSplinesType2; + using left_extrapolation_rule_1_type = LeftExtrapolationRule1; + using right_extrapolation_rule_1_type = RightExtrapolationRule1; + using left_extrapolation_rule_2_type = LeftExtrapolationRule2; + using right_extrapolation_rule_2_type = RightExtrapolationRule2; + using interpolation_domain_type1 = ddc::DiscreteDomain; using interpolation_domain_type2 = ddc::DiscreteDomain; using interpolation_domain_type @@ -78,15 +83,13 @@ class SplineEvaluator2D private: - spline_domain_type m_spline_domain; - - LeftExtrapolationRule1 m_left1_bc; + LeftExtrapolationRule1 m_left_extrap_rule_1; - RightExtrapolationRule1 m_right1_bc; + RightExtrapolationRule1 m_right_extrap_rule_1; - LeftExtrapolationRule2 m_left2_bc; + LeftExtrapolationRule2 m_left_extrap_rule_2; - RightExtrapolationRule2 m_right2_bc; + RightExtrapolationRule2 m_right_extrap_rule_2; public: static_assert( @@ -156,16 +159,14 @@ class SplineEvaluator2D "with usual arguments."); explicit SplineEvaluator2D( - spline_domain_type const& spline_domain, LeftExtrapolationRule1 const& left_extrap_rule1, RightExtrapolationRule1 const& right_extrap_rule1, LeftExtrapolationRule2 const& left_extrap_rule2, RightExtrapolationRule2 const& right_extrap_rule2) - : m_spline_domain(spline_domain) - , m_left1_bc(left_extrap_rule1) - , m_right1_bc(right_extrap_rule1) - , m_left2_bc(left_extrap_rule2) - , m_right2_bc(right_extrap_rule2) + : m_left_extrap_rule_1(left_extrap_rule1) + , m_right_extrap_rule_1(right_extrap_rule1) + , m_left_extrap_rule_2(left_extrap_rule2) + , m_right_extrap_rule_2(right_extrap_rule2) { } @@ -181,21 +182,24 @@ class SplineEvaluator2D - KOKKOS_FUNCTION spline_domain_type spline_domain() const noexcept + left_extrapolation_rule_1_type left_extrapolation_rule_dim_1() const + { + return m_left_extrap_rule_1; + } + + right_extrapolation_rule_1_type right_extrapolation_rule_dim_1() const { - return m_spline_domain; + return m_right_extrap_rule_1; } - KOKKOS_FUNCTION bsplines_domain_type bsplines_domain() const noexcept // TODO : clarify name + left_extrapolation_rule_2_type left_extrapolation_rule_dim_2() const { - return bsplines_domain_type( - ddc::discrete_space().full_domain(), - ddc::discrete_space().full_domain()); + return m_left_extrap_rule_2; } - KOKKOS_FUNCTION batch_domain_type batch_domain() const noexcept + right_extrapolation_rule_2_type right_extrapolation_rule_dim_2() const { - return ddc::remove_dims_of(spline_domain(), bsplines_domain()); + return m_right_extrap_rule_2; } template @@ -218,11 +222,12 @@ class SplineEvaluator2D ddc::ChunkSpan const spline_coef) const { + batch_domain_type batch_domain(coords_eval.domain()); interpolation_domain_type1 const interpolation_domain1(spline_eval.domain()); interpolation_domain_type2 const interpolation_domain2(spline_eval.domain()); ddc::parallel_for_each( exec_space(), - batch_domain(), + batch_domain, KOKKOS_CLASS_LAMBDA(typename batch_domain_type::discrete_element_type const j) { const auto spline_eval_2D = spline_eval[j]; const auto coords_eval_2D = coords_eval[j]; @@ -314,11 +319,12 @@ class SplineEvaluator2D ddc::ChunkSpan const spline_coef) const { + batch_domain_type batch_domain(coords_eval.domain()); interpolation_domain_type1 const interpolation_domain1(spline_eval.domain()); interpolation_domain_type2 const interpolation_domain2(spline_eval.domain()); ddc::parallel_for_each( exec_space(), - batch_domain(), + batch_domain, KOKKOS_CLASS_LAMBDA(typename batch_domain_type::discrete_element_type const j) { const auto spline_eval_2D = spline_eval[j]; const auto coords_eval_2D = coords_eval[j]; @@ -344,11 +350,12 @@ class SplineEvaluator2D ddc::ChunkSpan const spline_coef) const { + batch_domain_type batch_domain(coords_eval.domain()); interpolation_domain_type1 const interpolation_domain1(spline_eval.domain()); interpolation_domain_type2 const interpolation_domain2(spline_eval.domain()); ddc::parallel_for_each( exec_space(), - batch_domain(), + batch_domain, KOKKOS_CLASS_LAMBDA(typename batch_domain_type::discrete_element_type const j) { const auto spline_eval_2D = spline_eval[j]; const auto coords_eval_2D = coords_eval[j]; @@ -374,11 +381,12 @@ class SplineEvaluator2D ddc::ChunkSpan const spline_coef) const { + batch_domain_type batch_domain(coords_eval.domain()); interpolation_domain_type1 const interpolation_domain1(spline_eval.domain()); interpolation_domain_type2 const interpolation_domain2(spline_eval.domain()); ddc::parallel_for_each( exec_space(), - batch_domain(), + batch_domain, KOKKOS_CLASS_LAMBDA(typename batch_domain_type::discrete_element_type const j) { const auto spline_eval_2D = spline_eval[j]; const auto coords_eval_2D = coords_eval[j]; @@ -456,6 +464,7 @@ class SplineEvaluator2D ddc::ChunkSpan const spline_coef) const { + batch_domain_type batch_domain(integrals.domain()); ddc::Chunk values1_alloc( ddc::DiscreteDomain(spline_coef.domain()), ddc::KokkosAllocator()); @@ -473,7 +482,7 @@ class SplineEvaluator2D ddc::parallel_for_each( exec_space(), - batch_domain(), + batch_domain, KOKKOS_LAMBDA(typename batch_domain_type::discrete_element_type const j) { integrals(j) = 0; for (typename bsplines_domain_type1::discrete_element_type const i1 : @@ -509,10 +518,10 @@ class SplineEvaluator2D } } else { if (coord_eval_interpolation1 < ddc::discrete_space().rmin()) { - return m_left1_bc(coord_eval, spline_coef); + return m_left_extrap_rule_1(coord_eval, spline_coef); } if (coord_eval_interpolation1 > ddc::discrete_space().rmax()) { - return m_right1_bc(coord_eval, spline_coef); + return m_right_extrap_rule_1(coord_eval, spline_coef); } } if constexpr (bsplines_type2::is_periodic()) { @@ -527,10 +536,10 @@ class SplineEvaluator2D } } else { if (coord_eval_interpolation2 < ddc::discrete_space().rmin()) { - return m_left2_bc(coord_eval, spline_coef); + return m_left_extrap_rule_2(coord_eval, spline_coef); } if (coord_eval_interpolation2 > ddc::discrete_space().rmax()) { - return m_right2_bc(coord_eval, spline_coef); + return m_right_extrap_rule_2(coord_eval, spline_coef); } } return eval_no_bc( diff --git a/vendor/ddc/tests/chunk.cpp b/vendor/ddc/tests/chunk.cpp index 4010d706f..ea0da3380 100644 --- a/vendor/ddc/tests/chunk.cpp +++ b/vendor/ddc/tests/chunk.cpp @@ -100,32 +100,6 @@ TEST(Chunk1DTest, LayoutType) // \} // Functions implemented in Chunk 1D (and free functions specific to it) \{ -TEST(Chunk0DTest, ChunkSpanConversionConstructor) -{ - double const factor = 1.391; - Chunk0D chunk(dom_0d); - chunk() = factor; - - Chunk0D chunk2(chunk.span_view()); - EXPECT_EQ(chunk2.domain(), dom_0d); - EXPECT_DOUBLE_EQ(factor, chunk2()); -} - -TEST(Chunk1DTest, ChunkSpanConversionConstructor) -{ - double const factor = 1.391; - ChunkX chunk(dom_x); - for (auto&& ix : chunk.domain()) { - chunk(ix) = factor * ix.uid(); - } - - ChunkX const chunk2(chunk.span_view()); - EXPECT_EQ(chunk2.domain(), dom_x); - for (auto&& ix : chunk2.domain()) { - EXPECT_DOUBLE_EQ(factor * ix.uid(), chunk2(ix)); - } -} - TEST(Chunk0DTest, MoveConstructor) { double const factor = 1.391; diff --git a/vendor/ddc/tests/splines/batched_2d_spline_builder.cpp b/vendor/ddc/tests/splines/batched_2d_spline_builder.cpp index 00de37e00..0f5de6cc8 100644 --- a/vendor/ddc/tests/splines/batched_2d_spline_builder.cpp +++ b/vendor/ddc/tests/splines/batched_2d_spline_builder.cpp @@ -531,6 +531,13 @@ static void Batched2dSplineTest() spline_builder(coef, vals.span_cview()); #endif // Instantiate a SplineEvaluator over interest dimension and batched along other dimensions +#if defined(BC_PERIODIC) + ddc::PeriodicExtrapolationRule extrapolation_rule_1; + ddc::PeriodicExtrapolationRule extrapolation_rule_2; +#else + ddc::NullExtrapolationRule extrapolation_rule_1; + ddc::NullExtrapolationRule extrapolation_rule_2; +#endif ddc::SplineEvaluator2D< ExecSpace, MemorySpace, @@ -551,19 +558,10 @@ static void Batched2dSplineTest() #endif IDim...> spline_evaluator( - coef.domain(), -#if defined(BC_PERIODIC) - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule() -#else - ddc::NullExtrapolationRule(), - ddc::NullExtrapolationRule(), - ddc::NullExtrapolationRule(), - ddc::NullExtrapolationRule() -#endif - ); + extrapolation_rule_1, + extrapolation_rule_1, + extrapolation_rule_2, + extrapolation_rule_2); // Instantiate chunk of coordinates of dom_interpolation ddc::Chunk coords_eval_alloc(dom_vals, ddc::KokkosAllocator, MemorySpace>()); diff --git a/vendor/ddc/tests/splines/batched_spline_builder.cpp b/vendor/ddc/tests/splines/batched_spline_builder.cpp index 68e0b2d30..8eeb433b3 100644 --- a/vendor/ddc/tests/splines/batched_spline_builder.cpp +++ b/vendor/ddc/tests/splines/batched_spline_builder.cpp @@ -309,6 +309,11 @@ static void BatchedSplineTest() #endif // Instantiate a SplineEvaluator over interest dimension and batched along other dimensions +#if defined(BC_PERIODIC) + ddc::PeriodicExtrapolationRule extrapolation_rule; +#else + ddc::NullExtrapolationRule extrapolation_rule; +#endif ddc::SplineEvaluator< ExecSpace, MemorySpace, @@ -322,16 +327,7 @@ static void BatchedSplineTest() ddc::NullExtrapolationRule, #endif IDim...> - spline_evaluator_batched( - coef.domain(), -#if defined(BC_PERIODIC) - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule() -#else - ddc::NullExtrapolationRule(), - ddc::NullExtrapolationRule() -#endif - ); + spline_evaluator_batched(extrapolation_rule, extrapolation_rule); // Instantiate chunk of coordinates of dom_interpolation ddc::Chunk coords_eval_alloc(dom_vals, ddc::KokkosAllocator, MemorySpace>()); diff --git a/vendor/ddc/tests/splines/extrapolation_rule.cpp b/vendor/ddc/tests/splines/extrapolation_rule.cpp index 66b8d237b..9c355fe99 100644 --- a/vendor/ddc/tests/splines/extrapolation_rule.cpp +++ b/vendor/ddc/tests/splines/extrapolation_rule.cpp @@ -264,6 +264,33 @@ static void ExtrapolationRuleSplineTest() spline_builder(coef, vals.span_cview()); // Instantiate a SplineEvaluator over interest dimension and batched along other dimensions +#if defined(ER_NULL) + ddc::NullExtrapolationRule extrapolation_rule_left_dim_1; + ddc::NullExtrapolationRule extrapolation_rule_right_dim_1; +#if defined(BC_PERIODIC) + ddc::PeriodicExtrapolationRule extrapolation_rule_left_dim_2; + ddc::PeriodicExtrapolationRule extrapolation_rule_right_dim_2; +#else + ddc::NullExtrapolationRule extrapolation_rule_left_dim_2; + ddc::NullExtrapolationRule extrapolation_rule_right_dim_2; +#endif +#elif defined(ER_CONSTANT) +#if defined(BC_PERIODIC) + ddc::ConstantExtrapolationRule extrapolation_rule_left_dim_1(x0()); + ddc::ConstantExtrapolationRule extrapolation_rule_right_dim_1(xN()); + ddc::PeriodicExtrapolationRule extrapolation_rule_left_dim_2; + ddc::PeriodicExtrapolationRule extrapolation_rule_right_dim_2; +#else + ddc::ConstantExtrapolationRule + extrapolation_rule_left_dim_1(x0(), x0(), xN()); + ddc::ConstantExtrapolationRule + extrapolation_rule_right_dim_1(xN(), x0(), xN()); + ddc::ConstantExtrapolationRule + extrapolation_rule_left_dim_2(x0(), x0(), xN()); + ddc::ConstantExtrapolationRule + extrapolation_rule_right_dim_2(xN(), x0(), xN()); +#endif +#endif ddc::SplineEvaluator2D< ExecSpace, MemorySpace, @@ -293,31 +320,10 @@ static void ExtrapolationRuleSplineTest() IDim...> spline_evaluator_batched( - coef.domain(), -#if defined(ER_NULL) - ddc::NullExtrapolationRule(), - ddc::NullExtrapolationRule(), -#if defined(BC_PERIODIC) - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule() -#else - ddc::NullExtrapolationRule(), - ddc::NullExtrapolationRule() -#endif -#elif defined(ER_CONSTANT) -#if defined(BC_PERIODIC) - ddc::ConstantExtrapolationRule(x0()), - ddc::ConstantExtrapolationRule(xN()), - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule() -#else - ddc::ConstantExtrapolationRule(x0(), x0(), xN()), - ddc::ConstantExtrapolationRule(xN(), x0(), xN()), - ddc::ConstantExtrapolationRule(x0(), x0(), xN()), - ddc::ConstantExtrapolationRule(xN(), x0(), xN()) -#endif -#endif - ); + extrapolation_rule_left_dim_1, + extrapolation_rule_right_dim_1, + extrapolation_rule_left_dim_2, + extrapolation_rule_right_dim_2); // Instantiate chunk of coordinates of dom_interpolation ddc::Chunk coords_eval_alloc(dom_vals, ddc::KokkosAllocator, MemorySpace>()); diff --git a/vendor/ddc/tests/splines/non_periodic_spline_builder.cpp b/vendor/ddc/tests/splines/non_periodic_spline_builder.cpp index e0abdf686..724f4bfb3 100644 --- a/vendor/ddc/tests/splines/non_periodic_spline_builder.cpp +++ b/vendor/ddc/tests/splines/non_periodic_spline_builder.cpp @@ -148,6 +148,7 @@ TEST(NonPeriodicSplineBuilderTest, Identity) spline_builder(coef.span_view(), yvals.span_cview(), deriv_l, deriv_r); // 7. Create a SplineEvaluator to evaluate the spline at any point in the domain of the BSplines + ddc::NullExtrapolationRule extrapolation_rule; ddc::SplineEvaluator< Kokkos::DefaultHostExecutionSpace, Kokkos::HostSpace, @@ -156,10 +157,7 @@ TEST(NonPeriodicSplineBuilderTest, Identity) ddc::NullExtrapolationRule, ddc::NullExtrapolationRule, IDimX> - spline_evaluator( - coef.domain(), - ddc::NullExtrapolationRule(), - ddc::NullExtrapolationRule()); + spline_evaluator(extrapolation_rule, extrapolation_rule); ddc::Chunk, ddc::DiscreteDomain> coords_eval(interpolation_domain); for (IndexX const ix : interpolation_domain) { diff --git a/vendor/ddc/tests/splines/periodic_spline_builder.cpp b/vendor/ddc/tests/splines/periodic_spline_builder.cpp index db356c58d..409f15892 100644 --- a/vendor/ddc/tests/splines/periodic_spline_builder.cpp +++ b/vendor/ddc/tests/splines/periodic_spline_builder.cpp @@ -98,6 +98,7 @@ TEST(PeriodicSplineBuilderTest, Identity) spline_builder(coef.span_view(), yvals.span_cview()); // 7. Create a SplineEvaluator to evaluate the spline at any point in the domain of the BSplines + ddc::PeriodicExtrapolationRule periodic_extrapolation; ddc::SplineEvaluator< Kokkos::DefaultHostExecutionSpace, Kokkos::HostSpace, @@ -106,10 +107,7 @@ TEST(PeriodicSplineBuilderTest, Identity) ddc::PeriodicExtrapolationRule, ddc::PeriodicExtrapolationRule, IDimX> - spline_evaluator( - coef.domain(), - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule()); + spline_evaluator(periodic_extrapolation, periodic_extrapolation); ddc::Chunk> coords_eval(interpolation_domain); for (IndexX const ix : interpolation_domain) { diff --git a/vendor/ddc/tests/splines/periodicity_spline_builder.cpp b/vendor/ddc/tests/splines/periodicity_spline_builder.cpp index 786a6dbdd..bed04565c 100644 --- a/vendor/ddc/tests/splines/periodicity_spline_builder.cpp +++ b/vendor/ddc/tests/splines/periodicity_spline_builder.cpp @@ -160,6 +160,7 @@ static void PeriodicitySplineBuilderTest() spline_builder(coef, vals.span_cview()); // Instantiate a SplineEvaluator over interest dimension and batched along other dimensions + ddc::PeriodicExtrapolationRule extrapolation_rule; ddc::SplineEvaluator< ExecSpace, MemorySpace, @@ -168,10 +169,7 @@ static void PeriodicitySplineBuilderTest() ddc::PeriodicExtrapolationRule, ddc::PeriodicExtrapolationRule, IDim> - spline_evaluator( - coef.domain(), - ddc::PeriodicExtrapolationRule(), - ddc::PeriodicExtrapolationRule()); + spline_evaluator(extrapolation_rule, extrapolation_rule); // Instantiate chunk of coordinates of dom_interpolation ddc::Chunk coords_eval_alloc(dom_vals, ddc::KokkosAllocator, MemorySpace>());