Where are you getting these u_localptr arrays? What are you passing in as the
Vec into DAVecGetArray()? If you pass in global vectors you CANNOT access ghost
points in the arrays (they don't exist) you need to pass in local vectors
obtained with DAGetLocalVector() or DACreateLocalVector() to access ghost
points.
Barry
On Nov 30, 2010, at 2:58 PM, khalid ashraf wrote:
> Hi, I am writing the following loop for accessing the vectors in a 3D grid.
>
> for (k=zs; k<zs+zm; k++) {
> for (j=ys; j<ys+ym; j++) {
> for (i=xs; i<xs+xm; i++) {
> if (i<(mx-1))
> {
> Cx=u_localptr[k][j][i+1]-u_localptr[k][j][i];
> }
> else
> {
> Cx=u_localptr[k][j][i]-u_localptr[k][j][i-1];
> }
> if (j<(my-1))
> {
> // Cy=v_localptr[k][j+1][i]-v_localptr[k][j][i];
> Cy=v_localptr[k][j][i]-v_localptr[k][j][i];
> }
> else
> {
> Cy=v_localptr[k][j][i]-v_localptr[k][j-1][i];
> }
> if (k<(mz-1))
> {
> // Cz=w_localptr[k+1][j][i]-w_localptr[k][j][i];
> Cz=w_localptr[k][j][i]-w_localptr[k][j][i];
> }
> else
> {
> Cz=w_localptr[k][j][i]-w_localptr[k-1][j][i];
> }
> In this code if I uncomment the two commented lines, then the program
> gives memory access out of range error when run on multiple processors. Could
> you please tell me what is the problem with the two commented out lines.
>
> Thanks.
>
> Khalid
>
>