/** This is just a simple example to demonstrate why I get the error I reported in the forum "Problem with interaction..." (See Case#2 & Case#3). Consider the following stationary case: When I refine the region inside a cylinder at every single timestep using Saint-Venant.h you can see that \$h\$ is not conserved anymore which is caused by refining the cylinderical region, however \$h\$ is conserved exactly when I use a uniform mesh. This does not create a big problem when I am using Saint-Venant equations and of course when I just refine at the initial timestep and I have a solitary wave entering the domain. But I think this is the reason for the error I reported before in the forum using Green-Naghdi equations since small errors in the value of \$h\$ can cause large error in calculating dispersive terms (See. Case 2 and Case 3: Case two I use adaptive mesh with minlevel=6 and maxlevel=10 and I refine the region around the cylinder at \$t=0\$ and the code stops at the very early timesteps due to the error in h and u caused by refining the cylindrical regin at time step 0 while the code works perfectly when I use \$minlevel=maxlevel=10\$). *SP: I can't see any problem. Either the problem is fixed or you need to make the error clearer i.e. make the code crash or make a graph showing an obvious problem.* */ #include "saint-venant.h" int MINLEVEL = 6; int MAXLEVEL = 9; int main() { size (50.); G = 9.81; origin (-L0/2., -L0/2.); init_grid (1 << MINLEVEL); run(); } double H0 = 1.0; event init (i = 0) { refine (sq(x ) + sq(y)< sq(7) && level < MAXLEVEL); foreach() { h[] = H0; u.x[] = 0.0; } conserve_elevation(); } event logfile (i++) { stats s = statsf (h); if (i == 0) fprintf (stderr, "t i h.min h.max h.sum u.x.rms u.x.max dt\n"); fprintf (stderr, "%g %g %g %g %g\n", t, s.min, s.max, s.sum, dt); } event stop (t = 15.) { return 1; } event adapt (i++) { astats s = adapt_wavelet ({h}, (double[]){1e-4}, MAXLEVEL, MINLEVEL); refine (sq(x ) + sq(y)< sq(7) && level < MAXLEVEL); fprintf (ferr, "# refined %d cells, coarsened %d cells\n", s.nf, s.nc); }