An adjoint equation is a linear differential equation, usually derived from its primal equation using integration by parts. Gradient values with respect to a particular quantity of interest can be efficiently calculated by solving the adjoint equation. Methods based on solution of adjoint equations are used in wing shape optimization, fluid flow control and uncertainty quantification.
Example: Advection-Diffusion PDE
Consider the following linear, scalar advection-diffusion equation for the primal solution
, in the domain
with Dirichlet boundary conditions:
![{\displaystyle {\begin{aligned}\nabla \cdot \left({\vec {c}}u-\mu \nabla u\right)&=f,\qquad {\vec {x}}\in \Omega ,\\u&=b,\qquad {\vec {x}}\in \partial \Omega .\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Let the output of interest be the following linear functional:
![{\displaystyle J(u)=\int _{\Omega }gu\ dV.}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Derive the weak form by multiplying the primal equation with a weighting function
and performing integration by parts:
![{\displaystyle {\begin{aligned}B(u,w)&=L(w),\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
where,
![{\displaystyle {\begin{aligned}B(u,w)&=\int _{\Omega }w\nabla \cdot \left({\vec {c}}u-\mu \nabla u\right)dV\\&=\int _{\partial \Omega }w\left({\vec {c}}u-\mu \nabla u\right)\cdot {\vec {n}}dA-\int _{\Omega }\nabla w\cdot \left({\vec {c}}u-\mu \nabla u\right)dV,\qquad {\text{(Integration by parts)}}\\L(w)&=\int _{\Omega }wf\ dV.\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Then, consider an infinitesimal perturbation to
which produces an infinitesimal change in
as follows:
![{\displaystyle {\begin{aligned}B(u+u',w)&=L(w)+L'(w)\\B(u',w)&=L'(w).\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Note that the solution perturbation
must vanish at the boundary, since the Dirichlet boundary condition does not admit variations on
.
Using the weak form above and the definition of the adjoint
given below:
![{\displaystyle {\begin{aligned}L'(\psi )&=J(u')\\B(u',\psi )&=J(u'),\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
we obtain:
![{\displaystyle {\begin{aligned}\int _{\partial \Omega }\psi \left({\vec {c}}u'-\mu \nabla u'\right)\cdot {\vec {n}}dA-\int _{\Omega }\nabla \psi \cdot \left({\vec {c}}u'-\mu \nabla u'\right)dV&=\int _{\Omega }gu'\ dV.\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Next, use integration by parts to transfer derivatives of
into derivatives of
:
![{\displaystyle {\begin{aligned}\int _{\partial \Omega }\psi \left({\vec {c}}u'-\mu \nabla u'\right)\cdot {\vec {n}}dA-\int _{\Omega }\nabla \psi \cdot \left({\vec {c}}u'-\mu \nabla u'\right)dV-\int _{\Omega }gu'\ dV&=0\\\int _{\partial \Omega }\psi \left({\vec {c}}u'-\mu \nabla u'\right)\cdot {\vec {n}}dA+\int _{\Omega }u'\left(-{\vec {c}}\cdot \nabla \psi \right)dV+\int _{\Omega }\nabla u'\cdot \left(\mu \nabla \psi \right)dV-\int _{\Omega }gu'\ dV&=0\\\int _{\partial \Omega }\psi \left({\vec {c}}u'-\mu \nabla u'\right)\cdot {\vec {n}}dA+\int _{\Omega }u'\left(-{\vec {c}}\cdot \nabla \psi \right)dV+\int _{\partial \Omega }u'\left(\mu \nabla \psi \right)\cdot {\vec {n}}dA-\int _{\Omega }u'\nabla \cdot \left(\mu \nabla \psi \right)dV-\int _{\Omega }gu'\ dV&=0\qquad {\text{(Repeating integration by parts on diffusion volume term)}}\\\int _{\Omega }u'\left[-{\vec {c}}\cdot \nabla \psi -\nabla \cdot \left(\mu \nabla \psi \right)-g\right]dV+\int _{\partial \Omega }\psi \left({\vec {c}}u'-\mu \nabla u'\right)\cdot {\vec {n}}dA+\int _{\partial \Omega }u'\left(\mu \nabla \psi \right)\cdot {\vec {n}}dA&=0.\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
The adjoint PDE and its boundary conditions can be deduced from the last equation above. Since
is generally non-zero within the domain
, it is required that
be zero in
, in order for the volume term to vanish. Similarly, since the primal flux
is generally non-zero at the boundary, we require
to be zero there in order for the first boundary term to vanish. The second boundary term vanishes trivially since the primal boundary condition requires
at the boundary.
Therefore, the adjoint problem is given by:
![{\displaystyle {\begin{aligned}-{\vec {c}}\cdot \nabla \psi -\nabla \cdot \left(\mu \nabla \psi \right)&=g,\qquad {\vec {x}}\in \Omega ,\\\psi &=0,\qquad {\vec {x}}\in \partial \Omega .\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Note that the advection term reverses the sign of the convective velocity
in the adjoint equation, whereas the diffusion term remains self-adjoint.
See also
References
- Jameson, Antony (1988). "Aerodynamic Design via Control Theory". Journal of Scientific Computing. 3 (3): 233–260. doi:10.1007/BF01061285. hdl:2060/19890004037. S2CID 7782485.