bevy-sph

Crates.iobevy-sph
lib.rsbevy-sph
version0.1.0
created_at2025-02-01 23:07:17.781214+00
updated_at2025-02-01 23:07:17.781214+00
descriptionA Smoothed Particle Hydrodynamics (SPH) simulation using Bevy
homepage
repositoryhttps://github.com/AOS55/bevy-sph
max_upload_size
id1539066
size6,590,899
Alexander Quessy (AOS55)

documentation

README

Bevy SPH Simulator

A Smoothed Particle Hydrodynamics (SPH) fluid simulation implemented in Rust using the Bevy game engine. The simulation includes airfoil aerodynamics and real-time visualization capabilities. I built this to test Bevy's parallel processing capabilities.

Demo

Features

  • Real-time SPH fluid simulation
  • Interactive airfoil with configurable parameters
  • Multiple visualization modes:
    • Velocity field
    • Pressure distribution
    • Density field
  • Camera controls for panning and zooming
  • Particle pooling for efficient memory management
  • Spatial partitioning for optimized collision detection

Requirements

  • Rust
  • Cargo, installed with above Rust install.

Installation

Clone the repository and build with Cargo:

git clone https://github.com/AOS55/bevy-sph
cd bevy-sph
cargo build --release

Running Examples

The project includes two example simulations:

  1. Basic ball physics:
cargo run --example 1-ball_physics
  1. SPH Airfoil simulation:
cargo run --example 2-SPH_Airfoil

Controls

  • Arrow keys: Pan camera
  • +/- keys: Zoom in/out
  • Tab: Cycle through visualization modes (Velocity → Pressure → Density)

Configuration

The simulation parameters can be customized in lib.rs. Key parameters include:

  • Fluid properties (density, viscosity, etc.)
  • Particle properties (size, count, spawn rate)
  • Domain size and freestream velocity
  • Airfoil properties (angle of attack, chord length)

License

MIT OR Apache-2.0

Performance Notes

The simulation uses spatial partitioning and parallel processing for optimal performance. For best results, run in release mode:

cargo run --release --example 2-SPH_Airfoil
Commit count: 5

cargo fmt