FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke...
Transcript of FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke...
![Page 1: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/1.jpg)
FEniCS CourseLecture 13: Introduction to dolfin-adjoint
ContributorsSimon FunkePatrick FarrellMarie E. Rognes
1 / 25
![Page 2: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/2.jpg)
Computing sensitivities
So far we focused on solving PDEs.But often we are also interested the sensitivity with respect tocertain parameters, for example
• initial conditions,
• forcing terms,
• unkown coefficients.
2 / 25
![Page 3: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/3.jpg)
Computing sensitivities
So far we focused on solving PDEs.But often we are also interested the sensitivity with respect tocertain parameters, for example
• initial conditions,
• forcing terms,
• unkown coefficients.
Forward PDE, functional, parameter
Adjoint PDETangent linear PDE Second order adjoint PDE
Derivatives Error estimation
Sensitivity analysis Generalised stability analysisOptimisation
Uncertainty quantification
Continuation analysis
Data assimilation
Optimisation under uncertainty
Bifurcation analysis
Goal-based adaptivity
2 / 25
![Page 4: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/4.jpg)
Computing sensitivities
So far we focused on solving PDEs.But often we are also interested the sensitivity with respect tocertain parameters, for example
• initial conditions,
• forcing terms,
• unkown coefficients.
Forward PDE, functional, parameter
Adjoint PDETangent linear PDE Second order adjoint PDE
Derivatives Error estimation
Sensitivity analysis Generalised stability analysisOptimisation
Uncertainty quantification
Continuation analysis
Data assimilation
Optimisation under uncertainty
Bifurcation analysis
Goal-based adaptivity
2 / 25
![Page 5: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/5.jpg)
Example
Consider the Poisson’s equation
−ν∆u = m in Ω,
u = 0 on ∂Ω,
together with the objective functional
J(u) =1
2
∫Ω‖u− ud‖2 dx,
where ud is a known function.
GoalCompute the sensitivity of J with respect to the parameter m:dJ/dm.
3 / 25
![Page 6: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/6.jpg)
Comput. deriv. (i) General formulation
Given
• Parameter m,
• PDE F (u,m) = 0 with solution u.
• Objective functional J(u,m)→ R,
GoalCompute dJ/dm.
Reduced functionalConsider u as an implicit function of m by solving the PDE.With that we define the reduced functional R:
R(m) = J(u(m),m)
4 / 25
![Page 7: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/7.jpg)
Comput. deriv. (i) General formulation
Given
• Parameter m,
• PDE F (u,m) = 0 with solution u.
• Objective functional J(u,m)→ R,
GoalCompute dJ/dm.
Reduced functionalConsider u as an implicit function of m by solving the PDE.With that we define the reduced functional R:
R(m) = J(u(m),m)
4 / 25
![Page 8: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/8.jpg)
Comput. deriv. (i) General formulation
Given
• Parameter m,
• PDE F (u,m) = 0 with solution u.
• Objective functional J(u,m)→ R,
GoalCompute dJ/dm.
Reduced functionalConsider u as an implicit function of m by solving the PDE.With that we define the reduced functional R:
R(m) = J(u(m),m)
4 / 25
![Page 9: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/9.jpg)
Comput. deriv. (ii) Reduced functional
Reduced functional:
R(m) ≡ J(u(m),m).
Taking the derivative of with respect to m yields:
dR
dm=
dJ
dm=∂J
∂u
du
dm+∂J
∂m.
Computing ∂J∂u and ∂J
∂m is straight-forward, but how handle dudm?
5 / 25
![Page 10: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/10.jpg)
Comput. deriv. (ii) Reduced functional
Reduced functional:
R(m) ≡ J(u(m),m).
Taking the derivative of with respect to m yields:
dR
dm=
dJ
dm=∂J
∂u
du
dm+∂J
∂m.
Computing ∂J∂u and ∂J
∂m is straight-forward, but how handle dudm?
5 / 25
![Page 11: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/11.jpg)
Comput. deriv. (ii) Reduced functional
Reduced functional:
R(m) ≡ J(u(m),m).
Taking the derivative of with respect to m yields:
dR
dm=
dJ
dm=∂J
∂u
du
dm+∂J
∂m.
Computing ∂J∂u and ∂J
∂m is straight-forward, but how handle dudm?
5 / 25
![Page 12: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/12.jpg)
Comput. deriv. (iii) Computing dudm
Taking the derivative of F (u,m) = 0 with respect to m yields:
dF
dm=∂F
∂u
du
dm+∂F
∂m= 0
Hence:
du
dm= −
(∂F
∂u
)−1 ∂F
∂m
Final formula for functional derivative
dJ
dm= −
adjoint PDE︷ ︸︸ ︷∂J
∂u
(∂F
∂u
)−1 ∂F
∂m︸ ︷︷ ︸tangent linear PDE
+∂J
∂m,
6 / 25
![Page 13: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/13.jpg)
Comput. deriv. (iii) Computing dudm
Taking the derivative of F (u,m) = 0 with respect to m yields:
dF
dm=∂F
∂u
du
dm+∂F
∂m= 0
Hence:
du
dm= −
(∂F
∂u
)−1 ∂F
∂m
Final formula for functional derivative
dJ
dm= −
adjoint PDE︷ ︸︸ ︷∂J
∂u
(∂F
∂u
)−1 ∂F
∂m︸ ︷︷ ︸tangent linear PDE
+∂J
∂m,
6 / 25
![Page 14: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/14.jpg)
Comput. deriv. (iii) Computing dudm
Taking the derivative of F (u,m) = 0 with respect to m yields:
dF
dm=∂F
∂u
du
dm+∂F
∂m= 0
Hence:
du
dm= −
(∂F
∂u
)−1 ∂F
∂m
Final formula for functional derivative
dJ
dm= −
adjoint PDE︷ ︸︸ ︷∂J
∂u
(∂F
∂u
)−1 ∂F
∂m︸ ︷︷ ︸tangent linear PDE
+∂J
∂m,
6 / 25
![Page 15: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/15.jpg)
Dimensions of a finite dimensional example
dJ
dm=
discretised adjoint PDE︷ ︸︸ ︷−∂J
∂u ×(∂F∂u
)−1 × ∂F∂m
︸ ︷︷ ︸discretised tangent linear PDE
+ ∂J∂m
The tangent linear solution is a matrix of dimension |u| × |m|and requires the solution of m linear systems. The adjointsolution is a vector of dimension |u| and requires the solution ofone linear systems.
7 / 25
![Page 16: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/16.jpg)
Adjoint approach
1 Solve the adjoint equation for λ
∂F
∂u
∗λ = −∂J
∗
∂u.
2 ComputedJ
dm= λ∗
∂F
∂m+∂J
∂m.
The computational expensive part is (1). It requires solving the(linear) adjoint PDE, and its cost is independent of the choiceof parameter m.
8 / 25
![Page 17: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/17.jpg)
What is dolfin-adjoint?
Dolfin-adjoint is an extension of FEniCS for: solving adjointand tangent linear equations; generalised stability analysis;PDE-constrained optimisation.
Main features
• Automated derivation of first and second order adjoint andtangent linear models.
• Discretely consistent derivatives.
• Parallel support and near theoretically optimalperformance.
• Interface to optimisation algorithms for PDE-constrainedoptimisation.
• Documentation and examples onwww.dolfin-adjoint.org.
9 / 25
![Page 18: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/18.jpg)
What has dolfin-adjoint been used for?Layout optimisation of tidal turbines
• Up to 400 tidal turbines in one farm.
• What are the optimal locations to maximise powerproduction?
10 / 25
![Page 19: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/19.jpg)
What has dolfin-adjoint been used for?Layout optimisation of tidal turbines
0 20 40 60 80 100 120 140Optimisation iteration
600
650
700
750
800
850
Pow
er[M
W]
11 / 25
![Page 20: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/20.jpg)
What has dolfin-adjoint been used for?Layout optimisation of tidal turbines
Python code
from dolfin import *
from dolfin_adjoint import *
# FEniCS model
# ...
J = Functional(turbines*inner(u, u)**(3/2)*dx*dt)
m = Control(turbine_positions)
R = ReducedFunctional(J, m)
maximize(R)
12 / 25
![Page 21: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/21.jpg)
What has dolfin-adjoint been used for?Reconstruction of a tsunami wave
1
Is it possible to reconstruct a tsunami wave from images likethis?
1Image: ASTER/NASA PIA0667113 / 25
![Page 22: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/22.jpg)
What has dolfin-adjoint been used for?Reconstruction of a tsunami wave
0 5 10 15 20 25 30 35 40 45Iteration
10−6
10−5
10−4
10−3
10−2
J(ηD
)
14 / 25
![Page 23: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/23.jpg)
Reconstruction of a tsunami wave
Python code
from fenics import *
from dolfin_adjoint import *
# FEniCS model
# ...
J = Functional(observation_error**2*dx*dt)
m = Control(input_wave)
R = ReducedFunctional(J, m)
minimize(R)
15 / 25
![Page 24: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/24.jpg)
Other applications
Dolfin-adjoint has been applied to lots of other cases, andworks for many PDEs:
Some PDEs we have adjoined
• Burgers
• Navier-Stokes
• Stokes + mantle rheology
• Stokes + ice rheology
• Saint Venant +wetting/drying
• Cahn-Hilliard
• Gray-Scott
• Shallow ice
• Blatter-Pattyn
• Quasi-geostrophic
• Viscoelasticity
• Gross-Pitaevskii
• Yamabe
• Image registration
• Bidomain
• . . .
16 / 25
![Page 25: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/25.jpg)
Example
Compute the sensitivity of
J(u) =
∫Ω‖u− ud‖2 dx
with known ud and the Poisson equation:
−ν∆u = m in Ω
u = 0 on ∂Ω.
with respect to m.
17 / 25
![Page 26: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/26.jpg)
Poisson solver in FEniCSAn implementation of the Poisson’s equation might look like this:
Python code
from fenics import *
# Define mesh and finite element space
mesh = UnitSquareMesh(50, 50)
V = FunctionSpace(mesh , "Lagrange", 1)
# Define basis functions and parameters
u = TrialFunction(V)
v = TestFunction(V)
m = interpolate(Constant(1.0), V)
nu = Constant(1.0)
# Define variational problem
a = nu*inner(grad(u), grad(v))*dx
L = m*v*dx
bc = DirichletBC(V, 0.0, "on_boundary")
# Solve variational problem
u = Function(V)
solve(a == L, u, bc)
plot(u, title="u")
18 / 25
![Page 27: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/27.jpg)
Dolfin-adjoint (i): Annotation
The first change necessary to adjoin this code is to import thedolfin-adjoint module after importing DOLFIN:
Python code
from fenics import *
from dolfin_adjoint import *
With this, dolfin-adjoint will record each step of the model,building an annotation. The annotation is used to symbolicallymanipulate the recorded equations to derive the tangent linearand adjoint models.
In this particular example, the solve function method will berecorded.
19 / 25
![Page 28: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/28.jpg)
Dolfin-adjoint (ii): Objective Functional
Next, we implement the objective functional, the squareL2-norm of u− ud:
J(u) =
∫Ω‖u− ud‖2 dx
or in codePython code
j = inner(u - u_d , u - u_d)*dx
J = Functional(j)
20 / 25
![Page 29: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/29.jpg)
Dolfin-adjoint (ii): Control parameter
Next we need to decide which parameter we are interested in.Here, we would like to investigate the sensitivity with respect tothe source term m.
We inform dolfin-adjoint of this:Python code
m = Control(m)
21 / 25
![Page 30: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/30.jpg)
Dolfin-adjoint (iii): Computing gradients
Now, we can compute the gradient with:Python code
dJdm = compute_gradient(J, m, project=True)
Dolfin-adjoint derives and solves the adjoint equations for usand returns the gradient.
NoteIf you call compute gradient more than once, you need topass forget=False as a parameter. Otherwise you get an error:Need a value for u 1:0:0:Forward, but don’t have one recorded.
Computational cost
Computing the gradient requires one adjoint solve.
22 / 25
![Page 31: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/31.jpg)
Dolfin-adjoint (iii): Computing gradients
Now, we can compute the gradient with:Python code
dJdm = compute_gradient(J, m, project=True)
Dolfin-adjoint derives and solves the adjoint equations for usand returns the gradient.
NoteIf you call compute gradient more than once, you need topass forget=False as a parameter. Otherwise you get an error:Need a value for u 1:0:0:Forward, but don’t have one recorded.
Computational cost
Computing the gradient requires one adjoint solve.
22 / 25
![Page 32: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/32.jpg)
Dolfin-adjoint (iii): Computing gradients
Now, we can compute the gradient with:Python code
dJdm = compute_gradient(J, m, project=True)
Dolfin-adjoint derives and solves the adjoint equations for usand returns the gradient.
NoteIf you call compute gradient more than once, you need topass forget=False as a parameter. Otherwise you get an error:Need a value for u 1:0:0:Forward, but don’t have one recorded.
Computational cost
Computing the gradient requires one adjoint solve.
22 / 25
![Page 33: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/33.jpg)
Dolfin-adjoint (iii): Computing Hessians
Dolfin-adjoint can also compute the second derivatives(Hessians):
Python code
H = hessian(J, m)
direction = interpolate(Constant(1), V)
plot(H(direction))
Computational cost
Computing the directional second derivative requires onetangent linear and two adjoint solves.
23 / 25
![Page 34: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/34.jpg)
Dolfin-adjoint (iii): Computing Hessians
Dolfin-adjoint can also compute the second derivatives(Hessians):
Python code
H = hessian(J, m)
direction = interpolate(Constant(1), V)
plot(H(direction))
Computational cost
Computing the directional second derivative requires onetangent linear and two adjoint solves.
23 / 25
![Page 35: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/35.jpg)
Verification
How can you check that the gradient is correct?
Taylor expansion of the reduced functional R in a perturbationδm yields:
|R(m+ εδm)−R(m)| → 0 at O(ε)
but
|R(m+ εδm)−R(m)− ε∇R · δm| → 0 at O(ε2)
Taylor test
Choose m, δm and determine the convergence rate by reducingε. If the convergence order with gradient is ≈ 2, your gradient isprobably correct.
The function taylor test implements the Taylor test for you.See help(taylor test).
24 / 25
![Page 36: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/36.jpg)
Verification
How can you check that the gradient is correct?
Taylor expansion of the reduced functional R in a perturbationδm yields:
|R(m+ εδm)−R(m)| → 0 at O(ε)
but
|R(m+ εδm)−R(m)− ε∇R · δm| → 0 at O(ε2)
Taylor test
Choose m, δm and determine the convergence rate by reducingε. If the convergence order with gradient is ≈ 2, your gradient isprobably correct.
The function taylor test implements the Taylor test for you.See help(taylor test).
24 / 25
![Page 37: FEniCS Course · FEniCS Course Lecture 13: Introduction to dol n-adjoint Contributors Simon Funke Patrick Farrell Marie E. Rognes 1 / 25. Computing sensitivities So far we focused](https://reader036.fdocuments.us/reader036/viewer/2022062415/6051dffc65ac2e47630d6cc0/html5/thumbnails/37.jpg)
Getting started with Dolfin-adjoint
1 Compute the gradient and Hessian of the Poisson examplewith respect to m.
2 Run the Taylor test to check that the gradient is correct.
3 Measure the computation time for the forward, gradientand Hessian computation. What do you observe? Hint:Use help(Timer).
25 / 25