DNAD
A Simple Automatic Differentiation Tool Using Dual Numbers
Target Application
- Automatically differentiate analysis codes
- Sensitivity calculation with respect to multiple design variables
Introduction
Dual Number Automatic Differentiation (DNAD) is a simple, general-purpose tool to carry out automatic differentiation of analysis codes including those legacy codes written in F77. Although only implementation using Fortran 90/95 was carried out, it should be simple to translate it to other computer languages such as c/c++.
Currently, DNAD is a Fortran 90/95 module developed using the arithmetic of dual numbers and the operator overloading feature of Fortran 90/95. Very minimum changes of the source codes are needed to enable sensitivity calculation of existing Fortran codes. Code differentiated using DNAD can exactly compute derivatives of the outputs with respect to multiple design variables. DNAD has been shown to be a better alterative than using finite differ-ence or complex-step approximation for computing derivatives
(sensitivities). It has been used to automatically differentiate VABS and GEBT in addition to well-known packages such as BLAS, LAPACK, ARPACK and MA28. It is an ideal way to compute sensitivities for a code you don’t know much about it. More details about DNAD including the source codes can be found from the following links. If you have successful story to share with us, you are welcome to either send me an email or post in my Google group: HiFi-Comp.
DNAD Documentation and Source Codes
References for DNAD