XGC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic > Struct Template Reference

#include <grid_field.hpp>

Public Types

using field_type = Field< VT, PIT >
 
using device_type = Device
 

Public Member Functions

 GridField ()
 
 GridField (std::string name, int nphi, int nrho, int nnode)
 
 GridField (std::string name, int nnode)
 
field_typedata () const
 
int size () const
 
int nnode () const
 
int nrhop1 () const
 
int nphi () const
 
KOKKOS_INLINE_FUNCTION bool is_allocated () const
 
KOKKOS_INLINE_FUNCTION field_typeoperator() (int inode) const
 
KOKKOS_INLINE_FUNCTION void scatter (int node, const FieldWeights< DriftKin, PIT > &wts, double particle_weight) const
 
KOKKOS_INLINE_FUNCTION void scatter (const Grid< DeviceType > &grid, int ithread, const SimdGridWeights< Order::One, PIT_GLOBAL > &grid_wts, int i_simd, const FieldWeights< DriftKin, PIT > &wts, double particle_weight) const
 
KOKKOS_INLINE_FUNCTION void gather (const Grid< Device > &grid, const SimdGridWeights< Order::One, PhiInterpType::None > &grid_wts, const Simd< double > &phi, Simd< double > &fld) const
 
KOKKOS_INLINE_FUNCTION void gather (const Grid< Device > &grid, const SimdGridWeights< Order::One, PhiInterpType::Planes > &grid_wts, const Simd< double > &phi, Simd< double > &fld) const
 
void reset_to_zero ()
 
void copy_to_double_view (const View< double *, CLayout, Device > &dest_view) const
 
void transpose_copy_to_double_view (const View< double **, CLayout, Device > &dest_view) const
 
void transpose_copy_from_double_view (const View< double **, CLayout, Device > &src_view) const
 

Static Public Member Functions

static KOKKOS_INLINE_FUNCTION void view_gather3 (const Grid< DeviceType > &grid, const View< double *, CLayout, Device > &view1, const View< double *, CLayout, Device > &view2, const View< double *, CLayout, Device > &view3, const SimdGridWeights< Order::One, PIT_GLOBAL > &grid_wts, double &val1, double &val2, double &val3, int i_simd)
 
static KOKKOS_INLINE_FUNCTION void view_gather (const Grid< DeviceType > &grid, const View< double *, CLayout, Device > &view, const SimdGridWeights< Order::One, PIT_GLOBAL > &grid_wts, Simd< double > &val)
 
static KOKKOS_INLINE_FUNCTION void view_vec_odim_gather (const Grid< DeviceType > &grid, const View< Field< VarType::Vector, PhiInterpType::None > **, CLayout, Device > &view, int ind, const SimdGridWeights< Order::One, PhiInterpType::None > &grid_wts, SimdVector &val, int i_simd)
 
static KOKKOS_INLINE_FUNCTION void view_gyro_scatter3 (const Grid< DeviceType > &grid, const View< double **, CLayout, Device > &view1, const View< double **, CLayout, Device > &view2, const View< double **, CLayout, Device > &view3, const SimdGridWeights< Order::One, PIT_GLOBAL > &grid_wts, double val1, double val2, double val3, int i_simd, const LinearWeights &rho_wts, bool is_gyro)
 
static KOKKOS_INLINE_FUNCTION void view_odim_scatter (const Grid< DeviceType > &grid, const View< double **, CLayout, Device > &view, int ind, const SimdGridWeights< Order::One, PIT_GLOBAL > &grid_wts, double val, int i_simd)
 
static KOKKOS_INLINE_FUNCTION void view_scatter (const Grid< DeviceType > &grid, const View< double *, CLayout, Device > &view, const SimdGridWeights< Order::One, PhiInterpType::None > &grid_wts, double val, int i_simd)
 
static KOKKOS_INLINE_FUNCTION void view_ff_scatter (const Grid< DeviceType > &grid, const View< double **, CLayout, Device > &view, const SimdGridWeights< Order::One, PhiInterpType::Planes > &grid_wts, double wphi, double val, int i_simd)
 
static KOKKOS_INLINE_FUNCTION void view_odim_variance (const Grid< DeviceType > &grid, const View< double **, CLayout, Device > &view, const View< double **, CLayout, Device > &variance, int ind, const SimdGridWeights< Order::One, PIT_GLOBAL > &grid_wts, double val, int i_simd)
 
static KOKKOS_INLINE_FUNCTION void view_rep_scatter3 (const Grid< DeviceType > &grid, const View< double ***, CLayout, Device > &view, int ind1, int ind2, int ind3, const SimdGridWeights< Order::One, PIT_GLOBAL > &grid_wts, double val1, double val2, double val3, int ithread, int i_simd)
 

Public Attributes

Kokkos::View< field_type
*, Kokkos::LayoutRight, Device > 
f
 

Static Public Attributes

static constexpr KinType KT = KinType::DriftKin
 

Member Typedef Documentation

template<class Device , VarType VT, PhiInterpType PIT>
using GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::device_type = Device
template<class Device , VarType VT, PhiInterpType PIT>
using GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::field_type = Field<VT,PIT>

Constructor & Destructor Documentation

template<class Device , VarType VT, PhiInterpType PIT>
GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::GridField ( )
inline
template<class Device , VarType VT, PhiInterpType PIT>
GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::GridField ( std::string  name,
int  nphi,
int  nrho,
int  nnode 
)
inline
template<class Device , VarType VT, PhiInterpType PIT>
GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::GridField ( std::string  name,
int  nnode 
)
inline

Member Function Documentation

template<class Device , VarType VT, PhiInterpType PIT>
void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::copy_to_double_view ( const View< double *, CLayout, Device > &  dest_view) const
inline
template<class Device , VarType VT, PhiInterpType PIT>
field_type* GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::data ( ) const
inline

Here is the caller graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::gather ( const Grid< Device > &  grid,
const SimdGridWeights< Order::One, PhiInterpType::None > &  grid_wts,
const Simd< double > &  phi,
Simd< double > &  fld 
) const
inline

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::gather ( const Grid< Device > &  grid,
const SimdGridWeights< Order::One, PhiInterpType::Planes > &  grid_wts,
const Simd< double > &  phi,
Simd< double > &  fld 
) const
inline

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
KOKKOS_INLINE_FUNCTION bool GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::is_allocated ( ) const
inline
template<class Device , VarType VT, PhiInterpType PIT>
int GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::nnode ( ) const
inline

Here is the caller graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
int GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::nphi ( ) const
inline
template<class Device , VarType VT, PhiInterpType PIT>
int GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::nrhop1 ( ) const
inline
template<class Device , VarType VT, PhiInterpType PIT>
KOKKOS_INLINE_FUNCTION field_type& GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::operator() ( int  inode) const
inline
template<class Device , VarType VT, PhiInterpType PIT>
void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::reset_to_zero ( )
inline
template<class Device , VarType VT, PhiInterpType PIT>
KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::scatter ( int  node,
const FieldWeights< DriftKin, PIT > &  wts,
double  particle_weight 
) const
inline
template<class Device , VarType VT, PhiInterpType PIT>
KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::scatter ( const Grid< DeviceType > &  grid,
int  ithread,
const SimdGridWeights< Order::One, PIT_GLOBAL > &  grid_wts,
int  i_simd,
const FieldWeights< DriftKin, PIT > &  wts,
double  particle_weight 
) const
inline

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
int GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::size ( ) const
inline
template<class Device , VarType VT, PhiInterpType PIT>
void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::transpose_copy_from_double_view ( const View< double **, CLayout, Device > &  src_view) const
inline

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::transpose_copy_to_double_view ( const View< double **, CLayout, Device > &  dest_view) const
inline

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
static KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::view_ff_scatter ( const Grid< DeviceType > &  grid,
const View< double **, CLayout, Device > &  view,
const SimdGridWeights< Order::One, PhiInterpType::Planes > &  grid_wts,
double  wphi,
double  val,
int  i_simd 
)
inlinestatic

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
static KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::view_gather ( const Grid< DeviceType > &  grid,
const View< double *, CLayout, Device > &  view,
const SimdGridWeights< Order::One, PIT_GLOBAL > &  grid_wts,
Simd< double > &  val 
)
inlinestatic

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
static KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::view_gather3 ( const Grid< DeviceType > &  grid,
const View< double *, CLayout, Device > &  view1,
const View< double *, CLayout, Device > &  view2,
const View< double *, CLayout, Device > &  view3,
const SimdGridWeights< Order::One, PIT_GLOBAL > &  grid_wts,
double &  val1,
double &  val2,
double &  val3,
int  i_simd 
)
inlinestatic

Some functions that are here temporarily, so that all implementations using barycentric weights are hidden from physics

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
static KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::view_gyro_scatter3 ( const Grid< DeviceType > &  grid,
const View< double **, CLayout, Device > &  view1,
const View< double **, CLayout, Device > &  view2,
const View< double **, CLayout, Device > &  view3,
const SimdGridWeights< Order::One, PIT_GLOBAL > &  grid_wts,
double  val1,
double  val2,
double  val3,
int  i_simd,
const LinearWeights rho_wts,
bool  is_gyro 
)
inlinestatic

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
static KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::view_odim_scatter ( const Grid< DeviceType > &  grid,
const View< double **, CLayout, Device > &  view,
int  ind,
const SimdGridWeights< Order::One, PIT_GLOBAL > &  grid_wts,
double  val,
int  i_simd 
)
inlinestatic

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
static KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::view_odim_variance ( const Grid< DeviceType > &  grid,
const View< double **, CLayout, Device > &  view,
const View< double **, CLayout, Device > &  variance,
int  ind,
const SimdGridWeights< Order::One, PIT_GLOBAL > &  grid_wts,
double  val,
int  i_simd 
)
inlinestatic

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
static KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::view_rep_scatter3 ( const Grid< DeviceType > &  grid,
const View< double ***, CLayout, Device > &  view,
int  ind1,
int  ind2,
int  ind3,
const SimdGridWeights< Order::One, PIT_GLOBAL > &  grid_wts,
double  val1,
double  val2,
double  val3,
int  ithread,
int  i_simd 
)
inlinestatic

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
static KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::view_scatter ( const Grid< DeviceType > &  grid,
const View< double *, CLayout, Device > &  view,
const SimdGridWeights< Order::One, PhiInterpType::None > &  grid_wts,
double  val,
int  i_simd 
)
inlinestatic

Here is the call graph for this function:

template<class Device , VarType VT, PhiInterpType PIT>
static KOKKOS_INLINE_FUNCTION void GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::view_vec_odim_gather ( const Grid< DeviceType > &  grid,
const View< Field< VarType::Vector, PhiInterpType::None > **, CLayout, Device > &  view,
int  ind,
const SimdGridWeights< Order::One, PhiInterpType::None > &  grid_wts,
SimdVector val,
int  i_simd 
)
inlinestatic

Here is the call graph for this function:

Member Data Documentation

template<class Device , VarType VT, PhiInterpType PIT>
Kokkos::View<field_type*,Kokkos::LayoutRight,Device> GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::f
template<class Device , VarType VT, PhiInterpType PIT>
constexpr KinType GridField< Device, VT, PIT, TorType::OnePlane, KinType::DriftKin, ScatterType::Atomic >::KT = KinType::DriftKin
static

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