-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathcabm_input.hpp
45 lines (39 loc) · 1.63 KB
/
cabm_input.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#pragma once
#include <particle_structs.hpp>
namespace pumipic {
template <class DataTypes, typename MemSpace>
class CabM;
template <class DataTypes, typename MemSpace = DefaultMemSpace>
class CabM_Input {
public:
typedef typename ParticleStructure<DataTypes, MemSpace>::kkLidView kkLidView;
typedef typename ParticleStructure<DataTypes, MemSpace>::kkGidView kkGidView;
typedef typename ParticleStructure<DataTypes, MemSpace>::MTVs MTVs;
typedef Kokkos::TeamPolicy<typename MemSpace::execution_space> PolicyType;
CabM_Input(PolicyType& p, lid_t num_elements,
lid_t num_particles, kkLidView particles_per_elements, kkGidView element_gids,
kkLidView particle_elements = kkLidView(), MTVs particle_info = NULL, MPI_Comm mpi_comm = MPI_COMM_WORLD);
//Extra padding at the end of the structure to allow growth [default = 0.05 (5%)]
double extra_padding;
//String identification for the particle structure
std::string name;
friend class CabM<DataTypes, MemSpace>;
protected:
PolicyType policy;
lid_t ne, np;
kkLidView ppe;
kkGidView e_gids;
kkLidView particle_elms;
MTVs p_info;
MPI_Comm mpi_comm;
};
template <class DataTypes, typename MemSpace>
CabM_Input<DataTypes, MemSpace>::CabM_Input(PolicyType& p, lid_t ne_,
lid_t np_, kkLidView ppe_, kkGidView eg,
kkLidView pes, MTVs info, MPI_Comm comm) :
policy(p), ne(ne_), np(np_), ppe(ppe_), e_gids(eg),
particle_elms(pes), p_info(info), mpi_comm(comm) {
extra_padding = 0.05;
name = "ptcls";
}
}