Bounce Back Boundary conditions and lattice nodes locations
September 8, 2021 at 9:06 pm #5963
Looking at the rayleighbernard2d case I can see in the results of the simulation in Paraview that the dirichlet temperature is set along a boundary edge and it coincides with the zero velocity, which is exactly what we want.
Going back to the basics, my question is how does OpenLB handle the fact that for the NS lattice we are doing standard fullway bounceback (so the wall is at the midlink between solid and fluid nodes) and at the same time setting the dirichlet temperature for the AD lattice at the wall (
T difference = dirichletTemperature - (T) 1 - sum;the node is at the wall). Unless I am missing something, there is a deltax/2 difference between these two boundary conditions.
This led me to check where the cuboidGeometry nodes exactly are using
getPhysR, and effectively, the lattice nodes coincide with the material indicator for the wall and with the intersections of the surface edges in Paraview.
I appreciate any insight on this in advance for a better understanding of the code.
Ramiro FreileSeptember 14, 2021 at 3:27 pm #5999
as far as I understand fullway bounce-back correctly, it implies that the boundary is located precisely on the nodes (cf. Krüger, DOI 10.1007/978-3-319-44649-3). Does this answer your question?
JuliusSeptember 14, 2021 at 5:08 pm #6001
In page 178 of the Kruger book mentions the following:
Despite what their names might suggest, both the fullway and halfway
approaches assume that the boundary is located approximately midway
between solid and boundary nodes, not on the solid nodes themselves.
Then in page 177 there are two figures that show the difference between half way and fullway bounce back. For the halfway bb, it takes deltat to return to the fluid node at the boundary, and for the fullway it takes 2*deltat. But the wall boundary is at a distance deltax/2 from the closest fluid node to the wall. The Zou He velocity boundary conditions assume that the node is at the wall.
So I still do not know how the AD lattice and NS lattice cope with this.
RamiroSeptember 15, 2021 at 2:13 pm #6005
thanks for the explanation, I did not know that.
Why is it clear that the AdvectionDiffusionBoundariesDynamics require on-wall boundary locations? The code comment “on cell there are non-shiftet values” seems to refer to the storage of cell populations in my eyes.
Anyway, the cuboid and super geometry do not know the dynamics and boundary conditions, they are created before-hand. So, at least nothing prohibits setting link-wise BC for the first and on-node BC for the other lattice for the same part of the boundary.September 15, 2021 at 7:40 pm #6006
The fact that in
AdvectionDiffusionBoundariesDynamicsfor D3Q7 we set the missing populations by
T difference = dirichletTemperature - (T) 1 - sum;makes me think we are at a wet node. Also, for D3Q19 a bounce back of the non-equilibrium populations is done, like the Zou-He wet node BC approach.
While it is true that the supergeometry is created before the boundary conditions and the nodes locations are not influenced by this step, if there is a deltax/2 of difference between lattice node locations the coupling between the lattices could be affected.
I may be missing some details of the code..
September 16, 2021 at 3:04 pm #6010
- This reply was modified 5 days, 17 hours ago by ramirofreile.
In any case, the lattice nodes and their physical coordinates depend (only) on the geometry and are identical for both lattices (-> the coupling cannot be affected).
The question whether you have on-node or link-wise BC affects where you suppose your virtual, non-discrete domain to end. When you compare with analytical solutions, you should consider this fact, because it affects the order of convergence. Practically, there is not necessarily a problem if one (virtual) domain is slightly larger than the other: the computational domain is the same.September 16, 2021 at 9:07 pm #6011
Thank you very much for the discussion. To finish understanding your point I made a simple sketch which I attach. https://ibb.co/gmv52zY
In the figure, the orange thick line represents a geometry indicator for the boundary. We can say that the red nodes which coincide with the orange line are at the wall boundary. The blue nodes are fluid nodes and the black nodes are virtual nodes.
That said, for the Temperature lattice, after collision and streaming, the perpendicular population entering the fluid domain is set accordingly to impose the Dirichlet temperature there. However for the velocity, the halfway or the fullway bounce back would set the velocity to zero, deltax/2 in the upwards direction of the figure.
What I can say though, is that looking at the results of some examples in OpenLB, at those boundary nodes, the velocity is zero and the temperature is set as it is supposed to (rayleighBernard2d example). I am just having a struggle figuring out how it is done.
RamiroSeptember 17, 2021 at 3:41 pm #6012
I fully agree about the geometry.
In order to enforce the no-slip, the velocity is set to zero at BounceBack nodes (cf. BounceBack::computeU). The density is typically computed as in the bulk (which is the prescribed value is our case, since it does not changed after initialization), cf. BounceBack::computeRho.
- You must be logged in to reply to this topic.