diff --git a/bfps/cpp/field.hpp b/bfps/cpp/field.hpp index c6a62b5c1739d5bafdf7c823aea7bc8b24059147..11288f2d32073a36809055489771d0258d40c4b7 100644 --- a/bfps/cpp/field.hpp +++ b/bfps/cpp/field.hpp @@ -58,6 +58,7 @@ class field private: rnumber *__restrict__ data; /**< data array */ public: + static const int number_of_components = ncomp(fc); hsize_t npoints; /**< total number of grid points. Useful for normalization. */ bool real_space_representation; /**< `true` if field is in real space representation. */ diff --git a/bfps/cpp/particles/particles_field_computer.hpp b/bfps/cpp/particles/particles_field_computer.hpp index 50d4df7818bba1df96e10f0704f4ad995c65a133..92a486397ab7c508cb8767d92e1227b1e2e5e654 100644 --- a/bfps/cpp/particles/particles_field_computer.hpp +++ b/bfps/cpp/particles/particles_field_computer.hpp @@ -12,16 +12,6 @@ template <class partsize_t, class interpolator_class, int interp_neighbours> class particles_field_computer { - // TODO but not critical, add in field: - // static const int nb_components = ncomp(fc); - // and use it as field_class::nb_components - // but failed up to now.... - template <typename rnumber, - field_backend be, - field_components fc> - static constexpr int nbcomp(const field<rnumber, be, fc>& /*field*/){ - return ncomp(fc); - } const std::array<int,3> field_grid_dim; const std::pair<int,int> current_partition_interval; @@ -77,7 +67,7 @@ public: const real_number particles_positions[], real_number particles_current_rhs[], const partsize_t nb_particles) const { - constexpr int nb_components_in_field = nbcomp(field); + constexpr int nb_components_in_field = field.number_of_components; static_assert(nb_components_in_field <= size_particle_rhs, "Cannot store all the component in the given array"); TIMEZONE("particles_field_computer::apply_computation");