XGCa
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
VGridDistribution< Device > Class Template Reference

#include <vgrid_distribution.hpp>

Collaboration diagram for VGridDistribution< Device >:
Collaboration graph
[legend]

Public Types

using exec_space = typename Device::execution_space
 

Public Member Functions

 VGridDistribution ()
 
 VGridDistribution (const VelocityGrid &vgrid, const DomainDecomposition< DeviceType > &pol_decomp, const std::vector< Maxwellian > &maxwellians)
 
 VGridDistribution (int nsp, const VelocityGrid &vgrid, const DomainDecomposition< DeviceType > &pol_decomp, VGridDistributionOption option=VGridDistributionOption::ViewInit)
 
template<class Device2 >
 VGridDistribution (int nsp, const VGridDistribution< Device2 > &dist_in, VGridDistributionOption option=VGridDistributionOption::ViewInit)
 
KOKKOS_INLINE_FUNCTION double & operator() (int isp, int ivr, int inode, int ivz) const
 
KOKKOS_INLINE_FUNCTION double & operator[] (int i) const
 
double * data () const
 
template<typename F >
void for_all_elements (const std::string label, F lambda_func) const
 
template<typename F >
void for_each_element (const std::string label, F lambda_func) const
 
KOKKOS_INLINE_FUNCTION void scatter (int i_node, const VGridWeights &wt, double value) const
 
KOKKOS_INLINE_FUNCTION double gather (int i_node, const VGridWeights &wt) const
 
KOKKOS_INLINE_FUNCTION int n_species () const
 
KOKKOS_INLINE_FUNCTION int n_vr () const
 
KOKKOS_INLINE_FUNCTION int n_nodes () const
 
KOKKOS_INLINE_FUNCTION int n_vz () const
 
KOKKOS_INLINE_FUNCTION int size () const
 
double get_smu_n (int imu) const
 
KOKKOS_INLINE_FUNCTION double mu_vol_fac (int ivr) const
 
UniformRange vr_range () const
 
UniformRange vz_range () const
 
KOKKOS_INLINE_FUNCTION double & pull_node_index (int inode, int ip) const
 

Static Public Member Functions

static KOKKOS_INLINE_FUNCTION void scatter (const View< double ***, CLayout, Device > &view, int i_node, const VGridWeights &wt, double value)
 
static KOKKOS_INLINE_FUNCTION void scatter (const View< double ****, CLayout, Device > &view, int i_node, const VGridWeights &wt, double value)
 
template<class T >
static KOKKOS_INLINE_FUNCTION
double 
gather (const T &view, int i_node, const VGridWeights &wt)
 
template<class T >
static KOKKOS_INLINE_FUNCTION
double 
normed_gather (const T &view, int i_node, const VGridWeights &wt, const T &norm_view)
 

Public Attributes

View< double ****, CLayout,
Device > 
f
 
View< double *, CLayout,
Device, Kokkos::MemoryTraits
< Kokkos::Unmanaged > > 
f_1D
 
double vp_max
 max parallel velocity More...
 
double dvp
 grid spacing in parallel velocity More...
 
double smu_max
 max mu More...
 
double dsmu
 grid spacing in mu More...
 
double inv_mu0_factor
 

Member Typedef Documentation

template<class Device>
using VGridDistribution< Device >::exec_space = typename Device::execution_space

Constructor & Destructor Documentation

template<class Device>
VGridDistribution< Device >::VGridDistribution ( )
inline
template<class Device>
VGridDistribution< Device >::VGridDistribution ( const VelocityGrid vgrid,
const DomainDecomposition< DeviceType > &  pol_decomp,
const std::vector< Maxwellian > &  maxwellians 
)
inline
template<class Device>
VGridDistribution< Device >::VGridDistribution ( int  nsp,
const VelocityGrid vgrid,
const DomainDecomposition< DeviceType > &  pol_decomp,
VGridDistributionOption  option = VGridDistributionOption::ViewInit 
)
inline
template<class Device>
template<class Device2 >
VGridDistribution< Device >::VGridDistribution ( int  nsp,
const VGridDistribution< Device2 > &  dist_in,
VGridDistributionOption  option = VGridDistributionOption::ViewInit 
)
inline

Member Function Documentation

template<class Device>
double* VGridDistribution< Device >::data ( ) const
inline

Here is the caller graph for this function:

template<class Device>
template<typename F >
void VGridDistribution< Device >::for_all_elements ( const std::string  label,
lambda_func 
) const
inline

Loops over all elements with a 1D index. Enables clean syntax for operations that don't have a velocity or node dependence

Parameters
[in]labelis the label of the parallel_for used for debugging
[in]lambda_funcis the lambda function. Must be copy [=] not by reference

Here is the caller graph for this function:

template<class Device>
template<typename F >
void VGridDistribution< Device >::for_each_element ( const std::string  label,
lambda_func 
) const
inline

Loops over all elements with a 4D index. For use when the velocity, node, or species indices are needed for the operation

Parameters
[in]labelis the label of the parallel_for used for debugging
[in]lambda_funcis the lambda function. Must be copy [=] not by reference

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION double VGridDistribution< Device >::gather ( int  i_node,
const VGridWeights wt 
) const
inline

Here is the caller graph for this function:

template<class Device>
template<class T >
static KOKKOS_INLINE_FUNCTION double VGridDistribution< Device >::gather ( const T &  view,
int  i_node,
const VGridWeights wt 
)
inlinestatic
template<class Device>
double VGridDistribution< Device >::get_smu_n ( int  imu) const
inline

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION double VGridDistribution< Device >::mu_vol_fac ( int  ivr) const
inline

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION int VGridDistribution< Device >::n_nodes ( ) const
inline

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION int VGridDistribution< Device >::n_species ( ) const
inline

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION int VGridDistribution< Device >::n_vr ( ) const
inline

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION int VGridDistribution< Device >::n_vz ( ) const
inline

Here is the caller graph for this function:

template<class Device>
template<class T >
static KOKKOS_INLINE_FUNCTION double VGridDistribution< Device >::normed_gather ( const T &  view,
int  i_node,
const VGridWeights wt,
const T &  norm_view 
)
inlinestatic

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION double& VGridDistribution< Device >::operator() ( int  isp,
int  ivr,
int  inode,
int  ivz 
) const
inline
template<class Device>
KOKKOS_INLINE_FUNCTION double& VGridDistribution< Device >::operator[] ( int  i) const
inline
template<class Device>
KOKKOS_INLINE_FUNCTION double& VGridDistribution< Device >::pull_node_index ( int  inode,
int  ip 
) const
inline

Here is the caller graph for this function:

template<class Device>
KOKKOS_INLINE_FUNCTION void VGridDistribution< Device >::scatter ( int  i_node,
const VGridWeights wt,
double  value 
) const
inline

Here is the caller graph for this function:

template<class Device>
static KOKKOS_INLINE_FUNCTION void VGridDistribution< Device >::scatter ( const View< double ***, CLayout, Device > &  view,
int  i_node,
const VGridWeights wt,
double  value 
)
inlinestatic
template<class Device>
static KOKKOS_INLINE_FUNCTION void VGridDistribution< Device >::scatter ( const View< double ****, CLayout, Device > &  view,
int  i_node,
const VGridWeights wt,
double  value 
)
inlinestatic
template<class Device>
KOKKOS_INLINE_FUNCTION int VGridDistribution< Device >::size ( ) const
inline

Here is the caller graph for this function:

template<class Device>
UniformRange VGridDistribution< Device >::vr_range ( ) const
inline

Here is the caller graph for this function:

template<class Device>
UniformRange VGridDistribution< Device >::vz_range ( ) const
inline

Here is the caller graph for this function:

Member Data Documentation

template<class Device>
double VGridDistribution< Device >::dsmu

grid spacing in mu

template<class Device>
double VGridDistribution< Device >::dvp

grid spacing in parallel velocity

template<class Device>
View<double****,CLayout, Device> VGridDistribution< Device >::f
template<class Device>
View<double*,CLayout, Device, Kokkos::MemoryTraits<Kokkos::Unmanaged> > VGridDistribution< Device >::f_1D
template<class Device>
double VGridDistribution< Device >::inv_mu0_factor
template<class Device>
double VGridDistribution< Device >::smu_max

max mu

template<class Device>
double VGridDistribution< Device >::vp_max

max parallel velocity


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