The basic idea behind the IIM derives from the properties of many CFD solvers. Most implicit methods repeatedly solve
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
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
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:
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.