sandbox/Antoonvh/test6.c

    An example of the functions under profile6.h

    #include "profile6.h"
    scalar gaussian[], wave[], lev[];

    We define a domain-centered radial coordinate:

    #define RADIUS sqrt(sq(x - L0/2.) + sq(y - L0/2.))
    
    int main(){
      init_grid (1 << 5);
      L0 = 2.*M_PI;
      refine (level < 7 && ((y + x/3.) < 3.));
      foreach(){
        wave[] = 2.*sin(y) + 3.;
        lev[] = level;
        gaussian[] = 2*exp(-sq(RADIUS)/4.) + 3.;
      }

    The profiles() function replaces the trusty profile() function from profile5c.c in the default mode.

    The results:

    datafile = 'out'
    firstrow = system('head -1 '.datafile)
      
    set ylabel word(firstrow, 1)
    set key autotitle columnheader box on
    set size square
    plot datafile u 2:1 t 'Gaussian' ,\
        datafile u 3:1  t 'wave' ,\
        datafile u 4:1  t 'level'
    Adapive (script)

    Adapive (script)

    We also average two fields, 40 times along the radial coordinate (RADIUS) and write it to a file named `equi’.

      scalar * list = {gaussian, lev};
      profile_equi (list, RADIUS, 40, "equi");

    The content of the file is also plotted:

    datafile = 'equi'
    firstrow = system('head -1 '.datafile)
      
    unset ylabel
    set xlabel word(firstrow, 1)
    set key autotitle columnheader box on
    plot datafile u 1:2 w l ,\
        datafile u 1:3   
         
    Equidistant profile for 10 heights (script)

    Equidistant profile for 10 heights (script)

    Well done functions under profile6.h!

    }