qiemem edited this page May 12, 2011 · 9 revisions

Welcome to the Sandpiles wiki!

Sandpiles simulates the Abelian Sandpile Model on arbitrary weighted digraphs. It is intended to be a research grade tool, designed to be flexible enough to meet most researchers’ needs, while being fast enough to compete with customized tools.


  • Cross-platform
  • Flexible graph editing environment for the creation of arbitrary weighted digraphs.
  • Built-in support for generating common graphs, such as lattices and honeycombs.
  • Flexible configuration editor to create, save, and add together arbitrary configurations.
  • Built-in support for common configurations such as:
    • Identity
    • Minimal Burning
    • Inverse
    • Max Stable
    • Random
  • Multiple visualization modes including:
    • Number of grains
    • Stability
    • Total Firings (useful for viewing avalanches)
    • Change in number of grains
  • 3D display mode
    • Uses height and color smoothing to reveal higher level structure.
  • OpenGL for fast rendering
  • Fast, intelligent update algorithm
  • Allows for remote connection from other programs for parallel methods of analysis.
    • Python and Sage bindings
    • Enables flexible statistics collection
    • Enables the simulation of general algorithmically generated graphs.
  • Takes advantage of graph adjacency structure to decrease memory footprint and increase performance.

Sandpile Rules

The rules of the sandpile model are very simple:

A graph is made up of sites (called vertices) connected to each other by arrows (called edges). A vertex’s degree is the number of arrows pointing from that vertex to any of the other vertices. If a vertex has multiple edges (say 5) pointing from itself to another vertex, we say that it has a single edge of weight 5 pointing to the other vertex.

Each vertex can have any number of grains of sand on it. If the number of grains is the same as or greater than the degree, d, of the vertex, then the vertex loses d grains and each of its neighbors gains grains equal to the weight of the edge of from the vertex to the neighbor. From this rule, all sorts of crazy complexity ensues!

Comments, Questions, Feature Requests, Bug Reports

Don’t hesitate to email me (Bryan) at bryan.head@gmail.com or Dave Perkinson. Bug reports and comments concerning the technical aspects of the program should be directed to me (Bryan).

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.