boki1 / villy-s-equilibrium

A CPU-processed and grid-based fluid simulator built for my diploma thesis.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Equilibrium

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.

Fluid simulation video

Sections:

Dependencies

All the dependencies are described in the Cargo.toml file. When the application is run by cargo r they will be automatically fetched.

Demo

You can find a demonstration of the project on GitHub pages or on vkabadzhova.xyz. It is compiled to WASM.

Features

  • 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

Documentation

Note: the official documentation of the project is available only in Bulgarian.

What can you find in the documentation?

The official documentation is written in LaTex and can be found here.

  • Chapter 1: Research of what is available currently as reards simulating fluid dynamics;
  • Chapter 2: Selection of the technologies, the programming language, and the algorithms;
  • Chapter 3: Implementation details;
  • Chapter 4: User guide.

Technical Documentation

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. You can also find it in the Github Pages of the current project or at vkabadzhova.xyz.

Vision

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.

About

A CPU-processed and grid-based fluid simulator built for my diploma thesis.

License:MIT License


Languages

Language:Rust 100.0%