Key Features of Mathematica Used for the Olympic Velodrome
Some Notes from Designer Chris Nadovich
Multidimensional Symbolic Arrays
Every one of the approximately 20,000 unique pieces of steel tubing was
specified in Mathematica by a multidimensional data structure that
gave the piece's shape, as well as its position and orientation in 3D.
Some of the entries in this data structure were numerical, and some were
symbolic. For example, the diameter of the tubing was known numerically
in advance, but neither the number of tubes nor their position or other
dimensions (including angles for triple mitered end-cuts) were known.
These unknowns were specified symbolically.
Our venue considerations (overall shape and size), cycling rideability
considerations, and mechanical fabrication design ideas were then
incorporated to constrain and link the positions of the pieces into an
overall model. This was done, in large measure, by applying symbolic
manipulations from analytic geometry to the basic pieces. Essentially, I
cut, lifted, rotated, and translated the 75 tons of steel using symbolic
coordinate transforms and other algebraic techniques. I can say from
personal experience that lifting a 24-foot steel beam with a coordinate
transform is a lot easier than lifting it by hand.
Nonlinear Equation Solving
The resulting hybrid symbolic/numerical model of the track resulted in
a system of thousands of nonlinear equations that would be impossible for
a human to cast, let alone solve. However, in Mathematica, I was
never forced to arbitrarily break up the problem into separate symbolic and
numerical problems. I could leave the problem statement and constraints in
their natural form and let the machine do the algebraic spadework as
needed.
My method to use symbolic equations became essential when, during the
course of the project, various constraints had to be changed. Since my
Mathematica code contained no a priori numerical reductions of
symbolic constraints, I was able to quickly and easily recast the problem
and solve it again.
Embedded Graphics
Another feature of Mathematica that I used to great advantage
was its ability to embed dynamically computed graphics along with the
model. At various crucial places within the track model, I added notes and
graphics that monitored various parameters of the track (e.g., lengths,
angles, curves, and even some 3D renderings) for the purpose of quality
assurance. If I varied an input constraint in such a way that caused the
overall design to vary in a strange, unexpected way, I was able to quickly
pinpoint the cause of the behavior by scanning through the graphs of
intermediate results that I scattered through the notebook.
Interpolation Functions
Some of the equations that described the track were impossible to solve
analytically and slow to solve numerically. To avoid this potential
roadblock, I made liberal use of the Interpolation function feature of
Mathematica to create quick-to-compute, invertable interpolation
functions that were (within my tolerances) numerically identical to the
functions they modeled. For example, the Fresnel integrals that were the
basis of the velodrome curve are expensive to compute. They can be
transformed into invertable, relatively inexpensive interpolation functions
as follows:
CurveX=
Interpolation@
Table[{b,NIntegrate[Sin[a t^2 /2], {t,0,b}]},
{b,-L,L,dl}];
With proper choice of dl, this interpolation function, CurveX[t],
becomes a fast, accurate replacement for the real
Fresnel integral. This feature of Mathematica alone reduced the
overall computation time by several orders of magnitude, without
sacrificing any significant accuracy. Often, people complain that symbolic
math engines can leave you high and dry when your problem reduces to a
symbolically or numerically intractable form; I found that with
Mathematica the tools were always there to get me out of any jam I
created for myself.
Flexible Output Formatting
The final result of the calculations performed by Mathematica
was a completely numerical specification of every unique piece of steel in
the track. The flexible output formatting capabilities of
Mathematica were used to produce output in the form of
multidimensional 3D-face lists. These lists were input directly into a CAD
application to conveniently produce mechanical fabrication drawings.
I should emphasize that unlike the way mechanical design is usually done
today, the CAD application was not used to lay out the track surface in any
way or perform any dimensional calculations. Its use was restricted solely
to final QA, adding official drawing borders, notes, labels, and title
blocks and producing the final official plotter rendering. In a sense,
Mathematica served as an automated CAD operator; it translated my
high-level engineering design into a specific and complete, part-by-part
set of blueprints--the work normally done by a human designer.
| |