1/*
2 * CellList_gpu_ker.cuh
3 *
4 * Created on: Jul 30, 2018
5 * Author: i-bird
6 */
7
8#ifndef CELLLIST_CPU_KER_CUH_
9#define CELLLIST_CPU_KER_CUH_
10
11#include "Cuda_cell_list_util_func.hpp"
12
13template<unsigned int dim, typename T, typename Mem_type, typename transform>
14class CellList_cpu_ker: Mem_type
15{
16 typedef typename Mem_type::local_index_type cnt_type;
17
18 typedef typename Mem_type::local_index_type ids_type;
19
20 //! Spacing
21 openfpm::array<T,dim,cnt_type> spacing_c;
22
23 //! \brief number of sub-divisions in each direction
24 openfpm::array<ids_type,dim,cnt_type> div_c;
25
26 //! \brief cell padding
27 openfpm::array<ids_type,dim,cnt_type> off;
28
29 //! transformation
30 transform t;
31
32public:
33
34 CellList_cpu_ker(const Mem_type & mt,
35 openfpm::array<T,dim,cnt_type> & spacing_c,
36 openfpm::array<ids_type,dim,cnt_type> & div_c,
37 openfpm::array<ids_type,dim,cnt_type> & off,
38 const transform & t)
39 :Mem_type(mt),spacing_c(spacing_c),div_c(div_c),off(off),t(t)
40 {}
41
42 inline __device__ unsigned int getCell(const Point<dim,T> & xp) const
43 {
44 return cid_<dim,cnt_type,ids_type,transform>::get_cid(div_c,spacing_c,off,t,xp);
45 }
46
47 /*! \brief Return the number of elements in the cell
48 *
49 * \param cell_id id of the cell
50 *
51 * \return number of elements in the cell
52 *
53 */
54 inline __device__ int getNelements(unsigned int cell) const
55 {
56 return Mem_type::getNelements(cell);
57 }
58
59 /*! \brief Get an element in the cell
60 *
61 * \tparam i property to get
62 *
63 * \param cell cell id
64 * \param ele element id
65 *
66 * \return The element value
67 *
68 */
69 inline __device__ unsigned int get(unsigned int cell, unsigned int ele)
70 {
71 return Mem_type::get(cell,ele);
72 }
73
74};
75
76
77#endif /* CELLLIST_GPU_KER_CUH_ */
78