Diffusion Limited Aggregates (DLA)

A very interesting physical phenomena is that of electrolysis. In this process a chemical compound is dissociated via establishing an electrical potential between different points in the compound. As an example, imagine a dish of cylindrical shape with a cathode and an anode given by a point in the center of the dish and a piece of metal surrounding the dish on the perimeter. Upon establishing a potential difference between the electrodes the molecules of the compound will disassociate and the two ion species will gravitate towards the two electrodes.

An actual experiment based on zinc sulfate dissociation is shown in experimental archive.

The shape of the accumulated material on the center electrode is a fractal. It results from the ions produced by the separation of the molecules in the liquid that attach themselves to the atoms already accumulated at the center of the dish.

A figure of this type can be modeled on a computer. The algorithm to do so is based on random walks. This is quite realistic since the ions are themselves subjected to random walks in the physical system.

The algorithm is quite simple. It consists in launching random walks from a circle at a large distance, and letting those random walks come in contact with the aggregate near the center electrode. Upon getting in contact, in the sense of the nearest neighbor on the lattice, the ions attach themselves to the aggregate. Repeat these steps until the aggregate is large enough.

Here are some details about the algorithm:

  1. Establish a large circle

  2. Launch a random walk from the large circle at a random angle (uniform distribution)

  3. At each step of the random walk check whether the random walker is near the aggregate. If so, attach the last point of the walk the aggregate on the lattice.

  4. At each step of the random walk check that the random walk has not gone beyond the large circle. If so, stop the walk.

  5. Repeat the same procedure of launching a new random walk in the large circle until the maximum number of walks has been reached or the aggregate has reached the specified size.

This algorithm is summarized in the following pictures:

The program dla.c ( DLA.cpp ) implements this algorithm.

The program contains options to make poor man movies of the random walks building-up the fractal and of the evolution of the aggregate. Namely the data is printed out in a format compatible with gnuplot_pipe.c in order to visualize the random walks that build the DLA fractal, option -p, or the evolution of the fractal aggregate, option -m.

The resulting object is a fractal. It looks as if it could be a tree or a plant (maybe of strange shape). Mathematically it is a fractal in the sense that the dimension of this object is between 1 and 2. This could be estimated by the block algorithm which consists in covering the object with small cells and estimating the number of cells needed to cover the object as the size of the cells becomes smaller and smaller. This procedure for a plane will give dimension 2 while for a line it would give dimension 1. This procedure for the DLA fractal would yield a dimension that is neither 1 or 2 but rather a number in between.

Run dla -h to see the code options.

Michel Vallieres 2014-04-01