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:

- The flow field is converged using the original ``tuned'' solver, free of interference from derivative augmentation.
- The derivatives of the flow field are converged using the same ``tuned'' solver.
- Derivative calculation for some variables can sometimes be factored out of the main time-stepping loop.

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.