# Enforcing the ratio \frac{R}{\Delta}

Some like to hint at the fidelity of their two-phase simulations in terms of the dimensionless ratio; \frac{R}{\Delta} < \text{Const}, with R a radius of curfavure of the interface and \Delta the grid size. Here we implement a method to enforce this ratio along an interface.

It seems to work

The “challenge” is to make in cooperate with adapt_wavelet(), eventough it is not a wavelet-based criterion.

#include "fractions.h"
#include "curvature.h"
#include "view.h"

double DoC = 1./20.; //Use 20 to 40 cells per radius

prolongate_ratio() is defined for this purpose only.

void prolongate_ratio (Point point, scalar s) {
foreach_child() {
if (s[] != nodata)
s[] += s[]*Delta;
}
}

We test the method with a circle of radius R.

#define CIRC(R) (sq(x - R + 0.3) + sq(y) - sq(R))

scalar f[], curv[];

int main() {
f.prolongation = f.refine = fraction_refine; //f is the fraction field...
X0 = Y0 = -L0/2;
init_grid (1 << 7);
view (width = 700, height = 700);
for (double R = 10; R > 0.1; R /= 1.01) {
fraction (f, CIRC(R));                 //Compute drop
boundary ({f});                        //is this needed?
curvature (f, curv);                   //Compute curvature
curv.prolongation = prolongate_ratio;  //_then_ overload the prolongation attribute

For testing, we do not set an effective maximum level. Note that eventough we have not used proper boundary conditions for f, the resolution remains limited when the interface touches the domains boundaries..

    adapt_wavelet ({curv}, (double[]){DoC}, maxlevel = 99);
//Make a movie
draw_vof ("f", lc = {1., 0., 1.}, lw = 2);
cells();
save ("plot.mp4");
}

It is interesting to compare against the “default” refinement based on the vof field.

  for (double R = 10; R > 0.1; R /= 1.01) {
fraction (f, CIRC(R));
boundary ({f});
adapt_wavelet ({f}, (double[]){0.01}, maxlevel = 99);

draw_vof ("f", lc = {1., 0., 1.}, lw = 2);
cells();
save ("plot2.mp4");
}

Its appears similar, except we do not know how the refinement-citerion value (0.01) compares to \frac{R}{\Delta}. Looking closely, we can see that the curvature-based method uses a more constant grid along the interface, wheareas the fov-based method is more robust in time.

Compare

}