1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
void incrementation(Planete* A, int nmb)
{
int i;
int l;
float truc1;
float truc2;
float truc3;
float distance;
for(l=0;l<=nmb-1;l++)
{
truc1=0;
truc2=0;
truc3=0;
distance=0;
#pragma omp parallel for
for(i=0;i<=nmb-1;i++)
{
if(!(i==l))
{
distance=(A[i].x_now-A[l].x_now)*(A[i].x_now-A[l].x_now)+(A[i].y_now-A[l].y_now)*(A[i].y_now-A[l].y_now)+(A[i].z_now-A[l].z_now)*(A[i].z_now-A[l].z_now);
truc1=truc1+(G*A[i].masse*(A[i].x_now-A[l].x_now))/((distance+1)*sqrt(distance));
truc2=truc2+(G*A[i].masse*(A[i].y_now-A[l].y_now))/((distance+1)*sqrt(distance));
truc3=truc3+(G*A[i].masse*(A[i].z_now-A[l].z_now))/((distance+1)*sqrt(distance));
}
}
A[l].x_after= truc1*PAS*PAS - A[l].x_past + 2*A[l].x_now;
A[l].y_after= truc2*PAS*PAS - A[l].y_past + 2*A[l].y_now;
A[l].z_after= truc3*PAS*PAS - A[l].z_past + 2*A[l].z_now;
}
#pragma omp parallel for
for(l=0;l<=nmb-1;l++)
{
A[l].x_past=A[l].x_now;
A[l].y_past=A[l].y_now;
A[l].z_past=A[l].z_now;
A[l].x_now=A[l].x_after;
A[l].y_now=A[l].y_after;
A[l].z_now=A[l].z_after;
A[l].x_after=0;
A[l].y_after=0;
A[l].z_after=0;
}
} |
Partager