sandbox/Antoonvh/visc_boun.c
A Viscous boundary layer
It is resolved with 4th order accuracy.
u.x
for N = 64
set xr [4:256]
set size square
set grid
set xlabel 'N'
set ylabel 'error'
set logscale x 2
set logscale y
plot 'out' t 'L_1', '' u 1:3 t 'Max', 1e3*x**(-4)
#define NOSLIP_TOP (1)
#include "nsf4t.h"
scalar * tracers = NULL;
double t0 = 1;
double sol (double x, double y) {
return (erf((Y0 + L0 - y)/(2.*sqrt(t + t0))));
}
int main() {
= 15;
L0 periodic (left);
const scalar mu[] = 1.;
= 0.01;
DT = mu;
nu for (N = 8; N <= 128; N *= 2)
run();
}
event init (t = 0) {
= .1;
DI = 1e-10;
TOLERANCE foreach_face(x)
.x[] = Gauss6_x(x, y, Delta, sol);
u}
event mov (i += 2) {
if (N == 64)
output_ppm (u.x, file = "ux.mp4", n = 300, min = -0.1, max = 1.1);
}
event stop (t = 1) {
double e = 0, em = -1;
foreach_face(x) {
double el = fabs(u.x[] - Gauss6_x(x, y, Delta, sol));
+= sq(Delta)*el;
e if (el > em)
= el;
em }
printf ("%d %g %g\n", N, e, em);
}