[MAP Logo]

Materials Algorithms Project
Program Library


  1. Provenance of code.
  2. Purpose of code.
  3. Specification.
  4. Description of subroutine's operation.
  5. References.
  6. Parameter descriptions.
  7. Error indicators.
  8. Accuracy estimate.
  9. Any additional information.
  10. Example of code
  11. Auxiliary subroutines required.
  12. Keywords.
  13. Download source code.
  14. Links.

Provenance of Source Code

S. Cardie*,
Department of Mechanical Engineering,
University of Leeds,
Woodhouse Lane,
Leeds, U.K.

*SC is now with the Department of Materials Science and Metallurgy, University of Cambridge.

Top | Next


Provides a suite of routines for analysing randomly-packed particle beds.

Top | Next | Prev


Product form:Source code

Complete program.

Top | Next | Prev


Random packings of particles (regular and irregular) are used to model the behaviour of a wide variety of phemomena, ranging from arrangements of metal particles in green compacts for sintering to pulverisation of coffee granules. Over the course of time, a set of analytical tools have been developed to aid the examination of both computer models and experimental simulations[1].

MAP_UTIL_CIRCLE contains routines which allow the user to analyse the characteristics of randomly-packed particle beds :-


Isolates a user-specified inner area of the simulation 'box', in order to minimise edge effects. This is necessary because the model produced by MAP_POLY_DROPS assumes that the particles are being dropped into a container with rigid sides; the packing behaviour of particles stacked in this way is markedly different than for infinite packings[6].


A very simple routine which creates a data file in a suitable format for viewing with a graphics package like GNUPLOT or UNIGRAPH. Output is to data file 'circles.dat'


Calculates a range of packing fraction statistics, writing the results to data file 'areabox.out'. The routine was primarily intended to assess local variations in packing fraction, and works by sampling a number of relatively small regions of the packing at random. Packing fraction characteristics for each are calculated, then an overall average is computed from these results. The number of separate samples taken is set using the constant MC_runs, and could be changed by altering the value of this constant, then re-compiling the program. Similarly, the size of the sampling box is set by the constant box.


Calculates average co-ordination number. A particle is assumed to be in contact with a nearest neighbour if their separation distance is less than or equal to the sum of their radii and a small error factor. The error factor is given by constant Rerror, initally set to one hundreth of the mean particle size. Output is to data file 'coord.out'.


Calculates radial distribution function, G(r) [2,3]. Writes the results to data file 'count.out'.


Produces a histogram giving average number of nearest neighbours per particle, and overall number average nearest neighbours. results are written to data file 'coord.out'.


Creates a data file which can be used to give a graphical representation of the Voronoi polyhedra [4,5] for the random packing. Output is to data file 'cell.out'.

Routines are chosen by setting the switches in a configuration file (nominally called 'circle.opt', using the convention that '0' is 'off' and '1' is 'on'. An example version of 'circle.opt' is provided with the distribution.

Top | Next | Prev


  1. S. Cardie, PhD Thesis, Department of Mechanical Engineering, University of Leeds, 1997 (in preparation).
  2. R.J. Bell, Pair Distribution Function for a Two-Dimensional Liquid, Nature 221 50-51 1969.
  3. E. Dickinson, S.J. Milne and M. Patel, Ordering in Simulated Packed Beds Formed From Binary Mixtures of Particles in Two Dimensions: Implications for Ceramic Processing, Powder Technology, 59 11-24 1989.
  4. J.W. Ross, W.A. Miller and G.C. Weatherly, Computer Simulation of Sintering in Powder Compacts, Acta Metallurgica, 30 203-212 1982.
  5. M.W. Weiser and L.C. De Jonghe, Rearrangement During Sintering in Two-Dimensional Arrays, J. Am. Ceram. Soc., 69 (11) 822-826 1986.
  6. L.H.S. Roblee, R.M. Baird and J.W. Tierney, Radial Porosity Variations in Packed Beds, AIChE Journal 4 (4) 460-464 1958.
  7. W. Press, S. Teukolsky, W. Vetterling, and B. Flannery, Numerical Recipes in Fortran 77, Cambridge University Press, Cambridge, 1996

Top | Next | Prev


Parameters marked ** are not used in this program: they are included in the input and output files for compatibility with other, supporting, software packages.

Input parameters

Input is from a data file, nominally 'position1.dat'.

x, z - double precision arrays of dimension 5000
x and z are the co-ordinates of the particles.

r - double precision array of dimension 5000
r is the radius of each of the particles, in arbitrary size units.

o** - double precision arrays of dimension 5000
o is the orientation of each of the particles.

Output parameters

Output is to data files, and is dependent on the options selected.

Top | Next | Prev

Error Indicators


Top | Next | Prev


No information supplied.

Top | Next | Prev

Further Comments

This program is part of a group, including MAP_POLY_DROPS.

As originally written, the program contained calls to several NAG routines. These were principally random number generation routines of various type as follows :-

The source code supplied with this distribution has had calls to NAG routines replaced by calls to generic subroutines performing identical functions, as indicated above; users should supply their own code for these routines.

The program also makes use of a sort routine based on the heapsort routine originally published by Press et al [7]. Again, the supplied source code has had this routine removed, and users must supply their own sort routine. Any general purpose sorting routine will suffice.

Top | Next | Prev


1. Program text

       Complete program.

2. Program data

Input is from a data file, nominally 'position1.dat'

Contents of 'circle.opt' :-

0   1   1   1 !!  xtract, circl, coor, fract !!
1   1   1     !!  grcal, nbr, vrn       !!

3. Program results

Output is to data files, depending on options selected.

Top | Next | Prev

Auxiliary Routines


Top | Next | Prev


random packing, statistical analysis, voronoi polyhedra

Top | Next | Prev


Download source code

Top | Prev

MAP originated from a joint project of the National Physical Laboratory and the University of Cambridge.

MAP Website administration / map@msm.cam.ac.uk

Top | Index | MAP Homepage Valid HTML 3.2!