I hate this so much
Mar. 13th, 2004 12:47 pmTital
Abstract
1Introduction
In this report, the construction of two cellular autonoma will be considered in the context of real-world systems that they attempt to model. In the course of the investigation, the autonima will be adjusted to attempt to model the systems under different conditions, and a quantative discussion of how the conditions affect the models will be made.
2Diffusion limited aggregation
DLA is a process in which particles wonder at random on some smooth surface (substrate) before bonding to some defect. Despite the random nature of the growth, it gives rise to characteristic, statistically similar growth patterns around the defect. Various statistical properties of the aggregates, (in this investigation we will concern ourselves mostly with its dimensionality) are dependant on properties of the system; in this investigation these relationships will be explored
In the course of this investigation, values corresponding to binding energy/free energy ratio, and the isotropy of the substrate will be considered. As well as this, various aspects of the model will be adjusted which have no clear physical equivalent, often to the end of proving that the choice of a unphysical option does not necessarily invalidate the results obtained.
In the real world, DLA occurs during the deposition of metals during electrochemical reactions
Algorithm
Basic
To start with, this model will consider the accumulation of partials around a single defect. The most basic Algorithm for producing DLA is outlined below:
1/ Create a blank grid with a single particle fixed in the centre.
2/ Produce a new particle at a radius rstart and a random direction from the initial particle, where rstart is slightly larger than the maximum radius of the aggregate.
3/ Move the new particle in a random direction on the grid by one grid square.
4/ Check if moving particle is adjacent to any fixed particles;
if it isn’t, go to 3
if it is, attach the particle and go to 2
The initial assumption is that this will produce a roughly spherical bundle of particles, however a little extra though or actual implementation will show that it produces something rather more complicated and interesting, as shown in Fig 1
Fig 1: an aggregate
Assumptions
This Algorithm has a couple of problems- it assumes that partials approach the aggregate evenly from all directions (which is reasonable if considering some systems, and less so when considering others.
It assumes that the moving particle never walks off the edge of the grid, despite the fact that the grid can not be infinite. A related assumption is made that there is enough time and computing power to follow the particle as it takes the most circuitous route possible to the aggregate.
Improvements
Thus, to improve the efficiency of the algorithm, it is normal to add another radius rkill at a significant distance from the aggregate, once the wandering particle passes rkill, it is assumed that it will not interact with the aggregate, and it is destroyed, a new wandering particle being added as in step 2/
The step described above essentially assumes that when a particle reaches the radius rkill, it is equally likely to re-approach the aggregate from any direction. If r kill was actually at infinity, this would be a reasonable assumption. When rkill is merely very large there is a possibility that this will in someway skew the growth of the aggregate away from the random direction that the particle left in.
It seams reasonable that over time, there will be as many particals leaving in any given direction, and his skewing will even out, but to keep the simulation as physical as possible, it is advantageous to set rkill as large as possible.
This, of course, rather defeats the object of rkill in the first place, but it does mean that the limitation is a known, controlled quantity.
Long steps
A further improvement is to realize that once the particle is a significant distance from the aggregate, the minute detail of its movement becomes irrelevant. For any moving particle, there is an even probability for it to reach any point on a circle centred on its current position. Thus it is possible to add another region between the aggregate and rkill in which the particle takes steps long enough to land it back in the normal movement region in a random direction.
Investigations
With the addition of a new subroutine to the code, it is possible to make reliable measurements of the dimentionality of the aggregate. This subroutine is outline below.
Declares that this is a routine to be called by the void command, taking no argmeunts
void dimension()
{
Declares that this routine will contain the variables I,x,y which are integers and Rn,particals_less_than_R, which are doubles ( a type of floating point decimal)
int i,x,y;
double Rn,particals_less_than_R;
counts Rn 10/50ths of the finished aggregates rmax to 40/50ths, in 50ths. This means that the outermost fringes of the aggregate, which are yet to become fully developed are not considered, and the innermost area of the aggregate where there is only a small number of particles to average over is not considered.
for(i=10;i<40;i++)
{Rn=i*rmax/50;
sets the number of particals so far counted to 0
particals_less_than_R=0;
scans through all the squares on the grid
for(x=0;x
Abstract
1Introduction
In this report, the construction of two cellular autonoma will be considered in the context of real-world systems that they attempt to model. In the course of the investigation, the autonima will be adjusted to attempt to model the systems under different conditions, and a quantative discussion of how the conditions affect the models will be made.
2Diffusion limited aggregation
DLA is a process in which particles wonder at random on some smooth surface (substrate) before bonding to some defect. Despite the random nature of the growth, it gives rise to characteristic, statistically similar growth patterns around the defect. Various statistical properties of the aggregates, (in this investigation we will concern ourselves mostly with its dimensionality) are dependant on properties of the system; in this investigation these relationships will be explored
In the course of this investigation, values corresponding to binding energy/free energy ratio, and the isotropy of the substrate will be considered. As well as this, various aspects of the model will be adjusted which have no clear physical equivalent, often to the end of proving that the choice of a unphysical option does not necessarily invalidate the results obtained.
In the real world, DLA occurs during the deposition of metals during electrochemical reactions
Algorithm
Basic
To start with, this model will consider the accumulation of partials around a single defect. The most basic Algorithm for producing DLA is outlined below:
1/ Create a blank grid with a single particle fixed in the centre.
2/ Produce a new particle at a radius rstart and a random direction from the initial particle, where rstart is slightly larger than the maximum radius of the aggregate.
3/ Move the new particle in a random direction on the grid by one grid square.
4/ Check if moving particle is adjacent to any fixed particles;
if it isn’t, go to 3
if it is, attach the particle and go to 2
The initial assumption is that this will produce a roughly spherical bundle of particles, however a little extra though or actual implementation will show that it produces something rather more complicated and interesting, as shown in Fig 1
Fig 1: an aggregate
Assumptions
This Algorithm has a couple of problems- it assumes that partials approach the aggregate evenly from all directions (which is reasonable if considering some systems, and less so when considering others.
It assumes that the moving particle never walks off the edge of the grid, despite the fact that the grid can not be infinite. A related assumption is made that there is enough time and computing power to follow the particle as it takes the most circuitous route possible to the aggregate.
Improvements
Thus, to improve the efficiency of the algorithm, it is normal to add another radius rkill at a significant distance from the aggregate, once the wandering particle passes rkill, it is assumed that it will not interact with the aggregate, and it is destroyed, a new wandering particle being added as in step 2/
The step described above essentially assumes that when a particle reaches the radius rkill, it is equally likely to re-approach the aggregate from any direction. If r kill was actually at infinity, this would be a reasonable assumption. When rkill is merely very large there is a possibility that this will in someway skew the growth of the aggregate away from the random direction that the particle left in.
It seams reasonable that over time, there will be as many particals leaving in any given direction, and his skewing will even out, but to keep the simulation as physical as possible, it is advantageous to set rkill as large as possible.
This, of course, rather defeats the object of rkill in the first place, but it does mean that the limitation is a known, controlled quantity.
Long steps
A further improvement is to realize that once the particle is a significant distance from the aggregate, the minute detail of its movement becomes irrelevant. For any moving particle, there is an even probability for it to reach any point on a circle centred on its current position. Thus it is possible to add another region between the aggregate and rkill in which the particle takes steps long enough to land it back in the normal movement region in a random direction.
Investigations
With the addition of a new subroutine to the code, it is possible to make reliable measurements of the dimentionality of the aggregate. This subroutine is outline below.
Declares that this is a routine to be called by the void command, taking no argmeunts
void dimension()
{
Declares that this routine will contain the variables I,x,y which are integers and Rn,particals_less_than_R, which are doubles ( a type of floating point decimal)
int i,x,y;
double Rn,particals_less_than_R;
counts Rn 10/50ths of the finished aggregates rmax to 40/50ths, in 50ths. This means that the outermost fringes of the aggregate, which are yet to become fully developed are not considered, and the innermost area of the aggregate where there is only a small number of particles to average over is not considered.
for(i=10;i<40;i++)
{Rn=i*rmax/50;
sets the number of particals so far counted to 0
particals_less_than_R=0;
scans through all the squares on the grid
for(x=0;x