Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // R-B For (i+j) % 2 == 1:
- for(i=id + 1; i<=N-2; i += num_procs)
- for(j= 1 + i % 2; j<=N-2; j+= 2)
- if ((i + j) % 2 == 1)
- {
- double b;
- b = w*((A[i-1][j]+A[i+1][j]+A[i][j-1]+A[i][j+1])/4. - A[i][j]);
- eps = Max(fabs(b),eps);
- A[i][j] = A[i][j] + b;
- }
- for(i = id + 1; i<=N-2; i += num_procs)
- for(j= 1 + (i + 1) % 2; j <= N-2; j+= 2)
- if ((i + j) % 2 == 1)
- {
- double b;
- b = w*((A[i-1][j]+A[i+1][j]+A[i][j-1]+A[i][j+1])/4. - A[i][j]);
- eps = Max(fabs(b),eps);
- A[i][j] = A[i][j] + b;
- }
- // matrix sync for all the programs:
- for(i = id + 1; i<=N-2; i += num_procs)
- for(j= 1 + (i + 1) % 2; j <= N-2; j+= 2)
- MPI_Bcast(&A[i][j], 1, MPI_DOUBLE, id, MPI_COMM_WORLD);
- for(i = id + 1; i<=N-2; i += num_procs)
- for(j= 1 + i % 2; j <= N-2; j+= 2)
- MPI_Bcast(&A[i][j], 1, MPI_DOUBLE, id, MPI_COMM_WORLD);
- // Barrier:
- MPI_Barrier(MPI_COMM_WORLD);
- // R-B For (i+j) % 2 == 0:
- for(i = id + 1; i<=N-2; i += num_procs)
- for(j=1 + i % 2; j <= N-2; j += 2)
- if ((i + j) % 2 == 0)
- {
- double b;
- b = w*((A[i-1][j]+A[i+1][j]+A[i][j-1]+A[i][j+1])/4. - A[i][j]);
- A[i][j] = A[i][j] + b;
- }
- for(i = id + 1; i<=N-2; i += num_procs)
- for(j=1 + (i + 1) % 2; j <= N-2; j += 2)
- if ((i + j) % 2 == 0)
- {
- double b;
- b = w*((A[i-1][j]+A[i+1][j]+A[i][j-1]+A[i][j+1])/4. - A[i][j]);
- A[i][j] = A[i][j] + b;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment