Chapter 13 - Davidson Physics

Chapter 13 - Davidson Physics Chapter 13 - Davidson Physics

phy.davidson.edu
from phy.davidson.edu More from this publisher
12.07.2015 Views

CHAPTER 14. FRACTALS AND KINETIC GROWTH MODELS 522c. If you have not already done Problem 13.8a, compute D by determining the mean size (mass)M of the spanning cluster at p = p c as a function of the linear dimension L of the lattice.Consider L = 11, 21, 41, and 61 and estimate D from a log-log plot of M versus L.∗ Problem 14.2. Renormalization group calculation of the fractal dimensionCompute ⟨M 2 ⟩, the average of the square of the number of occupied sites in the spanning clusterat p = p c , and the quantity ⟨M ′2 ⟩, the average of the square of the number of occupied sites in thespanning cluster on the renormalized lattice of linear dimension L ′ = L/b. Because ⟨M 2 ⟩ ∼ L 2Dand ⟨M ′2 ⟩ ∼ (L/b) 2D , we can obtain D from the relation b 2D = ⟨M 2 ⟩/⟨M ′2 ⟩. Choose the lengthrescaling factor to be b = 2 and adopt the same blocking procedure as was used in Section 13.5. Anaverage over ten spanning clusters for L = 16 and p = 0.5927 is sufficient for qualitative results.In Problems 14.1 and 14.2 we were interested only in the properties of the spanning clusters.For this reason, our algorithm for generating percolation configurations by randomly occupyingeach site is inefficient because it generates many clusters. A more efficient way of generatingsingle percolation clusters is due independently to Hammersley, Leath, and Alexandrowicz. Thisalgorithm, commonly known as the Leath or the single cluster growth algorithm, is equivalent tothe following steps (see Figure 14.3):1. Occupy a single seed site on the lattice. The nearest neighbors (four on the square lattice)of the seed represent the perimeter sites.2. For each perimeter site, generate a uniform random number r in the unit interval. If r ≤ p,the site is occupied and added to the cluster; otherwise the site is not occupied. In orderthat sites be unoccupied with probability 1 − p, these sites are not tested again.3. For each site that is occupied, determine if there are any new perimeter sites, that is, untestedneighbors. Add the new perimeter sites to the perimeter list.4. Continue steps 2 and 3 until there are no untested perimeter sites to test for occupancy.Class SingleCluster implements this algorithm and computes the number of occupied siteswithin a radius r of the seed particle. The seed site is placed at the center of a square lattice.Two one-dimensional arrays, pxs and pys, store the x and y positions of the perimeter sites.The status of a site is stored in the byte array s with s(x,y) = (byte) 1 for an occupied site,s(x,y) = (byte) 2 for a perimeter site, and s(x,y) = (byte)-1 for a site that has already beentested and not occupied, and s(x,y) = (byte) 0 for an untested and unvisited site. To avoidchecking for the boundaries of the lattice, we add extra rows and columns at the boundaries andset these sites equal to (byte)-1. We use a byte array because the array s will be sent to theLatticeFrame class which uses byte arrays.Listing 14.1: Class SingleCluster generates and analyzes a single percolation cluster.package org . o p e n s o u r c e p h y s i c s . s i p . ch13 . c l u s t e r ;public class S i n g l e C l u s t e r {public byte s i t e [ ] [ ] ;public int [ ] xs , ys , pxs , pys ;

CHAPTER 14. FRACTALS AND KINETIC GROWTH MODELS 523ggggxggggxggggggxggggggggggggggggggggxgxxggxgxggxgxggxggFigure 14.3: An example of the growth of a percolation cluster. Sites are occupied with probabilityp. Occupied sites are represented by a shaded square, growth or perimeter sites are labeled by g,and tested unoccupied sites are labeled by x. Because the seed site is occupied but not tested,we have represented it differently than the other occupied sites. The growth sites are chosen atrandom.public int L ;public double p ; // s i t e occupation p r o b a b i l i t yint occupiedNumber ;int perimeterNumber ;int nx [ ] = {1 , −1, 0 , 0 } ; // r e l a t i v e change in x to n e a r e s t n e i g h b o r sint ny [ ] = {0 , 0 , 1 , −1}; // r e l a t i v e change in y to n e a r e s t n e i g h b o r sdouble mass [ ] ; // mass o f ring , index i s d i s t a n c e from c e n t e r o f masspublic void i n i t i a l i z e ( ) {s i t e = new byte [ L+2][L+2]; // g i v e s s t a t u s o f each s i t exs = new int [ L*L ] ; // l o c a t i o n o f occupied s i t e sys = new int [ L*L ] ;pxs = new int [ L*L ] ; // l o c a t i o n o f perimeter s i t e spys = new int [ L*L ] ;for ( int i = 0 ; i

CHAPTER 14. FRACTALS AND KINETIC GROWTH MODELS 522c. If you have not already done Problem <strong>13</strong>.8a, compute D by determining the mean size (mass)M of the spanning cluster at p = p c as a function of the linear dimension L of the lattice.Consider L = 11, 21, 41, and 61 and estimate D from a log-log plot of M versus L.∗ Problem 14.2. Renormalization group calculation of the fractal dimensionCompute ⟨M 2 ⟩, the average of the square of the number of occupied sites in the spanning clusterat p = p c , and the quantity ⟨M ′2 ⟩, the average of the square of the number of occupied sites in thespanning cluster on the renormalized lattice of linear dimension L ′ = L/b. Because ⟨M 2 ⟩ ∼ L 2Dand ⟨M ′2 ⟩ ∼ (L/b) 2D , we can obtain D from the relation b 2D = ⟨M 2 ⟩/⟨M ′2 ⟩. Choose the lengthrescaling factor to be b = 2 and adopt the same blocking procedure as was used in Section <strong>13</strong>.5. Anaverage over ten spanning clusters for L = 16 and p = 0.5927 is sufficient for qualitative results.In Problems 14.1 and 14.2 we were interested only in the properties of the spanning clusters.For this reason, our algorithm for generating percolation configurations by randomly occupyingeach site is inefficient because it generates many clusters. A more efficient way of generatingsingle percolation clusters is due independently to Hammersley, Leath, and Alexandrowicz. Thisalgorithm, commonly known as the Leath or the single cluster growth algorithm, is equivalent tothe following steps (see Figure 14.3):1. Occupy a single seed site on the lattice. The nearest neighbors (four on the square lattice)of the seed represent the perimeter sites.2. For each perimeter site, generate a uniform random number r in the unit interval. If r ≤ p,the site is occupied and added to the cluster; otherwise the site is not occupied. In orderthat sites be unoccupied with probability 1 − p, these sites are not tested again.3. For each site that is occupied, determine if there are any new perimeter sites, that is, untestedneighbors. Add the new perimeter sites to the perimeter list.4. Continue steps 2 and 3 until there are no untested perimeter sites to test for occupancy.Class SingleCluster implements this algorithm and computes the number of occupied siteswithin a radius r of the seed particle. The seed site is placed at the center of a square lattice.Two one-dimensional arrays, pxs and pys, store the x and y positions of the perimeter sites.The status of a site is stored in the byte array s with s(x,y) = (byte) 1 for an occupied site,s(x,y) = (byte) 2 for a perimeter site, and s(x,y) = (byte)-1 for a site that has already beentested and not occupied, and s(x,y) = (byte) 0 for an untested and unvisited site. To avoidchecking for the boundaries of the lattice, we add extra rows and columns at the boundaries andset these sites equal to (byte)-1. We use a byte array because the array s will be sent to theLatticeFrame class which uses byte arrays.Listing 14.1: Class SingleCluster generates and analyzes a single percolation cluster.package org . o p e n s o u r c e p h y s i c s . s i p . ch<strong>13</strong> . c l u s t e r ;public class S i n g l e C l u s t e r {public byte s i t e [ ] [ ] ;public int [ ] xs , ys , pxs , pys ;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!