Conjugate Gradients

AMMP uses the Polak-Ribiere algorithm for conjugate gradients with an inexact line search. AMMP will only terminate conjugate gradients when the number of steps is exhausted, or the calculated gradients are not a descent direction.

Conjugate gradients is invoked as:

cngdel nstep npivot toler ;

where nstep is the number of steps, npivot forces a reset every npivot steps, and toler is the desired value of the l_inifinity norm for the force. These can be abbreviated and entering the command as "cngdel 100;" to perform 100 steps is allowed.

During the iterations the routine prints the current potential, the l_inifinity norm on the force, and the value of b which is the conjugate dot product. The value for linfinity will hop around as it is the magnitude of the maximum force on any atom which can both increase and decrease.

The RMS force can be found by examining the value of the variable l2f (nop l2f; or dump variable) which is the sum of the squares of the forces.