# Merging of two vertices

Studying the interaction of two incompressible vortices is interesting for example as a basic model of two-dimensional turbulence. Here we solve the incompressible 2D Euler equations using a vorticity–streamfunction formulation.

``#include "navier-stokes/stream.h"``

The domain is centered on $\left(0,0\right)$ and the maximum level of refinement is 8 i.e. the initial grid has $N={2}^{8}=256$ grid points per dimension.

``````#define MAXLEVEL 8

int main()
{
origin (-0.5, -0.5);
init_grid (1 << MAXLEVEL);
run();
}``````

The initial vorticity field is composed of two Gaussian vortices separated by twice dd and with caracteristic radii dd/10.

``````event init (i = 0)
{
double dd = 0.1;
foreach()
ω[] = (exp(-(sq(x - dd) + sq(y))/(dd/10.)) +
exp(-(sq(x + dd) + sq(y))/(dd/10.)));
}``````

We output some statistics on the vorticity field and Poisson solver at the start and end of the simulation.

``````event logfile (t = {0,30}) {
stats s = statsf (ω);
fprintf (stderr, "%g %d %g %g %d\n", t, i, dt, s.sum, mgpsi.i);
}``````

We output the vorticity and level fields at regular intervals in a format compatible with gnuplot.

``````event output (t += 5) {
static int nf = 0;
char name[80];
sprintf (name, "omega-%d", nf);
FILE * fp = fopen (name, "w");
output_field ({ω}, fp, linear = true);
fclose (fp);

scalar l[];
foreach()
l[] = level;
sprintf (name, "level-%d", nf);
fp = fopen (name, "w");
output_field ({l}, fp);
fclose (fp);
nf++;
}``````

If we are using a quadtree grid, it is adapted using wavelet error control on $\omega$.

``````#if TREE