CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   bubbleFoam - Simple case, Large bubble, closed domain (

darai November 4, 2011 07:40

bubbleFoam - Simple case, Large bubble, closed domain
Hello Foamers,

I am trying to break into the multiphase fluid dynamic problem (for futher problems I need Euler-Euler solver) with bubbleFoam by a serie of simple examples and I stucked on a very simple simulation:

The case is a large bubble in a closed domain. I want the air bubble to crush to the top of the tank and create the "air pocket" there. The first 2D case was all right, but the 3D case is divergent when the bubble toutches the side wall (as it is expanding along the top).

For better ilustration, here is the cut through the 3D domain:
I am using simple boundary conditions:

Ua = Ub = uniform (0 0 0) everywhere
p = buoyant pressure 0 on boundary and uniform 0 in the volume
k = zeroGradient on the boundary and 1e-8 in the volume
epsilon= zeroGradient on the boundary and 0.1 in the volume
alpha= zeroGradient at the boundary and creates a large bubble in the volume
shown on the picture:

The time step is calculated, max 0.01 and the turbulence is off.

The last state before the divergense looks like on the picture:
What did I wrong? I don't believe that it is something too complicated...
Thanks in advance for any clues...

darai November 7, 2011 04:09

I just hope
I just hope I don't do it wrongly,

This is my first post and I am also just few months new to the FoamProblem solving issue, so just let me know if I should do something differently.

Thanks in advance,

darai November 7, 2011 04:48

New experiment.
During the weekend, I tried a new experiment,

Goal was to test two hypothesis:

1) In previous model, I introduced a Courant Number based calculation of dT for bubbleFoam (same mechanics as in twoPhaseEuler) so I tested if these modifications cause the problems or not. In the weakend I used only the original bubbleFoam with
fixed time step 1e-4.

2) I tested if a finer mesh can help me to achieve convergence, From the original model with 15 000 hexahedra elements, I enthanced the model (Splitted) to 120 000 hexahedra elements.

The result was a divergence after 1.54 s... but the bubble toutched the ceiling and was there for some time, before the calculation diverged.

The Courant number was all along (max) under 0.1 and mean something really small,
but the alpha was strange:
Max alpha: until the bubble toutched the top of the cylinder, it was ok, but then it rised to cca 1.005. It isn't correct, right? Why is the model behaving this way? When the divergenc came, the max alpha of course rised to astronomical numbers as well, but it isn't suprising.

darai November 7, 2011 05:06

And one another interesting thing
Another question is,

if the behaviour is correct, after 0.5s the bubble submerged from the bottom of the tank to half and BREAKED to several smaller bubbles.

Is it real? or not? All previous calculations worked differently, so maybe there is something wrong.

Aurelien Thinat November 7, 2011 10:43

Hi Martin,

I don't know if it would solve your problem but you are saying that your BC is alpha = 0 everywhere.
So If you have accumulation of air : alpha =1, near the boundary : alpha = 0.
I should have define a zeroGradient BC for alpha on the top at least.

Hope it will help.


darai November 8, 2011 04:31

mistake correction
Hi, Aurélien

Thanks for the post, but that was an error from my side in description of the model. I do have there zeroGradient on alpha on all boundaries.

But, I focused on the alpha and changed the BC on the flat walls to uniform 0 to test if it will be better or not.
Answer: worse. It diverged in the moment the bubble toutched the uniform 0 wall.

What is the reason, the meaning of zeroG BC for alpha anyway? I understand this BC when I want the pressure field or the velocity field to continue behind this "boundary" as for inlet/outlet, but for alpha? I don't get it, don't see the physical reason.

Thanks again.

darai November 8, 2011 04:48

1 Attachment(s)
Apro po,
when I am decomposing this case... lets do it all:
I modified the bubbleFoam solver to use "calculated time step" (dT based on Courant number)

It is my first change in the solver code which actualy really do something, so, it looks that it works correctly, but is it really this simple or did I missed something?

I am attatching the new solver code with marked changes (3 modifications):

darai November 9, 2011 02:28

Another Idea - Failed
I Tried another idea,

maybe the problem is in the corner element. Guys in crash department has problem when an element is in the corner of the domain. Element simply can't have two edges on the boundary (in crash calc... don't ask me why) if we want the model to be all right... so I tested if something like this would solve my problem.

It didn't.. Still divergence in the moment the bubble toutches the side walls.

darai November 9, 2011 05:14

Finaly results
1 Attachment(s)
So to finish this topic:

The answer was Time Step.

With time step:
dT = 0.005
it was calculating since time t=1.05, then the calculation diverged in the next two time steps (1.06 and 1.07) which was visible in postprocessing and in residuum monitoring.

But when I deleted the last two time steps and decreased the time step to:
dT = 0.0001
the calculation continued without the residuum problems (residuums on pressure under 0.01) and the convergence problem:

The buble rised from the bottom, hitted the top, splitted due to the rest of its kinetic energy, each part of the bubble lost it's energy on the side of the tank and the bubble joined again in the middle of the top (Shown in the added jpg file)

The only question which remains is: Why is there the difference between the results with cruder mesh:
And finer mesh??:

All times are GMT -4. The time now is 05:52.