ADOL-C

A Package for Automatic Differentiation

of Algorithms Written in C/C++


 Current versions:

  • For UNIX / LINUX:
  • For Windows:
ADOL-C 1.10.1  (September 2005) 
ADOL-C 1.10.1  (September 2005)

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 convenient 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.gifADOL-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)$

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)

  • fREEDA, Electrical and Computer Engineering, North Carolina State University
  •    (Circuit simulation) 

  • GasNetOpt, Optimization group, Zuse Institute Berlin
  •    (Nonlinear optimization of the load distribution in gas networks)

  • MMT2, Research Center for Multidisciplinary Analysis and Applied Systems Optimization, University of Siegen
  •    (Modeling and simulation of metabolic networks)
     
  • 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)
     
  • UltraScan, Department of Biochemistry, University of Texas Health Science Center
  •    (Data analysis tool for the hydrodynamic studies)


    Whom to Contact
    Andrea Walther
    Technische Universität Dresden 
    Institut für Wissenschaftliches Rechnen 
    Mommsenstr. 13
    D-01062 Dresden, Germany
    phone: +49 (0)351 463 34082 
    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

    or mail to adol-c


    [return to:]Institute homepage

     email to administrator (Jan/10/2004)