Advection Diffusion D3Q19 Boundary Condition
April 27, 2021 at 11:57 am #5630
Dear OpenLB developers,
I am running high-Re atmospheric flow computations with OpenLB (version 1.4) in order to simulate passive scalar dispersion. So I am using two lattices, one for navier-stokes and one for advection-diffusion, both with the Smagorinsky model (external tau eff strategy). I am using a domain with an inlet upstream, an outlet downstream, and obstacle(s) inbetween, on the ground floor. The ceiling is set as a slip-BC and lateral BC’s are periodic.
I am using the D3Q19 for navier-stokes and I would like to improve the stability of the scalar computations by using the D3Q19 for the advection-diffusion instead of the D3Q7 (which generates a lot of spurious oscillations, but does not make the simulation diverge).
I am setting a Dirichlet boundary condition at the inlet of my domain to set the value of the scalar quantity, and when using the D3Q7, everything works fine. But when I use a D3Q19, the scalar lattice is no longer stable, and spurious stuff happens at the inlet, thus killing the computation.
So I looked up in the file advectionDiffusionBoundaries.hh and noticed that for D3Q19, the flat walls are dealt with in a different way; the reconstruction of the distribution functions seems to follow the f_i_neq = -f_opposite(i)_neq rule (as described in Huang, Lu & Sukop (2011) “Numerical study of lattice-Boltzmann methods for a convection–diffusion equation coupled with Navier–Stokes equations” if I am not mistaken).
But I do not understand why there is no “collide” operation following the reconstruction ? f
or D3Q7, there is a line with
>> boundaryDynamics.collide(cell, statistics);
but not for D3Q19. Could you please give me an explanation for this ?
Thank you very much for your help!
MathisApril 28, 2021 at 7:41 pm #5634
I am not quite sure to understand your argumentation on using D3Q19 instead of D3Q7 in this case.
However, could you please test your application with the addition of the collide step as you specified?
I am looking forward for your reply and will double-check the code in the meantime.
StephanApril 29, 2021 at 11:23 am #5636
Thank you for your reply. My argumentation is the following.
– At high Re, using BGK + D3Q7 (+ smagorinsky) for the advection-diffusion appears to violate the positivity of the solver (the scalar field is expected to remain positive but negative values are observed in the domain due to oscillations). Therefore, I need to stabilize the advection-diffusion lattice in some way.
– From the paper of Junk (2001) “A finite difference interpretation of the Lattice Boltzmann method”, I assume that the D3Q7 lattice is equivalent to centered finite difference scheme, which is known to be unstable at high values of Re (as stated for instance in the book of Versteeg and Malalasekera “An introduction to computational Fluid Dynamics: the finite volume method”, section 5.3).
– Therefore, a first idea would be to try the D3Q19 on the advection-diffusion lattice. Also, the D3Q19 would allow me to use an entropic collision operator for the advection diffusion in order to guarantee positivity, which would be (I think) a promising stabilization possibility.
So I tried to add the line “boundaryDynamics.collide(cell, statistics);” between the lines 113 and 114 of advectionDiffusionBoundaries.hh, but it turns out that the results are not better; the oscillations are more pronounced and the scalar field is less physical than before.
So I guess I will keep the previous version (without the collide), for which there might be a theoretical/practical justification.. by the way, maybe the problems I am facing here are related to something else than the inlet BC.
Anyway, if you have any general advice as to how to stabilize the advection-diffusion solver for high Re, I would be interested to know.
Thank you for your time!
MathisApril 29, 2021 at 2:38 pm #5637
thanks for the explanation.
The problem with high Re for scalar transport via ADE on its own (or high Peclét in that case) appears to be increased for non-smooth initial conditions (e.g. transporting the initial condition with very little diffusion: one layer of cells at boundary have concentration 1, other cells concentration 0).
Is this the case in your application?
From my experience, simply switching to D3Q19 will not do the trick then.
To approximate the ADE in that case, you could use an improved finite difference method (https://doi.org/10.1016/j.jocs.2021.101363) or use a limiter for the LBM (https://doi.org/10.1142/S0129183117501418).
ELB will help you for high Re NSE, although I am not familiar with the benefit for non-smooth initial conditions in high Pe ADE. In case you make any progress in that direction please let me know!
StephanApril 29, 2021 at 5:29 pm #5638
Thank you very much for your suggestions! I will have a look at them and see if I can find a solution.
In my applications, when simulating atmospheric pollutant dispersion, I usually neglect molecular diffusivity compared to turbulent diffusivity, so this could be a problem; additionally, I initially have a source with concentration set to 1 whereas the rest of the domain is 0, which could be seen as a non-smooth initial condition. Maybe a possible improvement would be to smoothely increase the value of the concentration at the source from 0 to 1 ?
Anyway, I will have a look at your suggestions and also try the ELB collision model to see if I can get something useful out of it.
Thank you again for your valuable help! I will let you know if I succeed in any way.
MathisApril 29, 2021 at 5:34 pm #5639
you are welcome, thanks for starting the discussion!
Yes, including a ramp up for the concentration could be helpful.
Approximating the profile with a smoothed out concentration might also help.
- You must be logged in to reply to this topic.