diff --git a/dune/gfe/rodassembler.cc b/dune/gfe/rodassembler.cc
index 9af57e408f5765be58eb47bf06476157c9a479ae..dc356b2e0f90d4a5d58809bb9c6dc7c2c38cc871 100644
--- a/dune/gfe/rodassembler.cc
+++ b/dune/gfe/rodassembler.cc
@@ -33,10 +33,10 @@ assembleGradient(const std::vector<RigidBodyMotion<3> >& sol,
     for (; it!=endIt; ++it) {
 
         // A 1d grid has two vertices
-        const int nDofs = 2;
+        static const int nDofs = 2;
 
         // Extract local solution
-        std::vector<RigidBodyMotion<3> > localSolution(nDofs);
+        Dune::array<RigidBodyMotion<3>, nDofs> localSolution;
         
         for (int i=0; i<nDofs; i++)
             localSolution[i] = sol[indexSet.subIndex(*it,i,gridDim)];
diff --git a/dune/gfe/rodlocalstiffness.hh b/dune/gfe/rodlocalstiffness.hh
index f0dfc6aef690b28acf33839bf232ed58fbf6e4fc..ac64fff625e039e0a82435a15827257d9ececc98 100644
--- a/dune/gfe/rodlocalstiffness.hh
+++ b/dune/gfe/rodlocalstiffness.hh
@@ -96,7 +96,7 @@ public:
     }
     
     virtual RT energy (const Entity& e,
-                       const std::vector<RigidBodyMotion<3> >& localSolution) const;
+                       const Dune::array<RigidBodyMotion<3>, dim+1>& localSolution) const;
 
     /** \brief Assemble the element gradient of the energy functional */
     void assembleGradient(const Entity& element,
@@ -142,7 +142,7 @@ protected:
 template <class GridType, class RT>
 RT RodLocalStiffness<GridType, RT>::
 energy(const Entity& element,
-       const std::vector<RigidBodyMotion<3> >& localSolution
+       const Dune::array<RigidBodyMotion<3>, dim+1>& localSolution
        ) const
 {
     RT energy = 0;
@@ -159,6 +159,9 @@ energy(const Entity& element,
     const Dune::QuadratureRule<double, 1>& shearingQuad 
         = Dune::QuadratureRules<double, 1>::rule(element.type(), shearQuadOrder);
     
+    // hack: convert from std::array to std::vector
+    std::vector<RigidBodyMotion<3> > localSolutionVector(localSolution.begin(), localSolution.end());
+
     for (size_t pt=0; pt<shearingQuad.size(); pt++) {
         
         // Local position of the quadrature point
@@ -168,7 +171,7 @@ energy(const Entity& element,
         
         double weight = shearingQuad[pt].weight() * integrationElement;
         
-        Dune::FieldVector<double,6> strain = getStrain(localSolution, element, quadPos);
+        Dune::FieldVector<double,6> strain = getStrain(localSolutionVector, element, quadPos);
         
         // The reference strain
         Dune::FieldVector<double,6> referenceStrain = getStrain(localReferenceConfiguration, element, quadPos);
@@ -189,7 +192,7 @@ energy(const Entity& element,
         
         double weight = bendingQuad[pt].weight() * element.geometry().integrationElement(quadPos);
         
-        Dune::FieldVector<double,6> strain = getStrain(localSolution, element, quadPos);
+        Dune::FieldVector<double,6> strain = getStrain(localSolutionVector, element, quadPos);
         
         // The reference strain
         Dune::FieldVector<double,6> referenceStrain = getStrain(localReferenceConfiguration, element, quadPos);