bubbleFoam - behavior on finer mesh
I am investigating a case of completely closed domain where a large bubble is rising and spreading across the ceiling. The domain is a cylinder "on side" and the calculation works quite correctly for cruder hexahedral mesh.
But the target is to use a polyhedral mesh, but the calculation doesn't converge on it... so I tested a finer hexahedral mesh and finer polyhedral mesh and I have got those strange results...
Crude Hexahedral mesh
Fine Hexahedral mesh
Fine Polyhedral mesh
I am quite new to the CFD solving... and I understand that this is not correct. But why?
Thanks in advance for all hints you can offer
So, in the first step I examined the convergence and it is as those attached graphs shows.
The most correct calculation, with the crude hexahedral mesh looks like this:
(convergence of p in individual time steps)
The finer hexahedral mesh then looks like this
And the finer polyhedral mesh like this
So the convergence is poor in the beginning in all the calculations... And it is similar in Hex Crude and Hex Finer mesh...
I assume that the bad convergence in the polyhedral model is in the moment the model touches the wall...
In the next step, I am going to try to change the fvScheme file... but I have no clue which is good to modify first... I do know what the lines in fvScheme stand's for and I do know how each scheme looks, but I am not sure how to guess the influence on the result.
Is there any hint? What to start with, which literature read, some similar cases etc?
Thanks again for any help or hint...
First of all, did you reduce the maximum time step after refining the mesh?
Thanks for the hint... No, I did not...
I know this:
The original model (crude) was:
dx = 0.01 m
max dt = 0.001 s
The ux is 0 in the beginning of the calculation and maximally 10 m/s (because the bubble toutches the top after cca 0.5s)
so let's take 10 m/s
the C is max 1.
When I am using the finer model (both are 2x finer in each direction) the cell size is decreased to:
dx = 0.005 m all other parameters weren't changed:
max dt = 0.001 s
max ux =~ 10 m/s
so let's say C is max 2.
Ok, so I suppose that the time step should be halved... For this I introduced the calculated time step... the same which is in twophaseEulerFoam... or in interFoam.
Is it necesarry to set the maxDeltaT always to some calculated value by the equation above? What if I can't limit the velocity? I am suppose to calculate quite large models and too small dT will increase the calculation time... I thought that the calculated dT (calculated in the run in each time step accordingly to actual Courant number) will solve this problem but not if I will force it manually to use some small value.
I will test smaller dT ... for example 1/10 dT should be sufficient and post the results.
I think a Courant number of 1 is already pretty large for multiphase flows; 2 is just asking for trouble. Definitely check if your results change with smaller time steps.
MaxDeltaT is not always necessary, but more strictly enforced than maxCo, so if you notice the solver jumping over the maxCo number it helps to limit maxDeltaT as well.
I agree with Anton. An Euler/Euler multiphase flow calculation needs a small courant number. In my different tests, I used to bound the Courant number (based on Ur) by 0,4.
Courant could be set upto 0.5 maximum in Euler-Euler multiphase flows, beyond this value is not recommended
Thanks again for the recommendations. You were right... the Time step has quite influence on the convergence / divergence of the whole model.
I tried the "adjustTimeStep" switch (added to bubbleFoam) to correct this problem, but the calculation turned out to be still dependent on the time step.
To save the calculation time, I examined following rhetorical question: Why do we have the calculated Courant Number for each time step when we need to limit the deltaT anyway? If I force the calculation to push the Courant number (with maxCo constant) down do I still need the maxDeltaT? What if the problems with divergence are only in the beginning of the calculation cycle before the timeStep is pushed down by the MaxCo criteria?
In this case, it would be enough to set maxCo (0.4) and Calculate sufficient deltaT for T=0... and let the maxDeltaT to be higher... because the limitation by maxCo should be enough.
For now I have some results on finer mesh (T = 0.5 s ) (120 000 polyhedral cells)...
fixed dT = 0.1 ms, maxCo = 0.4
Attachment 10170 Attachment 10172
variable dT = 0.5 ms,dT(T=0) = 0.1 ms, maxCo = 0.4
Attachment 10171 Attachment 10173
As it looks, the results are similar, so the convergence problem was in the first part of the calculation... BUT the results does differ quite a bit, and the residua (thick green results in graph) are quite worse for the variable dT.
The scary thing is the yellow value of the Courant number... even the parameter maxCo is 0.4 the calculated maxCo is in one moment little bit over 4.
So, the problem isn't fully solved. When the calculation reaches a problematic place it fails (if the time step is fixed) or it creates unrealistic results, if the time step is variable. But the first question, the divergence at the beginning is now solved.
I will create necessary graphs and submit the other problematic place in the calculation.
Thanks again Anton, Aurelien and Naveed a lot for the hints... fluid dynamics are now again a little bit clearer for me.
|All times are GMT -4. The time now is 22:05.|