Motion for all particle classes follows the same general strategy. In essence, particles undergo random walks in the space. The relative rates of movement for the different particle classes are controlled by user configurable parameters.
Note that, on any given timestep, each particle gets exactly one opportunity to be the primary particle of a movement; but it will also get several (actually four) opportunities to act as the secondary particle of a movement.
In more detail, movement takes place as follows:
In an earlier implementation of SCL, this probability of movement was simply a parameter of the class of the primary particle. However, this is not completely satisfactory because a particle may move as a result of being a primary particle or as a secondary particle--and, on that original scheme, the probabilities in the two cases, for the same two particles, could be different, which is somewhat counter-intuitive.
In SCL v0.04 each particle class still has a class specific mobility parameter, called the MobilityFactor. But rather than simply taking the probability to be the MobilityFactor of the primary particle class, it is calculated as the geometric mean of the MobilityFactor parameters for the classes of the primary and secondary particles. This means that the probability is always the same for swapping particles of any two particular classes, regardless of which is primary and which is secondary. Further, by using the geometric (rather than, say, arithmetic) mean, we ensure that if the MobilityFactor is set to zero for either class, then the overall probability is guaranteed to be zero. Finally, of course, if the MobilityFactor for both classes is the same, then this just is the probability of the particular swap.
Note that the primary reason for introducing the H particle class was so that this movement strategy could be applied uniformly. The alternative would be that holes in the space would be represented by positions with no object present at all (i.e. the Objective-C nil object pointer)--but then there would be no corresponding MobilityFactor and nothing to ``swap'' with either. While using explicit H particles instead presumably involves some performance penalty, I considered this worthwhile in order to keep the implementation simpler and more consistent.
L particles with one or more bonds are always immobile. This is a very strong restriction on the model. It was present in the original model of Varela et al. and is retained here. The presumed reason for this restriction is to avoid the rather complicated issue of what should happen to a bond (and the L particle at its other end) if a bonded L particle is allowed to move.
Copyright © 1997 All Rights Reserved.
Timestamp: Tue Dec 31 19:40:38 GMT 1996