Computational fluid dynamics library written in Rust
flow2d_rs.mp4
Backward facing step
Cylinder cross flow
Lid-driven cavity
- 2D viscous incompressible Newtonian fluid flow
- Solve Navier-Stokes equations using Euler's Method on staggered grid
- Solve Poisson equation with Successive Over-relaxation method
- Calculate and visualize pressure, speed and stream function
- Different types of boundary conditions:
- Moving no-slip boundary condition
- Free slip boundary condition
- Inflow and outflow condition
- Planned features:
- Contour plot for stream function
- Free boundary value simulation
- HDF5 data export
- Use other method to solve Poisson equation (possibly Multigrid)
- Optimize to run on GPU
- Energy/Heat flow simulation
- Extension to 3D
- The theory and algorithm can be found in Numerical simulation in fluid dynamics: a practical introduction[1]
git clone https://github.com/1n0r1/flow2d-rs.git
cd flow2d-rs
cargo run --example gui
Refer to ./src/presets.rs
for setting up other simulations.
Add flow2d_rs
as a dependency in your Cargo.toml
flow2d_rs = "0.1.0"
- Rayon - to parallelize computation
[1] Michael Griebel, Thomas Dornseifer, and Tilman Neunhoeffer. 1998. Numerical simulation in fluid dynamics: a practical introduction. SIAM