Bubble Rise terminal velocity and frequency of oscilation

494 views
Skip to first unread message

Vitor Machado

unread,
Oct 24, 2020, 6:39:07 PM10/24/20
to basilisk-fr
Hy everyone, i'm trying to simulate a single bubble rise, but I can get good values of terminal velocity and frequency of oscilation, I don't know if i'm doing something wrong, could someone help me? I'm currently using ~41 cells per bubble diameter, and it should be enought, so don't seems to be a refinement problem

Thanks for your time! 

#include "navier-stokes/centered.h"
#include "navier-stokes/perfs.h"
#define mu(f)  (1./(clamp(f,0,1)*(1./mu1 - 1./mu2) + 1./mu2))
#define FILTERED
#include "two-phase.h"
#include "tension.h"
#include "view.h"
#include "save_data.h"
#include "dump2.h"
#include "utils.h"
#define RHOR 814.857
#define MUR 56.052
# define Ga 564.256
# define Bo 1.377
# define MAXTIME 5000
#define WIDTH 100.0
#define Z0 3.5
int LEVEL = 12;

  
u.n[top] = dirichlet(0);
u.t[top] = dirichlet(0); 
u.n[bottom] = dirichlet(0); 
u.t[bottom] = dirichlet(0); 
u.n[back] = dirichlet(0); 
u.t[back]    = dirichlet(0); 
u.n[front] = dirichlet(0); 
u.t[front] = dirichlet(0); 
u.n[right] = dirichlet(0); 
u.t[right] = dirichlet(0); 
u.n[left] = dirichlet(0); 
u.t[left] = dirichlet(0); 


int main (int argc, char * argv[]) {

  if (argc > 1)
    LEVEL = atoi (argv[1]);
 
  size (WIDTH);
  origin (-L0/2, 0, -L0/2);
  init_grid (128);    
    
    
  rho1 = 1.;
  rho2 = 1./RHOR;
  mu1 = 1./Ga;
  mu2 = 1./(MUR*Ga);
  f.sigma = 1./Bo;


  TOLERANCE = 1e-4;

 
  run();
}

event init (t = 0) {



  if (!restore (file = "dump")) {
    refine (sq(x) + sq(y - Z0) + sq(z) - sq(0.75) < 0 && level < LEVEL);
    fraction (f, sq(x) + sq(y - Z0) + sq(z) - sq(.5));
  }
}

event acceleration (i++) {
  face vector av = a;
  foreach_face(y)
    av.y[] -= 1.;
}
 event adapt (i++) {
  double uemax = 1e-2;
  adapt_wavelet ({f,u}, (double[]){0.00001,uemax,uemax,uemax}, LEVEL, 5);
}
  
  event data_out (i+=100)
  {
  char name [8] = "Bubb_3_2";
  scalar * list = {f,p} ;
  vector * vlist = {u} ;
  save_data (list, vlist, i, t, name);
 
  }

event snapshots (i+=100) {
  dump (file = "dump");
}

   event end(t = 5000) {
}

Stephane Zaleski

unread,
Oct 26, 2020, 6:55:16 AM10/26/20
to basil...@googlegroups.com
Dear Vitor,

There are some bubble rise cases on the site, did you try those ? Did you read the thread on bubble rise : https://groups.google.com/g/basilisk-fr/c/V2B0iv7BNg4/m/_H0YpyLDCgAJ

?

Best

Stephane

Vitor Machado

unread,
Oct 26, 2020, 12:14:51 PM10/26/20
to basilisk-fr
Thanks for your answer! Yes i've read the thread! I've simulated the 2D benchmark case of Hysing, and a 3D case that Cao, Canals and Marcián Juan (2020) proposed in their work, using experimental values of Sharaf et al (2017), they both agreed very well, but the bubble rose in a linear trajectory in both of the cases (as expected). In my case, the bubble have a spiral motion, so it might get more dificult to reproduce the results.

I've seen spetacular results using Geris and Basilisk by Gumulya et al. (2019) and Zhang et al. (2020), speccialy in therms of frequency of oscilation, so I know that the code is impressive and very powerfull! I just don't know what i'm doing wrong. I've got something arround 10~12 % of error in almost all variables that i've analised (terminal velocity, path frequence of oscilation, aspect ratio and amplitude of oscilation), but Gumulya, for exemple, got almost 0% of error in the same variables. There is something wrong with my code or I need to refine my mesh even further?

Best.

Vitor

xiaowei

unread,
Oct 26, 2020, 1:46:10 PM10/26/20
to basilisk-fr

Dear Vitor,

I have done the same kind of single-bubble tests before. For the 3D air bubble rising in water, my remark is: The predicted bubble trajectory is very sensitive to the treatment of the density jump at the bubble interface. When the "density smearing" is switched on (by #define FILTERED), the oscillation of the bubble is kind of attenuated. Then, as that in your case, the bubble will not exhibit visible zig-zag or spiral motion unless the bubble size is large enough (i.e. >3mm). Nevertheless, the terminal velocity can be correctly predicted with or without "FILTERED".

Therefore, I would suggest you to comment out "#define FILTERED", then the spatial oscillation (spiral trajectory and the frequency) should be well captured for your case.

I’m a little bit confused by the discussion at https://groups.google.com/g/basilisk-fr/c/V2B0iv7BNg4/m/_H0YpyLDCgAJ. The discussion in this thread seems suggest that enabling "FILETERED" lead to a better prediction of the terminal velocity in basilisk. I guess it might only for the 2D case. 

Regards,
Xiaowei

Vitor Machado

unread,
Oct 26, 2020, 5:41:33 PM10/26/20
to basilisk-fr
Dear Xiaowei,
That's weird! I was not using Filtered and then not only my terminal velocity for a 3 mm bubble was less than the experiments (0.287 m/s in experiments, something like 0.235 m/s in simulation) but the bubble was having a large lateral displacemente (zig-zag + plus big lateral motion), that doesn't look very comparable to the fisics of the real bubbles that i've seen. 
When I used the Filetered comand, I got a terminal velocity comparable to experiments (0.274 m/s), an aspect ratio close aswell (1.85 in CFD x ~2 in experiments), but a frequency of oscilation higher (8.25 hz in CFD x 6.7 hz in experimental), and a ampliude of motion comparable (2.5 mm in CFD x ~3.2 mm in experiments). This with 21 control volumes per diameter of the bubble.
The bubbles shown a rectilinear trajectory, that became a zig-zag motion, and eventualy became a spiral motion, very alike the experimental bubbles!
Did you manage to get low errors?
Thanks for your help, it's very nice that we can exchange information all arround the world about CFD simulations, its fascinating hahaha!

Best 

Vitor.

xiaowei

unread,
Oct 27, 2020, 1:11:07 PM10/27/20
to basilisk-fr
Dear Vitor,

For my tests, the 3mm bubble reached a terminal velocity of 0.302/s (terminal Re = 899), which perfectly agrees with the experiment (Veldhuis et al, 2008). BTW, I set the density ratio to 100 in my simulations. 
When filtered, the path is zig-zag at the beginning with a frequency of 6.6 Hz, and then switched to spiral motion with an increased frequency of 8.7 Hz, aspect ratio ~2.55.
Without filtered, the trajectory is like a flat-spiral with a frequency around 6.2 Hz, aspect ratio ~2.36 (vs. 2.2 by experiment). 
I also examined the simulation results for 2.5mm bubble. The simulation without filtered seems result in a better prediction of the bubble motion. Therefore I prefer to deactivate filtered in my simulation.
I looked at your code, it seems all right. But I think 21 grid-points/diameter is too coarse for modelling a 3mm-sized air bubble. You can try to refine the mesh and also set a smaller uemax (for my case uemax = 4e-3) to ensure the wake of the bubble is well refined.

Best, Xiaowei

Vitor Machado

unread,
Oct 27, 2020, 1:18:43 PM10/27/20
to basilisk-fr
Dear  Xiaowei

That's might be it! Maybe the density ratio of 1000 is leading to errors because of the steep diference between the values in the interface. I'll try to set my simulations with a density ratio of 100 and use 41 grid points so it doesn't get to computational expensive.

Hope I get it solved! Thanks a lot for your help, as soon as I get the results I'll get in touch again.

Best, Vitor.

Vitor Machado

unread,
Jul 13, 2021, 9:07:17 PM7/13/21
to basilisk-fr
Hi everyone, I'm still simulating bubble rising in quiescent media and trying to validate not only the usual variables investigated in the literature (terminal velocity and mean aspect ratio) but also trajectory variables.

At first i've tried to work with a 3 mm bubble, but it seemed very computational consuming, so I started to work with smaller bubbles (because their path instability is usually more simple). Basilisk gave good results for 1.4 mm bubble, but for 2 mm bubble there was some problems. 

At first (using harmonic mean for the viscosity and activated Filtered) the bubble achieved a mean aspect ratio close to what is expected experimentaly, but rose in a straight line, which was not consistent with expected physics, and with higher terminal velocity. So I've tried to play with the settings - harmonic/arithimetic mean; Filtered on/off, and when I turned of the Filtering, and used the arithimetic mean, the bubble experienced some lift and the terminal velocity was comparable with experimental, but it was only a lift, when in fact it was expected a zig-zag like trajectory. 

I've tested a lot of things in the past months (unfortunately, this simulations take a long time to complete), i've used more refined mesh, i've tried to use lower  uemax values, but the only case that I've fully validated was the 1.4 mm bubble rising in a almost straight trajectory. 

I'm wondering if anyone have an answer for this problem.  I've attached one of my codes in the message. In this, i've used 45 grid points per bubble diameter, but I also have simulated using up to 65 points in order to investigate if wasn't a refinement problem.

If somebody could help me, let me know! 

Thanks in advance.

Best, Vitor.

brc.c
Reply all
Reply to author
Forward
0 new messages