diff --git a/dune/elasticity/materials/adolcmaterial.hh b/dune/elasticity/materials/adolcmaterial.hh
index ca86b0c4f8f9a7244142d4370c6c9622e4d6bc27..57b86b6ed3ea2d535a1f5aefce7b9630a6f427d9 100644
--- a/dune/elasticity/materials/adolcmaterial.hh
+++ b/dune/elasticity/materials/adolcmaterial.hh
@@ -68,7 +68,7 @@ public:
     }
 
     //! Evaluate the strain energy
-    ReturnType energy(const GridFunction& displace)
+    ReturnType energy(std::shared_ptr<GridFunction> displace)
     {
         typename LocalEnergy::ReturnType aEnergy(0.0);
 
@@ -83,7 +83,7 @@ public:
 
             // interpolate by local finite element to get the local coefficients
             typename LocalEnergy::CoefficientVectorType localCoeff(lfe.localBasis().size());
-            LocalWrapper fiLocal(displace,*eIt,0);
+            LocalWrapper fiLocal(*displace,*eIt,0);
 
             std::vector<typename LocalWrapper::RangeType> interpolationValues;
             for (int i=0; i<dim; i++) {