dla-nd is an open-source, ANSI C, arbitrary-dimensional, stand-alone, off-lattice diffusion-limited aggregation simulator. It uses a 2^D-tree system for hierarchical space subdivision and can take into account a number of extra model parameters including stickiness and bulk motion. It correctly recreates the theoretical mass dimensions of DLA clusters in 2 and 3 dimensions (1.715 and 2.5, respectively). It is a rewrite of dla3d, a code which was spontaneusly written in December of 2003.
Head to dla-nd on github.
dla-nd supports the following features
- Automatic, persistent, adaptive 2^D-tree space subdivision
- Statistically-correct particle motion bias (bulk motion) numerically solves quartic equation each step
- Stubbornness (Nittman and Stanley's artificial surface tension model)
- Tunable stickiness and grippiness
- 2-d or 3-d density field construction
- Raw, Radiance, and generic OBJ output for particle positions and connectivities
- PNG and ASCII PGM output for particle locations and density field
- Restart from an old simulation, or merge multiple simulations using raw .part files
101k particles aggregating in 2D, all other options are off; 80 minutes on P4-1.6
run09.mpg (5.8 MB)
102k particles aggregating in 3D, all other options are off; 8 hours on P4-1.6
run10.mpg (3.7 MB)
101k particles aggregating in 4D, all other options are off; 21 hours on Athlon 2500+
run12.mpg (1.4 MB)
107k particles aggregating in 2D, stickiness changed from default of 1.0 to 0.1; 6 hours on P4-1.6
run11.mpg (5.6 MB)
100k particles aggregating in 2D, stickiness changed from default of 1.0 to 0.01; 11 hours on P4-1.6
run13.mpg (7.5 MB)
100k particles aggregating in 2D, with deprecated "rotex" growth corresponding to source and vortex influences located at the origin; 11 hours on P4-1.6
run14.mpg (11 MB)
100k particles aggregating in 2D, with bulk motion; 10.5 hours on P4-1.6
run15.mpg (6.7 MB)
102k particles aggregating in 2D, with 0.9 grip---effectively behaves as if the particles were 10 times as small, but with the same contact radius; 12 hours on P4-1.6
run16.mpg (3.4 MB)
100k particles aggregating in 2D, with new "chiral" growth, radius = 500, exponent = 2; 21 minutes on P4-1.6
run24_01.mpg (3.5 MB)
100k particles aggregating in 2D, with new "chiral" growth, radius = 500, exponent = 0.04; 21 minutes on P4-1.6
run24_02.mpg (3.1 MB)
For more simulations possible with dla-nd, see the dla3d page.
Future versions of dla-nd may address the following needs:
- Impart preferential circumferential motion on the incoming particles, such to create branching structures with directionality---chirality or rotex growth.
- Use existing infrastructure from part-nd to compute a gradient field, and thus additionally bias the incoming particles' motion.
- Use pthreads to allow multithreading, thus using all available cores or processors on an SMP machine.
- Create symmetry in the resulting structures by multiply adding each new particle.
- Set the resulting segment radii such that the bending strain at each segment is equivalent---resulting in thicker segments at the core, and thinner ones at the tips.
Please e-mail me if you'd like to see some particular feature in dla-nd, or if you use it to make something creative.
P. Meakin and T. Vicsek, Diffusion-limited aggregation with radial bias, Journal of Physics A 20 L171-L175 (1987)
J. Nittman and H.E. Stanley, Tip splitting without interfacial tension and dendritic growth patterns arising from molecular anisotropy, Nature 321, 663 (1986)
T. Witten and L. Sander, Diffusion-limited aggregation, Physical Review B 27, 5686-5697 (1983)