last hour optimization (ty digo)

This commit is contained in:
Afonso Franco 2023-10-22 22:51:24 +01:00
parent 896eb08a5c
commit 9855bbd327
Signed by: afonso
SSH key fingerprint: SHA256:JiuxZNdA5bRWXPMUJChI0AQ75yC+cXY4xM0IaVwEVys

View file

@ -592,9 +592,10 @@ double PotentialAndAcceleration(double dt) {
double Pot = 0.; double Pot = 0.;
for (int i = 0; i < N - 1; i++) { for (int i = 0; i < N - 1; i++) {
double ai0 = 0., ai1 = 0., ai2 = 0.;
double rI[3] = {r[i][0], r[i][1], r[i][2]}; double rI[3] = {r[i][0], r[i][1], r[i][2]};
for (int j = i + 1; j < N; j++) { for (int j = i + 1; j < N; j++) {
double quot, rnorm, term1, term2; double quot, term2;
// component-by-componenent position of i relative to j // component-by-componenent position of i relative to j
double rij[3]; double rij[3];
// sum of squares of the components // sum of squares of the components
@ -613,18 +614,25 @@ double PotentialAndAcceleration(double dt) {
double rSqd_7 = rSqd_3 * rSqd_3 * rSqd; double rSqd_7 = rSqd_3 * rSqd_3 * rSqd;
double f = (48. - (24. * rSqd_3)) / rSqd_7; double f = (48. - (24. * rSqd_3)) / rSqd_7;
// from F = ma, where m = 1 in natural units! // from F = ma, where m = 1 in natural units!
for (int k = 0; k < 3; k++) { double tmp = rij[0] * f;
double tmp = rij[k] * f; double tmp1 = rij[1] * f;
a[i][k] += tmp; double tmp2 = rij[2] * f;
a[j][k] -= tmp; ai0 += tmp;
} ai1 += tmp1;
ai2 += tmp2;
a[j][0] -= tmp;
a[j][1] -= tmp1;
a[j][2] -= tmp2;
quot = sigma * sigma / rSqd; quot = sigma * sigma / rSqd;
term2 = quot * quot * quot; term2 = quot * quot * quot;
Pot += epsilon_8 * term2 * (term2 - 1.); Pot += term2 * (term2 - 1.);
} }
a[i][0] += ai0;
a[i][1] += ai1;
a[i][2] += ai2;
} }
return Pot; return Pot*epsilon_8;
} }
// Function to calculate the potential energy of the system // Function to calculate the potential energy of the system