AUTO_DERIV

Tool for automatic differentiation of a Fortran code


S. Stamatiadis, R. Prosmiti and S. C. Farantos

Institute of Electronic Structure and Laser
Foundation for Research and Technology - Hellas,

and

Department of Chemistry
University of Crete
Iraklion, Crete 711 10, Greece

Published in "Computer Physics Communications, 127 (2000) 343-355"

VERSION 2 (ADLS_v2_0) "Computer Physics Communications, 181 (2010) 1818"


Abstract

AUTO_DERIV is a module comprised of a set of Fortran 90 procedures which can be used to calculate the first and second partial derivatives of any continuous function with many independent variables. The function should be expressed as one or more Fortran 90 or Fortran 77 procedures. A new type of variables is defined and the overloading mechanism of functions and operators provided by the Fortran 90 language is extensively used to define the differentiation rules.

Title of the program: AUTO_DERIV
Catalogue number: ADLS, ADLS_v2_0
Program Summary URL: http://cpc.cs.qub.ac.uk/summaries/ADLS
Program obtainable from: CPC Program Library, Queen's University of Belfast, N. Ireland
Computer for which the program is designed: Any computer equipped with an ISO FORTRAN 90 conforming compiler
Computer on which the program has been tested : Intel Pentium II PC, IBM RS/6000, HP Exemplar
Operating system under which the program has been tested: GNU/Linux, AIX 4.3, HP-UX B.10.01
Programming language used: ISO FORTRAN 90
Compilers with which it has been tested: HP f90, NAGWare f95, IBM xlf90, Fujitsu F95, Absoft Pro Fortran F90, PGI Workstation pgf90
Memory required to execute with typical data: 680 KBytes
No. of bits in a word: 32
No. of bytes in distributed program, included test data etc: 68 402
Distribution format: ASCII
Keywords: Automatic differentiation, derivatives, Fortran 90, Potential Energy Surfaces, Molecular Dynamics, Non Linear Mechanics

Summary

Nature of physical problem
Complicated analytical functions of many independent variables often appear in molecular simulations. Particularly, in Molecular Dynamics the first and occasionally the second partial derivatives of the potential function are required which AUTO_DERIV evaluates to machine precision.

Method of Solution
The mathematical rules for differentiation of sums, products, quotients, elementary functions in conjunction with the chain rule for compound functions are applied. The function should be expressed as one or more Fortran 90 or Fortran 77 procedures. A new type of variables is defined and the overloading mechanism of functions and operators provided by the Fortran 90 language is extensively used to implement the differentiation rules.

Restrictions on the complexity of the problem
None imposed by the program. There are certain limitations that may appear mostly due to the specific implementation chosen in the user code. They can always be overcome by recoding parts of the routines developed by the user or by modifying AUTO_DERIV according to specific instructions given below. The common restrictions of available memory and the capabilities of the compiler hold.

Typical running time
The typical running time for the program depends on the compiler and the complexity of the differentiated function. A rough estimate is that AUTO_DERIV is an order of magnitude slower than the evaluation of the analytical function value and derivatives (if they were available).

Unusual features of the program
None.


The Complete Article 
SCF

Tue Nov 30 16:01:59 EET 2010