8 #ifndef SRC_VECTOR_PERFORMANCE_VECTOR_DIST_PERFORMANCE_COMMON_HPP_ 
    9 #define SRC_VECTOR_PERFORMANCE_VECTOR_DIST_PERFORMANCE_COMMON_HPP_ 
   11 #include "Vector/vector_dist.hpp" 
   19 template<
unsigned int dim, 
size_t prp = 0, 
typename T, 
typename V> 
void calc_forces(T & NN, V & vd, 
float r_cut)
 
   21     auto it_v = vd.getDomainIterator();
 
   25     for (
size_t i = 0; i < dim; i++)
 
   36         for (
size_t i = 0; i < dim; i++)
 
   40         auto cell_it = NN.template getNNIterator<NO_CHECK>(NN.getCell(p));
 
   42         while(cell_it.isNext())
 
   44             auto nnp = cell_it.
get();
 
   59                 for (
size_t i = 0; i < dim; i++)
 
   60                     num[i] = vd.getPos(key)[i] - vd.getPos(nnp)[i];
 
   63                 for (
size_t i = 0; i < dim; i++)
 
   64                     denom += num[i] * num[i];
 
   67                 for (
size_t i = 0; i < dim; i++)
 
   68                     res[i] = num[i] / denom;
 
   70                 for (
size_t i = 0; i < dim; i++)
 
   78         for (
size_t i = 0; i < dim; i++)
 
   79             vd.template getProp<prp>(key)[i] += sum[i];
 
   97 template<
unsigned int dim, 
unsigned int prp, 
typename T, 
typename V> 
void cross_calc(T & NN, T & NN2, V & vd, V & vd2)
 
   99     auto it_v = vd.getDomainIterator();
 
  101     while (it_v.isNext())
 
  110         auto cell_it = NN2.template getNNIterator<NO_CHECK>(NN2.getCell(p));
 
  114         while(cell_it.isNext())
 
  116             auto nnp = cell_it.
get();
 
  126         vd.template getProp<prp>(key) = sum;
 
  139 template<
unsigned int dim, 
typename v_dist> 
void vd_initialize(v_dist & vd, 
Vcluster & v_cl, 
size_t k_int)
 
  143     std::uniform_real_distribution<float> ud(0.0f, 1.0f);
 
  147     auto it = vd.getIterator();
 
  153         for (
size_t i = 0; i < dim; i++)
 
  154             vd.getPos(key)[i] = ud(eg);
 
  169 template<
unsigned int dim, 
typename v_dist> 
void vd_initialize_double(v_dist & vd,v_dist & vd2, 
Vcluster & v_cl, 
size_t k_int)
 
  173     std::uniform_real_distribution<float> ud(0.0f, 1.0f);
 
  177     auto it = vd.getIterator();
 
  183         for (
size_t i = 0; i < dim; i++)
 
  185             vd.getPos(key)[i] = ud(eg);
 
  186             vd2.getPos(key)[i] = vd.getPos(key)[i];
 
  204 template<
unsigned int dim, 
size_t prp = 0, 
typename T, 
typename V> 
void calc_forces_hilb(T & NN, V & vd, 
float r_cut)
 
  206     auto it_cl = NN.getIterator();
 
  210     for (
size_t i = 0; i < dim; i++)
 
  213     while (it_cl.isNext())
 
  216         auto key = it_cl.get();
 
  221         for (
size_t i = 0; i < dim; i++)
 
  225         auto cell_it = NN.template getNNIterator<NO_CHECK>(NN.getCell(p));
 
  227         while(cell_it.isNext())
 
  229             auto nnp = cell_it.
get();
 
  244                 for (
size_t i = 0; i < dim; i++)
 
  245                     num[i] = vd.getPos(key)[i] - vd.getPos(nnp)[i];
 
  248                 for (
size_t i = 0; i < dim; i++)
 
  249                     denom += num[i] * num[i];
 
  252                 for (
size_t i = 0; i < dim; i++)
 
  253                     res[i] = num[i] / denom;
 
  255                 for (
size_t i = 0; i < dim; i++)
 
  263         for (
size_t i = 0; i < dim; i++)
 
  264             vd.template getProp<prp>(key)[i] += sum[i];
 
size_t getProcessUnitID()
Get the process unit id. 
 
This class implement the point shape in an N-dimensional space. 
 
Grid key for a distributed grid. 
 
Implementation of VCluster class. 
 
const T & get(size_t i) const 
Get coordinate. 
 
size_t getKey() const 
Get the key. 
 
This class is a trick to indicate the compiler a specific specialization pattern. ...
 
T distance2(const Point< dim, T > &q)
It calculate the square distance between 2 points. 
 
It model an expression expr1 + ... exprn.