Incremental Iterative Approaches

Instead of (or perhaps in addition to) brute processor power, we can gain leverage on the high cost of derivatives by exploiting specific properties of CFD to formulate a more efficient derivative computation strategy. One such promising formulation is the incremental iterative method.

The basic idea behind the IIM derives from the properties of many CFD solvers. Most implicit methods repeatedly solve

As = r

where A is some linearization of the problem, r is the residual, and s is the flow field update. Each time step computes a new update s to the flow field. The derivative of the process yields

A's + As' = r'

Straightforward BB calculation implements this iterative process. Now suppose, however, that the flow field is converged. In this case s should be ``small,'' and the BB iteration simplifies to

As' = r'

Note that this process differs from the original process only in the use of r'. The IIM method for calculating derivatives, then, consists of two separate processes. First, converge the flow field. Second, compute r', and using the original solver, compute the update for the flow field derivatives. Repeat the second step until the derivatives converge.

The IIM formulation has a number of advantages:

At present, construction of an IIM derivative code cannot be totally automated. However, for well-modularized programs, like OVERFLOW, an IIM code can be fairly easily constructed with the aid of an AD tool. Such a construction proceeds by identifying the parts of the CFD program that compute r, differentiating those parts, and then reusing the original solver routine. We constructed an IIM code for sequential version of OVERFLOW using ADIFOR.

For our example, the timing improvement from IIM is modest. Further improvements were made by converting OVERFLOW's solver to use multiple right hand sides, thereby eliminating the cost of repeated factoring for multiple derivatives. We constructed a special tool based on ADIFOR's program analysis to do this conversion. The timings collected Using the multiple right hand side solver show significant improvement over BB computation and are much closer to the one-sided difference scheme than a two-sided difference scheme.