@@ -27,11 +27,27 @@ float FGridEvalPoly(float r2)
2727namespace HACCabana
2828{
2929
30- ParticleActions::ParticleActions () {};
30+ ParticleActions::ParticleActions ()
31+ {
32+ aosoa_device = aosoa_device_type (" aosoa_device" , 0 );
33+ };
3134
32- ParticleActions::ParticleActions (Particles *P_) : P(P_)
35+ ParticleActions::ParticleActions (Particles *P_, const float cm_size, const float min_pos, const float max_pos ) : P(P_)
3336{
34- ;
37+ aosoa_device = aosoa_device_type (" aosoa_device" , P->num_p );
38+ auto position = Cabana::slice<HACCabana::Particles::Fields::Position>(aosoa_device, " position" );
39+
40+ // create the cell list on the GPU
41+ // NOTE: fuzz particles (outside of overload) are not included
42+ float dx = cm_size;
43+ float x_min = min_pos;
44+ float x_max = max_pos;
45+
46+ float grid_delta[3 ] = {dx, dx, dx};
47+ float grid_min[3 ] = {x_min, x_min, x_min};
48+ float grid_max[3 ] = {x_max, x_max, x_max};
49+
50+ cell_list = neighbor_type (position, P->begin , P->end , grid_delta, grid_min, grid_max);
3551};
3652
3753ParticleActions::~ParticleActions ()
@@ -136,25 +152,14 @@ void ParticleActions::updateVel(\
136152 Kokkos::fence ();
137153}
138154
139- void ParticleActions::subCycle (TimeStepper &ts, const int nsub, const float gpscal, const float rmax2, const float rsm2,
140- const float cm_size, const float min_pos, const float max_pos)
155+ void ParticleActions::subCycle (TimeStepper &ts, const int nsub, const float gpscal, const float rmax2, const float rsm2)
141156{
142157 // copy particles to GPU
143- Cabana::AoSoA<HACCabana::Particles::data_types, device_type, VECTOR_LENGTH> aosoa_device ( " aosoa_device " , P->num_p );
158+ aosoa_device. resize ( P->num_p );
144159 Cabana::deep_copy (aosoa_device, P->aosoa_host );
145160
146- // create the cell list on the GPU
147- // NOTE: fuzz particles (outside of overload) are not included
148- float dx = cm_size;
149- float x_min = min_pos;
150- float x_max = max_pos;
151-
152- float grid_delta[3 ] = {dx, dx, dx};
153- float grid_min[3 ] = {x_min, x_min, x_min};
154- float grid_max[3 ] = {x_max, x_max, x_max};
155-
156161 auto position = Cabana::slice<HACCabana::Particles::Fields::Position>(aosoa_device, " position" );
157- Cabana::LinkedCellList<device_type> cell_list (position, P-> begin , P-> end , grid_delta, grid_min, grid_max );
162+ cell_list. build (position);
158163 Cabana::permute (cell_list, aosoa_device);
159164 Kokkos::fence ();
160165
0 commit comments