diff --git a/examples/multipoles.h b/examples/multipoles.h index fa3594352b072ffe3052e6879acd6753262df0ba..9c211432bdd37d9a3b9f94af8b018e568d183898 100644 --- a/examples/multipoles.h +++ b/examples/multipoles.h @@ -207,7 +207,7 @@ static inline double D_111(double r_x, double r_y, double r_z, double inv_r) { double inv_r3 = inv_r * inv_r * inv_r; double inv_r7 = inv_r3 * inv_r3 * inv_r; - return -15. * r_x * r_z * r_z * inv_r7; + return -15. * r_x * r_y * r_z * inv_r7; } @@ -316,9 +316,9 @@ static inline void shiftAndAddTensor(struct fieldTensor A, struct fieldTensor* B B->F_000 += 0.5f * dx * dx * A.F_200; B->F_000 += 0.5f * dy * dy * A.F_020; B->F_000 += 0.5f * dz * dz * A.F_002; - B->F_000 += 0.5f * dx * dy * A.F_110; - B->F_000 += 0.5f * dx * dz * A.F_101; - B->F_000 += 0.5f * dy * dz * A.F_011; + B->F_000 += dx * dy * A.F_110; + B->F_000 += dx * dz * A.F_101; + B->F_000 += dy * dz * A.F_011; #endif B->F_100 += A.F_100; @@ -349,17 +349,19 @@ static inline float applyFieldAcceleration(struct fieldTensor B, double dx, doub a += B.F_000; - //a += dx * B.F_100; - //a += dy * B.F_010; - //a += dz * B.F_001; + a += dx * B.F_100; + a += dy * B.F_010; + a += dz * B.F_001; + + //message("%f %f %f %f %f %f", B.F_100, B.F_010, B.F_001, dx, dy, dz); #ifdef QUADRUPOLES a += 0.5f * dx * dx * B.F_200; a += 0.5f * dy * dy * B.F_020; a += 0.5f * dz * dz * B.F_002; - a += 0.5f * dx * dy * B.F_110; - a += 0.5f * dx * dz * B.F_101; - a += 0.5f * dy * dz * B.F_011; + a += dx * dy * B.F_110; + a += dx * dz * B.F_101; + a += dy * dz * B.F_011; #endif return a;