Parameters are set, step-wise crush calculations are performed, and the parameters which satisfy constraints are stored along with measures of fitness. The various inputs:
Constraint variables
- time to reach terminal velocity
- speed attained at that time
- time for collapse front to reach ground level
- (optional) elevation at which terminal velocity reached
Parameter variables
- (M0) initial driving mass (in story units)
- (s) stretch (compaction measure, dimensionless)
- (c) coefficient of mass reduction, used as follows:

where subscripts are step indices, M represents upper block mass, m the impacted story mass and v bar is the average velocity over the descent phase of the ith step.
The first set (constraints) are those things I need the best observational info on, it's what lends meaning to the effort. The actual implementation does not currently check to see that terminal velocity is achieved, it merely samples the velocity at a specified time which is to represent the onset of terminal velocity. To a greater or lesser degree it does correspond to onset of terminal velocity, depending on the interaction of constraints.
The second set: the coefficient of velocity-dependent upper block mass reduction is essentially unconstrained, it can wander as needed with no underlying physical motivation whatsoever. As are the other parameters, it's a constant throughout each trial but this one adds sufficient freedom to the calculation to make solutions possible, where they would not be otherwise. The initial driving mass M0 has a practical upper bound dependent on how much can really be above a given point, but that's also mostly free to roam. Stretch, it turns out, restricts solutions more as it increases, so has a natural upper bound set by the problem and a realistic lower bound of perhaps 0.05, given there will be shedding and/or lack of entrainment.
To start small, I've focused on a starting fail story of 96, but it is about to become a variable parameter, too.











