src/test/restriction.c

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    // checks that restriction works for face vectors on a non-trivial tree grid
    
    int main(int argc, char * argv[])
    {
      X0 = Y0 = -0.7;
      init_grid (1);
      int depth = argc > 1 ? atoi(argv[1]) : 4;
      refine (level < depth - 2 ||
    	  level <= depth*(1. - sqrt(sq(x - 0.1) + sq(y - 0.1))));
    
      face vector u[];
      foreach_face()
        u.x[] = 1.;
      boundary ((scalar *){u});
    
      output_cells (stdout);
    
      for (int l = 0; l <= depth(); l++)
        foreach_level(l) {
          fprintf (stderr, "%g %g %g %d\n", x - Delta/2., y, u.x[], l);
          assert ((u.x[] == 1. && u.y[] == 1. && u.x[1,0] == 1. && u.y[0,1] == 1.));
        }
    }