diff --git a/inputs/cellsolver.parset b/inputs/cellsolver.parset
index d9b1d490bb1173b15f5b9338caefe833e7cb05af..0fb19495532575032af50a86c03fa3881117d8a8 100644
--- a/inputs/cellsolver.parset
+++ b/inputs/cellsolver.parset
@@ -16,7 +16,8 @@ cellDomain = 1
 
 #nElements_Cell = 20 20 20	               # number elements in each direction (y1 y2 x3) 
 #nElements_Cell = 100 100 2
-nElements_Cell = 4 4 4
+nElements_Cell = 10 10 10
+#nElements_Cell = 4 4 4
 
 width = 1.0 	    
 
diff --git a/src/dune-microstructure.cc b/src/dune-microstructure.cc
index d188d12287208c1c3166454dba5109697b5d243d..9fee3c166847f182f2e0b991299693e27f6e298b 100644
--- a/src/dune-microstructure.cc
+++ b/src/dune-microstructure.cc
@@ -61,7 +61,7 @@ auto arbitraryComponentwiseIndices(const Basis& basis,
                                    const int leafIdx
                                    )
 {
-  // (Local Approach -- works for non Lagrangian-Basis too) 
+  // (Local Approach -- works for non Lagrangian-Basis too)
   // Input  : elementNumber & localIdx
   // Output : determine all Component-Indices that correspond to that basis-function
   auto localView = basis.localView();
@@ -74,7 +74,7 @@ auto arbitraryComponentwiseIndices(const Basis& basis,
     if(elementCounter == elementNumber)             // get arbitraryIndex(global) for each Component        ..alternativ:gridView.indexSet
     {
       localView.bind(element);
-      
+
       for (int k = 0; k < 3; k++)
       {
         auto rowLocal = localView.tree().child(k).localIndex(leafIdx);    //Input: LeafIndex! TODO braucht hier (Inverse )  Local-to-Leaf Idx Map
@@ -127,8 +127,8 @@ void computeElementStiffnessMatrix(const LocalView& localView,
   const auto& localFiniteElement = localView.tree().child(0).finiteElement();     // Unterscheidung children notwendig?
   const auto nSf = localFiniteElement.localBasis().size();
 
-//   std::cout << "localView.size(): " << localView.size() << std::endl; 
-//   std::cout << "nSf : " << nSf << std::endl; 
+//   std::cout << "localView.size(): " << localView.size() << std::endl;
+//   std::cout << "nSf : " << nSf << std::endl;
 
   ///////////////////////////////////////////////
   // Basis for R_sym^{2x2}            // wird nicht als Funktion benötigt da konstant...
@@ -143,7 +143,7 @@ void computeElementStiffnessMatrix(const LocalView& localView,
 //       printmatrix(std::cout, basisContainer[2] , "G_3", "--");
   ////////////////////////////////////////////////////
 
-//   int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;  // TEST 
+//   int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;  // TEST
   int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
   const auto& quad = QuadratureRules<double,dim>::rule(element.type(), orderQR);
 
@@ -295,14 +295,14 @@ void computeElementStiffnessMatrix(const LocalView& localView,
 //     for (size_t k=0; k < nCompo; k++)
 //         for (size_t i=0; i < nSf; i++)
 //         {
-// 
+//
 //             // (scaled) Deformation gradient of the ansatz basis function
 //             MatrixRT defGradientU(0);
 //             defGradientU[k][0] = gradients[i][0];               // Y
 //             defGradientU[k][1] = gradients[i][1];               //X2
 //             defGradientU[k][2] = (1.0/gamma)*gradients[i][2];   //X3
-// 
-// 
+//
+//
 //             // symmetric Gradient (Elastic Strains)
 //             MatrixRT strainU;
 //             for (int ii=0; ii<nCompo; ii++)
@@ -310,34 +310,34 @@ void computeElementStiffnessMatrix(const LocalView& localView,
 //             {
 //                 strainU[ii][jj] = 0.5 * (defGradientU[ii][jj] + defGradientU[jj][ii]);         // symmetric gradient
 //             }
-// 
+//
 //             // St.Venant-Kirchhoff stress
 //             MatrixRT stressU(0);
 //             stressU.axpy(2*mu(quadPos), strainU); //this += 2mu *strainU
-// 
+//
 //             double trace = 0;
 //             for (int ii=0; ii<nCompo; ii++)
 //             trace += strainU[ii][ii];
-// 
+//
 //             for (int ii=0; ii<nCompo; ii++)
 //             stressU[ii][ii] += lambda(quadPos) * trace;
-// 
+//
 //             for( size_t n=0; n<3; n++)
 //             {
-// 
+//
 //                 // < L sym[D_gamma*nabla phi_i], G_j >
 //                 double energyDensityPhiG = 0;
 //                 for (int ii=0; ii<nCompo; ii++)
 //                 for (int jj=0; jj<nCompo; jj++)
 //                     energyDensityPhiG += stressU[ii][jj] * basisContainer[n][ii][jj];             // "phi*m"-part
-// 
+//
 //                 size_t col = localView.tree().child(k).localIndex(i);
-// 
+//
 //                 elementMatrix[localPhiOffset+n][col] += energyDensityPhiG * quadPoint.weight() * integrationElement;
-// 
+//
 //             }
 //         }
-// 
+//
 
 
 
@@ -382,12 +382,12 @@ void getOccupationPattern(const Basis& basis, MatrixIndexSet& nb, ParameterSet&
   //  OccupationPattern:
   // | phi*phi    m*phi |
   // | phi *m     m*m   |
-    
+
   auto localView = basis.localView();
 
   const int phiOffset = basis.dimension();
 
-  nb.resize(basis.size()+3, basis.size()+3);       
+  nb.resize(basis.size()+3, basis.size()+3);
 
   for (const auto& element : elements(basis.gridView()))
   {
@@ -421,31 +421,31 @@ void getOccupationPattern(const Basis& basis, MatrixIndexSet& nb, ParameterSet&
       }
   }
   //////////////////////////////////////////////////////////////////
-  // setOneBaseFunctionToZero              
+  // setOneBaseFunctionToZero
   //////////////////////////////////////////////////////////////////
-  if(parameterSet.template get<bool>("set_IntegralZero", true)){ 
+  if(parameterSet.template get<bool>("set_IntegralZero", true)){
     FieldVector<int,3> row;
-    unsigned int arbitraryLeafIndex =  parameterSet.template get<unsigned int>("arbitraryLeafIndex", 0);  
+    unsigned int arbitraryLeafIndex =  parameterSet.template get<unsigned int>("arbitraryLeafIndex", 0);
     unsigned int arbitraryElementNumber =  parameterSet.template get<unsigned int>("arbitraryElementNumber", 0);
-    
-    
-    
-//     assert(arbitraryLeafIndex < localView.size() );              // "localIndex is larger than #shapeFunctions"               TODO ERROR 
-    
-    
+
+
+
+//     assert(arbitraryLeafIndex < localView.size() );              // "localIndex is larger than #shapeFunctions"               TODO ERROR
+
+
     const auto& localFiniteElement = localView.tree().child(0).finiteElement();        // macht keinen Unterschied ob hier k oder 0..
-    const auto nSf = localFiniteElement.localBasis().size();     
-    assert(arbitraryLeafIndex < nSf );       
-    
+    const auto nSf = localFiniteElement.localBasis().size();
+    assert(arbitraryLeafIndex < nSf );
+
     std::cout << "arbitraryElementNumber:" << arbitraryElementNumber << std::endl;
     std::cout << "basis.gridView().size(0:" << basis.gridView().size(0) << std::endl;
     assert(arbitraryElementNumber  < basis.gridView().size(0));   // "arbitraryElementNumber larger than total Number of Elements"
-    
+
     //Determine 3 global indices (one for each component of an arbitrary local FE-function)
     row = arbitraryComponentwiseIndices(basis,arbitraryElementNumber,arbitraryLeafIndex);
-    
+
     printvector(std::cout, row, "row" , "--");
-    
+
     for (int k = 0; k<3; k++)
       nb.add(row[k],row[k]);
   }
@@ -499,12 +499,12 @@ void computeElementLoadVector( const LocalView& localView,
   MatrixRT G_3 {{0.0, 1.0/sqrt(2), 0.0}, {1.0/sqrt(2), 0.0, 0.0}, {0.0, 0.0, 0.0}};
   std::array<MatrixRT,3 > basisContainer = {G_1, G_2, G_3};
 
-//   int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;  // TEST 
+//   int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;  // TEST
   int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);   // für simplex
   const auto& quad = QuadratureRules<double,dim>::rule(element.type(), orderQR);
 
 
-  for (const auto& quadPoint : quad) 
+  for (const auto& quadPoint : quad)
   {
 
 
@@ -553,7 +553,7 @@ void computeElementLoadVector( const LocalView& localView,
         double energyDensity = 0.0;
         for (int ii=0; ii<nCompo; ii++)
           for (int jj=0; jj<nCompo; jj++)
-            energyDensity += stressV[ii][jj] *forceTerm(quadPos)[ii][jj];                                              
+            energyDensity += stressV[ii][jj] *forceTerm(quadPos)[ii][jj];
 
 
         size_t row = localView.tree().child(k).localIndex(i);
@@ -579,7 +579,7 @@ void computeElementLoadVector( const LocalView& localView,
       double energyDensityfG = 0;
       for (int ii=0; ii<nCompo; ii++)
         for (int jj=0; jj<nCompo; jj++)
-          energyDensityfG += stressG[ii][jj] * forceTerm(quadPos)[ii][jj];                                          
+          energyDensityfG += stressG[ii][jj] * forceTerm(quadPos)[ii][jj];
 
       elementRhs[localPhiOffset+m] += energyDensityfG * quadPoint.weight() * integrationElement;
     }
@@ -719,8 +719,8 @@ void assembleCellLoad(const Basis& basis,
     {
       b[phiOffset+m] += elementRhs[localPhiOffset+m];
     }
-    
-    
+
+
 //     printvector(std::cout, b, "b", "--");
   }
 
@@ -753,10 +753,10 @@ auto energy(const Basis& basis,
   using GridView = typename Basis::GridView;
   using Domain = typename GridView::template Codim<0>::Geometry::GlobalCoordinate;
   using MatrixRT = FieldMatrix< double, nCompo, nCompo>;
-  
-  
-  
-  // TEST 
+
+
+
+  // TEST
 //   FieldVector<double,3> testvector = {1.0 , 1.0 , 1.0};
 //   printmatrix(std::cout, matrixFieldFuncB(testvector) , "matrixFieldB(testvector) ", "--");
 
@@ -776,14 +776,14 @@ auto energy(const Basis& basis,
     auto geometry = e.geometry();
     const auto& localFiniteElement = localView.tree().child(0).finiteElement();
 
-//     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+3;  // TEST 
+//     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+3;  // TEST
     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
     const QuadratureRule<double, dim>& quad = QuadratureRules<double, dim>::rule(e.type(), orderQR);
 
     for (const auto& quadPoint : quad) {
 //     for (size_t pt=0; pt < quad.size(); pt++) {
-        
-        
+
+
       const FieldVector<double,dim>& quadPos = quadPoint.position();
 //       const Domain& quadPos = quad[pt].position();
       const double integrationElement = geometry.integrationElement(quadPos);
@@ -836,7 +836,7 @@ void setOneBaseFunctionToZero(const Basis& basis,
   constexpr int dim = 3;
 
   FieldVector<int,3> row;
-  unsigned int arbitraryLeafIndex =  parameterSet.template get<unsigned int>("arbitraryLeafIndex", 0);  
+  unsigned int arbitraryLeafIndex =  parameterSet.template get<unsigned int>("arbitraryLeafIndex", 0);
   unsigned int arbitraryElementNumber =  parameterSet.template get<unsigned int>("arbitraryElementNumber", 0);
 
   //Determine 3 global indices (one for each component of an arbitrary local FE-function)
@@ -844,7 +844,7 @@ void setOneBaseFunctionToZero(const Basis& basis,
 
   for (int k = 0; k < dim; k++)
   {
-    load_alpha1[row[k]] = 0.0;                                          
+    load_alpha1[row[k]] = 0.0;
     load_alpha2[row[k]] = 0.0;
     load_alpha3[row[k]] = 0.0;
     auto cIt    = stiffnessMatrix[row[k]].begin();
@@ -865,8 +865,8 @@ auto childToIndexMap(const Basis& basis,
                      const int k
                      )
 {
-  // Input  : child/component 
-  // Output : determine all Indices that correspond to that component 
+  // Input  : child/component
+  // Output : determine all Indices that correspond to that component
 
   auto localView = basis.localView();
 
@@ -880,11 +880,11 @@ auto childToIndexMap(const Basis& basis,
   {
     localView.bind(element);
     const auto& localFiniteElement = localView.tree().child(k).finiteElement();        // macht keinen Unterschied ob hier k oder 0..
-    const auto nSf = localFiniteElement.localBasis().size();                           // 
+    const auto nSf = localFiniteElement.localBasis().size();                           //
 
     for(size_t j=0; j<nSf; j++)
     {
-      auto Localidx = localView.tree().child(k).localIndex(j);  // local  indices 
+      auto Localidx = localView.tree().child(k).localIndex(j);  // local  indices
       r.push_back(localView.index(Localidx));                   // global indices
     }
   }
@@ -912,8 +912,8 @@ auto integralMean(const Basis& basis,
                   )
 {
   // computes integral mean of given LocalFunction
-  constexpr int dim = 3; 
-  
+  constexpr int dim = 3;
+
   auto GVFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,dim>>(basis,coeffVector);
   auto localfun = localFunction(GVFunction);
 
@@ -928,7 +928,7 @@ auto integralMean(const Basis& basis,
     localView.bind(element);
     localfun.bind(element);
     const auto& localFiniteElement = localView.tree().child(0).finiteElement();
-    
+
     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
     const QuadratureRule<double, dim>& quad = QuadratureRules<double, dim>::rule(element.type(), orderQR);
 
@@ -936,7 +936,7 @@ auto integralMean(const Basis& basis,
     {
       const double integrationElement = element.geometry().integrationElement(quadPoint.position());
       area += quadPoint.weight() * integrationElement;
-      
+
       const auto& quadPos = quadPoint.position();
       r += localfun(quadPos) * quadPoint.weight() * integrationElement;
     }
@@ -995,12 +995,12 @@ auto equivalent = [](const FieldVector<double,3>& x, const FieldVector<double,3>
 
 
 
-                  
-                  
-                  
-                  
-                  
-         /*         
+
+
+
+
+
+         /*
 
 template<class Basis, class Vector, class MatrixFunction, class Domain>        //TODO
 double evalSymGrad(const Basis& basis,
@@ -1009,7 +1009,7 @@ double evalSymGrad(const Basis& basis,
                    Domain& x    // evaluation Point in reference coordinates
                       )
 {
-  
+
 
   constexpr int dim = 3;
   constexpr int nCompo = 3;
@@ -1023,21 +1023,21 @@ double evalSymGrad(const Basis& basis,
 
 
 
-  
-  
+
+
   for (const auto& element : elements(basis.gridView()))
   {
-      
+
     localView.bind(element);
     auto geometry = element.geometry();
-    
+
     const auto& localFiniteElement = localView.tree().child(0).finiteElement();                // Unterscheidung children notwendig?
     const auto nSf = localFiniteElement.localBasis().size();
-    
+
 
 
         const auto jacobianInverseTransposed = geometry.jacobianInverseTransposed(x);
-  
+
 
         std::vector< FieldMatrix< double, 1, dim> > referenceGradients;
         localFiniteElement.localBasis().evaluateJacobian(x,
@@ -1052,22 +1052,22 @@ double evalSymGrad(const Basis& basis,
 
 
         MatrixRT defGradientU(0);
-        
-        
+
+
         for (size_t k=0; k < nCompo; k++)
             for (size_t i=0; i < nSf; i++)          //Error: these are local fcts!
             {
-                
-                size_t localIdx = localView.tree().child(k).localIndex(i); 
+
+                size_t localIdx = localView.tree().child(k).localIndex(i);
                 size_t globalIdx = localView.index(localIdx);
 
                 // (scaled) Deformation gradient of the ansatz basis function
                 defGradientU[k][0] += coeffVector[globalIdx]* gradients[i][0];                       // Y
                 defGradientU[k][1] += coeffVector[globalIdx]* gradients[i][1];                       //X2
                 defGradientU[k][2] += coeffVector[globalIdx]*(1.0/gamma)*gradients[i][2];           //X3
-            
-                
-            
+
+
+
                 // symmetric Gradient (Elastic Strains)
                 MatrixRT strainU(0);
                 for (int ii=0; ii<nCompo; ii++)
@@ -1075,8 +1075,8 @@ double evalSymGrad(const Basis& basis,
                 {
                     strainU[ii][jj] = coeffVector[globalIdx] * 0.5 * (defGradientU[ii][jj] + defGradientU[jj][ii]);                 // symmetric gradient
                 }
-                
-             
+
+
             }
   }
 
@@ -1093,7 +1093,7 @@ double computeL2SymError(const Basis& basis,
                             const MatrixFunction& matrixFieldFunc
                             )
 {
-  auto error = 0.0;
+  double error = 0.0;
   constexpr int dim = 3;
   constexpr int nCompo = 3;
 
@@ -1111,9 +1111,10 @@ double computeL2SymError(const Basis& basis,
     localView.bind(element);
     matrixField.bind(element);
     auto geometry = element.geometry();
-    
+
     const auto& localFiniteElement = localView.tree().child(0).finiteElement();                // Unterscheidung children notwendig?
     const auto nSf = localFiniteElement.localBasis().size();
+//     std::cout << "print nSf:" << nSf << std::endl;
     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
     const auto& quad = QuadratureRules<double,dim>::rule(element.type(), orderQR);
 
@@ -1138,84 +1139,83 @@ double computeL2SymError(const Basis& basis,
 
 
         MatrixRT defGradientU(0), defGradientV(0);
-        
-        
+
+
         for (size_t k=0; k < nCompo; k++)
         for (size_t i=0; i < nSf; i++)
-        
         {
-                for (size_t l=0; l< nCompo; l++)
+                for (size_t l=0; l < nCompo; l++)
                 for (size_t j=0; j < nSf; j++ )
                 {
-                    
-                    size_t localIdx1 = localView.tree().child(k).localIndex(i); 
+
+                    size_t localIdx1 = localView.tree().child(k).localIndex(i);  // hier i:leafIdx
                     size_t globalIdx1 = localView.index(localIdx1);
-                    size_t localIdx2 = localView.tree().child(l).localIndex(j); 
+                    size_t localIdx2 = localView.tree().child(l).localIndex(j);
                     size_t globalIdx2 = localView.index(localIdx2);
 
                     // (scaled) Deformation gradient of the ansatz basis function
-                    defGradientU[k][0] = gradients[i][0];                       // Y
+                    defGradientU[k][0] = gradients[i][0];                       // Y  //hier i:leaf oder localIdx?
                     defGradientU[k][1] = gradients[i][1];                       //X2
                     defGradientU[k][2] = (1.0/gamma)*gradients[i][2];           //X3
-                    
+
                     defGradientV[l][0] = gradients[j][0];                       // Y
                     defGradientV[l][1] = gradients[j][1];                       //X2
                     defGradientV[l][2] = (1.0/gamma)*gradients[j][2];           //X3
-                
+
                     // symmetric Gradient (Elastic Strains)
                     MatrixRT strainU(0), strainV(0);
                     for (int ii=0; ii<nCompo; ii++)
                     for (int jj=0; jj<nCompo; jj++)
                     {
-                        strainU[ii][jj] = 0.5 * (defGradientU[ii][jj] + defGradientU[jj][ii]);                 
-                        strainV[ii][jj] = 0.5 * (defGradientV[ii][jj] + defGradientV[jj][ii]);                 
+                        strainU[ii][jj] = 0.5 * (defGradientU[ii][jj] + defGradientU[jj][ii]);
+                        strainV[ii][jj] = 0.5 * (defGradientV[ii][jj] + defGradientV[jj][ii]);
                     }
 
                     // Local energy density: stress times strain
                     double tmp = 0.0;
                     for (int ii=0; ii<nCompo; ii++)
                     for (int jj=0; jj<nCompo; jj++)
-                        tmp +=  coeffVector[globalIdx1]*coeffVector[globalIdx2]* strainU[ii][jj] * strainV[ii][jj];    
+                        tmp +=  coeffVector[globalIdx1]*coeffVector[globalIdx2]* strainU[ii][jj] * strainV[ii][jj];
 
 
                     error += tmp * quadPoint.weight() * integrationElement;
                 }
         }
-     
+
         for (size_t k=0; k < nCompo; k++)
         for (size_t i=0; i < nSf; i++)
         {
-                size_t localIdx1 = localView.tree().child(k).localIndex(i); 
+                size_t localIdx1 = localView.tree().child(k).localIndex(i);
                 size_t globalIdx1 = localView.index(localIdx1);
 
                 // (scaled) Deformation gradient of the ansatz basis function
                 defGradientU[k][0] = gradients[i][0];                       // Y
                 defGradientU[k][1] = gradients[i][1];                       //X2
                 defGradientU[k][2] = (1.0/gamma)*gradients[i][2];           //X3
-                
+
                 // symmetric Gradient (Elastic Strains)
                 MatrixRT strainU(0);
                 for (int ii=0; ii<nCompo; ii++)
                 for (int jj=0; jj<nCompo; jj++)
                 {
-                    strainU[ii][jj] = 0.5 * (defGradientU[ii][jj] + defGradientU[jj][ii]);                           
+                    strainU[ii][jj] = 0.5 * (defGradientU[ii][jj] + defGradientU[jj][ii]);
                 }
 
                 double tmp = 0.0;
                 for (int ii=0; ii<nCompo; ii++)
                 for (int jj=0; jj<nCompo; jj++)
-                    tmp +=  (-2.0)*coeffVector[globalIdx1]*strainU[ii][jj] * matrixField(quadPos)[ii][jj];    
-                
+                    tmp +=  (-2.0)*coeffVector[globalIdx1]*strainU[ii][jj] * matrixField(quadPos)[ii][jj];
+
                 error += tmp * quadPoint.weight() * integrationElement;
         }
-            
+
         double tmp = 0.0;
         for (int ii=0; ii<nCompo; ii++)
         for (int jj=0; jj<nCompo; jj++)
-            tmp +=   matrixField(quadPos)[ii][jj] * matrixField(quadPos)[ii][jj];    
-        
+            tmp +=   matrixField(quadPos)[ii][jj] * matrixField(quadPos)[ii][jj];
+
         error += tmp * quadPoint.weight() * integrationElement;
-            
+
      }
   }
   return sqrt(error);
@@ -1229,7 +1229,7 @@ double computeL2SymError(const Basis& basis,
 
 
 
-/*
+
 template<class Basis, class Vector, class MatrixFunction>
 double computeL2ErrorOld(const Basis& basis,
                       Vector& coeffVector,
@@ -1237,7 +1237,7 @@ double computeL2ErrorOld(const Basis& basis,
                       const MatrixFunction& matrixFieldFunc
                       )
 {
-  
+
   auto error = 0.0;
   constexpr int dim = 3;
   constexpr int nCompo = 3;
@@ -1254,19 +1254,19 @@ double computeL2ErrorOld(const Basis& basis,
 
   for (const auto& element : elements(basis.gridView()))
   {
-      
+
     localView.bind(element);
     matrixField.bind(element);
     auto geometry = element.geometry();
-    
+
     const auto& localFiniteElement = localView.tree().child(0).finiteElement();                // Unterscheidung children notwendig?
     const auto nSf = localFiniteElement.localBasis().size();
-    
-//     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;  // TEST 
+
+//     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;  // TEST
     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
     const auto& quad = QuadratureRules<double,dim>::rule(element.type(), orderQR);
 
- 
+
     for (const auto& quadPoint : quad)
     {
         const auto& quadPos = quadPoint.position();
@@ -1286,13 +1286,13 @@ double computeL2ErrorOld(const Basis& basis,
 
 
         MatrixRT defGradientU(0);
-        
-        
+
+
         for (size_t k=0; k < nCompo; k++)
             for (size_t i=0; i < nSf; i++)
             {
-                
-                size_t localIdx = localView.tree().child(k).localIndex(i); 
+
+                size_t localIdx = localView.tree().child(k).localIndex(i);
                 size_t globalIdx = localView.index(localIdx);
 
                 // (scaled) Deformation gradient of the ansatz basis function
@@ -1306,7 +1306,7 @@ double computeL2ErrorOld(const Basis& basis,
                 for (int jj=0; jj<nCompo; jj++)
                 {
                     strainU[ii][jj] = coeffVector[globalIdx] * 0.5 * (defGradientU[ii][jj] + defGradientU[jj][ii]);                 // symmetric gradient
-//                     strainU[ii][jj] = 0.5 * (defGradientU[ii][jj] + defGradientU[jj][ii]);                 // symmetric gradient  //TEST 
+//                     strainU[ii][jj] = 0.5 * (defGradientU[ii][jj] + defGradientU[jj][ii]);                 // symmetric gradient  //TEST
                 }
 
                 // Local energy density: stress times strain
@@ -1315,27 +1315,27 @@ double computeL2ErrorOld(const Basis& basis,
                 for (int jj=0; jj<nCompo; jj++)
                     tmp+= std::pow(strainU[ii][jj] - matrixField(quadPos)[ii][jj],2);
 //                     tmp+= std::pow((coeffVector[globalIdx]*strainU[ii][jj]) - matrixField(quadPos)[ii][jj] ,2);
-               
+
                 error += tmp * quadPoint.weight() * integrationElement;
             }
     }
   }
   return sqrt(error);
-}*/
+}
 
 
 /*
 template<class VectorCT>
 double semi_H1_vectorScalarProduct(VectorCT& coeffVector1, VectorCT& coeffVector2)
 {
-    
+
 double ret(0);
 auto localView = basis_.localView();
 
 for (const auto& e : elements(basis_.gridView()))
   	{
 	    localView.bind(e);
-	       
+
 	    auto geometry = e.geometry();
 
 	    const auto& localFiniteElement = localView.tree().child(0).finiteElement();
@@ -1370,12 +1370,12 @@ for (const auto& e : elements(basis_.gridView()))
           			MatrixRT defGradient2(0);
           			defGradient2[l] = gradients[j];
 
-		          	size_t localIdx1 = localView.tree().child(k).localIndex(i); 
+		          	size_t localIdx1 = localView.tree().child(k).localIndex(i);
 		          	size_t globalIdx1 = localView.index(localIdx1);
 
-		          	size_t localIdx2 = localView.tree().child(l).localIndex(j); 
+		          	size_t localIdx2 = localView.tree().child(l).localIndex(j);
 		          	size_t globalIdx2 = localView.index(localIdx2);
-        	
+
         			double scp(0);
         			for (int ii=0; ii<dimworld; ii++)
             		for (int jj=0; jj<dimworld; jj++)
@@ -1383,7 +1383,7 @@ for (const auto& e : elements(basis_.gridView()))
 
         				elementScp += scp;
         			}
-						
+
             ret += elementScp * quadPoint.weight() * integrationElement;
       } //qp
   	} //e
@@ -1414,7 +1414,7 @@ int main(int argc, char *argv[])
     ParameterTreeParser::readINITree(argv[1], parameterSet);
     ParameterTreeParser::readOptions(argc, argv, parameterSet);
   }
-  
+
   // output setter
   std::string outputPath = parameterSet.get("outputPath", "../../outputs/output.txt");
   std::fstream log;
@@ -1424,7 +1424,7 @@ int main(int argc, char *argv[])
   debugLog.open("../../outputs/debugLog.txt",std::ios::out);
 //   log << "Writing this to a file. \n";
 //   log.close();
-  
+
 
   constexpr int dim = 3;
   constexpr int nCompo = 3;
@@ -1443,7 +1443,7 @@ int main(int argc, char *argv[])
 
 
   ///////////////////////////////////
-  // Get Prestrain Parameters 
+  // Get Prestrain Parameters
   ///////////////////////////////////
   unsigned int prestraintype = parameterSet.get<unsigned int>("prestrainType", 2);
   double rho1 = parameterSet.get<double>("rho1", 1.0);
@@ -1456,13 +1456,13 @@ int main(int argc, char *argv[])
 
   log << "prestrain imp: " <<  prestraintype << "\nrho1 = " << rho1 << "\nrho2 = " << rho2  << std::endl;
   log << "alpha: " << alpha << std::endl;
-  log << "gamma: " << gamma << std::endl; 
-  
+  log << "gamma: " << gamma << std::endl;
+
 
   ///////////////////////////////////
   // Generate the grid
   ///////////////////////////////////
-  
+
   //Corrector Problem Domain:
   unsigned int cellDomain = parameterSet.get<unsigned int>("cellDomain", 1);
   // (shifted) Domain (-1/2,1/2)^3
@@ -1480,7 +1480,7 @@ int main(int argc, char *argv[])
   log << "Number of Elements in each direction: " << nElements << std::endl;
 
   using CellGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
-  CellGridType grid_CE(lower,upper,nElements);   
+  CellGridType grid_CE(lower,upper,nElements);
   using GridView = CellGridType::LeafGridView;
   const GridView gridView_CE = grid_CE.leafGridView();
 
@@ -1503,7 +1503,7 @@ int main(int argc, char *argv[])
   double mu2 = beta*mu1;
   double lambda1 = parameterSet.get<double>("lambda1",0.0);;
   double lambda2 = beta*lambda1;
-  
+
   ///////////////////////////////////
   //  Create Lambda-Functions for material Parameters depending on microstructure
   ///////////////////////////////////
@@ -1524,22 +1524,22 @@ int main(int argc, char *argv[])
                       return lambda2;
                     };
 
-  auto muGridF  = Dune::Functions::makeGridViewFunction(muTerm, gridView_CE);                
+  auto muGridF  = Dune::Functions::makeGridViewFunction(muTerm, gridView_CE);
   auto muLocal = localFunction(muGridF);
   auto lambdaGridF  = Dune::Functions::makeGridViewFunction(lambdaTerm, gridView_CE);
   auto lambdaLocal = localFunction(lambdaGridF);
-  
+
   log << "beta: " << beta << std::endl;
-  log << "material parameters: " << std::endl; 
+  log << "material parameters: " << std::endl;
   log << "mu1: " << mu1 << "\nmu2: " << mu2 << std::endl;
   log << "lambda1: " << lambda1 <<"\nlambda2:" << lambda2 << std::endl;
 
-  
+
   ///////////////////////////////////
   // --- Choose Solver ---
   // 1 : CG-Solver
   // 2 : GMRES
-  // 3 : QR 
+  // 3 : QR
   ///////////////////////////////////
   unsigned int Solvertype = parameterSet.get<unsigned int>("Solvertype", 1);
   bool write_corrector_phi1 = parameterSet.get<bool>("write_corrector_phi1", false);
@@ -1547,8 +1547,8 @@ int main(int argc, char *argv[])
   bool write_corrector_phi3 = parameterSet.get<bool>("write_corrector_phi3", false);
   bool write_L2Error = parameterSet.get<bool>("write_L2Error", false);
   bool write_IntegralMean = parameterSet.get<bool>("write_IntegralMean", false);
-  
-  
+
+
   /////////////////////////////////////////////////////////
   // Choose a finite element space for Cell Problem
   /////////////////////////////////////////////////////////
@@ -1556,12 +1556,12 @@ int main(int argc, char *argv[])
 
   Functions::BasisFactory::Experimental::PeriodicIndexSet periodicIndices;
 
-  int equivCounter = 0;                         // TODO remove 
+  int equivCounter = 0;                         // TODO remove
 
   // Don't do the following in real life: It has quadratic run-time in the number of vertices.
   for (const auto& v1 : vertices(gridView_CE))
   {
-//     std::cout << " ---------------------------------------" << std::endl; 
+//     std::cout << " ---------------------------------------" << std::endl;
     for (const auto& v2 : vertices(gridView_CE))
       if (equivalent(v1.geometry().corner(0), v2.geometry().corner(0)))
       {
@@ -1572,10 +1572,10 @@ int main(int argc, char *argv[])
 //   std::cout << "equivCounter:" <<  equivCounter << std::endl;
 //   std::cout << "Number of Elements in each direction: " << nE << std::endl;
 //   std::cout << "Number ofNodes: " << gridView_CE.size(dim) << std::endl;
-  
-  
-  auto perTest = periodicIndices.indexPairSet();   // TODO remove 
-  
+
+
+  auto perTest = periodicIndices.indexPairSet();   // TODO remove
+
   auto Basis_CE = makeBasis(
     gridView_CE,
     power<dim>(       //lagrange<1>(),
@@ -1587,10 +1587,10 @@ int main(int argc, char *argv[])
   std::cout << "size feBasis: " << Basis_CE.size() << std::endl;
   std::cout << "basis.dimension()" << Basis_CE.dimension() <<std::endl;
   log << "size of FiniteElementBasis: " << Basis_CE.size() << std::endl;
-  
+
   const int phiOffset = Basis_CE.size();
   debugLog << "phiOffset: "<< phiOffset << std::endl;
-  
+
   /////////////////////////////////////////////////////////
   // Data structures: Stiffness matrix and right hand side vector
   /////////////////////////////////////////////////////////
@@ -1620,7 +1620,7 @@ int main(int argc, char *argv[])
                       };
 
   Func2Tensor x3G_3 = [] (const Domain& x) {
-                        return MatrixRT{{0.0, 1.0/sqrt(2)*x[2], 0.0}, {1.0/sqrt(2)*x[2], 0.0, 0.0}, {0.0, 0.0, 0.0}}; 
+                        return MatrixRT{{0.0, 1.0/sqrt(2)*x[2], 0.0}, {1.0/sqrt(2)*x[2], 0.0, 0.0}, {0.0, 0.0, 0.0}};
                       };
 
   Func2Tensor x3G_1neg = [x3G_1] (const Domain& x) {
@@ -1634,29 +1634,29 @@ int main(int argc, char *argv[])
   Func2Tensor x3G_3neg = [x3G_3] (const Domain& x) {
                         return -1.0*x3G_3(x);
                       };
-                      
-                      
+
+
 
   ///////////////////////////////////////////////
   // Basis for R_sym^{2x2}
   //////////////////////////////////////////////
   MatrixRT G_1 {{1.0, 0.0, 0.0}, {0.0, 0.0, 0.0}, {0.0, 0, 0.0}};
   MatrixRT G_2 {{0.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0, 0.0, 0.0}};
-  MatrixRT G_3 {{0.0, 1.0/sqrt(2), 0.0}, {1.0/sqrt(2), 0.0, 0.0}, {0.0, 0.0, 0.0}}; 
+  MatrixRT G_3 {{0.0, 1.0/sqrt(2), 0.0}, {1.0/sqrt(2), 0.0, 0.0}, {0.0, 0.0, 0.0}};
   std::array<MatrixRT,3 > basisContainer = {G_1, G_2, G_3};
 //  printmatrix(std::cout, basisContainer[0] , "G_1", "--");
 //  printmatrix(std::cout, basisContainer[1] , "G_2", "--");
 //  printmatrix(std::cout, basisContainer[2] , "´G_3", "--");
 //  log <<  basisContainer[0] << std::endl;
 
-  
+
  //////////////////////////////////////////////////////////////////////
-  // Determine global indices of components for arbitrary (local) index        
+  // Determine global indices of components for arbitrary (local) index
   //////////////////////////////////////////////////////////////////////
-  int arbitraryLeafIndex =  parameterSet.get<unsigned int>("arbitraryLeafIndex", 0);  // localIdx..assert Number < #ShapeFcts .. also input Element? 
+  int arbitraryLeafIndex =  parameterSet.get<unsigned int>("arbitraryLeafIndex", 0);  // localIdx..assert Number < #ShapeFcts .. also input Element?
   int arbitraryElementNumber =  parameterSet.get<unsigned int>("arbitraryElementNumber", 0);
 
-  FieldVector<int,3> row;                             
+  FieldVector<int,3> row;
   row = arbitraryComponentwiseIndices(Basis_CE,arbitraryElementNumber,arbitraryLeafIndex);
   printvector(std::cout, row, "row" , "--");
 
@@ -1667,22 +1667,22 @@ int main(int argc, char *argv[])
   assembleCellLoad(Basis_CE, muLocal, lambdaLocal,gamma, load_alpha1 ,x3G_1neg);
   assembleCellLoad(Basis_CE, muLocal, lambdaLocal,gamma, load_alpha2 ,x3G_2neg);
   assembleCellLoad(Basis_CE, muLocal, lambdaLocal,gamma, load_alpha3 ,x3G_3neg);
-  
+
 //   printmatrix(std::cout, stiffnessMatrix_CE, "StiffnessMatrix", "--");
 //   printvector(std::cout, load_alpha1, "load_alpha1", "--");
 
-  
-  
+
+
   //////////////////////////////////////////////////////////////////////
-  // Determine global indices of components for arbitrary (local) index        
+  // Determine global indices of components for arbitrary (local) index
   //////////////////////////////////////////////////////////////////////
-//   int arbitraryLeafIndex =  parameterSet.get<unsigned int>("arbitraryLeafIndex", 0);  // localIdx..assert Number < #ShapeFcts .. also input Element? 
+//   int arbitraryLeafIndex =  parameterSet.get<unsigned int>("arbitraryLeafIndex", 0);  // localIdx..assert Number < #ShapeFcts .. also input Element?
 //   int arbitraryElementNumber =  parameterSet.get<unsigned int>("arbitraryElementNumber", 0);
-// 
-//   FieldVector<int,3> row;                             
+//
+//   FieldVector<int,3> row;
 //   row = arbitraryComponentwiseIndices(Basis_CE,arbitraryElementNumber,arbitraryLeafIndex);
 //   printvector(std::cout, row, "row" , "--");
-// 
+//
 
 
 
@@ -1704,12 +1704,12 @@ int main(int argc, char *argv[])
   VectorCT x_1 = load_alpha1;
   VectorCT x_2 = load_alpha2;
   VectorCT x_3 = load_alpha3;
-  
+
   auto load_alpha1BS = load_alpha1;
-  
+
 //   printvector(std::cout, load_alpha1, "load_alpha1 before SOLVER", "--" );
 //   printvector(std::cout, load_alpha2, "load_alpha2 before SOLVER", "--" );
-    
+
   if (Solvertype == 1)  // CG - SOLVER
   {
     std::cout << "------------ CG - Solver ------------" << std::endl;
@@ -1735,10 +1735,10 @@ int main(int argc, char *argv[])
     solver.apply(x_3, load_alpha3, statistics);
   }
   ////////////////////////////////////////////////////////////////////////////////////
-  
+
   else if (Solvertype ==2)  // GMRES - SOLVER
   {
-      
+
     std::cout << "------------ GMRES - Solver ------------" << std::endl;
     // Turn the matrix into a linear operator
     MatrixAdapter<MatrixCT,VectorCT,VectorCT> stiffnessOperator(stiffnessMatrix_CE);
@@ -1783,12 +1783,12 @@ int main(int argc, char *argv[])
 //     printvector(std::cout, load_alpha1BS, "load_alpha1 before SOLVER", "--" );
 //     printvector(std::cout, load_alpha1, "load_alpha1 AFTER SOLVER", "--" );
 //     printvector(std::cout, load_alpha2, "load_alpha2 AFTER SOLVER", "--" );
-        
+
 
   ////////////////////////////////////////////////////////////////////////////////////
   // Extract phi_alpha  &  M_alpha coefficients
   ////////////////////////////////////////////////////////////////////////////////////
-    
+
   VectorCT phi_1, phi_2, phi_3;
   phi_1.resize(Basis_CE.size());
   phi_1 = 0;
@@ -1804,16 +1804,16 @@ int main(int argc, char *argv[])
     phi_2[i] = x_2[i];
     phi_3[i] = x_3[i];
   }
-  
+
   FieldVector<double,3> m_1, m_2, m_3;
-  
+
   for(size_t i=0; i<3; i++)
   {
     m_1[i] = x_1[phiOffset+i];
     m_2[i] = x_2[phiOffset+i];
     m_3[i] = x_3[phiOffset+i];
   }
-  
+
   // assemble M_alpha's (actually iota(M_alpha) )
 
   MatrixRT M_1(0), M_2(0), M_3(0);
@@ -1838,7 +1838,7 @@ int main(int argc, char *argv[])
 
   ////////////////////////////////////////////////////////////////////////////
   // Substract Integral-mean
-  ////////////////////////////////////////////////////////////////////////////                                                                                     // ERROR 
+  ////////////////////////////////////////////////////////////////////////////                                                                                     // ERROR
   using SolutionRange = FieldVector<double,dim>;
 
   if(write_IntegralMean)
@@ -1856,7 +1856,7 @@ int main(int argc, char *argv[])
     subtractIntegralMean(Basis_CE,  phi_1);
     subtractIntegralMean(Basis_CE,  phi_2);
     subtractIntegralMean(Basis_CE,  phi_3);
-    subtractIntegralMean(Basis_CE,  x_1);       
+    subtractIntegralMean(Basis_CE,  x_1);
     subtractIntegralMean(Basis_CE,  x_2);
     subtractIntegralMean(Basis_CE,  x_3);
     //////////////////////////////////////////
@@ -1874,29 +1874,29 @@ int main(int argc, char *argv[])
 
   /////////////////////////////////////////////////////////
   // Write Solution (Corrector Coefficients) in Logs
-  /////////////////////////////////////////////////////////        
+  /////////////////////////////////////////////////////////
   log << "\nSolution of Corrector problems:\n";
   if(write_corrector_phi1)
   {
-     log << "\n Corrector_phi1:\n"; 
+     log << "\n Corrector_phi1:\n";
      log << x_1 << std::endl;
   }
   if(write_corrector_phi2)
   {
      log << "-----------------------------------------------------";
-     log << "\n Corrector_phi2:\n"; 
+     log << "\n Corrector_phi2:\n";
      log << x_2 << std::endl;
   }
   if(write_corrector_phi3)
   {
      log << "-----------------------------------------------------";
-     log << "\n Corrector_phi3:\n"; 
+     log << "\n Corrector_phi3:\n";
      log << x_3 << std::endl;
   }
 
   ////////////////////////////////////////////////////////////////////////////
   // Make a discrete function from the FE basis and the coefficient vector
-  ////////////////////////////////////////////////////////////////////////////                                                                                     // ERROR 
+  ////////////////////////////////////////////////////////////////////////////                                                                                     // ERROR
   using SolutionRange = FieldVector<double,dim>;
   auto correctorFunction_1 = Functions::makeDiscreteGlobalBasisFunction<SolutionRange>(
     Basis_CE,
@@ -1909,14 +1909,14 @@ int main(int argc, char *argv[])
   auto correctorFunction_3 = Functions::makeDiscreteGlobalBasisFunction<SolutionRange>(
     Basis_CE,
     phi_3);
-  
+
 
 
   /////////////////////////////////////////////////////////
-  // Create Containers for Basis-Matrices, Correctors and Coefficients 
+  // Create Containers for Basis-Matrices, Correctors and Coefficients
   /////////////////////////////////////////////////////////
   const std::array<Func2Tensor, 3> x3MatrixBasis = {x3G_1, x3G_2, x3G_3};
-  const std::array<VectorCT, 3> coeffContainer = {x_1, x_2, x_3};                                      
+  const std::array<VectorCT, 3> coeffContainer = {x_1, x_2, x_3};
   const std::array<VectorCT, 3> loadContainer = {load_alpha1, load_alpha2, load_alpha3};
   const std::array<MatrixRT*, 3 > mContainer = {&M_1 , &M_2, & M_3};
 
@@ -1929,20 +1929,20 @@ int main(int argc, char *argv[])
   VectorCT tmp1,tmp2;
   FieldVector<double,3> B_hat ;
 
-  // compute Q 
+  // compute Q
   for(size_t a = 0; a < 3; a++)
     for(size_t b=0; b < 3; b++)
     {
       assembleCellLoad(Basis_CE, muLocal, lambdaLocal, gamma, tmp1 ,x3MatrixBasis[b]);   // <L i(M_alpha) + sym(grad phi_alpha), i(x3G_beta) >
 
       double GGterm = 0.0;
-      GGterm = energy(Basis_CE, muLocal, lambdaLocal, x3MatrixBasis[a] , x3MatrixBasis[b]  );   // <L i(x3G_alpha) , i(x3G_beta) >        
+      GGterm = energy(Basis_CE, muLocal, lambdaLocal, x3MatrixBasis[a] , x3MatrixBasis[b]  );   // <L i(x3G_alpha) , i(x3G_beta) >
 
       Q[a][b] =  (coeffContainer[a]*tmp1) + GGterm;       // seems symmetric... check positiv definitness?
-//       Q[a][b] =  (coeffContainer[a]*loadContainer[b]) + GGterm;       // TEST 
+//       Q[a][b] =  (coeffContainer[a]*loadContainer[b]) + GGterm;       // TEST
       std::cout << "GGTerm:" << GGterm << std::endl;
       std::cout << "coeff*tmp: " << coeffContainer[a]*tmp1 << std::endl;
-//       std::cout << "Test : " << coeffContainer[a]*loadContainer[b] << std::endl;  //same... 
+//       std::cout << "Test : " << coeffContainer[a]*loadContainer[b] << std::endl;  //same...
     }
   printmatrix(std::cout, Q, "Matrix Q", "--");
   log << "Computed Matrix Q: " << std::endl;
@@ -1956,6 +1956,7 @@ int main(int argc, char *argv[])
     auto GGterm = energy(Basis_CE, muLocal, lambdaLocal, x3MatrixBasis[a] , B_Term); // <L i(x3G_alpha) , B>
 
     B_hat[a] = (coeffContainer[a]*tmp2) + GGterm;
+    std::cout << "check this Contribution: " << (coeffContainer[a]*tmp2) << std::endl;  //see orthotropic.tex
     std::cout <<"B_hat[i]: " <<  B_hat[a] << std::endl;
   }
   log << "Computed prestrain B_hat: " << std::endl;
@@ -1978,7 +1979,7 @@ int main(int argc, char *argv[])
 
 
 
- 
+
   auto q1_c = Q[0][0];
   auto q2_c = Q[1][1];
   auto q3_c = Q[2][2];
@@ -1997,11 +1998,11 @@ int main(int argc, char *argv[])
   log << "computed b3_hat: " << B_hat[2] << std::endl;
 
 
-  
+
   //////////////////////////////////////////////////////////////
   // Define Analytic Solutions
   //////////////////////////////////////////////////////////////
-  
+
   // double b1 = (mu1*p1/4)*(beta/(theta+(1-theta)*beta))*(1-theta*(1+alpha));
   // double b2 = (mu1*p1/8)*(1-theta*(1+beta*alpha));
 
@@ -2026,42 +2027,45 @@ int main(int argc, char *argv[])
   log << "q2 : " << q2 << std::endl;
   log << "q3 should be between q1 and q2"  << std::endl;
 
-  
+
     auto symPhi_1_analytic = [mu1, mu2, theta, muTerm] (const Domain& x) {
                         return MatrixRT{{  ((mu1*mu2)/((theta*mu1 +(1-theta)*mu2)*muTerm(x)) - 1)*x[2] , 0.0, 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
                       };
-                      
+
     auto zeroFunction = [] (const Domain& x) {
                     return MatrixRT{{0.0 , 0.0, 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
                     };
-                      
-    
+
+
   if(write_L2Error)
   {
-    auto L2error = computeL2SymError(Basis_CE,phi_1,gamma,symPhi_1_analytic);
-    std::cout << "L2-Error: " << L2error << std::endl;
-    
+    auto L2SymError = computeL2SymError(Basis_CE,phi_1,gamma,symPhi_1_analytic);
+    std::cout << "L2-SymError: " << L2SymError << std::endl;
+
     //   auto L2errorTest = computeL2ErrorTest(Basis_CE,phi_1,gamma,symPhi_1_analytic);
     //   std::cout << "L2-ErrorTEST: " << L2errorTest << std::endl;
-    
+
     auto L2Norm_Symphi = computeL2SymError(Basis_CE,phi_1,gamma,zeroFunction);            // Achtung Norm SymPhi_1
     std::cout << "L2-Norm(Symphi_1): " << L2Norm_Symphi << std::endl;                     // TODO Not Needed
-    
+
     VectorCT zeroVec;
     zeroVec.resize(Basis_CE.size());
     zeroVec = 0;
 
     auto L2Norm_analytic = computeL2SymError(Basis_CE,zeroVec ,gamma,symPhi_1_analytic);
     std::cout << "L2-Norm(analytic): " << L2Norm_analytic << std::endl;
-    
-    log << "L2-Error (symmetric Gradient phi_1):" << L2error << std::endl;
+
+    log << "L2-Error (symmetric Gradient phi_1):" << L2SymError << std::endl;
+
+    //TEST
+    std::cout << "L2ErrorOld:" << computeL2ErrorOld(Basis_CE,phi_1,gamma,symPhi_1_analytic) << std::endl;
   }
   //////////////////////////////////////////////////////////////////////////////////////////////
   // Write result to VTK file
   //////////////////////////////////////////////////////////////////////////////////////////////
-  
+
   VTKWriter<GridView> vtkWriter(gridView_CE);
-  
+
   vtkWriter.addVertexData(
     correctorFunction_1,
     VTK::FieldInfo("corrector phi_1", VTK::FieldInfo::Type::vector, dim));
@@ -2073,6 +2077,6 @@ int main(int argc, char *argv[])
     VTK::FieldInfo("corrector phi_3", VTK::FieldInfo::Type::vector, dim));
   vtkWriter.write("CellProblem-result");
   std::cout << "wrote data to file: CellProblem-result" << std::endl;          // better with string for output name..
-  
+
   log.close();
 }