[1] C. H. Bischof, H. M. Bücker, B. Lang, A. Rasch, and E. Slusanschi. Efficient and accurate derivatives for a software process chain in airfoil shape optimization. Future Gen. Comput. Syst., 21(8):1333--1344, October 2005. [ DOI ]
When using a Newton-based numerical algorithm to optimize the shape of an airfoil with respect to certain design parameters, a crucial ingredient is the derivative of the objective function with respect to the design parameters. In large-scale aerodynamics, this objective function is an output of a computational fluid dynamics program written in a high-level programming language such as Fortran or C.Numerical differentiation is commonly used to approximate derivatives but is subject to truncation and subtractive cancellation errors. For a particular two-dimensional airfoil, we instead apply automatic differentiation to compute accurate derivatives of the lift and drag coefficients with respect to geometric shape parameters. In automatic differentiation, a given program is transformed into another program capable of computing the original function together with its derivatives. In the problem at hand, the objective function consists of a sequence of programs: a MATLAB program followed by two Fortran 77 programs. It is shown how automatic differentiation is applied to a sequence of programs while keeping the computational complexity within reasonable limits. The derivatives computed by automatic differentiation are compared with approximations based on divided differences.

[2] Christian H. Bischof, Bruno Lang, and Andre Vehreschild. Automatic differentiation for MATLAB programs. Proc. Appl. Math. Mech., 2(1):50--53, March 2003. Proc. GAMM-Jahrestagung, March 25--28, 2002, Augsburg, Germany. [ DOI ]
Derivative information is required in numerous applications, including sensitivity analysis and numerical optimization. For simple functions, symbolic differentiation---done either manually or with a computer algebra system---can provide the derivatives, whereas divided differences (DD) have been used traditionally for functions defined by (potentially very complex) computer programs, even if only approximate values can be obtained this way. An alternative approach for such functions is automatic differentiation (AD), yielding exact derivatives at often lower cost than DD, and without restrictions on the program complexity. In this paper we compare the functionality and describe the use of ADMIT/ADMAT and ADiMat. These two AD tools provide derivatives for programs written in the MATLAB language, which is widely used for prototype and production software in scientific and engineering applications. While ADMIT/ADMAT implements a pure operator overloading approach of AD, ADiMat also employes source transformation techniques.

[3] Christian H. Bischof, H. Martin Bücker, Bruno Lang, and Arno Rasch. Automated gradient calculation. In Josef Ballmann, editor, Flow Modulation and Fluid-Structure Interaction at Airplane Wings, number 84 in Notes on Numerical Fluid Mechanics and Multidisciplinary Design, pages 205--224. Springer, Berlin, 2003. [ DOI ]
Automatic differentiation is a powerful technique for evaluating derivatives of functions given in the form of a high-level programming language such as Fortran, C, or C++. The program is treated as a sequence of elementary statements to which the chain rule of differential calculus is applied mechanically. A key feature of this technique is its ability to generate accurate derivatives rather than approximations obtained from numerical differentiation like divided differences. We survey automatic differentiation and report on preliminary results that have been obtained applying the automatic differentiation tool ADIFOR to a large-scale computational fluid dynamics solver, TFS, developed at Aerodynamisches Institut, Aachen University of Technology. This solver comprises approximately 24,000 lines of Fortran 77 and is able to resolve steady and unsteady laminar and turbulent flows in two and three dimensions.

[4] H. Martin Bücker, Bruno Lang, Arno Rasch, and Christian H. Bischof. Automatic parallelism in differentiation of Fourier transforms. In Chin-Cheng Hung, Henry Hexmoor, et al., editors, Proc. 2003 ACM Symposium on Applied Computing (SAC 2003), March 9--12, 2003, Melbourne, FL, pages 148--152, New York, NY, 2003. Assoc. Comput. Mach. [ DOI ]
For functions given in the form of a computer program, automatic differentiation is an efficient technique to accurately evaluate the derivatives of that function. Starting from a given computer program, automatic differentiation generates another program for the evaluation of the original function and its derivatives in a fully mechanical way. While the efficiency of this black box approach is already high as compared to numerical differentiation based on divided differences, automatic differentiation can be applied even more efficiently by taking into account high-level knowledge about the given computer program. We show that, in the case where the function involves a Fourier transform, the degree of parallelism in the program generated by automatic differentiation can be increased leading to a rich set of automatic parallelization strategies that are not available when employing a black box automatic parallelization approach. Experiments of the new automatic parallelization approach are reported on a SunFire 6800 server using up to 20 processors.

[5] C. H. Bischof, H. M. Bücker, B. Lang, A. Rasch, and A. Vehreschild. Combining source transformation and operator overloading techniques to compute derivatives for MATLAB programs. In Proc. 2nd IEEE Intl. Workshop on Source Code Analysis and Manipulation (SCAM 2002), October 1, 2002, Montreal, Canada, pages 65--72. IEEE Computer Society, November 2002. [ DOI ]
Derivatives of mathematical functions play a key role in various areas of numerical and technical computing. Many of these computations are done in MATLAB, a popular environment for technical computing providing engineers and scientists with capabilities for mathematical computing, analysis, visualization, and algorithmic development. For functions written in the MATLAB language, a novel software tool is proposed to automatically transform a given MATLAB program into another MATLAB program capable of computing not only the original function but also user-specified derivatives of that function. That is, a program transformation known as automatic differentiation is performed to change the semantics of the program in a fashion based on the chain rule of differential calculus. The crucial ingredient of the tool is a combination of source-to-source transformation and operator overloading. The overall design of the tool is described and numerical experiments are reported demonstrating the efficiency of the resulting code for a sample problem.

[6] H. Martin Bücker, Bruno Lang, Arno Rasch, and Christian H. Bischof. Computation of sensitivity information for aircraft design by automatic differentiation. In Peter M. A. Sloot, C. J. Kenneth Tan, Jack J. Dongarra, and Alfons G. Hoekstra, editors, Computational Science -- ICCS 2002 International Conference, April 21--24, 2002, Amsterdam, The Netherlands, Proceedings, Part II, number 2330 in LNCS, pages 1069--1076, Berlin, 2002. Springer-Verlag. [ DOI ]
Given a numerical simulation of the near wake of an airfoil, automatic differentiation is used to accurately compute the sensitivities of the Mach number with respect to the angle of attack. Such sensitivity information is crucial when integrating a pure simulation code into an optimization framework involving a gradient-based optimization technique. In this note, the ADIFOR system implementing the technology of automatic differentiation for functions written in Fortran 77 is used to mechanically transform a given flow solver called TFS into a new program capable of computing the original simulation and the desired derivatives in a simultaneous fashion. Numerical experiments of derivatives obtained from automatic differentiation and finite differences approximations are reported.

[7] H. Martin Bücker, Bruno Lang, Dieter an Mey, Arno Rasch, and Christian H. Bischof. Explicit loop scheduling in OpenMP for parallel automatic differentiation. In Jalal N. Almhana and C. Bhavsar Virendrakumar, editors, Proc. 16th Annual International Symposium on High Performance Computing Systems and Applications (HPCS 2002), Moncton, Canada, June 16--19, 2002, pages 121--126, Los Alamitos, CA, 2002. IEEE Computer Society. [ DOI ]
Derivatives of almost arbitrary functions can be evaluated efficiently by automatic differentiation whenever the functions are given in the form of computer programs in a high-level programming language such as Fortran, C, or C++. In contrast to numerical differentiation, where derivatives are only approximated, automatic differentiation generates derivatives that are accurate up to machine precision. Sophisticated software tools implementing the technology of automatic differentiation are capable of automatically generating code for the product of the Jacobian matrix and a so-called seed matrix. It is shown how these tools can benefit from concepts of shared memory programming to parallelize, in a completely mechanical fashion, the gradient operations associated with each statement of the given code. The feasibility of our approach is demonstrated by numerical experiments. They were performed with a code that was generated automatically by the Adifor system and augmented with OpenMP directives.

[8] H. Martin Bücker, Bruno Lang, Arno Rasch, and Christian H. Bischof. Sensitivity analysis of an airfoil simulation using automatic differentiation. In M. H. Hamza, editor, Proc. International IASTED Conference on Modelling, Identification, and Control (MIC 2002), Innsbruck, Austria, February 18--21, 2002, pages 73--76, Anaheim, CA, 2002. ACTA Press.
Derivatives are not only useful in sensitivity analysis but play a vital role in various areas of computational science including parameter optimization of computer models. Among the various methods for obtaining derivatives, automatic differentiation (AD) combines freedom from approximation errors, high performance, and the ability to handle arbitrarily complex codes arising from large-scale scientific investigations. In this note, we show how AD technology can aid in the sensitivity analysis of a computer model of an aircraft. To this end, the software tool ADIFOR, implementing the AD technology for functions written in Fortran 77, was applied to a large-scale computational fluid dynamics solver, TFS, developed at Aerodynamisches Institut, Aachen University of Technology. This solver comprises approximately 24,000 lines of Fortran 77 and is able to resolve steady and unsteady laminar and turbulent flows in two and three dimensions.

[9] H. Martin Bücker, Bruno Lang, Dieter an Mey, and Christian H. Bischof. Bringing together automatic differentiation and OpenMP. In M. Furnari and E. Gallopoulos, editors, Proceedings International Conference on Supercomputing, ICS 2001, Sorrento, Italy, June 17--21, 2001, pages 246--251, New York, NY, 2001. ACM Press. [ DOI ]
Derivatives of almost arbitrary functions can be evaluated efficiently by automatic differentiation whenever the functions are given in the form of computer programs in a high-level programming language such as Fortran, C, or C++. Furthermore, in contrast to numerical differentiation where derivatives are approximated, automatic differentiation generates derivatives that are accurate up to machine precision. The so-called forward mode of automatic differentiation computes derivatives by carrying forward a gradient associated with each intermediate variable simultaneously with the evaluation of the function itself. It is shown how software tools implementing the technology of automatic differentiation can benefit from simple concepts of shared memory programming to parallelize the gradient operations. The feasibility of our approach is demonstrated by numerical experiments. They were performed with a code that was generated automatically by the Adifor system and augmented with OpenMP directives.