NAMD (http:/www.ks.uiuc.eduResearchnamd) is a parallel
molecular dynamics code designed for high-performancebiomolecular simulation. For example, it can be used to
simulate a section of a cell wall to determine howcertain proteins pass through the wall while others do not.
NAMD would model several hundred thousand atoms and themolecular bonds between them.
One of their simulations involves "driving" a protein through
a pore in a cell wall. They use a 3D mouse with force feedback,so when you push on the wall, it pushes back. To get the
protein through the pore, you have to twist and push. It isa great one-on-one demo, but probably wouldn't work so well
for a large group.However, they have lots of videos of various simulations that would be good for a large group.
NAMD is a supercomputer application, and one the 2002 Gorden Bell award winners. I have looked at the code, and it is a
fairly well-designed C++ application. It uses Charm++ for parallelization.It was developed at UIUC, which is why I ran into it, but I
haven't had anything to do with its development.The core algorithm is fairly simple and one that I've used
many times, but they have elaborated it a lot. The basicalgorithm is to keep track of each atom and its position and
velocity. At each time step, the force on each atom is calculated and the velocity is changed. Then the position ofeach atom is changed according to its velocity. Repeat.
The trick is figuring out the force on each atom. If you
are doing this with planets and moons then the force youcare about is gravity, and every object has gravity on
every other. This gives an N squared algorithm for computingall the forces. Gravity is not important for NAMD, but
electrical charge is, and it is pretty much the same asgravity. NAMD does tricks of dividing the world into cells,
calculating the net electrical charge of a cell, and treatingall the elements of a far-away cell as a single point.
This makes calculating the force due to electrical chargemuch easier.
NAMD has to worry about half a dozen forces, and the
electrical charge is only one of them. There are threecategories of forces. Electrical charge is an example
of ones with long range. Some forcesdrop off much faster than gravity or electrical charge.
So, only atoms in neighboring cells must be compared.These are short range forces. Finally,
molecular bonds only work between pairs and triples of atoms.Each kind of force is processed differently, because they
are processed in parallel and different kinds of algorithmsare needed.
I would expect a talk to be half background in molecular
dynamics and half a description of the design of the systemand how objects helped them to get the job done.
Does this seem like it might be interesting? -RalphJohnson
Yes, again, yes. Couple these sessions with a couple of people talking about how Java 1.5 GenericsNon-blocking IOdotNet 2.0/AspectJ+J2EE saved their projects and their jobs, and people (I imagine!) will come. I was about to say that I probably wouldn't come, and then remembered that one of the talks I really remember most from last year was BjornFreemanBenson on UrbanSim: a practitioner report that was just this kind of thing. I remember Bjorn running overtime, but there was noone speaking after him, so the room just asked him to keep on going...