// #include "axi.h" // Without axi.h, the code runs fine
#include "embed.h"
#include "navier-stokes/centered.h"
#include "view.h"
#include "tracer.h"
scalar f[];
scalar * tracers = {f};
double Re = 160.0;
int maxlevel = 9;
face vector muv[];
int main() {
L0 = 2. [1];
origin (-0.5, -0.5 * L0);
N = 256;
mu = muv;
run();
}
double D = 0.125, U0 = 1.0;
event properties(i++) {
foreach_face()
muv.x[] = fm.x[] * U0 * D / Re;
}
u.n[left] = dirichlet(U0);
p[left] = neumann(0.0);
pf[left] = neumann(0.0);
f[left] = fabs(y) < D /8 ? 1.0 : 0.0;
u.n[right] = neumann(0.0);
p[right] = dirichlet(0.0);
pf[right] = dirichlet(0.0);
u.n[embed] = dirichlet(0.0);
u.t[embed] = dirichlet(0.0);
event init(i = 0) {
solid(cs, fs, sqrt(sq(x) + sq(y)) - D/2);
foreach() {
u.x[] = cs[] ? U0 : 0.0;
}
}
event logfile (i++) {
if (i == 0)
fprintf (stderr,
"i\tt\tmgp.i\tmgu.i\n");
fprintf (stderr, "%d\t%g\t%d\t%d\n",
i ,t, mgp.i, mgu.i);
}
event movie (t += 0.1; t <= 20) {
scalar omega[], m[];
vorticity(u, omega);
foreach() {
m[] = cs[] - 0.5;
}
view ();
output_ppm(omega, file = "vort.mp4", box = {{-0.5, -0.5},
{0.5, 0.5}}, min = -10, max = 10, linear = true, mask = m);
output_ppm (f, file = "f.mp4", box = {{-0.5,-0.5},{0.5,0.5}},
linear = false, min = 0, max = 1, mask = m);
}
event adapt (i++) {
adapt_wavelet ({cs, u, f}, (double[]){1e-2, 1e-2, 1e-2, 1e-2},
maxlevel, 4);
}