sandbox/Antoonvh/tracer4.c
Tracer advection in a accelerating frame of reference
The concergence test
Variance test (advection of noise)
set xr [8:512]
set yr [1e-5:10]
set grid
set logscale x 2
set logscale y
set size square
set xlabel 'N'
set ylabel 'L_1'
plot 'out' t 'Data', 1e6*x**(-4) t '4th order'
Convergence (script)
reset
set xr [8:512]
set yr [0:40]
set grid
set logscale x 2
set size square
set xlabel 'N'
set ylabel 'Sum of squares'
plot 'out' u 1:3 t 'Data', 33.333 t 'Perfect noise'
Advection of noise (script)
#include "nsf4t.h"
#include "view.h"
scalar s[], n[], * tracers = {s, n};
double ax = 0.1, ay, uo = 0.5, tend;
int main() {
foreach_dimension()
periodic (left);
L0 = 10;
X0 = Y0 = -L0/2;
tend = (-uo + sqrt(sq(uo) - 2*ax*-L0))/(ax); // ABC formula
ay = 2*L0/sq(tend);
const vector av[] = {ax, ay};
a = av;
for (N = 16; N <= 256; N *= 2)
run();
}
event init (t = 0) {
foreach_face(x)
u.x[] = uo;
foreach_vert() {
e += dv()*fabs(s[] - exp(-sq(x) - sq(y)));
E += dv()*sq(n[]);
}
printf ("%d %g %g\n", N, e, E);
}