diff --git a/test/cosseratenergytest.cc b/test/cosseratenergytest.cc
index c6b8ec112b9875284b90b2572d2409c35c27440f..edaaffe9020b6839d20cd71149c70d0e884a4ea0 100644
--- a/test/cosseratenergytest.cc
+++ b/test/cosseratenergytest.cc
@@ -24,6 +24,33 @@ typedef RigidBodyMotion<double,3> TargetSpace;
 using namespace Dune;
 
 
+// ////////////////////////////////////////////////////////
+//   Make a test grid consisting of a single simplex
+// ////////////////////////////////////////////////////////
+
+template <class GridType>
+std::auto_ptr<GridType> makeSingleSimplexGrid()
+{
+    static const int domainDim = GridType::dimension;
+    GridFactory<GridType> factory;
+
+    FieldVector<double,dim> pos(0);
+    factory.insertVertex(pos);
+
+    for (int i=0; i<domainDim+1; i++) {
+        pos = 0;
+        pos[i] = 1;
+        factory.insertVertex(pos);
+    }
+
+    std::vector<unsigned int> v(domainDim+1);
+    for (int i=0; i<domainDim+1; i++)
+        v[i] = i;
+    factory.insertElement(GeometryType(GeometryType::simplex,dim), v);
+
+    return std::auto_ptr<GridType>(factory.createGrid());
+}
+
 
 template <int domainDim,class LocalFiniteElement>
 Tensor3<double,3,3,3> evaluateDerivativeFD(const LocalGeodesicFEFunction<domainDim,double,LocalFiniteElement,TargetSpace>& f,
@@ -185,24 +212,7 @@ void testFrameInvariance()
     // ////////////////////////////////////////////////////////
 
     typedef UGGrid<domainDim> GridType;
-
-    GridFactory<GridType> factory;
-
-    FieldVector<double,dim> pos(0);
-    factory.insertVertex(pos);
-
-    for (int i=0; i<domainDim+1; i++) {
-        pos = 0;
-        pos[i] = 1;
-        factory.insertVertex(pos);
-    }
-
-    std::vector<unsigned int> v(domainDim+1);
-    for (int i=0; i<domainDim+1; i++)
-        v[i] = i;
-    factory.insertElement(GeometryType(GeometryType::simplex,dim), v);
-
-    const std::auto_ptr<GridType> grid(factory.createGrid());
+    const std::auto_ptr<GridType> grid = makeSingleSimplexGrid<GridType>();
     
     // //////////////////////////////////////////////////////////
     //  Test whether the energy is invariant under isometries
@@ -239,26 +249,8 @@ void testEnergyGradient()
     // ////////////////////////////////////////////////////////
 
     typedef UGGrid<domainDim> GridType;
+    const std::auto_ptr<GridType> grid = makeSingleSimplexGrid<GridType>();
 
-    GridFactory<GridType> factory;
-
-    FieldVector<double,dim> pos(0);
-    factory.insertVertex(pos);
-
-    for (int i=0; i<domainDim+1; i++) {
-        pos = 0;
-        pos[i] = 1;
-        factory.insertVertex(pos);
-    }
-
-    std::vector<unsigned int> v(domainDim+1);
-    for (int i=0; i<domainDim+1; i++)
-        v[i] = i;
-    factory.insertElement(GeometryType(GeometryType::simplex,dim), v);
-
-    const std::auto_ptr<GridType> grid(factory.createGrid());
-
-    
     ////////////////////////////////////////////////////////////////////////////
     //  Create a local assembler object
     ////////////////////////////////////////////////////////////////////////////