diff --git a/inputs/cellsolver.parset b/inputs/cellsolver.parset
index cc567f41d32677272ac27ae675717443606540b5..06b3cff70acd4f22aaf532ebe3823f2393db1943 100644
--- a/inputs/cellsolver.parset
+++ b/inputs/cellsolver.parset
@@ -15,9 +15,15 @@ cellDomain = 1
 #############################################
 
 #levels = 2
-numLevels = {1,3}  # computes all levels from first to second entry
 
-#
+#######################################################################
+## numLevels : Number of Levels on which solution is computed. starting with a 2x2x2 cube mesh.
+## {start,finish} computes on all grid from 2^(start) to 2^finish refinement
+########################################################################
+
+numLevels = 1 3     # computes all levels from first to second entry
+
+
 #Elements_Cell = 20 20 20	               # number elements in each direction (y1 y2 x3) 
 #nElements_Cell = 30 30 30	
 #nElements_Cell = 30 30 30	
@@ -53,7 +59,8 @@ lambda1 = 0.0
 #  Prestrain parameters
 #############################################
 
-theta = 0.3    # volume fraction
+#theta = 0.3    # volume fraction
+theta = 0.25   # volume fraction
 
 prestrainType = 2
 
diff --git a/src/dune-microstructure.cc b/src/dune-microstructure.cc
index b6710dcd7b301e11f6fae0e7506c637a8d94fc35..0ed65a791245516350dd113ba4d198f54c680b17 100644
--- a/src/dune-microstructure.cc
+++ b/src/dune-microstructure.cc
@@ -2237,7 +2237,7 @@ int main(int argc, char *argv[])
 
 
 
-  std::array<int, dim> nElements = parameterSet.get<std::array<int,dim>>("nElements_Cell", {10, 10, 10});
+//   std::array<int, dim> nElements = parameterSet.get<std::array<int,dim>>("nElements_Cell", {10, 10, 10});
 
 
   ///// LEVEL - APPROACH     // TODO
@@ -2291,8 +2291,20 @@ int main(int argc, char *argv[])
 
   std::cout << "output variant :" << std::get<std::string>(x) << std::endl;
 
-  std::vector<std::variant<std::string, size_t , double>> Storage;
+  
+  
+  
+  ///////////////////////////////////
+  // Create Data Storage
+  ///////////////////////////////////
+  
+  // Storage:: #1 level #2 L2SymError #3 L2SymErrorOrder #4  L2Norm(sym) #5 L2Norm(sym-analytic) #6 L2Norm(phi_1)
+  std::vector<std::variant<std::string, size_t , double>> Storage_Error;
+  
+  // Storage:: #1 level #2 |q1_a-q1_c| #3 |q2_a-q2_c| #4 |q3_a-q3_c| #5 |b1_a-b1_c| #6 |b2_a-b2_c| #7 |b3_a-b3_c|           
+   std::vector<std::variant<std::string, size_t , double>> Storage_Quantities;                   // TODO :better error ? 
 
+  
 
   // Storage:: #1 level #2 L2SymError #3 L2SymErrorOrder #4  L2Norm(sym) #5 L2Norm(sym-analytic) #6 L2Norm(phi_1)
 
@@ -2333,7 +2345,8 @@ int main(int argc, char *argv[])
     std::cout << "Level: " << level << std::endl;
     std::cout << " ----------------------------------" << std::endl;
 
-    Storage.push_back(level);
+    Storage_Error.push_back(level);
+    Storage_Quantities.push_back(level);
 
     std::array<int, dim> nElements = { (int)std::pow(2,level) , (int)std::pow(2,level) , (int)std::pow(2,level) };
 
@@ -2820,7 +2833,7 @@ int main(int argc, char *argv[])
         double GGterm = 0.0;
         GGterm = energy(Basis_CE, muLocal, lambdaLocal, x3MatrixBasis[a] , x3MatrixBasis[b]  );   // <L i(x3G_alpha) , i(x3G_beta) >
         // TEST
-            //TEST
+        //TEST
         std::cout << " analyticGGTERM:" << (mu1*(1-theta)+mu2*theta)/6.0 << std::endl;
 
         std::setprecision(std::numeric_limits<float>::digits10);
@@ -2829,6 +2842,7 @@ int main(int argc, char *argv[])
     //       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...
         }
     printmatrix(std::cout, Q, "Matrix Q", "--");
@@ -2843,13 +2857,14 @@ 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;
+        
+//         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;
     log << B_hat << std::endl;
 
-
+    std::cout << "check this Contribution: " << (coeffContainer[2]*tmp2) << std::endl;  //see orthotropic.tex
 
     // Compute effective Prestrain
     FieldVector<double, 3> Beff;
@@ -2858,11 +2873,11 @@ int main(int argc, char *argv[])
     log << "Computed prestrain B_eff: " << std::endl;
     log << Beff << std::endl;
 
-    std::cout << "Beff : " << std::endl;
-    for(size_t i=0; i<3; i++)
-    {
-        std::cout <<"Beff[i]: " << Beff[i] << std::endl;
-    }
+//     std::cout << "Beff : " << std::endl;
+//     for(size_t i=0; i<3; i++)
+//     {
+//         std::cout <<"Beff[i]: " << Beff[i] << std::endl;
+//     }
 
 
 
@@ -2873,6 +2888,15 @@ int main(int argc, char *argv[])
     std::cout<< "q1_c: " << q1_c << std::endl;
     std::cout<< "q2_c: " << q2_c << std::endl;
     std::cout<< "q3_c: " << q3_c << std::endl;
+    std::cout<< "b1hat_c: " << B_hat[0] << std::endl;
+    std::cout<< "b2hat_c: " << B_hat[1] << std::endl;
+    std::cout<< "b3hat_c: " << B_hat[2] << std::endl;
+    std::cout<< "b1eff_c: " << Beff[0] << std::endl;
+    std::cout<< "b2eff_c: " << Beff[1] << std::endl;
+    std::cout<< "b3eff_c: " << Beff[2] << std::endl;
+    
+    
+    std::cout << "Theta: " << theta << std::endl;
     std::cout << "Gamma: " << gamma << std::endl;
     std::cout << "Number of Elements in each direction: " << nElements << std::endl;
     log << "computed q1: " << q1_c << std::endl;
@@ -2894,35 +2918,56 @@ int main(int argc, char *argv[])
     // double b1 = (mu1*p1/4)*(beta/(theta+(1-theta)*beta))*(1-theta*(1+alpha));
     // double b2 = (mu1*p1/8)*(1-theta*(1+beta*alpha));
 
-    double b1 = (-(theta/4.0)*mu1*mu2)/(theta*mu1+(1.0-theta)*mu2);
-    double b2 = -(theta/4.0)*mu2;
-    double b3 = 0.0;
+    double b1_hat = (-(theta/4.0)*mu1*mu2)/(theta*mu1+(1.0-theta)*mu2);
+    double b2_hat = -(theta/4.0)*mu2;
+    double b3_hat = 0.0;
+   
+    double b1_eff = (-3.0/2.0)*theta;
+    double b2_eff = (-3.0*theta*mu2)/(mu1*(1-theta)+mu2*theta);
+    double b3_eff = 0.0;
+    
+    
+    
+    
     double q1 = ((mu1*mu2)/6.0)/(theta*mu1+ (1.0- theta)*mu2);
     double q2 = ((1.0-theta)*mu1+theta*mu2)/6.0;
 
     std::cout << " --- print analytic solutions --- " << std::endl;
-    std::cout << "b1 : " << b1 << std::endl;
-    std::cout << "b2 : " << b2 << std::endl;
-    std::cout << "b3 : " << b3 << std::endl;
+    std::cout << "b1_hat : " << b1_hat << std::endl;
+    std::cout << "b2_hat : " << b2_hat << std::endl;
+    std::cout << "b3_hat : " << b3_hat << std::endl;
+    std::cout << "b1_eff : " << b1_eff << std::endl;
+    std::cout << "b2_eff : " << b2_eff << std::endl;
+    std::cout << "b3_eff : " << b3_eff << std::endl;
+    
     std::cout << "q1 : " << q1 << std::endl;
     std::cout << "q2 : " << q2 << std::endl;
     std::cout << "q3 should be between q1 and q2"  << std::endl;
     log << " --- analytic solutions: --- " << std::endl;
-    log << "b1 : " << b1 << std::endl;
-    log << "b2 : " << b2 << std::endl;
-    log << "b3 : " << b3 << std::endl;
+    log << "b1_hat : " << b1_hat << std::endl;
+    log << "b2_hat : " << b2_hat << std::endl;
+    log << "b3_hat : " << b3_hat << std::endl;
+    log << "b1_eff : " << b1_eff << std::endl;
+    log << "b2_eff : " << b2_eff << std::endl;
+    log << "b3_eff : " << b3_eff << std::endl;
     log << "q1 : " << q1 << std::endl;
     log << "q2 : " << q2 << std::endl;
     log << "q3 should be between q1 and q2"  << std::endl;
+    
+    Storage_Quantities.push_back(std::abs(q1 - q1_c));
+    Storage_Quantities.push_back(std::abs(q2 - q2_c));
+    Storage_Quantities.push_back(std::abs(q3 - q3_c));
+    Storage_Quantities.push_back(std::abs(b1_eff - b1eff_c));
+    Storage_Quantities.push_back(std::abs(b2_eff - b2eff_c));
+    Storage_Quantities.push_back(std::abs(b3_eff - b3eff_c));
+
+    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 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}};
-                        };
+    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)
@@ -2967,40 +3012,40 @@ int main(int argc, char *argv[])
 
 
         double EOC = 0.0;
-        Storage.push_back(L2SymError);
+        Storage_Error.push_back(L2SymError);
 
         //Compute Experimental order of convergence (EOC)
         if(levelCounter > 0)
         {
-            // Storage:: #1 level #2 L2SymError #3 L2SymErrorOrder #4  L2Norm(sym) #5 L2Norm(sym-analytic) #6 L2Norm(phi_1)
-            // TODO Storage as Vectors? (q1,q2,q3) ,(b1,b2,b3) ....
+            // Storage_Error:: #1 level #2 L2SymError #3 L2SymErrorOrder #4  L2Norm(sym) #5 L2Norm(sym-analytic) #6 L2Norm(phi_1)
+            // TODO Storage_Error as Vectors? (q1,q2,q3) ,(b1,b2,b3) ....
 
-            //   Storage.push_back(5);
-            //   Storage.push_back("Second Entry");
+            //   Storage_Error.push_back(5);
+            //   Storage_Error.push_back("Second Entry");
             std::cout << " ((levelCounter-1)*6)+1: " << ((levelCounter-1)*6)+1 << std::endl;              // Besser std::map ???
-            std::cout << " ((levelCounter-1)*6)+1: " << ((levelCounter)*6)+1 << std::endl;             // muss Storage[idx] muss idx zur compile time feststehen?!
+            std::cout << " ((levelCounter-1)*6)+1: " << ((levelCounter)*6)+1 << std::endl;             // muss Storage_Error[idx] muss idx zur compile time feststehen?!
 
-            auto ErrorOld = std::get<double>(Storage[((levelCounter-1)*6)+1]);
-            auto ErrorNew = std::get<double>(Storage[(levelCounter*6)+1]);
+            auto ErrorOld = std::get<double>(Storage_Error[((levelCounter-1)*6)+1]);
+            auto ErrorNew = std::get<double>(Storage_Error[(levelCounter*6)+1]);
 //
             EOC = std::log(ErrorNew/ErrorOld)/(-1*std::log(2));
-            //   std::cout << "Storage[0] :" << std::get<1>(Storage[0]) << std::endl;
-            //   std::cout << "output variant :" << std::get<std::string>(Storage[1]) << std::endl;
-            //   std::cout << "output variant :" << std::get<0>(Storage[1]) << std::endl;
+            //   std::cout << "Storage_Error[0] :" << std::get<1>(Storage_Error[0]) << std::endl;
+            //   std::cout << "output variant :" << std::get<std::string>(Storage_Error[1]) << std::endl;
+            //   std::cout << "output variant :" << std::get<0>(Storage_Error[1]) << std::endl;
 
         }
 
 
 
-//         Storage.push_back(level);
-        Storage.push_back(EOC);
-        Storage.push_back(L2Norm_Symphi);
-        Storage.push_back(L2Norm_SymAnalytic);
-        Storage.push_back(L2Norm);
-//         Storage.push_back();
-//         Storage.push_back();
-//         Storage.push_back();
-//         Storage.push_back();
+//         Storage_Error.push_back(level);
+        Storage_Error.push_back(EOC);
+        Storage_Error.push_back(L2Norm_Symphi);
+        Storage_Error.push_back(L2Norm_SymAnalytic);
+        Storage_Error.push_back(L2Norm);
+//         Storage_Error.push_back();
+//         Storage_Error.push_back();
+//         Storage_Error.push_back();
+//         Storage_Error.push_back();
 
 
     }
@@ -3096,7 +3141,7 @@ int main(int argc, char *argv[])
     std::vector<std::variant<const size_t , double>> tmpVec;
     int StorageCount = 0;
 
-    for(auto& v: Storage) {
+    for(auto& v: Storage_Error) {
 
 //     if(StorageCount % 6 == 0 )
 //         std::cout<< "Level: ";