# 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
Cylinder cross flow
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