I have a problem with a loop which contains various variables, I want to share them. See the part of my code in C++ here:

- Code: Select all
`double *force_X;`

double *WallY0_f;

double *WallY1_f ;

force_X = (double *) calloc ((size_t) (nb), sizeof(double));

WallY0_f = (double *) calloc ((size_t) (nb), sizeof(double));

WallY1_f = (double *) calloc ((size_t) (nb), sizeof(double));

int i,j,k;

#pragma omp parallel for shared(force_X, force_Y, force_Z, WallY0_f, WallY1_f) private(k)

for (k = 0; k < nbreInteractions ; ++k) {

i = particle[k];

j = Voisin[k];

if (_paire[k]==0)

{

Sphere_Sphere(i,j,k);

force_X[i] += FX[k];

force_X[j] -= FX[k];

}

else if (_paire[k]==1)

{

Sphere_WallY0(i,k);

force_X[i] -= FX[k];

WallY0_f[i] -= FY[k];

}

else if (_paire[k]==2)

{

Sphere_WallY1(i,k);

force_X[i] += FX[k];

WallY1_f[i] += FY[k];

}

}

I am not an expert in openmp and my results are wrongs when I use openmp .

Do you see an error into my loop ?

Thanks for your request.

Regards

Jf

PS: the value of FX[k] and FY[k] is calculted into the functions: Sphere_WallY1, Sphere_WallY0 and Sphere_Sphere.