# flow2d-rs Computational fluid dynamics library written in Rust https://github.com/1n0r1/flow2d-rs/assets/80285371/36516766-5e4f-436e-8b6b-90dad9e28668 Backward facing step backward facing step Cylinder cross flow cylinder cross flow Lid-driven cavity lid-driven cavity
## Features - 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]](#1) ## Quick start ```bash 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. ## Dependencies - [Iced](https://github.com/iced-rs/iced) - for GUI - [plotters](https://github.com/plotters-rs/plotters) - for exporting images ## References [1] Michael Griebel, Thomas Dornseifer, and Tilman Neunhoeffer. 1998. _Numerical simulation in fluid dynamics: a practical introduction_. SIAM