I am always impressed by the capabilities of computational fluid dynamics and how companies and their engineers strive to optimize their design to create high-reliability, high-performances products. This is why I was extremely excited when I heard about a new optimization technique known as the adjoint method.
Of course, several different optimization techniques are already commonly used. The easiest technique is to optimize a product by analyzing a large number of configurations and selecting the one that delivers the best performance. This can be done using experiments or simulations. I will only discuss the simulation concept in the rest of this post; after all, we already know that simulation tools delivers great ROI and provide an excellent way to optimize design. The problem is that employing thousands of simulations to find the best design is much too time consuming. But, performing simulation for only a fraction of those designs and using practices like gradient methods, evolutionary algorithms and reduced-order models will identify the best design using a reduced set of simulation results.
While extremely powerful, these practices have two basic flaws:
- The parameters to modify and how to modify them has to be known a priori
- The design space needs to be mapped by performing tens or hundreds of configurations before you can even start the optimization process.
We can dream of a better solution. What if there is a solution that delivers valuable information on how to optimize a given design after the first simulation? What if this information could be used right away so that you do not waste time exploring areas of the design maps that are of no interest? What if when looking at a design map, you could have an “optimization GPS” that would automatically guide you to the best designs?
It is not a dream and such a solution exists. Gathering optimization information on the fly, while performing a simulation, is exactly what the adjoint method does.
Let’s use optimization of a car shape to minimize drag as an example.
The classic approach would be:
- Identify parameters that can affect the drag like the shape of the trunk.
- Identify parameters that control the shape of the trunk, and how to modify them. For example, the shape of the trunk is controlled by 3 main parameters (dimensions in the 3 directions) and 5 different variations for these parameters need to be tested.
- Perform 5x5x5 = 125 simulations.
- Post-process all the results and find the optimal shape.
This works great, but we can do better. Let’s see how this would work with an adjoint method.

The adjoint solver indicates which portion of the geometry to modify and how to modify it to obtain the optimized down-force on this Formula One design. " (Click image for larger view.)
- Set up the simulation with the initial shape and indicate the goal is to minimize the drag as a function of the trunk geometry.
- The CFD (computational fluid dynamics) solver and adjoint solver are run for the first simulation. The adjoint solution indicates what section of the trunk must be modified and proposes a better shape.
- Morph the geometry according to the recommendations from the adjoint method and run the simulation again. The adjoint method may identify an even better shape.
- Proceed in this manner until the adjoint method finds the shape that delivers the lower drag.
The optimal shape will be determined in few simulations using the adjoint method. With the adjoint method, you found the optimal shape faster and never had to worry about determining which parameter of the trunk size to vary and how.
The adjoint method is smart optimization. I hope you are now as excited as I am about this technology!
This technique not a dream, it is also available. Download ANSYS Fluent 14.0 from the ANSYS Customer Portal and start using this groundbreaking technology today.