Add your description here
Project description
lbm
A simple lattice-Boltzmann code for 2D flow resolutions. All the tools are contained in the lattice.py
file, and separate cases are built on top of this library.
Contents
This LBM code includes:
- D2Q9 lattice
- TRT collision operator
- Zou-He on all boundary conditions
- Drag/lift computation using interpolated bounce-back
- Core routines are deferred to Numba
Below are some examples ran with the code. The related cases are available in the repository.
Lid-driven cavity
A simple driven cavity in unit square. Launch it by running python3 cavity.py
.
Below are the computed time-domain velocity norms and final streamlines at Re=100 (left) and Re=1000 (right).
A comparison of u_x = f(y) at the center of the domain with reference data from "U. Ghia, K. N. Ghia, C. T. Shin, High-Re solutions for incompressible flow using Navier-Stokes equations and multigrid method."
Turek benchmark
The Turek cylinder benchmark CFD case is described in "Schafer, M., Turek, S. Benchmark Computations of Laminar Flow Around a Cylinder". The 2D case consists in a circular cylinder in a channel with top and bottom no-slip conditions, and with a Poiseuille flow at the inlet (these cases are named 2D-1 and 2D-2 in the aforementionned reference). The cylinder is voluntarily not centered to trigger instability at sufficient Reynolds number. Here, we explore the accuracy of the drag and lift computation.
ny |
2D-1 (Re=20) Cd | 2D-1 (Re=20) Cl | 2D-2 (Re=100) Cd | 2D-2 (Re=100) Cl | |
---|---|---|---|---|---|
Turek | --- | 5.5800 | 0.0107 | 3.2300 | 1.0000 |
lbm | 100 | 5.6300 | 0.0862 | 3.0411 | 0.5834 |
lbm | 200 | 5.5804 | 0.0371 | 3.2582 | 1.2047 |
lbm | 300 | 5.5846 | 0.0261 | 3.2152 | 1.0987 |
Below are videos of the 2D-1 and 2D-2 cases:
Poiseuille with random obstacles
It is possible to run a Poiseuille flow with random obstacles in the domain. Below is an example.
Running
To run a simulation, adjust the parameters in the related python file, then run python3 case.py
. A results folder will be generated in ./results/
with the current date and time. The png/
folder will contain outputs of the velocity norm over the domain. To generate a video out of the png files, you can use the convert
command as follows:
convert -delay 10 -resize 50% -loop 0 'u_norm_%d.png'[0-100] animation.gif
To optimize and resize gifs, use gifsicle
:
gifsicle -i animation.gif --scale 0.6 -O3 --colors 256 -o anim-opt.gif
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file funlbm-1.1.27.tar.gz
.
File metadata
- Download URL: funlbm-1.1.27.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.27
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1f54a481465bff5f42c51302347c241ee7fa31df77f2ef73600c06ac1a71e46 |
|
MD5 | 64fbb590fbb33bb459ec08de0ce78edb |
|
BLAKE2b-256 | cb079c15f62a6b3fa411e15df09bc5171ea97a4144072681dc9e95c1a1f5b925 |
File details
Details for the file funlbm-1.1.27-py3-none-any.whl
.
File metadata
- Download URL: funlbm-1.1.27-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.27
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b25d0976922f9bf6a78216056d8acf69751b8ade3767fab535f976cf49407b68 |
|
MD5 | 66aed09193d00dcddf4c007ab99fc626 |
|
BLAKE2b-256 | c7b0ce302c534396a88afd02cde257d3f2ca2f863a3e7126b8fc3631022f37ab |