Depth-averaged models replace boulders and water by one continuum. GranumFL keeps the grains as discrete elements and the water as SPH particles, so the boulders that dam a channel, the pore water that drains from a deposit and the erosion of a bed all come out of the physics.
⇄
Unresolved DEM–SPH coupling
The locally averaged formulation of Robinson, Ramaioli and Luding (2014): grains smaller than the smoothing length, a porosity field, Di Felice drag and −V∇P on each grain, with the exchanged momentum balanced to round-off.
▦
Both phases on one GPU
CUDA kernels compiled at run time with NVRTC (sm_120 included). The water reads the grains from the DEM buffers on the device, so a coupled step moves no particle data to the host. The same algorithm runs on the CPU in double precision.
⛰
Real terrain in a few clicks
Open a GeoTIFF or ESRI grid, or download the Copernicus GLO-30 tile of a latitude and longitude, crop, resample and cut. WGS 84 and UTM read from the file.
◎
Hazard maps and place records
Debris thickness, erosion and deposit, peak speed, flood depth by volume, runout and travel angle, and records at named places (thickness, speed, water depth, ρv²), as PNG maps or ESRI grids for GIS.
✦
An agent can drive it
A Model Context Protocol server built into the program. The in-app agent or any MCP client sets up the site, checks the warnings, runs or exports the case and reads the results.
☁
Large cases on a GPU server
Export a case for a CUDA server, run it with one command and load its results folder back into the app. A million grains over 150 s of flow ran in 63 min on one RTX 5090.