public static Vector3 A_onFirstFromAll(this INBodyState s, int first) { var N = s.N; var tmp = new Vector3(); Vector3 acc = s.A_onFirstFromSecond(first, 0); for (int i = 1; i < N; i++) acc += s.A_onFirstFromSecond(first, i); return acc; }
public static Vector3[] ComputeAccelerationVectorDirect(this INBodyState s) { var N = s.N; var accVector = new Vector3[N]; // compute accelerations Parallel.For(0, N, i => { accVector[i] = new Vector3(); var avi = accVector[i]; for (int j = 0; j < N; j++) if (j != i) { var a = s.A_onFirstFromSecond(i, j); avi.c0 += a.c0; avi.c1 += a.c1; avi.c2 += a.c2; } }); return accVector; }