21struct NonUniformBsplinesKnots : NonUniformPointSampling<typename T::tag_type>
25struct NonUniformBSplinesBase
40template <
class Tag, std::
size_t D>
43 static_assert(
D > 0,
"Parameter `D` must be positive");
84 template <
class DDim,
class MemorySpace>
87 template <
class ODDim,
class OMemorySpace>
91 using mesh_type = detail::NonUniformBsplinesKnots<DDim>;
154 template <
class RandomIt>
161 template <
class OriginMemorySpace>
163 : m_domain(
impl.m_domain)
164 , m_nknots(
impl.m_nknots)
243 std::size_t
n)
const;
252 template <
class Layout,
class MemorySpace2>
376 return m_nknots - 2 *
degree();
420template <
class Tag, std::
size_t D>
421template <
class DDim,
class MemorySpace>
422template <
class RandomIt>
447 for (std::size_t
i = 1;
i <
degree() + 1; ++
i) {
453 for (std::size_t
i = 1;
i <
degree() + 1; ++
i) {
461template <
class Tag, std::
size_t D>
462template <
class DDim,
class MemorySpace>
476 int const icell = find_cell(
x);
486 for (std::size_t
j = 0;
j <
degree(); ++
j) {
490 for (std::size_t
r = 0;
r <
j + 1; ++
r) {
501template <
class Tag, std::
size_t D>
502template <
class DDim,
class MemorySpace>
514 int const icell = find_cell(
x);
530 for (std::size_t
j = 0;
j <
degree() - 1; ++
j) {
534 for (std::size_t
r = 0;
r <
j + 1; ++
r) {
548 for (std::size_t
j = 1;
j <
degree(); ++
j) {
559template <
class Tag, std::
size_t D>
560template <
class DDim,
class MemorySpace>
565 std::size_t
const n)
const
572 mdspan<
double, std::experimental::extents<std::size_t,
degree() + 1, 2>>
const a(
576 std::experimental::mdspan<
578 std::experimental::extents<std::size_t,
degree() + 1,
degree() + 1>>
const
589 int const icell = find_cell(
x);
606 for (std::size_t
j = 0;
j <
degree(); ++
j) {
610 for (std::size_t
r = 0;
r <
j + 1; ++
r) {
623 for (std::size_t
j = 0;
j <
degree() + 1; ++
j) {
631 for (
int k = 1;
k <
int(
n + 1); ++
k) {
633 int const rk =
r -
k;
639 int const j1 =
rk > -1 ? 1 : (-
rk);
641 for (
int j =
j1;
j <
j2; ++
j) {
650 Kokkos::kokkos_swap(
s1,
s2);
655 for (
int k = 1;
k <
int(
n + 1); ++
k) {
656 for (std::size_t
i = 0;
i <
derivs.extent(0);
i++) {
665template <
class Tag, std::
size_t D>
666template <
class DDim,
class MemorySpace>
683 while (
x < get_knot(
icell) ||
x >= get_knot(
icell + 1)) {
684 if (
x < get_knot(
icell)) {
694template <
class Tag, std::
size_t D>
695template <
class DDim,
class MemorySpace>
696template <
class Layout,
class MemorySpace2>
Definition discrete_domain.hpp:51
A DiscreteVector is a vector in the discrete dimension.
Definition discrete_vector.hpp:254
The top-level namespace of DDC.
Definition aligned_allocator.hpp:11
constexpr bool enable_chunk
Definition chunk_traits.hpp:16
KOKKOS_FUNCTION Coordinate< typename DDim::continuous_dimension_type > rmax(DiscreteDomain< DDim > const &d)
Definition non_uniform_point_sampling.hpp:182
ddc::Span2D< double > DSpan2D
Definition view.hpp:128
ddc::Span1D< double > DSpan1D
Definition view.hpp:126
KOKKOS_FUNCTION Coordinate< typename DDim::continuous_dimension_type... > coordinate(DiscreteElement< DDim... > const &c)
Definition coordinate.hpp:29
KOKKOS_FUNCTION Coordinate< typename DDim::continuous_dimension_type > rmin(DiscreteDomain< DDim > const &d)
Definition non_uniform_point_sampling.hpp:175
detail::TaggedVector< CoordinateElement, CDims... > Coordinate
A Coordinate represents a coordinate in the continuous space.
Definition coordinate.hpp:26
constexpr bool is_non_uniform_bsplines_v
Indicates if a tag corresponds to non-uniform B-splines or not.
Definition bsplines_non_uniform.hpp:418
Definition chunk_span.hpp:30