Advertisement
Guest User

Untitled

a guest
May 25th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.41 KB | None | 0 0
  1. import java.util.concurrent.CyclicBarrier;
  2.  
  3. public class Exercise4 implements Problem {
  4.  
  5.     static private double pi2 = Math.pow(Math.PI, 2.);
  6.  
  7.     int i = 1;
  8.  
  9.     @Override
  10.     public Production makeA1(Vertex v, double h, double dt, double t, CyclicBarrier barrier) {
  11.         return new ABase(v, h, dt, t, barrier) {
  12.             @Override
  13.             Vertex apply(Vertex v) {
  14.  
  15.                 double u1 = v.m_x[0];
  16.                 double u2 = 0.75 * v.m_x[0] + 0.25 * v.m_x[1];
  17.                 double u3 = 0.75 * v.m_x[1] + 0.25 * v.m_x[2];
  18.                 double u4 = v.m_x[2];
  19.  
  20.                 double dx2 = Math.pow(h, 2.);
  21.                 v.m_a = new double[][]{
  22.                         {0., 0., 0.},
  23.                         {0., 1., 0.},
  24.                         {0., -1. / (2 * dx2), 1. / (2 * dt) + 1. / (2 * dx2) - pi2 / 4}};
  25.  
  26.                 v.m_b = new double[]{
  27.                         0.,
  28.                         0.,
  29.                         u3 / (2 * dt) + u2 / (4 * dx2) - u2 / (2 * dx2) + u4 / (4 * dx2) + pi2 * u3 / 4 - pi2 * h * 1
  30.  
  31.                 };
  32.                 return v;
  33.             }
  34.         };
  35.     }
  36.  
  37.     @Override
  38.     public Production makeA(Vertex v, double h, double dt, double t, CyclicBarrier barrier) {
  39.         return new ABase(v, h, dt, t, barrier) {
  40.             @Override
  41.             Vertex apply(Vertex v) {
  42.                 double dx2 = Math.pow(h, 2.);
  43.                 double xi = h * i,
  44.                         xi1 = xi + h;
  45.  
  46.                 double u1 = v.m_x[0];
  47.                 double u2 = 0.75 * v.m_x[0] + 0.25 * v.m_x[1];
  48.                 double u3 = 0.75 * v.m_x[1] + 0.25 * v.m_x[2];
  49.                 double u4 = v.m_x[2];
  50.  
  51.                 v.m_a = new double[][]{
  52.                         {0., 0., 0.},
  53.                         {0., 1. / (2 * dt) + 1. / (2 * dx2) - pi2 / 4, -1. / (2 * dx2)},
  54.                         {0., -1. / (2 * dx2), 1. / (2 * dt) + 1. / (2 * dx2) - pi2 / 4}};
  55.  
  56.                 v.m_b = new double[]{
  57.                         0.,
  58.                         u2 / (2 * dt) + u1 / (4 * dx2) - u2 / (2 * dx2) + u3 / (4 * dx2) + pi2 * u2 / 4 - pi2 * h * xi,
  59.                         u3 / (2 * dt) + u2 / (4 * dx2) - u3 / (2 * dx2) + u4 / (4 * dx2) + pi2 * u3 / 4 - pi2 * h * xi1
  60.                 };
  61.                 i++;
  62.                 return v;
  63.             }
  64.         };
  65.     }
  66.  
  67.     @Override
  68.     public Production makeAN(Vertex v, double h, double dt, double t, CyclicBarrier barrier) {
  69.         return new ABase(v, h, dt, t, barrier) {
  70.             @Override
  71.             Vertex apply(Vertex v) {
  72.                 double dx2 = Math.pow(h, 2.);
  73.  
  74.                 double u1 = v.m_x[0];
  75.                 double u2 = 0.75 * v.m_x[0] + 0.25 * v.m_x[1];
  76.                 double u3 = 0.75 * v.m_x[1] + 0.25 * v.m_x[2];
  77.                 double u4 = v.m_x[2];
  78.                 v.m_a = new double[][]{
  79.                         {0., 0., 0.},
  80.                         {0., 1. / (2 * dt) + 1. / (2 * dx2) - pi2 / 4, -1. / (2 * dx2)},
  81.                         {0., -1. / h, 1. / h}};
  82.  
  83.                 double xi = h * i,
  84.                         xi1 = xi + h;
  85.  
  86.                 v.m_b = new double[]{
  87.                         0.,
  88.                         u2 / (2 * dt) + u1 / (4 * dx2) - u2 / (2 * dx2) + u3 / (4 * dx2) + pi2 * u2 / 4 - pi2 * h * xi,
  89.                         1
  90.                 };
  91.                 i = 1;
  92.                 return v;
  93.             }
  94.         };
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement