8#include <initializer_list>
13#include <Kokkos_Core.hpp>
15#include "ddc/coordinate.hpp"
16#include "ddc/discrete_domain.hpp"
17#include "ddc/discrete_element.hpp"
18#include "ddc/discrete_space.hpp"
19#include "ddc/discrete_vector.hpp"
25struct NonUniformPointSamplingBase
44 template <
class DDim,
class MemorySpace>
47 template <
class ODDim,
class OMemorySpace>
50 Kokkos::View<continuous_element_type*, MemorySpace> m_points;
64 explicit Impl(std::initializer_list<continuous_element_type>
points)
67 Kokkos::View<continuous_element_type*, Kokkos::HostSpace>
69 Kokkos::resize(m_points,
host.extent(0));
70 Kokkos::deep_copy(m_points,
host);
74 template <
class InputRange>
77 if constexpr (Kokkos::is_view<InputRange>::value) {
78 Kokkos::deep_copy(m_points,
points);
81 Kokkos::View<continuous_element_type*, Kokkos::HostSpace>
83 Kokkos::resize(m_points,
host.extent(0));
84 Kokkos::deep_copy(m_points,
host);
89 template <
class InputIt>
93 Kokkos::View<continuous_element_type*, Kokkos::HostSpace>
95 Kokkos::resize(m_points,
host.extent(0));
96 Kokkos::deep_copy(m_points,
host);
99 template <
class OriginMemorySpace>
113 return m_points.size();
120 return m_points(
icoord.uid());
127 :
public std::is_base_of<detail::NonUniformPointSamplingBase, DDim>
135using is_non_uniform_sampling [[
deprecated(
"Use is_non_uniform_point_sampling instead")]]
150 return out <<
"NonUniformPointSampling(" <<
mesh.size() <<
")";
153template <
class DDim, std::enable_if_t<is_non_uniform_po
int_sampling_v<DDim>,
int> = 0>
160template <
class DDim, std::enable_if_t<is_non_uniform_po
int_sampling_v<DDim>,
int> = 0>
167template <
class DDim, std::enable_if_t<is_non_uniform_po
int_sampling_v<DDim>,
int> = 0>
174template <
class DDim, std::enable_if_t<is_non_uniform_po
int_sampling_v<DDim>,
int> = 0>
181template <
class DDim, std::enable_if_t<is_non_uniform_po
int_sampling_v<DDim>,
int> = 0>
188template <
class DDim, std::enable_if_t<is_non_uniform_po
int_sampling_v<DDim>,
int> = 0>
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 is_non_uniform_point_sampling_v
Definition non_uniform_point_sampling.hpp:132
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
KOKKOS_FUNCTION Coordinate< typename DDim::continuous_dimension_type... > coordinate(DiscreteElement< DDim... > const &c)
Definition coordinate.hpp:29
auto create_mirror_view_and_copy(Space const &space, ChunkSpan< ElementType, Support, Layout, MemorySpace > const &src)
If src is accessible from space then returns a copy of src, otherwise returns a new Chunk with the sa...
Definition create_mirror.hpp:101
std::ostream & operator<<(std::ostream &out, DiscreteElement<> const &)
Definition discrete_element.hpp:319
constexpr bool is_non_uniform_sampling_v
Definition non_uniform_point_sampling.hpp:141
KOKKOS_FUNCTION Coordinate< typename DDim::continuous_dimension_type > rlength(DiscreteDomain< DDim > const &d)
Definition non_uniform_point_sampling.hpp:189
KOKKOS_FUNCTION Coordinate< typename DDim::continuous_dimension_type > distance_at_left(DiscreteElement< DDim > i)
Definition non_uniform_point_sampling.hpp:161
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
KOKKOS_FUNCTION Coordinate< typename DDim::continuous_dimension_type > distance_at_right(DiscreteElement< DDim > i)
Definition non_uniform_point_sampling.hpp:168