A wing’s shape might be described by a thousand adjustable parameters. Improving the design requires knowing how a small change in each parameter affects drag. Changing them one at a time could require roughly a thousand additional flow simulations. An adjoint method can obtain the needed sensitivities with far fewer large solves.
For a differentiable problem with a locally well-defined solution, the method starts with one chosen output, such as drag. After solving for the original flow, an additional adjoint problem provides information for calculating how that output responds to many parameters. There is still work involved in assembling the gradient, but the number of large solves need not increase with the number of parameters. [1]
A linear example shows the mechanism. Suppose a network is described by . The vector u contains unknown state values, b contains inputs, and the real, invertible matrix A describes their relationship. The output of interest is , a weighted sum of the state values. The vector c contains the weights, and the superscript T means transpose.
Next, solve for the adjoint vector λ, Substitution gives:
For fixed A and c, each component of λ tells how J changes when the corresponding component of b changes. One auxiliary solve has supplied the sensitivities to every input. There is no need to repeat the original state calculation separately for each input perturbation. [2]
For example, u could describe temperatures across an object, b could describe heating at different locations, and J could be one sensor reading. The adjoint identifies where an extra amount of heat would most strongly affect that sensor. The answer depends on how heat moves through the whole object, rather than simply on distance from the sensor.
Wing design adds complexity because changing the geometry also changes the governing equations. The same rearrangement of the chain rule remains useful. The resulting gradient describes sensitivity near the current design. It does not identify a global optimum or guarantee accurate predictions for large changes. Additional independent objectives generally require additional adjoint work. [1]
A practical check compares selected adjoint sensitivities with finite differences: perturb a few parameters and measure the resulting changes in the output. Carefully chosen perturbation sizes help expose errors in the derivative calculation before optimisation relies on it. [2]
The computational advantage comes from the shape of the question. When many inputs influence one output, calculating backwards from that output can gather information that would be expensive to obtain through repeated forward experiments. This makes detailed design searches feasible even when each individual simulation takes substantial time.
[1] Giles and Pierce — An introduction to the adjoint approach to design
[2] dolfin adjoint documentation — Differentiating functionals
Leave a Reply