11#include "bsplines_uniform.hpp"
12#include "knot_discrete_dimension_type.hpp"
13#include "spline_boundary_conditions.hpp"
18
19
20
21
22
23
24
25
26
27
28
29
30
31
38 using continuous_dimension_type =
typename BSplines::continuous_dimension_type;
42
43
44
45
46 template <
typename Sampling,
typename U = BSplines>
49 if constexpr (U::is_uniform()) {
50 return std::get<0>(Sampling::
51 init(
ddc::discrete_space<BSplines>().rmin(),
52 ddc::discrete_space<BSplines>().rmax(),
54 ddc::discrete_space<BSplines>().ncells() + 1)));
56 using SamplingImpl =
typename Sampling::
template Impl<Sampling, Kokkos::HostSpace>;
57 std::vector<
double> knots(
ddc::discrete_space<BSplines>().npoints());
59 ddc::discrete_space<BSplines>().break_point_domain());
62 [&](
ddc::DiscreteElement<knot_discrete_dimension_t<BSplines>> ik) {
63 knots[ik - break_point_domain.front()] =
ddc::coordinate(ik);
65 return SamplingImpl(knots);
70 using interpolation_discrete_dimension_type = std::conditional_t<
71 is_uniform_bsplines_v<BSplines>,
76
77
78
79
80 template <
typename Sampling>
83 int const npoints =
ddc::discrete_space<BSplines>().ncells() + !BSplines::is_periodic();
85 ddc::DiscreteElement<Sampling>(0),
friend class DiscreteDomain
KOKKOS_FUNCTION constexpr bool operator!=(DiscreteVector< OTags... > const &rhs) const noexcept
Helper class for the initialisation of the mesh of interpolation points.
static auto get_sampling()
Get the sampling of interpolation points.
static ddc::DiscreteDomain< Sampling > get_domain()
Get the domain which can be used to access the interpolation points in the sampling.
The top-level namespace of DDC.
BoundCond
An enum representing a spline boundary condition.
@ GREVILLE
Use Greville points instead of conditions on derivative for B-Spline interpolation.