[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ESPResSo-users] Lattice Boltzmann boundaries in Espresso 3.1

From: Ulf Schiller
Subject: Re: [ESPResSo-users] Lattice Boltzmann boundaries in Espresso 3.1
Date: Tue, 13 Mar 2012 17:18:47 +0100
User-agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0) Gecko/20120129 Thunderbird/10.0


I don't intend to create any confusion here, but the fact that the lattice nodes now lie at half integer positions means that any boundary aligned with the main lattice directions has effectively an integer position. So the implementation should now be able to generate stick boundary conditions at positions 0.0 and 32.0 in Wolfgang's example. The shift of the lattice nodes has the rather nice feature that the half-grid offset of boundaries can be hidden under the hood and, in my opinion, the lbboundary command should produce boundaries at integer positions as specified by the user.

Interpolating the velocity field between fluid and wall nodes does not make sense, since the velocity at a bounce-back node is ill-defined. To linear order, it could be extrapolated to -u where u is the velocity of the fluid node closest to the wall. This would generate a smooth extrapolation for Couette flow but not for Poiseuille. The location of the boundary at half-grid spacing holds for both though.

So I'd suggest to revisit the implementation such that in the example the wall nodes lie at y=-0.5 and y=32.5, and the zero-velocity is located effectively at y=0.0 and y=32.0. If the user specifies a non-integer position, there is a choice to put the wall location to ceil() or floor(), possibly depending on the orientation of the wall. In this case, multi-reflection BCs would be better anyway.

Hope this helps and best wishes,

On 03/13/2012 04:36 PM, Owen Hickey wrote:
Hi Wolfgang,

We modified the implementation of the LB nodes in order to allow for the
use of verlet lists together with the LB fluid.  This means that LB
nodes are now at multiples of half of the agrid.  Thus if agrid is 1 LB
nodes are at 0.5, 1.5, 2.5, etc.  The boundaries are inserted using a
bounce back scheme.  This is usually thought of as creating a
hydrodynamic barrier which is half way between the bounce-back node and
the free fluid node.  Thus if node 0.5 is a bounce-back node and 1.5 is
a regular fluid node the hydrodynamic boundary is, to first order, at 1.

In your specific case the wall at 32 should make the node at 32.5 a
bounce-back node and thus have velocity zero.  The boundary wall at 0.0
doesn't actually do anything but the node at 39.5 is a bounce-back node
because all nodes greater than 32 are bounce back nodes due to the other
boundary.  You should get reasonable results putting walls at 1 and 32
instead, creating 0.5 being a bounce-back node and all nodes above 32
being bounce-back too (e.g. 32.5 and up).  I hope that is at least
clearer than the documentation.


p.s. you might notice a slight change in how the velocity profile looks
as it now interpolates linearly between the fluid node and the
bounce-back node.

On Tue, Mar 13, 2012 at 2:14 PM, Wolfgang Riefler
<address@hidden <mailto:address@hidden>>

    Hi All,

    I have recently switched from Espresso 3.0 to 3.1 (Congrats to the
    new version by the way).

    To test if everything is going well, I wanted to simulate a simple
    Poiseuille flow between two walls, thus defining

    setmd box_l 40 40 40
    lbboundary wall dist 0.0 normal 0.0 1.0 0.0
    lbboundary wall dist -32.0 normal 0.0 -1.0 0.0

    which should give me two plane walls in the x-z plane at y=0 and y=32.

    According to the Espresso manual (and simulations done with Espresso
    3.0), it will result in two effective boundaries at y~0.5 and y~31.5.

    I set the fluid to

    lbfluid agrid 1.0 dens 1.0 visc 3.0 tau 0.001 ext_force 0.001 0.0
    0.0 friction 20.0
    thermostat lb 0.0

    and start integrating until the solution has converged well enough.

    Surprisingly I get effective boundaries at y~-0.5 and y~31.5, which
    means that y=0 is no boundary node.

    I have read in the NEWS file that the boundaries have been worked on
    for Espresso 3.1, so am I missing something?

    Thank you very much in advance,



Dr. Ulf D. Schiller                        Building 04.16, Room 3006
Institute of Complex Systems (ICS-2)       Phone:   +49 2461 61-6144
Forschungszentrum J├╝lich, Germany          Fax:     +49 2461 61-3180

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]