src/test/boundary_vertex.c

    Checks boundary conditions for vertex fields in parallel.

    #define shape(x,y) (sq(x) + sq(y))
    
    int main()
    {
      size (16);
      init_grid (4);
      origin (-L0/2., -L0/2.);
      refine (sq(x) + sq(y) < sq(L0/4.) && level < 3);
    
      scalar s[];
      foreach_dimension() {
        s[left] = dirichlet(shape(x,y));
        s[right] = dirichlet(shape(x,y));
      }
      foreach()
        s[] = shape(x,y);
      
      vertex scalar phi[];
      foreach_vertex()
        phi[] = (s[] + s[-1] + s[0,-1] + s[-1,-1])/4.;
      
      foreach() {
        fprintf (qerr, "%g %g %g\n", x - Delta/3., y - Delta/3., phi[]);
        fprintf (qerr, "%g %g %g\n", x - Delta/3., y + Delta/3., phi[0,1]);
        fprintf (qerr, "%g %g %g\n", x + Delta/3., y - Delta/3., phi[1,0]);
        fprintf (qerr, "%g %g %g\n", x + Delta/3., y + Delta/3., phi[1,1]);
      }
    
    #if _MPI
      debug_mpi (NULL);
    #else
      output_cells();
    #endif
      
    }