Modelling two-dimensional complex flow using the lattice Boltzmann method
Lattice Boltzmann method is a computational technique that streams and collides "psuedo particles", or particle frequency distributions, on a lattice to approximate hydrodynamics.
- Julia language (recently updated for julia 1.x.x)
- PyCall
- PyPlot
- HDF5
- JLD
- ArgParse
- ProfileView
- Roots
- YAML
Install the both the julia language and python. Note: the install script assumes an Ubuntu environment and that pip is installed.
git clone https://github.com/grasingerm/lbxflow.git
cd lbxflow
julia scripts/install_dependencies.jl
julia lbxflow.jl --help
julia lbxflow.jl -vf example_sims/poiseuille/poiseuille_velocity-profile.yaml
An introductory tutorial
is available in the doc
directory. Currently documentation is sparse, but the
source files are all well documented and I am responsive to questions and feedback.
Example input files are available in the example_sims
directory.
There is a paper associated with lbxflow. If you found this code useful for your research, please be kind enough to cite it, using the DOI https://doi.org/10.1016/j.compfluid.2018.02.008, or the following BiBTeX entry:
@article{grasinger2018numerical,
title = {Numerical investigation of the accuracy, stability, and efficiency of lattice Boltzmann methods in simulating non-Newtonian flow},
author = {Matthew Grasinger and Scott Overacker and John Brigham},
journal = {Computers & Fluids},
volume = {166},
pages = {253-274},
year = {2018},
issn = {0045-7930},
doi = {https://doi.org/10.1016/j.compfluid.2018.02.008}
}
Please report all bugs and issues using the github ticketing system.
- add capability for 3D simulations
- add animations and plots using gnuplot and Gadfly
- implement free surface flow
- break collision functions down into forcing method, constitutive eqn, etc.
- create alt. stream/collide methods using grids of obstacle flags
- write user documentation
- parallelize streaming and collision steps, multiscale mapping, and BCs
- wrap simulation code in a module
- profile simulation steps to identify bottlenecks
- write some tests?
- write mrt collision functions with "hard coded" default inverse transformation matrix
- verify Newtonian Poiseuille flow
- debug BCs at inlet/outlet (bounceback, periodic)
- implement MRT scheme for Bingham plastic flow
- clean up api
- make an autosave feature
- should be able to "catch" from exceptions and/or keyboard interrupt
- should be able to restart from interrupted model where left off
- clean up existing BCs / more general BCs
- develop post processing and animations
- implement HB-Bingham constitutive model used in Fluent