diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc
index 9d0697b88faca13faaf89501abcfcf25ea0a43a3..3fe0d2aec6061ecfd45014ec30e81e655eb0ce0e 100644
--- a/src/harmonicmaps.cc
+++ b/src/harmonicmaps.cc
@@ -12,6 +12,11 @@
 //#define ROTATION3
 //#define REALTUPLE1
 
+// Includes for the ADOL-C automatic differentiation library
+// Need to come before (almost) all others.
+#include <adolc/adouble.h>
+#include <dune/gfe/adolcnamespaceinjections.hh>
+
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/parametertree.hh>
 #include <dune/common/parametertreeparser.hh>
@@ -34,6 +39,7 @@
 #include <dune/gfe/rotation.hh>
 #include <dune/gfe/unitvector.hh>
 #include <dune/gfe/realtuple.hh>
+#include <dune/gfe/localgeodesicfeadolcstiffness.hh>
 #include <dune/gfe/harmonicenergystiffness.hh>
 #include <dune/gfe/chiralskyrmionenergy.hh>
 #include <dune/gfe/geodesicfeassembler.hh>
@@ -185,10 +191,14 @@ int main (int argc, char *argv[]) try
     // ////////////////////////////////////////////////////////////
 
     GFE::ChiralSkyrmionEnergy<GridType::LeafGridView, FEBasis::LocalFiniteElement, double> chiralSkyrmionEnergy;
-    HarmonicEnergyLocalStiffness<GridType::LeafGridView, FEBasis::LocalFiniteElement, TargetSpace> harmonicEnergyLocalStiffness;
-
-    GeodesicFEAssembler<FEBasis,TargetSpace> assembler(grid.leafGridView(),
-                                                                      &harmonicEnergyLocalStiffness);
+    // Assembler using ADOL-C
+    typedef TargetSpace::rebind<adouble>::other ATargetSpace;
+    HarmonicEnergyLocalStiffness<GridType::LeafGridView, FEBasis::LocalFiniteElement, ATargetSpace> harmonicEnergyADOLCLocalStiffness;
+    LocalGeodesicFEADOLCStiffness<GridType::LeafGridView,
+                                  FEBasis::LocalFiniteElement,
+                                  TargetSpace> localGFEADOLCStiffness(&harmonicEnergyADOLCLocalStiffness);
+
+    GeodesicFEAssembler<FEBasis,TargetSpace> assembler(grid.leafGridView(), &localGFEADOLCStiffness);
 
     // /////////////////////////////////////////////////
     //   Create a Riemannian trust-region solver