DDC 0.0.0

a discrete domain computation library

ddc Namespace Reference

Namespaces

 ddc_detail
 
 policies
 
 reducer
 

Classes

class  AlignedAllocator
 
class  Chunk
 
class  Chunk< ElementType, DiscreteDomain< DDims... >, Allocator >
 
struct  chunk_traits
 
class  ChunkCommon
 
class  ChunkCommon< ElementType, DiscreteDomain< DDims... >, LayoutStridedPolicy >
 
class  ChunkSpan
 
class  ChunkSpan< ElementType, DiscreteDomain< DDims... >, LayoutStridedPolicy, MemorySpace >
 
struct  DiscreteDomainIterator
 
class  DiscreteDomain
 
class  DiscreteElement
 A DiscreteElement identifies an element of the discrete dimension. More...
 
struct  IsDiscreteElement
 
struct  IsDiscreteElement< DiscreteElement< Tags... > >
 
class  DiscreteVector
 A DiscreteVector is a vector in the discrete dimension. More...
 
struct  IsDiscreteVector
 
struct  IsDiscreteVector< DiscreteVector< Tags... > >
 
class  ConversionOperators
 
class  ConversionOperators< DiscreteVector< Tag > >
 
class  DualDiscretization
 
struct  serial_host_policy
 Serial execution on the host. More...
 
struct  parallel_host_policy
 Parallel execution on the default device. More...
 
struct  parallel_device_policy
 Kokkos parallel execution uisng MDRange policy. More...
 
class  KokkosAllocator
 
class  NonUniformPointSampling
 NonUniformPointSampling models a non-uniform discretization of the CDim segment $[a, b]$. More...
 
struct  is_non_uniform_sampling
 
struct  is_non_uniform_sampling< NonUniformPointSampling< CDim > >
 
class  PdiEvent
 
struct  is_rectilinear_domain
 
struct  is_rectilinear_domain< DiscreteDomain< DDims... > >
 
class  ScopeGuard
 
class  UniformPointSampling
 UniformPointSampling models a uniform discretization of the provided continuous dimension. More...
 
struct  is_uniform_sampling
 
struct  is_uniform_sampling< UniformPointSampling< CDim > >
 
struct  is_uniform_domain
 
struct  is_uniform_domain< DiscreteDomain< DDims... > >
 

Typedefs

template<class T >
using chunk_value_t = typename chunk_traits< T >::value_type
 
template<class T >
using chunk_pointer_t = typename chunk_traits< T >::pointer_type
 
template<class T >
using chunk_reference_t = typename chunk_traits< T >::reference_type
 
template<class ElementType , class SupportType , class LayoutStridedPolicy = std::experimental::layout_right, class MemorySpace = Kokkos::HostSpace>
using ChunkView = ChunkSpan< ElementType const, SupportType, LayoutStridedPolicy, MemorySpace >
 
using CoordinateElement = double
 A CoordinateElement the type of the scalar used to represent elements of coordinates in the continuous space. More...
 
template<class... CDims>
using Coordinate = ddc_detail::TaggedVector< CoordinateElement, CDims... >
 A Coordinate represents a coordinate in the continuous space. More...
 
using DiscreteElementType = std::size_t
 A DiscreteCoordElement is a scalar that identifies an element of the discrete dimension. More...
 
using DiscreteVectorElement = std::ptrdiff_t
 A DiscreteVectorElement is a scalar that represents the difference between two coordinates. More...
 
using default_policy = serial_host_policy
 
template<class T >
using DeviceAllocator = KokkosAllocator< T, Kokkos::DefaultExecutionSpace::memory_space >
 
template<class T >
using HostAllocator = KokkosAllocator< T, Kokkos::HostSpace >
 

Functions

template<class T , std::size_t NT, class U , std::size_t NU>
constexpr bool operator== (AlignedAllocator< T, NT > const &, AlignedAllocator< U, NU > const &) noexcept
 
template<class T , std::size_t NT, class U , std::size_t NU>
constexpr bool operator!= (AlignedAllocator< T, NT > const &, AlignedAllocator< U, NU > const &) noexcept
 
template<class... DDims, class Allocator >
 Chunk (DiscreteDomain< DDims... > const &, Allocator) -> Chunk< typename Allocator::value_type, DiscreteDomain< DDims... >, Allocator >
 
template<class... QueryDDims, class ChunkType >
auto get_domain (ChunkType const &chunk) noexcept
 Access the domain (or subdomain) of a view. More...
 
template<class KokkosView , class... DDims, class = std::enable_if_t<Kokkos::is_view<KokkosView>::value>>
 ChunkSpan (KokkosView const &view, DiscreteDomain< DDims... > domain) -> ChunkSpan< ddc_detail::kokkos_to_mdspan_element_t< typename KokkosView::data_type >, DiscreteDomain< DDims... >, ddc_detail::kokkos_to_mdspan_layout_t< typename KokkosView::array_layout >, typename KokkosView::memory_space >
 
template<class ChunkDst , class ChunkSrc >
auto deepcopy (ChunkDst &&dst, ChunkSrc &&src)
 Copy the content of a borrowed chunk into another. More...
 
template<class... QueryDDims, class... DDims>
constexpr DiscreteDomain< QueryDDims... > select (DiscreteDomain< DDims... > const &domain)
 
template<class... QueryDDims, class... DDims>
constexpr DiscreteVector< QueryDDims... > extents (DiscreteDomain< DDims... > const &domain) noexcept
 
template<class... QueryDDims, class... DDims>
constexpr DiscreteElement< QueryDDims... > front (DiscreteDomain< DDims... > const &domain) noexcept
 
template<class... QueryDDims, class... DDims>
constexpr DiscreteElement< QueryDDims... > back (DiscreteDomain< DDims... > const &domain) noexcept
 
template<class... QueryDDims, class... DDims>
ddc::Coordinate< QueryDDims... > coordinate (DiscreteDomain< DDims... > const &domain, DiscreteElement< QueryDDims... > const &icoord) noexcept
 
template<class... QueryDDims, class... DDims>
ddc::Coordinate< QueryDDims... > rmin (DiscreteDomain< DDims... > const &domain) noexcept
 
template<class... QueryDDims, class... DDims>
ddc::Coordinate< QueryDDims... > rmax (DiscreteDomain< DDims... > const &domain) noexcept
 
template<class QueryDDimSeq , class... DDims>
constexpr auto select_by_type_seq (DiscreteDomain< DDims... > const &domain)
 
template<class Tag >
constexpr DiscreteElementType const & uid (DiscreteElement< Tag > const &tuple) noexcept
 
template<class Tag >
constexpr DiscreteElementTypeuid (DiscreteElement< Tag > &tuple) noexcept
 
template<class QueryTag , class... Tags>
constexpr DiscreteElementType const & uid (DiscreteElement< Tags... > const &tuple) noexcept
 
template<class QueryTag , class... Tags>
constexpr DiscreteElementTypeuid (DiscreteElement< Tags... > &tuple) noexcept
 
template<class QueryTag , class... Tags>
constexpr DiscreteElementType const & uid_or (DiscreteElement< Tags... > const &tuple, DiscreteElementType const &default_value) noexcept
 
template<class... QueryTags, class... Tags>
constexpr DiscreteElement< QueryTags... > select (DiscreteElement< Tags... > const &arr) noexcept
 
template<class... QueryTags, class... Tags>
constexpr DiscreteElement< QueryTags... > select (DiscreteElement< Tags... > &&arr) noexcept
 
template<class QueryTag , class HeadTag , class... TailTags>
constexpr DiscreteElement< QueryTag > const & take (DiscreteElement< HeadTag > const &head, DiscreteElement< TailTags > const &... tags)
 
std::ostream & operator<< (std::ostream &out, DiscreteElement<> const &)
 
template<class Head , class... Tags>
std::ostream & operator<< (std::ostream &out, DiscreteElement< Head, Tags... > const &arr)
 
template<class... Tags, class... OTags>
constexpr bool operator== (DiscreteElement< Tags... > const &lhs, DiscreteElement< OTags... > const &rhs) noexcept
 
template<class... Tags, class... OTags>
constexpr bool operator!= (DiscreteElement< Tags... > const &lhs, DiscreteElement< OTags... > const &rhs) noexcept
 
template<class Tag >
constexpr bool operator< (DiscreteElement< Tag > const &lhs, DiscreteElement< Tag > const &rhs)
 
template<class Tag >
constexpr bool operator<= (DiscreteElement< Tag > const &lhs, DiscreteElement< Tag > const &rhs)
 
template<class Tag >
constexpr bool operator> (DiscreteElement< Tag > const &lhs, DiscreteElement< Tag > const &rhs)
 
template<class Tag >
constexpr bool operator>= (DiscreteElement< Tag > const &lhs, DiscreteElement< Tag > const &rhs)
 
template<class... Tags, class... OTags>
constexpr DiscreteElement< Tags... > operator+ (DiscreteElement< Tags... > const &lhs, DiscreteVector< OTags... > const &rhs)
 right external binary operators: +, - More...
 
template<class Tag , class IntegralType , class = std::enable_if_t<std::is_integral_v<IntegralType>>, class = std::enable_if_t<!is_discrete_vector_v<IntegralType>>>
constexpr DiscreteElement< Tag > operator+ (DiscreteElement< Tag > const &lhs, IntegralType const &rhs)
 
template<class... Tags, class... OTags>
constexpr DiscreteElement< Tags... > operator- (DiscreteElement< Tags... > const &lhs, DiscreteVector< OTags... > const &rhs)
 
template<class Tag , class IntegralType , class = std::enable_if_t<std::is_integral_v<IntegralType>>, class = std::enable_if_t<!is_discrete_vector_v<IntegralType>>>
constexpr DiscreteElement< Tag > operator- (DiscreteElement< Tag > const &lhs, IntegralType const &rhs)
 
template<class... Tags, class... OTags>
constexpr DiscreteVector< Tags... > operator- (DiscreteElement< Tags... > const &lhs, DiscreteElement< OTags... > const &rhs)
 binary operator: - More...
 
template<class DDim , class... Args>
void init_discrete_space (Args &&... args)
 Initialize (emplace) a global singleton discrete space. More...
 
template<class DDimImpl , class Arg >
Arg init_discrete_space (std::tuple< DDimImpl, Arg > &&a)
 Move construct a global singleton discrete space and pass through the other argument. More...
 
template<class DDimImpl , class... Args>
std::enable_if_t< 2<=sizeof...(Args), std::tuple< Args... > > init_discrete_space(std::tuple< DDimImpl, Args... > &&a){ using DDim=typename DDimImpl::discrete_dimension_type;init_discrete_space< DDim >std::move(std::get< 0 >a)));return ddc_detail::extract_after(std::move(a), std::index_sequence_for< Args... >));}template< class DDim, class MemorySpace=DDC_CURRENT_KOKKOS_SPACE >DDC_INLINE_FUNCTION ddc_detail::ddim_impl_t< DDim, MemorySpace > const &discrete_space(){ if constexpr(std::is_same_v< MemorySpace, Kokkos::HostSpace >) { return ddc_detail::g_discrete_space_dual< DDim > -> get_host ()
 Move construct a global singleton discrete space and pass through remaining arguments. More...
 
template<class QueryTag , class... Tags>
constexpr DiscreteVectorElement const & get (DiscreteVector< Tags... > const &tuple) noexcept
 
template<class QueryTag , class... Tags>
constexpr DiscreteVectorElementget (DiscreteVector< Tags... > &tuple) noexcept
 
template<class QueryTag , class... Tags>
constexpr DiscreteVectorElement const & get_or (DiscreteVector< Tags... > const &tuple, DiscreteVectorElement const &default_value) noexcept
 
template<class... Tags>
constexpr DiscreteVector< Tags... > operator+ (DiscreteVector< Tags... > const &x)
 Unary operators: +, -. More...
 
template<class... Tags>
constexpr DiscreteVector< Tags... > operator- (DiscreteVector< Tags... > const &x)
 
template<class... Tags, class... OTags>
constexpr DiscreteVector< Tags... > operator+ (DiscreteVector< Tags... > const &lhs, DiscreteVector< OTags... > const &rhs)
 Internal binary operators: +, -. More...
 
template<class Tag , class IntegralType , class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr DiscreteVector< Tag > operator+ (DiscreteVector< Tag > const &lhs, IntegralType const &rhs)
 
template<class IntegralType , class Tag , class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr DiscreteVector< Tag > operator+ (IntegralType const &lhs, DiscreteVector< Tag > const &rhs)
 
template<class... Tags, class... OTags>
constexpr DiscreteVector< Tags... > operator- (DiscreteVector< Tags... > const &lhs, DiscreteVector< OTags... > const &rhs)
 
template<class Tag , class IntegralType , class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr DiscreteVector< Tag > operator- (DiscreteVector< Tag > const &lhs, IntegralType const &rhs)
 
template<class IntegralType , class Tag , class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr DiscreteVector< Tag > operator- (IntegralType const &lhs, DiscreteVector< Tag > const &rhs)
 
template<class IntegralType , class... Tags, class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr auto operator* (IntegralType const &lhs, DiscreteVector< Tags... > const &rhs)
 external left binary operator: * More...
 
template<class... QueryTags, class... Tags>
constexpr DiscreteVector< QueryTags... > select (DiscreteVector< Tags... > const &arr) noexcept
 
template<class... QueryTags, class... Tags>
constexpr DiscreteVector< QueryTags... > select (DiscreteVector< Tags... > &&arr) noexcept
 
template<class QueryTag , class HeadTag , class... TailTags>
constexpr DiscreteVector< QueryTag > const & take (DiscreteVector< HeadTag > const &head, DiscreteVector< TailTags > const &... tags)
 
template<class Tag >
constexpr bool operator< (DiscreteVector< Tag > const &lhs, DiscreteVector< Tag > const &rhs)
 
template<class Tag , class IntegralType >
constexpr bool operator< (DiscreteVector< Tag > const &lhs, IntegralType const &rhs)
 
std::ostream & operator<< (std::ostream &out, DiscreteVector<> const &)
 
template<class Head , class... Tags>
std::ostream & operator<< (std::ostream &out, DiscreteVector< Head, Tags... > const &arr)
 
template<class ChunkDst , class T >
auto fill (ChunkDst &&dst, T const &value)
 Fill a borrowed chunk with a given value. More...
 
template<class... DDims, class Functor >
void for_each (serial_host_policy, DiscreteDomain< DDims... > const &domain, Functor &&f) noexcept
 iterates over a nD domain using the serial execution policy More...
 
template<class... DDims, class Functor >
void for_each_n (serial_host_policy, DiscreteVector< DDims... > const &extent, Functor &&f) noexcept
 iterates over a nD extent using the serial execution policy More...
 
template<class... DDims, class Functor >
void for_each (parallel_host_policy, DiscreteDomain< DDims... > const &domain, Functor &&f) noexcept
 iterates over a nD domain using the serial execution policy More...
 
template<class... DDims, class Functor >
void for_each (parallel_device_policy, DiscreteDomain< DDims... > const &domain, Functor &&f) noexcept
 iterates over a nD domain using the parallel_device_policy execution policy More...
 
template<class... DDims, class Functor >
void for_each (DiscreteDomain< DDims... > const &domain, Functor &&f) noexcept
 iterates over a nD domain using the default execution policy More...
 
template<class... DDims, class Functor >
void for_each_n (DiscreteVector< DDims... > const &extent, Functor &&f) noexcept
 iterates over a nD extent using the default execution policy More...
 
template<class ExecutionPolicy , class ElementType , class... DDims, class LayoutPolicy , class Functor >
void for_each_elem (ExecutionPolicy &&policy, ChunkSpan< ElementType, DiscreteDomain< DDims... >, LayoutPolicy > chunk_span, Functor &&f) noexcept
 
template<class ElementType , class... DDims, class LayoutPolicy , class Functor >
void for_each_elem (ChunkSpan< ElementType, DiscreteDomain< DDims... >, LayoutPolicy > chunk_span, Functor &&f) noexcept
 
template<class T , class MST , class U , class MSU >
constexpr bool operator== (KokkosAllocator< T, MST > const &, KokkosAllocator< U, MSU > const &) noexcept
 
template<class T , class MST , class U , class MSU >
constexpr bool operator!= (KokkosAllocator< T, MST > const &, KokkosAllocator< U, MSU > const &) noexcept
 
template<class DDimImpl , std::enable_if_t< is_non_uniform_sampling_v< typename DDimImpl::discrete_dimension_type >, int > = 0>
std::ostream & operator<< (std::ostream &out, DDimImpl const &mesh)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > coordinate (DiscreteElement< NonUniformPointSampling< CDim >> const &c)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > distance_at_left (DiscreteElement< NonUniformPointSampling< CDim >> i)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > distance_at_right (DiscreteElement< NonUniformPointSampling< CDim >> i)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > rmin (DiscreteDomain< NonUniformPointSampling< CDim >> const &d)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > rmax (DiscreteDomain< NonUniformPointSampling< CDim >> const &d)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > rlength (DiscreteDomain< NonUniformPointSampling< CDim >> const &d)
 
template<PDI_inout_t access, class DataType >
void expose_to_pdi (std::string const &name, DataType &&data)
 
template<class DataType >
void expose_to_pdi (std::string const &name, DataType &&data)
 
template<class... DDims, class T , class BinaryReductionOp , class UnaryTransformOp >
transform_reduce ([[maybe_unused]] serial_host_policy policy, DiscreteDomain< DDims... > const &domain, T neutral, BinaryReductionOp &&reduce, UnaryTransformOp &&transform) noexcept
 A reduction over a nD domain using the Serial execution policy. More...
 
template<class... DDims, class T , class BinaryReductionOp , class UnaryTransformOp >
transform_reduce ([[maybe_unused]] parallel_host_policy policy, DiscreteDomain< DDims... > const &domain, T neutral, BinaryReductionOp &&reduce, UnaryTransformOp &&transform) noexcept
 A reduction over a nD domain using the Kokkos execution policy. More...
 
template<class... DDims, class T , class BinaryReductionOp , class UnaryTransformOp >
transform_reduce ([[maybe_unused]] parallel_device_policy policy, DiscreteDomain< DDims... > const &domain, T neutral, BinaryReductionOp &&reduce, UnaryTransformOp &&transform) noexcept
 A reduction over a nD domain using the Kokkos execution policy. More...
 
template<class... DDims, class T , class BinaryReductionOp , class UnaryTransformOp >
transform_reduce (DiscreteDomain< DDims... > const &domain, T neutral, BinaryReductionOp &&reduce, UnaryTransformOp &&transform) noexcept
 A reduction over a nD domain using the default execution policy. More...
 
template<class DDim >
DDC_INLINE_FUNCTION std::enable_if_t< is_uniform_sampling_v< DDim >, typename DDim::continuous_element_type > origin () noexcept
 Lower bound index of the mesh. More...
 
template<class DDim >
DDC_INLINE_FUNCTION std::enable_if_t< is_uniform_sampling_v< DDim >, typename DDim::discrete_element_type > front () noexcept
 Lower bound index of the mesh. More...
 
template<class DDim >
DDC_INLINE_FUNCTION std::enable_if_t< is_uniform_sampling_v< DDim >, double > step () noexcept
 Spacing step of the mesh. More...
 
template<class CDim >
constexpr DDC_INLINE_FUNCTION Coordinate< CDim > coordinate (DiscreteElement< UniformPointSampling< CDim >> const &c)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > distance_at_left (DiscreteElement< UniformPointSampling< CDim >>)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > distance_at_right (DiscreteElement< UniformPointSampling< CDim >>)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > rmin (DiscreteDomain< UniformPointSampling< CDim >> const &d)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > rmax (DiscreteDomain< UniformPointSampling< CDim >> const &d)
 
template<class CDim >
DDC_INLINE_FUNCTION Coordinate< CDim > rlength (DiscreteDomain< UniformPointSampling< CDim >> const &d)
 

Variables

template<class ElementType , class SupportType , class Allocator >
constexpr bool enable_chunk< Chunk< ElementType, SupportType, Allocator > > = true
 
template<class T >
constexpr bool enable_borrowed_chunk = false
 
template<class T >
constexpr bool enable_chunk = false
 
template<class T >
constexpr bool is_chunk_v = enable_chunk<std::remove_const_t<std::remove_reference_t<T>>>
 
template<class T >
constexpr bool is_borrowed_chunk_v
 
template<class T >
constexpr bool is_writable_chunk_v = !std::is_const_v<std::remove_pointer_t<chunk_pointer_t<T>>>
 
template<class ElementType , class SupportType , class LayoutStridedPolicy , class MemorySpace >
constexpr bool enable_chunk< ChunkSpan< ElementType, SupportType, LayoutStridedPolicy, MemorySpace > > = true
 
template<class ElementType , class SupportType , class LayoutStridedPolicy , class MemorySpace >
constexpr bool enable_borrowed_chunk< ChunkSpan< ElementType, SupportType, LayoutStridedPolicy, MemorySpace > > = true
 
template<class T >
constexpr bool is_discrete_element_v = IsDiscreteElement<T>::value
 
 else
 
template<class T >
constexpr bool is_discrete_vector_v = IsDiscreteVector<T>::value
 
template<class DDim >
constexpr bool is_non_uniform_sampling_v = is_non_uniform_sampling<DDim>::value
 
template<class T >
constexpr bool is_rectilinear_domain_v = is_rectilinear_domain<T>::value
 
template<class DDim >
constexpr bool is_uniform_sampling_v = is_uniform_sampling<DDim>::value
 
template<class T >
constexpr bool is_uniform_domain_v = is_uniform_domain<T>::value
 

Class Documentation

◆ ddc::Chunk

class ddc::Chunk

template<class ElementType, class, class Allocator = HostAllocator<ElementType>>
class ddc::Chunk< ElementType, class, Allocator >

◆ ddc::chunk_traits

struct ddc::chunk_traits

template<class T>
struct ddc::chunk_traits< T >

Class Members
typedef remove_cv_t< remove_pointer_t< decltype(declval< T >() value_type
typedef decltype(declval< T >() pointer_type
typedef decltype(*declval< T >() reference_type

◆ ddc::ChunkCommon

class ddc::ChunkCommon

template<class ElementType, class SupportType, class LayoutStridedPolicy>
class ddc::ChunkCommon< ElementType, SupportType, LayoutStridedPolicy >

◆ ddc::ChunkSpan

class ddc::ChunkSpan

template<class ElementType, class SupportType, class LayoutStridedPolicy = std::experimental::layout_right, class MemorySpace = Kokkos::DefaultHostExecutionSpace::memory_space>
class ddc::ChunkSpan< ElementType, SupportType, LayoutStridedPolicy, MemorySpace >

◆ ddc::ConversionOperators

class ddc::ConversionOperators

template<class T>
class ddc::ConversionOperators< T >

◆ ddc::serial_host_policy

struct ddc::serial_host_policy

Serial execution on the host.

◆ ddc::parallel_host_policy

struct ddc::parallel_host_policy

Parallel execution on the default device.

◆ ddc::parallel_device_policy

struct ddc::parallel_device_policy

Kokkos parallel execution uisng MDRange policy.

◆ ddc::NonUniformPointSampling

class ddc::NonUniformPointSampling

template<class CDim>
class ddc::NonUniformPointSampling< CDim >

NonUniformPointSampling models a non-uniform discretization of the CDim segment $[a, b]$.

Class Members
typedef CDim continuous_dimension_type
typedef Coordinate< CDim > continuous_element_type
typedef NonUniformPointSampling discrete_dimension_type
typedef DiscreteDomain< NonUniformPointSampling > discrete_domain_type
typedef DiscreteElement< NonUniformPointSampling > discrete_element_type
typedef DiscreteVector< NonUniformPointSampling > discrete_vector_type

Typedef Documentation

◆ chunk_value_t

template<class T >
using ddc::chunk_value_t = typedef typename chunk_traits<T>::value_type

◆ chunk_pointer_t

template<class T >
using ddc::chunk_pointer_t = typedef typename chunk_traits<T>::pointer_type

◆ chunk_reference_t

template<class T >
using ddc::chunk_reference_t = typedef typename chunk_traits<T>::reference_type

◆ ChunkView

template<class ElementType , class SupportType , class LayoutStridedPolicy = std::experimental::layout_right, class MemorySpace = Kokkos::HostSpace>
using ddc::ChunkView = typedef ChunkSpan<ElementType const, SupportType, LayoutStridedPolicy, MemorySpace>

◆ CoordinateElement

using ddc::CoordinateElement = typedef double

A CoordinateElement the type of the scalar used to represent elements of coordinates in the continuous space.

◆ Coordinate

template<class... CDims>
using ddc::Coordinate = typedef ddc_detail::TaggedVector<CoordinateElement, CDims...>

A Coordinate represents a coordinate in the continuous space.

It is tagged by its dimensions.

◆ DiscreteElementType

using ddc::DiscreteElementType = typedef std::size_t

A DiscreteCoordElement is a scalar that identifies an element of the discrete dimension.

◆ DiscreteVectorElement

using ddc::DiscreteVectorElement = typedef std::ptrdiff_t

A DiscreteVectorElement is a scalar that represents the difference between two coordinates.

◆ default_policy

◆ DeviceAllocator

template<class T >
using ddc::DeviceAllocator = typedef KokkosAllocator<T, Kokkos::DefaultExecutionSpace::memory_space>

◆ HostAllocator

template<class T >
using ddc::HostAllocator = typedef KokkosAllocator<T, Kokkos::HostSpace>

Function Documentation

◆ operator==() [1/3]

template<class T , std::size_t NT, class U , std::size_t NU>
constexpr bool ddc::operator== ( AlignedAllocator< T, NT > const &  ,
AlignedAllocator< U, NU > const &   
)
constexprnoexcept

◆ operator!=() [1/3]

template<class T , std::size_t NT, class U , std::size_t NU>
constexpr bool ddc::operator!= ( AlignedAllocator< T, NT > const &  ,
AlignedAllocator< U, NU > const &   
)
constexprnoexcept

◆ Chunk()

template<class... DDims, class Allocator >
ddc::Chunk ( DiscreteDomain< DDims... > const &  ,
Allocator   
) -> Chunk< typename Allocator::value_type, DiscreteDomain< DDims... >, Allocator >

◆ get_domain()

template<class... QueryDDims, class ChunkType >
auto ddc::get_domain ( ChunkType const &  chunk)
noexcept

Access the domain (or subdomain) of a view.

Parameters
[in]chunkthe view whose domain to access
Returns
the domain of view in the queried dimensions

◆ ChunkSpan()

template<class KokkosView , class... DDims, class = std::enable_if_t<Kokkos::is_view<KokkosView>::value>>
ddc::ChunkSpan ( KokkosView const &  view,
DiscreteDomain< DDims... >  domain 
) -> ChunkSpan< ddc_detail::kokkos_to_mdspan_element_t< typename KokkosView::data_type >, DiscreteDomain< DDims... >, ddc_detail::kokkos_to_mdspan_layout_t< typename KokkosView::array_layout >, typename KokkosView::memory_space >

◆ deepcopy()

template<class ChunkDst , class ChunkSrc >
auto ddc::deepcopy ( ChunkDst &&  dst,
ChunkSrc &&  src 
)

Copy the content of a borrowed chunk into another.

Parameters
[out]dstthe borrowed chunk in which to copy
[in]srcthe borrowed chunk from which to copy
Returns
dst as a ChunkSpan

◆ select() [1/5]

template<class... QueryDDims, class... DDims>
constexpr DiscreteDomain<QueryDDims...> ddc::select ( DiscreteDomain< DDims... > const &  domain)
constexpr

◆ extents()

template<class... QueryDDims, class... DDims>
constexpr DiscreteVector<QueryDDims...> ddc::extents ( DiscreteDomain< DDims... > const &  domain)
constexprnoexcept

◆ front() [1/2]

template<class... QueryDDims, class... DDims>
constexpr DiscreteElement<QueryDDims...> ddc::front ( DiscreteDomain< DDims... > const &  domain)
constexprnoexcept

◆ back()

template<class... QueryDDims, class... DDims>
constexpr DiscreteElement<QueryDDims...> ddc::back ( DiscreteDomain< DDims... > const &  domain)
constexprnoexcept

◆ coordinate() [1/3]

template<class... QueryDDims, class... DDims>
ddc::Coordinate<QueryDDims...> ddc::coordinate ( DiscreteDomain< DDims... > const &  domain,
DiscreteElement< QueryDDims... > const &  icoord 
)
noexcept

◆ rmin() [1/3]

template<class... QueryDDims, class... DDims>
ddc::Coordinate<QueryDDims...> ddc::rmin ( DiscreteDomain< DDims... > const &  domain)
noexcept

◆ rmax() [1/3]

template<class... QueryDDims, class... DDims>
ddc::Coordinate<QueryDDims...> ddc::rmax ( DiscreteDomain< DDims... > const &  domain)
noexcept

◆ select_by_type_seq()

template<class QueryDDimSeq , class... DDims>
constexpr auto ddc::select_by_type_seq ( DiscreteDomain< DDims... > const &  domain)
constexpr

◆ uid() [1/4]

template<class Tag >
constexpr DiscreteElementType const& ddc::uid ( DiscreteElement< Tag > const &  tuple)
inlineconstexprnoexcept

◆ uid() [2/4]

template<class Tag >
constexpr DiscreteElementType& ddc::uid ( DiscreteElement< Tag > &  tuple)
inlineconstexprnoexcept

◆ uid() [3/4]

template<class QueryTag , class... Tags>
constexpr DiscreteElementType const& ddc::uid ( DiscreteElement< Tags... > const &  tuple)
inlineconstexprnoexcept

◆ uid() [4/4]

template<class QueryTag , class... Tags>
constexpr DiscreteElementType& ddc::uid ( DiscreteElement< Tags... > &  tuple)
inlineconstexprnoexcept

◆ uid_or()

template<class QueryTag , class... Tags>
constexpr DiscreteElementType const& ddc::uid_or ( DiscreteElement< Tags... > const &  tuple,
DiscreteElementType const &  default_value 
)
inlineconstexprnoexcept

◆ select() [2/5]

template<class... QueryTags, class... Tags>
constexpr DiscreteElement<QueryTags...> ddc::select ( DiscreteElement< Tags... > const &  arr)
inlineconstexprnoexcept

◆ select() [3/5]

template<class... QueryTags, class... Tags>
constexpr DiscreteElement<QueryTags...> ddc::select ( DiscreteElement< Tags... > &&  arr)
inlineconstexprnoexcept

◆ take() [1/2]

template<class QueryTag , class HeadTag , class... TailTags>
constexpr DiscreteElement<QueryTag> const& ddc::take ( DiscreteElement< HeadTag > const &  head,
DiscreteElement< TailTags > const &...  tags 
)
constexpr

◆ operator<<() [1/5]

std::ostream& ddc::operator<< ( std::ostream &  out,
DiscreteElement<> const &   
)
inline

◆ operator<<() [2/5]

template<class Head , class... Tags>
std::ostream& ddc::operator<< ( std::ostream &  out,
DiscreteElement< Head, Tags... > const &  arr 
)

◆ operator==() [2/3]

template<class... Tags, class... OTags>
constexpr bool ddc::operator== ( DiscreteElement< Tags... > const &  lhs,
DiscreteElement< OTags... > const &  rhs 
)
inlineconstexprnoexcept

◆ operator!=() [2/3]

template<class... Tags, class... OTags>
constexpr bool ddc::operator!= ( DiscreteElement< Tags... > const &  lhs,
DiscreteElement< OTags... > const &  rhs 
)
inlineconstexprnoexcept

◆ operator<() [1/3]

template<class Tag >
constexpr bool ddc::operator< ( DiscreteElement< Tag > const &  lhs,
DiscreteElement< Tag > const &  rhs 
)
inlineconstexpr

◆ operator<=()

template<class Tag >
constexpr bool ddc::operator<= ( DiscreteElement< Tag > const &  lhs,
DiscreteElement< Tag > const &  rhs 
)
inlineconstexpr

◆ operator>()

template<class Tag >
constexpr bool ddc::operator> ( DiscreteElement< Tag > const &  lhs,
DiscreteElement< Tag > const &  rhs 
)
inlineconstexpr

◆ operator>=()

template<class Tag >
constexpr bool ddc::operator>= ( DiscreteElement< Tag > const &  lhs,
DiscreteElement< Tag > const &  rhs 
)
inlineconstexpr

◆ operator+() [1/6]

template<class... Tags, class... OTags>
constexpr DiscreteElement<Tags...> ddc::operator+ ( DiscreteElement< Tags... > const &  lhs,
DiscreteVector< OTags... > const &  rhs 
)
inlineconstexpr

right external binary operators: +, -

◆ operator+() [2/6]

template<class Tag , class IntegralType , class = std::enable_if_t<std::is_integral_v<IntegralType>>, class = std::enable_if_t<!is_discrete_vector_v<IntegralType>>>
constexpr DiscreteElement<Tag> ddc::operator+ ( DiscreteElement< Tag > const &  lhs,
IntegralType const &  rhs 
)
inlineconstexpr

◆ operator-() [1/7]

template<class... Tags, class... OTags>
constexpr DiscreteElement<Tags...> ddc::operator- ( DiscreteElement< Tags... > const &  lhs,
DiscreteVector< OTags... > const &  rhs 
)
inlineconstexpr

◆ operator-() [2/7]

template<class Tag , class IntegralType , class = std::enable_if_t<std::is_integral_v<IntegralType>>, class = std::enable_if_t<!is_discrete_vector_v<IntegralType>>>
constexpr DiscreteElement<Tag> ddc::operator- ( DiscreteElement< Tag > const &  lhs,
IntegralType const &  rhs 
)
inlineconstexpr

◆ operator-() [3/7]

template<class... Tags, class... OTags>
constexpr DiscreteVector<Tags...> ddc::operator- ( DiscreteElement< Tags... > const &  lhs,
DiscreteElement< OTags... > const &  rhs 
)
inlineconstexpr

binary operator: -

◆ init_discrete_space() [1/2]

template<class DDim , class... Args>
void ddc::init_discrete_space ( Args &&...  args)

Initialize (emplace) a global singleton discrete space.

Parameters
argsthe constructor arguments

◆ init_discrete_space() [2/2]

template<class DDimImpl , class Arg >
Arg ddc::init_discrete_space ( std::tuple< DDimImpl, Arg > &&  a)

Move construct a global singleton discrete space and pass through the other argument.

Parameters
a- the discrete space to move at index 0
  • the arguments to pass through at index 1

◆ get_host()

template<class DDimImpl , class... Args>
std::enable_if_t<2 <= sizeof...(Args), std::tuple<Args...> > init_discrete_space( std::tuple<DDimImpl, Args...>&& a){ using DDim = typename DDimImpl::discrete_dimension_type; init_discrete_space<DDim>std::move(std::get<0>a))); return ddc_detail::extract_after(std::move(a), std::index_sequence_for<Args...>));}template <class DDim, class MemorySpace = DDC_CURRENT_KOKKOS_SPACE>DDC_INLINE_FUNCTION ddc_detail::ddim_impl_t<DDim, MemorySpace> const& discrete_space(){ if constexpr (std::is_same_v<MemorySpace, Kokkos::HostSpace>) { return ddc_detail::g_discrete_space_dual<DDim>-> ddc::get_host ( )

Move construct a global singleton discrete space and pass through remaining arguments.

Parameters
a- the discrete space to move at index 0
  • the (2+) arguments to pass through in other indices

◆ get() [1/2]

template<class QueryTag , class... Tags>
constexpr DiscreteVectorElement const& ddc::get ( DiscreteVector< Tags... > const &  tuple)
inlineconstexprnoexcept

◆ get() [2/2]

template<class QueryTag , class... Tags>
constexpr DiscreteVectorElement& ddc::get ( DiscreteVector< Tags... > &  tuple)
inlineconstexprnoexcept

◆ get_or()

template<class QueryTag , class... Tags>
constexpr DiscreteVectorElement const& ddc::get_or ( DiscreteVector< Tags... > const &  tuple,
DiscreteVectorElement const &  default_value 
)
inlineconstexprnoexcept

◆ operator+() [3/6]

template<class... Tags>
constexpr DiscreteVector<Tags...> ddc::operator+ ( DiscreteVector< Tags... > const &  x)
inlineconstexpr

Unary operators: +, -.

◆ operator-() [4/7]

template<class... Tags>
constexpr DiscreteVector<Tags...> ddc::operator- ( DiscreteVector< Tags... > const &  x)
inlineconstexpr

◆ operator+() [4/6]

template<class... Tags, class... OTags>
constexpr DiscreteVector<Tags...> ddc::operator+ ( DiscreteVector< Tags... > const &  lhs,
DiscreteVector< OTags... > const &  rhs 
)
inlineconstexpr

Internal binary operators: +, -.

◆ operator+() [5/6]

template<class Tag , class IntegralType , class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr DiscreteVector<Tag> ddc::operator+ ( DiscreteVector< Tag > const &  lhs,
IntegralType const &  rhs 
)
inlineconstexpr

◆ operator+() [6/6]

template<class IntegralType , class Tag , class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr DiscreteVector<Tag> ddc::operator+ ( IntegralType const &  lhs,
DiscreteVector< Tag > const &  rhs 
)
inlineconstexpr

◆ operator-() [5/7]

template<class... Tags, class... OTags>
constexpr DiscreteVector<Tags...> ddc::operator- ( DiscreteVector< Tags... > const &  lhs,
DiscreteVector< OTags... > const &  rhs 
)
inlineconstexpr

◆ operator-() [6/7]

template<class Tag , class IntegralType , class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr DiscreteVector<Tag> ddc::operator- ( DiscreteVector< Tag > const &  lhs,
IntegralType const &  rhs 
)
inlineconstexpr

◆ operator-() [7/7]

template<class IntegralType , class Tag , class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr DiscreteVector<Tag> ddc::operator- ( IntegralType const &  lhs,
DiscreteVector< Tag > const &  rhs 
)
inlineconstexpr

◆ operator*()

template<class IntegralType , class... Tags, class = std::enable_if_t<std::is_integral_v<IntegralType>>>
constexpr auto ddc::operator* ( IntegralType const &  lhs,
DiscreteVector< Tags... > const &  rhs 
)
inlineconstexpr

external left binary operator: *

◆ select() [4/5]

template<class... QueryTags, class... Tags>
constexpr DiscreteVector<QueryTags...> ddc::select ( DiscreteVector< Tags... > const &  arr)
inlineconstexprnoexcept

◆ select() [5/5]

template<class... QueryTags, class... Tags>
constexpr DiscreteVector<QueryTags...> ddc::select ( DiscreteVector< Tags... > &&  arr)
inlineconstexprnoexcept

◆ take() [2/2]

template<class QueryTag , class HeadTag , class... TailTags>
constexpr DiscreteVector<QueryTag> const& ddc::take ( DiscreteVector< HeadTag > const &  head,
DiscreteVector< TailTags > const &...  tags 
)
constexpr

◆ operator<() [2/3]

template<class Tag >
constexpr bool ddc::operator< ( DiscreteVector< Tag > const &  lhs,
DiscreteVector< Tag > const &  rhs 
)
inlineconstexpr

◆ operator<() [3/3]

template<class Tag , class IntegralType >
constexpr bool ddc::operator< ( DiscreteVector< Tag > const &  lhs,
IntegralType const &  rhs 
)
inlineconstexpr

◆ operator<<() [3/5]

std::ostream& ddc::operator<< ( std::ostream &  out,
DiscreteVector<> const &   
)
inline

◆ operator<<() [4/5]

template<class Head , class... Tags>
std::ostream& ddc::operator<< ( std::ostream &  out,
DiscreteVector< Head, Tags... > const &  arr 
)

◆ fill()

template<class ChunkDst , class T >
auto ddc::fill ( ChunkDst &&  dst,
T const &  value 
)

Fill a borrowed chunk with a given value.

Parameters
[out]dstthe borrowed chunk in which to copy
[in]valuethe value to fill dst
Returns
dst as a ChunkSpan

◆ for_each() [1/4]

template<class... DDims, class Functor >
void ddc::for_each ( serial_host_policy  ,
DiscreteDomain< DDims... > const &  domain,
Functor &&  f 
)
inlinenoexcept

iterates over a nD domain using the serial execution policy

Parameters
[in]domainthe domain over which to iterate
[in]fa functor taking an index as parameter

◆ for_each_n() [1/2]

template<class... DDims, class Functor >
void ddc::for_each_n ( serial_host_policy  ,
DiscreteVector< DDims... > const &  extent,
Functor &&  f 
)
inlinenoexcept

iterates over a nD extent using the serial execution policy

Parameters
[in]extentthe extent over which to iterate
[in]fa functor taking an index as parameter

◆ for_each() [2/4]

template<class... DDims, class Functor >
void ddc::for_each ( parallel_host_policy  ,
DiscreteDomain< DDims... > const &  domain,
Functor &&  f 
)
inlinenoexcept

iterates over a nD domain using the serial execution policy

Parameters
[in]domainthe domain over which to iterate
[in]fa functor taking an index as parameter

◆ for_each() [3/4]

template<class... DDims, class Functor >
void ddc::for_each ( parallel_device_policy  ,
DiscreteDomain< DDims... > const &  domain,
Functor &&  f 
)
inlinenoexcept

iterates over a nD domain using the parallel_device_policy execution policy

Parameters
[in]domainthe domain over which to iterate
[in]fa functor taking an index as parameter

◆ for_each() [4/4]

template<class... DDims, class Functor >
void ddc::for_each ( DiscreteDomain< DDims... > const &  domain,
Functor &&  f 
)
inlinenoexcept

iterates over a nD domain using the default execution policy

Parameters
[in]domainthe domain over which to iterate
[in]fa functor taking an index as parameter

◆ for_each_n() [2/2]

template<class... DDims, class Functor >
void ddc::for_each_n ( DiscreteVector< DDims... > const &  extent,
Functor &&  f 
)
inlinenoexcept

iterates over a nD extent using the default execution policy

Parameters
[in]extentthe extent over which to iterate
[in]fa functor taking an index as parameter

◆ for_each_elem() [1/2]

template<class ExecutionPolicy , class ElementType , class... DDims, class LayoutPolicy , class Functor >
void ddc::for_each_elem ( ExecutionPolicy &&  policy,
ChunkSpan< ElementType, DiscreteDomain< DDims... >, LayoutPolicy >  chunk_span,
Functor &&  f 
)
inlinenoexcept

◆ for_each_elem() [2/2]

template<class ElementType , class... DDims, class LayoutPolicy , class Functor >
void ddc::for_each_elem ( ChunkSpan< ElementType, DiscreteDomain< DDims... >, LayoutPolicy >  chunk_span,
Functor &&  f 
)
inlinenoexcept

◆ operator==() [3/3]

template<class T , class MST , class U , class MSU >
constexpr bool ddc::operator== ( KokkosAllocator< T, MST > const &  ,
KokkosAllocator< U, MSU > const &   
)
constexprnoexcept

◆ operator!=() [3/3]

template<class T , class MST , class U , class MSU >
constexpr bool ddc::operator!= ( KokkosAllocator< T, MST > const &  ,
KokkosAllocator< U, MSU > const &   
)
constexprnoexcept

◆ operator<<() [5/5]

template<class DDimImpl , std::enable_if_t< is_non_uniform_sampling_v< typename DDimImpl::discrete_dimension_type >, int > = 0>
std::ostream & ddc::operator<< ( std::ostream &  out,
DDimImpl const &  mesh 
)

◆ coordinate() [2/3]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::coordinate ( DiscreteElement< NonUniformPointSampling< CDim >> const &  c)

◆ distance_at_left() [1/2]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::distance_at_left ( DiscreteElement< NonUniformPointSampling< CDim >>  i)

◆ distance_at_right() [1/2]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::distance_at_right ( DiscreteElement< NonUniformPointSampling< CDim >>  i)

◆ rmin() [2/3]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::rmin ( DiscreteDomain< NonUniformPointSampling< CDim >> const &  d)

◆ rmax() [2/3]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::rmax ( DiscreteDomain< NonUniformPointSampling< CDim >> const &  d)

◆ rlength() [1/2]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::rlength ( DiscreteDomain< NonUniformPointSampling< CDim >> const &  d)

◆ expose_to_pdi() [1/2]

template<PDI_inout_t access, class DataType >
void ddc::expose_to_pdi ( std::string const &  name,
DataType &&  data 
)

◆ expose_to_pdi() [2/2]

template<class DataType >
void ddc::expose_to_pdi ( std::string const &  name,
DataType &&  data 
)

◆ transform_reduce() [1/4]

template<class... DDims, class T , class BinaryReductionOp , class UnaryTransformOp >
T ddc::transform_reduce ( [[maybe_unused] ] serial_host_policy  policy,
DiscreteDomain< DDims... > const &  domain,
neutral,
BinaryReductionOp &&  reduce,
UnaryTransformOp &&  transform 
)
inlinenoexcept

A reduction over a nD domain using the Serial execution policy.

Parameters
[in]policythe execution policy to use
[in]domainthe range over which to apply the algorithm
[in]neutralthe neutral element of the reduction operation
[in]reducea binary FunctionObject that will be applied in unspecified order to the results of transform, the results of other reduce and neutral.
[in]transforma unary FunctionObject that will be applied to each element of the input range. The return type must be acceptable as input to reduce

◆ transform_reduce() [2/4]

template<class... DDims, class T , class BinaryReductionOp , class UnaryTransformOp >
T ddc::transform_reduce ( [[maybe_unused] ] parallel_host_policy  policy,
DiscreteDomain< DDims... > const &  domain,
neutral,
BinaryReductionOp &&  reduce,
UnaryTransformOp &&  transform 
)
inlinenoexcept

A reduction over a nD domain using the Kokkos execution policy.

Parameters
[in]policythe execution policy to use
[in]domainthe range over which to apply the algorithm
[in]neutralthe neutral element of the reduction operation
[in]reducea binary FunctionObject that will be applied in unspecified order to the results of transform, the results of other reduce and neutral.
[in]transforma unary FunctionObject that will be applied to each element of the input range. The return type must be acceptable as input to reduce

◆ transform_reduce() [3/4]

template<class... DDims, class T , class BinaryReductionOp , class UnaryTransformOp >
T ddc::transform_reduce ( [[maybe_unused] ] parallel_device_policy  policy,
DiscreteDomain< DDims... > const &  domain,
neutral,
BinaryReductionOp &&  reduce,
UnaryTransformOp &&  transform 
)
inlinenoexcept

A reduction over a nD domain using the Kokkos execution policy.

Parameters
[in]policythe execution policy to use
[in]domainthe range over which to apply the algorithm
[in]neutralthe neutral element of the reduction operation
[in]reducea binary FunctionObject that will be applied in unspecified order to the results of transform, the results of other reduce and neutral.
[in]transforma unary FunctionObject that will be applied to each element of the input range. The return type must be acceptable as input to reduce

◆ transform_reduce() [4/4]

template<class... DDims, class T , class BinaryReductionOp , class UnaryTransformOp >
T ddc::transform_reduce ( DiscreteDomain< DDims... > const &  domain,
neutral,
BinaryReductionOp &&  reduce,
UnaryTransformOp &&  transform 
)
inlinenoexcept

A reduction over a nD domain using the default execution policy.

Parameters
[in]domainthe range over which to apply the algorithm
[in]neutralthe neutral element of the reduction operation
[in]reducea binary FunctionObject that will be applied in unspecified order to the results of transform, the results of other reduce and neutral.
[in]transforma unary FunctionObject that will be applied to each element of the input range. The return type must be acceptable as input to reduce

◆ origin()

template<class DDim >
DDC_INLINE_FUNCTION std:: enable_if_t<is_uniform_sampling_v<DDim>, typename DDim::continuous_element_type> ddc::origin ( )
noexcept

Lower bound index of the mesh.

◆ front() [2/2]

template<class DDim >
DDC_INLINE_FUNCTION std:: enable_if_t<is_uniform_sampling_v<DDim>, typename DDim::discrete_element_type> ddc::front ( )
noexcept

Lower bound index of the mesh.

◆ step()

template<class DDim >
DDC_INLINE_FUNCTION std::enable_if_t<is_uniform_sampling_v<DDim>, double> ddc::step ( )
noexcept

Spacing step of the mesh.

◆ coordinate() [3/3]

template<class CDim >
constexpr DDC_INLINE_FUNCTION Coordinate<CDim> ddc::coordinate ( DiscreteElement< UniformPointSampling< CDim >> const &  c)
constexpr

◆ distance_at_left() [2/2]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::distance_at_left ( DiscreteElement< UniformPointSampling< CDim >>  )

◆ distance_at_right() [2/2]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::distance_at_right ( DiscreteElement< UniformPointSampling< CDim >>  )

◆ rmin() [3/3]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::rmin ( DiscreteDomain< UniformPointSampling< CDim >> const &  d)

◆ rmax() [3/3]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::rmax ( DiscreteDomain< UniformPointSampling< CDim >> const &  d)

◆ rlength() [2/2]

template<class CDim >
DDC_INLINE_FUNCTION Coordinate<CDim> ddc::rlength ( DiscreteDomain< UniformPointSampling< CDim >> const &  d)

Variable Documentation

◆ enable_chunk< Chunk< ElementType, SupportType, Allocator > >

template<class ElementType , class SupportType , class Allocator >
constexpr bool ddc::enable_chunk< Chunk< ElementType, SupportType, Allocator > > = true
inlineconstexpr

◆ enable_borrowed_chunk

template<class T >
constexpr bool ddc::enable_borrowed_chunk = false
inlineconstexpr

◆ enable_chunk

template<class T >
constexpr bool ddc::enable_chunk = false
inlineconstexpr

◆ is_chunk_v

template<class T >
constexpr bool ddc::is_chunk_v = enable_chunk<std::remove_const_t<std::remove_reference_t<T>>>
inlineconstexpr

◆ is_borrowed_chunk_v

template<class T >
constexpr bool ddc::is_borrowed_chunk_v
inlineconstexpr
Initial value:
T> && (std::is_lvalue_reference_v<T> || enable_borrowed_chunk<std::remove_cv_t<std::remove_reference_t<T>>>)
constexpr bool is_chunk_v
Definition: chunk_common.hpp:27

◆ is_writable_chunk_v

template<class T >
constexpr bool ddc::is_writable_chunk_v = !std::is_const_v<std::remove_pointer_t<chunk_pointer_t<T>>>
inlineconstexpr

◆ enable_chunk< ChunkSpan< ElementType, SupportType, LayoutStridedPolicy, MemorySpace > >

template<class ElementType , class SupportType , class LayoutStridedPolicy , class MemorySpace >
constexpr bool ddc::enable_chunk< ChunkSpan< ElementType, SupportType, LayoutStridedPolicy, MemorySpace > > = true
inlineconstexpr

◆ enable_borrowed_chunk< ChunkSpan< ElementType, SupportType, LayoutStridedPolicy, MemorySpace > >

template<class ElementType , class SupportType , class LayoutStridedPolicy , class MemorySpace >
constexpr bool ddc::enable_borrowed_chunk< ChunkSpan< ElementType, SupportType, LayoutStridedPolicy, MemorySpace > > = true
inlineconstexpr

◆ is_discrete_element_v

template<class T >
constexpr bool ddc::is_discrete_element_v = IsDiscreteElement<T>::value
inlineconstexpr

◆ else

ddc::else
Initial value:
{
static_assert(std::is_same_v<MemorySpace, MemorySpace>, "Memory space not handled")

◆ is_discrete_vector_v

template<class T >
constexpr bool ddc::is_discrete_vector_v = IsDiscreteVector<T>::value
inlineconstexpr

◆ is_non_uniform_sampling_v

template<class DDim >
constexpr bool ddc::is_non_uniform_sampling_v = is_non_uniform_sampling<DDim>::value
constexpr

◆ is_rectilinear_domain_v

template<class T >
constexpr bool ddc::is_rectilinear_domain_v = is_rectilinear_domain<T>::value
constexpr

◆ is_uniform_sampling_v

template<class DDim >
constexpr bool ddc::is_uniform_sampling_v = is_uniform_sampling<DDim>::value
constexpr

◆ is_uniform_domain_v

template<class T >
constexpr bool ddc::is_uniform_domain_v = is_uniform_domain<T>::value
constexpr