2. Goal-oriented error estimation

In this manual page, it is assumed that you have read and understood the dolfin-adjoint training material on adjoint methods.

Goalie has been designed with time-dependent problems in mind. However, the exposition of goal-oriented error estimation is most clearly presented in the steady-state case. Therefore, suppose we have a “forward” PDE that contains only derivatives in space and is written in the residual form,

(1)\[F(u) = 0,\quad u\in V,\]

where \(u\) is the solution, which lives in a function space \(V\). In addition, suppose that there exists a diagnostic quantity of interest (QoI),

(2)\[J:V\rightarrow\mathbb R,\]

for which we would like to accurately evaluate \(J(u)\). The adjoint problem associated with \(J\) is then given by

(3)\[\frac{\partial F}{\partial u}^Tu^*=\frac{\partial J}{\partial u}^T, \quad u^*\in V,\]

where \(u^*\) is the adjoint solution, which also lives in \(V\).

Consider now a finite-dimensional subspace \(V_h\subset V\) and suppose that we have a weak formulation of the forward problem given by

(4)\[\rho(u_h,v)=0,\quad\forall v\in V_h,\]

where \(u_h\) is the approximate (weak) forward solution. Here \(\rho(u_h,\cdot)\) is often called the “weak residual” of the forward problem. This is the equation that we solve when we call solve_forward(). Similarly, suppose we have a weak formulation of the adjoint problem with approximate (weak) adjoint solution \(u_h^*\in V_h\):

(5)\[\rho^*(u_h^*,v)=0,\quad\forall v\in V_h,\]

where \(\rho^*(u_h^*,\cdot)\) is the weak residual of the adjoint problem. This is the equation that we solve when we call solve_adjoint().

Recall that we seek to accurately evaluate \(J\) using a finite element method. This is the same as saying that we seek to minimise the “QoI error” \(J(u)-J(u_h)\). The fundamental result in goal-oriented error estimation is the first order dual weighted residual result [BR01],

(6)\[J(u)-J(u_h)=\rho(u_h,u^*)+R^{(2)},\]

which relates the QoI error to the forward weak residual with the test function replaced by the adjoint solution. This result is “first order” in the sense that the remainder term \(R^{(2)}\) is quadratic in the forward and adjoint discretisation errors \(u-u_h\) and \(u^*-u_h^*\). There also exists a second order result,

(7)\[J(u)-J(u_h)=\frac12\rho(u_h,u^*)+\frac12\rho^*(u_h^*,u)+R^{(3)},\]

with remainder term \(R^{(3)}\) that is cubic in the forward and adjoint discretisation errors. We refer to the part of the RHS of each equation without the remainder term a dual weighted residual error estimate, since it approximates the QoI error.

Note that the first order DWR result (6) replaces the test function with the true adjoint solution, \(u^*\). Further, the second order result (7) also includes the true forward solution. Neither of these quantities are known in practice. Therefore, we can usually only evaluate dual weighted residual error estimates in an approximate sense. Typically, this means approximating the true adjoint and/or forward solution using a higher order method. A simple – but computationally intensive – approach is to solve the appropriate equation again in a globally “enriched” finite element space. For example, on a uniformly refined mesh or in a function space with higher polynomial order. This can be achieved in Goalie using indicate_errors(). See the Burgers error estimation demo for example usage.

2.1. References

[BR01]

Roland Becker and Rolf Rannacher. An optimal control approach to a posteriori error estimation in finite element methods. Acta numerica, 10:1–102, 2001. doi:10.1017/S0962492901000010.