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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDQxNTAsIm5iZiI6MTczOTM0Mzg1MCwicGF0aCI6Ii84MDI4NTM3MS8yNzc4NjMxMTUtNDljMGE5MzgtN2YyMi00M2YzLWE2NDAtNTdkOWQ5ZDZiZTE0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3MDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI2YzljYTMwYTEzNDVjNjEyZjc5MjRhZWZkM2YzMzEzYTZkYjc3YzQ1NjMzMDNjNjFkZTI2ZTE0NmRmZDQxMjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.4g02NKpLVEmzOB5-GIvrI3e_L81SsEfhCXTVD4KbyZg)
Cylinder cross flow
![cylinder cross flow](https://private-user-images.githubusercontent.com/80285371/277865883-a4787740-4f53-4499-b82a-38897f698688.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDQxNTAsIm5iZiI6MTczOTM0Mzg1MCwicGF0aCI6Ii84MDI4NTM3MS8yNzc4NjU4ODMtYTQ3ODc3NDAtNGY1My00NDk5LWI4MmEtMzg4OTdmNjk4Njg4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3MDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYzZWQ1MTIzMjkxNzJmYzdhMGI1NjY3YmM4MDY2ZDg0ODc1YzkyYjY1MjliNDAzNGU4ZDAwOTQ4YjkxYmRhY2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.e21KOTE8wNlrn-J9pA5Jwjcpt8l1ZDFuN97l7yPMgPM)
Lid-driven cavity
![lid-driven cavity](https://private-user-images.githubusercontent.com/80285371/277865964-565b13a5-b87e-4e17-af37-9a7a0708b0c5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDQxNTAsIm5iZiI6MTczOTM0Mzg1MCwicGF0aCI6Ii84MDI4NTM3MS8yNzc4NjU5NjQtNTY1YjEzYTUtYjg3ZS00ZTE3LWFmMzctOWE3YTA3MDhiMGM1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3MDQxMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQwNTdhNDRjZjcwYWZjMTgyMGY1ZTYwOGE5YWFlMjBkZDdlNGY3MzQ0MTJmMDczOTBhNjA5NTQxNDI2YjJhNDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.jn-UxzHmV7ZVg0iEAfYQ7OSK8TLQvKCR_gityXx6NxM)
- 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