#include "utils.h" #include "fractions.h" #include "tag.h" #define LEVEL 10 double geom (double x, double y) { double C1 = sq(x - 0.2) + sq(y) - sq(0.1); double C2 = sq(x - 0.8) + sq(y) - sq(0.01); double C1C2 = min(C1, C2); return - C1C2; } int main() { init_grid (1<<9); scalar f[]; f.refine = f.prolongation = fraction_refine; double iteration = 0; do { iteration++; fraction (f, geom(x,y)); } while (adapt_wavelet({f}, (double []){0.005}, maxlevel = LEVEL, 5).nf != 0 && iteration <= 10); scalar m[]; foreach() m[] = f[] > 1.e-3; int n = tag(m); output_ppm (m, file = "tag.ppm", min = 0, max = n); if (n != 2) { dump ("error"); exit (1); // error } }