src/test/rt.c
Rayleigh–Taylor instability
#include "navier-stokes/centered.h"
#include "two-phase.h"
#include "navier-stokes/conserving.h"
#if REDUCED
# include "reduced.h"
#endif
#define LEVEL 8
.n[left] = 0;
uf[left] = neumann(0.);
p.n[right] = 0;
uf[right] = neumann(0.);
p
int main() {
(4);
size (-2, -2);
origin (1 << LEVEL);
init_grid = mu2 = 0.00313;
mu1 = 1.225, rho2 = 0.1694;
rho1 #if REDUCED
.y = -9.81;
G#else
[] = {0,-9.81};
a#endif
= 5e-3;
DT = 1e-6;
TOLERANCE run();
}
event init (t = 0) {
#if TREE
mask (x < -0.5 ? left : x > 0.5 ? right : none);
#endif
fraction (f, 0.05*cos (2.*pi*x) + y);
}
event logfile (i++) {
stats s = statsf (f);
printf ("%g %d %g %g %g %g %d %d %d\n",
, i, dt, s.sum - 2., s.min, s.max - 1., mgp.i, mgpf.i, mgu.i);
tassert (s.min >= -1e-10 && s.max <= 1. + 1e-10);
assert (fabs (s.sum - 2.) < 9e-7);
}
event interface (t = {0,0.2,0.4,0.8}) {
output_facets (f, stderr);
FILE * fp = fopen ("levels", "w");
scalar l[];
foreach()
[] = level;
loutput_field ({l}, fp);
fclose (fp);
}
#if TREE
event adapt (i++) {
= {0};
coord momb foreach()
foreach_dimension()
.x += dv()*rho(f[])*u.x[];
momb
({f}, (double[]){5e-3}, LEVEL);
adapt_wavelet
= {0};
coord moma foreach()
foreach_dimension()
.x += dv()*rho(f[])*u.x[]; moma
We check that each component of the momentum is conserved.
foreach_dimension()
assert (fabs(momb.x - moma.x) < 1e-10);
}
#endif