We have seen how we can characterize clusters by their mass, s. As p approaches \(p:c\), the typical cluster size s increases as well as the characteristic cluster diameter. In this chapter we will discuss the geometry of clusters, and by geometry we will mean how the number of sites in a cluster is related to the linear size of the cluster. We will introduce several measures to characterize the spatial extent, the characteristic radius \(R:s\), of clusters of size s. We will measure \(R:s\) to motivate that it is proportional to \(s^1/D\), where D is a new exponent characterizing the dimension of clusters. We will demonstrate that the percolation system is characterized by two lengths, the system size L and a characteristic cluster size \(\xi \), and that the system shows fractal, self-similar scaling when the characteristic length diverges. We develop scaling theories for \(P(s,L)\) for \(p>p_c\) and lay the foundations for a geometrical understanding and description of the spanning cluster.

5.1 Geometry of Finite Clusters

We have so far studied the clusters in our model porous material, the percolation system, through the distribution of cluster sizes, \(n(s,p)\), and properties that can be found from \(n(s,p)\), such as the average cluster size, S and the characteristic cluster size, \(s_{\xi }\). However, clusters with the same mass, s, can have very different shapes. Figure 5.1 illustrates three clusters all with \(s = 20\) sites. Notice that the linear and the compact clusters are unlikely, but possible realizations. How can we characterize the spatial extent of these clusters?

Fig. 5.1
An illustration of three clusters of shaded squares on a grid. Each cluster is encircled by a circle with a plus sign at the center, indicating the radius of gyration.

Illustrations of three clusters all with \(s = 24\). The red circle illustrates the radius of gyration for the clusters

There are many ways to define the extent of a cluster. We could, for example, define the maximum distance between any two points in a cluster i (\(R_{\max ,i}\)) to be the extent of the cluster, or we could use the average distance between two points in the cluster. However, it is common to use the standard deviation of the position of the sites in a cluster, which we recognize as the radius of gyration of a cluster. The radius of gyration \(R:i\) for a cluster i of size \(s:i\) with sites at \({\mathbf {r}}_j\) for \(j = 1, \ldots , s_i\), is defined as

$$\displaystyle \begin{aligned} R_i^2 = \frac{1}{s_i} \sum_{j=1}^{s_i} \left( {\mathbf{r}}_j - {\mathbf{r}}_{cm,i} \right)^q \; , \end{aligned} $$
(5.1)

where \({\mathbf {r}}_{cm,j}\) is the center of mass of cluster i. The values for \(R:i\) of the clusters in Fig. 5.1 are illustrated by circles.

As we see from Fig. 5.1, clusters of the same size s can have different radii. How can we then find a characteristic size for a given cluster size s? We find that by averaging \(R:i^2\) over all clusters of the same size s:

$$\displaystyle \begin{aligned} R^2_s = \langle R^2_i \rangle_i \; . \end{aligned} $$
(5.2)

Let us see how this can be done analytically in one dimension and numerically in two dimensions.

5.1.1 Analytical Results in One Dimension

We can use the one-dimensional percolation system to gain insight into how we expect \(R:s\) to depend on s. In one dimension, a cluster of size s can only be realized in one way, as a line of length s. If the cluster runs from 1 to s, the center of mass is at \(s/2\), and the sum over all sites runs from 1 to s:

$$\displaystyle \begin{aligned} R^2_s = \frac{1}{s} \sum_{i=1}^{s} (i-s/2)^2 \; , \end{aligned} $$
(5.3)

where we assume that s is so large that we only need to address the leading term in s, and that we do not have to treat even and odd s separately. This can be expanded to

$$\displaystyle \begin{aligned} R^2_s = \frac{1}{s} [\sum_{i=1}^{s} i^2 - is + \frac{s^2}{4}] = \frac{1}{s} \left[\frac{s(s+1)(2s+1)}{6} - s\frac{s(s+1)}{2} + s \frac{s^2}{4} \right] \propto s^2 \; , \end{aligned} $$
(5.4)

where we have used that \(\sum _{i=1}^s s^2 = s(s+1)(2s+1)/6\) and \(\sum _{i=1}^s s = s(s+1)/2\) and where we only have kept the leading term in s. This shows that \(R_s^2 \propto s^2\), which means that \(s \propto R_s\) in one dimension. This is indeed what we expected. The extent of the cluster is proportional to s because the cluster is s sites long.

5.1.2 Numerical Results in Two Dimensions

For the one-dimensional system we found that \(s \propto R_s\). How does this generalize to higher dimensions? We start by measuring the behavior for a given value of p for a finite system of size L. Our strategy is: (i) to generate clusters on a \(L \times L\) lattice; (ii) for each cluster, i, of size \(s:i\), we will find the center of mass and the radius of gyration, \(R:i^2\); and (iii) for each value of s we will find the average radius, \(R:s^2\), by a linear average. For larger values of s we will collect the data in bins, using the logaritmic binning approach we developed to measure \(n(s,p)\).

Developing a Function to Measure \(R:s\)

First, we introduce a function to calculate the radius of gyration of all the clusters in a lattice. This is done in two steps, first we find the center of mass of all clusters, and then we find the radius of gyration. The center of mass for a cluster i with sites at \({\mathbf {r}}_{i,j}\) for \(j = 1, \ldots , s_i\), is

$$\displaystyle \begin{aligned} {\mathbf{r}}_{cm,i} = \frac{1}{s_i} \sum_{j=1}^{s_i} {\mathbf{r}}_{i,j} \; , \end{aligned} $$
(5.5)

We generate a lattice, ensure that each cluster are marked with the index of the cluster, and find the center of mass cm using a built-in command:

Second, we calculate the radius gyration by running through all the sites ix,iy in the lattice. For each site, we find the index i of the cluster that it belongs to from i = lw[ix,iy]. If the site belongs to a cluster, that is if i>0, we add the sum of the square of the distance from the site to the center of mass to the radius of gyration for cluster i:

After running through all the site, we divide by the mass (size) \(s:i\) of each cluster to find the radius of gyration according to the formula

$$\displaystyle \begin{aligned} R^2_i = \frac{1}{s_i} \sum_{j = 1}^{s_i} \left( {\mathbf{r}}_{i,j} - {\mathbf{r}}_{cm,i} \right)^2 \; , \end{aligned} $$
(5.6)

This is implemented in the following function:

We use this function to calculate the average radius of gyration for each cluster size s for M different lattice realizations, and plot the results using the following script:

Scaling Behavior of the Radius of Gyration

The resulting plots for several values of p are shown in Fig. 5.2. We see that there is an approximately linear relation between \(R:s^2\) and s in this double-logarithmic plot, which indicates that there is a power-law relationship between the two:

$$\displaystyle \begin{aligned} R_s^2 \propto s^x \; . {} \end{aligned} $$
(5.7)
Fig. 5.2
A line graph plots R superscript 2 subscript s versus s. The graph has five lines labeled p equals 0.40, 0.45, 0.50, 0.55, and 0.59 marked from the bottom left to the top right with varying lengths. P equals 0.40 is the shortest line and p equals 0.59 is the longest line.

Plot of \(R:s^2\) as function of s for simulations on two-dimensional systems with \(L = 400\). The largest cluster for each value of p is illustrated by a circle. The dotted line shows the curve \(R_s^2 \propto s^{2/D}\) for \(D = 1.89\)

How can we interpret this relation? Equation (5.7) relates the radius \(R:s\) and the area (or mass) of the cluster. We are more used to the inverse relation:

$$\displaystyle \begin{aligned} s \propto R_s^{D} \; , {} \end{aligned} $$
(5.8)

where \(D = 2/x\) is the exponent relating the radius to the mass of a cluster. This corresponds to our intuition from geometry. We know that for a cube of size L, the mass (or volume) of the cube is \(M = L^3\). For a square of length L, the mass (or area) is \(M = L^2\), and similarly for a circle \(M = \pi R^2\), where R is the radius of the circle. For a line of length L, the mass is \(M = L^1\). We see a general trend, \(M \propto R^d\), where R is a characteristic length for the object, and d describes the dimensionality of the object. If we extend this intuition to the relation in (5.8), which is an observation based on Fig. 5.2, we see that we may interpret D as the dimension of the cluster. However, the value of D is not an integer. We have indicated the value of \(D = 1.89\) with a dotted line in Fig. 5.2. This non-integer value of D may seem strange, but it is fully possible, mathematically, to have non-integer dimensions. This is a feature frequently found in fractal structures, and percolation clusters as p approaches \(p:c\) are indeed good examples of self-similar fractals. We will return to this aspect of the geometry of the percolation system in Sect. 5.3.

Characteristic Cluster Radius

The largest cluster and its corresponding radius of gyration is indicated by a circle for each p value in Fig. 5.2. We see that as p approaches \(p:c\), both the mass and the radius of the largest cluster increases. Indeed, this corresponds to the observation we have previously made for the characteristic cluster size, \(s_{\xi }\). We may define a corresponding characteristic cluster radius, \(R_{s_{\xi }}\) through

$$\displaystyle \begin{aligned} s_{\xi} \propto R_{s_{\xi}}^D \quad \iff \quad R_{s_{\xi}} \propto s_{\xi}^{1/D} \; . {} \end{aligned} $$
(5.9)

This length is a characteristic length for the system for a given value of p, corresponding to the largest cluster size or the typical cluster size in the system. In Sect. 5.2 we see how we can relate this length directly to the cluster size distribution.

5.1.3 Scaling Behavior in Two Dimensions

We have already found that the characteristic cluster size \(s_{\xi }\) diverges as a power law as p approaches \(p:c\):

$$\displaystyle \begin{aligned} s_{\xi} \simeq s_0 \left( p - p_c \right)^{-1/\sigma} \; , \end{aligned} $$
(5.10)

when \(p < p_c\). The behavior is similar when \(p > p_c\), but the prefactor \(s:0\) may be different. How does \(R_{s_{\xi }}\) behave when p approaches \(p:c\)? We can find this by combining the scaling relations for \(s_{\xi }\) and \(R_{s_{\xi }}\) from (5.9):

$$\displaystyle \begin{aligned} R_{s_{\xi}} \propto s_{\xi}^{1/D} \propto \left( \left( p - p_c \right)^{-1/\sigma} \right)^{1/D} \propto \left( p - p_c \right)^{-1/\sigma D} \; , \end{aligned} $$
(5.11)

where we introduce the symbol \(\nu = 1/(\sigma D)\). For two-dimensional percolation, the exponent \(\nu \) is a universal number, just like \(\sigma \) and D. By universal, we mean that it does not depend on details such as the lattice type or the connectivity of the lattice, although it does depend on the dimensionality of the system. We know the exact value of \(\nu \) in two dimensions, \(\nu = 4/3\).

The argument we have provided here is an example of a scaling argument. In these arguments we are only interested in the exponent in the scaling relation, which gives us the functional form, and not in the values of the prefactors.

5.2 Characteristic Cluster Size

We have now defined the characteristic size of a cluster of size s through \(R:s\). In addition, we introduced a characteristic cluster length \(R_{s_{\xi }}\), which characterizes the whole system and not only clusters of a particular size s. However, there are several ways we can introduce a length scale to describe the typical cluster size in a system. Here, we will introduce two such measures, the average radius of gyration R and the characteristic length \(\xi \).

5.2.1 Average Radius of Gyration

We have now defined the characteristic length \(R_{s_{\xi }}\) through the definition of the characteristic cluster size, \(s_{\xi }\), and the scaling relation \(s \propto R_s^D\). However, it may be more natural to define the characteristic length of the system as the average radius and not the cut-off radius. We introduced the radius of gyration for clusters of size s by averaging the radius of gyration \(R:i\) over all clusters i of size s:

$$\displaystyle \begin{aligned} R_s^2 = \langle R_i^2 \rangle_i \; , \end{aligned} $$
(5.12)

This gives us the radius of gyration \(R:s\), which we found to scale with cluster mass s as \(s \propto R_s^D\).

Introducing an Average Cluster Radius

For the cluster sizes, we introduced an average cluster size S, which is

$$\displaystyle \begin{aligned} S = \frac{1}{Z_S} \sum_s s \, s n(s,p) \; , \; Z_S = \sum_s s n(s,p) \; . \end{aligned} $$
(5.13)

We can also similarly introduce an average radius of gyration, R, by averaging \(R:s\) over all cluster sizes:

$$\displaystyle \begin{aligned} R = \frac{1}{Z_R} \sum_s R_s^2 s^k s n(s,p) \; , \; Z_R = \sum_s s^k s n(s,p) \; . \end{aligned} $$
(5.14)

Here, we have purposely introduced an unknown exponent k. We are to some extent free to choose this exponent, although the average needs to be finite, and the exponent will determine how small and large clusters are weighed in the sum. A natural choice may be to choose \(k=1\) so that we get terms \(R_s^2 s^2 n(s,p)\) in the sum. However, the results we present here will not change in any significant way, expect for different prefactors to the scaling relations, if you choose a larger value of k. Using \(k=1\), we define the average radius of gyration to be

$$\displaystyle \begin{aligned} R = \frac{1}{Z_R} \sum_s R_s^2 s^2 n(s,p) \; , \; Z_R = \sum_s s^2 n(s,p) \; , \end{aligned} $$
(5.15)

where we notice that the normalization sum \(Z:R\) is the average cluster size, S, \(Z_R = S\). Figure 5.3 shows a plot of the average R as a function of p for various systems sizes L. We see that R diverges as p approaches \(p:c\). How can we develop a theory for this behavior?

Fig. 5.3
A line graph plots R of p versus p. The graph has four bell-shaped curves labeled L equals 64, 128, 256, and 512, each representing a different data series. The curves peak near (0.6, 0) with the highest peak by L equals 512 and the lowest peak by L equals 64.

A plot of the average radius of gyration R as a function of p and L. We observe that R increases as \(p \rightarrow p_c\), but is limited in magnitude by the finite system size L

A Scaling Form for R

We know that the cluster number density \(n(s,p)\) has the approximate scaling form

$$\displaystyle \begin{aligned} n(s,p) = s^{-\tau} F\left( s /s_{\xi} \right) \; , \; s_{\xi} \propto \left| p - p_c \right|^{-1/\sigma} \; . \end{aligned} $$
(5.16)

We can use this to calculate the average radius of gyration, R, when p is close to \(p:c\). We find the scaling behavior of the average radius of gyration by replacing the sums over s with integrals over s:

$$\displaystyle \begin{aligned} \begin{array}{rcl} R^2 & =&\displaystyle \frac{\sum_s R_s^2 s^2 n(s,p)}{\sum_s s^2 n(s,p)} = \frac{\int_1^{\infty} R_s^2 s^{2-\tau} F(s/s_{\xi}) \, \mathrm{d} s}{\int_1^{\infty} s^{2 -\tau} F(s/s_{\xi}) \, \mathrm{d} s} \end{array} \end{aligned} $$
(5.17)
$$\displaystyle \begin{aligned} \begin{array}{rcl} & \propto&\displaystyle \frac{\int_1^{\infty} s^{2/D} s^{2-\tau} F(s/s_{\xi}) \, \mathrm{d} s}{\int_1^{\infty} s^{2 -\tau} F(s/s_{\xi}) \, \mathrm{d} s}\; , {} \end{array} \end{aligned} $$
(5.18)

where we have inserted \(R_s^2 \propto s^{2/D}\). While this expression only is valid when \(s < s_{\xi }\), we can apply it here since \(F(s/s_{\xi })\) goes rapidly to zero when \(s > s_{\xi }\), and therefore only the \(s < s_{\xi }\) values will contribute significantly to the integral. We change variables to \(u = s/s_{\xi }\), getting:

$$\displaystyle \begin{aligned} \begin{array}{rcl} R^2 & \propto&\displaystyle \frac{s_{\xi}^{2/D + 3 - \tau} \int_{1/s_{\xi}}^{\infty} u^{2/D+2-\tau} F(u) \, \mathrm{d} u}{s_{\xi}^{3-\tau} \int_{1/s_{\xi}}^{\infty} u^{2 - \tau}F(u) \, \mathrm{d} u} \end{array} \end{aligned} $$
(5.19)
$$\displaystyle \begin{aligned} \begin{array}{rcl} & \propto&\displaystyle s_{\xi}^{2/D} \frac{\int_{0}^{\infty} u^{2/D+2-\tau} F(u) \, \mathrm{d} u} {\int_{0}^{\infty} u^{2 - \tau}F(u) \, \mathrm{d} u} \propto s_{\xi}^{2/D} \; , \end{array} \end{aligned} $$
(5.20)

where the lower limit \(1/s_{\xi }\) goes to zero for large \(s_{\xi }\) and the two integrals over \(F(u)\) simply are numbers and therefore have been included in the constant of proportionality.

The Characteristic Lengths Are Proportional

This shows that \(R^2 \propto s_{\xi }^{2/D}\). We found above that \(R_{s_{\xi }} \propto s_{\xi }^{2/D}\). Therefore, \(R \propto R_{s_{\xi }}\)! These two characteristic lengths therefore have the same behavior. They are only different by a constant of proportionality, \(R = c\, R_{s_{\xi }}\). We can therefore use either length to characterize the system—they are effectively the same up to a prefactor. This is not only true for these two lengths, but all lengths have the same asymptotic scaling behavior close to \(p:c\). For example, Fig. 5.4 illustrates the radius of gyration of the largest cluster with a circle and the average radius of gyration, R, by the length of the side of the square. As p increases, both the maximum cluster size and the average cluster size increases in concert.

Fig. 5.4
An illustration of three panels of dot clusters. Each panel has a large cluster highlighted with a circle and a square. The clusters grow with an increase in the value of p.

Illustration of the largest cluster in \(512 \times 512\) systems for \(p=0.55\), \(p=0.57\), and \(p = 0.59\). The circles illustrate the radius of gyration of the largest cluster, and the boxes show the size of the average radius of gyration, \(R = \langle R_s \rangle \). We observe that both lengths increase approximately proportionally as p approaches \(p:c\)

5.2.2 Correlation Length

We can also define the typical size of a cluster from the correlation function. We recall that the correlation function \(g(r,p)\) is the probability that an occupied site i at \({\mathbf {r}}_i\) is connected to a site j at \({\mathbf {r}}_j\), where \(\mathbf {r} = {\mathbf {r}}_j - {\mathbf {r}}_i\) and \(r = |\mathbf {r}|\). The correlation function is only a function of the relative position of the two sites, \(\mathbf {r}\), which we usually only write as r, because we assume that the correlation function is isotropic. We define the correlation length, \(\xi \), as the average squared distance between two connected sites:

$$\displaystyle \begin{aligned} \xi^2 = \frac{\sum_{\mathbf{r}} r^2 g(r;p)}{\sum_{\mathbf{r}} g(r;p)} \; . \end{aligned} $$
(5.21)

where the sum is over all relative positions \(\mathbf {r}\), that is, over all space. The denominator is a normalization sum, which corresponds to the average cluster size, S. This length is called the correlation length. However, to gain insight into this length, we will first address the correlation function, its scaling behavior and its relation to the average cluster size S.

One-Dimensional System

In Chap. 2 we found that for a one-dimensional system, the correlation function \(g(r;p)\) is

$$\displaystyle \begin{aligned} g(r) = p^r = e^{-r/\xi} \; , \end{aligned} $$
(5.22)

where \(\xi = -\frac {1}{\ln p} = \simeq 1/(1-p_c)\) is called the correlation length. The correlation length diverges as \(p \rightarrow p_c = 1\) as \(\xi \simeq ( 1 - p_c)^{-\nu }\), where \(\nu = 1\).

We can generalize this behavior by writing the correlation function in a more general scaling form for the one-dimensional system

$$\displaystyle \begin{aligned} g(r;p) = r^0 f(r/\xi) \; , \end{aligned} $$
(5.23)

where \(f(u)\) is a function that decays rapidly when u is larger than 1. We will assume that this behavior can be generalized to higher dimension. That is, we expect the correlation function to decay rapidly beyond a length, \(\xi \), that corresponds to the typical extent of clusters in the system.

Measuring the Correlation Function

For a two- or three-dimensional system, we cannot find the exact form of the correlation function, like we could in one dimension. However, we can still measure it from our simulations, although such measurements typically are computationally intensive. How can we measure it? We can loop through all sites i and j and find their distance \(r:{ij}\). We estimate the probability for two sites at a distance \(r:{ij}\) to be connected by counting how many of the sites that are a distance \(r:{ij}\) apart that are connected and compare it to how many sites in total that are a distance \(r:{ij}\) apart. This is done through the following program, which returns the correlation function g(r) estimated for a lattice lw which contains the cluster indexes for each site, similar to what is returned by the lw, num = measurements.label(m) command. We write a subroutine perccorrfunc to find the correlation function for a given lattice lw, and then we use this function to find the correlation function for several values of p and L:

Figure 5.5 shows the resulting plots of the correlation function \(g(r;p)\) for various values of p for an \(L = 400\) system. First, we notice that the scaling is rather poor. We will understand this as we develop a theory for \(g(r;p)\) below. The plot shows that there also in two dimensions appear to be a cross-over length \(\xi \), which we call the correlation length, beyond which the correlation function falls rapidly to zero. For \(r < \xi \) the correlation function appears to approximately be a power-law. Based on our experience with percolation systems, we suggests the following functional form

$$\displaystyle \begin{aligned} g(r;p) = r^{-x} f(r / \xi) \; , {} \end{aligned} $$
(5.24)

where the cross-over function \(f(u)\) falls rapidly to zero when \(u >1\) and is approximately constant when \(u<1\). We expect that as p approaches \(p:c\), the correlation length \(\xi \) grows to infinity, and the correlation function \(g(r;p:c)\) approaches a power-law \(r^{-x}\) for all values of r up to a length limited by the system size L.

Fig. 5.5
A scatter and line graph plots g of r semicolon p versus r for 3 points labeled p = 0.57, p = 0.58, p = 0.59, from the top left with slow fall to the bottom right with a sharp decline, and a slant line of r power negative eta from the top left to the top right.

A plot of \(g(r;p)\) as a function of r for various values of p. When p approaches \(p:c\) the function approaches a power-law behavior \(g(r) \propto r^{-\eta }\), which is illustrated by a dashed line with \(\eta = 0.208\). Notice the rapid cross-over for large r, which occurs at a characteristic length \(\xi \)

Relating the Correlation Function to \(S(p)\)

Based on these observations, we are motivated to develop a theory for the behavior of the correlation function. Our plan is first to relate the correlation function \(g(r;p)\) to the average cluster size \(S(p)\) and then use what we know about the behavior of \(S(p)\) to determine the behavior of \(g(r;p)\).

How can we relate \(g(r;p)\) to \(S(p)\)? We notice that \(S(p)\) is the average number of sites in a cluster, that is, the average number of sites connected to a given occupied site. We can therefore find \(S(p)\) by summing the probability for a site to be connected for all possible relative positions \(\mathbf {r}\):

$$\displaystyle \begin{aligned} S(p) = \sum_{\mathbf{r}} g(r;p) \; . \end{aligned} $$
(5.25)

We approximate the sum by an integral:

$$\displaystyle \begin{aligned} S(p) = \sum_{\mathbf{r}} g(r;p) \simeq \int g(r) \, \mathrm{d} r^d \; , \end{aligned} $$
(5.26)

where the integral is over a volume in space corresponding to all relative positions \(\mathbf {r}\). We change integration variables to the radial distance r and the solid angle \(\varOmega \)

$$\displaystyle \begin{aligned} S(p) \simeq \int g(r) \mathrm{d} r^d = \int \int g(r) r^{d-1} \, \mathrm{d} r \, \mathrm{d} \varOmega \; , {} \end{aligned} $$
(5.27)

where the integral is from \(r=0\) to \(r\rightarrow \infty \) and over all solid angles \(\varOmega \).

Average Cluster Size at \(p:c\)

We know that when \(p \rightarrow p_c\), then the average cluster size, S, diverges. At \(p=p:c\), the scaling form for the correlation function in (5.24) is \(g(r;p) \propto r^{-x}\). The condition that the integral in (5.27) must diverge therefore provides bounds for the exponent x:

$$\displaystyle \begin{aligned} S(p_c) \simeq \int \int r^{-x}r^{d-1} \, \mathrm{d} r \, \mathrm{d} \varOmega = c \int_1^{\infty} r^{-x+d-1}\mathrm{d} r \; . \end{aligned} $$
(5.28)

This integral diverges when \(-x+d>0\), that is, for \(x<d\). It is common to introduce an exponent \(\eta \) so that \(x=(d-2+ \eta )\). The condition for \(S(p:c)\) to diverge is then \(2 - \eta > 0\). The correlation function at \(p:c\) is then:

$$\displaystyle \begin{aligned} g(r;p_c) \propto r^{-(d-2)-\eta} \; . \end{aligned} $$
(5.29)

This is consistent with what we found for the one-dimensional system where \(x = 0\) and \(\eta = 1\).

Finding \(S(p)\) for p below \(p:c\)

We use the scaling form of \(g(r;p)\) in (5.24) to calculate the integral in (5.27) for \(p<p:c\):

$$\displaystyle \begin{aligned} S(p) \simeq \int \int r^{-(d-2)-\eta} f(\frac{r}{\xi}) r^{d-1} \, \mathrm{d} r \, \mathrm{d} \varOmega = c \int_1^{\infty} r^{1-\eta} f(\frac{r}{\xi}) \, \mathrm{d} r \; . \end{aligned} $$
(5.30)

We change variables by introducing \(u = r/\xi \) and realize that \(f(u)\) is approximately a constant for \(u <1\) and zero for \(u>1\). We therefore use 1 as the upper limit for the integral since \(f(u)\) rapidly goes to zero beyond \(u=1\).

$$\displaystyle \begin{aligned} S(p) \simeq c \int_{1/\xi}^{\infty} \xi^{2-\eta} u^{1-\eta}f(u) \, \mathrm{d} u = c \xi^{2-\eta} \int_{1/\xi}^{1} u^{1-\eta} \, \mathrm{d} u = c \xi^{2-\eta} (1 - \xi^{-(2 - \eta)}) \, . \end{aligned} $$
(5.31)

Because \(2-\eta >0\), we see that \(\xi ^{-(2- \eta )}\) approaches zero as p approaches \(p:c\) and \(\xi \) grows. The right-hand term is therefore approximately 1, and we get:

$$\displaystyle \begin{aligned} S(p) \propto \xi^{2-\eta} \; . \end{aligned} $$
(5.32)

We also know that \(S(p) \propto |p - p_c|^{-\gamma }\) so that

$$\displaystyle \begin{aligned} S(p) \propto \xi^{2- \eta}\propto |p - p_c|^{-\gamma} \quad \Rightarrow \quad \xi \propto |p - p_c|^{-\gamma/(2 - \eta)} = |p - p_c|^{-\nu} \; , \end{aligned} $$
(5.33)

where we have introduced a new critical exponent, \(\nu \), and related it to other exponents through \(\nu = \gamma /(2 - \eta )\). For percolation in two dimensions, \(\nu = 4/3\), whereas in three dimensions it is \(\nu = 0.9\).

Finding the Correlation Length from \(n(s,p)\)

The correlation length \(\xi \) can be found from the correlation function by

$$\displaystyle \begin{aligned} \xi^2 = \frac{\sum_{\mathbf{r}}r^2 g(r)}{\sum_{\mathbf{r}}g(r)} \; , {} \end{aligned} $$
(5.34)

where \(\sum _{\mathbf {r}} g(r) = S(p)\). You can check this by inserting \(g(r) = r^{-(d-2)-\eta } f(r/\xi )\) and calculating the integral.

We recall that the average radius of gyration is

$$\displaystyle \begin{aligned} R^2 = \frac{\sum_s R_s^2 s^2 n(s,p)}{\sum_s s^2 n(s,p)} \; , \end{aligned} $$
(5.35)

averaged over all clusters of size i. Here, \(\sum _s s^2 n(s,p) = S(p)\). Notice the similarity between these two definitions. This indicates that the correlation length can be defined in terms on \(n(s,p)\). The common definition is

$$\displaystyle \begin{aligned} \xi^2 = \frac{\sum_s 2 R_s^2 s^2 n(s,p)}{\sum_s s^2 n(s,p)} = 2 R^2 \; . \end{aligned} $$
(5.36)

The important aspect is that the two lengths \(\xi \) and R are proportional to each other. And we already round that \(R \propto R_{s_{\xi }}\). This means that they all have the same scaling behavior as p approaches \(p:c\). This means that

$$\displaystyle \begin{aligned} \xi \propto |p - p_c|^{-\gamma/(2- \eta)} \propto |p - p_c|^{-\nu} \propto R_{s_{\xi}} \propto |p-p_c|^{-1/\sigma D} \; . \end{aligned} $$
(5.37)

This gives us the scaling relation for \(\eta \): \(\eta = 2 - \gamma \sigma D\).

Correlation Length All the lengths R, \(R_{s_{\xi }}\) and \(\xi \) has the same scaling behavior.

The correlation length \(\xi \) scales as

$$\displaystyle \begin{aligned} \xi \propto |p - p_c|^{-\nu} \quad \text{when} \quad p \rightarrow p_c \; , \end{aligned} $$
(5.38)

with the exponent \(\nu = 1/(\sigma D) = \gamma /(2-\eta )\). For a two-dimensional system, \(\nu _{2d} = 4/3\), and for a three-dimensional system, \(\nu _{3d} = 0.9\).

The Characteristic Length \(\xi \) and System Size L

What happens to \(\xi \) in a finite system as p approaches \(p:c\)? Figure 5.3 shows a plot of \(R(p) \propto \xi (p)\) for \(L = 100\), 200, and 400 in two dimensions. Notice that the R does not diverge as p approaches \(p:c\). Instead, it reaches a plateau, the height of which increases with system size L. This is not surprising, since we cannot observe clusters that are larger than the system size L. Figure 5.6 illustrates \(\xi \propto |p - p_c|^{\nu }\) as we would expect it in an infinite system. However, for a finite system, the curve for \(\xi (p)\) is cut off at a length proportional to L. This means that for p in some region around \(p:c\), as illustrated in Fig. 5.6, we have that \(\xi > L\). In this range we cannot determine if the system is at \(p:c\) or not, because the system is not large enough for us to make this distinction.

Fig. 5.6
A line graph plots xi versus p. The graph has two symmetric peaks on either side of a vertical dashed line labeled P c. A horizontal dashed line intersects the vertical axis at label L.

Illustration of the behavior of \(\xi \) when p approaches \(p:c\). In a finite system of size L, the system will be percolating for all p in the range indicated by the arrows

If we study a system of size \(L \ll \xi \), we will typically observe a cluster that spans the system, since the typical cluster size, \(\xi \), is larger than the system size. We are therefore not able to determine if we observe a spanning cluster because we are at \(p:c\) or only because we are sufficiently close to \(p:c\). We will start to observe a spanning cluster when \(\xi \simeq L\), which corresponds to

$$\displaystyle \begin{aligned} \xi_{-}(p_c - p)^{-\nu} = \xi \simeq L \; , \end{aligned} $$
(5.39)

and therefore that

$$\displaystyle \begin{aligned} (p_c - p) \simeq (L/\xi_{-})^{-(1/\nu)} \; , \end{aligned} $$
(5.40)

when \(p < p_c\), and a similar expression for \(p > p_c\). This means that when we observe spanning we can only be sure that p is within a certain range of \(p:c\):

$$\displaystyle \begin{aligned} | p - p_c| = c L^{-1/\nu} \; . \end{aligned} $$
(5.41)

The correlation length \(\xi \) is therefore the natural length to characterize the system. At distances smaller than \(\xi \), the system behaves as if it is at \(p = p_c\). However, at distances much larger than \(\xi \), the system is essentially homogeneous. As we can observe in Fig. 5.7 the system becomes more and more homogeneous when p goes away from \(p:c\). We will now address this feature in more detail when \(p>p_c\).

Fig. 5.7
An illustration of three 512 by 512 grid systems with increasing concentrations of clusters. Each grid has a circle indicating the radius of gyration, which grows larger as the concentration increases from left to right.

Illustration of the largest cluster in \(512 \times 512\) systems with \(p>p_c\), for \(p=0.593\), \(p=0.596\), and \(p = 0.610\). The circles illustrate the radius of gyration of the largest cluster. We observe that the radius of gyration increases as p approaches \(p:c\)

5.3 Geometry of the Spanning Cluster

How can we develop a scaling theory for the spanning cluster, that is, a theory for how the mass of the spanning cluster depends on system size L and the characteristic cluster size, \(\xi \)? We know that as p is increased from below towards \(p:c\), the characteristic cluster size \(\xi \) diverges. The mass of a characteristic cluster of size \(\xi \) is expected to follow the scaling relation \(s_{\xi } \propto \xi ^D\). For a given value of p, we can therefore choose the system size L to be equal to \(\xi \), \(L = \xi (p)\). In this case, a cluster of size \(\xi \) would correspond to a cluster of size L, and it would be a spanning cluster in this system. For this system of size \(L = \xi \), we therefore expect the mass of the spanning cluster to be \(M(p,L) \propto \xi ^D \propto L^D\). This suggests that the mass of the spanning cluster in a system close to or at \(p:c\) depends on the system size L according to \(M(p_c,L) \propto L^D\).

The Density of the Spanning Cluster

The density, \(P(p,L)\), of the spanning cluster at \(p = p_c\) therefore has the following behavior:

$$\displaystyle \begin{aligned} P(p_c,L) = \frac{M(p_c,L)}{L^d} \propto L^D/L^d \propto L^{D-d} \; . \end{aligned} $$
(5.42)

Because we know that \(P(p:c,L)\) does not diverge when \(L \rightarrow \infty \), we deduce that \(D < d\). The value of D in two-dimensional percolation is \(D = 91/48 \simeq 1.90\).

This implies that the density of the spanning cluster depends on the system size, L. Indeed, since \(D < d\), we see that the density decreases with system size. This may initially seem surprising, since we may be used to thinking of density as a material property. However, we recognize this behavior from bodies that are embedded in dimensions higher than themselves, such as for a thin sheet or a thin rod embedded in three dimensions.

Embedded, Regular Bodies

For example, consider a thin, flat sheet of thickness h, and dimensions \(\mathcal {L} \times \mathcal {L}\), placed in a three-dimensional space. If we cut out a volume of size \(L \times L \times L\), so that \(L \ll \mathcal {L}\), the mass of the sheet inside that volume is

$$\displaystyle \begin{aligned} M = h L^2 \; , \end{aligned} $$
(5.43)

which implies that the density of the sheet is

$$\displaystyle \begin{aligned} \rho = \frac{h L^2}{L^3} = hL^{-1} \; . \end{aligned} $$
(5.44)

It is only in the case when we use a two-dimensional volume \(L \times L\) with a third dimension of constant thickness H larger than h, that we recover a constant density \(\rho \) independent of system size.

Non-Integer, Fractal Dimensions

We found that D was indeed smaller than d so that the density decreases with system size. However, D is also not an integer. How can we build intuition for non-integer dimensions of objects? First, let us be precise about what we mean with dimension.

Dimension For an object with mass M and linear size L, we define the dimension of the object as D, if \(M(L) = c L^D\), that is, if the mass is proportional to L to the power of D.

Self-Similar Deterministic Fractals

To gain intuition about non-integer values for the dimension D, we will introduce a structure known as a deterministic fractal. A famous example is the Sierpinski gasket [32], which is defined iteratively. We start with a unit equilateral triangle as illustrated in Fig. 5.8. We divide the triangle into 4 identical triangles, and remove the center triangle. For each of the remaining triangles, we continue this process. The resulting set of points after infinitely many iterations is called the Sierpinski gasket. This set contains a hierarchy of holes. We also notice that the structure is identical under (a specific) dilatational rescaling. If we take one of the tree triangles generated in the first step and rescale it to fit on top of the initial triangle, we see that it reproduces the original identically. This structure is therefore a self-similar fractal in the limit of an infinite number of generations of iterations.

Fig. 5.8
An illustration depicts three stages of a fractal pattern with a recursive pattern with four triangles, each subdivided into smaller triangles. The illustration starts as an equilateral triangle and evolves into a complex triangular grid with iterative voids.

Illustration of three generations of the Sierpinski gasket starting from an equilateral triangle

To find the dimensionality of such a structure we need to understand how the mass M depends on the length scale L of the structure. A common trick is to look at how the mass is rescaled between generations of iterations of the structure. Each time we generate a new iteration of the structure we increase the length scale by a factor of 2 and the mass by a factor of 3. This means that \(L' = 2 L\) and \(M' = M(2L) = 3 M(L)\). If we assume that \(M(L) = c L^D\), we get that

$$\displaystyle \begin{aligned} M(2L) = c (2L)^D = 3M(L) = 3 c L^D \quad \Rightarrow \quad 2^D = 3 \; , \end{aligned} $$
(5.45)

where we take the logarithm on both sides, getting

$$\displaystyle \begin{aligned} D \ln 2 = \ln 3 \quad \Rightarrow \quad D = \frac{\ln 3}{\ln 2} \simeq 1.58 \; . \end{aligned} $$
(5.46)

Thus, the dimension of this object is also not an integer, but lies between 1 and 2. This indicates that the Sierpinski gasket is an object that is somewhere between a plane and a line. It fills space less efficiently that a plane, but more efficiently than a line.

We have presented a robust method for finding the dimension of iteratively defined objects. However, the method also gives us the correct dimension for e.g. a cube: For a cube of size L, if we double the size of the cube, that is \(L' = 2L\), the mass is increased by a factor of 8, \(M' = M(2L) = 8M(L)\), which gives a dimension of \(d = \ln 8/\ln 2 = 3\).

Box Counting

Typically, the mass dimensions of objects from experiments or simulations are measured by box counting. The sample is divided into regular boxes where the size of each side of the box is \(\delta \). The number of boxes, \(N(\delta )\), that contain the cluster are counted as a function of \(\delta \). For a uniform mass we expect

$$\displaystyle \begin{aligned} N(\delta) = (\frac{L}{\delta})^d \; , \end{aligned} $$
(5.47)

and for a fractal structure we expect

$$\displaystyle \begin{aligned} N(\delta) = (\frac{L}{\delta})^D \; , \end{aligned} $$
(5.48)

We leave it as an exercise for the reader to address what happens when \(\delta \rightarrow 1\), and when \(\delta \rightarrow L\).

5.4 Spanning Cluster Above \(p:c\)

Let us now return to the discussion of the mass \(M(p,L)\) of the spanning cluster for \(p > p_c\) in a finite system of size L. The behavior of the percolation system for \(p > p_c\) is illustrated in Fig. 5.7. We notice that the correlation length \(\xi \) diverges when p approaches \(p:c\). At lengths larger than \(\xi \), the system is effectively homogeneous because there are no holes significantly larger than \(\xi \). For such systems, there are two effectively types of behavior, depending on whether L is larger than or smaller than the correlation length \(\xi \).

Systems Effectively at \(p:c\)

When \(L \ll \xi \) and \(p>p_c\), we are in the situation where we cannot discern a system at p from a system at \(p:c\) because the size of the holes (empty regions described by \(\xi \) when \(p>p_c\)) in the spanning cluster is much larger than the system size. We say that the system is effectively at \(p:c\). When we look at this system through a window of size L, that is, in a finite system size, we do not know if the spanning cluster in that system is an infinite cluster or just a cluster that is larger than the system size L. However, because the mass of finite clusters all scale as \(s \propto R_s^D\) up to a length \(\xi \) that is much larger than L, the mass of the spanning cluster of size L will also follow this scaling relation:

$$\displaystyle \begin{aligned} M(p,L) \propto L^D \; \text{when} \; L \ll \xi \; . {} \end{aligned} $$
(5.49)

Systems Away from \(p:c\)

In the other case, when \(L \gg \xi \) and \(p > p_c\), the typical size of a hole in the percolation cluster is \(\xi \), as illustrated in Fig. 5.9. This means that on lengths much larger than \(\xi \), the percolation cluster is effectively homogeneous. That is, it has holes up to a size \(\xi \), but not much larger than that. It looks like a Swiss cheese with a finite size of the holes. We can therefore divide the \(L \times L\) system into \((L/\xi )^d\) regions of size \(\xi \). In each such region of size \(\ell = \xi \), the system is effectively at the percolation threshold \(p:c\). The mass of the spanning cluster in this region is therefore given by (5.49), so that, \(m \propto \ell ^D\), where \(\ell = \xi \), and therefore \(m \propto \xi ^D\). Consequently, the total mass of the spanning cluster is the mass of one such region multiplied with the number of regions:

Fig. 5.9
An illustration of a grid with multicolored clusters and smaller squares, and an enlargement of a grid highlighting the concept of a spanning cluster in a computational model for percolation theory.

Illustration of the spanning cluster in a \(512 \times 512\) system at \(p = 0.595 > p_c\). In this case, the correlation length is \(\xi = 102\). The system is divided into regions of size \(\xi \). Each such region has a mass \(M(p,\xi ) \propto \xi ^D\), and there are \((L/\xi )^d \simeq 25\) such regions in the system

$$\displaystyle \begin{aligned} M(p,L) \propto (\xi^D) (L/\xi)^d \propto \xi^{D - d} L^d \; . \end{aligned} $$
(5.50)

Scaling Behavior of the Mass Above \(p:c\)

We have therefore derived the behavior of the mass, \(M(p,L)\), of the spanning cluster for \(p > p_c\) for system sizes L that are much smaller or much larger than \(\xi \):

$$\displaystyle \begin{aligned} M(p,L) \propto \left\{ \begin{array}{ll} L^D & \text{ when } L \ll \xi \\ \xi^{D - d} L^d & \text{ when } L \gg \xi \end{array} \right. \; . \end{aligned} $$
(5.51)

This behavior can be rewritten in what we call the standard scaling form, with a scaling behavior and a cut-off function:

$$\displaystyle \begin{aligned} M(p,L) = L^D Y(\frac{L}{\xi}) \; , \end{aligned} $$
(5.52)

where the cut-off function is:

$$\displaystyle \begin{aligned} Y(u) = \left\{ \begin{array}{ll} \mbox{constant} & u \ll 1 \\ u^{d - D} & u \gg 1 \end{array} \right. \; . \end{aligned} $$
(5.53)

We will use this function form many times when we discuss the behavior of finite system sizes in the next chapter.

Exercises

Exercise 5.1 (Mass Scaling of Percolating Cluster)

  1. (a)

    Find the mass \(M(L)\) of the percolating cluster at \(p = p_c\) as a function of L, for \(L = 2^k\), \(k = 4,\ldots ,11\).

  2. (b)

    Plot \(\log (M)\) as a function of \(\log (L)\).

  3. (c)

    Determine the exponent D.

Exercise 5.2 (Expressions for \(R:s^2\))

Show that

$$\displaystyle \begin{aligned} R_s^2 = \frac{1}{s} \langle \sum_i ( {\mathbf{r}}_i - {\mathbf{r}}_{cm} )^2 = \frac{1}{2}\frac{1}{s^2}\sum_{ij} ({\mathbf{r}}_i - {\mathbf{r}}_j )^2 \; , \end{aligned}$$

where the sum over ij are over all pairs of sites in a cluster of size s.

Hint

Show that both expressions are equal to \(\sum _i {\mathbf {r}}_i \cdot {\mathbf {r}}_i - {\mathbf {r}}_cm \cdot {\mathbf {r}}_{cm}\).

Exercise 5.3 (Correlation Function)

  1. (a)

    Write a program to find the correlation function, \(g(r,p,L)\) for \(L=256\).

  2. (b)

    Plot \(g(r,p,L)\) for \(p = 0.55\) to \(p=0.65\) for \(L=256\).

  3. (c)

    Find the correlation length \(\xi (p,L)\) for \(L = 256\) for the p-values used above.

  4. (d)

    Plot \(\xi \) as a function of \(p-p:c\), and determine \(\nu \).