CCL: Tinker: harmonic torsion potential

 Sent to CCL by: "Konrad  Hinsen" [khinsen*]
 On 18.11.2005, at 16:10, Mark Thompson wrote:
 > One trick that I've used is to verify MM first derivatives is to write a
 > numerical gradient routine to go along with analytical first derivative
 > code.  Then choose high symmetry cases (small test systems) centered on
 > the origin and tricks like that to test that numerical and analytical
 Another useful tool is automatic derivatives, in particular for non-trivial
 energy terms, as they
 permit a simple inspection of intermediate values.
 For the Python users out there, I provide a nicely packaged potential energy
 derivative module in
 my ScientificPython package, which is available at
 An example code for that module is:
 	from Scientific.Physics.Potential import PotentialWithGradients
 	from Scientific.Geometry import Vector
 	def _harmonic(k,r1,r2):
 	    dr = r2-r1
 	    return k*dr*dr
 	harmonic = PotentialWithGradients(_harmonic)
 	energy, gradients = harmonic(1., Vector(0,3,1), Vector(1,2,0))
 	print energy, gradients
 This prints
 3.0 [Vector(-2.0,2.0,2.0), Vector(2.0,-2.0,-2.0)]
 There is also a version for second derivatives. ScientificPython also has
 "raw" automatic derivatives
 of arbitrary order in Scientific.Functions.Derivatives.
 Konrad Hinsen
 Laboratoire Leon Brillouin (CEA-CNRS), CEA Saclay,
 91191 Gif-sur-Yvette Cedex, France
 Tel.: +33-1 69 08 79 25
 Fax: +33-1 69 08 82 61
 E-Mail: khinsen*_*