How arekebyu/fluidsim works
Fluid simulation compares a pseudo-spectral Navier–Stokes solver with a Fourier Neural Operator (FNO), through a WebAssembly demo and a CPU training workflow. In the demo, a user selects resolution and checkpoint or perturbs the field; the browser drives the WebSimulator, which advances both methods and exposes render and error views. Training generates solver trajectories, fits the FNO, and saves weights and metadata. The graph preserves documented dataset generation and training stages; some module wiring is inferred only where the README describes it, since those implementations were not sampled.
Main entry points: lib.rs WebSimulator API · training.rs Training loop · data.rs Trajectory dataset · index.js Demo controls
Components 15
Interactive demo
- Demo controls
frontend/index.js - WebSimulator API
src/lib.rs - Comparison renderer
src/lib.rs
Fluid physics
- Navier–Stokes solver
src/solver.rs - Initial conditions
src/fno/initialization.rs
FNO learning
- Model checkpoints
models - Fourier Neural Operator
src/fno/mod.rs - FNO layers
src/fno/layers.rs - Training command
src/bin/train.rs - Trajectory dataset
src/fno/data.rs - Training loop
src/fno/training.rs
Numerical foundations
- Autodiff engine
src/fno/backprop/graph.rs - Differentiable FFT
src/fno/backprop/fft_traced.rs - FFT routines
src/calculations/fft.rs
Other components
- Demo user
Connections 19
- Demo user → Demo controls: configures
- Demo controls → WebSimulator API: controls
- WebSimulator API → Model checkpoints: loads preset
- WebSimulator API → Initial conditions: generates fields
- WebSimulator API → Navier–Stokes solver: advances physics
- WebSimulator API → Fourier Neural Operator: predicts field
- WebSimulator API → Comparison renderer: renders fields
- Comparison renderer → Demo controls: provides RGBA buffer
- Training command → Trajectory dataset: generates data
- Trajectory dataset → Initial conditions: samples conditions
- Trajectory dataset → Navier–Stokes solver: advances trajectories
- Training command → Training loop: trains model
- Training loop → Fourier Neural Operator: optimizes
- Training loop → Trajectory dataset: fits trajectories
- Training loop → Model checkpoints: writes weights
- Fourier Neural Operator → FNO layers: applies
- FNO layers → Differentiable FFT: transforms spectra
- Differentiable FFT → Autodiff engine: records operations
- Navier–Stokes solver → FFT routines: computes spectra