12 template<
class Device>
16 template<
class Device2>
friend class Tricub;
26 Kokkos::View<double*,Kokkos::LayoutRight,Device>
rc;
27 Kokkos::View<double*,Kokkos::LayoutRight,Device>
zc;
28 Kokkos::View<double*,Kokkos::LayoutRight,Device>
pc;
29 Kokkos::View<TricubCoeff***,Kokkos::LayoutRight,Device>
acoeff_all;
31 KOKKOS_INLINE_FUNCTION
void eval_tricub_0(
double x,
double y,
double z,
double xc,
double yc,
double zc,
const double (&acoeff)[4][4][4],
33 static KOKKOS_INLINE_FUNCTION
double interp_1d(
const double (&coeff1d)[4],
double dx);
34 static KOKKOS_INLINE_FUNCTION
double slope_1d(
const double (&coeff1d)[4],
double dx);
36 static KOKKOS_INLINE_FUNCTION
double interp_2d(
const double (&coeff2d)[4][4],
double dx,
double dy);
38 KOKKOS_INLINE_FUNCTION
void eval_tricub_1(
double x,
double y,
double z,
double xc,
double yc,
double zc,
const double (&acoeff)[4][4][4],
39 double &f000,
double &f100,
double &f010,
double &f001)
const;
44 Tricub(
const View<double*, HostType>& r,
const View<double*, HostType>& z,
const View<double*, HostType>& phi,
const View<double***, CLayout, HostType>& val,
bool keep_positive=
false);
47 template<
class Device2>
75 KOKKOS_INLINE_FUNCTION
void der_zero(
double x,
double y,
double z,
double &f000)
const;
78 KOKKOS_INLINE_FUNCTION
void der_one(
double x,
double y,
double z,
double &f000,
double &f100,
double &f010,
double &f001)
const;
Definition: tricub.hpp:13
double rmin
Definition: tricub.hpp:24
void mirror_copy(T1 &view_dest, const T2 &view_src)
Definition: my_mirror_view.hpp:122
Kokkos::View< double *, Kokkos::LayoutRight, Device > rc
Array containing the r coordinates of the grid points.
Definition: tricub.hpp:26
double coeff[4][4][4]
Definition: tricub.hpp:8
Definition: tricub.hpp:19
KOKKOS_INLINE_FUNCTION void eval_tricub_0(double x, double y, double z, double xc, double yc, double zc, const double(&acoeff)[4][4][4], double &f000) const
Definition: tricub.tpp:53
Tricub()
Definition: tricub.hpp:72
double pmin
First r and z point.
Definition: tricub.hpp:24
KOKKOS_INLINE_FUNCTION void eval_tricub_1(double x, double y, double z, double xc, double yc, double zc, const double(&acoeff)[4][4][4], double &f000, double &f100, double &f010, double &f001) const
Definition: tricub.tpp:114
static KOKKOS_INLINE_FUNCTION double slope_1d(const double(&coeff1d)[4], double dx)
Definition: tricub.tpp:84
double zmin
Definition: tricub.hpp:24
Kokkos::View< double *, Kokkos::LayoutRight, Device > zc
Array containing the z coordinates of the grid points.
Definition: tricub.hpp:27
KOKKOS_INLINE_FUNCTION void der_zero(double x, double y, double z, double &f000) const
Definition: tricub.tpp:18
KOKKOS_INLINE_FUNCTION void der_one(double x, double y, double z, double &f000, double &f100, double &f010, double &f001) const
Definition: tricub.tpp:36
Definition: tricub.hpp:19
int nz
Definition: tricub.hpp:23
Definition: tricub.hpp:20
static KOKKOS_INLINE_FUNCTION double interp_1d(const double(&coeff1d)[4], double dx)
Definition: tricub.tpp:75
Kokkos::View< double *, Kokkos::LayoutRight, Device > pc
Array containing the phi coordinates of the grid points.
Definition: tricub.hpp:28
Kokkos::View< TricubCoeff ***, Kokkos::LayoutRight, Device > acoeff_all
The field for interpolation.
Definition: tricub.hpp:29
Definition: tricub.hpp:20
Tricub< Device2 > mirror() const
Definition: tricub.hpp:48
Definition: tricub.hpp:20
View< T *, CLayout, Device > my_mirror_view(const View< T *, CLayout, Device > &view, Device nd)
Definition: my_mirror_view.hpp:14
Definition: tricub.hpp:19
double dr_inv
Definition: tricub.hpp:25
double dz_inv
Definition: tricub.hpp:25
Definition: tricub.hpp:19
int np
Number of points in r and z directions.
Definition: tricub.hpp:23
Definition: tricub.hpp:20
int nr
Definition: tricub.hpp:23
static KOKKOS_INLINE_FUNCTION double interp_2d(const double(&coeff2d)[4][4], double dx, double dy)
Definition: tricub.tpp:94
double dp_inv
Inverse of the cell size.
Definition: tricub.hpp:25