SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace > Class Template Reference#

DiFfRG: DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace > Class Template Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace > Class Template Reference

A spline interpolator for 1D data, both on GPU and CPU. More...

#include <spline_interpolator_1d.hh>

Public Types

using memory_space = DefaultMemorySpace
 
using other_memory_space = other_memory_space_t< DefaultMemorySpace >
 
using ctype = typename Coordinates::ctype
 
using value_type = NT
 

Public Member Functions

 SplineInterpolator1D (const Coordinates &coordinates)
 Construct a SplineInterpolator1D with internal, zeroed data and a coordinate system.
 
KOKKOS_FUNCTION SplineInterpolator1D (const SplineInterpolator1D &other)
 Copy constructor for SplineInterpolator1D. This is ONLY for usage inside Kokkos parallel loops.
 
KOKKOS_FUNCTION ~SplineInterpolator1D ()
 
template<typename NT2 >
void update (const NT2 *in_data, const ctype lower_y1=std::numeric_limits< ctype >::max(), const ctype upper_y1=std::numeric_limits< ctype >::max())
 
template<typename View >
requires (Kokkos::is_view<View>::value && View::rank == 1)
void update (const View &view, const ctype lower_y1=std::numeric_limits< ctype >::max(), const ctype upper_y1=std::numeric_limits< ctype >::max())
 
NT operator[] (size_t i) const
 
NT KOKKOS_FUNCTION operator() (const typename Coordinates::ctype x) const
 Interpolate the data at a given point.
 
autoCPU () const
 
autoGPU () const
 
template<typename MemorySpace >
autoget_on () const
 
const Coordinatesget_coordinates () const
 Get the coordinate system of the data.
 
NTdata ()
 

Static Public Attributes

static constexpr size_t dim = 1
 

Private Types

using ValueViewType = Kokkos::View< NT *, DefaultMemorySpace, Kokkos::MemoryTraits< Kokkos::RandomAccess > >
 
using CoeffViewType = Kokkos::View< NT *, DefaultMemorySpace, Kokkos::MemoryTraits< Kokkos::RandomAccess > >
 
using HostValueViewType = typename ValueViewType::host_mirror_type
 
using HostCoeffViewType = typename CoeffViewType::host_mirror_type
 

Private Member Functions

void build_y2 (const ctype lower_y1, const ctype upper_y1)
 

Private Attributes

const Coordinates coordinates
 
const size_t size
 
ValueViewType device_values
 
CoeffViewType device_coeffs
 
HostValueViewType host_values
 
HostCoeffViewType host_coeffs
 
SplineInterpolator1D< NT, Coordinates, other_memory_space > * other_instance = nullptr
 
bool owns_other_instance = false
 

Friends

class SplineInterpolator1D< NT, Coordinates, other_memory_space >
 

Detailed Description

template<typename NT, typename Coordinates, typename DefaultMemorySpace = CPU_memory>
class DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >

A spline interpolator for 1D data, both on GPU and CPU.

Template Parameters
NTinput data type
Coordinatescoordinate system of the input data

Member Typedef Documentation

◆ CoeffViewType

using DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >::CoeffViewType = Kokkos::View<NT *, DefaultMemorySpace, Kokkos::MemoryTraits<Kokkos::RandomAccess> >
private

◆ ctype

◆ HostCoeffViewType

using DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >::HostCoeffViewType = typename CoeffViewType::host_mirror_type
private

◆ HostValueViewType

using DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >::HostValueViewType = typename ValueViewType::host_mirror_type
private

◆ memory_space

◆ other_memory_space

◆ value_type

◆ ValueViewType

using DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >::ValueViewType = Kokkos::View<NT *, DefaultMemorySpace, Kokkos::MemoryTraits<Kokkos::RandomAccess> >
private

Constructor & Destructor Documentation

◆ SplineInterpolator1D() [1/2]

DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >::SplineInterpolator1D ( const Coordinates coordinates)
inline

Construct a SplineInterpolator1D with internal, zeroed data and a coordinate system.

Parameters
coordinatescoordinate system of the data

◆ SplineInterpolator1D() [2/2]

Copy constructor for SplineInterpolator1D. This is ONLY for usage inside Kokkos parallel loops.

◆ ~SplineInterpolator1D()

Member Function Documentation

◆ build_y2()

void DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >::build_y2 ( const ctype  lower_y1,
const ctype  upper_y1 
)
inlineprivate

◆ CPU()

◆ data()

◆ get_coordinates()

Get the coordinate system of the data.

Returns
const Coordinates& the coordinate system

◆ get_on()

◆ GPU()

◆ operator()()

Interpolate the data at a given point.

Parameters
xthe point at which to interpolate
Returns
NT the interpolated value

◆ operator[]()

◆ update() [1/2]

template<typename NT2 >
void DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >::update ( const NT2 in_data,
const ctype  lower_y1 = std::numeric_limits<ctype>::max(),
const ctype  upper_y1 = std::numeric_limits<ctype>::max() 
)
inline

◆ update() [2/2]

template<typename View >
requires (Kokkos::is_view<View>::value && View::rank == 1)
void DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >::update ( const View view,
const ctype  lower_y1 = std::numeric_limits<ctype>::max(),
const ctype  upper_y1 = std::numeric_limits<ctype>::max() 
)
inline

Friends And Related Symbol Documentation

◆ SplineInterpolator1D< NT, Coordinates, other_memory_space >

Member Data Documentation

◆ coordinates

◆ device_coeffs

◆ device_values

◆ dim

◆ host_coeffs

◆ host_values

◆ other_instance

◆ owns_other_instance

bool DiFfRG::SplineInterpolator1D< NT, Coordinates, DefaultMemorySpace >::owns_other_instance = false
mutableprivate

◆ size


The documentation for this class was generated from the following file: