55#include < iostream>
66#include < stack>
77#include < cmath>
8+ #include < cstdio>
89
910void P2P (double x, double y, double z, double mux, double muy, double muz, double *F) {
1011 double R2 = x*x + y*y + z*z;
@@ -31,8 +32,9 @@ void P2P_noatomic(double x, double y, double z, double mux, double muy, double m
3132
3233void evaluate_P2M (std::vector<Particle> &particles, std::vector<Cell> &cells,
3334 size_t cell, size_t ncrit, size_t exporder) {
35+ std::cout << " Nparticles = " << particles.size () << std::endl;
3436 double *M = new double [Nterms (exporder+1 )]();
35- #pragma omp for
37+ // #pragma omp for
3638 for (size_t c = 0 ; c < cells.size (); c++) {
3739 if (cells[c].nleaf < ncrit) {
3840 for (size_t i = 0 ; i < cells[c].nleaf ; i++) {
@@ -63,13 +65,16 @@ void evaluate_M2M(std::vector<Particle> &particles, std::vector<Cell> &cells,
6365 of the way the tree is constructed.
6466 */
6567 #pragma omp for
66- for (size_t c = 1 ; c < cells. size () ; c++ ) {
68+ for (size_t c = cells. size () - 1 ; c > 0 ; c-- ) {
6769 size_t p = cells[c].parent ;
70+ std::cout << " M2M: " << c << " to " << p << std::endl;
6871 double dx = cells[p].x - cells[c].x ;
6972 double dy = cells[p].y - cells[c].y ;
7073 double dz = cells[p].z - cells[c].z ;
7174 M2M (dx, dy, dz, cells[c].M , cells[p].M , exporder);
7275 }
76+
77+ std::cout << " evalm2m_cpp: " << cells[0 ].M [0 ] << " ," << cells[0 ].M [1 ] << " ," << cells[0 ].M [2 ] << " ," << cells[0 ].M [3 ] << std::endl;
7378}
7479
7580
@@ -253,7 +258,7 @@ void evaluate_L2P(std::vector<Particle> &particles, std::vector<Cell> &cells,
253258 }
254259}
255260
256- void evaluate_direct (std::vector<Particle> &particles, std::vector< double > & F, size_t n) {
261+ void evaluate_direct (std::vector<Particle> &particles, double * F, size_t n) {
257262 #pragma omp parallel for schedule(runtime)
258263 for (size_t i = 0 ; i < n; i++) {
259264 for (size_t j = 0 ; j < n; j++) {
0 commit comments