/** #Bubble in a stagnation point flow. We first create the axi-symmetric stagnation point flow. This is done by imposing the analytical boundary conditions (inflow on the top and outflow on the right). After a transient, the flow converges to the analytical solution. The stationary flow is then used to study the deformations and breakup of an initially spherical bubble which lies at the stagnation point. The velocity field of a stagnation point flow is (using Basilisk notation, y is the radial direction and x the axial direction.): $$ \bm{u} = -Ex \bm{e_x} +\frac{1}{2}E y \bm{e_y}$$ In what follows, the flow enters radially and outs along the axis of symmetry, so that $E <0$. */ //#include "grid/quadtree.h" #include "axi.h" #include "navier-stokes/centered.h" #include "view.h" #include "two-phase.h" #include "navier-stokes/conserving.h" #include "tension.h" #include "navier-stokes/perfs.h" #include "maxruntime.h" //Physical ratios #define RHOR 850.0 //density ratio #define MUR 25.0 //kinematic viscosity ratio; real value 55; to be consistent with turbubble simulations #define HALFBOX 5. double amp=-1., R0=1., SIGMA=1.;//velocity amplitude; bubble radius; surface tension int MINLEVEL=5, MAXLEVEL=8; double MAXTIME = 5.; /** Boundary conditions are chosen so that they match the extract solution for the flow at a stagnation point. */ //boundary conditions u.n[left] = dirichlet(0.); u.n[right] = neumann(-amp); u.n[top] = dirichlet(1./2.*amp*2.*HALFBOX); u.n[bottom] = dirichlet(0.); p[top] = neumann(-1./2.*sq(amp)*HALFBOX); pf[top] = neumann(-1./2.*sq(amp)*HALFBOX); p[bottom] = neumann(0.); pf[bottom] = neumann(0.); p[left] = neumann(0.); pf[left] = neumann(0.); p[right] = dirichlet(-1./8.*sq(amp*y)); pf[right] = dirichlet(-1./8.*sq(amp*y)); int main(int argc, char * argv[]){ if (argc>1){ amp = atof(argv[1]);//typical shear R0 = atof(argv[2]);//in practice, R0 is kept constant at 1. It is the length reference SIGMA = atof(argv[3]); MINLEVEL = atoi(argv[4]); MAXLEVEL = atoi(argv[5]); MAXTIME = atof(argv[6]); } size(2.*HALFBOX); init_grid(1<