diff --git a/bfps/cpp/distributed_particles.cpp b/bfps/cpp/distributed_particles.cpp index 476f44d23df18f36ea1ab8058c554cc822bab62a..49bae5185e7e43151cd713a38e0622ed52c1912a 100644 --- a/bfps/cpp/distributed_particles.cpp +++ b/bfps/cpp/distributed_particles.cpp @@ -132,6 +132,11 @@ void distributed_particles<particle_type, rnumber, interp_neighbours>::read( MPI_DOUBLE, 0, this->comm); + for (int p=0; p<this->nparticles; p++) + { + if (this->vel->z_is_here(temp[this->ncomponents*p+2])) + this->state[p] = temp + this->ncomponents*p; + } //if (this->myrank == 0) //{ // if (this->iteration > 0) diff --git a/bfps/cpp/interpolator.hpp b/bfps/cpp/interpolator.hpp index fa73fe14ea75eb281e103eb16f6ba5ee0318a166..d207c69e26f56aecee08b8713e1608cf133ac7f2 100644 --- a/bfps/cpp/interpolator.hpp +++ b/bfps/cpp/interpolator.hpp @@ -24,6 +24,7 @@ +#include <cmath> #include "field_descriptor.hpp" #include "fftw_tools.hpp" #include "fluid_solver_base.hpp" @@ -53,6 +54,12 @@ class interpolator:public interpolator_base<rnumber, interp_neighbours> int read_rFFTW(const void *src); + inline bool z_is_here(double z) + { + return (this->descriptor->rank[MOD(int(floor(z/this->dz)), this->descriptor->sizes[0])] == + this->descriptor->myrank); + } + /* interpolate field at an array of locations */ void sample( const int nparticles, diff --git a/setup.py b/setup.py index fb36f5b66b979d2cf4efbb2e999f53ce140df37c..87be77279ec61f4327bfca51ec42bb98d1c101d3 100644 --- a/setup.py +++ b/setup.py @@ -91,15 +91,15 @@ print('This is bfps version ' + VERSION) ### lists of files and MANIFEST.in src_file_list = ['field_descriptor', - 'fluid_solver_base', - 'fluid_solver', + 'distributed_particles', 'interpolator_base', 'particles_base', - 'rFFTW_interpolator', - 'rFFTW_particles', 'interpolator', 'particles', - 'distributed_particles', + 'rFFTW_interpolator', + 'rFFTW_particles', + 'fluid_solver_base', + 'fluid_solver', 'fftw_tools', 'spline_n1', 'spline_n2',