ADOL-C

A Package for Automatic Differentiation

of Algorithms Written in C/C++



 Current versions:
 
  • For UNIX / LINUX:
  • For Windows / DOS:
ADOL-C 1.9.0  (May 2004) 
ADOL-C 1.9.0  (Please contact us for detailed information!)

go to: Synopsis - Functionality - Availability - Sources and ArticlesApplications - Contact



Synopsis

The package ADOL-C facilitates the evaluation of first and higher derivatives of vector functions that are defined by computer programs written in C or C++. The resulting derivative evaluation routines may be called from C/C++, Fortran, or any other language that can be linked with C.

The numerical values of derivative vectors are obtained free of truncation errors at a small multiple of the run time and randomly accessed memory of the given function evaluation program.



Functionality

ADOL-C uses the operator overloading concept to compute in forward and reverse mode of automatic differentiation:

for a function that is given as a C/C++ code. The user has to make a few modifications to the evaluation code: ADOL-C provides: The operator overloading is used to produce the tape, an internal representation of the evaluation section marked. For each operation on the tape Instead of calling the routines for the forward and reverse mode directly the user may apply appropriate drivers to get the desired derivatives for a scalar-valued function scalar.gif.  Some of these covenient drivers are listed in the following table:
 
function(tag,m,n,x,y) $y = f(x) $
gradient(tag,n,x,g) gradient.gif
hessian(tag,n,x,H) $H =\,$ lower triangle of nabla1.gif
hess_vec(tag,n,x,v,z) nabla2.gif
lagra_hess_vec(tag,m,n,x,v,u,h) nabla3.gif

For vector-valued functions vector.gif ADOL-C provides also easy to use drivers. Again some of them are listed below:
 

function(tag,m,n,x,y) $y = f(x) $
jacobian(tag,m,n,x,J) $f^\prime(x) = J(x) = \left[\frac{\partial f_i}{\partial x_j}\right] \left. \right\vert _x$
jac_vec(tag,m,n,x,v,j) $j = J(x)\,v $
vec_jac(tag,m,n,repeat,x,u,j) $j = u^T\,J(x)$

Drivers for ODE's and routines to get full higher order derivative tensors are available. Storage and runtime requirements are clearly predictable. The tape is transferred to external mass storage devices and only strictly sequentially accessed. The much smaller randomly accessed memory can be precalculated using information on the tape.
 



Availability

ADOL-C is available free of charge provided under the terms of the Common Public License. Check the ftp sites for the source, the manual and examples. ADOL-C was tested on several platforms including Sun, LinuX, and SGI.


    Source and Articles

Software:

Documentation: Recent Papers:

Applications

 
  • DYNOPC, Department of Chemical Engineering, Carnegie Mellon University

  •    (Solution of dynamic optimization problems)
     
  • MUSCOD-II , Interdisciplinary Center for Scientific Computing (IWR), University of Heidelberg

  •    (Numerical Solution of Optimal Control Problems involving Differential-Algebraic Equations )
     
  • NEOS Server , Argonne National Laboratory

  •    (Network Enabled Optimization System for solving optimization problems remotely over the Internet)
     
  • Omuses, Institut für Automatisierungs- und Systemtechnik, TU Ilmenau

  •    (Optimization of Multistage Systems)


    Whom to Contact
    Andrea Walther
    Institut für Wissenschaftliches Rechnen 
    Technische Universität Dresden 
    Mommsenstr. 13
    01062 Dresden, Germany
    phone: +49 (0)351 463 35018 
    FAX:   +49 (0)351 463 37096
    email
    Andreas Griewank
    Humboldt-Universität zu Berlin
    Institut für Mathematik
    Unter den Linden 6
    D-10099 Berlin
    phone: +49 (0)30 2093 - 5820 
    FAX:   +49 (0)30 2093 - 8959 
    email
    Jean Utke
    Mathematics and Computer Science
    Argonne National Laboratory
    9700 S Cass Ave
    Argonne, IL
    60439-4844, USA
    phone: +1 630 252 4552
    FAX:   +1 630 252 5986
    email


    A comprehensive collection of AD related news, papers and tools can be found at www.autodiff.org

    email the page owner
    (May/10/2004)