Materials Algorithms Project
- Provenance of code.
- Purpose of code.
- Description of subroutine's operation.
- Parameter descriptions.
- Error indicators.
- Accuracy estimate.
- Any additional information.
- Example of code
- Auxiliary subroutines required.
- Download source code.
Department of Mechanical Engineering,
University of Leeds,
Leeds, West Yorks., UK
*SC is now with the Department of Materials Science and Metallurgy, University of Cambridge.
MAP_POLY_DROPS creates a randomly packed two-dimensional bed of circular particles.
Output from this program can be used as the input to a sintering simulation model .
|Product form:||Source code |
MAP_POLY_DROPS uses the well-established random raindrop algorithm [2,3]. In such schemes, particles are dropped randomly on a vertical trajectory into an imaginary container (usually modelled as a two-dimensional box). Each particle is dropped from an arbitrary height well above the maximum height of the simulation box; the 'width' co-ordinate is chosen randomly. Contact 'rules' are as follows :-
- Descending particles cease all movement upon contacting the bottom of the box.
- A descending particle which strikes a stationary particle attempts to minimise its vertical co-
ordinate by rolling round the circumference of the stationary particle, and of any subsequent
particles with which it comes into contact. Movement ceases when no further downward
movement is possible.
Three different particle distribution schema are represented, selected by setting the input parameter type to integer values 1, 2 or 3 :-
- 1. Bimodal distribution.
- Input parameter sigma represents the number ratio of large to small particles.
- mean_u and mean_l represent, respectively, the upper and lower mean particle radii for the bimodal distribution. Setting these parameters to the same value will give a single particle size. The units are arbitrary.
- 2. Normal (or Gaussian) distribution.
- Input parameter sigma represents the standard deviation of the distribution.
- mean_u represents mean particle radius for the normal distribution. The value of mean_l is ignored. The units are arbitrary.
- 3. Beta distribution.
- The beta distribution function parameters, a and b, are read in from a text file, nominally 'beta.inp'. Note that this is not required if the beta distribution is not used.
- mean_u represents mean particle radius for the beta distribution. The value of mean_l is ignored. The units are arbitrary.
- sigma is not used with the beta distribution.
The suitability of the beta distribution function for modelling particle size distributions
in real systems has been discussed in detail by Popplewell et al .
The output from this program is intended to be used as input to a sintering simulation model.
This model will be added to MAP in due course. The program
has been written to provide statistical analysis of the output from MAP_POLY_DROPS.
The output file (nominally called 'position1.out') consists of partmax+1 rows
of data; row 1 gives partmax, or the number of particles in the simulation, if
this is less than partmax. Rows from 2 onwards contain five columns :-
Column 1 is a particle identifier.
Columns 2 and 3 are x and z coordinates respectively.
Column 4 is particle radius.
Column 5 is particle orientation (not used in this implementation
S. Cardie, PhD Thesis, Department of Mechanical Engineering, University of Leeds, 1997 (in preparation).
W.M. Visscher and M. Bolsterli, Random Packing of Equal and Unequal Spheres in Two and Three Dimensions, Nature, 239 (10) 504-507, 1972.
P. Meakin and R. Juillien, Restructuring Effects in the Rain Model for Random Deposition, J. Physique, 48 1651-1662, 1987.
L.M. Popplewell, O.H. Campanella and M. Peleg, Simulation of Bimodal Size Distributions in Aggregation and Disintegration Processes, Chemical Engineering Progress, 85 (8) 56-62, 1989.
W. Press, S. Teukolsky, W. Vetterling, and B. Flannery, Numerical Recipes in Fortran 77,
Cambridge University Press, Cambridge, 1996
Parameters marked ** are not used in this program: they are included in the input and output files for compatibility with other, supporting, software packages.
Reads from an input file, nominally 'drops.dat'.
- xmax - double precision
- xmax specifies the maximum 'width' of the deposition area in arbitrary units.
- zmax - double precision
- zmax specifies the maximum 'height' of the deposition area in arbitrary units.
- mean_u, mean_l - double precision
- mean_u and mean_l specify various particle size parameters, depending on the deposition distribution
chosen. See above for a full description.
- sigma - double precision
- sigma has different values depending on the particle distribution scheme chosen. See above for
- dR** - double precision
- dR defines the 'step' size for the particle pair distribution function, in arbitrary size
- dRmax** - double precision
- dRmax defines the maximum extent of the particle pair distribution function, in arbitrary size
- inset** - double precision
- inset sets an inner region of the simulation area for subsequent statistical analysis. Units are arbitrary
- partmax - integer
- partmax sets the maximum number of particles in the simulation. The upper limit on partmax is currently set to 5000, but this can be changed by modifying the constant max
in the program (which would necessitate re-compilation).
- type - integer
- type defines the particle size distribution to be used. See above for definitions.
- epsilon** - double precision
- epsilon defines particle shape; this feature is not implemented in this version of
- a, b - double precision
- a and b are beta distribution function parameters. See above.
Output is to 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.
The degree of packing density can be altered by setting a tolerance variable; this allows for a trade-off between processing time and final packing density.
As originally written, the program contained calls to several NAG routines. These were principally random number generation routines of various type as follows :-
- G05CAF Random number from 0 to 1 (uniform distribution). Replaced by generic
- G05CCF Initialises random number generation.
- G05DAF Random number between specified minimum and maximum values (uniform
distribution). Replaced by generic subroutine randpos.
- G05DDF Random number from normal distribution (with specified mean and standard
deviation). Replaced by generic subroutine randdist.
- G05DYF Integer random number between specified minimum and maximum values.
(uniform distribution). Replaced by generic subroutine randmaxmin.
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 . 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.
1. Program text
2. Program data
Contents of file 'drops.dat'
55.0D0, 55.0D0, 1.0D0, 1.0D0 !! xmax, zmax, mean_u, mean_l !!
0.5D0, 0.2D0, 20.0D0, 2.5D0 !! sigma(l:s), dR initial, max, inset !!
2000, 1, 0.0D0 !! partmax, type, epsilon !!
3. Program results
Output is to data file 'position1.dat'. This file can be viewed with a graphics package,
for example gnuplot or unigraph, and the data are in the format described
random particle packing, sequential deposition model, sintering of polymers
Download source code