How ceschmiedel/cfd_ works
CFD2026 is a browser-based 3D wind-tunnel simulator. The user selects a resolution and backend, loads a model, and the app parses and prepares its geometry, voxelizes it into the tunnel, and advances a D3Q19 Lattice-Boltzmann simulation on the GPU. Results drive the visualization and, after sufficient flow-through and samples, a printable run report. The graph preserves both WebGPU and WebGL2 paths and their shared physics-generation layer. The README documents the main workflow and capabilities; several connections are based on that documentation because the browser entry point and geometry-preparation sources were not sampled.
Main entry points: index.html Browser interface · ir.js Shared physics IR · webgpu/solver.js WebGPU solver · webgl2/solver.js WebGL2 solver
Components 19
Browser app
- Browser interface
index.html - Backend and presets
src/backend/caps.js
Geometry pipeline
- Mesh parsing
src/geom/parse.js - Geometry preparation
src/geom/prepare.js - Tunnel voxelization
src/geom/voxel.js
Simulation
- Physical units
src/core/units.js - Lattice and collision
src/core/lattice.js - Force calculation
src/core/forces.js - Shared physics IR
src/core/emit/ir.js - WGSL generation
src/core/emit/wgsl.js - GLSL generation
src/core/emit/glsl.js - WebGPU solver
src/backend/webgpu/solver.js - WebGL2 solver
src/backend/webgl2/solver.js
Visualization and reporting
- Scene renderer
src/render/renderer.js - Volumetric smoke
src/render/fumaca.js - WebGL2 renderer
src/render/webgl2/renderer.js - Run report
src/relatorio.js
Other components
- User
- Browser GPU
Connections 23
- User → Browser interface: selects and loads
- Browser interface → Backend and presets: probes capabilities
- Browser interface → Mesh parsing: loads model
- Mesh parsing → Geometry preparation: parsed mesh
- Geometry preparation → Tunnel voxelization: prepared geometry
- Browser interface → Physical units: sets run parameters
- Browser interface → Tunnel voxelization: provides tunnel geometry
- Browser interface → WebGPU solver: dispatches selected solver
- Browser interface → WebGL2 solver: dispatches selected solver
- Physical units → WebGPU solver: configures run
- Physical units → WebGL2 solver: configures run
- Lattice and collision → Shared physics IR: supplies physics
- Force calculation → Shared physics IR: supplies force logic
- Shared physics IR → WGSL generation: generates dialect
- Shared physics IR → GLSL generation: generates dialect
- WebGPU solver → WGSL generation: requests shaders
- WebGL2 solver → GLSL generation: requests shaders
- WebGPU solver → Browser GPU: runs compute
- WebGL2 solver → Browser GPU: runs shader passes
- Browser interface → Scene renderer: renders simulation
- Browser interface → WebGL2 renderer: renders WebGL2
- Scene renderer → Volumetric smoke: renders smoke
- Browser interface → Run report: generates run report