diff --git a/bfps/cpp/particles/field_accessor.hpp b/bfps/cpp/particles/field_accessor.hpp index 35cb126c9a67557ca0ed4c65733377036b2348f0..bb4fae763a6a65f7d17fb88d85b9d31a45d48a18 100644 --- a/bfps/cpp/particles/field_accessor.hpp +++ b/bfps/cpp/particles/field_accessor.hpp @@ -27,7 +27,7 @@ public: ~field_accessor(){} const real_number& getValue(const size_t in_index, const int in_dim) const { - assert(in_index < local_field_dims[0]*local_field_dims[1]*local_field_dims[2]); + assert(in_index < field_memory_dims[0]*field_memory_dims[1]*field_memory_dims[2]); return field_date[in_index*nb_dim + in_dim]; } diff --git a/bfps/cpp/particles/particles_field_computer.hpp b/bfps/cpp/particles/particles_field_computer.hpp index 1e39d63a62049c40d7f58fa6b19d46b845e78d52..96e9a1e9d6fb411ef899aa6eb9b53469ffa8e225 100644 --- a/bfps/cpp/particles/particles_field_computer.hpp +++ b/bfps/cpp/particles/particles_field_computer.hpp @@ -40,7 +40,7 @@ class particles_field_computer : public abstract_particles_distr<real_number, 3, real_number get_norm_pos_in_cell(const real_number in_pos, const int idx_pos) const { const real_number cell_idx = floor(in_pos/box_step_width[idx_pos]); const real_number pos_in_cell = (in_pos - cell_idx*box_step_width[idx_pos]) / box_step_width[idx_pos]; - assert(0 <= pos_in_cell && pos_in_cell < box_step_width[idx_pos]); + assert(0 <= pos_in_cell && pos_in_cell < 1); return pos_in_cell; } diff --git a/bfps/cpp/particles/particles_system_builder.hpp b/bfps/cpp/particles/particles_system_builder.hpp index fbde1fa57317a07445f193509e51cc15354f7aab..0542844cfb1f73c40a65e16a06d4b3f991b43662 100644 --- a/bfps/cpp/particles/particles_system_builder.hpp +++ b/bfps/cpp/particles/particles_system_builder.hpp @@ -120,11 +120,11 @@ struct particles_system_build_container { const std::string& dset_name, // dataset name for initial input MPI_Comm mpi_comm){ - // The size of the field grid (global size) + // The size of the field grid (global size) all_size seems std::array<size_t,3> field_grid_dim; - field_grid_dim[IDX_X] = fs_cvorticity->rlayout->all_size[0][IDX_X];// nx - field_grid_dim[IDX_Y] = fs_cvorticity->rlayout->all_size[0][IDX_Y];// nx - field_grid_dim[IDX_Z] = fs_cvorticity->rlayout->all_size[0][IDX_Z];// nz + field_grid_dim[IDX_X] = fs_cvorticity->rlayout->sizes[IDX_X];// nx + field_grid_dim[IDX_Y] = fs_cvorticity->rlayout->sizes[IDX_Y];// nx + field_grid_dim[IDX_Z] = fs_cvorticity->rlayout->sizes[IDX_Z];// nz // The size of the local field grid (the field nodes that belong to current process) std::array<size_t,3> local_field_dims; @@ -161,9 +161,9 @@ struct particles_system_build_container { // The spatial box size (all particles should be included inside) std::array<rnumber,3> spatial_box_width; - spatial_box_width[IDX_X] = fs_kk->dkx; - spatial_box_width[IDX_Y] = fs_kk->dky; - spatial_box_width[IDX_Z] = fs_kk->dkz; + spatial_box_width[IDX_X] = 4 * acos(0) / (fs_kk->dkx); + spatial_box_width[IDX_Y] = 4 * acos(0) / (fs_kk->dky); + spatial_box_width[IDX_Z] = 4 * acos(0) / (fs_kk->dkz); // The distance between two field nodes in z std::array<rnumber,3> spatial_partition_width; diff --git a/bfps/cpp/particles/particles_utils.hpp b/bfps/cpp/particles/particles_utils.hpp index eb89520e0966848a5f9e7af295fcc734e6a87c36..ae6ba904571c6f1a9fcd7b2aa59916d4d4a446a0 100644 --- a/bfps/cpp/particles/particles_utils.hpp +++ b/bfps/cpp/particles/particles_utils.hpp @@ -181,7 +181,7 @@ public: else{ step_split = double(nb_items)/double(nb_intervals); offset_mine = NumType(step_split*double(my_idx)); - size_mine = NumType(step_split*double(my_idx+1)-step_split*double(my_idx)); + size_mine = NumType(step_split*double(my_idx+1))-offset_mine; assert(my_idx != nb_intervals-1 || (offset_mine+size_mine) == nb_items); } }