MATH450 Percolation: Final Report


Force Networks in Granular Systems

When relatively stationary granular media experience stress they behave similarly to a solid. From our own experiences walking on piles of riverbed rocks, we know they rigidly resist external forces. One is able to walk without falling right through, and typically, without much difficulty. However, unlike in a true solid, the compressive force is not resisted uniformly. Instead, the force is transferred along chains of particles that rest on each other. We are interested in the properties of how these force chains propagate as a function of force threshold and compression, given by their packing fraction, and the sensitivity of these results to additive noise.

Percolation Theory

Percolation theory studies the behavior of clusters or connections on a lattice and the thresholds at which they begin to cross it. In site percolation, a lattice is formed where each location is considered occupied with a certain independent probability, \(p\). If there exists a cluster of connected points such that they span across the lattice, the system is said to be percolating and any responsible cluster is called a percolating cluster. A main result of percolation theory is that a percolating cluster on an infinite lattice never forms before a critical value of \(p\), denoted \(p_{c}\). Additionally, finite lattices tend to approach this behavior rather quickly. (Stauffer 1985) Although the granular system we consider is not on a discrete lattice nor occupied by iid chosen sites we borrow terminology and investigative techniques from percolation theory. Our first priority is to determine the critical values of packing fraction, \(\sigma\), and force threshold, \(F_{t}\), at which spanning clusters begin to form.

Another common measure we will consider is the average cluster size, \(S(\sigma,F_{t})\). This considers weights the size of all non-percolating clusters.

\begin{equation} S(\sigma,F_{t})=\frac{\sum_{s}s^{2}n(s,\sigma,F_{t})}{\sum_{s}sn(s,\sigma,F_{t})}\nonumber \\ \end{equation}

where \(n(s,\sigma,F_{t})\) is the number of clusters of size \(s\). (Christensen 2013) Additionally, we will calculate the strength of a percolating network (the likelihood of a randomly chosen site belonging to a percolating cluster). \(R(\sigma,F_{t})=\frac{s(PercolatingCluster,\sigma,F_{t})}{N}\), where N is the total number of sites. These measures are considered because in classical percolation theory they exhibit a scaling behavior as \(|p-p_{c}|^{-\gamma}\) and \(|p-p_{c}|^{\beta}\) respectively.


We investigate numerical results generated by the simulations of non-cohesive particles described in (Kovalcinova 2015).

Calculating Percolation Probability and Strength

To calculate a percolation threshold, we first need to determine whether or not a system is percolating. For each of the possible directions of percolation(top-bottom, left-right) we get a starting set of particles that define one boundary and a target set of particles that define the other. As an example, to obtain the left boundary we search for the left most particle and form a starting set out of all particles within a horizontal threshold of that particle. For each particle in the starting set we then perform a depth first search for particles in the target set. This search follows the force connections given by the simulation file. To implement a force threshold, we only allow the search algorithm to move to particles when the total force on them exceeds a certain value.

Once we determine whether or not a certain snapshot is percolating at a given force threshold, we evaluate each of the 21 realizations given by Lenka over the space of packing fractions and force thresholds. These distributions containing percolating/not percolating are then used to calculate percolation probabilities, \(P(F_{t},\sigma)\), given as the expected value. As the particle grid is not infinite we do not calculate the percolation thresholds are the infimums of the sets [\(f_{t}\) \(|\) \(P(F_{t},\sigma)>0\)] and [\(\sigma\) \(|\) \(P(F_{t},\sigma)>0\)]. Instead we consider the boundary, [\(\sigma\), \(f_{t}\) \(|\) \(P(F_{t},\sigma)=0.5\)]

Calculating Clusters and Average Cluster Size

Calculating clusters is a very similar process to determining whether a domain contains a percolating cluster. Starting with a stack of every particle in the system, we pop a particle and do an exhaustive search, deleting what it encounters from the stack, and adding them to a cluster. When this set is exhausted the next particle is popped from the stack and a previous cluster is saved. From these clusters, the number of clusters of size \(s\), \(S\), and \(R\) can be calculated as above.

Adding Noise

The results from the particle simulations are perturbed in post processing by Group 1. After normalizing the forces in each snapshot, the basic way they edit the files are to introduced a uniform or normal variability to the force connections. From a specified noise level of \(x\) percent, they calculate the difference between at \(+x\) and \(-x\) percent of the mean force value and add random values centered in this range to each of the force connections. The noise is scaled off of the average force in each snapshot.

Our group edited the noise generating files to also produce noise scaled off of each force connection individually.

Force Balanced Noise