IPPL API Reference
Independent Parallel Particle Layer C++ API
Loading...
Searching...
No Matches
ippl::detail::HaloCells< T, Dim, ViewArgs > Class Template Reference

Classes

struct  assign
 
struct  lhs_plus_assign
 
struct  rhs_plus_assign
 

Public Types

enum  SendOrder { HALO_TO_INTERNAL , INTERNAL_TO_HALO , HALO_TO_INTERNAL_NOGHOST }
 
using view_type = typename detail::ViewType< T, Dim, ViewArgs... >::view_type
 
using Layout_t = FieldLayout< Dim >
 
using bound_type = typename Layout_t::bound_type
 
using databuffer_type = FieldBufferData< T, ViewArgs... >
 

Public Member Functions

void accumulateHalo (view_type &view, Layout_t *layout)
 
void accumulateHalo_noghost (view_type &view, Layout_t *layout, int nghost)
 
void fillHalo (view_type &, Layout_t *layout)
 
void pack (const bound_type &range, const view_type &view, databuffer_type &fd, size_type &nsends)
 
template<typename Op >
void unpack (const bound_type &range, const view_type &view, databuffer_type &fd)
 
template<typename Op >
void applyPeriodicSerialDim (view_type &view, const Layout_t *layout, const int nghost)
 

Member Function Documentation

◆ accumulateHalo()

template<typename T , unsigned Dim, class... ViewArgs>
void ippl::detail::HaloCells< T, Dim, ViewArgs >::accumulateHalo ( view_type &  view,
Layout_t layout 
)

Send halo data to internal cells. This operation uses assign_plus functor to assign the data.

Parameters
viewthe original field data
layoutthe field layout storing the domain decomposition

◆ accumulateHalo_noghost()

template<typename T , unsigned Dim, class... ViewArgs>
void ippl::detail::HaloCells< T, Dim, ViewArgs >::accumulateHalo_noghost ( view_type &  view,
Layout_t layout,
int  nghost 
)

Send halo data to internal cells for only the physical cells along that dimension. The halo cells on the corners are not sent. This operation uses assign_plus functor to assign the data.

Parameters
viewthe original field data
layoutthe field layout storing the domain decomposition
nghostthe number of ghost cells

◆ applyPeriodicSerialDim()

template<typename T , unsigned Dim, class... ViewArgs>
template<typename Op >
void ippl::detail::HaloCells< T, Dim, ViewArgs >::applyPeriodicSerialDim ( view_type &  view,
const Layout_t layout,
const int  nghost 
)

Apply all periodic boundary conditions for the serial dimensions. Used in case of both fillHalo and accumulateHalo with the help of operator as template parameter.

◆ fillHalo()

template<typename T , unsigned Dim, class... ViewArgs>
void ippl::detail::HaloCells< T, Dim, ViewArgs >::fillHalo ( view_type &  view,
Layout_t layout 
)

Send interal data to halo cells. This operation uses assign functor to assign the data.

Parameters
viewthe original field data
layoutthe field layout storing the domain decomposition

◆ pack()

template<typename T , unsigned Dim, class... ViewArgs>
void ippl::detail::HaloCells< T, Dim, ViewArgs >::pack ( const bound_type &  range,
const view_type &  view,
databuffer_type fd,
size_type &  nsends 
)

Pack the field data to be sent into a contiguous array.

Parameters
rangethe bounds of the subdomain to be sent
viewthe original view
fdthe buffer to pack into

◆ unpack()

template<typename T , unsigned Dim, class... ViewArgs>
template<typename Op >
void ippl::detail::HaloCells< T, Dim, ViewArgs >::unpack ( const bound_type &  range,
const view_type &  view,
databuffer_type fd 
)

Unpack the received field data and assign it.

Parameters
rangethe bounds of the subdomain to be received
viewthe original view
fdthe buffer to unpack from (received data)
Template Parameters
Opthe data assigment operator

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