Computational fluid dynamics library written in Rust
flow2d_rs.mp4
Backward facing step
![backward facing step](https://private-user-images.githubusercontent.com/80285371/277863115-49c0a938-7f22-43f3-a640-57d9d9d6be14.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMTI5NzAsIm5iZiI6MTcyMjIxMjY3MCwicGF0aCI6Ii84MDI4NTM3MS8yNzc4NjMxMTUtNDljMGE5MzgtN2YyMi00M2YzLWE2NDAtNTdkOWQ5ZDZiZTE0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDAwMjQzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFkMzMxMzdjMmYyMGZiNWI3MDI5Y2U1NDA3ODc2ZTg3ZjVmZWVjYmZmNzBhYjY5ZGQ5ZTkzZDUzMjdhN2YzM2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.lW_l_fNZrbUIQS1DZq8ld_VjHw01_F0u87cAmMYpxz4)
Cylinder cross flow
![cylinder cross flow](https://private-user-images.githubusercontent.com/80285371/277865883-a4787740-4f53-4499-b82a-38897f698688.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMTI5NzAsIm5iZiI6MTcyMjIxMjY3MCwicGF0aCI6Ii84MDI4NTM3MS8yNzc4NjU4ODMtYTQ3ODc3NDAtNGY1My00NDk5LWI4MmEtMzg4OTdmNjk4Njg4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDAwMjQzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQzMjgzOWVkYWNjMGQyYzYxYmQ1Y2I4YjRmNjliY2Y0ZjA0Mjg5YWY1N2RlM2UzYzQzMTc5YWM3ZDlhNTM0ZTQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.nEmCbxvkHIVmFCwLv_hki1JP6uT2ICvF-XafgfRT8Nw)
Lid-driven cavity
![lid-driven cavity](https://private-user-images.githubusercontent.com/80285371/277865964-565b13a5-b87e-4e17-af37-9a7a0708b0c5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMTI5NzAsIm5iZiI6MTcyMjIxMjY3MCwicGF0aCI6Ii84MDI4NTM3MS8yNzc4NjU5NjQtNTY1YjEzYTUtYjg3ZS00ZTE3LWFmMzctOWE3YTA3MDhiMGM1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDAwMjQzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcxYjU1Y2E3MGFhMGFlOGJkNWNiZjU3YzNiOWMyNDRkM2QwN2Y3YjFjNzg2M2IyMmJlNjM5ZjdkNjY1MDQyYWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.8ToVEO919KRfun9qfHv9rjAUlG7SBPFteE3XIepq5KI)
- 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.
[1] Michael Griebel, Thomas Dornseifer, and Tilman Neunhoeffer. 1998. Numerical simulation in fluid dynamics: a practical introduction. SIAM