Advertisement
Guest User

Untitled

a guest
Oct 29th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Chapel 0.88 KB | None | 0 0
  1. config const n = 6, epsilon = 1.0e-5, p = 2.0, t = 10.0;
  2.  
  3. const BigD = {0..n+1, 0..n+1},
  4. D = BigD[1..n, 1..n];
  5.  
  6. var A, Temp : [BigD] real;
  7. var red_odd: sparse subdomain(D);
  8. var red_even: sparse subdomain(D);
  9. var red: sparse subdomain(D);
  10.  
  11. red_odd+= {1..n, 1..n} by 2 align (1,1);
  12. red_even+= {1..n, 1..n} by 2 align (2,2);
  13. red = red_odd + red_even;
  14.  
  15. var black_odd: sparse subdomain(D);
  16. var black_even: sparse subdomain(D);
  17. var black: sparse subdomain(D);
  18.  
  19. black_odd+= {1..n, 1..n} by 2 align (1,2);
  20. black_even+= {1..n, 1..n} by 2 align (2,1);
  21. black= black_odd + black_even;
  22.  
  23. do {
  24.     forall (i, j) in red do
  25.         A[i,j] = (A[i-1,j] + A[i+1,j] + A[i,j-1] + A[i,j+1] + p/t ) / 4;
  26.     forall (i, j) in black do
  27.         A[i,j] = (A[i-1,j] + A[i+1,j] + A[i,j-1] + A[i,j+1] + p/t ) / 4;
  28.  
  29.     const delta = max reduce abs(A[D] - Temp[D]);
  30.     Temp[D] = A[D];
  31.    
  32. } while (delta > epsilon);
  33.  
  34. writeln(A);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement