Faster geometry optimizations

Over the weekend, I finished up a long-needed change to the SVN trunk,
which just went in.

Previously, the force field code would evaluate geometry optimization
for one atom at a time. This means that for each atom, it would try a
move, evaluate the energy (of the whole molecule), repeat.

The much faster method (used by every other program) is to propose a
step for the entire molecule, then evaluate the energy. This requires
a new LineSearch() method, so it can’t be backported to the 2.1.x

The benefits are great. For a 63-atom molecule, the previous code
would execute 500 steps in 1 min. 50 sec. on my workstation.

New code: 8 seconds.

The effects are even more significant for larger molecules. OTOH, the
code hasn’t received a full workout. Please let me know if you
encounter problems!


P.S. This fix doesn’t require any user changes – call the
SteepestDescent and ConjugateGradients methods as normal. But it does
mean that Avogadro users may want to try out SVN trunk of Open Babel
soon. :wink: