src/test/terrain.c

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    #include "terrain.h"
    #include "utils.h"
    
    int main ()
    {
      size (1.[0]);
      FILE * fp = popen ("xyz2kdt terrain", "w");
      for (double x = 0.; x <= 1.1; x += 0.005)
        for (double y = 0.; y <= 1.1; y += 0.005)
          fprintf (fp, "%g %g %g\n", x, y, sin(3.*pi*x)*cos(2.*pi*y));
      pclose (fp);
    
      for (int l = 4; l <= 7; l++) {
        init_grid (1 << l);
        scalar zb[];
        terrain (zb, "terrain", NULL);
        scalar e[];
        foreach()
          e[] = zb[] - sin(3.*pi*x)*cos(2.*pi*y);
        if (l == 7)
          output_field ({zb, e}, stdout, n = 128);
        norm n = normf (e);
        stats s = statsf (zb.nt);
        fprintf (stderr, "%d %.6f %.6f %.6f %g %g\n", l, n.avg, n.rms, n.max, 
    	     s.min, s.max);
      }
    }