sandbox/Antoonvh/omega.c
Dual-grid AMR solver for the \omega-\psi formulation of the Navier-Stokes equations
We split the advection of vorticty (\omega) and the Poisson-equation solving for the stream function (\psi) on separated adaptive grids. This uses the linked object file similar to the master-slave design.
Results:
The vorticity field (\omega) represented on the fine mesh (left) and teal streamlines (\psi = \text{Const.}) represented on the coarse mesh (right) for a case of two merging vortices
#include "master-omgpsi.h"
int main() {
  L0 = 10;
  X0 = Y0 = -L0/2;
  DT = 0.01;
  run();
}
event init (t = 0) {
  foreach()
    omega[] = exp(-sq(x-1) - sq(y)) + exp(-sq(x + 1) - sq(y));
}
#if MOVIE
#include "view.h"
event movs (t += 0.25) {
  view (fov = 20);
  squares ("omega", map = blue_white_red, min = -0.75, max = 0.75, linear = true);
  cells();
  save ("omega.mp4");
  save ("omega.png");
  slave_level();
}
#endif
event adapt (i++, last) {
  adapt_wavelet ({omega, psi}, (double[]){0.01, 0.01}, 8);
}
event stop (t = 50);