Advertisement
Guest User

xd

a guest
Mar 19th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. import java.util.concurrent.CyclicBarrier;
  2.  
  3. public class AdvectionImplicit implements Problem {
  4.  
  5. private static final double beta = 1;
  6.  
  7. private double F(double t) {
  8. return Math.cos(2 * Math.PI * t) * 2 * Math.PI;
  9. }
  10.  
  11.  
  12. @Override
  13. public Production makeA1(Vertex v, double h, double dt, double t, CyclicBarrier barrier) {
  14. return new ABase(v, h, dt, t, barrier) {
  15. @Override
  16. Vertex apply(Vertex v) {
  17. double a = beta * dt / (2 * h);
  18. v.m_a[1][1] = 1.0;
  19. v.m_a[1][2] = 0.0;
  20. v.m_b[1] = 0;
  21.  
  22. v.m_a[2][1] = -a;
  23. v.m_a[2][2] = 0.5;
  24. v.m_b[2] = v.m_x[2] + F(t) * dt;
  25. return v;
  26. }
  27. };
  28. }
  29.  
  30. @Override
  31. public Production makeA(Vertex v, double h, double dt, double t, CyclicBarrier barrier) {
  32. return new ABase(v, h, dt, t, barrier) {
  33. @Override
  34. Vertex apply(Vertex v) {
  35. double a = beta * dt / (2 * h);
  36. v.m_a[1][1] = 0.5;
  37. v.m_a[1][2] = a;
  38. v.m_b[1] = 0;
  39.  
  40. v.m_a[2][1] = -a;
  41. v.m_a[2][2] = 0.5;
  42. v.m_b[2] = v.m_x[2] + F(t)*dt;
  43. return v;
  44. }
  45. };
  46. }
  47.  
  48. @Override
  49. public Production makeAN(Vertex v, double h, double dt, double t, CyclicBarrier barrier) {
  50. return new ABase(v, h, dt, t, barrier) {
  51. @Override
  52. Vertex apply(Vertex v) {
  53. double a = beta * dt / (2 * h);
  54. v.m_a[1][1] = 0.5;
  55. v.m_a[1][2] = a;
  56. v.m_b[1] = 0;
  57.  
  58. v.m_a[2][1] = -2 * a;
  59. v.m_a[2][2] = 1 + 2 * a;
  60. v.m_b[2] = v.m_x[2] + F(t)*dt;
  61. return v;
  62. }
  63. };
  64. }
  65.  
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement