Skip to content

Commit eb6f350

Browse files
committed
Update
1 parent 29b7133 commit eb6f350

File tree

11 files changed

+29002
-1907
lines changed

11 files changed

+29002
-1907
lines changed

fidimag/atomistic/fmmlib/calculate.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <iostream>
66
#include <stack>
77
#include <cmath>
8+
#include<cstdio>
89

910
void 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

3233
void 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++) {

fidimag/atomistic/fmmlib/calculate.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ void evaluate_L2L(std::vector<Cell> &cells, size_t exporder);
2828
void evaluate_L2P(std::vector<Particle> &particles, std::vector<Cell> &cells,
2929
double *F, size_t ncrit, size_t exporder);
3030

31-
void evaluate_direct(std::vector<Particle> &particles, std::vector<double> &F, size_t Nparticles);
31+
void evaluate_direct(std::vector<Particle> &particles, double *F, size_t Nparticles);
3232
// void evaluate_direct(std::vector<Particle> &particles, std::vector<double>
3333
// &Bx, std::vector<double> &By, std::vector<double> &Bz);
3434

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import fmmgen
2+
3+
order = 10
4+
source_order = 1
5+
cse = True
6+
atomic = True
7+
precision='double'
8+
fmmgen.generate_code(order, "operators",
9+
precision=precision,
10+
CSE=cse,
11+
cython_wrapper=False,
12+
potential=False,
13+
field=True,
14+
source_order=source_order,
15+
atomic=atomic)

0 commit comments

Comments
 (0)