Advertisement
Guest User

Untitled

a guest
Oct 30th, 2014
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.30 KB | None | 0 0
  1. static void
  2. heat_source (int xsize, int ysize, double h[xsize + 2][ysize + 2])
  3. {
  4.   int sizex, sizey;
  5.  
  6.   // position 4 permanent heat sources
  7.   sizex = xsize / 4;
  8.   sizey = ysize / 4;
  9.  
  10.   // time-invariant constant values
  11. #pragma omp for parallel
  12.   for (int i = 0; i < sizex; i++)
  13.     for (int j = 0; j < sizey; j++)
  14.       {
  15.     h[1 * xsize / 4 - (sizex / 2) + i][1 * ysize / 4 - (sizey / 2) + j] = HEAT_MAX;
  16.     h[1 * xsize / 4 - (sizex / 2) + i][3 * ysize / 4 - (sizey / 2) + j] = HEAT_MAX;
  17.     h[3 * xsize / 4 - (sizex / 2) + i][1 * ysize / 4 - (sizey / 2) + j] = HEAT_MAX;
  18.     h[3 * xsize / 4 - (sizex / 2) + i][3 * ysize / 4 - (sizey / 2) + j] = HEAT_MAX;
  19.       }
  20. }
  21.  
  22. /*============================================================================*/
  23. // finite difference method (Laplace)
  24.  
  25. static void
  26. update (int xsize, int ysize, double h[xsize + 2][ysize + 2], double h_new[xsize + 2][ysize + 2])
  27. {
  28.   // calculate new value based upon neighbor values
  29. #pragma omp parallel
  30. {
  31. #pragma omp for
  32.   for (int i = 1; i <= xsize; i++)
  33.     for (int j = 1; j <= ysize; j++)
  34.       h_new[i][j] = 0.25 * (h[i - 1][j] + h[i + 1][j] + h[i][j - 1] + h[i][j + 1]);
  35.  
  36.   // update array with new values
  37. #pragma omp for
  38.   for (int i = 1; i <= xsize; i++)
  39.     for (int j = 1; j <= ysize; j++)
  40.       h[i][j] = h_new[i][j];
  41. }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement