sandbox/Antoonvh/dip.c
A Dipole-Wall collision using a 4th-order accurate solver
Vorticity
Level
#define NOSLIP_TOP (1)
#include "nsf4t.h"
int initlevel = 9;
double ue = 1e-4;
scalar * tracers = NULL;
int main() {
periodic (left);
= 25;
L0 = Y0 = -L0/2;
X0 const scalar muc[] = 1e-4;
= muc;
nu = 1 << initlevel;
N run();
}
event logger (i++) {
if (i == 0)
printf ("#t i p.i p.nr p2.i p2.nr cells depth speed divmax\n");
printf ("%g %d %d %d %d %d %ld %d %g %g\n",
, i, mgp.i, mgp.nrelax, mgp2.i, mgp2.nrelax,
t->tn, grid->maxdepth, perf.speed, mgp2.resa);
grid}
event init (t = 0) {
scalar omg[];
scalar psi[];
[top] = dirichlet_top (0);
psi[bottom] = dirichlet_bottom (0);
psi= 1e-4;
TOLERANCE double xp = -1.124, yp = 0.423;
foreach() {
[] = 0;
psidouble omgl = 0;
foreach_child()
-= (x - xp)*exp(-sq(x - xp) - sq(y - yp));
omgl [] = omgl/4.;
omg}
(psi, omg);
poisson boundary ({psi});
= {-1., 1.};
coord f foreach_face()
.x[] = f.x*(psi[0,1] + psi[-1,1] - psi[0,-1] - psi[-1,-1])/(4.*Delta);
uboundary ((scalar*){u});
vorticityf (u, omg);
}
event adapt (i++)
adapt_flow (ue, 99, 1);
event mov (t += 2) {
scalar omg[];
vorticityf (u, omg);
output_ppm (omg, file = "omg.mp4", n = 600,
= true, map = cool_warm,
linear = -0.2, max = 0.2);
min foreach()
[] = level;
omgoutput_ppm (omg, file = "lev.mp4", n = 600);
}
event stop (t = 500);