The official thesis paper (in Bulgarian) can be found here, and the "home-brewed" translation is available here.
A CPU-processed and grid-based fluid simulator built for my diploma thesis.
Hello and welcome to Equilibrium - a light version of a fluid simulator (written fully in Rust) and also my high school diploma thesis!
It is written using the egui library. The fluid simulator is based on the Jos Stam's paper from 2003 called "Real-Time Fluid Dynamics for Games". However, the current simulator is not real time and is CPU-based.
Sections:
- Dependencies
- Demo
- State / features
- Official Documentation (in Bulgarian only)
- Technical Documentation
- Vision
All the dependencies are described in the Cargo.toml
file. When the application is run by cargo r
they will be automatically fetched.
You can find a demonstration of the project on GitHub pages or on vkabadzhova.xyz. It is compiled to WASM.
- Scene (fluid simulation)
- only 2D simulation is supported;
- The colors of the fluid and the world around it can be altered;
- Obstacles can be set in the scene (only rectangle shapes are supported)
- Application
- Dark/Light theme
- Navigation through the simulation (Next, previous frame, scroll through the whole application)
- Configurations through the GUI:
- simulation settings: number of frames, speed of the simulation,
- fluid settings: diffusion, viscousity and colour,
- obstacles settings: add/remove/change shape of the obstacles
- viewport settings: zoom in/out
Note: the official documentation of the project is available only in Bulgarian. The translation is unofficial.
The official documentation is written in LaTex and can be found here, the home-brewed translation is available here.
- Chapter 1: Available research on the topic of simulating fluid dynamics;
- Chapter 2: Selecting the technology stack - the programming language and algorithms;
- Chapter 3: Implementation details;
- Chapter 4: User guide.
Typically, using the Rust's packet manager Cargo
a technical documentation can be generated via cargo d
or cargo d --open
if you want to open it directly.
The project as it is now is not production ready. It is designed on the grounds of educational interest in the field of computar graphics and the Rust programming language. In case you wish to contribute, please, feel free to do so by first reading the CONTRIBUTING.md
file.