diff --git a/.gitignore b/.gitignore
index c396f52d20df9ada99c0a9f03df8b42d64b5b26b..7081ba7543047065e8aa31a3fe641a2acfc7d4ff 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,10 @@ build/
 *.vtu
 
 
+#ignore output folders
+/outputs_*/
+/results_*/
+
 
 # ignore png
 *.png
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 391288b61890af50b02c52001a2ae1b1bad93ece..2c7707a3e5a6578f71828867e2beb4dce244ced2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,27 +7,32 @@ before_script: &before
   - duneci-install-module https://gitlab.dune-project.org/fufem/dune-matrix-vector.git
   - duneci-install-module https://git.imp.fu-berlin.de/agnumpde/dune-solvers.git
   - duneci-install-module https://gitlab.dune-project.org/extensions/dune-vtk.git
-  - duneci-install-module https://gitlab.dune-project.org/klaus.boehnlein/dune-functions.git --branch bugfix/reducedcubichermite-local
   - duneci-install-module https://gitlab.dune-project.org/fufem/dune-fufem.git
-  - duneci-install-module https://gitlab.mn.tu-dresden.de/osander/dune-gfe.git --branch feature/bendingIsometries
-  - duneci-install-module https://gitlab.mn.tu-dresden.de/ag-sander/dune/dune-elasticity.git --branch releases/2.9
+  - duneci-install-module https://gitlab.dune-project.org/extensions/dune-gmsh4
+  - duneci-install-module https://gitlab.mn.tu-dresden.de/osander/dune-gfe.git
 
-dune:2.9 debian-11 gcc-10 C++20:
+
+#  Tests with the 2.10 release.  That's the one in Debian trixie
+#-------------------------------------------------------------------- 
+dune:2.10 gcc-10:
+  image: registry.dune-project.org/docker/ci/dune:2.10-debian-11-gcc-10-20
   variables:
-    DUNECI_BRANCH: releases/2.9
-  image: registry.dune-project.org/docker/ci/dune:2.9-debian-11-gcc-10-20
+    DUNECI_BRANCH: releases/2.10
   before_script:
   - *before
   script: duneci-standard-test
 
-dune:git ubuntu-20-04 clang-10  C++20:
-  image: registry.dune-project.org/docker/ci/dune:git-ubuntu-20.04-clang-10-20
+#  Tests with the git master branch
+#  Some, but not all optional dependencies are made available.
+#------------------------------------------------------------------
+dune:git gcc-10 C++20:
+  image: registry.dune-project.org/docker/ci/dune:git-debian-11-gcc-10-20
   before_script:
   - *before
   script: duneci-standard-test
 
-dune:git debian-11 gcc-10  C++20:
-  image: registry.dune-project.org/docker/ci/dune:git-debian-11-gcc-10-20
+dune:git clang-11 C++20:
+  image: registry.dune-project.org/docker/ci/dune:git-debian-11-clang-11-20
   before_script:
   - *before
-  script: duneci-standard-test
+  script: duneci-standard-test
\ No newline at end of file
diff --git a/Plot-Scripts/IndicatorFunctionVisualization.py b/Plot-Scripts/IndicatorFunctionVisualization.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ef7238df906c58b961bf3a93cd72073e53c51ba
--- /dev/null
+++ b/Plot-Scripts/IndicatorFunctionVisualization.py
@@ -0,0 +1,141 @@
+import numpy as np
+import matplotlib.pyplot as plt
+
+
+
+x_1 = 0.5;
+a = (1-x_1)*(2-np.sqrt(3))/2
+b = x_1 * (2-np.sqrt(3))/2
+
+
+theta=0.2
+alpha = np.pi/3.0
+
+def one_norm(X,Y):
+    return np.abs(X) + np.abs(Y)
+
+def two_norm(X,Y):
+    return np.sqrt(X**2 + Y**2)
+
+def infinity_norm(X,Y):
+    return np.maximum(np.abs(X),np.abs(Y))
+    # return np.linalg.norm([X,Y])
+
+def euclidean_distance(A,B):
+    return two_norm(A[0]-B[0],A[1]-B[1])
+
+def one_norm_distance(A,B):
+    return one_norm(A[0]-B[0],A[1]-B[1])
+
+def infinity_norm_distance(A,B):
+    return infinity_norm(A[0]-B[0],A[1]-B[1])
+
+# Rumpf Example
+def indicatorFunction(X,Y):
+
+    # Rumpf example.
+    # tmp_1 = (one_norm(X,Y) < 1+ (b/2) )
+    # tmp_2 = ((1-(b/2)) < one_norm(X,Y))
+    # tmp_3 = (one_norm(X-1,Y) < 1+ (b/2) )
+    # tmp_4 = ((1-(b/2)) < one_norm(X-1,Y))
+    # tmp_5 = (X < (a/2.0))
+    # tmp_6 = (X > (1-(a/2.0)))
+    # tmp_7 = (Y < (a/2.0))
+    # tmp_8 = (Y > (1-(a/2.0)))
+    # out_tmp1 = np.logical_or(np.logical_and(tmp_1,tmp_2),np.logical_and(tmp_3,tmp_4)) 
+    # out_tmp2 = np.logical_or(np.logical_or(tmp_5,tmp_6),np.logical_or(tmp_7,tmp_8))
+    # out = np.logical_or(out_tmp1, out_tmp2)
+
+    # abs(-np.cos(self.alpha)*x[0] + np.cos(self.alpha)*x[1] ) < self.theta and x[2] >= 0 )
+    # out = abs(-np.cos(alpha)*X + np.sin(alpha)*Y)< theta
+
+
+    """
+    indicator function for circles centered at midpoint and corner points.
+    """
+    theta=0.1
+    # define nodes
+    node1 = [-0.5,-0.5]
+    node2 = [0.5,-0.5]
+    node3 = [-0.5,0.5]
+    node4 = [0.5,0.5]
+    center = [0,0]
+
+    tmp_1 = euclidean_distance([X,Y],node1) < theta 
+    out = tmp_1
+
+    return out
+
+
+#------------------------------------------------------------
+
+
+
+# Define range for x and y. Domain: (0,1)^2
+# x = np.linspace(0, 1, 100)
+# y = np.linspace(0, 1, 100)
+
+# Define range for x and y. Domain: (-0.5,0.5)^2
+x = np.linspace(-0.5, 0.5, 100)
+y = np.linspace(-0.5, 0.5, 100)
+
+
+
+
+# Create meshgrid
+X, Y = np.meshgrid(x, y)
+
+# Define the function y = x
+Z = Y - X 
+
+
+W = indicatorFunction(X,Y)
+
+
+# print('Test:', one_norm(0.6,0) )
+# print('Test:', indicatorFunction(0.6,0) )
+
+
+# Plot the meshgrid
+plt.figure(figsize=(8, 6))
+# plt.contourf(X, Y, Z, levels=[-np.inf, 0], colors=['orange'], alpha=0.5)
+plt.contour(X, Y, Z, levels=[0], colors=['black'])
+# plt.contourf(X, Y, Z, levels=[1e-12, np.inf], colors=['royalblue'], alpha=0.25)
+
+# Color points below the line y=x as orange, and others as blue
+# plt.scatter(X[Z < 0], Y[Z < 0], color='orange', label='Below y=x')
+
+
+plt.scatter(X[W], Y[W], color='green', label='Below y=x' , alpha=0.5)
+# plt.contourf(X, Y, W, levels=[1,1e2], colors=['green'], alpha=0.25)
+# plt.scatter(X[Z < 0], Y[Z < 0], color='orange', label='Below y=x')
+# plt.scatter(X[Z >= 0], Y[Z >= 0], color='blue', label='Above or on y=x')
+
+
+# Color points whose x-values are below 0.25 or above 0.75 in red
+# plt.scatter(X[(X < (a/2.0)) | (X > (1-(a/2.0)))], Y[(X < (a/2.0)) | (X > (1-(a/2.0)))], color='red', label='x < 0.25 or x > 0.75')
+# plt.scatter(X[(Y < (a/2.0)) | (Y > (1-(a/2.0)))], Y[(Y < (a/2.0)) | (Y > (1-(a/2.0)))], color='red', label='y < 0.25 or y > 0.75')
+
+
+
+# tmp = one_norm(X-1,Y)
+
+
+# idx = ((b/np.sqrt(2))*one_norm(X-1,Y) )<1 | (Y < (a/2.0)) | (Y > (1-(a/2.0)))
+
+# idx = Y < (a/2.0) or (Y > (1-(a/2.0)))
+
+# plt.scatter(X[(Y < (a/2.0)) | (Y > (1-(a/2.0)))], Y[(Y < (a/2.0)) | (Y > (1-(a/2.0)))], color='red', label='y < 0.25 or y > 0.75')
+
+# plt.scatter(X[1-((b/np.sqrt(2))*one_norm(X-1,Y) )< 1 + (b/np.sqrt(2)) | 1 - (b/np.sqrt(2))*one_norm(X,Y) < 1 + (b/np.sqrt(2))  | (Y < (a/2.0)) | (Y > (1-(a/2.0)))], Y[1-((b/np.sqrt(2))*one_norm(X-1,Y) )< 1 + (b/np.sqrt(2)) | 1 - (b/np.sqrt(2))*one_norm(X,Y)  < 1 + (b/np.sqrt(2))  | (Y < (a/2.0)) | (Y > (1-(a/2.0)))], color='red', label='y < 0.25 or y > 0.75')
+
+
+# plt.scatter(X[idx], Y[idx], color='red', label='y < 0.25 or y > 0.75')
+
+plt.xlabel('X')
+plt.ylabel('Y')
+plt.title('Meshgrid with points colored based on y=x')
+plt.legend()
+plt.grid(True)
+plt.axis('equal')
+plt.show()
diff --git a/Plot-Scripts/MacroMicrostructurePlot.py b/Plot-Scripts/MacroMicrostructurePlot.py
new file mode 100644
index 0000000000000000000000000000000000000000..a3f7f175bb4b08ff4f0a3912c0e7b5a5b8a87fb5
--- /dev/null
+++ b/Plot-Scripts/MacroMicrostructurePlot.py
@@ -0,0 +1,586 @@
+import os
+import sys
+import re
+import codecs
+import math
+import numpy as np
+import matplotlib.pyplot as plt
+from matplotlib.patches import Rectangle
+
+
+"""
+    This script allows to plot a microstructure (that may varies on a macroscopic scale)
+    on a macroscopic domain discretized into "grain regions".
+
+"""
+
+def one_norm(X,Y):
+    return np.abs(X) + np.abs(Y)
+
+def two_norm(X,Y):
+    return np.sqrt(X**2 + Y**2)
+
+def infinity_norm(X,Y):
+    return np.maximum(np.abs(X),np.abs(Y))
+    # return np.linalg.norm([X,Y])
+
+def euclidean_distance(A,B):
+    return two_norm(A[0]-B[0],A[1]-B[1])
+
+def one_norm_distance(A,B):
+    return one_norm(A[0]-B[0],A[1]-B[1])
+
+def infinity_norm_distance(A,B):
+    return infinity_norm(A[0]-B[0],A[1]-B[1])
+
+
+resultPath = '/home/klaus/Desktop'
+textwidth = 6.26894      # textwidth in inch
+width = textwidth * 0.5
+# width = textwidth * 0.33
+height = textwidth/1.618 # The golden ratio.
+
+
+# Domain and grain parameters
+x_length = 2
+y_length = 1
+n = 2000
+num_grains_x = 12
+num_grains_y = 6
+grain_size_x = x_length / num_grains_x
+grain_size_y = y_length / num_grains_y
+
+offset = 0.0  # Displacement along normal vector direction
+
+theta = 0.1  # Stripe width
+alpha_degrees = 0  # Line angle
+
+# alpha_start = np.pi/12.0
+# alpha_target = np.pi/3.0
+
+alpha_start =  (np.pi/2.0) - np.pi/12.0
+alpha_target = (np.pi/2.0) - np.pi/3.0
+
+theta_start = 0.2
+theta_target = 0.4
+
+
+# 
+
+""""
+    Variation of angle and Width:
+    angle grows in y-direction
+    fibre width grows in x-direction
+"""
+# angles = np.linspace(alpha_start,alpha_target,num_grains_y)  # alpha changing in y-direction
+angles = np.linspace(alpha_start,alpha_target,num_grains_x)  # alpha changing in x-direction
+thetas = np.linspace(theta_start,theta_target,num_grains_x)
+
+# Moon
+t_start = 0.0
+t_target = 1.1
+t = np.linspace(t_start,t_target,num_grains_x)
+
+
+# Cross
+cdistance_start = 0.0
+cdistance_target = 0.3
+cdistance = np.linspace(cdistance_start,cdistance_target,num_grains_x)
+
+
+#use fixed theta:
+theta_fix = 0.15
+thetas = np.ones(num_grains_x) * theta_fix 
+
+#use fixed angle:
+alpha_fix = 0.0
+angles = np.ones(num_grains_x) * alpha_fix 
+# print('thetas:', thetas)
+
+# angles = [0.0,np.pi/4.0,np.pi/3.0,np.pi/2.0]
+
+# Convert angle to radians
+alpha = np.deg2rad(alpha_degrees)
+
+
+
+
+def distance_to_line(x, y, alpha , offset):
+    """Minimum distance from point (x,y) to offset center line
+    
+    Mathematical Basis:
+    1. Line Representation: (x,y) = t*(cosθ, sinθ) + offset*n̂
+       where n̂ = (-sinθ, cosθ) is the unit normal vector
+    2. Distance Formula: |n·(p - p₀)| where p₀ is offset point
+    3. Simplified Form: |-sinθ*x + cosθ*y - offset|
+    """
+    # return np.abs(-np.sin(alpha)*x + np.cos(alpha)*y - offset)
+    return np.abs(-np.cos(alpha)*x + np.sin(alpha)*y - offset)
+
+
+
+# Create figure and axes explicitly
+fig, ax = plt.subplots(figsize=(width,height))
+
+# Create grid and initialize indicator
+x = np.linspace(0, x_length, n)
+y = np.linspace(0, y_length, n)
+X, Y = np.meshgrid(x, y)
+indicator = np.zeros_like(X)
+
+for i in range(num_grains_x):
+    for j in range(num_grains_y):
+        # Grain boundaries
+        x_min, x_max = i*grain_size_x, (i+1)*grain_size_x
+        y_min, y_max = j*grain_size_y, (j+1)*grain_size_y
+        
+        # Find points within current grain
+        in_grain = (X >= x_min) & (X < x_max) & (Y >= y_min) & (Y < y_max)
+        
+        # Corrected coordinate normalization to local domain (-0,5,0.5)^2
+        X_local = (X[in_grain] - x_min)/grain_size_x - 0.5
+        Y_local = (Y[in_grain] - y_min)/grain_size_y - 0.5
+
+        #Angle depending on macro-point 
+        # alpha = angles[j] # alpha changing in y-direction
+        alpha = angles[i] # alpha changing in x-direction
+        theta = thetas[i]
+        # print('alpha:', alpha)
+        # print('theta:', theta)
+
+
+        """
+            indicator function for (alpha) rotated Fibres with width theta
+        """
+        # Calculate distances to offset line
+        # distances = distance_to_line(X_local, Y_local, alpha, offset)
+        # indicator[in_grain] = np.where(distances <= theta/2.0, 1, 0)
+
+
+
+
+        # define nodes
+        node1 = [-0.5,-0.5]
+        node2 = [0.5,-0.5]
+        node3 = [-0.5,0.5]
+        node4 = [0.5,0.5]
+        center = [0,0]
+
+        """
+            indicator function for circles centered at midpoint and corner points.
+        """
+        # tmp_1 = euclidean_distance([X_local,Y_local],node1) < theta 
+        # tmp_2 = euclidean_distance([X_local,Y_local],node2) < theta 
+        # tmp_3 = euclidean_distance([X_local,Y_local],node3) < theta 
+        # tmp_4 = euclidean_distance([X_local,Y_local],node4) < theta 
+        # tmp_5 = euclidean_distance([X_local,Y_local],center) < theta 
+        # boolQuantity = np.logical_or(tmp_1, np.logical_or(tmp_2, np.logical_or(tmp_3,np.logical_or(tmp_4,tmp_5))))
+        # indicator[in_grain] = np.where(boolQuantity==True, 1, 0)
+
+        """
+            indicator function for diamonds (one-norm) centered at midpoint and corner points.
+        """
+        # tmp_1 = one_norm_distance([X_local,Y_local],node1) < theta 
+        # tmp_2 = one_norm_distance([X_local,Y_local],node2) < theta 
+        # tmp_3 = one_norm_distance([X_local,Y_local],node3) < theta 
+        # tmp_4 = one_norm_distance([X_local,Y_local],node4) < theta 
+        # tmp_5 = one_norm_distance([X_local,Y_local],center) < theta 
+        # boolQuantity = np.logical_or(tmp_1, np.logical_or(tmp_2, np.logical_or(tmp_3,np.logical_or(tmp_4,tmp_5))))
+        # indicator[in_grain] = np.where(boolQuantity==True, 1, 0)
+
+
+        """
+            indicator function for squares (inifnity-norm) centered at midpoint and corner points.
+        """
+        # tmp_1 = infinity_norm_distance([X_local,Y_local],node1) < theta 
+        # tmp_2 = infinity_norm_distance([X_local,Y_local],node2) < theta 
+        # tmp_3 = infinity_norm_distance([X_local,Y_local],node3) < theta 
+        # tmp_4 = infinity_norm_distance([X_local,Y_local],node4) < theta 
+        # tmp_5 = infinity_norm_distance([X_local,Y_local],center) < theta 
+        # boolQuantity = np.logical_or(tmp_1, np.logical_or(tmp_2, np.logical_or(tmp_3,np.logical_or(tmp_4,tmp_5))))
+        # indicator[in_grain] = np.where(boolQuantity==True, 1, 0)
+
+
+
+        """
+            indicator function for stars
+        """
+        # tmp_1 = euclidean_distance([X_local,Y_local],node1) > theta 
+        # tmp_2 = euclidean_distance([X_local,Y_local],node2) > theta 
+        # tmp_3 = euclidean_distance([X_local,Y_local],node3) > theta 
+        # tmp_4 = euclidean_distance([X_local,Y_local],node4) > theta 
+        # boolQuantity = np.logical_and(tmp_1, np.logical_and(tmp_2, np.logical_and(tmp_3,tmp_4)))
+        # indicator[in_grain] = np.where(boolQuantity==True, 1, 0)
+
+
+
+        """
+            indicator function for Circles
+        """
+        # outerDiam = 0.4
+        # tmp_1 = euclidean_distance([X_local,Y_local],center) < outerDiam 
+        # tmp_2 = euclidean_distance([X_local,Y_local],center) > theta
+        # # tmp_1 = euclidean_distance([X_local,Y_local],node1) > theta 
+        # # tmp_2 = euclidean_distance([X_local,Y_local],node2) > theta 
+        # # tmp_3 = euclidean_distance([X_local,Y_local],node3) > theta 
+        # # tmp_4 = euclidean_distance([X_local,Y_local],node4) > theta 
+        # # boolQuantity = np.logical_and(tmp_1, np.logical_and(tmp_2, np.logical_and(tmp_3,tmp_4)))
+        # boolQuantity = np.logical_and(tmp_1, tmp_2)
+        # indicator[in_grain] = np.where(boolQuantity==True, 1, 0)
+
+
+        """
+            indicator function for rising Sun
+        """
+        # # midpoint = node1 + t[i] * (np.array(node4)-np.array(node1))
+        # midpoint = [-0.5,0] + t[i] * (np.array([0.5,0])-np.array([-0.5,0]))
+
+        # tmp_1 = euclidean_distance([X_local,Y_local],midpoint) < theta
+        # # tmp_2 = euclidean_distance([X_local,Y_local],center) > theta
+        # # tmp_1 = euclidean_distance([X_local,Y_local],node1) > theta 
+        # # tmp_2 = euclidean_distance([X_local,Y_local],node2) > theta 
+        # # tmp_3 = euclidean_distance([X_local,Y_local],node3) > theta 
+        # # tmp_4 = euclidean_distance([X_local,Y_local],node4) > theta 
+        # # boolQuantity = np.logical_and(tmp_1, np.logical_and(tmp_2, np.logical_and(tmp_3,tmp_4)))
+        # # boolQuantity = np.logical_and(tmp_1, tmp_2)
+        # boolQuantity = tmp_1
+        # indicator[in_grain] = np.where(boolQuantity==True, 1, 0)
+
+        """
+            indicator function for Moon
+        """
+        # # midpoint = node1 + t[i] * (np.array(node4)-np.array(node1))
+        # midpoint = [-0.5,0] + t[i] * (np.array([0.5,0])-np.array([-0.5,0]))
+        # outerDiam = 0.3
+
+        # tmp_1 = euclidean_distance([X_local,Y_local],midpoint) > theta
+        # tmp_2 = euclidean_distance([X_local,Y_local],center) < outerDiam 
+        # # tmp_2 = euclidean_distance([X_local,Y_local],center) > theta
+        # # tmp_1 = euclidean_distance([X_local,Y_local],node1) > theta 
+        # # tmp_2 = euclidean_distance([X_local,Y_local],node2) > theta 
+        # # tmp_3 = euclidean_distance([X_local,Y_local],node3) > theta 
+        # # tmp_4 = euclidean_distance([X_local,Y_local],node4) > theta 
+        # # boolQuantity = np.logical_and(tmp_1, np.logical_and(tmp_2, np.logical_and(tmp_3,tmp_4)))
+        # boolQuantity = np.logical_and(tmp_1, tmp_2)
+        # # boolQuantity = tmp_1
+        # indicator[in_grain] = np.where(boolQuantity==True, 1, 0)
+
+
+        """
+            indicator function for Cross
+        """
+        # #cross
+        # tmp_1 = np.abs(Y_local) < theta
+        # tmp_2= np.abs(X_local) < theta
+
+        # #center block
+        # center_theta = 0.3
+        # tmp_3 = infinity_norm_distance([X_local,Y_local],center) < center_theta
+
+        # boolQuantity = np.logical_or(tmp_1, np.logical_or(tmp_2,tmp_3))
+        # # boolQuantity = tmp_3
+        # indicator[in_grain] = np.where(boolQuantity==True, 1, 0)
+
+
+        """
+            indicator function for Cross 
+        """
+        #cross
+        tmp_1 = np.abs(Y_local) < 0.05
+        tmp_2= np.abs(X_local) < 0.05
+
+        tmp_3 = infinity_norm_distance([X_local,Y_local],center) > cdistance[i]
+        tmp_4 = infinity_norm_distance([X_local,Y_local],center) < cdistance[i] + theta
+
+
+
+        # boolQuantity = np.logical_and(tmp_1, tmp_2)
+        boolQuantity = np.logical_or(tmp_1, np.logical_or(tmp_2, np.logical_and(tmp_3,tmp_4)))
+
+        # #center block
+        # center_theta = 0.3
+        # tmp_3 = infinity_norm_distance([X_local,Y_local],center) < center_theta
+
+        # boolQuantity = np.logical_or(tmp_1, np.logical_or(tmp_2,tmp_3))
+        # boolQuantity = tmp_3
+        indicator[in_grain] = np.where(boolQuantity==True, 1, 0)
+
+# Visualization
+# plt.figure(figsize=(12, 3))
+# ax = plt.gca()
+# plt.pcolormesh(X, Y, indicator, cmap='Paired', shading='auto')
+
+# Plot main visualization
+"""
+    Create plot with 'pcolormesh'
+    * Reducing the image-quality/file-size by using rasterized option:
+    * Looks much smoother without 'rasterize' option however file-size gets out of hand..: 
+    * Together with the 'dpi=..' option of figsave we can control the file-size
+    * Advantage: Text etc. is still vectorized without having too large files.
+"""
+mesh = ax.pcolormesh(X, Y, indicator, cmap='Paired', shading='auto')
+# mesh = ax.pcolormesh(X, Y, indicator, cmap='Paired', rasterized=True)
+# plt.title(f'Offset Stripes: θ = {alpha_degrees}°, offset = {offset}', pad=15)
+
+# Add grain boundaries
+for i in range(num_grains_x):
+    for j in range(num_grains_y):
+        rect = Rectangle((i*grain_size_x, j*grain_size_y),
+                        grain_size_x, grain_size_y,
+                        linewidth=1.0, 
+                        edgecolor='lightgray', 
+                        facecolor='none')
+        ax.add_patch(rect)
+
+# Clean axis
+# ax.set_aspect(1/2)
+ax.set_aspect(1)
+ax.set_xticks([])
+ax.set_yticks([])
+# plt.box(False)
+# plt.tight_layout()
+# plt.show()
+# Save Figure as pdf.
+fig.set_size_inches(width, height)
+fig.savefig(resultPath + '/MacroMicrostructurePlot'+'.png', dpi=800) #dpi on
+# fig.savefig(resultPath + '/MacroMicrostructurePlot'+'.pdf',format='pdf', dpi=1500) #dpi on
+print('Saved MacroMicrostructure-plot as figure.')
+
+#################################################
+
+
+# import numpy as np
+# import matplotlib.pyplot as plt
+# from matplotlib.patches import Rectangle
+
+# # Domain parameters
+# x_length = 4
+# y_length = 1
+# aspect_ratio = x_length/y_length
+# n = 1000
+# num_grains_x = 8
+# num_grains_y = 2
+# grain_size_x = x_length/num_grains_x
+# grain_size_y = y_length/num_grains_y
+# base_epsilon = 0.08  # Visual width
+# offset = 0.15        # Offset parameter
+# initial_angle = 0    # Starting angle (degrees)
+# angle_range = 180    # Total angular variation (degrees)
+
+# def distance_to_line(x, y, theta, offset=0, ar=aspect_ratio):
+#     """Distance calculation with aspect ratio and offset compensation"""
+#     x_scaled = x/ar
+#     return np.abs(-np.sin(theta)*x_scaled + np.cos(theta)*y - offset)
+
+# # Create figure and axes explicitly
+# fig, ax = plt.subplots(figsize=(12, 3))
+
+# # Create grid and initialize indicator
+# x = np.linspace(0, x_length, n)
+# y = np.linspace(0, y_length, n)
+# X, Y = np.meshgrid(x, y)
+# indicator = np.zeros_like(X)
+
+# for i in range(num_grains_x):
+#     for j in range(num_grains_y):
+#         x_center = (i + 0.5) * grain_size_x
+#         theta_deg = initial_angle + (x_center/x_length) * angle_range
+#         theta = np.deg2rad(theta_deg)
+        
+#         x_min, x_max = i*grain_size_x, (i+1)*grain_size_x
+#         y_min, y_max = j*grain_size_y, (j+1)*grain_size_y
+        
+#         in_grain = (X >= x_min) & (X < x_max) & (Y >= y_min) & (Y < y_max)
+        
+#         X_local = ((X[in_grain] - x_min)/grain_size_x) - 0.5
+#         Y_local = ((Y[in_grain] - y_min)/grain_size_y) - 0.5
+
+#         distances = distance_to_line(X_local, Y_local, theta, offset)
+#         indicator[in_grain] = np.where(distances < base_epsilon, 1, 0)
+
+# # Plot main visualization
+# mesh = ax.pcolormesh(X, Y, indicator, cmap='binary', shading='auto')
+
+# # Add grain boundaries
+# for i in range(num_grains_x):
+#     for j in range(num_grains_y):
+#         rect = Rectangle((i*grain_size_x, j*grain_size_y),
+#                         grain_size_x, grain_size_y,
+#                         linewidth=1.2, 
+#                         edgecolor='lightgray', 
+#                         facecolor='none')
+#         ax.add_patch(rect)
+
+# # Configure axes
+# ax.set_aspect(1/4)
+# ax.set_title(f'Stripe Pattern: θ={initial_angle}-{initial_angle+angle_range}°, offset={offset}', 
+#              pad=15, fontsize=14)
+# ax.set_xticks([])
+# ax.set_yticks([])
+# ax.spines['top'].set_visible(False)
+# ax.spines['right'].set_visible(False)
+# ax.spines['bottom'].set_visible(False)
+# ax.spines['left'].set_visible(False)
+
+# # Adjust layout and save
+# plt.tight_layout()
+# fig.savefig('grain_stripes.pdf', format='pdf', bbox_inches='tight', dpi=300)
+
+# # Optional: Close the figure to free memory
+# plt.close(fig)
+
+
+# ##################
+# import numpy as np
+# import matplotlib.pyplot as plt
+# from matplotlib.patches import Rectangle
+
+# # Domain parameters
+# x_length = 2
+# y_length = 1
+# aspect_ratio = x_length/y_length
+# n = 800
+# num_grains_x = 8
+# num_grains_y = 4
+# grain_size_x = x_length/num_grains_x
+# grain_size_y = y_length/num_grains_y
+# base_epsilon = 0.08
+# offset = 0.15
+# initial_angle = 0
+# angle_range = 180
+
+
+# resultPath = '/home/klaus/Desktop/MacroMicroStructurePlot'
+# textwidth = 6.26894      # textwidth in inch
+# width = textwidth * 0.5
+# # width = textwidth * 0.33
+# height = textwidth/1.618 # The golden ratio.
+
+# def distance_to_line(x, y, theta, offset=0, ar=aspect_ratio):
+#     """Distance calculation with aspect ratio and offset compensation"""
+#     x_scaled = x/ar
+#     return np.abs(-np.sin(theta)*x_scaled + np.cos(theta)*y - offset)
+
+# # Create figure and axes explicitly
+# # fig, ax = plt.subplots(figsize=(12, 3))
+# fig, ax = plt.subplots(figsize=(width, height))
+
+# # Create grid and initialize indicator
+# x = np.linspace(0, x_length, n)
+# y = np.linspace(0, y_length, n)
+# X, Y = np.meshgrid(x, y)
+# indicator = np.zeros_like(X)
+
+# for i in range(num_grains_x):
+#     for j in range(num_grains_y):
+#         x_center = (i + 0.5) * grain_size_x
+#         theta_deg = initial_angle + (x_center/x_length) * angle_range
+#         theta = np.deg2rad(theta_deg)
+        
+#         x_min, x_max = i*grain_size_x, (i+1)*grain_size_x
+#         y_min, y_max = j*grain_size_y, (j+1)*grain_size_y
+        
+#         in_grain = (X >= x_min) & (X < x_max) & (Y >= y_min) & (Y < y_max)
+        
+#         # Fixed parentheses syntax
+#         X_local = ((X[in_grain] - x_min)/grain_size_x) - 0.5  # Corrected
+#         Y_local = ((Y[in_grain] - y_min)/grain_size_y) - 0.5  # Corrected
+
+#         distances = distance_to_line(X_local, Y_local, theta, offset)
+#         indicator[in_grain] = np.where(distances < base_epsilon, 1, 0)
+
+# # Plot main visualization
+# ax.pcolormesh(X, Y, indicator, cmap='binary', shading='auto')
+
+# # Add grain boundaries
+# for i in range(num_grains_x):
+#     for j in range(num_grains_y):
+#         rect = Rectangle((i*grain_size_x, j*grain_size_y),
+#                         grain_size_x, grain_size_y,
+#                         linewidth=1.2, 
+#                         edgecolor='lightgray', 
+#                         facecolor='none')
+#         ax.add_patch(rect)
+
+# # Configure axes
+# ax.set_aspect(1)
+# ax.set_title(f'Stripe Pattern: θ={initial_angle}-{initial_angle+angle_range}°, offset={offset}', 
+#              pad=15, fontsize=14)
+# ax.set_axis_off()  # Cleaner than individual spine/ticks removal
+
+# plt.show()
+
+# # Save and close
+# plt.tight_layout()
+# # fig.savefig('grain_stripes.pdf', format='pdf', bbox_inches='tight', dpi=300)
+# fig.savefig('grain_stripes.png', bbox_inches='tight', dpi=500)
+# plt.close(fig)
+# print("PDF successfully generated at: grain_stripes.pdf")
+
+
+
+
+# ################
+# import numpy as np
+# import matplotlib.pyplot as plt
+# from matplotlib.patches import Rectangle
+
+# # Optimized parameters
+# x_length = 4
+# y_length = 1
+# n = 200  # Reduced resolution (was 1000)
+# num_grains_x = 8
+# num_grains_y = 2
+# grain_size_x = x_length/num_grains_x
+# grain_size_y = y_length/num_grains_y
+# base_epsilon = 0.08
+# offset = 0.15
+# initial_angle = 0
+# angle_range = 180
+
+# def distance_to_line(x, y, theta, offset=0, ar=x_length/y_length):
+#     x_scaled = x/ar
+#     return np.abs(-np.sin(theta)*x_scaled + np.cos(theta)*y - offset)
+
+# # Create figure
+# fig, ax = plt.subplots(figsize=(12, 3))
+
+# # Create optimized grid
+# x = np.linspace(0, x_length, n)
+# y = np.linspace(0, y_length, n)
+# X, Y = np.meshgrid(x, y)
+# indicator = np.zeros_like(X)
+
+# for i in range(num_grains_x):
+#     for j in range(num_grains_y):
+#         # ... [same grain processing as before] ...
+
+# # Rasterize the heatmap while keeping vectors for boundaries/text
+# heatmap = ax.pcolormesh(X, Y, indicator, cmap='binary', shading='auto',
+#                        rasterized=True)  # Critical optimization
+
+# # Add grain boundaries (vector elements)
+# for i in range(num_grains_x):
+#     for j in range(num_grains_y):
+#         rect = Rectangle((i*grain_size_x, j*grain_size_y),
+#                         grain_size_x, grain_size_y,
+#                         linewidth=1.2, 
+#                         edgecolor='lightgray', 
+#                         facecolor='none')
+#         ax.add_patch(rect)
+
+# # Final formatting
+# ax.set_aspect(1/4)
+# ax.set_title(f'Optimized Pattern: θ={initial_angle}-{initial_angle+angle_range}°', 
+#              pad=15, fontsize=14)
+# ax.set_axis_off()
+
+# # Save with optimized PDF settings
+# plt.tight_layout()
+# fig.savefig('optimized_grain_stripes.pdf', format='pdf',
+#            bbox_inches='tight',
+#            dpi=150,  # Reduced from 300
+#            metadata={'Creator': '', 'Producer': ''},  # Remove bloat
+#            )
+# plt.close(fig)
+# print("Optimized PDF generated successfully")
\ No newline at end of file
diff --git a/dune-uncrustify.cfg b/dune-uncrustify.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..57275b1441a403e02e882e7c121331816ed86344
--- /dev/null
+++ b/dune-uncrustify.cfg
@@ -0,0 +1,125 @@
+tok_split_gte=false
+utf8_byte=false
+utf8_force=false
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_namespace=true
+indent_extern=true
+indent_class=true
+indent_class_colon=true
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=false
+indent_func_def_param=false
+indent_func_proto_param=false
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=true
+indent_func_param_double=true
+indent_relative_single_line_comments=false
+indent_col1_comment=true
+indent_access_spec_body=false
+indent_paren_nl=false
+indent_comma_paren=false
+indent_bool_paren=false
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_assign=true
+sp_balance_nested_parens=false
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_left=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=false
+align_left_shift=true
+align_oc_decl_colon=false
+nl_collapse_empty_body=true
+nl_assign_leave_one_liners=true
+nl_class_leave_one_liners=true
+nl_enum_leave_one_liners=true
+nl_getset_leave_one_liners=false
+nl_func_leave_one_liners=false
+nl_if_leave_one_liners=false
+nl_multi_line_cond=false
+nl_multi_line_define=false
+nl_before_case=false
+nl_after_case=false
+nl_after_return=false
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_define_macro=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_after_multiline_comment=false
+eat_blanks_after_open_brace=false
+eat_blanks_before_close_brace=false
+mod_full_brace_if_chain=false
+mod_pawn_semicolon=false
+mod_full_paren_if_bool=false
+mod_remove_extra_semicolon=false
+mod_sort_import=false
+mod_sort_using=false
+mod_sort_include=false
+mod_move_case_break=false
+mod_remove_empty_return=false
+cmt_indent_multi=true
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=true
+cmt_insert_before_preproc=false
+pp_indent_at_level=false
+pp_region_indent_code=false
+pp_if_indent_code=false
+pp_define_at_level=false
+indent_columns=2
+indent_access_spec=-2
+nl_end_of_file_min=1
+indent_with_tabs=0
+sp_before_semi=ignore
+sp_after_semi=ignore
+sp_after_semi_for=ignore
+sp_before_comma=ignore
+sp_before_case_colon=ignore
+sp_not=ignore
+sp_inv=ignore
+sp_addr=ignore
+sp_member=ignore
+sp_deref=ignore
+sp_sign=ignore
+sp_incdec=ignore
+sp_before_nl_cont=ignore
+nl_end_of_file=force
+nl_before_if=ignore
diff --git a/dune/microstructure/CorrectorComputer.hh b/dune/microstructure/CorrectorComputer.hh
index 34917870853d2540a9221770afee63927feb3a21..91c2bf158c738f231214363d45b976c57cd81711 100644
--- a/dune/microstructure/CorrectorComputer.hh
+++ b/dune/microstructure/CorrectorComputer.hh
@@ -5,19 +5,19 @@
 #include <dune/common/parametertree.hh>
 
 #include <dune/functions/functionspacebases/interpolate.hh>
-#include <dune/functions/gridfunctions/gridviewfunction.hh> 
-#include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh> 
+#include <dune/functions/gridfunctions/gridviewfunction.hh>
+#include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>
 
 #include <dune/grid/io/file/vtk/subsamplingvtkwriter.hh>
 
 #include <dune/istl/matrixindexset.hh>
-#include <dune/istl/eigenvalue/test/matrixinfo.hh> // TEST: compute condition Number 
+#include <dune/istl/eigenvalue/test/matrixinfo.hh>
 
 #include <dune/microstructure/matrix_operations.hh>
 #include <dune/microstructure/voigthelper.hh>
 
-#include <dune/solvers/solvers/umfpacksolver.hh> 
-#include <dune/solvers/solvers/cholmodsolver.hh> 
+#include <dune/solvers/solvers/umfpacksolver.hh>
+#include <dune/solvers/solvers/cholmodsolver.hh>
 
 using namespace MatrixOperations;
 using std::shared_ptr;
@@ -28,20 +28,20 @@ template <class Basis, class Material> //, class LocalScalar, class Local2Tensor
 class CorrectorComputer {
 
 public:
-	static const int dimworld = 3; //GridView::dimensionworld;
-	static const int dim = Basis::GridView::dimension; //const int dim = Domain::dimension;
-	
-	using GridView = typename Basis::GridView;
-	using Domain = typename GridView::template Codim<0>::Geometry::GlobalCoordinate;
-	using VectorRT = Dune::FieldVector< double, dimworld>;
-	using MatrixRT = Dune::FieldMatrix< double, dimworld, dimworld>;
-	using FuncScalar = std::function< double(const Domain&) >;
-	using FuncVector = std::function< VectorRT(const Domain&) >;
-	using Func2Tensor = std::function< MatrixRT(const Domain&) >;
-  using Func2int = std::function< int(const Domain&) >;
-	using VectorCT = Dune::BlockVector<Dune::FieldVector<double,1> >;
-	using MatrixCT = Dune::BCRSMatrix<Dune::FieldMatrix<double,1,1> >;
-	using ElementMatrixCT = Dune::Matrix<double>;
+  static const int dimworld = 3;       //GridView::dimensionworld;
+  static const int dim = Basis::GridView::dimension;       //const int dim = Domain::dimension;
+
+  using GridView = typename Basis::GridView;
+  using Domain = typename GridView::template Codim<0>::Geometry::GlobalCoordinate;
+  using VectorRT = Dune::FieldVector< double, dimworld>;
+  using MatrixRT = Dune::FieldMatrix< double, dimworld, dimworld>;
+  using FuncScalar = std::function< double (const Domain&) >;
+  using FuncVector = std::function< VectorRT (const Domain&) >;
+  using Func2Tensor = std::function< MatrixRT (const Domain&) >;
+  using Func2int = std::function< int (const Domain&) >;
+  using VectorCT = Dune::BlockVector<Dune::FieldVector<double,1> >;
+  using MatrixCT = Dune::BCRSMatrix<Dune::FieldMatrix<double,1,1> >;
+  using ElementMatrixCT = Dune::Matrix<double>;
 
 
 
@@ -51,20 +51,20 @@ public:
 
 
 protected:
-	const Basis& basis_; 
+  const Basis& basis_;
 
   // const Material& material_;
   // Material& material_;
   // Material material_;
 
-	// fstream& log_;      // Output-log
-	const Dune::ParameterTree& parameterSet_;
+  // fstream& log_;      // Output-log
+  const Dune::ParameterTree& parameterSet_;
 
-  MatrixCT stiffnessMatrix_; 
-	VectorCT load_alpha1_,load_alpha2_,load_alpha3_; //right-hand side(load) vectors
+  MatrixCT stiffnessMatrix_;
+  VectorCT load_alpha1_,load_alpha2_,load_alpha3_;       //right-hand side(load) vectors
 
-  VectorCT x_1_, x_2_, x_3_;            // (all) Corrector coefficient vectors 
-  VectorCT phi_1_, phi_2_, phi_3_;      // Corrector phi_i coefficient vectors 
+  VectorCT x_1_, x_2_, x_3_;            // (all) Corrector coefficient vectors
+  VectorCT phi_1_, phi_2_, phi_3_;      // Corrector phi_i coefficient vectors
   Dune::FieldVector<double,3> m_1_, m_2_, m_3_;  // Corrector m_i coefficient vectors
 
   // (assembled) corrector matrices M_i
@@ -77,119 +77,119 @@ protected:
   const std::array<VoigtVector<double,3>,3 > matrixBasis_;
 
   Func2Tensor x3G_1_ = [] (const Domain& x) {
-                            return MatrixRT{{1.0*x[2], 0.0, 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-                        };
+                         return MatrixRT{{1.0*x[2], 0.0, 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                       };
 
   Func2Tensor x3G_2_ = [] (const Domain& x) {
-                            return MatrixRT{{0.0, 0.0, 0.0}, {0.0, 1.0*x[2], 0.0}, {0.0, 0.0, 0.0}};
-                        };
+                         return MatrixRT{{0.0, 0.0, 0.0}, {0.0, 1.0*x[2], 0.0}, {0.0, 0.0, 0.0}};
+                       };
 
-  Func2Tensor x3G_3_ = [] (const Domain& x) {                                                                               
-                            return MatrixRT{{0.0, (1.0/sqrt(2.0))*x[2], 0.0}, {(1.0/sqrt(2.0))*x[2], 0.0, 0.0}, {0.0, 0.0, 0.0}};
-                        };
+  Func2Tensor x3G_3_ = [] (const Domain& x) {
+                         return MatrixRT{{0.0, (1.0/sqrt(2.0))*x[2], 0.0}, {(1.0/sqrt(2.0))*x[2], 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                       };
 
   const std::array<Func2Tensor, 3> x3MatrixBasisContainer_ = {x3G_1_, x3G_2_, x3G_3_};
 
-    // --- Offset between basis indices 
+  // --- Offset between basis indices
   const int phiOffset_;
 
-public: 
-    ///////////////////////////////
-    // constructor
-    ///////////////////////////////
-    // CorrectorComputer(const Basis& basis, 
-    //         Material& material,
-    //         std::fstream& log, 
-    //         const Dune::ParameterTree& parameterSet)
-    //       : basis_(basis), 
-    //         material_(material),
-    //         gamma_(material_.getGamma()),
-    //         log_(log),
-    //         parameterSet_(parameterSet),
-    //         matrixBasis_(std::array<VoigtVector<double,3>,3>{matrixToVoigt(Dune::FieldMatrix<double,3,3>({{1, 0, 0}, {0, 0, 0}, {0, 0, 0}})),
-    //                                                          matrixToVoigt(Dune::FieldMatrix<double,3,3>({{0, 0, 0}, {0, 1, 0}, {0, 0, 0}})),
-    //                                                          matrixToVoigt(Dune::FieldMatrix<double,3,3>({{0, 1/std::sqrt(2.0), 0}, {1/std::sqrt(2.0), 0, 0}, {0, 0, 0}}))}),
-    //         phiOffset_(basis.size())
-    // {} 
-
-    CorrectorComputer(const Basis& basis, 
-            std::shared_ptr<Material> material,
-            // std::fstream& log, 
-            const Dune::ParameterTree& parameterSet)
-          : basis_(basis), 
-            material_(material),
-            // gamma_(material_->getGamma()),
-            // log_(log),
-            parameterSet_(parameterSet),
-            matrixBasis_(std::array<VoigtVector<double,3>,3>{matrixToVoigt(Dune::FieldMatrix<double,3,3>({{1, 0, 0}, {0, 0, 0}, {0, 0, 0}})),
-                                                             matrixToVoigt(Dune::FieldMatrix<double,3,3>({{0, 0, 0}, {0, 1, 0}, {0, 0, 0}})),
-                                                             matrixToVoigt(Dune::FieldMatrix<double,3,3>({{0, 1/std::sqrt(2.0), 0}, {1/std::sqrt(2.0), 0, 0}, {0, 0, 0}}))}),
-            phiOffset_(basis.size())
-    {} 
+public:
+  ///////////////////////////////
+  // constructor
+  ///////////////////////////////
+  // CorrectorComputer(const Basis& basis,
+  //         Material& material,
+  //         std::fstream& log,
+  //         const Dune::ParameterTree& parameterSet)
+  //       : basis_(basis),
+  //         material_(material),
+  //         gamma_(material_.getGamma()),
+  //         log_(log),
+  //         parameterSet_(parameterSet),
+  //         matrixBasis_(std::array<VoigtVector<double,3>,3>{matrixToVoigt(Dune::FieldMatrix<double,3,3>({{1, 0, 0}, {0, 0, 0}, {0, 0, 0}})),
+  //                                                          matrixToVoigt(Dune::FieldMatrix<double,3,3>({{0, 0, 0}, {0, 1, 0}, {0, 0, 0}})),
+  //                                                          matrixToVoigt(Dune::FieldMatrix<double,3,3>({{0, 1/std::sqrt(2.0), 0}, {1/std::sqrt(2.0), 0, 0}, {0, 0, 0}}))}),
+  //         phiOffset_(basis.size())
+  // {}
+
+  CorrectorComputer(const Basis& basis,
+                    std::shared_ptr<Material> material,
+                    // std::fstream& log,
+                    const Dune::ParameterTree& parameterSet)
+    : basis_(basis),
+    material_(material),
+    // gamma_(material_->getGamma()),
+    // log_(log),
+    parameterSet_(parameterSet),
+    matrixBasis_(std::array<VoigtVector<double,3>,3>{matrixToVoigt(Dune::FieldMatrix<double,3,3>({{1, 0, 0}, {0, 0, 0}, {0, 0, 0}})),
+                                                     matrixToVoigt(Dune::FieldMatrix<double,3,3>({{0, 0, 0}, {0, 1, 0}, {0, 0, 0}})),
+                                                     matrixToVoigt(Dune::FieldMatrix<double,3,3>({{0, 1/std::sqrt(2.0), 0}, {1/std::sqrt(2.0), 0, 0}, {0, 0, 0}}))}),
+    phiOffset_(basis.size())
+  {}
 
   // -----------------------------------------------------------------
   // --- Assemble Corrector problems
   void assemble()
   {
-      Dune::Timer StiffnessTimer;
-      assembleCellStiffness(stiffnessMatrix_);
-      if (parameterSet_.get<bool>("printMicroOutput ", false))
-        std::cout << "Stiffness assembly Timer: " << StiffnessTimer.elapsed() << std::endl;
-    
+    Dune::Timer StiffnessTimer;
+    assembleCellStiffness(stiffnessMatrix_);
+    if (parameterSet_.get<bool>("printMicroOutput", false))
+      std::cout << "Stiffness assembly Timer: " << StiffnessTimer.elapsed() << std::endl;
+
 
 
 
-      Dune::Timer LoadVectorTimer;
-      assembleCellLoad(load_alpha1_ ,x3G_1_);
-      assembleCellLoad(load_alpha2_ ,x3G_2_);
-      assembleCellLoad(load_alpha3_ ,x3G_3_);
-      if (parameterSet_.get<bool>("printMicroOutput ", false))
-        std::cout << "Load vector assembly Timer: " << LoadVectorTimer.elapsed() << std::endl;
+    Dune::Timer LoadVectorTimer;
+    assembleCellLoad(load_alpha1_ ,x3G_1_);
+    assembleCellLoad(load_alpha2_ ,x3G_2_);
+    assembleCellLoad(load_alpha3_ ,x3G_3_);
+    if (parameterSet_.get<bool>("printMicroOutput", false))
+      std::cout << "Load vector assembly Timer: " << LoadVectorTimer.elapsed() << std::endl;
   };
 
 
-    // void updateMaterial(Material mat)
-    // {
-    //     this->material_ = mat;
-    // }
+  // void updateMaterial(Material mat)
+  // {
+  //     this->material_ = mat;
+  // }
 
-    void updateMaterial(std::shared_ptr<Material> mat)
-    {
-        // std::cout << "updateMaterial of CorrectorComputer" << std::endl;
-        material_ = mat;
-    }
+  void updateMaterial(std::shared_ptr<Material> mat)
+  {
+    // std::cout << "updateMaterial of CorrectorComputer" << std::endl;
+    material_ = mat;
+  }
 
 
-    ///////////////////////////////
-    // Getter
-    ///////////////////////////////
-    const shared_ptr<Basis> getBasis() {return make_shared<Basis>(basis_);}
+  ///////////////////////////////
+  // Getter
+  ///////////////////////////////
+  const shared_ptr<Basis> getBasis() {return make_shared<Basis>(basis_);}
 
-    Dune::ParameterTree getParameterSet() const {return parameterSet_;}
+  Dune::ParameterTree getParameterSet() const {return parameterSet_;}
 
-    // fstream* getLog(){return &log_;}
+  // fstream* getLog(){return &log_;}
 
-    // double getGamma(){return gamma_;}
-    double getGamma(){return material_->gamma_;}
+  // double getGamma(){return gamma_;}
+  double getGamma(){return material_->gamma_;}
 
-    shared_ptr<MatrixCT> getStiffnessMatrix(){return make_shared<MatrixCT>(stiffnessMatrix_);}
-    shared_ptr<VectorCT> getLoad_alpha1(){return make_shared<VectorCT>(load_alpha1_);}
-    shared_ptr<VectorCT> getLoad_alpha2(){return make_shared<VectorCT>(load_alpha2_);}
-    shared_ptr<VectorCT> getLoad_alpha3(){return make_shared<VectorCT>(load_alpha3_);}
-    // shared_ptr<Material> getMaterial(){return make_shared<Material>(material_);}
-    shared_ptr<Material> getMaterial(){return material_;}
+  shared_ptr<MatrixCT> getStiffnessMatrix(){return make_shared<MatrixCT>(stiffnessMatrix_);}
+  shared_ptr<VectorCT> getLoad_alpha1(){return make_shared<VectorCT>(load_alpha1_);}
+  shared_ptr<VectorCT> getLoad_alpha2(){return make_shared<VectorCT>(load_alpha2_);}
+  shared_ptr<VectorCT> getLoad_alpha3(){return make_shared<VectorCT>(load_alpha3_);}
+  // shared_ptr<Material> getMaterial(){return make_shared<Material>(material_);}
+  shared_ptr<Material> getMaterial(){return material_;}
 
 
-    // --- Get Correctors
-    auto getMcontainer(){return mContainer;}
-    shared_ptr<std::array<VectorCT, 3>> getPhicontainer(){return make_shared<std::array<VectorCT, 3>>(phiContainer);}
+  // --- Get Correctors
+  auto getMcontainer(){return mContainer;}
+  shared_ptr<std::array<VectorCT, 3> > getPhicontainer(){return make_shared<std::array<VectorCT, 3> >(phiContainer);}
 
-    auto getMatrixBasiscontainer(){return make_shared<std::array<VoigtVector<double,3>,3 >>(matrixBasis_);}
-    auto getx3MatrixBasiscontainer(){return x3MatrixBasisContainer_;}
+  auto getMatrixBasiscontainer(){return make_shared<std::array<VoigtVector<double,3>,3 > >(matrixBasis_);}
+  auto getx3MatrixBasiscontainer(){return x3MatrixBasisContainer_;}
 
-    shared_ptr<VectorCT> getCorr_phi1(){return make_shared<VectorCT>(phi_1_);}
-    shared_ptr<VectorCT> getCorr_phi2(){return make_shared<VectorCT>(phi_2_);}
-    shared_ptr<VectorCT> getCorr_phi3(){return make_shared<VectorCT>(phi_3_);}
+  shared_ptr<VectorCT> getCorr_phi1(){return make_shared<VectorCT>(phi_1_);}
+  shared_ptr<VectorCT> getCorr_phi2(){return make_shared<VectorCT>(phi_2_);}
+  shared_ptr<VectorCT> getCorr_phi3(){return make_shared<VectorCT>(phi_3_);}
 
 
 
@@ -241,7 +241,7 @@ public:
     //////////////////////////////////////////////////////////////////
     // setOneBaseFunctionToZero
     //////////////////////////////////////////////////////////////////
-    if(parameterSet_.get<bool>("set_oneBasisFunction_Zero ", true)){
+    if(parameterSet_.get<bool>("set_oneBasisFunction_Zero ", true)) {
       Dune::FieldVector<int,3> row;
       unsigned int arbitraryLeafIndex =  parameterSet_.get<unsigned int>("arbitraryLeafIndex", 0);
       unsigned int arbitraryElementNumber =  parameterSet_.get<unsigned int>("arbitraryElementNumber", 0);
@@ -272,8 +272,8 @@ public:
   void computeElementStiffnessMatrix(const typename Basis::LocalView& localView,
                                      const Dune::QuadratureRule<double,dim>& quadRule,
                                      const std::vector<int>& phaseAtQuadPoint,
-                                    ElementMatrixCT& elementMatrix
-                                    )
+                                     ElementMatrixCT& elementMatrix
+                                     )
   {
 
     auto element = localView.element();
@@ -285,7 +285,7 @@ public:
     // LocalBasis-Offset
     const int localPhiOffset = localView.size();
 
-    const auto& localFiniteElement = localView.tree().child(0).finiteElement();     
+    const auto& localFiniteElement = localView.tree().child(0).finiteElement();
     const auto nSf = localFiniteElement.localBasis().size();
 
     int QPcounter= 0;
@@ -320,31 +320,31 @@ public:
       const auto phase = phaseAtQuadPoint[QPcounter-1];
 
       for (size_t l=0; l< dimworld; l++)
-      for (size_t j=0; j < nSf; j++ )
-      {
+        for (size_t j=0; j < nSf; j++ )
+        {
           size_t row = localView.tree().child(l).localIndex(j);
-          
+
           // "phi*phi"-part
           for (size_t k=0; k < dimworld; k++)
-          for (size_t i=0; i < nSf; i++)
-          {
+            for (size_t i=0; i < nSf; i++)
+            {
               double energyDensity= voigtScalarProduct(material_->applyElasticityTensor(deformationGradient[i][k],phase),deformationGradient[j][l]);
 
-              size_t col = localView.tree().child(k).localIndex(i);                       
-              
+              size_t col = localView.tree().child(k).localIndex(i);
+
               elementMatrix[row][col] += energyDensity * quadPoint.weight() * integrationElement;
-          }
-              
+            }
+
           // "m*phi"  & "phi*m" - part
           for( size_t m=0; m<3; m++)
           {
-              double energyDensityGphi = voigtScalarProduct(material_->applyElasticityTensor(matrixBasis_[m],phase),deformationGradient[j][l]);
+            double energyDensityGphi = voigtScalarProduct(material_->applyElasticityTensor(matrixBasis_[m],phase),deformationGradient[j][l]);
 
-              auto value = energyDensityGphi * quadPoint.weight() * integrationElement;
-              elementMatrix[row][localPhiOffset+m] += value;
-              elementMatrix[localPhiOffset+m][row] += value;
+            auto value = energyDensityGphi * quadPoint.weight() * integrationElement;
+            elementMatrix[row][localPhiOffset+m] += value;
+            elementMatrix[localPhiOffset+m][row] += value;
           }
-      }
+        }
       // "m*m"-part
       for(size_t m=0; m<3; m++)                //TODO ist symmetric.. reicht die hälfte zu berechnen!!!
         for(size_t n=0; n<3; n++)
@@ -352,11 +352,11 @@ public:
           double energyDensityGG = voigtScalarProduct(material_->applyElasticityTensor(matrixBasis_[m],phase),matrixBasis_[n]);
 
           elementMatrix[localPhiOffset+m][localPhiOffset+n]  += energyDensityGG * quadPoint.weight() * integrationElement;                           // += !!!!! (Fixed-Bug)
-          
+
         }
     }
-  //   std::cout << "Number of QuadPoints:" << QPcounter << std::endl;
-  //   printmatrix(std::cout, elementMatrix, "elementMatrix", "--");
+    //   std::cout << "Number of QuadPoints:" << QPcounter << std::endl;
+    //   printmatrix(std::cout, elementMatrix, "elementMatrix", "--");
   }
 
 
@@ -364,18 +364,18 @@ public:
    * @brief Compute element load vector. Layout:
    *     | f*phi|
    *     | f*m  |
-   * 
-   * @tparam Vector 
-   * @tparam LocalForce 
-   * @param localView 
-   * @param elementRhs 
-   * @param forceTerm 
+   *
+   * @tparam Vector
+   * @tparam LocalForce
+   * @param localView
+   * @param elementRhs
+   * @param forceTerm
    */
   template<class Vector, class LocalForce>
   void computeElementLoadVector( const typename Basis::LocalView& localView,
-                                Vector& elementRhs,
-                                const LocalForce& forceTerm
-                                )
+                                 Vector& elementRhs,
+                                 const LocalForce& forceTerm
+                                 )
   {
     const auto element = localView.element();
     const auto geometry = element.geometry();
@@ -393,7 +393,7 @@ public:
     // LocalBasis-Offset
     const int localPhiOffset = localView.size();
 
-    int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);  
+    int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
     const auto& quad = Dune::QuadratureRules<double,dim>::rule(element.type(), orderQR);
 
     for (const auto& quadPoint : quad)
@@ -407,7 +407,7 @@ public:
 
       for (size_t i=0; i< jacobians.size(); i++)
         jacobians[i] = jacobians[i] * geometryJacobianInverse;
-      
+
 
       // "f*phi"-part
       for (size_t i=0; i < nSf; i++)
@@ -418,7 +418,7 @@ public:
           tmpDefGradientV[k][0] = jacobians[i][0][0];                                 // Y
           tmpDefGradientV[k][1] = jacobians[i][0][1];                                 // X2
           tmpDefGradientV[k][2] = jacobians[i][0][2];                     // X3
-          
+
           VoigtVector<double,3> defGradientV = symVoigt(crossSectionDirectionScaling((1.0/(material_->gamma_)),tmpDefGradientV));
 
           double energyDensity= voigtScalarProduct(material_->applyElasticityTensor((-1.0)*matrixToVoigt(forceTerm(quadPos)),localIndicatorFunction(quadPos)),defGradientV);
@@ -454,7 +454,7 @@ public:
     bool cacheElementMatrices = parameterSet_.get<bool>("cacheElementMatrices", true);
     // bool cacheElementMatrices = false;
     // if(parameterSet_.get<bool>("cacheElementMatrices", true))
-    if (parameterSet_.get<bool>("printMicroOutput ", false))
+    if (parameterSet_.get<bool>("printMicroOutput", false))
     {
       if (cacheElementMatrices)
       {
@@ -513,37 +513,37 @@ public:
       {
         computeElementStiffnessMatrix(localView, quadRule, phaseAtQuadPoint, elementMatrix);
       }
-      
-      
+
+
       // TEST: Check Element-Stiffness-Symmetry:
       if(parameterSet_.get<bool>("print_debug", false))
       {
-          for (size_t i=0; i<localPhiOffset; i++)
+        for (size_t i=0; i<localPhiOffset; i++)
           for (size_t j=0; j<localPhiOffset; j++ )
           {
-              if(abs(elementMatrix[i][j] - elementMatrix[j][i]) > 1e-12 )
-                  std::cout << "ELEMENT-STIFFNESS MATRIX NOT SYMMETRIC!!!" << std::endl;
+            if(abs(elementMatrix[i][j] - elementMatrix[j][i]) > 1e-12 )
+              std::cout << "ELEMENT-STIFFNESS MATRIX NOT SYMMETRIC!!!" << std::endl;
           }
       }
       //////////////////////////////////////////////////////////////////////////////
       // GLOBAL STIFFNES ASSEMBLY
       //////////////////////////////////////////////////////////////////////////////
       for (size_t i=0; i<localPhiOffset; i++)
-      for (size_t j=0; j<localPhiOffset; j++ )
-      {
+        for (size_t j=0; j<localPhiOffset; j++ )
+        {
           auto row = localView.index(i);
           auto col = localView.index(j);
           matrix[row][col] += elementMatrix[i][j];
-      }
+        }
       for (size_t i=0; i<localPhiOffset; i++)
-      for(size_t m=0; m<3; m++)
-      {
+        for(size_t m=0; m<3; m++)
+        {
           auto row = localView.index(i);
           matrix[row][phiOffset+m] += elementMatrix[i][localPhiOffset+m];
           matrix[phiOffset+m][row] += elementMatrix[localPhiOffset+m][i];
-      }
+        }
       for (size_t m=0; m<3; m++ )
-      for (size_t n=0; n<3; n++ )
+        for (size_t n=0; n<3; n++ )
           matrix[phiOffset+m][phiOffset+n] += elementMatrix[localPhiOffset+m][localPhiOffset+n];
 
       //  printmatrix(std::cout, matrix, "StiffnessMatrix", "--");
@@ -562,9 +562,9 @@ public:
     auto localView = basis_.localView();
     const int phiOffset = basis_.dimension();
 
-    // Transform G_alpha's to GridViewFunctions/LocalFunctions 
+    // Transform G_alpha's to GridViewFunctions/LocalFunctions
     auto loadGVF  = Dune::Functions::makeGridViewFunction(forceTerm, basis_.gridView());
-    auto loadFunctional = localFunction(loadGVF);      
+    auto loadFunctional = localFunction(loadGVF);
 
     for (const auto& element : elements(basis_.gridView()))
     {
@@ -591,11 +591,14 @@ public:
     }
   }
 
-  // -----------------------------------------------------------------
-  // --- Functions for global integral mean equals zero constraint
+
+  /** 
+      @brief This method is used to select 3 global indices that correspond to the 3 components of a given (by leadIdx)
+      local basis function.
+   */
   auto arbitraryComponentwiseIndices(const int elementNumber,
-                                    const int leafIdx
-                                    )
+                                     const int leafIdx
+                                     )
   {
     // (Local Approach -- works for non Lagrangian-Basis too)
     // Input  : elementNumber & localIdx
@@ -622,48 +625,85 @@ public:
     return row;
   }
 
+
+  /** 
+      @brief Method that fixes 3 (one for each component of a basis function) degrees of freedom 
+      to factor out the constant nullspace of the system.
+   */
   void setOneBaseFunctionToZero()
   {
-    if (parameterSet_.get<bool>("printMicroOutput ", false))
+    if (parameterSet_.get<bool>("printMicroOutput", false))
       std::cout << "Setting one Basis-function to zero" << std::endl;
 
-  //   constexpr int dim = Basis::LocalView::Element::dimension;
-    
     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)
-    Dune::FieldVector<std::size_t,3> row = arbitraryComponentwiseIndices(arbitraryElementNumber,arbitraryLeafIndex);
+    Dune::FieldVector<int,3> selectedIndices = arbitraryComponentwiseIndices(arbitraryElementNumber,arbitraryLeafIndex);
+    // printvector(std::cout, selectedIndices, "selectedIndices:", "--");
 
+    // Replace the corresponding rows in the stiffness matrix with entries of the identity matrix.
+    // for (int k = 0; k<dim; k++)
+    // {
+    //   load_alpha1_[selectedIndices[k]] = 0.0;
+    //   load_alpha2_[selectedIndices[k]] = 0.0;
+    //   load_alpha3_[selectedIndices[k]] = 0.0;
+    //   auto cIt    = stiffnessMatrix_[selectedIndices[k]].begin();
+    //   auto cEndIt = stiffnessMatrix_[selectedIndices[k]].end();
+    //   for (; cIt!=cEndIt; ++cIt) //iterate over row
+    //     *cIt = (cIt.index()==selectedIndices[k]) ? 1.0 : 0.0;
+    // }
+
+    // Replace the corresponding rows and columns in the stiffness matrix with entries of the identity matrix.
     for (int k = 0; k<dim; k++)
     {
-      load_alpha1_[row[k]] = 0.0;
-      load_alpha2_[row[k]] = 0.0;
-      load_alpha3_[row[k]] = 0.0;
-      auto cIt    = stiffnessMatrix_[row[k]].begin();
-      auto cEndIt = stiffnessMatrix_[row[k]].end();
-      for (; cIt!=cEndIt; ++cIt)
-        *cIt = (cIt.index()==row[k]) ? 1.0 : 0.0;
+      load_alpha1_[selectedIndices[k]] = 0.0;
+      load_alpha2_[selectedIndices[k]] = 0.0;
+      load_alpha3_[selectedIndices[k]] = 0.0;
+
+        //loop over all nonempty rows 
+        for (auto row = stiffnessMatrix_.begin(); row != stiffnessMatrix_.end(); ++row)
+        {
+          // adjust column with index selectedIndices[k]
+          if(stiffnessMatrix_.exists(row.index(),selectedIndices[k]))
+          {
+            stiffnessMatrix_[row.index()][selectedIndices[k]] = (row.index()==selectedIndices[k]) ? 1.0 : 0.0;
+          }
+          // iterate over whole row of the selectedIndices[k]:
+          if(row.index() == selectedIndices[k])
+          {
+            auto cIt    = stiffnessMatrix_[selectedIndices[k]].begin();
+            auto cEndIt = stiffnessMatrix_[selectedIndices[k]].end();
+            for (; cIt!=cEndIt; ++cIt)
+            {
+              *cIt = (cIt.index()==selectedIndices[k]) ? 1.0 : 0.0;
+            }
+          }
+        }
     }
+
   }
 
 
+  /** 
+      @brief Method that determines global indices corresponding to the components k = 1,2,3 of the global basis functions 
+      in order to subtract correct (component of) integral mean
+
+      In  : child/component integer
+      Out : all global basis indices that belong to that component
+   */
   auto childToIndexMap(const int k)
   {
-    // Input  : child/component
-    // Output : determine all Indices that belong to that component
+
     auto localView = basis_.localView();
 
     std::vector<int> r = { };
-    //     for (int n: r)
-    //         std::cout << n << ","<< std::endl;
 
-    // Determine global indizes for each component k = 1,2,3.. in order to subtract correct (component of) integral Mean
-    // (global) Indices that correspond to component k = 1,2,3
+    // Determine 
     for(const auto& element : elements(basis_.gridView()))
     {
       localView.bind(element);
-      const auto& localFiniteElement = localView.tree().child(k).finiteElement();        
-      const auto nSf = localFiniteElement.localBasis().size();                           
+      const auto& localFiniteElement = localView.tree().child(k).finiteElement();
+      const auto nSf = localFiniteElement.localBasis().size();
 
       for(size_t j=0; j<nSf; j++)
       {
@@ -671,7 +711,7 @@ public:
         r.push_back(localView.index(Localidx));                   // global indices
       }
     }
-    // Delete duplicate elements
+    // Delete duplicate elements.
     // first remove consecutive (adjacent) duplicates
     auto last = std::unique(r.begin(), r.end());
     r.erase(last, r.end());
@@ -683,9 +723,13 @@ public:
   }
 
 
+  /** 
+      @brief Method that computes the integral mean of a discrete function in the function space determined by the 
+      coefficient vector of the basis representation.
+   */
   auto integralMean(VectorCT& coeffVector)
   {
-    auto GVFunction = Dune::Functions::makeDiscreteGlobalBasisFunction<Dune::FieldVector<double,dim>>(basis_,coeffVector);
+    auto GVFunction = Dune::Functions::makeDiscreteGlobalBasisFunction<Dune::FieldVector<double,dim> >(basis_,coeffVector);
     auto localfun = localFunction(GVFunction);
 
     auto localView = basis_.localView();
@@ -699,8 +743,8 @@ public:
       localView.bind(element);
       localfun.bind(element);
       const auto& localFiniteElement = localView.tree().child(0).finiteElement();
-      
-  //     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 = Dune::QuadratureRules<double, dim>::rule(element.type(), orderQR);
 
@@ -709,7 +753,7 @@ public:
         const auto& quadPos = quadPoint.position();
         const double integrationElement = element.geometry().integrationElement(quadPos);
         area += quadPoint.weight() * integrationElement;
-        
+
         r += localfun(quadPos) * quadPoint.weight() * integrationElement;
       }
     }
@@ -717,6 +761,9 @@ public:
   }
 
 
+  /** 
+      @brief Compute and substract the integral mean to a given basis coefficient vector.
+   */
   auto subtractIntegralMean(VectorCT& coeffVector)
   {
     // Subtract correct integral mean from each associated component function
@@ -734,400 +781,385 @@ public:
 
 
   /**
-   * @brief Solve corrector problem for different right-hand sides.
-   *        Choose between solvers: 
-   *        1 : CG-Solver
-   *        2 : GMRES
-   *        3 : QR (default)
-   *        4 : UMFPACK
-   * 
-   * @return auto 
+   * @brief Solve the corrector problem for different right-hand sides.
+   *        Choose between solvers:
+   *        1 : CHOLMOD (default)
+   *        2 : UMFPACK
+   *        3 : GMRES
+   *        4 : CG
+   *        5 : QR
+   *
+   * @return auto
    */
   auto solve()
   {
-      
-      bool set_oneBasisFunction_Zero = parameterSet_.get<bool>("set_oneBasisFunction_Zero", false);
-      bool substract_integralMean = false;
-      if(parameterSet_.get<bool>("set_IntegralZero", false))
-      {
-          set_oneBasisFunction_Zero = true;
-          substract_integralMean = true;
-      }
-      // set one basis-function to zero
-      if(set_oneBasisFunction_Zero)
-          setOneBaseFunctionToZero();
-
-      //TEST: Compute Condition Number  (Can be very expensive !) 
-      const bool verbose = true;
-      const unsigned int arppp_a_verbosity_level = 2;
-      const unsigned int pia_verbosity_level = 1;
-      if(parameterSet_.get<bool>("print_conditionNumber", false))
-      {
-        MatrixInfo<MatrixCT> matrixInfo(stiffnessMatrix_,verbose,arppp_a_verbosity_level,pia_verbosity_level);
-        std::cout << "Get condition number of Stiffness_CE: " << matrixInfo.getCond2(true) << std::endl;
-      }
+    bool set_oneBasisFunction_Zero = parameterSet_.get<bool>("set_oneBasisFunction_Zero", false);
+    bool substract_integralMean = false;
+    if(parameterSet_.get<bool>("set_IntegralZero", false))
+    {
+      set_oneBasisFunction_Zero = true;
+      substract_integralMean = true;
+    }
+    // set one basis-function to zero
+    if(set_oneBasisFunction_Zero)
+      setOneBaseFunctionToZero();
+
+    // Option: compute  the condition number  (This can be very expensive and serves mainly for debugging purposes.)
+    const bool verbose = true;
+    const unsigned int arppp_a_verbosity_level = 2;
+    const unsigned int pia_verbosity_level = 1;
+    if(parameterSet_.get<bool>("print_conditionNumber", false))
+    {
+      MatrixInfo<MatrixCT> matrixInfo(stiffnessMatrix_,verbose,arppp_a_verbosity_level,pia_verbosity_level);
+      std::cout << "Get condition number of Stiffness_CE: " << matrixInfo.getCond2(true) << std::endl;
+    }
+
+    unsigned int Solvertype = parameterSet_.get<unsigned int>("Solvertype", 1);
+    unsigned int Solver_verbosity = parameterSet_.get<unsigned int>("Solver_verbosity", 2);
+
+    x_1_.resize(load_alpha1_.size());
+    x_2_.resize(load_alpha2_.size());
+    x_3_.resize(load_alpha3_.size());
 
-      unsigned int Solvertype = parameterSet_.get<unsigned int>("Solvertype", 4);
-      unsigned int Solver_verbosity = parameterSet_.get<unsigned int>("Solver_verbosity", 2);
+    // printmatrix(std::cout, stiffnessMatrix_, "StiffnessMatrix", "--");
 
+    if (parameterSet_.get<bool>("printMicroOutput", false))
+      std::cout << "start corrector solver..." << std::endl;
+    Dune::Timer SolverTimer;
+    ////////////////////////////////////////////////////////////////////////////////////
+    if (Solvertype==1)  // CHOLMOD - SOLVER
+    {
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << "------------ CHOLMOD - Solver ------------" << std::endl;
+      // log_ << "solveLinearSystems: We use CHOLMOD solver.\n";
+
+      if(basis_.dimension() > 1e6)
+        std::cout << "WARNING: Using a direct solver with " << basis_.dimension() << " degrees of freedom may be not feasible or slow." << std::endl;
+
+      Dune::Solvers::CholmodSolver<MatrixCT,VectorCT> solver;
+
+      // Since we have the same stiffness-matrix for three different right-hand sides, 
+      // we first use the factorization of CHOLMOD once and use it to repeatedly solve for multiple right-hand sides.
+      // In my measurements this reduced the runtime to about ~30% compared to using 'setProblem' multiple times.
+
+      // set first solution vector
+      solver.setSolutionVector(x_1_);
+      // Factorize the matrix
+      solver.setMatrix(stiffnessMatrix_);
+      solver.factorize();
+      // set first right-hand side
+      solver.setRhs(load_alpha1_);
+      // solve for first vector
+      solver.solve();
+
+      // set second solution vector
+      solver.setSolutionVector(x_2_);
+      // set second right-hand side
+      solver.setRhs(load_alpha2_);
+      // solve for second vector
+      solver.solve();
+
+      // set third solution vector
+      solver.setSolutionVector(x_3_);
+      // set third right-hand side
+      solver.setRhs(load_alpha3_);
+      // solve for third vector
+      solver.solve();
+      // log_ << "Solver-type used: " <<" CHOLMOD-Solver" << std::endl;
+    }
+    ////////////////////////////////////////////////////////////////////////////////////
+    else if (Solvertype==2)  // UMFPACK - SOLVER
+    {
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << "------------ UMFPACK - Solver ------------" << std::endl;
+      // log_ << "solveLinearSystems: We use UMFPACK solver.\n";
+
+      if(basis_.dimension() > 1e5)
+        std::cout << "WARNING: Using a direct solver with " << basis_.dimension() << " degrees of freedom may be not feasible or slow." << std::endl;
+
+      Dune::Solvers::UMFPackSolver<MatrixCT,VectorCT> solver;
+      solver.setProblem(stiffnessMatrix_,x_1_,load_alpha1_);
+      //         solver.preprocess();
+      solver.solve();
+      solver.setProblem(stiffnessMatrix_,x_2_,load_alpha2_);
+      //         solver.preprocess();
+      solver.solve();
+      solver.setProblem(stiffnessMatrix_,x_3_,load_alpha3_);
+      //         solver.preprocess();
+      solver.solve();
+      // log_ << "Solver-type used: " <<" UMFPACK-Solver" << std::endl;
+    }
+    ////////////////////////////////////////////////////////////////////////////////////
+    else if (Solvertype==3)    // GMRES - SOLVER
+    {
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << "------------ GMRES - Solver ------------" << std::endl;
 
-      // --- set initial values for solver
+      // --- set initial values for solver (only for the iterativer solvers)
       x_1_ = load_alpha1_;
       x_2_ = load_alpha2_;
       x_3_ = load_alpha3_;
 
-      if (parameterSet_.get<bool>("printMicroOutput ", false))
-        std::cout << "start corrector solver..." << std::endl;
-      Dune::Timer SolverTimer;
-      if (Solvertype==1)  // CG - SOLVER
-      {
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-            std::cout << "------------ CG - Solver ------------" << std::endl;
-          Dune::MatrixAdapter<MatrixCT, VectorCT, VectorCT> op(stiffnessMatrix_);
-
-          // Sequential incomplete LU decomposition as the preconditioner
-          Dune::SeqILU<MatrixCT, VectorCT, VectorCT> ilu0(stiffnessMatrix_,1.0);
-          int iter = parameterSet_.get<double>("iterations_CG", 999);
-          // Preconditioned conjugate-gradient solver
-          Dune::CGSolver<VectorCT> solver(op,
-                                  ilu0, //NULL,
-                                  1e-8, // desired residual reduction factorlack
-                                  iter,   // maximum number of iterations
-                                  Solver_verbosity,
-                                  true    // Try to estimate condition_number
-                                  );   // verbosity of the solver
-          Dune::InverseOperatorResult statistics;
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-             std::cout << "solve linear system for x_1.\n";
-          solver.apply(x_1_, load_alpha1_, statistics);
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-             std::cout << "solve linear system for x_2.\n";
-          solver.apply(x_2_, load_alpha2_, statistics);
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-             std::cout << "solve linear system for x_3.\n";
-          solver.apply(x_3_, load_alpha3_, statistics);
-          // log_ << "Solver-type used: " <<" CG-Solver" << std::endl;
-
-
-          if(parameterSet_.get<bool>("printMicroOutput ", false) && Solver_verbosity > 0)
-          {
-            std::cout << "statistics.converged " << statistics.converged << std::endl;
-            std::cout << "statistics.condition_estimate: " << statistics.condition_estimate << std::endl;
-            std::cout << "statistics.iterations: " << statistics.iterations << std::endl;
-          }
-      }
-      ////////////////////////////////////////////////////////////////////////////////////
-      else if (Solvertype==2)  // GMRES - SOLVER
+      // Turn the matrix into a linear operator
+      Dune::MatrixAdapter<MatrixCT,VectorCT,VectorCT> stiffnessOperator(stiffnessMatrix_);
+
+      // Fancy (but only) way to not have a preconditioner at all
+      Dune::Richardson<VectorCT,VectorCT> preconditioner(1.0);
+
+      // Construct the iterative solver
+      Dune::RestartedGMResSolver<VectorCT> solver(
+        stiffnessOperator,       // Operator to invert
+        preconditioner,          // Preconditioner
+        1e-10,                   // Desired residual reduction factor
+        500,                     // Number of iterations between restarts,
+                                 // here: no restarting
+        500,                     // Maximum number of iterations
+        Solver_verbosity);                      // Verbosity of the solver
+
+      // Object storing some statistics about the solving process
+      Dune::InverseOperatorResult statistics;
+
+      // solve for different Correctors (alpha = 1,2,3)
+      solver.apply(x_1_, load_alpha1_, statistics);         //load_alpha1 now contains the corresponding residual!!
+      solver.apply(x_2_, load_alpha2_, statistics);
+      solver.apply(x_3_, load_alpha3_, statistics);
+      // log_ << "Solver-type used: " <<" GMRES-Solver" << std::endl;
+      if(parameterSet_.get<bool>("printMicroOutput", false) &&  Solver_verbosity > 0)
       {
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-             std::cout << "------------ GMRES - Solver ------------" << std::endl;
-          // Turn the matrix into a linear operator
-          Dune::MatrixAdapter<MatrixCT,VectorCT,VectorCT> stiffnessOperator(stiffnessMatrix_);
-
-          // Fancy (but only) way to not have a preconditioner at all
-          Dune::Richardson<VectorCT,VectorCT> preconditioner(1.0);
-
-          // Construct the iterative solver
-          Dune::RestartedGMResSolver<VectorCT> solver(
-              stiffnessOperator, // Operator to invert
-              preconditioner,    // Preconditioner
-              1e-10,             // Desired residual reduction factor
-              500,               // Number of iterations between restarts,
-                              // here: no restarting
-              500,               // Maximum number of iterations
-              Solver_verbosity);                // Verbosity of the solver
-
-          // Object storing some statistics about the solving process
-          Dune::InverseOperatorResult statistics;
-
-          // solve for different Correctors (alpha = 1,2,3)
-          solver.apply(x_1_, load_alpha1_, statistics);     //load_alpha1 now contains the corresponding residual!!
-          solver.apply(x_2_, load_alpha2_, statistics);
-          solver.apply(x_3_, load_alpha3_, statistics);
-          // log_ << "Solver-type used: " <<" GMRES-Solver" << std::endl;
-          if(parameterSet_.get<bool>("printMicroOutput ", false) &&  Solver_verbosity > 0)
-          {
-            std::cout << "statistics.converged " << statistics.converged << std::endl;
-            std::cout << "statistics.condition_estimate: " << statistics.condition_estimate << std::endl;
-            std::cout << "statistics.iterations: " << statistics.iterations << std::endl;
-          }
+        std::cout << "statistics.converged " << statistics.converged << std::endl;
+        std::cout << "statistics.condition_estimate: " << statistics.condition_estimate << std::endl;
+        std::cout << "statistics.iterations: " << statistics.iterations << std::endl;
       }
-      ////////////////////////////////////////////////////////////////////////////////////
-      else if ( Solvertype==3)// QR - SOLVER
-      {
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-             std::cout << "------------ QR - Solver ------------" << std::endl;
-          // log_ << "solveLinearSystems: We use QR solver.\n";
-          //TODO install suitesparse
-          Dune::SPQR<MatrixCT> sPQR(stiffnessMatrix_);
-          // sPQR.setVerbosity(1);
-          sPQR.setVerbosity(Solver_verbosity);
-          Dune::InverseOperatorResult statisticsQR;
-
-          if(basis_.dimension() > 1e5)
-            std::cout << "WARNING: Using a direct solver with " << basis_.dimension() << " degrees of freedom may be not feasible or slow." << std::endl;
-
-          sPQR.apply(x_1_, load_alpha1_, statisticsQR);
-          // std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-          // std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-          // std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-          sPQR.apply(x_2_, load_alpha2_, statisticsQR);
-          // std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-          // std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-          // std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-          sPQR.apply(x_3_, load_alpha3_, statisticsQR);
-          // std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-          // std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-          // std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-          // log_ << "Solver-type used: " <<" QR-Solver" << std::endl;
-          if(parameterSet_.get<bool>("printMicroOutput ", false) &&  Solver_verbosity > 0)
-          {
-            std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-            std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-            std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-          }
+    }
+    ////////////////////////////////////////////////////////////////////////////////////
+    else if (Solvertype==4)    // CG - SOLVER
+    {
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << "------------ CG - Solver ------------" << std::endl;
 
-      }
-      ////////////////////////////////////////////////////////////////////////////////////
-      else if (Solvertype==4)// UMFPACK - SOLVER
-      {
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-              std::cout << "------------ UMFPACK - Solver ------------" << std::endl;
-          // log_ << "solveLinearSystems: We use UMFPACK solver.\n";
-
-
-          // #if HAVE_UMFPACK
-          //     std::cout << "HAVE_UMFPACK TRUE" << std::endl;
-          // #else
-          //     std::cout << "HAVE_UMFPACK FALSE" << std::endl;
-          // #endif
-
-          // #if HAVE_SUITESPARSE_UMFPACK 
-          //     std::cout << "HAVE_SUITESPARSE_UMFPACK  TRUE" << std::endl;
-          // #else
-          //     std::cout << "HAVE_SUITESPARSE_UMFPACK FALSE" << std::endl;
-          // #endif
-
-          
-
-          if(basis_.dimension() > 1e5)
-            std::cout << "WARNING: Using a direct solver with " << basis_.dimension() << " degrees of freedom may be not feasible or slow." << std::endl;
-          
-          Dune::Solvers::UMFPackSolver<MatrixCT,VectorCT> solver;
-          solver.setProblem(stiffnessMatrix_,x_1_,load_alpha1_);
-  //         solver.preprocess();
-          solver.solve();
-          solver.setProblem(stiffnessMatrix_,x_2_,load_alpha2_);
-  //         solver.preprocess();
-          solver.solve();
-          solver.setProblem(stiffnessMatrix_,x_3_,load_alpha3_);
-  //         solver.preprocess();
-          solver.solve();
-  //         sPQR.apply(x_1, load_alpha1, statisticsQR);
-  //         std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-  //         std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-  //         std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-  //         sPQR.apply(x_2, load_alpha2, statisticsQR);
-  //         std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-  //         std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-  //         std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-  //         sPQR.apply(x_3, load_alpha3, statisticsQR);
-  //         std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-  //         std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-  //         std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-          // log_ << "Solver-type used: " <<" UMFPACK-Solver" << std::endl;
-      }
-      ////////////////////////////////////////////////////////////////////////////////////
-      else if (Solvertype==5)// CHOLDMOD - SOLVER
-      {
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-              std::cout << "------------ CHOLMOD - Solver ------------" << std::endl;
-          // log_ << "solveLinearSystems: We use CHOLMOD solver.\n";
-
-          if(basis_.dimension() > 1e5)
-            std::cout << "WARNING: Using a direct solver with " << basis_.dimension() << " degrees of freedom may be not feasible or slow." << std::endl;
-          
-          Dune::Solvers::CholmodSolver<MatrixCT,VectorCT> solver;
-          solver.setProblem(stiffnessMatrix_,x_1_,load_alpha1_);
-  //         solver.preprocess();
-          solver.solve();
-          solver.setProblem(stiffnessMatrix_,x_2_,load_alpha2_);
-  //         solver.preprocess();
-          solver.solve();
-          solver.setProblem(stiffnessMatrix_,x_3_,load_alpha3_);
-  //         solver.preprocess();
-          solver.solve();
-  //         sPQR.apply(x_1, load_alpha1, statisticsQR);
-  //         std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-  //         std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-  //         std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-  //         sPQR.apply(x_2, load_alpha2, statisticsQR);
-  //         std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-  //         std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-  //         std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-  //         sPQR.apply(x_3, load_alpha3, statisticsQR);
-  //         std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
-  //         std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
-  //         std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
-          // log_ << "Solver-type used: " <<" CHOLMOD-Solver" << std::endl;
-      }
-      if (parameterSet_.get<bool>("printMicroOutput ", false))
-        std::cout << "Corrector computation finished. Time required:" << SolverTimer.elapsed() << std::endl;
-
-      ////////////////////////////////////////////////////////////////////////////////////
-      // Extract phi_alpha  &  M_alpha coefficients
-      ////////////////////////////////////////////////////////////////////////////////////
-      phi_1_.resize(basis_.size());
-      phi_1_ = 0;
-      phi_2_.resize(basis_.size());
-      phi_2_ = 0;
-      phi_3_.resize(basis_.size());
-      phi_3_ = 0;
-
-      for(size_t i=0; i<basis_.size(); i++)
+      // --- set initial values for solver (only for the iterativer solvers)
+      x_1_ = load_alpha1_;
+      x_2_ = load_alpha2_;
+      x_3_ = load_alpha3_;
+
+      Dune::MatrixAdapter<MatrixCT, VectorCT, VectorCT> op(stiffnessMatrix_);
+
+      // Sequential incomplete LU decomposition as the preconditioner
+      Dune::SeqILU<MatrixCT, VectorCT, VectorCT> ilu0(stiffnessMatrix_,1.0);
+      int iter = parameterSet_.get<double>("iterations_CG", 999);
+      // Preconditioned conjugate-gradient solver
+      Dune::CGSolver<VectorCT> solver(op,
+                                      ilu0, //NULL,
+                                      1e-8, // desired residual reduction factorlack
+                                      iter, // maximum number of iterations
+                                      Solver_verbosity,
+                                      true // Try to estimate condition_number
+                                      ); // verbosity of the solver
+      Dune::InverseOperatorResult statistics;
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << "solve linear system for x_1.\n";
+      solver.apply(x_1_, load_alpha1_, statistics);
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << "solve linear system for x_2.\n";
+      solver.apply(x_2_, load_alpha2_, statistics);
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << "solve linear system for x_3.\n";
+      solver.apply(x_3_, load_alpha3_, statistics);
+      // log_ << "Solver-type used: " <<" CG-Solver" << std::endl;
+
+
+      if(parameterSet_.get<bool>("printMicroOutput", false) && Solver_verbosity > 0)
       {
-          phi_1_[i] = x_1_[i];
-          phi_2_[i] = x_2_[i];
-          phi_3_[i] = x_3_[i];
+        std::cout << "statistics.converged " << statistics.converged << std::endl;
+        std::cout << "statistics.condition_estimate: " << statistics.condition_estimate << std::endl;
+        std::cout << "statistics.iterations: " << statistics.iterations << std::endl;
       }
-      for(size_t i=0; i<3; i++)
+    }
+    ////////////////////////////////////////////////////////////////////////////////////
+    else if ( Solvertype=5)  // QR - SOLVER
+    {
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << "------------ QR - Solver ------------" << std::endl;
+      // log_ << "solveLinearSystems: We use QR solver.\n";
+
+      //TODO install suitesparse
+      Dune::SPQR<MatrixCT> sPQR(stiffnessMatrix_);
+      // sPQR.setVerbosity(1);
+      sPQR.setVerbosity(Solver_verbosity);
+      Dune::InverseOperatorResult statisticsQR;
+
+      if(basis_.dimension() > 1e5)
+        std::cout << "WARNING: Using a direct solver with " << basis_.dimension() << " degrees of freedom may be not feasible or slow." << std::endl;
+
+      sPQR.apply(x_1_, load_alpha1_, statisticsQR);
+      sPQR.apply(x_2_, load_alpha2_, statisticsQR);
+      sPQR.apply(x_3_, load_alpha3_, statisticsQR);
+      // log_ << "Solver-type used: " <<" QR-Solver" << std::endl;
+      if(parameterSet_.get<bool>("printMicroOutput ", false) &&  Solver_verbosity > 0)
       {
-          m_1_[i] = x_1_[phiOffset_+i];
-          m_2_[i] = x_2_[phiOffset_+i];
-          m_3_[i] = x_3_[phiOffset_+i];
+        std::cout << "statistics.converged " << statisticsQR.converged << std::endl;
+        std::cout << "statistics.condition_estimate: " << statisticsQR.condition_estimate << std::endl;
+        std::cout << "statistics.iterations: " << statisticsQR.iterations << std::endl;
       }
-      // assemble M_alpha's (actually iota(M_alpha) )
+    }
+    ////////////////////////////////////////////////////////////////////////////////////
+    if (parameterSet_.get<bool>("printMicroOutput", false))
+      std::cout << "Corrector computation finished. Time required:" << SolverTimer.elapsed() << std::endl;
+
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Extract phi_alpha  &  M_alpha coefficients
+    ////////////////////////////////////////////////////////////////////////////////////
+    phi_1_.resize(basis_.size());
+    phi_1_ = 0;
+    phi_2_.resize(basis_.size());
+    phi_2_ = 0;
+    phi_3_.resize(basis_.size());
+    phi_3_ = 0;
+
+    for(size_t i=0; i<basis_.size(); i++)
+    {
+      phi_1_[i] = x_1_[i];
+      phi_2_[i] = x_2_[i];
+      phi_3_[i] = x_3_[i];
+    }
+    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) )
 
-      for (auto& matrix : mContainer)
-        matrix = 0;
+    for (auto& matrix : mContainer)
+      matrix = 0;
 
-      for(size_t i=0; i<3; i++)
-      {
-          mContainer[0] += m_1_[i]*voigtToMatrix(matrixBasis_[i]);
-          mContainer[1] += m_2_[i]*voigtToMatrix(matrixBasis_[i]);
-          mContainer[2] += m_3_[i]*voigtToMatrix(matrixBasis_[i]);
-      }
+    for(size_t i=0; i<3; i++)
+    {
+      mContainer[0] += m_1_[i]*voigtToMatrix(matrixBasis_[i]);
+      mContainer[1] += m_2_[i]*voigtToMatrix(matrixBasis_[i]);
+      mContainer[2] += m_3_[i]*voigtToMatrix(matrixBasis_[i]);
+    }
 
-      if(parameterSet_.get<bool>("print_corrector_matrices", false))
-      {
-          std::cout << "--- plot corrector-Matrices M_alpha --- " << std::endl;
-          printmatrix(std::cout, mContainer[0], "Corrector-Matrix M_1", "--");
-          printmatrix(std::cout, mContainer[1], "Corrector-Matrix M_2", "--");
-          printmatrix(std::cout, mContainer[2], "Corrector-Matrix M_3", "--");
-      }
+    if(parameterSet_.get<bool>("print_corrector_matrices", false))
+    {
+      std::cout << "--- plot corrector-Matrices M_alpha --- " << std::endl;
+      printmatrix(std::cout, mContainer[0], "Corrector-Matrix M_1", "--");
+      printmatrix(std::cout, mContainer[1], "Corrector-Matrix M_2", "--");
+      printmatrix(std::cout, mContainer[2], "Corrector-Matrix M_3", "--");
+    }
 
-      if(parameterSet_.get<bool>("writeCorrectorsVTK", false))
-        this->writeCorrectorsVTK(parameterSet_.get<int>("gridLevel", 0));
+    if(parameterSet_.get<bool>("writeCorrectorsVTK", false))
+      this->writeCorrectorsVTK(parameterSet_.get<int>("gridLevel", 0));
 
-      // log_ << "---------- OUTPUT ----------" << std::endl;
-      // log_ << " --------------------" << std::endl;
-      // log_ << "Corrector-Matrix M_1: \n" << mContainer[0] << std::endl;
-      // log_ << " --------------------" << std::endl;
-      // log_ << "Corrector-Matrix M_2: \n" << mContainer[1] << std::endl;
-      // log_ << " --------------------" << std::endl;
-      // log_ << "Corrector-Matrix M_3: \n" << mContainer[2] << std::endl;
-      // log_ << " --------------------" << std::endl;
+    // log_ << "---------- OUTPUT ----------" << std::endl;
+    // log_ << " --------------------" << std::endl;
+    // log_ << "Corrector-Matrix M_1: \n" << mContainer[0] << std::endl;
+    // log_ << " --------------------" << std::endl;
+    // log_ << "Corrector-Matrix M_2: \n" << mContainer[1] << std::endl;
+    // log_ << " --------------------" << std::endl;
+    // log_ << "Corrector-Matrix M_3: \n" << mContainer[2] << std::endl;
+    // log_ << " --------------------" << std::endl;
 
 
-      if(parameterSet_.get<bool>("write_IntegralMean", false))
+    if(parameterSet_.get<bool>("write_IntegralMean", false))
+    {
+      std::cout << "check integralMean phi_1: " << std::endl;
+      auto A = integralMean(phi_1_);
+      for(size_t i=0; i<3; i++)
       {
-          std::cout << "check integralMean phi_1: " << std::endl;
-          auto A = integralMean(phi_1_);
-          for(size_t i=0; i<3; i++)
-          {
-              std::cout << "Integral-Mean phi_1 : " << A[i] << std::endl;
-          }
+        std::cout << "Integral-Mean phi_1 : " << A[i] << std::endl;
       }
-      if(substract_integralMean)
+    }
+    if(substract_integralMean)
+    {
+      Dune::Timer integralMeanTimer;
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << " --- subtracting integralMean --- " << std::endl;
+      subtractIntegralMean(phi_1_);
+      subtractIntegralMean(phi_2_);
+      subtractIntegralMean(phi_3_);
+      subtractIntegralMean(x_1_);
+      subtractIntegralMean(x_2_);
+      subtractIntegralMean(x_3_);
+      if (parameterSet_.get<bool>("printMicroOutput", false))
+        std::cout << "substract integral mean took " << integralMeanTimer.elapsed() << " seconds " << std::endl;
+      //////////////////////////////////////////
+      // Check Integral-mean again:
+      //////////////////////////////////////////
+      if(parameterSet_.get<bool>("write_IntegralMean", false))
       {
-          Dune::Timer integralMeanTimer;
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-              std::cout << " --- subtracting integralMean --- " << std::endl;
-          subtractIntegralMean(phi_1_);
-          subtractIntegralMean(phi_2_);
-          subtractIntegralMean(phi_3_);
-          subtractIntegralMean(x_1_);
-          subtractIntegralMean(x_2_);
-          subtractIntegralMean(x_3_);
-          if (parameterSet_.get<bool>("printMicroOutput ", false))
-              std::cout << "substract integral mean took " << integralMeanTimer.elapsed() << " seconds " << std::endl;
-          //////////////////////////////////////////
-          // Check Integral-mean again:
-          //////////////////////////////////////////
-          if(parameterSet_.get<bool>("write_IntegralMean", false))
-          {
-              auto A = integralMean(phi_1_);
-              for(size_t i=0; i<3; i++)
-              {
-              std::cout << "Integral-Mean phi_1 (Check again)  : " << A[i] << std::endl;
-              }
-          }
+        auto A = integralMean(phi_1_);
+        for(size_t i=0; i<3; i++)
+        {
+          std::cout << "Integral-Mean phi_1 (Check again)  : " << A[i] << std::endl;
+        }
       }
-      /////////////////////////////////////////////////////////
-      // Write Solution (Corrector Coefficients) in Logs
-      /////////////////////////////////////////////////////////
-      // if(parameterSet_.get<bool>("write_corrector_phi1", false))
-      // {
-      //     log_ << "\nSolution of Corrector problems:\n";
-      //     log_ << "\n Corrector_phi1:\n";
-      //     log_ << x_1_ << std::endl;
-      // }
-      // if(parameterSet_.get<bool>("write_corrector_phi2", false))
-      // {
-      //     log_ << "-----------------------------------------------------";
-      //     log_ << "\n Corrector_phi2:\n";
-      //     log_ << x_2_ << std::endl;
-      // }
-      // if(parameterSet_.get<bool>("write_corrector_phi3", false))
-      // {
-      //     log_ << "-----------------------------------------------------";
-      //     log_ << "\n Corrector_phi3:\n";
-      //     log_ << x_3_ << std::endl;
-      // }
+    }
+    /////////////////////////////////////////////////////////
+    // Write Solution (Corrector Coefficients) in Logs
+    /////////////////////////////////////////////////////////
+    // if(parameterSet_.get<bool>("write_corrector_phi1", false))
+    // {
+    //     log_ << "\nSolution of Corrector problems:\n";
+    //     log_ << "\n Corrector_phi1:\n";
+    //     log_ << x_1_ << std::endl;
+    // }
+    // if(parameterSet_.get<bool>("write_corrector_phi2", false))
+    // {
+    //     log_ << "-----------------------------------------------------";
+    //     log_ << "\n Corrector_phi2:\n";
+    //     log_ << x_2_ << std::endl;
+    // }
+    // if(parameterSet_.get<bool>("write_corrector_phi3", false))
+    // {
+    //     log_ << "-----------------------------------------------------";
+    //     log_ << "\n Corrector_phi3:\n";
+    //     log_ << x_3_ << std::endl;
+    // }
 
   }
 
 
   /**
    * @brief Write correctors as grid functions to VTK.
-   * 
+   *
    * @param level  GridLevel
    */
   void writeCorrectorsVTK(const int level)
   {
-      std::string baseName = parameterSet_.get("baseName", "CellProblem-result");
-      std::string vtkOutputName = parameterSet_.get("resultPath", "../../outputs") + "/" + baseName; 
-      if (parameterSet_.get<bool>("printMicroOutput ", false))
-        std::cout << "Write Correctors to VTK with Filename:" << vtkOutputName << std::endl;
-      
-
-      int subsamplingRefinement = parameterSet_.get<int>("subsamplingRefinement", 2);
-      Dune::SubsamplingVTKWriter<typename Basis::GridView> vtkWriter(basis_.gridView(), Dune::refinementLevels(subsamplingRefinement));
-      // Dune::VTKWriter<typename Basis::GridView> vtkWriter(basis_.gridView());
-
-      vtkWriter.addVertexData(
-          Dune::Functions::makeDiscreteGlobalBasisFunction<VectorRT>(basis_, phi_1_),
-          Dune::VTK::FieldInfo("Corrector phi_1 level"+ std::to_string(level) , Dune::VTK::FieldInfo::Type::vector, dim));
-      vtkWriter.addVertexData(
-          Dune::Functions::makeDiscreteGlobalBasisFunction<VectorRT>(basis_, phi_2_),
-          Dune::VTK::FieldInfo("Corrector phi_2 level"+ std::to_string(level) , Dune::VTK::FieldInfo::Type::vector, dim));
-      vtkWriter.addVertexData(
-          Dune::Functions::makeDiscreteGlobalBasisFunction<VectorRT>(basis_, phi_3_),
-          Dune::VTK::FieldInfo("Corrector phi_3 level"+ std::to_string(level) , Dune::VTK::FieldInfo::Type::vector, dim));
-      vtkWriter.write(vtkOutputName + "Correctors-level"+ std::to_string(level));
-      if (parameterSet_.get<bool>("printMicroOutput ", false))
-          std::cout << "wrote Corrector-VTK data to file: " + vtkOutputName + "-level" + std::to_string(level) << std::endl;
+    std::string baseName = parameterSet_.get("baseName", "CellProblem-result");
+    std::string vtkOutputName = parameterSet_.get("resultPath", "../../outputs") + "/" + baseName;
+    if (parameterSet_.get<bool>("printMicroOutput", false))
+      std::cout << "Write Correctors to VTK with Filename:" << vtkOutputName << std::endl;
+
+
+    int subsamplingRefinement = parameterSet_.get<int>("subsamplingRefinement", 2);
+    Dune::SubsamplingVTKWriter<typename Basis::GridView> vtkWriter(basis_.gridView(), Dune::refinementLevels(subsamplingRefinement));
+    // Dune::VTKWriter<typename Basis::GridView> vtkWriter(basis_.gridView());
+
+    vtkWriter.addVertexData(
+      Dune::Functions::makeDiscreteGlobalBasisFunction<VectorRT>(basis_, phi_1_),
+      Dune::VTK::FieldInfo("Corrector phi_1 level"+ std::to_string(level) , Dune::VTK::FieldInfo::Type::vector, dim));
+    vtkWriter.addVertexData(
+      Dune::Functions::makeDiscreteGlobalBasisFunction<VectorRT>(basis_, phi_2_),
+      Dune::VTK::FieldInfo("Corrector phi_2 level"+ std::to_string(level) , Dune::VTK::FieldInfo::Type::vector, dim));
+    vtkWriter.addVertexData(
+      Dune::Functions::makeDiscreteGlobalBasisFunction<VectorRT>(basis_, phi_3_),
+      Dune::VTK::FieldInfo("Corrector phi_3 level"+ std::to_string(level) , Dune::VTK::FieldInfo::Type::vector, dim));
+    vtkWriter.write(vtkOutputName + "Correctors-level"+ std::to_string(level));
+    if (parameterSet_.get<bool>("printMicroOutput ", false))
+      std::cout << "wrote Corrector-VTK data to file: " + vtkOutputName + "-level" + std::to_string(level) << std::endl;
   }
 
   // -----------------------------------------------------------------
   // --- Compute norms of the corrector functions:
   void computeNorms()
   {
-      computeL2Norm();
-      computeL2SymGrad();
-      std::cout<< "Frobenius-Norm of M1_: " << mContainer[0].frobenius_norm() << std::endl;
-      std::cout<< "Frobenius-Norm of M2_: " << mContainer[1].frobenius_norm() << std::endl;
-      std::cout<< "Frobenius-Norm of M3_: " << mContainer[2].frobenius_norm() << std::endl;
+    computeL2Norm();
+    computeL2SymGrad();
+    std::cout<< "Frobenius-Norm of M1_: " << mContainer[0].frobenius_norm() << std::endl;
+    std::cout<< "Frobenius-Norm of M2_: " << mContainer[1].frobenius_norm() << std::endl;
+    std::cout<< "Frobenius-Norm of M3_: " << mContainer[2].frobenius_norm() << std::endl;
   }
 
   void computeL2Norm()
@@ -1195,23 +1227,23 @@ public:
       localfun_3.bind(element);
       auto geometry = element.geometry();
 
-      const auto& localFiniteElement = localView.tree().child(0).finiteElement();             
+      const auto& localFiniteElement = localView.tree().child(0).finiteElement();
 
-      int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1 );  
+      int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1 );
       const auto& quad = Dune::QuadratureRules<double,dim>::rule(element.type(), orderQR);
 
       for (const auto& quadPoint : quad)
       {
-          const auto& quadPos = quadPoint.position();
-          const auto integrationElement = geometry.integrationElement(quadPos);
+        const auto& quadPos = quadPoint.position();
+        const auto integrationElement = geometry.integrationElement(quadPos);
 
-          auto scaledSymGrad1 = sym(crossSectionDirectionScaling(1.0/(material_->gamma_), localfun_1(quadPos)));
-          auto scaledSymGrad2 = sym(crossSectionDirectionScaling(1.0/(material_->gamma_), localfun_2(quadPos)));
-          auto scaledSymGrad3 = sym(crossSectionDirectionScaling(1.0/(material_->gamma_), localfun_3(quadPos)));
+        auto scaledSymGrad1 = sym(crossSectionDirectionScaling(1.0/(material_->gamma_), localfun_1(quadPos)));
+        auto scaledSymGrad2 = sym(crossSectionDirectionScaling(1.0/(material_->gamma_), localfun_2(quadPos)));
+        auto scaledSymGrad3 = sym(crossSectionDirectionScaling(1.0/(material_->gamma_), localfun_3(quadPos)));
 
-          error_1 += scalarProduct(scaledSymGrad1,scaledSymGrad1) * quadPoint.weight() * integrationElement;
-          error_2 += scalarProduct(scaledSymGrad2,scaledSymGrad2) * quadPoint.weight() * integrationElement;
-          error_3 += scalarProduct(scaledSymGrad3,scaledSymGrad3) * quadPoint.weight() * integrationElement;
+        error_1 += scalarProduct(scaledSymGrad1,scaledSymGrad1) * quadPoint.weight() * integrationElement;
+        error_2 += scalarProduct(scaledSymGrad2,scaledSymGrad2) * quadPoint.weight() * integrationElement;
+        error_3 += scalarProduct(scaledSymGrad3,scaledSymGrad3) * quadPoint.weight() * integrationElement;
       }
     }
     std::cout << "L2-Norm(Symmetric scaled gradient of Corrector phi_1): " << sqrt(error_1) << std::endl;
@@ -1221,10 +1253,10 @@ public:
   }
 
   /**
-   * @brief Test: Check orthogonality relation (75) in 
+   * @brief Test: Check orthogonality relation (75) in
    *        [Böhnlein,Neukamm,Padilla-Garza,Sander - A homogenized bending theory for prestrained plates].
-   * 
-   * @return auto 
+   *
+   * @return auto
    */
   auto check_Orthogonality()
   {
@@ -1242,20 +1274,20 @@ public:
     const std::array<decltype(localfun_1)*,3> phiDerContainer = {&localfun_1 , &localfun_2 , &localfun_3 };
 
     auto localIndicatorFunction = material_->getLocalIndicatorFunction();
-    
+
     for(int a=0; a<3; a++)
-    for(int b=0; b<3; b++)
-    {
-      double energy = 0.0;
+      for(int b=0; b<3; b++)
+      {
+        double energy = 0.0;
 
-      auto DerPhi1 = *phiDerContainer[a];
-      auto DerPhi2 = *phiDerContainer[b];
-      
-      auto matrixFieldGGVF  = Dune::Functions::makeGridViewFunction(x3MatrixBasisContainer_[a], basis_.gridView());
-      auto matrixFieldG = localFunction(matrixFieldGGVF);
+        auto DerPhi1 = *phiDerContainer[a];
+        auto DerPhi2 = *phiDerContainer[b];
 
-      for (const auto& e : elements(basis_.gridView()))
-      {
+        auto matrixFieldGGVF  = Dune::Functions::makeGridViewFunction(x3MatrixBasisContainer_[a], basis_.gridView());
+        auto matrixFieldG = localFunction(matrixFieldGGVF);
+
+        for (const auto& e : elements(basis_.gridView()))
+        {
           localView.bind(e);
           matrixFieldG.bind(e);
           DerPhi1.bind(e);
@@ -1271,33 +1303,33 @@ public:
 
           const auto& quad = Dune::QuadratureRules<double, dim>::rule(e.type(), orderQR);
 
-          for (const auto& quadPoint : quad) 
+          for (const auto& quadPoint : quad)
           {
-          const auto& quadPos = quadPoint.position();
-          const double integrationElement = geometry.integrationElement(quadPos);
-          
-          auto Chi = sym(crossSectionDirectionScaling(1.0/(material_->gamma_), DerPhi2(quadPos))) + mContainer[b];
+            const auto& quadPos = quadPoint.position();
+            const double integrationElement = geometry.integrationElement(quadPos);
+
+            auto Chi = sym(crossSectionDirectionScaling(1.0/(material_->gamma_), DerPhi2(quadPos))) + mContainer[b];
 
-          const auto strain1 = symVoigt(crossSectionDirectionScaling(1.0/(material_->gamma_), DerPhi1(quadPos)));
-          
-          auto G = matrixFieldG(quadPos);
+            const auto strain1 = symVoigt(crossSectionDirectionScaling(1.0/(material_->gamma_), DerPhi1(quadPos)));
 
-          auto tmp = matrixToVoigt(G + mContainer[a]) + strain1;
+            auto G = matrixFieldG(quadPos);
 
-          double energyDensity= voigtScalarProduct(material_->applyElasticityTensor(tmp,localIndicatorFunction(quadPos)),symVoigt(Chi));
+            auto tmp = matrixToVoigt(G + mContainer[a]) + strain1;
 
-          elementEnergy += energyDensity * quadPoint.weight() * integrationElement;    
+            double energyDensity= voigtScalarProduct(material_->applyElasticityTensor(tmp,localIndicatorFunction(quadPos)),symVoigt(Chi));
+
+            elementEnergy += energyDensity * quadPoint.weight() * integrationElement;
 
           }
           energy += elementEnergy;
-      }
-      if(parameterSet_.get<bool>("print_debug", false))
-        std::cout << "check_Orthogonality:" << "("<< a <<"," << b << "): " << energy << std::endl;
+        }
+        if(parameterSet_.get<bool>("print_debug", false))
+          std::cout << "check_Orthogonality:" << "("<< a <<"," << b << "): " << energy << std::endl;
 
-      if(energy > 1e-1)
-        std::cout << "WARNING: check_Orthogonality failed! apparently  orthogonality (75) not satisfied on discrete level" << std::endl;
+        if(energy > 1e-1)
+          std::cout << "WARNING: check_Orthogonality failed! apparently  orthogonality (75) not satisfied on discrete level" << std::endl;
 
-    }
+      }
     std::cout << "Time required for orthogonality check: " << orthogonalityTimer.elapsed() << std::endl;
     return 0;
   }
@@ -1310,35 +1342,42 @@ public:
 
     auto localView = basis_.localView();
 
+    bool symmetryFlag = false;
+
     for (const auto& element : elements(basis_.gridView()))
     {
       localView.bind(element);
       const auto localPhiOffset = localView.size();
 
       for(size_t i=0; i<localPhiOffset; i++)
-      for(size_t j=0; j<localPhiOffset; j++ )
-      {
+        for(size_t j=0; j<localPhiOffset; j++ )
+        {
           auto row = localView.index(i);
           auto col = localView.index(j);
           if(abs( stiffnessMatrix_[row][col] - stiffnessMatrix_[col][row]) > 1e-12 )
-              std::cout << "STIFFNESS MATRIX NOT SYMMETRIC!!!" << std::endl;
-      }
+            symmetryFlag = true;
+            // std::cout << "STIFFNESS MATRIX NOT SYMMETRIC!!!" << std::endl;
+        }
       for(size_t i=0; i<localPhiOffset; i++)
-      for(size_t m=0; m<3; m++)
-      {
+        for(size_t m=0; m<3; m++)
+        {
           auto row = localView.index(i);
           if(abs( stiffnessMatrix_[row][phiOffset_+m] - stiffnessMatrix_[phiOffset_+m][row]) > 1e-12 )
-              std::cout << "STIFFNESS MATRIX NOT SYMMETRIC!!!" << std::endl;
+            symmetryFlag = true;
+            // std::cout << "STIFFNESS MATRIX NOT SYMMETRIC!!!" << std::endl;
 
-      }
+        }
       for(size_t m=0; m<3; m++ )
-      for(size_t n=0; n<3; n++ )
-      {
+        for(size_t n=0; n<3; n++ )
+        {
           if(abs(stiffnessMatrix_[phiOffset_+m][phiOffset_+n] - stiffnessMatrix_[phiOffset_+n][phiOffset_+m]) > 1e-12 )
-              std::cout << "STIFFNESS MATRIX NOT SYMMETRIC!!!" << std::endl;
-      }
+          symmetryFlag = true;
+            // std::cout << "STIFFNESS MATRIX NOT SYMMETRIC!!!" << std::endl;
+        }
     }
-    std::cout << "--- Symmetry test passed ---" << std::endl;
+
+    if(symmetryFlag)
+      std::cout << "STIFFNESS MATRIX NOT SYMMETRIC!!!" << std::endl;
   }
 
 
diff --git a/dune/microstructure/EffectiveQuantitiesComputer.hh b/dune/microstructure/EffectiveQuantitiesComputer.hh
index d6476cceaa5b81290346addaa53e14b0f89f8d02..99b60e2e76c4e707f8c996663b9ed36c2742b910 100644
--- a/dune/microstructure/EffectiveQuantitiesComputer.hh
+++ b/dune/microstructure/EffectiveQuantitiesComputer.hh
@@ -2,7 +2,7 @@
 #define DUNE_MICROSTRUCTURE_EFFECTIVEQUANTITIESCOMPUTER_HH
 
 #include <dune/common/parametertree.hh>
-#include <dune/istl/eigenvalue/test/matrixinfo.hh> // TEST: compute condition Number 
+#include <dune/istl/eigenvalue/test/matrixinfo.hh> // TEST: compute condition Number
 #include <dune/istl/io.hh>
 #include <dune/istl/matrix.hh>
 #include <dune/microstructure/matrix_operations.hh>
@@ -20,248 +20,248 @@ template <class Basis, class Material>
 class EffectiveQuantitiesComputer {
 
 public:
-	static const int dimworld = 3;
-	static const int dim = Basis::GridView::dimension;
-	using Domain = typename CorrectorComputer<Basis,Material>::Domain; 
-	using VectorRT = typename CorrectorComputer<Basis,Material>::VectorRT;
-	using MatrixRT = typename CorrectorComputer<Basis,Material>::MatrixRT;
-	using Func2Tensor = typename CorrectorComputer<Basis,Material>::Func2Tensor;
-	using FuncVector = typename CorrectorComputer<Basis,Material>::FuncVector;
-	using VectorCT = typename CorrectorComputer<Basis,Material>::VectorCT;
-    using Func2int = std::function< int(const Domain&) >;
-    using MatrixPhase = std::function< MatrixRT(const int&) >;
+  static const int dimworld = 3;
+  static const int dim = Basis::GridView::dimension;
+  using Domain = typename CorrectorComputer<Basis,Material>::Domain;
+  using VectorRT = typename CorrectorComputer<Basis,Material>::VectorRT;
+  using MatrixRT = typename CorrectorComputer<Basis,Material>::MatrixRT;
+  using Func2Tensor = typename CorrectorComputer<Basis,Material>::Func2Tensor;
+  using FuncVector = typename CorrectorComputer<Basis,Material>::FuncVector;
+  using VectorCT = typename CorrectorComputer<Basis,Material>::VectorCT;
+  using Func2int = std::function< int (const Domain&) >;
+  using MatrixPhase = std::function< MatrixRT(const int&) >;
 
 protected:
-	// CorrectorComputer<Basis,Material>& correctorComputer_; 
-    std::shared_ptr<CorrectorComputer<Basis,Material>> correctorComputer_; 
-    // const Material& material_;  //Get this from correctorComputer_ this is now an std::shared_ptr.
+  // CorrectorComputer<Basis,Material>& correctorComputer_;
+  std::shared_ptr<CorrectorComputer<Basis,Material> > correctorComputer_;
+  // const Material& material_;  //Get this from correctorComputer_ this is now an std::shared_ptr.
 
 public:
 
-	MatrixRT Qeff_;	    // Effective moduli COEFFICIENTS
-	VectorRT Bhat_;		
-	VectorRT Beff_;	    // Effective prestrain COEFFICIENTS
-
-
-	///////////////////////////////
-	// constructor
-	///////////////////////////////
-	// EffectiveQuantitiesComputer(CorrectorComputer<Basis,Material>& correctorComputer, 
-    //                             const Material& material)
-    //                             : correctorComputer_(correctorComputer), 
-    //                             material_(material)
-    // {} 
-	// EffectiveQuantitiesComputer(CorrectorComputer<Basis,Material>& correctorComputer)
-    //                             : correctorComputer_(correctorComputer)
-    // {} 
-	EffectiveQuantitiesComputer(std::shared_ptr<CorrectorComputer<Basis,Material>> correctorComputer)
-                                : correctorComputer_(correctorComputer)
-    {} 
+  MatrixRT Qeff_;           // Effective moduli COEFFICIENTS
+  VectorRT Bhat_;
+  VectorRT Beff_;           // Effective prestrain COEFFICIENTS
 
-    ///////////////////////////////
-    // Getter
-    ///////////////////////////////
-	// CorrectorComputer<Basis,Material> getCorrectorComputer(){return correctorComputer_;}
-    CorrectorComputer<Basis,Material> getCorrectorComputer(){return *correctorComputer_;}
 
+  ///////////////////////////////
+  // constructor
+  ///////////////////////////////
+  // EffectiveQuantitiesComputer(CorrectorComputer<Basis,Material>& correctorComputer,
+  //                             const Material& material)
+  //                             : correctorComputer_(correctorComputer),
+  //                             material_(material)
+  // {}
+  // EffectiveQuantitiesComputer(CorrectorComputer<Basis,Material>& correctorComputer)
+  //                             : correctorComputer_(correctorComputer)
+  // {}
+  EffectiveQuantitiesComputer(std::shared_ptr<CorrectorComputer<Basis,Material> > correctorComputer)
+    : correctorComputer_(correctorComputer)
+  {}
 
-	const shared_ptr<Basis> getBasis() {return *correctorComputer_.getBasis();}
+  ///////////////////////////////
+  // Getter
+  ///////////////////////////////
+  // CorrectorComputer<Basis,Material> getCorrectorComputer(){return correctorComputer_;}
+  CorrectorComputer<Basis,Material> getCorrectorComputer(){return *correctorComputer_;}
 
-    auto getQeff(){return Qeff_;}
-    auto getBeff(){return Beff_;}
 
+  const shared_ptr<Basis> getBasis() {return *correctorComputer_.getBasis();}
 
-    void updateCorrectorComputer(std::shared_ptr<CorrectorComputer<Basis,Material>> correctorComputer)
-    {
-        correctorComputer_ = correctorComputer;
-    }
+  auto getQeff(){return Qeff_;}
+  auto getBeff(){return Beff_;}
+
+
+  void updateCorrectorComputer(std::shared_ptr<CorrectorComputer<Basis,Material> > correctorComputer)
+  {
+    correctorComputer_ = correctorComputer;
+  }
 
   // -----------------------------------------------------------------
   // --- Compute Effective Quantities
-    void computeEffectiveQuantities()
-    {
-        Dune::Timer effectiveQuantitiesTimer;
-        Dune::ParameterTree parameterSet = correctorComputer_->getParameterSet();
-
-        if (parameterSet.get<bool>("printMicroOutput ", false))
-            std::cout << "starting effective quantities computation..." << std::endl;
-        
-
-        auto MContainer = correctorComputer_->getMcontainer();
-        auto MatrixBasisContainer = correctorComputer_->getMatrixBasiscontainer();
-        auto x3MatrixBasisContainer = correctorComputer_->getx3MatrixBasiscontainer();
-
-        auto gamma = correctorComputer_->getGamma();
-        auto basis = *correctorComputer_->getBasis();
-        
-
-		shared_ptr<VectorCT> phiBasis[3] = {correctorComputer_->getCorr_phi1(), 
-                                            correctorComputer_->getCorr_phi2(),
-                                            correctorComputer_->getCorr_phi3()
-										    };
-
-        auto localIndicatorFunction = (correctorComputer_->material_)->getLocalIndicatorFunction();
-        
-        Qeff_ = 0 ;
-        Bhat_ = 0;
-    
-        for(size_t a=0; a < 3; a++)
-        for(size_t b=0; b < 3; b++)
-        {
-            double energy = 0.0;
-            double prestrain = 0.0;
-            auto localView = basis.localView();
+  void computeEffectiveQuantities()
+  {
+    Dune::Timer effectiveQuantitiesTimer;
+    Dune::ParameterTree parameterSet = correctorComputer_->getParameterSet();
 
-            auto GVFunc_a = derivative(Dune::Functions::makeDiscreteGlobalBasisFunction<VectorRT>(basis,*phiBasis[a]));
-            auto localfun_a = localFunction(GVFunc_a);
+    if (parameterSet.get<bool>("printMicroOutput ", false))
+      std::cout << "starting effective quantities computation..." << std::endl;
 
-            auto matrixFieldG1GVF  = Dune::Functions::makeGridViewFunction(x3MatrixBasisContainer[a], basis.gridView());
-            auto matrixFieldG1 = localFunction(matrixFieldG1GVF);
-            auto matrixFieldG2GVF  = Dune::Functions::makeGridViewFunction(x3MatrixBasisContainer[b], basis.gridView());
-            auto matrixFieldG2 = localFunction(matrixFieldG2GVF);
 
-            for (const auto& element : elements(basis.gridView()))
-            {
-                localView.bind(element);
-                matrixFieldG1.bind(element);
-                matrixFieldG2.bind(element);
-                localfun_a.bind(element);
-
-                localIndicatorFunction.bind(element);
-
-                double elementEnergy = 0.0;
-                double elementPrestrain = 0.0;
-
-                auto geometry = element.geometry();
-                const auto& localFiniteElement = localView.tree().child(0).finiteElement();
-
-                int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
-
-                const auto& quad = Dune::QuadratureRules<double, dim>::rule(element.type(), orderQR);
-
-                for (const auto& quadPoint : quad) 
-                {
-                    const auto& quadPos = quadPoint.position();
-                    const double integrationElement = geometry.integrationElement(quadPos);
-                    
-                    auto Chi1 = sym(crossSectionDirectionScaling(1.0/gamma, localfun_a(quadPos))) + MContainer[a];
-                    
-                    auto G1 = matrixFieldG1(quadPos);
-                    auto G2 = matrixFieldG2(quadPos);
-                    
-                    auto X1 = matrixToVoigt(G1 + Chi1);
-                    
-                    double energyDensity= voigtScalarProduct((correctorComputer_->material_)->applyElasticityTensor(X1,localIndicatorFunction(quadPos)), matrixToVoigt(sym(G2)));
-
-                    elementEnergy += energyDensity * quadPoint.weight() * integrationElement;      // quad[quadPoint].weight() ???
-                    if (b==0)
-                    {
-                        auto prestrainPhaseValue = (correctorComputer_->material_)->prestrain(localIndicatorFunction(quadPos),element.geometry().global(quadPos));
-                        auto value = voigtScalarProduct((correctorComputer_->material_)->applyElasticityTensor(X1,localIndicatorFunction(quadPos)),matrixToVoigt(sym(prestrainPhaseValue)));
-
-                        elementPrestrain += value * quadPoint.weight() * integrationElement;
-                    }
-                }
-                energy += elementEnergy;
-                prestrain += elementPrestrain;
-            
-            }
-            Qeff_[a][b] = energy;    
-            if (b==0)
-                Bhat_[a] = prestrain;
-        }
-        if(parameterSet.get<bool>("print_debug", false))
-        {
-            printmatrix(std::cout, Qeff_, "Qeff_", "--");
-            printvector(std::cout, Bhat_, "Bhat_", "--");
-        }
+    auto MContainer = correctorComputer_->getMcontainer();
+    auto MatrixBasisContainer = correctorComputer_->getMatrixBasiscontainer();
+    auto x3MatrixBasisContainer = correctorComputer_->getx3MatrixBasiscontainer();
 
-        ///////////////////////////////
-        // Compute effective Prestrain B_eff (by solving linear system)
-        //////////////////////////////
-         
-        // std::cout << "------- Information about Q matrix -----" << std::endl;  // TODO
-        // MatrixInfo<MatrixRT> matrixInfo(Qeff_,true,2,1);
-        // std::cout << "----------------------------------------" << std::endl;
-        Qeff_.solve(Beff_,Bhat_);
-        if(parameterSet.get<bool>("print_debug", false))
-            printvector(std::cout, Beff_, "Beff_", "--");
-        
-        //LOG-Output
-        // auto& log = *(correctorComputer_.getLog());
-        // log << "--- Effective moduli --- " << std::endl;
-        // log << "Qeff_: \n" << Qeff_ << std::endl;
-        // log << "------------------------ " << std::endl;
-        // log << "--- Prestrain Output --- " << std::endl;
-        // log << "Bhat_: " << Bhat_ << std::endl;
-        // log << "Beff_: " << Beff_ <<  " (Effective Prestrain)" << std::endl;
-        // log << "------------------------ " << std::endl;
-
-        //   std::cout << std::setprecision(std::numeric_limits<float_50>::digits10) << higherPrecEnergy << std::endl;
-        if (parameterSet.get<bool>("printMicroOutput ", false))
-            std::cout << "Time required to solve for effective quantities: " << effectiveQuantitiesTimer.elapsed() << std::endl;
-        return ;
-    }
+    auto gamma = correctorComputer_->getGamma();
+    auto basis = *correctorComputer_->getBasis();
 
 
-  // -----------------------------------------------------------------
-  // --- write Data to .Txt-File for Matlab / Optimization-Code
-    void writeEffectiveQuantitiesToTxt(std::string outputPath)
-    {
-        std::cout << "write effective quantities as .txt files to output folder..." << std::endl;
-        writeMatrixToMatlab(Qeff_, outputPath + "/QMatrix.txt");
-        // write effective Prestrain in Matrix for Output
-        Dune::FieldMatrix<double,1,3> BeffMat;
-        BeffMat[0] = Beff_;
-        writeMatrixToMatlab(BeffMat, outputPath + "/BMatrix.txt");
-        return;
-    }
+    shared_ptr<VectorCT> phiBasis[3] = {correctorComputer_->getCorr_phi1(),
+                                        correctorComputer_->getCorr_phi2(),
+                                        correctorComputer_->getCorr_phi3()
+    };
 
-    template<class MatrixFunction>
-    double energySP(const MatrixFunction& matrixFieldFuncA,
-                    const MatrixFunction& matrixFieldFuncB)
-    {
+    auto localIndicatorFunction = (correctorComputer_->material_)->getLocalIndicatorFunction();
+
+    Qeff_ = 0 ;
+    Bhat_ = 0;
+
+    for(size_t a=0; a < 3; a++)
+      for(size_t b=0; b < 3; b++)
+      {
         double energy = 0.0;
-        auto mu_ = *correctorComputer_->getMu();
-        auto lambda_ = *correctorComputer_->getLambda();
-        auto gamma = correctorComputer_->getGamma();
-        auto basis = *correctorComputer_->getBasis();
+        double prestrain = 0.0;
         auto localView = basis.localView();
 
-        auto localIndicatorFunction = (correctorComputer_->material_)->getLocalIndicatorFunction();
+        auto GVFunc_a = derivative(Dune::Functions::makeDiscreteGlobalBasisFunction<VectorRT>(basis,*phiBasis[a]));
+        auto localfun_a = localFunction(GVFunc_a);
 
-        auto matrixFieldAGVF  = Dune::Functions::makeGridViewFunction(matrixFieldFuncA, basis.gridView());
-        auto matrixFieldA = localFunction(matrixFieldAGVF);
-        auto matrixFieldBGVF  = Dune::Functions::makeGridViewFunction(matrixFieldFuncB, basis.gridView());
-        auto matrixFieldB = localFunction(matrixFieldBGVF);
+        auto matrixFieldG1GVF  = Dune::Functions::makeGridViewFunction(x3MatrixBasisContainer[a], basis.gridView());
+        auto matrixFieldG1 = localFunction(matrixFieldG1GVF);
+        auto matrixFieldG2GVF  = Dune::Functions::makeGridViewFunction(x3MatrixBasisContainer[b], basis.gridView());
+        auto matrixFieldG2 = localFunction(matrixFieldG2GVF);
 
-        for (const auto& e : elements(basis.gridView()))
+        for (const auto& element : elements(basis.gridView()))
         {
-            localView.bind(e);
-            matrixFieldA.bind(e);
-            matrixFieldB.bind(e);
-            localIndicatorFunction.bind(e);
+          localView.bind(element);
+          matrixFieldG1.bind(element);
+          matrixFieldG2.bind(element);
+          localfun_a.bind(element);
 
-            double elementEnergy = 0.0;
+          localIndicatorFunction.bind(element);
 
-            auto geometry = e.geometry();
-            const auto& localFiniteElement = localView.tree().child(0).finiteElement();
+          double elementEnergy = 0.0;
+          double elementPrestrain = 0.0;
 
-            int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
-            const auto& quad = Dune::QuadratureRules<double, dim>::rule(e.type(), orderQR);
-            for (const auto& quadPoint : quad) 
-            {
-                const auto& quadPos = quadPoint.position();
-                const double integrationElement = geometry.integrationElement(quadPos);
+          auto geometry = element.geometry();
+          const auto& localFiniteElement = localView.tree().child(0).finiteElement();
+
+          int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
 
-                double energyDensity= scalarProduct((correctorComputer_->material_)->applyElasticityTensor(matrixFieldA(quadPos),localIndicatorFunction(quadPos)),sym(matrixFieldB(quadPos)));
+          const auto& quad = Dune::QuadratureRules<double, dim>::rule(element.type(), orderQR);
 
-                elementEnergy += energyDensity * quadPoint.weight() * integrationElement;          
+          for (const auto& quadPoint : quad)
+          {
+            const auto& quadPos = quadPoint.position();
+            const double integrationElement = geometry.integrationElement(quadPos);
+
+            auto Chi1 = sym(crossSectionDirectionScaling(1.0/gamma, localfun_a(quadPos))) + MContainer[a];
+
+            auto G1 = matrixFieldG1(quadPos);
+            auto G2 = matrixFieldG2(quadPos);
+
+            auto X1 = matrixToVoigt(G1 + Chi1);
+
+            double energyDensity= voigtScalarProduct((correctorComputer_->material_)->applyElasticityTensor(X1,localIndicatorFunction(quadPos)), matrixToVoigt(sym(G2)));
+
+            elementEnergy += energyDensity * quadPoint.weight() * integrationElement;              // quad[quadPoint].weight() ???
+            if (b==0)
+            {
+              auto prestrainPhaseValue = (correctorComputer_->material_)->prestrain(localIndicatorFunction(quadPos),element.geometry().global(quadPos));
+              auto value = voigtScalarProduct((correctorComputer_->material_)->applyElasticityTensor(X1,localIndicatorFunction(quadPos)),matrixToVoigt(sym(prestrainPhaseValue)));
+
+              elementPrestrain += value * quadPoint.weight() * integrationElement;
             }
-            energy += elementEnergy;
+          }
+          energy += elementEnergy;
+          prestrain += elementPrestrain;
+
         }
-        return energy;
+        Qeff_[a][b] = energy;
+        if (b==0)
+          Bhat_[a] = prestrain;
+      }
+    if(parameterSet.get<bool>("print_debug", false))
+    {
+      printmatrix(std::cout, Qeff_, "Qeff_", "--");
+      printvector(std::cout, Bhat_, "Bhat_", "--");
+    }
+
+    ///////////////////////////////
+    // Compute effective Prestrain B_eff (by solving linear system)
+    //////////////////////////////
+
+    // std::cout << "------- Information about Q matrix -----" << std::endl;  // TODO
+    // MatrixInfo<MatrixRT> matrixInfo(Qeff_,true,2,1);
+    // std::cout << "----------------------------------------" << std::endl;
+    Qeff_.solve(Beff_,Bhat_);
+    if(parameterSet.get<bool>("print_debug", false))
+      printvector(std::cout, Beff_, "Beff_", "--");
+
+    //LOG-Output
+    // auto& log = *(correctorComputer_.getLog());
+    // log << "--- Effective moduli --- " << std::endl;
+    // log << "Qeff_: \n" << Qeff_ << std::endl;
+    // log << "------------------------ " << std::endl;
+    // log << "--- Prestrain Output --- " << std::endl;
+    // log << "Bhat_: " << Bhat_ << std::endl;
+    // log << "Beff_: " << Beff_ <<  " (Effective Prestrain)" << std::endl;
+    // log << "------------------------ " << std::endl;
+
+    //   std::cout << std::setprecision(std::numeric_limits<float_50>::digits10) << higherPrecEnergy << std::endl;
+    if (parameterSet.get<bool>("printMicroOutput ", false))
+      std::cout << "Time required to solve for effective quantities: " << effectiveQuantitiesTimer.elapsed() << std::endl;
+    return ;
+  }
+
+
+  // -----------------------------------------------------------------
+  // --- write Data to .Txt-File for Matlab / Optimization-Code
+  void writeEffectiveQuantitiesToTxt(std::string outputPath)
+  {
+    std::cout << "write effective quantities as .txt files to output folder..." << std::endl;
+    writeMatrixToMatlab(Qeff_, outputPath + "/QMatrix.txt");
+    // write effective Prestrain in Matrix for Output
+    Dune::FieldMatrix<double,1,3> BeffMat;
+    BeffMat[0] = Beff_;
+    writeMatrixToMatlab(BeffMat, outputPath + "/BMatrix.txt");
+    return;
+  }
+
+  template<class MatrixFunction>
+  double energySP(const MatrixFunction& matrixFieldFuncA,
+                  const MatrixFunction& matrixFieldFuncB)
+  {
+    double energy = 0.0;
+    auto mu_ = *correctorComputer_->getMu();
+    auto lambda_ = *correctorComputer_->getLambda();
+    auto gamma = correctorComputer_->getGamma();
+    auto basis = *correctorComputer_->getBasis();
+    auto localView = basis.localView();
+
+    auto localIndicatorFunction = (correctorComputer_->material_)->getLocalIndicatorFunction();
+
+    auto matrixFieldAGVF  = Dune::Functions::makeGridViewFunction(matrixFieldFuncA, basis.gridView());
+    auto matrixFieldA = localFunction(matrixFieldAGVF);
+    auto matrixFieldBGVF  = Dune::Functions::makeGridViewFunction(matrixFieldFuncB, basis.gridView());
+    auto matrixFieldB = localFunction(matrixFieldBGVF);
+
+    for (const auto& e : elements(basis.gridView()))
+    {
+      localView.bind(e);
+      matrixFieldA.bind(e);
+      matrixFieldB.bind(e);
+      localIndicatorFunction.bind(e);
+
+      double elementEnergy = 0.0;
+
+      auto geometry = e.geometry();
+      const auto& localFiniteElement = localView.tree().child(0).finiteElement();
+
+      int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1);
+      const auto& quad = Dune::QuadratureRules<double, dim>::rule(e.type(), orderQR);
+      for (const auto& quadPoint : quad)
+      {
+        const auto& quadPos = quadPoint.position();
+        const double integrationElement = geometry.integrationElement(quadPos);
+
+        double energyDensity= scalarProduct((correctorComputer_->material_)->applyElasticityTensor(matrixFieldA(quadPos),localIndicatorFunction(quadPos)),sym(matrixFieldB(quadPos)));
+
+        elementEnergy += energyDensity * quadPoint.weight() * integrationElement;
+      }
+      energy += elementEnergy;
     }
+    return energy;
+  }
 
 }; // end class
 
diff --git a/dune/microstructure/bendingisometryaddons.hh b/dune/microstructure/bendingisometryaddons.hh
new file mode 100644
index 0000000000000000000000000000000000000000..06a798ad4d031ecc203d331b485adef4e02e048c
--- /dev/null
+++ b/dune/microstructure/bendingisometryaddons.hh
@@ -0,0 +1,409 @@
+#ifndef DUNE_MICROSTRUCTURE_BENDINGISOMETRYADDONS_HH
+#define DUNE_MICROSTRUCTURE_BENDINGISOMETRYADDONS_HH
+
+/**
+    This serves as an interface for passing into an interpolation method
+    of a hermite basis.
+ */
+template<class K,class ValueGridViewFunction,class DerivativeGridViewFunction>
+class GlobalIsometryFunction
+{
+public:
+  GlobalIsometryFunction(ValueGridViewFunction& valueGVF,
+                         DerivativeGridViewFunction& derGVF)
+    : valueGridViewFunction_(valueGVF),
+    derivativeGridViewFunction_(derGVF)
+  {}
+
+  Dune::FieldVector<K,3> operator() (const Dune::FieldVector<K,2>& x) const
+  {
+    return valueGridViewFunction_(x);
+  }
+
+  /**
+   * \brief Obtain derivative function
+   */
+  friend auto derivative(const GlobalIsometryFunction& p)
+  {
+    return p.derivativeGridViewFunction_;
+  }
+
+  ValueGridViewFunction& valueGridViewFunction_;
+  DerivativeGridViewFunction& derivativeGridViewFunction_;
+};
+
+/**
+ * @brief Test that checks the isometry constraint at the nodes of the Triangulation
+ */
+template<class LocalDiscreteKirchhoffFunction, class GridView>
+auto nodewiseIsometryTest(LocalDiscreteKirchhoffFunction& deformationFunction,
+                          GridView& gridView)
+{
+  for (const auto &element :  elements(gridView))
+  {
+    auto geometry = element.geometry();
+    deformationFunction.bind(element);
+    // evaluate at nodes:
+    for (int i=0; i<geometry.corners(); i++)
+    {
+      auto rot = deformationFunction.evaluateDerivative(geometry.local(geometry.corner(i)));
+      Dune::FieldMatrix<double,2,2> I = Dune::ScaledIdentityMatrix<double,2>(1);
+      auto diff = (rot.transposed()*rot) - I;
+      // std::cout << "diff.frobenius_norm():" << diff.frobenius_norm() << std::endl;
+      if(diff.frobenius_norm()>1e-8)
+        DUNE_THROW(Dune::Exception, "Nodewise Isometry Test failed! with error"<< diff.frobenius_norm());
+    }
+  }
+  std::cout << "nodewiseIsometryTest passed." << std::endl;
+}
+
+/**
+ * @brief Test that checks the isometry constraint at the nodes of the Triangulation
+ *        - For a differentiable gridview function.
+ */
+template<class DeformationFunction>
+auto nodewiseIsometryTest(DeformationFunction& deformationGridViewFunction)
+{
+  auto localDeformation = localFunction(deformationGridViewFunction);
+  auto localRotation = derivative(localDeformation);
+  auto gridView = deformationGridViewFunction.basis().gridView();
+  for (const auto &element :  elements(gridView))
+  {
+    auto geometry = element.geometry();
+    localDeformation.bind(element);
+    localRotation.bind(element);
+
+    // evaluate at nodes:
+    for (int i=0; i<geometry.corners(); i++)
+    {
+      auto rot = localRotation(geometry.local(geometry.corner(i)));
+      auto product = rot.transposed()*rot;
+
+      Dune::FieldMatrix<double,2,2> I = Dune::ScaledIdentityMatrix<double,2>(1);
+      auto diff = (rot.transposed()*rot) - I;
+
+      if(diff.frobenius_norm()>1e-8)
+        DUNE_THROW(Dune::Exception, "Nodewise Isometry Test failed! with error"<< diff.frobenius_norm());
+    }
+  }
+  std::cout << "Node-wise IsometryTest passed." << std::endl;
+}
+
+
+
+
+/**
+ * @brief Compute L2/L1-Isometry Error: | (\nabla u)^T (\nabla u) - I |  over the grid.
+ */
+template<class LocalDiscreteKirchhoffFunction, class GridView>
+auto isometryError(LocalDiscreteKirchhoffFunction& deformationFunction,
+                   GridView& gridView)
+{
+  std::cout << "measuring isometry error ... " << std::endl;
+
+  int quadOrder = 3;
+  constexpr static int gridDim = LocalDiscreteKirchhoffFunction::gridDim;
+
+  // The error to be compute
+  double isometryL2Error = 0;
+  double isometryL1Error = 0;
+
+  Dune::FieldMatrix<double,2,2> IdentityMatrix = Dune::ScaledIdentityMatrix<double,2>(1);
+  for (auto&& element : elements(gridView))
+  {
+    deformationFunction.bind(element);
+
+    const auto &quadRule = Dune::QuadratureRules<double, gridDim>::rule(element.type(), quadOrder);
+
+    for (auto quadPoint : quadRule)
+    {
+      auto quadPos = quadPoint.position();
+      const auto integrationElement = element.geometry().integrationElement(quadPos);
+      const auto weight = quadPoint.weight();
+
+      auto numDir = deformationFunction.evaluateDerivative(quadPos);
+      auto isoValue = numDir.transposed() * numDir;
+      // printmatrix(std::cout, isoValue , "isoValue: ", "--");
+
+      // integrate error
+      isometryL2Error += (isoValue - IdentityMatrix).frobenius_norm2()  * weight * integrationElement;
+      isometryL1Error += (isoValue - IdentityMatrix).frobenius_norm()  * weight * integrationElement;
+    }
+  }
+  std::cout << std::setprecision(6);
+  std::cout << "L2-Isometry-error: " << std::sqrt(isometryL2Error)
+            << "      "
+            << "L1-Isometry-error: " << isometryL1Error << std::endl;
+
+  std::vector<double> errorVector = {isometryL1Error,isometryL2Error};
+
+  return errorVector;
+}
+
+
+
+
+/**
+ * @brief Measure L2/H1-Error
+ *        between discrete deformation and analytical reference solution.
+ */
+template<class LocalDiscreteKirchhoffFunction, class GridView>
+auto measureAnalyticalError(LocalDiscreteKirchhoffFunction& deformationFunction,
+                            GridView& gridView,
+                            Python::Module pyModule)
+{
+  std::cout << "measuring analytical error ... " << std::endl;
+
+  // Get reference solution
+  // auto referenceSolution = Python::makeDifferentiableFunction<Dune::FieldVector<double,3>(Dune::FieldVector<double,2>)>(pyModule.get("displacement"), pyModule.get("displacementGradient"));
+  // auto referenceDerivative = derivative(referenceSolution);
+  auto referenceSolution = Python::makeDifferentiableFunction<Dune::FieldVector<double,3>(Dune::FieldVector<double,2>)>(pyModule.get("deformation"), pyModule.get("deformationGradient"));
+  auto referenceDerivative = derivative(referenceSolution);
+
+  // Trapezoidal-rule:
+  // std::vector<Dune::QuadraturePoint<double,2>> quadRule = { {{0.0,0.0}, 1.0/6.0}, {{1.0,0.0}, 1.0/6.0}, {{0.0,1.0}, 1.0/6.0} };
+  int quadOrder = 4;
+  constexpr static int gridDim = LocalDiscreteKirchhoffFunction::gridDim;
+
+  // The error to be computed
+  double l2ErrorSquared = 0;
+  double h1ErrorSquared = 0;
+
+
+  //TEST
+  // QuadratureRuleKey quadKey(2,6);
+
+  for (auto&& element : elements(gridView))
+  {
+    deformationFunction.bind(element);
+
+    const auto &quadRule = Dune::QuadratureRules<double, gridDim>::rule(element.type(), quadOrder);
+
+    for (auto quadPoint : quadRule)
+    {
+      auto quadPos = quadPoint.position();
+      const auto integrationElement = element.geometry().integrationElement(quadPos);
+      const auto weight = quadPoint.weight();
+
+      auto refValue = referenceSolution(element.geometry().global(quadPos));
+      auto numValue = deformationFunction.evaluate(quadPos).globalCoordinates();
+
+      auto numDir = deformationFunction.evaluateDerivative(quadPos);
+      auto refDir = referenceDerivative(element.geometry().global(quadPos));
+      auto diff = numDir - refDir;
+
+      // integrate error
+      l2ErrorSquared += (numValue - refValue)* (numValue - refValue) * weight * integrationElement;
+      h1ErrorSquared += diff.frobenius_norm2() * weight * integrationElement;
+    }
+  }
+  std::cout << "elements: " << gridView.size(0)
+            << "      "
+            << "L2-error: " << std::sqrt(l2ErrorSquared)
+            << "      ";
+  std::cout << "H1-error: " << std::sqrt(h1ErrorSquared) << std::endl;
+
+  std::vector<double> errorVector = {std::sqrt(l2ErrorSquared), std::sqrt(h1ErrorSquared)};
+
+  return errorVector;
+}
+
+// DEBUG: conversion of coefficient vectors (back & forth)
+template<class Coefficients, class DeformationBasis, class CoefficientBasis, class IsometryCoefficients>
+void coefficientConversionTest(const Coefficients& coefficients,
+                               const DeformationBasis& deformationBasis,
+                               const CoefficientBasis& coefficientBasis)
+{
+  Coefficients x_convert = coefficients;
+  IsometryCoefficients isometryCoefficientsTMP(coefficientBasis.size());
+  Dune::GFE::Impl::vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x_convert,isometryCoefficientsTMP);
+  Dune::GFE::Impl::isometryToVectorCoefficientMap(deformationBasis,coefficientBasis,x_convert,isometryCoefficientsTMP);
+  //Check difference
+  for(int i=0; i<coefficients.size(); i++)
+  {
+    if((coefficients[i]-x_convert[i]).two_norm() > 1e-4)
+      std::cout << "Coefficient conversion failed! with x[i]-x_convert[i]:" << coefficients[i]-x_convert[i] << std::endl;
+  }
+}
+
+
+
+
+// template<class LocalDiscreteKirchhoffFunction, class NormalBasis>
+// auto computeDiscreteSurfaceNormal(LocalDiscreteKirchhoffFunction& deformationFunction,
+//                                   const NormalBasis& normalBasis)
+// {
+//   std::vector<Dune::FieldVector<double,3> > discreteNormalVectorCoefficients(normalBasis.size());
+
+//   auto localView = normalBasis.localView();
+//   for (auto&& element : elements(normalBasis.gridView()))
+//   {
+//     auto geometry = element.geometry();
+
+//     localView.bind(element);
+//     const auto nSf = localView.tree().child(0).finiteElement().localBasis().size();
+
+//     deformationFunction.bind(element);
+
+//     for (int i=0; i<geometry.corners(); i++)
+//     {
+//       auto numDir = deformationFunction.evaluateDerivative(geometry.local(geometry.corner(i)));
+//       // printmatrix(std::cout, numDir, "numDir: ", "--");
+
+//       //cross product to get normal vector.
+//       Dune::FieldVector<double,3> normal = {numDir[1][0]*numDir[2][1] - numDir[1][1]*numDir[2][0],
+//                                             numDir[2][0]*numDir[0][1] - numDir[0][0]*numDir[2][1],
+//                                             numDir[0][0]*numDir[1][1] - numDir[1][0]*numDir[0][1]};
+//       // printvector(std::cout, normal, "discrete normal:" , "--");
+//       for (size_t k=0; k < 3; k++)
+//         for (size_t i=0; i < nSf; i++)
+//         {
+//           size_t localIdx = localView.tree().child(k).localIndex(i);   // hier i:leafIdx
+//           size_t globalIdx = localView.index(localIdx);
+//           discreteNormalVectorCoefficients[globalIdx] = normal[k];
+//         }
+//     }
+//   }
+
+//   return discreteNormalVectorCoefficients;
+
+//   // does not work:
+//   // auto surfaceNormalDiscrete = Dune::Functions::makeDiscreteGlobalBasisFunction<Dune::FieldVector<double,3>>(normalBasis, discreteNormalVectorCoefficients);
+//   // return surfaceNormalDiscrete;
+// }
+
+
+
+/**
+ * @brief Comparison of different function definitions for debugging purposes.
+ */
+template<class LocalDiscreteKirchhoffFunction,class DeformationFunction, class GridView>
+auto compare(LocalDiscreteKirchhoffFunction& kirchhoffFunction,
+             DeformationFunction&  deformationFunction,
+             GridView& gridView)
+{
+  std::cout << "COMPARE:" << std::endl;
+  auto localDeformation = localFunction(deformationFunction);
+  auto rotation = derivative(deformationFunction);
+  auto localRotation = localFunction(rotation);
+  auto localRotation_2 = derivative(localDeformation);
+  for (const auto &element :  elements(gridView))
+  {
+    auto geometry = element.geometry();
+
+    kirchhoffFunction.bind(element);
+    localDeformation.bind(element);
+    localRotation.bind(element);
+    localRotation_2.bind(element);
+
+    //evaluate at nodes:
+    for (int i=0; i<geometry.corners(); i++)
+    {
+      auto kirchhoffOut = kirchhoffFunction.evaluate(geometry.local(geometry.corner(i))).globalCoordinates();
+      auto KirchhoffRot = kirchhoffFunction.evaluateDerivative(geometry.local(geometry.corner(i)));
+      //Test
+      const auto& jacobian = geometry.jacobian(geometry.corner(i));
+      printmatrix(std::cout, jacobian, "jacobianInverse:", "--");
+
+      auto defOut = localDeformation(geometry.local(geometry.corner(i)));
+      auto defRot = localRotation(geometry.local(geometry.corner(i)));
+      auto defRot_2 = localRotation_2(geometry.local(geometry.corner(i)));
+
+      printvector(std::cout, kirchhoffOut, "kirchhoffOut:", "--");
+      printvector(std::cout, defOut, "defOut:", "--");
+      printmatrix(std::cout, KirchhoffRot, "KirchhoffRot:", "--");
+      printmatrix(std::cout, defRot, "defRot:", "--");
+    }
+  }
+}
+
+
+
+// /**
+//  * @brief Symmetric part of a matrix.
+//  *
+//  * @param M
+//  * @return FieldMatrix<RT,2,2>
+//  */
+// template<class RT>
+// static Dune::FieldMatrix<RT,2,2> sym (Dune::FieldMatrix<RT,2,2> M) {         // 1/2 (M^T + M)
+//   Dune::FieldMatrix<RT,2,2> ret(0);
+//   for (int i=0; i<2; i++)
+//   {
+//     ret[i][i] = M[i][i];
+//     for (int j=i+1; j<2; j++)
+//     {
+//       ret[i][j] = 0.5*(M[i][j] + M[j][i]);
+//       ret[j][i] = ret[i][j];
+//     }
+//   }
+//   return ret;
+// }
+
+
+
+/**
+ * @brief  Taking the symmetric part of a 2x2 matrix and represent it in
+ *         (canonical) orthonormal basis of 2x2-symmetric matrices.
+ *         Return the 3 coefficients as a vector
+ *
+ *         Matrix A -> sym(A) -> coefficients in R_sym^(2x2)
+ *
+ * @param M
+ * @return Coefficient vector
+ */
+template<class RT>
+static Dune::FieldVector<RT,3> matrixToSymCoefficients(Dune::FieldMatrix<RT,2,2> M) {
+  Dune::FieldVector<RT,3> ret = {M[0][0], M[1][1], (1.0/sqrt(2.0))*(M[0][1]+M[1][0])};
+
+  return ret;
+}
+
+/**
+ * @brief same for each slice of a 3x2x2-Tensor.
+ */
+template<class RT, class OutputType>
+static auto tensorToSymCoefficients(Dune::GFE::Tensor3<RT,3,2,2> M, OutputType& ret) {
+  for(int k=0; k<3; k++)
+  {
+    ret[k][0] = M[k][0][0];
+    ret[k][1] = M[k][1][1];
+    ret[k][2] = (1.0/sqrt(2.0))*(M[k][0][1]+M[k][1][0]);
+  }
+  return ret;
+}
+
+
+template<class RT>
+static Dune::FieldMatrix<RT,2,2> CoefficientsToSymMatrix(Dune::FieldVector<RT,3> C)
+{
+  Dune::FieldMatrix<RT,2,2> ret = {{C[0]                , C[2]*(1.0/sqrt(2.0))},
+    {C[2]*(1.0/sqrt(2.0)), C[1]}};
+
+  return ret;
+}
+
+/**
+ * @brief This is used to convert FieldMatrices to 'adouble'
+ *        since adouble-type can not be read from ParSet.
+ *        is there a better way?
+ *
+ * @tparam Rtype
+ * @tparam IMatrixType
+ * @param A
+ * @param B
+ */
+template<class Rtype>
+static void convertFieldMatrix(auto& A,
+                               auto& B)
+{
+  for(size_t i=0; i<B.N(); i++)
+    for(size_t j=0; j<B.M(); j++)
+      B[i][j] = (Rtype)A[i][j];
+
+  return;
+}
+
+
+
+#endif
diff --git a/dune/microstructure/deprecated_headers/materialDefinitions.hh b/dune/microstructure/deprecated_headers/materialDefinitions.hh
index 1a03b8832c93a87d13a680217f7c482772f0ed6e..19468d4551cc67f519ecd111c69a20317a74a144 100644
--- a/dune/microstructure/deprecated_headers/materialDefinitions.hh
+++ b/dune/microstructure/deprecated_headers/materialDefinitions.hh
@@ -20,11 +20,11 @@ using VectorRT = FieldVector< double, 3>;
 
 
 
-// (30.8.22) DEPRECATED CLASS! 
+// (30.8.22) DEPRECATED CLASS!
 
 
 
-  ////----------------------------------------------------------------------------------
+////----------------------------------------------------------------------------------
 //   template<class Domain>
 //   int indicatorFunction_material_new(const Domain& x)
 //   {
@@ -33,7 +33,7 @@ using VectorRT = FieldVector< double, 3>;
 //         return 1;    //#Phase1
 //     else if (x[1]<(-0.5+theta) and x[2]>(0.5-theta))
 //         return 2;    //#Phase2
-//     else 
+//     else
 //         return 3;    //#Phase3
 //   }
 //  MatrixRT material_new(const MatrixRT& G, const int& phase)
@@ -45,7 +45,7 @@ using VectorRT = FieldVector< double, 3>;
 //         // return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id(); //#Phase1 //Isotrop(mu,lambda)
 //       else if (phase == 2)
 //         return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id(); //#Phase2
-//       else 
+//       else
 //         return 2.0 * mu[2] * sym(G) + lambda[2] * trace(sym(G)) * Id(); //#Phase3
 //   }
 //   MatrixRT prestrain_material_new(const int& phase)
@@ -60,208 +60,208 @@ using VectorRT = FieldVector< double, 3>;
 //                 {0.0, 1.0, 0.0},
 //                 {0.0, 0.0, 1.0}
 //                };
-//       else 
+//       else
 //         return {{0.0, 0.0, 0.0},    //#Phase3
 //                 {0.0, 0.0, 0.0},
 //                 {0.0, 0.0, 0.0}
 //                };
 //   }
-  ////----------------------------------------------------------------------------------
-
-
-
-
-
-  // ----------------------------------------------------------------------------------
-  template<class Domain>
-  int indicatorFunction_material_neukamm(const Domain& x)
-  {
-    double theta=0.25;
-    if (x[0] <(-0.5+theta) and x[2]<(-0.5+theta))
-        return 1;    //#Phase1
-    else if (x[1]<(-0.5+theta) and x[2]>(0.5-theta))
-        return 2;    //#Phase2
-    else 
-        return 3;    //#Phase3
-  }
- MatrixRT material_neukamm(const MatrixRT& G, const int& phase)
-  {
-      const FieldVector<double,3> mu     = {80.0, 80.0, 60.0};
-      const FieldVector<double,3> lambda = {80.0, 80.0, 25.0};
-      if (phase == 1)
-        return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id(); //#Phase1 //Isotrop(mu,lambda)
-      else if (phase == 2)
-        return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id(); //#Phase2
-      else 
-        return 2.0 * mu[2] * sym(G) + lambda[2] * trace(sym(G)) * Id(); //#Phase3
-  }
-  MatrixRT prestrain_material_neukamm(const int& phase)
-  {
-      if (phase == 1)
-        return {{1.0, 0.0, 0.0},    //#Phase1
-                {0.0, 1.0, 0.0},
-                {0.0, 0.0, 1.0}
-               };
-      else if (phase == 2)
-        return {{1.0, 0.0, 0.0},    //#Phase2
-                {0.0, 1.0, 0.0},
-                {0.0, 0.0, 1.0}
-               };
-      else 
-        return {{0.0, 0.0, 0.0},    //#Phase3
-                {0.0, 0.0, 0.0},
-                {0.0, 0.0, 0.0}
-               };
-  }
-  // ----------------------------------------------------------------------------------
-
-
-  // ----------------------------------------------------------------------------------
-  template<class Domain>
-  int indicatorFunction_two_phase_material_1(const Domain& x)
-  {
-    double theta=0.25;
-    if(abs(x[0]) > (theta/2.0))  
-        return 1;    //#Phase1
-    else 
-        return 0;    //#Phase2
-  }
- MatrixRT two_phase_material_1(const MatrixRT& G, const int& phase)
-  {
-      const FieldVector<double,2> mu     = {80.0, 160.0};
-      const FieldVector<double,2> lambda = {80.0, 160.0};
-      if (phase == 1)
-        return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id();
-      else 
-        return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id();
-  }
-  MatrixRT prestrain_two_phase_material_1(const int& phase)
-  {
-      const FieldVector<double,2> rho = {3.0, 5.0};
-      if (phase == 1)
-        return {{rho[0], 0.0, 0.0},    //#Phase1
-                {0.0, rho[0], 0.0},
-                {0.0, 0.0, rho[0]}
-               };
-      else 
-        return {{rho[1], 0.0, 0.0},    //#Phase2
-                {0.0, rho[1], 0.0},
-                {0.0, 0.0, rho[1]}
-               };
-  }
-  // ----------------------------------------------------------------------------------
-
-
-  // ----------------------------------------------------------------------------------
-  template<class Domain>
-  int indicatorFunction_two_phase_material_2(const Domain& x)
-  {
-    double theta=0.25;
-    if(abs(x[0]) > (theta/2.0))  
-        return 1;    //#Phase1
-    else 
-        return 0;    //#Phase2
-  }
- MatrixRT two_phase_material_2(const MatrixRT& G, const int& phase)
-  {
-      const FieldVector<double,2> mu     = {5.0, 15.0};
-      const FieldVector<double,2> lambda = {6.0, 8.0};
-      if (phase == 1)
-        return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id();
-      else 
-        return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id();
-  }
-  MatrixRT prestrain_two_phase_material_2(const int& phase)
-  {
-      const FieldVector<double,2> rho = {3.0, 5.0};
-      if (phase == 1)
-        return {{rho[0], 0.0, 0.0},    //#Phase1
-                {0.0, rho[0], 0.0},
-                {0.0, 0.0, rho[0]}
-               };
-      else 
-        return {{rho[1], 0.0, 0.0},    //#Phase2
-                {0.0, rho[1], 0.0},
-                {0.0, 0.0, rho[1]}
-               };
-  }
-  // ----------------------------------------------------------------------------------
-
-
-
-  // ----------------------------------------------------------------------------------
-  template<class Domain>
-  int indicatorFunction_material_2(const Domain& x)
-  {
-    double theta=0.25;
-    if(abs(x[0]) > (theta/2.0))  
-        return 1;    //#Phase1
-    else 
-        return 0;    //#Phase2
-  }
- MatrixRT material_2(const MatrixRT& G, const int& phase)
-  {
-      const FieldVector<double,2> mu     = {80.0, 160.0};
-      const FieldVector<double,2> lambda = {80.0, 160.0};
-      if (phase == 1)
-        return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id(); //#Phase1
-      else 
-        return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id(); //#Phase2
-  }
-  MatrixRT prestrain_material_2(const int& phase)
-  {
-      const FieldVector<double,2> rho = {3.0, 5.0};
-      if (phase == 1)
-        return {{rho[0], 0.0, 0.0},    //#Phase1
-                {0.0, rho[0], 0.0},
-                {0.0, 0.0, rho[0]}
-               };
-      else 
-        return {{rho[1], 0.0, 0.0},    //#Phase2
-                {0.0, rho[1], 0.0},
-                {0.0, 0.0, rho[1]}
-               };
-  }
-  // ----------------------------------------------------------------------------------
-
-
-  // ----------------------------------------------------------------------------------
-  template<class Domain>
-  int indicatorFunction_material_homogeneous(const Domain& x)
-  {
-      return 0;  
-  }
- MatrixRT material_homogeneous(const MatrixRT& G, const int& phase)
- {
-      const FieldVector<double,1> mu     = {80.0};
-      const FieldVector<double,1> lambda = {80.0};
-      return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id();
- }
-   MatrixRT prestrain_homogeneous(const int& phase)
-  {
-      if (phase == 1)
-        return {{1.0, 0.0, 0.0},    //#Phase1
-                {0.0, 1.0, 0.0},
-                {0.0, 0.0, 1.0}
-               };
-      else if (phase == 2)
-        return {{1.0, 0.0, 0.0},    //#Phase2
-                {0.0, 1.0, 0.0},
-                {0.0, 0.0, 1.0}
-               };
-      else 
-        return {{1.0, 0.0, 0.0},    //#Phase3
-                {0.0, 1.0, 0.0},
-                {0.0, 0.0, 1.0}
-               };
-  }
- // ----------------------------------------------------------------------------------
-
-
-
-
-
-
+////----------------------------------------------------------------------------------
+
+
+
+
+
+// ----------------------------------------------------------------------------------
+template<class Domain>
+int indicatorFunction_material_neukamm(const Domain& x)
+{
+  double theta=0.25;
+  if (x[0] <(-0.5+theta) and x[2]<(-0.5+theta))
+    return 1;        //#Phase1
+  else if (x[1]<(-0.5+theta) and x[2]>(0.5-theta))
+    return 2;        //#Phase2
+  else
+    return 3;        //#Phase3
+}
+MatrixRT material_neukamm(const MatrixRT& G, const int& phase)
+{
+  const FieldVector<double,3> mu     = {80.0, 80.0, 60.0};
+  const FieldVector<double,3> lambda = {80.0, 80.0, 25.0};
+  if (phase == 1)
+    return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id();     //#Phase1 //Isotrop(mu,lambda)
+  else if (phase == 2)
+    return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id();     //#Phase2
+  else
+    return 2.0 * mu[2] * sym(G) + lambda[2] * trace(sym(G)) * Id();     //#Phase3
+}
+MatrixRT prestrain_material_neukamm(const int& phase)
+{
+  if (phase == 1)
+    return {{1.0, 0.0, 0.0},        //#Phase1
+      {0.0, 1.0, 0.0},
+      {0.0, 0.0, 1.0}
+    };
+  else if (phase == 2)
+    return {{1.0, 0.0, 0.0},        //#Phase2
+      {0.0, 1.0, 0.0},
+      {0.0, 0.0, 1.0}
+    };
+  else
+    return {{0.0, 0.0, 0.0},        //#Phase3
+      {0.0, 0.0, 0.0},
+      {0.0, 0.0, 0.0}
+    };
+}
+// ----------------------------------------------------------------------------------
+
+
+// ----------------------------------------------------------------------------------
+template<class Domain>
+int indicatorFunction_two_phase_material_1(const Domain& x)
+{
+  double theta=0.25;
+  if(abs(x[0]) > (theta/2.0))
+    return 1;        //#Phase1
+  else
+    return 0;        //#Phase2
+}
+MatrixRT two_phase_material_1(const MatrixRT& G, const int& phase)
+{
+  const FieldVector<double,2> mu     = {80.0, 160.0};
+  const FieldVector<double,2> lambda = {80.0, 160.0};
+  if (phase == 1)
+    return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id();
+  else
+    return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id();
+}
+MatrixRT prestrain_two_phase_material_1(const int& phase)
+{
+  const FieldVector<double,2> rho = {3.0, 5.0};
+  if (phase == 1)
+    return {{rho[0], 0.0, 0.0},        //#Phase1
+      {0.0, rho[0], 0.0},
+      {0.0, 0.0, rho[0]}
+    };
+  else
+    return {{rho[1], 0.0, 0.0},        //#Phase2
+      {0.0, rho[1], 0.0},
+      {0.0, 0.0, rho[1]}
+    };
+}
+// ----------------------------------------------------------------------------------
+
+
+// ----------------------------------------------------------------------------------
+template<class Domain>
+int indicatorFunction_two_phase_material_2(const Domain& x)
+{
+  double theta=0.25;
+  if(abs(x[0]) > (theta/2.0))
+    return 1;        //#Phase1
+  else
+    return 0;        //#Phase2
+}
+MatrixRT two_phase_material_2(const MatrixRT& G, const int& phase)
+{
+  const FieldVector<double,2> mu     = {5.0, 15.0};
+  const FieldVector<double,2> lambda = {6.0, 8.0};
+  if (phase == 1)
+    return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id();
+  else
+    return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id();
+}
+MatrixRT prestrain_two_phase_material_2(const int& phase)
+{
+  const FieldVector<double,2> rho = {3.0, 5.0};
+  if (phase == 1)
+    return {{rho[0], 0.0, 0.0},        //#Phase1
+      {0.0, rho[0], 0.0},
+      {0.0, 0.0, rho[0]}
+    };
+  else
+    return {{rho[1], 0.0, 0.0},        //#Phase2
+      {0.0, rho[1], 0.0},
+      {0.0, 0.0, rho[1]}
+    };
+}
+// ----------------------------------------------------------------------------------
+
+
+
+// ----------------------------------------------------------------------------------
+template<class Domain>
+int indicatorFunction_material_2(const Domain& x)
+{
+  double theta=0.25;
+  if(abs(x[0]) > (theta/2.0))
+    return 1;        //#Phase1
+  else
+    return 0;        //#Phase2
+}
+MatrixRT material_2(const MatrixRT& G, const int& phase)
+{
+  const FieldVector<double,2> mu     = {80.0, 160.0};
+  const FieldVector<double,2> lambda = {80.0, 160.0};
+  if (phase == 1)
+    return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id();     //#Phase1
+  else
+    return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id();     //#Phase2
+}
+MatrixRT prestrain_material_2(const int& phase)
+{
+  const FieldVector<double,2> rho = {3.0, 5.0};
+  if (phase == 1)
+    return {{rho[0], 0.0, 0.0},        //#Phase1
+      {0.0, rho[0], 0.0},
+      {0.0, 0.0, rho[0]}
+    };
+  else
+    return {{rho[1], 0.0, 0.0},        //#Phase2
+      {0.0, rho[1], 0.0},
+      {0.0, 0.0, rho[1]}
+    };
+}
+// ----------------------------------------------------------------------------------
+
+
+// ----------------------------------------------------------------------------------
+template<class Domain>
+int indicatorFunction_material_homogeneous(const Domain& x)
+{
+  return 0;
+}
+MatrixRT material_homogeneous(const MatrixRT& G, const int& phase)
+{
+  const FieldVector<double,1> mu     = {80.0};
+  const FieldVector<double,1> lambda = {80.0};
+  return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id();
+}
+MatrixRT prestrain_homogeneous(const int& phase)
+{
+  if (phase == 1)
+    return {{1.0, 0.0, 0.0},        //#Phase1
+      {0.0, 1.0, 0.0},
+      {0.0, 0.0, 1.0}
+    };
+  else if (phase == 2)
+    return {{1.0, 0.0, 0.0},        //#Phase2
+      {0.0, 1.0, 0.0},
+      {0.0, 0.0, 1.0}
+    };
+  else
+    return {{1.0, 0.0, 0.0},        //#Phase3
+      {0.0, 1.0, 0.0},
+      {0.0, 0.0, 1.0}
+    };
+}
+// ----------------------------------------------------------------------------------
+
+
+
+
+
+
 
 
 
@@ -280,4 +280,4 @@ using VectorRT = FieldVector< double, 3>;
 
 
 
-#endif
\ No newline at end of file
+#endif
diff --git a/dune/microstructure/deprecated_headers/prestrain_material_geometry.hh b/dune/microstructure/deprecated_headers/prestrain_material_geometry.hh
index 55def935a783ea2ae1fb3db94317ac503ae686b8..cae2f3651b3539c26b5c1088d28e6768b2aa88de 100644
--- a/dune/microstructure/deprecated_headers/prestrain_material_geometry.hh
+++ b/dune/microstructure/deprecated_headers/prestrain_material_geometry.hh
@@ -18,460 +18,460 @@ using std::cos;
 
 
 
-template <int dim> 
-class IsotropicMaterialImp 
+template <int dim>
+class IsotropicMaterialImp
 {
 
 public:
   static const int dimWorld = dim;
-  using CellGridType = YaspGrid< dim, EquidistantOffsetCoordinates< double, dim>>;
+  using CellGridType = YaspGrid< dim, EquidistantOffsetCoordinates< double, dim> >;
   using Domain = typename CellGridType::LeafGridView::template Codim<0>::Geometry::GlobalCoordinate;
   using MatrixRT = FieldMatrix< double, dimWorld, dimWorld>;
   using Func2Tensor = std::function< MatrixRT(const Domain&) >;
-  using FuncScalar = std::function< double(const Domain&) >;
+  using FuncScalar = std::function< double (const Domain&) >;
 
 
   FuncScalar getMu(ParameterTree parameters){
 
     std::string imp = parameters.get<std::string>("material_prestrain_imp", "analytical_Example");
     //std::array<std::string,5> imps({"homogen_poisson" "bilayer_poisson" "chess_poisson" "3Dchess_poisson" "vertical_bilayer_poisson"});
-        
-    double phi = M_PI*parameters.get<double>("material_angle", 0.0)/180;           //TODO 
+
+    double phi = M_PI*parameters.get<double>("material_angle", 0.0)/180;           //TODO
     double theta = parameters.get<double>("theta",1.0/4.0);                        //TODO alle parameter hier laden?
-        
+
     double width = parameters.get<double>("width", 1.0);
     double height = parameters.get<double>("height", 1.0);
 
 
-    if (imp == "homogeneous"){    
+    if (imp == "homogeneous") {
 
       double mu1     = parameters.get<double>("mu1", 10);
 
       auto muTerm = [mu1] (const Domain& z) {return mu1;};
-		    
+
       return muTerm;
 
     }
-    else if (imp == "material_neukamm"){    
-//       std::array<double,2> mu = parameters.get<std::array<double,2>>("mu", {1.0,3.0});
-    //   std::array<double,3> mu = parameters.get<std::array<double,3>>("mu", {1.0,3.0,2.0});
-	  std::array<double,3> mu = parameters.get<std::array<double,3>>("mu", {80.0, 80.0, 60.0});
+    else if (imp == "material_neukamm") {
+      //       std::array<double,2> mu = parameters.get<std::array<double,2>>("mu", {1.0,3.0});
+      //   std::array<double,3> mu = parameters.get<std::array<double,3>>("mu", {1.0,3.0,2.0});
+      std::array<double,3> mu = parameters.get<std::array<double,3> >("mu", {80.0, 80.0, 60.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("material_neukamm"));
       Python::Module module = Python::import("material_neukamm");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-      auto muTerm = [mu,indicatorFunction] (const Domain& z) 
-		    {
-		      //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-		      if (indicatorFunction(z) == 1) 
-			return mu[0];
-		      else if (indicatorFunction(z) == 2) 
-			return mu[1];
-              else 
-            return mu[2];
-		    };
+      auto muTerm = [mu,indicatorFunction] (const Domain& z)
+                    {
+                      //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                      if (indicatorFunction(z) == 1)
+                        return mu[0];
+                      else if (indicatorFunction(z) == 2)
+                        return mu[1];
+                      else
+                        return mu[2];
+                    };
       return muTerm;
     }
-    else if (imp == "two_phase_material_1"){    
-      std::array<double,2> mu = parameters.get<std::array<double,2>>("mu", {1.0,3.0});
+    else if (imp == "two_phase_material_1") {
+      std::array<double,2> mu = parameters.get<std::array<double,2> >("mu", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("two_phase_material_1");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-      auto muTerm = [mu,indicatorFunction] (const Domain& z) 
-		    {
-		      //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-		      if (indicatorFunction(z) == 1) 
-			return mu[0];
-		      else 
-			return mu[1];
-		    };
+      auto muTerm = [mu,indicatorFunction] (const Domain& z)
+                    {
+                      //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                      if (indicatorFunction(z) == 1)
+                        return mu[0];
+                      else
+                        return mu[1];
+                    };
       return muTerm;
     }
-    else if (imp == "two_phase_material_2"){    
-      std::array<double,2> mu = parameters.get<std::array<double,2>>("mu", {1.0,3.0});
+    else if (imp == "two_phase_material_2") {
+      std::array<double,2> mu = parameters.get<std::array<double,2> >("mu", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("two_phase_material_2");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-      auto muTerm = [mu,indicatorFunction] (const Domain& z) 
-		    {
-		      //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-		      if (indicatorFunction(z) == 1) 
-			return mu[0];
-		      else 
-			return mu[1];
-		    };
+      auto muTerm = [mu,indicatorFunction] (const Domain& z)
+                    {
+                      //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                      if (indicatorFunction(z) == 1)
+                        return mu[0];
+                      else
+                        return mu[1];
+                    };
       return muTerm;
     }
-    else if (imp == "two_phase_material_3"){    
-      std::array<double,2> mu = parameters.get<std::array<double,2>>("mu", {1.0,3.0});
+    else if (imp == "two_phase_material_3") {
+      std::array<double,2> mu = parameters.get<std::array<double,2> >("mu", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("two_phase_material_3");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-      auto muTerm = [mu,indicatorFunction] (const Domain& z) 
-		    {
-		      //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-		      if (indicatorFunction(z) == 1) 
-			return mu[0];
-		      else 
-			return mu[1];
-		    };
+      auto muTerm = [mu,indicatorFunction] (const Domain& z)
+                    {
+                      //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                      if (indicatorFunction(z) == 1)
+                        return mu[0];
+                      else
+                        return mu[1];
+                    };
       return muTerm;
     }
     else if (imp == "isotropic_bilayer")
-      {
-	double mu1     = parameters.get<double>("mu1",10.0);
-	double beta = parameters.get<double>("beta",2.0); 
-	double mu2 = beta*mu1;
-    
-	auto muTerm = [mu1, mu2, theta] (const Domain& z) {
-			if (z[2]>0)                                                   
-			  return mu1;
-			else
-			  return mu2;
-		      };
-		    
-	return muTerm;
-      }
-    else if (imp == "analytical_Example"){	
+    {
+      double mu1     = parameters.get<double>("mu1",10.0);
+      double beta = parameters.get<double>("beta",2.0);
+      double mu2 = beta*mu1;
+
+      auto muTerm = [mu1, mu2, theta] (const Domain& z) {
+                      if (z[2]>0)
+                        return mu1;
+                      else
+                        return mu2;
+                    };
+
+      return muTerm;
+    }
+    else if (imp == "analytical_Example") {
       double mu1  = parameters.get<double>("mu1",10.0);
-      double beta = parameters.get<double>("beta",2.0); 
+      double beta = parameters.get<double>("beta",2.0);
       double mu2 = beta*mu1;
-		    
+
       auto muTerm = [mu1, mu2, theta] (const Domain& z) {
-		      //                     std::cout << "Analytical-MU is used" << std::endl;
-		      if (abs(z[0]) >= (theta/2.0))                                                   
+                      //                     std::cout << "Analytical-MU is used" << std::endl;
+                      if (abs(z[0]) >= (theta/2.0))
                         return mu1;
-		      else
+                      else
                         return mu2;
                     };
-		    
+
       return muTerm;
     }
-    else if (imp == "parametrized_Laminate"){	
+    else if (imp == "parametrized_Laminate") {
       double mu1  = parameters.get<double>("mu1",1.0);
-      double beta = parameters.get<double>("beta",2.0); 
+      double beta = parameters.get<double>("beta",2.0);
       double mu2 = beta*mu1;
-		    
+
       auto muTerm = [mu1, mu2, theta] (const Domain& z) {
-		      //                     std::cout << "Analytical-MU is used" << std::endl;
-		      //                     if (abs(z[0]) >= (theta/2.0))      
-		      if (abs(z[0]) > (theta/2.0))  
+                      //                     std::cout << "Analytical-MU is used" << std::endl;
+                      //                     if (abs(z[0]) >= (theta/2.0))
+                      if (abs(z[0]) > (theta/2.0))
                         return mu1;
-		      else
+                      else
                         return mu2;
                     };
-		    
+
       return muTerm;
     }
-    else if (imp == "circle_fiber"){
+    else if (imp == "circle_fiber") {
       double mu1  = parameters.get<double>("mu1",10.0);
-      double beta = parameters.get<double>("beta",2.0); 
+      double beta = parameters.get<double>("beta",2.0);
       double mu2 = beta*mu1;
 
-      auto muTerm = [mu1,mu2,width] (const Domain& z) { 
-		      if (z[0] < 0 && sqrt(pow(z[1],2) + pow(z[2],2) ) < width/4.0  ||  0 < z[0] && sqrt(pow(z[1],2) + pow(z[2],2) ) > width/4.0)
-			return mu1;
-		      else
-			return mu2;
-		    };
-            
+      auto muTerm = [mu1,mu2,width] (const Domain& z) {
+                      if (z[0] < 0 && sqrt(pow(z[1],2) + pow(z[2],2) ) < width/4.0  ||  0 < z[0] && sqrt(pow(z[1],2) + pow(z[2],2) ) > width/4.0)
+                        return mu1;
+                      else
+                        return mu2;
+                    };
+
       return muTerm;
     }
-    else if (imp == "square_fiber"){
+    else if (imp == "square_fiber") {
       double mu1     = parameters.get<double>("mu1",10.0);
-      double beta = parameters.get<double>("beta",2.0); 
+      double beta = parameters.get<double>("beta",2.0);
       double mu2 = beta*mu1;
 
-      auto muTerm = [mu1,mu2,width] (const Domain& z) { 
-		      if (z[0] < 0 && std::max(abs(z[1]), abs(z[2]))  < width/4.0  ||  0 < z[0] && std::max(abs(z[1]), abs(z[2]))  > width/4.0) 
-			return mu1;
-		      else
-			return mu2;
-		    };
-            
+      auto muTerm = [mu1,mu2,width] (const Domain& z) {
+                      if (z[0] < 0 && std::max(abs(z[1]), abs(z[2]))  < width/4.0  ||  0 < z[0] && std::max(abs(z[1]), abs(z[2]))  > width/4.0)
+                        return mu1;
+                      else
+                        return mu2;
+                    };
+
       return muTerm;
     }
     else if (imp == "matrix_material_circles")   // Matrix material with prestrained Fiber inclusions (circular cross-section)
-      {
-	double mu1     = parameters.get<double>("mu1",10.0);
-	double beta    = parameters.get<double>("beta",2.0); 
-	double mu2     = beta*mu1;
-            
-	int nF    = parameters.get<int>("nF", 2);    //number of Fibers in each Layer
-	double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );   //default: half of the max-fiber-radius mrF = (width/(2.0*nF)) 
-            
-            
-            
-	assert( (2*rF)*nF <= width && (height/4)+rF <= height); //check that fibers are not bigger than Domain
-            
-	auto muTerm = [mu1,mu2,theta,nF,rF,height,width] (const Domain& x)                
-		      {              
-			//TODO if Domain == 1... if Domain == 2 ...
-			//                 double domainShift = 1.0/2.0;
-			// TEST
-			double domainShift = 0.0;
-			// shift x to domain [0,1]^3
-			FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
-			//                 std::cout << "matrixMaterial-MU is used" << std::endl;
-                
-			double output;
-                
-			// determine if point is in upper/lower Layer
-			if ( 0  <= s[2] && s[2] <= 1.0/2.0) // upper Layer
-			  {
-			    for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-			      {
-				if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))     // have to evenly space fibers... 
-				  {
-				    //                             std::cout << " i : " << i << std::endl;
-				    //                             printvector(std::cout, s, "s" , "--");
-				    // compute Fiber center
-				    FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
-				    //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
-				    //                             
-				    if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
-				      output = mu2;
-				    //                                 return mu2;                                                         //richtig so? Fiber hat tendenziell größeres mu? 
-				    else
-				      output = mu1;
-				    //                                 return mu1;
-				  }
-				else {}
-			      }
-			  }
-			else  // lower Layer
-			  {
-			    for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-			      {
-				if(-1.0/2.0 + (1.0/double(nF))*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))  
-				  {
-				    //                             std::cout << " i : " << i << std::endl;
-				    //                             printvector(std::cout, s, "s" , "--");
-				    // compute Fiber center
-				    FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0 };
-				    //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
-                            
-				    if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
-				      output = mu2;
-				    //                                 return mu2;                                                         //richtig so? Fiber hat tendenziell größeres mu? 
-				    else
-				      output = mu1;
-				    //                                 return mu1;
-				  }
-				else{}
-			      }
-
-			  }
-			return output;
-		      };
-	return muTerm;
-      }
+    {
+      double mu1     = parameters.get<double>("mu1",10.0);
+      double beta    = parameters.get<double>("beta",2.0);
+      double mu2     = beta*mu1;
+
+      int nF    = parameters.get<int>("nF", 2);      //number of Fibers in each Layer
+      double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );     //default: half of the max-fiber-radius mrF = (width/(2.0*nF))
+
+
+
+      assert( (2*rF)*nF <= width && (height/4)+rF <= height);   //check that fibers are not bigger than Domain
+
+      auto muTerm = [mu1,mu2,theta,nF,rF,height,width] (const Domain& x)
+                    {
+                      //TODO if Domain == 1... if Domain == 2 ...
+                      //                 double domainShift = 1.0/2.0;
+                      // TEST
+                      double domainShift = 0.0;
+                      // shift x to domain [0,1]^3
+                      FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
+                      //                 std::cout << "matrixMaterial-MU is used" << std::endl;
+
+                      double output;
+
+                      // determine if point is in upper/lower Layer
+                      if ( 0  <= s[2] && s[2] <= 1.0/2.0)   // upper Layer
+                      {
+                        for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                        {
+                          if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))           // have to evenly space fibers...
+                          {
+                            //                             std::cout << " i : " << i << std::endl;
+                            //                             printvector(std::cout, s, "s" , "--");
+                            // compute Fiber center
+                            FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
+                            //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
+                            //
+                            if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
+                              output = mu2;
+                            //                                 return mu2;                                                         //richtig so? Fiber hat tendenziell größeres mu?
+                            else
+                              output = mu1;
+                            //                                 return mu1;
+                          }
+                          else {}
+                        }
+                      }
+                      else    // lower Layer
+                      {
+                        for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                        {
+                          if(-1.0/2.0 + (1.0/double(nF))*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))
+                          {
+                            //                             std::cout << " i : " << i << std::endl;
+                            //                             printvector(std::cout, s, "s" , "--");
+                            // compute Fiber center
+                            FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0 };
+                            //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
+
+                            if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
+                              output = mu2;
+                            //                                 return mu2;                                                         //richtig so? Fiber hat tendenziell größeres mu?
+                            else
+                              output = mu1;
+                            //                                 return mu1;
+                          }
+                          else{}
+                        }
+
+                      }
+                      return output;
+                    };
+      return muTerm;
+    }
     else if (imp == "matrix_material_squares")    // Matrix material with prestrained Fiber inclusions (square-shaped cross-section)
-      {
-	double mu1     = parameters.get<double>("mu1",10.0);
-	double beta    = parameters.get<double>("beta",2.0); 
-	double mu2     = beta*mu1;
-            
-	int nF    = parameters.get<int>("nF", 2);    //number of Fibers in each Layer
-	double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );   //default: half of the max-fiber-radius mrF = (width/(2.0*nF)) 
-            
-            
-            
-	assert( (2*rF)*nF <= width && (height/4)+rF <= height); //check that fibers are not bigger than Domain
-            
-	auto muTerm = [mu1,mu2,theta,nF,rF,height,width] (const Domain& x)                
-		      {              
-			//TODO if Domain == 1... if Domain == 2 ...
-			//                 double domainShift = 1.0/2.0;
-			// TEST
-			double domainShift = 0.0;
-			// shift x to domain [0,1]^3
-			FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
-			//                 std::cout << "matrixMaterial-MU is used" << std::endl;
-			double output;
-                
-			// determine if point is in upper/lower Layer
-			if ( 0  <= s[2] && s[2] <= 1.0/2.0) // upper Layer
-			  {
-			    for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-			      {
-				if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))     // have to evenly space fibers... 
-				  {
-				    //                             std::cout << " i : " << i << std::endl;
-				    //                             printvector(std::cout, s, "s" , "--");
-				    // compute Fiber center
-				    FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
-				    //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
-				    //                             
-				    if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
-				      output = mu2;
-				    //                                 return mu2;                                                         //richtig so? Fiber hat tendenziell größeres mu? 
-				    else
-				      output = mu1;
-				    //                                 return mu1;
-				  }
-			      }
-			  }
-			else  // lower Layer
-			  {
-			    for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-			      {
-				if(-1.0/2.0 + (1.0/double(nF))*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))  
-				  {
-				    //                             std::cout << " i : " << i << std::endl;
-				    //                             printvector(std::cout, s, "s" , "--");
-				    // compute Fiber center
-				    FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0 };
-				    //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
-                            
-				    if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
-				      output = mu2;
-				    //                                 return mu2;                                                         //richtig so? Fiber hat tendenziell größeres mu? 
-				    else
-				      output = mu1;
-				    //                                 return mu1;
-				  }
-			      }
-			  }
-			return output;
-		      };
-	return muTerm;
-      }
-    else if (imp == "bilayer"){	
+    {
       double mu1     = parameters.get<double>("mu1",10.0);
-      double beta = parameters.get<double>("beta",2.0); 
+      double beta    = parameters.get<double>("beta",2.0);
+      double mu2     = beta*mu1;
+
+      int nF    = parameters.get<int>("nF", 2);      //number of Fibers in each Layer
+      double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );     //default: half of the max-fiber-radius mrF = (width/(2.0*nF))
+
+
+
+      assert( (2*rF)*nF <= width && (height/4)+rF <= height);   //check that fibers are not bigger than Domain
+
+      auto muTerm = [mu1,mu2,theta,nF,rF,height,width] (const Domain& x)
+                    {
+                      //TODO if Domain == 1... if Domain == 2 ...
+                      //                 double domainShift = 1.0/2.0;
+                      // TEST
+                      double domainShift = 0.0;
+                      // shift x to domain [0,1]^3
+                      FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
+                      //                 std::cout << "matrixMaterial-MU is used" << std::endl;
+                      double output;
+
+                      // determine if point is in upper/lower Layer
+                      if ( 0  <= s[2] && s[2] <= 1.0/2.0)   // upper Layer
+                      {
+                        for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                        {
+                          if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))           // have to evenly space fibers...
+                          {
+                            //                             std::cout << " i : " << i << std::endl;
+                            //                             printvector(std::cout, s, "s" , "--");
+                            // compute Fiber center
+                            FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
+                            //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
+                            //
+                            if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
+                              output = mu2;
+                            //                                 return mu2;                                                         //richtig so? Fiber hat tendenziell größeres mu?
+                            else
+                              output = mu1;
+                            //                                 return mu1;
+                          }
+                        }
+                      }
+                      else    // lower Layer
+                      {
+                        for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                        {
+                          if(-1.0/2.0 + (1.0/double(nF))*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))
+                          {
+                            //                             std::cout << " i : " << i << std::endl;
+                            //                             printvector(std::cout, s, "s" , "--");
+                            // compute Fiber center
+                            FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0 };
+                            //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
+
+                            if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
+                              output = mu2;
+                            //                                 return mu2;                                                         //richtig so? Fiber hat tendenziell größeres mu?
+                            else
+                              output = mu1;
+                            //                                 return mu1;
+                          }
+                        }
+                      }
+                      return output;
+                    };
+      return muTerm;
+    }
+    else if (imp == "bilayer") {
+      double mu1     = parameters.get<double>("mu1",10.0);
+      double beta = parameters.get<double>("beta",2.0);
       double mu2 = beta*mu1;
-		    
+
       auto muTerm = [mu1, mu2, phi] (const Domain& z) {
-		      if (isInRotatedPlane(phi, z[dim-2], z[dim-1]))
-		        return mu1;
-		      else
-		        return mu2; 
-		    };
-		    
+                      if (isInRotatedPlane(phi, z[dim-2], z[dim-1]))
+                        return mu1;
+                      else
+                        return mu2;
+                    };
+
       return muTerm;
     }
-		
 
 
-    else if (imp == "helix_poisson"){                                         // interessant!
+
+    else if (imp == "helix_poisson") {                                         // interessant!
       double mu1     = parameters.get<double>("mu1",10.0);
-      double beta    = parameters.get<double>("beta",2.0); 
+      double beta    = parameters.get<double>("beta",2.0);
       double mu2     = beta*mu1;
 
       double r  = parameters.get<double>("radius");
       double r2 = parameters.get<double>("radius_helix");
 
       auto muTerm = [mu1, mu2, r, r2] (const Domain& z) {
-		      std::array<double,2> h = {r*cos(2*M_PI*z[0]), r*sin(2*M_PI*z[0])};
-		      if ( sqrt(pow(z[1]-h[0],2)+pow(z[2]-h[1],2)) < r2 )                   // distance to the helix?
-			return mu1;
-		      else
-			return mu2; 
-		    };
-		    
+                      std::array<double,2> h = {r*cos(2*M_PI*z[0]), r*sin(2*M_PI*z[0])};
+                      if ( sqrt(pow(z[1]-h[0],2)+pow(z[2]-h[1],2)) < r2 )                   // distance to the helix?
+                        return mu1;
+                      else
+                        return mu2;
+                    };
+
       return muTerm;
     }
 
-    else if (imp == "chess_poisson"){
+    else if (imp == "chess_poisson") {
       double mu1     = parameters.get<double>("mu1",10.0);
-      double beta    = parameters.get<double>("beta",2.0); 
+      double beta    = parameters.get<double>("beta",2.0);
       double mu2     = beta*mu1;
 
       auto muTerm = [mu1, mu2, phi] (const Domain& z) {
-		      if ( (isInRotatedPlane(phi, 	   z[dim-2], z[dim-1]) and isInRotatedPlane(phi + M_PI/2  , z[dim-2], z[dim-1])) or 
-			   (isInRotatedPlane(phi + M_PI, z[dim-2], z[dim-1]) and isInRotatedPlane(phi + 3*M_PI/2, z[dim-2], z[dim-1])) )
-			return mu1;
-		      else
-			return mu2; 
-		    };
-		    
+                      if ( (isInRotatedPlane(phi,          z[dim-2], z[dim-1]) and isInRotatedPlane(phi + M_PI/2  , z[dim-2], z[dim-1])) or
+                           (isInRotatedPlane(phi + M_PI, z[dim-2], z[dim-1]) and isInRotatedPlane(phi + 3*M_PI/2, z[dim-2], z[dim-1])) )
+                        return mu1;
+                      else
+                        return mu2;
+                    };
+
       return muTerm;
     }
 
-    // 		else if (imp == "3Dchess_poisson"){
-    // 		    double E1                = parameters.get<double>("E1", 17e6); //Faser
-    // 		    double nu1               = parameters.get<double>("nu1", 0.3);
-    // 		    double mu1 = lameMu(E1, nu1);
-    // 
-    // 		    double E2                = parameters.get<double>("E2", 17e6); //Polymer, weicher, Querkontraktion groß
-    // 		    double nu2               = parameters.get<double>("nu2", 0.5); 
-    // 		    double mu2 = lameMu(E2, nu2);
-    // 
-    // 		    auto muTerm = [mu1, mu2, phi] (const Domain& z) {
-    // 		    	if (z[0]<0.5)
-    // 		      		if ( (isInRotatedPlane(phi, 	   z[1], z[2]) and isInRotatedPlane(phi + M_PI/2  , z[1], z[2])) or 
-    // 		      			 (isInRotatedPlane(phi + M_PI, z[1], z[2]) and isInRotatedPlane(phi + 3*M_PI/2, z[1], z[2])) )
-    // 		        		return mu1;
-    // 		      		else
-    // 		        		return mu2; 
-    // 		        else
-    // 		        	if ( (isInRotatedPlane(phi,  	   z[1], z[2]) and isInRotatedPlane(phi + M_PI/2  , z[1], z[2])) or 
-    // 		      			 (isInRotatedPlane(phi + M_PI, z[1], z[2]) and isInRotatedPlane(phi + 3*M_PI/2, z[1], z[2])) )
-    // 		        		return mu2;
-    // 		      		else
-    // 		        		return mu1; 
-    // 		    };
-    // 		    
-    // 			return muTerm;
-    // 		}
-    // 		else if (imp == "vertical_bilayer_poisson"){ 
-    //     		double E1                = parameters.get<double>("E1", 17e6); //material1
-    // 		    double nu1               = parameters.get<double>("nu1", 0.3);
-    // 		    double mu1 = lameMu(E1, nu1);
-    // 		    double E2                = parameters.get<double>("E2", 17e6); //material2
-    // 		    double nu2               = parameters.get<double>("nu2", 0.5); 
-    // 		    double mu2 = lameMu(E2, nu2);
-    // 
-    // 		    auto muTerm = [mu1, mu2, phi] (const Domain& z) {
-    // 		      if ( isInRotatedPlane(phi+M_PI/2.0, z[dim-2], z[dim-1]) )//x3
-    // 		        return mu1;
-    // 		      else
-    // 		        return mu2; };
-    // 		    
-    // 			return muTerm;
-    // 		}
-    // 
-    // 		else if (imp == "microstructured_bilayer_poisson"){ 
-    //     		double E1                = parameters.get<double>("E1", 17e6); //material1
-    // 		    double nu1               = parameters.get<double>("nu1", 0.3);
-    // 		    double mu1 = lameMu(E1, nu1);
-    // 		    double E2                = parameters.get<double>("E2", 17e6); //material2
-    // 		    double nu2               = parameters.get<double>("nu2", 0.5); 
-    // 		    double mu2 = lameMu(E2, nu2);
-    // 
-    // 		    auto muTerm = [mu1, mu2, phi] (const Domain& z) {
-    // 		      if ( isInRotatedPlane(phi, z[0]-0.5, z[1]) )                 //TODO understand this
-    // 		        return mu1;
-    // 		      else
-    // 		        return mu2; };
-    // 		    
-    // 			return muTerm;
-    // 		}
-    // 
-    // 		else { //(imp == "bilayer_poisson")
-    //     		double E1                = parameters.get<double>("E1", 17e6); //material1
-    // 		    double nu1               = parameters.get<double>("nu1", 0.3);
-    // 		    double mu1 = lameMu(E1, nu1);
-    // 		    double E2                = parameters.get<double>("E2", 17e6); //material2
-    // 		    double nu2               = parameters.get<double>("nu2", 0.5); 
-    // 		    double mu2 = lameMu(E2, nu2);
-    // 
-    // 		    auto muTerm = [mu1, mu2, phi] (const Domain& z) {
-    // 		      if ( isInRotatedPlane(phi, z[dim-2], z[dim-1]) ) //x2
-    // 		        return mu1;
-    // 		      else
-    // 		        return mu2; };
-    // 		    
-    // 			return muTerm;
-    // 		}
+    //          else if (imp == "3Dchess_poisson"){
+    //              double E1                = parameters.get<double>("E1", 17e6); //Faser
+    //              double nu1               = parameters.get<double>("nu1", 0.3);
+    //              double mu1 = lameMu(E1, nu1);
+    //
+    //              double E2                = parameters.get<double>("E2", 17e6); //Polymer, weicher, Querkontraktion groß
+    //              double nu2               = parameters.get<double>("nu2", 0.5);
+    //              double mu2 = lameMu(E2, nu2);
+    //
+    //              auto muTerm = [mu1, mu2, phi] (const Domain& z) {
+    //                  if (z[0]<0.5)
+    //                          if ( (isInRotatedPlane(phi,        z[1], z[2]) and isInRotatedPlane(phi + M_PI/2  , z[1], z[2])) or
+    //                                   (isInRotatedPlane(phi + M_PI, z[1], z[2]) and isInRotatedPlane(phi + 3*M_PI/2, z[1], z[2])) )
+    //                                  return mu1;
+    //                          else
+    //                                  return mu2;
+    //                  else
+    //                          if ( (isInRotatedPlane(phi,        z[1], z[2]) and isInRotatedPlane(phi + M_PI/2  , z[1], z[2])) or
+    //                                   (isInRotatedPlane(phi + M_PI, z[1], z[2]) and isInRotatedPlane(phi + 3*M_PI/2, z[1], z[2])) )
+    //                                  return mu2;
+    //                          else
+    //                                  return mu1;
+    //              };
+    //
+    //                  return muTerm;
+    //          }
+    //          else if (imp == "vertical_bilayer_poisson"){
+    //                  double E1                = parameters.get<double>("E1", 17e6); //material1
+    //              double nu1               = parameters.get<double>("nu1", 0.3);
+    //              double mu1 = lameMu(E1, nu1);
+    //              double E2                = parameters.get<double>("E2", 17e6); //material2
+    //              double nu2               = parameters.get<double>("nu2", 0.5);
+    //              double mu2 = lameMu(E2, nu2);
+    //
+    //              auto muTerm = [mu1, mu2, phi] (const Domain& z) {
+    //                if ( isInRotatedPlane(phi+M_PI/2.0, z[dim-2], z[dim-1]) )//x3
+    //                  return mu1;
+    //                else
+    //                  return mu2; };
+    //
+    //                  return muTerm;
+    //          }
+    //
+    //          else if (imp == "microstructured_bilayer_poisson"){
+    //                  double E1                = parameters.get<double>("E1", 17e6); //material1
+    //              double nu1               = parameters.get<double>("nu1", 0.3);
+    //              double mu1 = lameMu(E1, nu1);
+    //              double E2                = parameters.get<double>("E2", 17e6); //material2
+    //              double nu2               = parameters.get<double>("nu2", 0.5);
+    //              double mu2 = lameMu(E2, nu2);
+    //
+    //              auto muTerm = [mu1, mu2, phi] (const Domain& z) {
+    //                if ( isInRotatedPlane(phi, z[0]-0.5, z[1]) )                 //TODO understand this
+    //                  return mu1;
+    //                else
+    //                  return mu2; };
+    //
+    //                  return muTerm;
+    //          }
+    //
+    //          else { //(imp == "bilayer_poisson")
+    //                  double E1                = parameters.get<double>("E1", 17e6); //material1
+    //              double nu1               = parameters.get<double>("nu1", 0.3);
+    //              double mu1 = lameMu(E1, nu1);
+    //              double E2                = parameters.get<double>("E2", 17e6); //material2
+    //              double nu2               = parameters.get<double>("nu2", 0.5);
+    //              double mu2 = lameMu(E2, nu2);
+    //
+    //              auto muTerm = [mu1, mu2, phi] (const Domain& z) {
+    //                if ( isInRotatedPlane(phi, z[dim-2], z[dim-1]) ) //x2
+    //                  return mu1;
+    //                else
+    //                  return mu2; };
+    //
+    //                  return muTerm;
+    //          }
   }
 
   FuncScalar getLambda(ParameterTree parameters)
@@ -483,441 +483,442 @@ public:
     //std::string imp =  imps[i_imp];
     double phi = M_PI*parameters.get<double>("material_angle", 0.0)/180;
     double theta = parameters.get<double>("theta",1.0/4.0);                        //TODO alle parameter hier laden?
-        
+
     double width = parameters.get<double>("width", 1.0);
     double height = parameters.get<double>("height", 1.0);
 
-    if (imp == "homogeneous"){    
+    if (imp == "homogeneous") {
       double lambda1 = parameters.get<double>("lambda1",0.0);
 
       auto lambdaTerm = [lambda1] (const Domain& z) {return lambda1;};
-		    
+
       return lambdaTerm;
     }
-    if (imp == "material_neukamm"){    
-//       std::array<double,2> lambda = parameters.get<std::array<double,2>>("lambda", {1.0,3.0});
-    //   std::array<double,3> lambda = parameters.get<std::array<double,3>>("lambda", {1.0,3.0,2.0});
-	  std::array<double,3> lambda = parameters.get<std::array<double,3>>("lambda", {80.0, 80.0, 25.0});
-	  
+    if (imp == "material_neukamm") {
+      //       std::array<double,2> lambda = parameters.get<std::array<double,2>>("lambda", {1.0,3.0});
+      //   std::array<double,3> lambda = parameters.get<std::array<double,3>>("lambda", {1.0,3.0,2.0});
+      std::array<double,3> lambda = parameters.get<std::array<double,3> >("lambda", {80.0, 80.0, 25.0});
+
 
       Python::Module module = Python::import("material_neukamm");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-      auto lambdaTerm = [lambda,indicatorFunction] (const Domain& z) 
-			{
-			  //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-			  if (indicatorFunction(z) == 1) 
-			    return lambda[0];
-			  else if (indicatorFunction(z) == 2) 
-			    return lambda[1];
-              else
-                return lambda[2];
-			};
+      auto lambdaTerm = [lambda,indicatorFunction] (const Domain& z)
+                        {
+                          //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                          if (indicatorFunction(z) == 1)
+                            return lambda[0];
+                          else if (indicatorFunction(z) == 2)
+                            return lambda[1];
+                          else
+                            return lambda[2];
+                        };
       return lambdaTerm;
     }
-    if (imp == "two_phase_material_1"){    
-      std::array<double,2> lambda = parameters.get<std::array<double,2>>("lambda", {1.0,3.0});
+    if (imp == "two_phase_material_1") {
+      std::array<double,2> lambda = parameters.get<std::array<double,2> >("lambda", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("two_phase_material_1");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-      auto lambdaTerm = [lambda,indicatorFunction] (const Domain& z) 
-			{
-			  //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-			  if (indicatorFunction(z) == 1) 
-			    return lambda[0];
-			  else 
-			    return lambda[1];
-			};
+      auto lambdaTerm = [lambda,indicatorFunction] (const Domain& z)
+                        {
+                          //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                          if (indicatorFunction(z) == 1)
+                            return lambda[0];
+                          else
+                            return lambda[1];
+                        };
       return lambdaTerm;
     }
-    if (imp == "two_phase_material_2"){    
-      std::array<double,2> lambda = parameters.get<std::array<double,2>>("lambda", {1.0,3.0});
+    if (imp == "two_phase_material_2") {
+      std::array<double,2> lambda = parameters.get<std::array<double,2> >("lambda", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("two_phase_material_2");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-      auto lambdaTerm = [lambda,indicatorFunction] (const Domain& z) 
-			{
-			  //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-			  if (indicatorFunction(z) == 1) 
-			    return lambda[0];
-			  else 
-			    return lambda[1];
-			};
+      auto lambdaTerm = [lambda,indicatorFunction] (const Domain& z)
+                        {
+                          //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                          if (indicatorFunction(z) == 1)
+                            return lambda[0];
+                          else
+                            return lambda[1];
+                        };
       return lambdaTerm;
     }
-    if (imp == "two_phase_material_3"){    
-      std::array<double,2> lambda = parameters.get<std::array<double,2>>("lambda", {1.0,3.0});
+    if (imp == "two_phase_material_3") {
+      std::array<double,2> lambda = parameters.get<std::array<double,2> >("lambda", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("two_phase_material_3");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-      auto lambdaTerm = [lambda,indicatorFunction] (const Domain& z) 
-			{
-			  //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-			  if (indicatorFunction(z) == 1) 
-			    return lambda[0];
-			  else 
-			    return lambda[1];
-			};
+      auto lambdaTerm = [lambda,indicatorFunction] (const Domain& z)
+                        {
+                          //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                          if (indicatorFunction(z) == 1)
+                            return lambda[0];
+                          else
+                            return lambda[1];
+                        };
       return lambdaTerm;
     }
     else if (imp == "isotropic_bilayer")
-      {
-	double lambda1 = parameters.get<double>("lambda1",0.0);
-	double beta = parameters.get<double>("beta",2.0); 
-	double lambda2 = beta*lambda1;
-    
-	auto lambdaTerm = [lambda1,lambda2, theta] (const Domain& z) {
-			    if (z[2]>0)                                                   
-			      return lambda1;
-			    else
-			      return lambda2;
-			  };
-	return lambdaTerm;
-      }
-
-    else if (imp == "analytical_Example"){
+    {
       double lambda1 = parameters.get<double>("lambda1",0.0);
-      double beta = parameters.get<double>("beta",2.0); 
+      double beta = parameters.get<double>("beta",2.0);
       double lambda2 = beta*lambda1;
-    
+
       auto lambdaTerm = [lambda1,lambda2, theta] (const Domain& z) {
-                
-			  //                  std::cout << "Analytical-LAMBDA is used" << std::endl;  //TEST
-			  if (abs(z[0]) >= (theta/2.0))
-			    return lambda1;
-			  else
-			    return lambda2;
-			}; 
+                          if (z[2]>0)
+                            return lambda1;
+                          else
+                            return lambda2;
+                        };
       return lambdaTerm;
     }
-    else if (imp == "parametrized_Laminate"){
+
+    else if (imp == "analytical_Example") {
       double lambda1 = parameters.get<double>("lambda1",0.0);
-      double beta = parameters.get<double>("beta",2.0); 
+      double beta = parameters.get<double>("beta",2.0);
       double lambda2 = beta*lambda1;
-    
+
       auto lambdaTerm = [lambda1,lambda2, theta] (const Domain& z) {
-                
-			  //             std::cout << "Analytical-LAMBDA is used" << std::endl;  //TEST
-			  //             std::cout << "Lambda1:" << lambda1  << std::endl;
-			  //                     if (abs(z[0]) > (theta/2.0))
-			  if (abs(z[0]) > (theta/2.0))
-			    return lambda1;
-			  else
-			    return lambda2;
-			}; 
+
+                          //                  std::cout << "Analytical-LAMBDA is used" << std::endl;  //TEST
+                          if (abs(z[0]) >= (theta/2.0))
+                            return lambda1;
+                          else
+                            return lambda2;
+                        };
       return lambdaTerm;
     }
-    else if (imp == "circle_fiber"){
+    else if (imp == "parametrized_Laminate") {
       double lambda1 = parameters.get<double>("lambda1",0.0);
-      double beta = parameters.get<double>("beta",2.0); 
+      double beta = parameters.get<double>("beta",2.0);
+      double lambda2 = beta*lambda1;
+
+      auto lambdaTerm = [lambda1,lambda2, theta] (const Domain& z) {
+
+                          //             std::cout << "Analytical-LAMBDA is used" << std::endl;  //TEST
+                          //             std::cout << "Lambda1:" << lambda1  << std::endl;
+                          //                     if (abs(z[0]) > (theta/2.0))
+                          if (abs(z[0]) > (theta/2.0))
+                            return lambda1;
+                          else
+                            return lambda2;
+                        };
+      return lambdaTerm;
+    }
+    else if (imp == "circle_fiber") {
+      double lambda1 = parameters.get<double>("lambda1",0.0);
+      double beta = parameters.get<double>("beta",2.0);
       double lambda2 = beta*lambda1;
 
       auto lambdaTerm = [lambda1,lambda2,width] (const Domain& z) // Prestrain inducing twist (bisher nur extension)
-			{ 
-			  if (z[0] < 0 && sqrt(pow(z[1],2) + pow(z[2],2) ) < width/4.0  ||  0 < z[0] && sqrt(pow(z[1],2) + pow(z[2],2) ) > width/4.0)
-			    return lambda1;
-			  else
-			    return lambda2;
-			};
-            
+                        {
+                          if (z[0] < 0 && sqrt(pow(z[1],2) + pow(z[2],2) ) < width/4.0  ||  0 < z[0] && sqrt(pow(z[1],2) + pow(z[2],2) ) > width/4.0)
+                            return lambda1;
+                          else
+                            return lambda2;
+                        };
+
       return lambdaTerm;
     }
-    else if (imp == "square_fiber"){
+    else if (imp == "square_fiber") {
       double lambda1 = parameters.get<double>("lambda1",0.0);
-      double beta = parameters.get<double>("beta",2.0); 
+      double beta = parameters.get<double>("beta",2.0);
       double lambda2 = beta*lambda1;
 
       auto lambdaTerm = [lambda1,lambda2,width] (const Domain& z) // Prestrain inducing twist (bisher nur extension)
-			{ 
-			  if (z[0] < 0 && std::max(abs(z[1]), abs(z[2]))  < width/4.0  ||  0 < z[0] && std::max(abs(z[1]), abs(z[2]))  > width/4.0) 
-			    return lambda1;
-			  else
-			    return lambda2;
-			};
-            
+                        {
+                          if (z[0] < 0 && std::max(abs(z[1]), abs(z[2]))  < width/4.0  ||  0 < z[0] && std::max(abs(z[1]), abs(z[2]))  > width/4.0)
+                            return lambda1;
+                          else
+                            return lambda2;
+                        };
+
       return lambdaTerm;
     }
     else if (imp == "matrix_material_circles")   // Matrix material with prestrained Fiber inclusions (circular cross-section)
-      {
-	double lambda1 = parameters.get<double>("lambda1",0.0);
-	double beta = parameters.get<double>("beta",2.0); 
-	double lambda2 = beta*lambda1;
-            
-	int nF    = parameters.get<int>("nF", 2);    //number of Fibers in each Layer
-	double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );   //default: half of the max-fiber-radius mrF = (width/(2.0*nF)) 
-            
-            
-
-	assert( (2*rF)*nF <= width && (height/4)+rF <= height); //check that fibers are not bigger than Domain
-            
-	auto lambdaTerm = [lambda1,lambda2, theta,nF,rF,height,width] (const Domain& x)               
-			  {              
-			    //TODO if Domain == 1... if Domain == 2 ...
-			    //                 double domainShift = 1.0/2.0;
-			    // TEST
-			    double domainShift = 0.0;
-			    // shift x to domain [0,1]^3
-			    FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
-			    //                 std::cout << "matrixMaterial-MU is used" << std::endl;
-			    double output;
-                
-			    // determine if point is in upper/lower Layer
-			    if ( 0  <= s[2] && s[2] <= 1.0/2.0) // upper Layer
-			      {
-				for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-				  {
-				    if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))     // have to evenly space fibers... 
-				      {
-					//                             std::cout << " i : " << i << std::endl;
-					//                             printvector(std::cout, s, "s" , "--");
-					// compute Fiber center
-					FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
-					//                             printvector(std::cout, Fcenter, "Fcenter" , "--");
-					//                             
-					if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
-					  output = lambda2;
-					//                                 return lambda2;                                                         //richtig so? Fiber hat tendenziell größeres mu? 
-					else
-					  output = lambda1;
-					//                                 return lambda1;
-				      }
-				  }
-			      }
-			    else  // lower Layer
-			      {
-				for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-				  {
-				    if(-1.0/2.0 + (1.0/double(nF))*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))  
-				      {
-					//                             std::cout << " i : " << i << std::endl;
-					//                             printvector(std::cout, s, "s" , "--");
-					// compute Fiber center
-					FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0 };
-					//                             printvector(std::cout, Fcenter, "Fcenter" , "--");
-                            
-					if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
-					  output = lambda2;
-					//                                 return lambda2;                                                         //richtig so? Fiber hat tendenziell größeres mu? 
-					else
-					  output = lambda1;
-					//                                 return lambda1;
-				      }
-				  }
-
-			      }
-			    return output;
-			  };
-	return lambdaTerm;
-      }
+    {
+      double lambda1 = parameters.get<double>("lambda1",0.0);
+      double beta = parameters.get<double>("beta",2.0);
+      double lambda2 = beta*lambda1;
+
+      int nF    = parameters.get<int>("nF", 2);      //number of Fibers in each Layer
+      double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );     //default: half of the max-fiber-radius mrF = (width/(2.0*nF))
+
+
+
+      assert( (2*rF)*nF <= width && (height/4)+rF <= height);   //check that fibers are not bigger than Domain
+
+      auto lambdaTerm = [lambda1,lambda2, theta,nF,rF,height,width] (const Domain& x)
+                        {
+                          //TODO if Domain == 1... if Domain == 2 ...
+                          //                 double domainShift = 1.0/2.0;
+                          // TEST
+                          double domainShift = 0.0;
+                          // shift x to domain [0,1]^3
+                          FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
+                          //                 std::cout << "matrixMaterial-MU is used" << std::endl;
+                          double output;
+
+                          // determine if point is in upper/lower Layer
+                          if ( 0  <= s[2] && s[2] <= 1.0/2.0)   // upper Layer
+                          {
+                            for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                            {
+                              if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))           // have to evenly space fibers...
+                              {
+                                //                             std::cout << " i : " << i << std::endl;
+                                //                             printvector(std::cout, s, "s" , "--");
+                                // compute Fiber center
+                                FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
+                                //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
+                                //
+                                if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
+                                  output = lambda2;
+                                //                                 return lambda2;                                                         //richtig so? Fiber hat tendenziell größeres mu?
+                                else
+                                  output = lambda1;
+                                //                                 return lambda1;
+                              }
+                            }
+                          }
+                          else    // lower Layer
+                          {
+                            for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                            {
+                              if(-1.0/2.0 + (1.0/double(nF))*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))
+                              {
+                                //                             std::cout << " i : " << i << std::endl;
+                                //                             printvector(std::cout, s, "s" , "--");
+                                // compute Fiber center
+                                FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0 };
+                                //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
+
+                                if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
+                                  output = lambda2;
+                                //                                 return lambda2;                                                         //richtig so? Fiber hat tendenziell größeres mu?
+                                else
+                                  output = lambda1;
+                                //                                 return lambda1;
+                              }
+                            }
+
+                          }
+                          return output;
+                        };
+      return lambdaTerm;
+    }
     else if (imp == "matrix_material_squares")    // Matrix material with prestrained Fiber inclusions (square-shaped cross-section)
-      {
-	double lambda1 = parameters.get<double>("lambda1",0.0);
-	double beta = parameters.get<double>("beta",2.0); 
-	double lambda2 = beta*lambda1;
-            
-	int nF    = parameters.get<int>("nF", 2);    //number of Fibers in each Layer
-	double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );   //default: half of the max-fiber-radius mrF = (width/(2.0*nF)) 
-            
-	assert( (2*rF)*nF <= width && (height/4)+rF <= height); //check that fibers are not bigger than Domain
-            
-	auto lambdaTerm = [lambda1,lambda2, theta,nF,rF,height,width] (const Domain& x)                
-			  {              
-			    //TODO if Domain == 1... if Domain == 2 ...
-			    //                 double domainShift = 1.0/2.0;
-			    // TEST
-			    double domainShift = 0.0;
-			    // shift x to domain [0,1]^3
-			    FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
-			    //                 std::cout << "matrixMaterial-MU is used" << std::endl;
-			    double output;
-                
-			    // determine if point is in upper/lower Layer
-			    if ( 0  <= s[2] && s[2] <= 1.0/2.0) // upper Layer
-			      {
-				for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-				  {
-				    if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))     // have to evenly space fibers... 
-				      {
-					//                             std::cout << " i : " << i << std::endl;
-					//                             printvector(std::cout, s, "s" , "--");
-					// compute Fiber center
-					FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
-					//                             printvector(std::cout, Fcenter, "Fcenter" , "--");
-					//                             
-					if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
-					  output = lambda2;
-					//                                 return lambda2;                                                         //richtig so? Fiber hat tendenziell größeres mu? 
-					else
-					  output = lambda1;
-					//                                 return lambda1;
-				      }
-				  }
-			      }
-			    else  // lower Layer
-			      {
-				for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-				  {
-				    if(-1.0/2.0 + (1.0/double(nF))*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))  
-				      {
-					//                             std::cout << " i : " << i << std::endl;
-					//                             printvector(std::cout, s, "s" , "--");
-					// compute Fiber center
-					FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0 };
-					//                             printvector(std::cout, Fcenter, "Fcenter" , "--");
-                            
-					if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
-					  output = lambda2;
-					//                                 return lambda2;                                                         //richtig so? Fiber hat tendenziell größeres mu? 
-					else
-					  output = lambda1;
-					//                                 return lambda1;
-				      }
-				  }
-			      }
-			    return output;
-			  };
-	return lambdaTerm;
-      }
-    else if (imp == "bilayer_lame"){	
+    {
+      double lambda1 = parameters.get<double>("lambda1",0.0);
+      double beta = parameters.get<double>("beta",2.0);
+      double lambda2 = beta*lambda1;
+
+      int nF    = parameters.get<int>("nF", 2);      //number of Fibers in each Layer
+      double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );     //default: half of the max-fiber-radius mrF = (width/(2.0*nF))
+
+      assert( (2*rF)*nF <= width && (height/4)+rF <= height);   //check that fibers are not bigger than Domain
+
+      auto lambdaTerm = [lambda1,lambda2, theta,nF,rF,height,width] (const Domain& x)
+                        {
+                          //TODO if Domain == 1... if Domain == 2 ...
+                          //                 double domainShift = 1.0/2.0;
+                          // TEST
+                          double domainShift = 0.0;
+                          // shift x to domain [0,1]^3
+                          FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
+                          //                 std::cout << "matrixMaterial-MU is used" << std::endl;
+                          double output;
+
+                          // determine if point is in upper/lower Layer
+                          if ( 0  <= s[2] && s[2] <= 1.0/2.0)   // upper Layer
+                          {
+                            for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                            {
+                              if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))           // have to evenly space fibers...
+                              {
+                                //                             std::cout << " i : " << i << std::endl;
+                                //                             printvector(std::cout, s, "s" , "--");
+                                // compute Fiber center
+                                FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
+                                //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
+                                //
+                                if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
+                                  output = lambda2;
+                                //                                 return lambda2;                                                         //richtig so? Fiber hat tendenziell größeres mu?
+                                else
+                                  output = lambda1;
+                                //                                 return lambda1;
+                              }
+                            }
+                          }
+                          else    // lower Layer
+                          {
+                            for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                            {
+                              if(-1.0/2.0 + (1.0/double(nF))*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/double(nF))*(i+1))
+                              {
+                                //                             std::cout << " i : " << i << std::endl;
+                                //                             printvector(std::cout, s, "s" , "--");
+                                // compute Fiber center
+                                FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0 };
+                                //                             printvector(std::cout, Fcenter, "Fcenter" , "--");
+
+                                if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
+                                  output = lambda2;
+                                //                                 return lambda2;                                                         //richtig so? Fiber hat tendenziell größeres mu?
+                                else
+                                  output = lambda1;
+                                //                                 return lambda1;
+                              }
+                            }
+                          }
+                          return output;
+                        };
+      return lambdaTerm;
+    }
+    else if (imp == "bilayer_lame") {
       double lambda1     = parameters.get<double>("mu1",384.615);
-      double lambda2     = parameters.get<double>("mu2",384.615);  
-		    
+      double lambda2     = parameters.get<double>("mu2",384.615);
+
       auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
-			  if ( isInRotatedPlane(phi, z[dim-2], z[dim-1]) )
-			    return lambda1;
-			  else
-			    return lambda2; };
-		    
+                          if ( isInRotatedPlane(phi, z[dim-2], z[dim-1]) )
+                            return lambda1;
+                          else
+                            return lambda2;
+                        };
+
       return lambdaTerm;
     }
 
-    else if (imp == "helix_poisson"){
+    else if (imp == "helix_poisson") {
       double E1                = parameters.get<double>("E1", 17e6); //Faser
       double nu1               = parameters.get<double>("nu1", 0.3);
       double lambda1 = lameLambda(E1,nu1);
 
       double E2                = parameters.get<double>("E2", 17e6); //Polymer, weicher, Querkontraktion groß
-      double nu2               = parameters.get<double>("nu2", 0.5); 
+      double nu2               = parameters.get<double>("nu2", 0.5);
       double lambda2 = lameLambda(E2, nu2);
 
       double r = parameters.get<double>("radius");
       double r2 = parameters.get<double>("radius_helix");
 
       auto lambdaTerm = [lambda1, lambda2, r, r2] (const Domain& z) {
-			  std::array<double,2> h = {r*cos(2*M_PI*z[0]), r*sin(2*M_PI*z[0])};
-			  MatrixRT ret(0.0);
-			  if ( sqrt(pow(z[1]-h[0],2)+pow(z[2]-h[1],2)) < r2 )
-			    return lambda1;
-			  else
-			    return lambda2; 
-			};
-		    
+                          std::array<double,2> h = {r*cos(2*M_PI*z[0]), r*sin(2*M_PI*z[0])};
+                          MatrixRT ret(0.0);
+                          if ( sqrt(pow(z[1]-h[0],2)+pow(z[2]-h[1],2)) < r2 )
+                            return lambda1;
+                          else
+                            return lambda2;
+                        };
+
       return lambdaTerm;
     }
 
-    else if (imp == "chess_poisson"){
+    else if (imp == "chess_poisson") {
       double E1                = parameters.get<double>("E1", 17e6); //Faser
       double nu1               = parameters.get<double>("nu1", 0.3);
       double lambda1 = lameLambda(E1,nu1);
 
       double E2                = parameters.get<double>("E2", 17e6); //Polymer, weicher, Querkontraktion groß
-      double nu2               = parameters.get<double>("nu2", 0.5); 
+      double nu2               = parameters.get<double>("nu2", 0.5);
       double lambda2 = lameLambda(E2, nu2);
 
       auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
-			  if ( (isInRotatedPlane(phi, 	   z[dim-2], z[dim-1]) and isInRotatedPlane(phi + M_PI/2  , z[dim-2], z[dim-1])) or 
-			       (isInRotatedPlane(phi + M_PI, z[dim-2], z[dim-1]) and isInRotatedPlane(phi + 3*M_PI/2, z[dim-2], z[dim-1])) )
-			    return lambda1;
-			  else
-			    return lambda2; 
-			};
-		    
+                          if ( (isInRotatedPlane(phi,      z[dim-2], z[dim-1]) and isInRotatedPlane(phi + M_PI/2  , z[dim-2], z[dim-1])) or
+                               (isInRotatedPlane(phi + M_PI, z[dim-2], z[dim-1]) and isInRotatedPlane(phi + 3*M_PI/2, z[dim-2], z[dim-1])) )
+                            return lambda1;
+                          else
+                            return lambda2;
+                        };
+
       return lambdaTerm;
     }
 
-    // 		else if (imp == "3Dchess_poisson"){
-    // 		    double E1                = parameters.get<double>("E1", 17e6); //Faser
-    // 		    double nu1               = parameters.get<double>("nu1", 0.3);
-    // 		    double lambda1 = lameLambda(E1,nu1);
-    // 
-    // 		    double E2                = parameters.get<double>("E2", 17e6); //Polymer, weicher, Querkontraktion groß
-    // 		    double nu2               = parameters.get<double>("nu2", 0.5); 
-    // 		    double lambda2 = lameLambda(E2, nu2);
-    // 
-    // 		    auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
-    // 		    	if (z[0]<0.5)
-    // 		      		if ( (isInRotatedPlane(phi, 	   z[1], z[2]) and isInRotatedPlane(phi + M_PI/2  , z[1], z[2])) or 
-    // 		      			 (isInRotatedPlane(phi + M_PI, z[1], z[2]) and isInRotatedPlane(phi + 3*M_PI/2, z[1], z[2])) )
-    // 		        		return lambda1;
-    // 		      		else
-    // 		        		return lambda2; 
-    // 		        else
-    // 		        	if ( (isInRotatedPlane(phi,  	   z[1], z[2]) and isInRotatedPlane(phi + M_PI/2  , z[1], z[2])) or 
-    // 		      			 (isInRotatedPlane(phi + M_PI, z[1], z[2]) and isInRotatedPlane(phi + 3*M_PI/2, z[1], z[2])) )
-    // 		        		return lambda2;
-    // 		      		else
-    // 		        		return lambda1; 
-    // 		    };
-    // 		    
-    // 			return lambdaTerm;
-    // 		}
-    // 
-    // 		else if (imp == "vertical_bilayer_poisson"){ 
-    //     		double E1                = parameters.get<double>("E1", 17e6); //material1
-    // 		    double nu1               = parameters.get<double>("nu1", 0.3);
-    // 		    double lambda1 = lameLambda(E1,nu1);
-    // 		    double E2                = parameters.get<double>("E2", 17e6); //material2
-    // 		    double nu2               = parameters.get<double>("nu2", 0.5); 
-    // 		    double lambda2 = lameLambda(E2, nu2);
-    // 
-    // 		    auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
-    // 		      if ( isInRotatedPlane(phi+M_PI/2.0, z[dim-2], z[dim-1]) )
-    // 		        return lambda1;
-    // 		      else
-    // 		        return lambda2; };
-    // 		    
-    // 			return lambdaTerm;
-    // 		}
-    // 
-    // 		else if (imp == "microstructured_bilayer_poisson"){ 
-    //     		double E1                = parameters.get<double>("E1", 17e6); //material1
-    // 		    double nu1               = parameters.get<double>("nu1", 0.3);
-    // 		    double lambda1 = lameLambda(E1,nu1);
-    // 		    double E2                = parameters.get<double>("E2", 17e6); //material2
-    // 		    double nu2               = parameters.get<double>("nu2", 0.5); 
-    // 		    double lambda2 = lameLambda(E2, nu2);
-    // 
-    // 		    auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
-    // 		      if ( isInRotatedPlane(phi, z[0]-0.5, z[1]) )
-    // 		        return lambda1;
-    // 		      else
-    // 		        return lambda2; };
-    // 		    
-    // 			return lambdaTerm;
-    // 		}
-    // 
-    // 		else { //(imp == "bilayer_poisson")
-    //     		double E1                = parameters.get<double>("E1", 17e6); //material1
-    // 		    double nu1               = parameters.get<double>("nu1", 0.3);
-    // 		    double lambda1 = lameLambda(E1, nu1);
-    // 		    double E2                = parameters.get<double>("E2", 17e6); //material2
-    // 		    double nu2               = parameters.get<double>("nu2", 0.5); 
-    // 		    double lambda2 = lameLambda(E2, nu2);
-    // 
-    // 		    auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
-    // 		      if ( isInRotatedPlane(phi, z[dim-2], z[dim-1]) )
-    // 		        return lambda1;
-    // 		      else
-    // 		        return lambda2; };
-    // 		    
-    // 			return lambdaTerm;
-    // 		}
+    //          else if (imp == "3Dchess_poisson"){
+    //              double E1                = parameters.get<double>("E1", 17e6); //Faser
+    //              double nu1               = parameters.get<double>("nu1", 0.3);
+    //              double lambda1 = lameLambda(E1,nu1);
+    //
+    //              double E2                = parameters.get<double>("E2", 17e6); //Polymer, weicher, Querkontraktion groß
+    //              double nu2               = parameters.get<double>("nu2", 0.5);
+    //              double lambda2 = lameLambda(E2, nu2);
+    //
+    //              auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
+    //                  if (z[0]<0.5)
+    //                          if ( (isInRotatedPlane(phi,        z[1], z[2]) and isInRotatedPlane(phi + M_PI/2  , z[1], z[2])) or
+    //                                   (isInRotatedPlane(phi + M_PI, z[1], z[2]) and isInRotatedPlane(phi + 3*M_PI/2, z[1], z[2])) )
+    //                                  return lambda1;
+    //                          else
+    //                                  return lambda2;
+    //                  else
+    //                          if ( (isInRotatedPlane(phi,        z[1], z[2]) and isInRotatedPlane(phi + M_PI/2  , z[1], z[2])) or
+    //                                   (isInRotatedPlane(phi + M_PI, z[1], z[2]) and isInRotatedPlane(phi + 3*M_PI/2, z[1], z[2])) )
+    //                                  return lambda2;
+    //                          else
+    //                                  return lambda1;
+    //              };
+    //
+    //                  return lambdaTerm;
+    //          }
+    //
+    //          else if (imp == "vertical_bilayer_poisson"){
+    //                  double E1                = parameters.get<double>("E1", 17e6); //material1
+    //              double nu1               = parameters.get<double>("nu1", 0.3);
+    //              double lambda1 = lameLambda(E1,nu1);
+    //              double E2                = parameters.get<double>("E2", 17e6); //material2
+    //              double nu2               = parameters.get<double>("nu2", 0.5);
+    //              double lambda2 = lameLambda(E2, nu2);
+    //
+    //              auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
+    //                if ( isInRotatedPlane(phi+M_PI/2.0, z[dim-2], z[dim-1]) )
+    //                  return lambda1;
+    //                else
+    //                  return lambda2; };
+    //
+    //                  return lambdaTerm;
+    //          }
+    //
+    //          else if (imp == "microstructured_bilayer_poisson"){
+    //                  double E1                = parameters.get<double>("E1", 17e6); //material1
+    //              double nu1               = parameters.get<double>("nu1", 0.3);
+    //              double lambda1 = lameLambda(E1,nu1);
+    //              double E2                = parameters.get<double>("E2", 17e6); //material2
+    //              double nu2               = parameters.get<double>("nu2", 0.5);
+    //              double lambda2 = lameLambda(E2, nu2);
+    //
+    //              auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
+    //                if ( isInRotatedPlane(phi, z[0]-0.5, z[1]) )
+    //                  return lambda1;
+    //                else
+    //                  return lambda2; };
+    //
+    //                  return lambdaTerm;
+    //          }
+    //
+    //          else { //(imp == "bilayer_poisson")
+    //                  double E1                = parameters.get<double>("E1", 17e6); //material1
+    //              double nu1               = parameters.get<double>("nu1", 0.3);
+    //              double lambda1 = lameLambda(E1, nu1);
+    //              double E2                = parameters.get<double>("E2", 17e6); //material2
+    //              double nu2               = parameters.get<double>("nu2", 0.5);
+    //              double lambda2 = lameLambda(E2, nu2);
+    //
+    //              auto lambdaTerm = [lambda1, lambda2, phi] (const Domain& z) {
+    //                if ( isInRotatedPlane(phi, z[dim-2], z[dim-1]) )
+    //                  return lambda1;
+    //                else
+    //                  return lambda2; };
+    //
+    //                  return lambdaTerm;
+    //          }
   }
 
 
@@ -931,17 +932,17 @@ public:
 
 
 
-// TODO  add log here? 
+// TODO  add log here?
 
 
 template <int dim>
-class PrestrainImp 
+class PrestrainImp
 {
 
 public:
   //     static const int dim = 3;
   static const int dimWorld = 3;
-  using CellGridType = YaspGrid< dim, EquidistantOffsetCoordinates< double, dim>>;
+  using CellGridType = YaspGrid< dim, EquidistantOffsetCoordinates< double, dim> >;
   //     using GridView = CellGridType::LeafGridView;
   using Domain = typename CellGridType::LeafGridView::template Codim<0>::Geometry::GlobalCoordinate;
   //     using Domain = GridView::Codim<0>::Geometry::GlobalCoordinate;
@@ -952,335 +953,335 @@ public:
   using FuncMatrix = std::function< MatrixRT(const Domain&) >;
   using FuncVector = std::function< VectorRT(const Domain&) >;
 protected:
-  // 	double p1, p2, theta;
-  // 	double width; //Cell geometry
+  //    double p1, p2, theta;
+  //    double width; //Cell geometry
 
 
 public:
 
 
-    
+
   //     Func2Tensor getPrestrain(std::string imp)
   Func2Tensor getPrestrain(ParameterTree parameters)
   {
-        
+
     std::string imp = parameters.get<std::string>("material_prestrain_imp", "analytical_Example");
-        
+
     double width = parameters.get<double>("width", 1.0);
     double height = parameters.get<double>("height", 1.0);
-        
-    double theta = parameters.get<double>("theta",1.0/4.0); 
+
+    double theta = parameters.get<double>("theta",1.0/4.0);
     double p1 = parameters.get<double>("rho1", 1.0);
     double alpha = parameters.get<double>("alpha", 2.0);
     double p2 = alpha*p1;
-        
 
-        
-    if (imp == "homogeneous"){    
+
+
+    if (imp == "homogeneous") {
       Func2Tensor B = [p1] (const Domain& x)                 //  ISOTROPIC PRESSURE
-		      {             
-			return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-		      };
+                      {
+                        return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                      };
       std::cout <<" Prestrain Type: homogeneous" << std::endl;
       return B;
     }
-    else if (imp == "two_phase_material_1"){    
-      std::array<double,2> rho = parameters.get<std::array<double,2>>("rho", {1.0,3.0});
+    else if (imp == "two_phase_material_1") {
+      std::array<double,2> rho = parameters.get<std::array<double,2> >("rho", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("two_phase_material_1");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-    
-      Func2Tensor B = [rho,indicatorFunction] (const Domain& x) 
-		      {
-			//              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-			if (indicatorFunction(x) == 1) 
-			  return MatrixRT{{rho[0], 0.0 , 0.0}, {0.0, rho[0], 0.0}, {0.0, 0.0, rho[0]}};
-			else 
-			  return MatrixRT{{rho[1], 0.0 , 0.0}, {0.0, rho[1], 0.0}, {0.0, 0.0, rho[1]}};
-		      };
+
+      Func2Tensor B = [rho,indicatorFunction] (const Domain& x)
+                      {
+                        //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                        if (indicatorFunction(x) == 1)
+                          return MatrixRT{{rho[0], 0.0 , 0.0}, {0.0, rho[0], 0.0}, {0.0, 0.0, rho[0]}};
+                        else
+                          return MatrixRT{{rho[1], 0.0 , 0.0}, {0.0, rho[1], 0.0}, {0.0, 0.0, rho[1]}};
+                      };
       std::cout <<" Prestrain Type: two_phase_material_1" << std::endl;
       return B;
     }
-    else if (imp == "material_neukamm"){    
-//       std::array<double,2> rho = parameters.get<std::array<double,2>>("rho", {1.0,3.0});
+    else if (imp == "material_neukamm") {
+      //       std::array<double,2> rho = parameters.get<std::array<double,2>>("rho", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("material_neukamm");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
-      
+
       auto B1 = Python::make_function<MatrixRT>(module.get("b1"));
       auto B2 = Python::make_function<MatrixRT>(module.get("b2"));
       auto B3 = Python::make_function<MatrixRT>(module.get("b3"));
-      
-//       Func2Tensor B = [rho,indicatorFunction] (const Domain& x) 
-      Func2Tensor B = [indicatorFunction,B1,B2,B3] (const Domain& x) 
-		      {
-			//              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-			if (indicatorFunction(x) == 1) 
-            {
-// 			  return MatrixRT{{rho[0], 0.0 , 0.0}, {0.0, rho[0], 0.0}, {0.0, 0.0, rho[0]}};
-//               printmatrix(std::cout, B1(x), "Matrix B1(x)", "--");
-              return B1(x);
-            }
-			else if (indicatorFunction(x) == 2) 
-// 			  return MatrixRT{{rho[1], 0.0 , 0.0}, {0.0, rho[1], 0.0}, {0.0, 0.0, rho[1]}};
-              return B2(x);
-            else 
-              return B3(x);
-		      };
+
+      //       Func2Tensor B = [rho,indicatorFunction] (const Domain& x)
+      Func2Tensor B = [indicatorFunction,B1,B2,B3] (const Domain& x)
+                      {
+                        //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                        if (indicatorFunction(x) == 1)
+                        {
+                          //                      return MatrixRT{{rho[0], 0.0 , 0.0}, {0.0, rho[0], 0.0}, {0.0, 0.0, rho[0]}};
+                          //               printmatrix(std::cout, B1(x), "Matrix B1(x)", "--");
+                          return B1(x);
+                        }
+                        else if (indicatorFunction(x) == 2)
+                          //                      return MatrixRT{{rho[1], 0.0 , 0.0}, {0.0, rho[1], 0.0}, {0.0, 0.0, rho[1]}};
+                          return B2(x);
+                        else
+                          return B3(x);
+                      };
       std::cout <<" Prestrain Type: material_neukamm" << std::endl;
       return B;
     }
-    else if (imp == "two_phase_material_2"){    
-      std::array<double,2> rho = parameters.get<std::array<double,2>>("rho", {1.0,3.0});
+    else if (imp == "two_phase_material_2") {
+      std::array<double,2> rho = parameters.get<std::array<double,2> >("rho", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("two_phase_material_2");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-    
-      Func2Tensor B = [rho,indicatorFunction] (const Domain& x) 
-		      {
-			//              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-			if (indicatorFunction(x) == 1) 
-			  return MatrixRT{{rho[0], 0.0 , 0.0}, {0.0, rho[0], 0.0}, {0.0, 0.0, rho[0]}};
-			else 
-			  return MatrixRT{{rho[1], 0.0 , 0.0}, {0.0, rho[1], 0.0}, {0.0, 0.0, rho[1]}};
-		      };
+
+      Func2Tensor B = [rho,indicatorFunction] (const Domain& x)
+                      {
+                        //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                        if (indicatorFunction(x) == 1)
+                          return MatrixRT{{rho[0], 0.0 , 0.0}, {0.0, rho[0], 0.0}, {0.0, 0.0, rho[0]}};
+                        else
+                          return MatrixRT{{rho[1], 0.0 , 0.0}, {0.0, rho[1], 0.0}, {0.0, 0.0, rho[1]}};
+                      };
       std::cout <<" Prestrain Type: two_phase_material_2" << std::endl;
       return B;
     }
-    else if (imp == "two_phase_material_3"){    
-      std::array<double,2> rho = parameters.get<std::array<double,2>>("rho", {1.0,3.0});
+    else if (imp == "two_phase_material_3") {
+      std::array<double,2> rho = parameters.get<std::array<double,2> >("rho", {1.0,3.0});
 
       //             Python::Module module = Python::import(parameters.get<std::string>("two_phase_material_1"));
       Python::Module module = Python::import("two_phase_material_3");
       auto indicatorFunction = Python::make_function<double>(module.get("f"));
 
-    
-      Func2Tensor B = [rho,indicatorFunction] (const Domain& x) 
-		      {
-			//              std::cout << "Test:" << indicatorFunction(z) << std::endl;
-			if (indicatorFunction(x) == 1) 
-			  return MatrixRT{{rho[0], 0.0 , 0.0}, {0.0, rho[0], 0.0}, {0.0, 0.0, rho[0]}};
-			else 
-			  return MatrixRT{{rho[1], 0.0 , 0.0}, {0.0, rho[1], 0.0}, {0.0, 0.0, rho[1]}};
-		      };
+
+      Func2Tensor B = [rho,indicatorFunction] (const Domain& x)
+                      {
+                        //              std::cout << "Test:" << indicatorFunction(z) << std::endl;
+                        if (indicatorFunction(x) == 1)
+                          return MatrixRT{{rho[0], 0.0 , 0.0}, {0.0, rho[0], 0.0}, {0.0, 0.0, rho[0]}};
+                        else
+                          return MatrixRT{{rho[1], 0.0 , 0.0}, {0.0, rho[1], 0.0}, {0.0, 0.0, rho[1]}};
+                      };
       std::cout <<" Prestrain Type: two_phase_material_3" << std::endl;
       return B;
     }
     else if (imp == "isotropic_bilayer")
-      {
-	Func2Tensor B = [p1,p2,theta] (const Domain& x)                 //  ISOTROPIC PRESSURE
-			{             
-			  if (x[2] > 0)
-			    return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-			  else if (x[2] < 0)
-			    return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
-			  else
-			    return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-
-			};
-	std::cout <<" Prestrain Type: isotropic_bilayer " << std::endl;
-	return B;
-      }
-        
+    {
+      Func2Tensor B = [p1,p2,theta] (const Domain& x)                   //  ISOTROPIC PRESSURE
+                      {
+                        if (x[2] > 0)
+                          return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                        else if (x[2] < 0)
+                          return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
+                        else
+                          return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+
+                      };
+      std::cout <<" Prestrain Type: isotropic_bilayer " << std::endl;
+      return B;
+    }
+
     else if (imp == "analytical_Example")
-      {
-	Func2Tensor B = [p1,theta] (const Domain& x)                // Bilayer with one rectangular Fiber & ISOTROPIC PRESSURE   
-			{              
-			  //                 if (abs(x[0]) < (theta/2) && x[2] < 0 )                             //does not make a difference
-			  if (abs(x[0]) < (theta/2) && x[2] < 0 && x[2] > -(1.0/2.0) )
-			    return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-			  else
-			    return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-			};
-	std::cout <<" Prestrain Type: analytical_Example "<< std::endl;
-	return B;
-      }
+    {
+      Func2Tensor B = [p1,theta] (const Domain& x)                  // Bilayer with one rectangular Fiber & ISOTROPIC PRESSURE
+                      {
+                        //                 if (abs(x[0]) < (theta/2) && x[2] < 0 )                             //does not make a difference
+                        if (abs(x[0]) < (theta/2) && x[2] < 0 && x[2] > -(1.0/2.0) )
+                          return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                        else
+                          return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                      };
+      std::cout <<" Prestrain Type: analytical_Example "<< std::endl;
+      return B;
+    }
     else if (imp == "parametrized_Laminate")
-      {
-	Func2Tensor B = [p1,p2,theta] (const Domain& x)           
-			{              
-			  if (abs(x[0]) < (theta/2) && x[2] < 0 )             
-			    return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
-			  else if (abs(x[0]) > (theta/2) && x[2] > 0 )    
-			    return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-			  else
-			    return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-			};
-	std::cout <<"Prestrain Type: parametrized_Laminate"<< std::endl;
-	return B;
-      }
-    else if (imp == "circle_fiber"){
-
-      Func2Tensor B = [p1,theta,width] (const Domain& x)                // Bilayer with one rectangular Fiber & ISOTROPIC PRESSURE   
-		      {  
-		      	if (x[0] < 0 && sqrt(pow(x[1],2) + pow(x[2],2) ) < width/4.0  ||  0 < x[0] && sqrt(pow(x[1],2) + pow(x[2],2) ) > width/4.0)
-			  return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-		      	else
-			  return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-		      };
+    {
+      Func2Tensor B = [p1,p2,theta] (const Domain& x)
+                      {
+                        if (abs(x[0]) < (theta/2) && x[2] < 0 )
+                          return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
+                        else if (abs(x[0]) > (theta/2) && x[2] > 0 )
+                          return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                        else
+                          return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                      };
+      std::cout <<"Prestrain Type: parametrized_Laminate"<< std::endl;
+      return B;
+    }
+    else if (imp == "circle_fiber") {
+
+      Func2Tensor B = [p1,theta,width] (const Domain& x)                // Bilayer with one rectangular Fiber & ISOTROPIC PRESSURE
+                      {
+                        if (x[0] < 0 && sqrt(pow(x[1],2) + pow(x[2],2) ) < width/4.0  ||  0 < x[0] && sqrt(pow(x[1],2) + pow(x[2],2) ) > width/4.0)
+                          return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                        else
+                          return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                      };
       std::cout <<" Prestrain Type: circle_fiber"<< std::endl;
       return B;
     }
-    else if (imp == "square_fiber"){
-            
-      Func2Tensor B = [p1,theta,width] (const Domain& x)                // Bilayer with one rectangular Fiber & ISOTROPIC PRESSURE   
-		      {  
-		      	if (x[0] < 0 && std::max(abs(x[1]), abs(x[2]))  < width/4.0  ||  0 < x[0] && std::max(abs(x[1]), abs(x[2]))  > width/4.0) 
-			  return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-		      	else
-			  return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-		      };
+    else if (imp == "square_fiber") {
+
+      Func2Tensor B = [p1,theta,width] (const Domain& x)                // Bilayer with one rectangular Fiber & ISOTROPIC PRESSURE
+                      {
+                        if (x[0] < 0 && std::max(abs(x[1]), abs(x[2]))  < width/4.0  ||  0 < x[0] && std::max(abs(x[1]), abs(x[2]))  > width/4.0)
+                          return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                        else
+                          return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                      };
       std::cout <<" Prestrain Type: square_fiber"<< std::endl;
       return B;
     }
     else if (imp == "matrix_material_circles")   // Matrix material with prestrained Fiber inclusions
-      {
-	int nF    = parameters.get<int>("nF", 3);    //number of Fibers in each Layer
-	double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );   //default: half of the max-fiber-radius mrF = (width/(2.0*nF)) 
-            
-	assert( (2*rF)*nF <= width && (height/4)+rF <= height); //check that fibers are not bigger than Domain
-            
-	Func2Tensor B = [p1,p2,theta,nF,rF,height,width] (const Domain& x)                
-			{              
-			  //TODO if Domain == 1... if Domain == 2 ...
-			  //                 double domainShift = 1.0/2.0;
-			  double domainShift = 0.0;
-			  // shift x to domain [0,1]^3
-			  FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
-                
-			  MatrixRT output;
-
-			  // determine if point is in upper/lower Layer
-			  if ((0.0 <= s[2] && s[2] <= 1.0/2.0)) // upperLayer
-			    {
-			      for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-				{
-				  if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/nF)*(i+1))  
-				    {
-				      // compute Fiber center
-				      FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
-				      //                             
-				      if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
-					output = MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-				      //                                 return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-				      else
-					output = MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-				      //                                 return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-				      //                                 return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
-				    }
-				}
-			    }
-			  else  // lower Layer
-			    {
-			      for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-				{
-				  if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/nF)*(i+1))  
-				    {
-				      // compute Fiber center
-				      FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0};
-    
-				      if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
-					output = MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-				      //                                 return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-				      else
-					output = MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-				      //                                 return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-				      //                                 return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
-				    }
-				}
-
-			    }
-			  return output;
-			};
-	std::cout <<" Prestrain Type: matrix_material"<< std::endl;
-	return B;
-      }
-        
+    {
+      int nF    = parameters.get<int>("nF", 3);      //number of Fibers in each Layer
+      double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );     //default: half of the max-fiber-radius mrF = (width/(2.0*nF))
+
+      assert( (2*rF)*nF <= width && (height/4)+rF <= height);   //check that fibers are not bigger than Domain
+
+      Func2Tensor B = [p1,p2,theta,nF,rF,height,width] (const Domain& x)
+                      {
+                        //TODO if Domain == 1... if Domain == 2 ...
+                        //                 double domainShift = 1.0/2.0;
+                        double domainShift = 0.0;
+                        // shift x to domain [0,1]^3
+                        FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
+
+                        MatrixRT output;
+
+                        // determine if point is in upper/lower Layer
+                        if ((0.0 <= s[2] && s[2] <= 1.0/2.0))   // upperLayer
+                        {
+                          for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                          {
+                            if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/nF)*(i+1))
+                            {
+                              // compute Fiber center
+                              FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
+                              //
+                              if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
+                                output = MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                              //                                 return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                              else
+                                output = MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                              //                                 return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                              //                                 return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
+                            }
+                          }
+                        }
+                        else    // lower Layer
+                        {
+                          for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                          {
+                            if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/nF)*(i+1))
+                            {
+                              // compute Fiber center
+                              FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0};
+
+                              if(sqrt(pow(s[0]-Fcenter[0],2)+pow(s[2]-Fcenter[1],2)) <= rF )
+                                output = MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                              //                                 return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                              else
+                                output = MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                              //                                 return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                              //                                 return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
+                            }
+                          }
+
+                        }
+                        return output;
+                      };
+      std::cout <<" Prestrain Type: matrix_material"<< std::endl;
+      return B;
+    }
+
     else if (imp == "matrix_material_squares")   // Matrix material with prestrained Fiber inclusions
-      {
-	int nF    = parameters.get<int>("nF", 3);    //number of Fibers in each Layer
-	double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );   //default: half of the max-fiber-radius mrF = (width/(2.0*nF)) 
-            
-	assert( (2*rF)*nF <= width && (height/4)+rF <= height); //check that fibers are not bigger than Domain
-            
-	Func2Tensor B = [p1,p2,theta,nF,rF,height,width] (const Domain& x)                
-			{              
-			  //TODO if Domain == 1... if Domain == 2 ...
-			  //                 double domainShift = 1.0/2.0;
-			  double domainShift = 0.0;
-			  // shift x to domain [0,1]^3
-			  FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
-                
-			  MatrixRT output;
-
-			  // determine if point is in upper/lower Layer
-			  if ((0.0 <= s[2] && s[2] <= 1.0/2.0)) // upperLayer
-			    {
-			      for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-				{
-				  if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/nF)*(i+1))  
-				    {
-				      // compute Fiber center
-				      FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
-				      //                             
-				      if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
-					output = MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-				      //                                 return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-				      else
-					output = MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-				      //                                 return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-				      //                                 return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
-				    }
-				}
-			    }
-			  else  // lower Layer
-			    {
-			      for(size_t i=0; i<nF ;i++) // running through all the Fibers.. 
-				{
-				  if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/nF)*(i+1))  
-				    {
-				      // compute Fiber center
-				      FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0};
-    
-				      if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
-					output = MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-				      //                                 return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-				      else
-					output = MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-				      //                                 return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-				      //                                 return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
-				    }
-				}
-
-			    }
-			  return output;
-			};
-	std::cout <<" Prestrain Type: matrix_material"<< std::endl;
-	return B;
-      }
-    else   
-      {
-	// TODO other geometries etc... 
-            
-      }
+    {
+      int nF    = parameters.get<int>("nF", 3);      //number of Fibers in each Layer
+      double rF = parameters.get<double>("rF", 0.5*(width/(2.0*nF)) );     //default: half of the max-fiber-radius mrF = (width/(2.0*nF))
+
+      assert( (2*rF)*nF <= width && (height/4)+rF <= height);   //check that fibers are not bigger than Domain
+
+      Func2Tensor B = [p1,p2,theta,nF,rF,height,width] (const Domain& x)
+                      {
+                        //TODO if Domain == 1... if Domain == 2 ...
+                        //                 double domainShift = 1.0/2.0;
+                        double domainShift = 0.0;
+                        // shift x to domain [0,1]^3
+                        FieldVector<double,3> s = {x[0]+domainShift, x[1]+domainShift, x[2]+domainShift};
+
+                        MatrixRT output;
+
+                        // determine if point is in upper/lower Layer
+                        if ((0.0 <= s[2] && s[2] <= 1.0/2.0))   // upperLayer
+                        {
+                          for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                          {
+                            if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/nF)*(i+1))
+                            {
+                              // compute Fiber center
+                              FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , 1.0/4.0};
+                              //
+                              if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
+                                output = MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                              //                                 return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                              else
+                                output = MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                              //                                 return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                              //                                 return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
+                            }
+                          }
+                        }
+                        else    // lower Layer
+                        {
+                          for(size_t i=0; i<nF ; i++)    // running through all the Fibers..
+                          {
+                            if(-1.0/2.0 + (1.0/nF)*i<= s[0] && s[0] <= -1.0/2.0 +  (1.0/nF)*(i+1))
+                            {
+                              // compute Fiber center
+                              FieldVector<double,2> Fcenter = { (1.0/(2.0*nF))+((1.0/double(nF))*i)-(1.0/2.0) , -1.0/4.0};
+
+                              if(std::max( abs(s[0]-Fcenter[0]), abs(s[2]-Fcenter[1])  ) <= rF )
+                                output = MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                              //                                 return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                              else
+                                output = MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                              //                                 return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+                              //                                 return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
+                            }
+                          }
+
+                        }
+                        return output;
+                      };
+      std::cout <<" Prestrain Type: matrix_material"<< std::endl;
+      return B;
+    }
+    else
+    {
+      // TODO other geometries etc...
+
+    }
     // TODO ANISOTROPIC PRESSURE
-        
+
 
   }
-    
-    
-    
+
+
+
   FuncScalar getNormPrestrain(const FuncMatrix& B)
   {
     FuncScalar normB = [&](const Domain& z) {
-			 return norm(B(z)); 
-		       };
-    return normB;  
+                         return norm(B(z));
+                       };
+    return normB;
   }
 
 
diff --git a/dune/microstructure/deprecated_headers/prestrainimp.hh b/dune/microstructure/deprecated_headers/prestrainimp.hh
index 443de31641e6406e5702a52621ab49606ddb0d07..adc6470d95639c9408e976328e93077534d64263 100644
--- a/dune/microstructure/deprecated_headers/prestrainimp.hh
+++ b/dune/microstructure/deprecated_headers/prestrainimp.hh
@@ -15,99 +15,99 @@ class PrestrainImp {
 
 public:
 
-    static const int dim = 3;
-	static const int nCompo = 3;
+  static const int dim = 3;
+  static const int nCompo = 3;
 
-// 	using GridType_Ce = typename MicrostructuredRodGrid::CellGridType;
-    using CellGridType = YaspGrid< dim, EquidistantOffsetCoordinates< double, dim>>;
-    using GridView = CellGridType::LeafGridView;
-    using Domain = GridView::Codim<0>::Geometry::GlobalCoordinate;
+  //    using GridType_Ce = typename MicrostructuredRodGrid::CellGridType;
+  using CellGridType = YaspGrid< dim, EquidistantOffsetCoordinates< double, dim> >;
+  using GridView = CellGridType::LeafGridView;
+  using Domain = GridView::Codim<0>::Geometry::GlobalCoordinate;
 
-    using MatrixRT = FieldMatrix< double, nCompo, nCompo>;
-    using Func2Tensor = std::function< MatrixRT(const Domain&) >;
-// 	using Domain = typename GridType_Ce::LeafGridView::template Codim<0>::Geometry::GlobalCoordinate;
-// 	using MatrixRT = FieldMatrix< double, nCompo, nCompo>;
-// 	using Func2Tensor = std::function< MatrixRT(const Domain&) >;
+  using MatrixRT = FieldMatrix< double, nCompo, nCompo>;
+  using Func2Tensor = std::function< MatrixRT(const Domain&) >;
+  //    using Domain = typename GridType_Ce::LeafGridView::template Codim<0>::Geometry::GlobalCoordinate;
+  //    using MatrixRT = FieldMatrix< double, nCompo, nCompo>;
+  //    using Func2Tensor = std::function< MatrixRT(const Domain&) >;
 
 protected:
 
-	double p1, p2, theta;
-	double width; //cell geometry
+  double p1, p2, theta;
+  double width;       //cell geometry
 
 public:
 
-    PrestrainImp(double p1, double p2, double theta, double width) : p1(p1), p2(p2), theta(theta), width(width){}
+  PrestrainImp(double p1, double p2, double theta, double width) : p1(p1), p2(p2), theta(theta), width(width){}
 
-    Func2Tensor getPrestrain(unsigned int imp)
+  Func2Tensor getPrestrain(unsigned int imp)
+  {
+    using std::pow;
+    using std::abs;
+    using std::sqrt;
+    using std::sin;
+    using std::cos;
+
+    if (imp==1)
     {
-    	using std::pow;
-	    using std::abs;
-	    using std::sqrt;
-	    using std::sin;
-	    using std::cos;
-
-    	if (imp==1)
-    	{
-
-            Func2Tensor B1_ = [this] (const Domain& x) {              //  ISOTROPIC PRESSURE
-                if (abs(x[0]) > (theta/2)  && x[2] > 0)
-                    return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-                if (abs(x[0]) < (theta/2)  && x[2] < 0)
-                    return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
-                else
-                    return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-
-            };
-            std::cout <<" Prestrain Type: 1 "<< std::endl;
-            return B1_;
-        }
-        else if (imp==2)
-        {
-            Func2Tensor B2_ = [this] (const Domain& x) {              // Bilayer with one rectangular Fiber & ISOTROPIC PRESSURE    
-
-                if (abs(x[0]) < (theta/2) && x[2] < 0 && x[2] > -(1.0/2.0) )
-                    return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
-                else
-                    return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
-
-
-            };
-            std::cout <<" Prestrain Type: 2 "<< std::endl;
-            return B2_;
-
-
-        }
-
-
-
-
-            // TODO ANISOTROPIC PRESSURE
-
-//         else if (imp==2)
-//     	{
-//
-// 	    	Func2Tensor B2_ = [this] (const Domain& z)
-// 	    	{
-// 	    		auto pi = std::acos(-1.0);
-// 	      		double beta = pi/4.0 + pi/4.0*z[1]; //z[1]=x3
-// 	      		MatrixRT Id(0);
-// 	      		for (int i=0;i<nCompo;i++)
-// 	        		Id[i][i]=1.0;
-// 	      		MatrixRT pressure = Id;
-// 	      		pressure *= 1.0/6.0;
-// 	      		MatrixRT n_ot_n = {
-// 	      			{cos(beta)*cos(beta), 0.0, cos(beta)*sin(beta)},
-// 	      			{0.0,                           0.0, 0.0						  },
-// 	      			{cos(beta)*sin(beta), 0.0, sin(beta)*sin(beta)}
-// 	      		};
-// 	      		n_ot_n*=0.5;
-// 	      		pressure += n_ot_n;
-// 	      		pressure *= this->a;
-// 	      		return pressure;
-// 	    	};
-//     		return B2_;
-//     	}
+
+      Func2Tensor B1_ = [this] (const Domain& x) {                    //  ISOTROPIC PRESSURE
+                          if (abs(x[0]) > (theta/2)  && x[2] > 0)
+                            return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                          if (abs(x[0]) < (theta/2)  && x[2] < 0)
+                            return MatrixRT{{p2, 0.0 , 0.0}, {0.0, p2, 0.0}, {0.0, 0.0, p2}};
+                          else
+                            return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+
+                        };
+      std::cout <<" Prestrain Type: 1 "<< std::endl;
+      return B1_;
     }
+    else if (imp==2)
+    {
+      Func2Tensor B2_ = [this] (const Domain& x) {                    // Bilayer with one rectangular Fiber & ISOTROPIC PRESSURE
+
+                          if (abs(x[0]) < (theta/2) && x[2] < 0 && x[2] > -(1.0/2.0) )
+                            return MatrixRT{{p1, 0.0 , 0.0}, {0.0, p1, 0.0}, {0.0, 0.0, p1}};
+                          else
+                            return MatrixRT{{0.0, 0.0 , 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}};
+
+
+                        };
+      std::cout <<" Prestrain Type: 2 "<< std::endl;
+      return B2_;
+
+
+    }
+
+
+
+
+    // TODO ANISOTROPIC PRESSURE
+
+    //         else if (imp==2)
+    //          {
+    //
+    //          Func2Tensor B2_ = [this] (const Domain& z)
+    //          {
+    //                  auto pi = std::acos(-1.0);
+    //                  double beta = pi/4.0 + pi/4.0*z[1]; //z[1]=x3
+    //                  MatrixRT Id(0);
+    //                  for (int i=0;i<nCompo;i++)
+    //                          Id[i][i]=1.0;
+    //                  MatrixRT pressure = Id;
+    //                  pressure *= 1.0/6.0;
+    //                  MatrixRT n_ot_n = {
+    //                          {cos(beta)*cos(beta), 0.0, cos(beta)*sin(beta)},
+    //                          {0.0,                           0.0, 0.0						  },
+    //                          {cos(beta)*sin(beta), 0.0, sin(beta)*sin(beta)}
+    //                  };
+    //                  n_ot_n*=0.5;
+    //                  pressure += n_ot_n;
+    //                  pressure *= this->a;
+    //                  return pressure;
+    //          };
+    //                  return B2_;
+    //          }
+  }
 
 };
 
diff --git a/dune/microstructure/deprecated_headers/vtk_filler.hh b/dune/microstructure/deprecated_headers/vtk_filler.hh
index aa61fb2c1c8b475338d0d9def75e57c8709180ca..191272d3a09614ec3c7dfdc56f6eef1a5feafc0a 100644
--- a/dune/microstructure/deprecated_headers/vtk_filler.hh
+++ b/dune/microstructure/deprecated_headers/vtk_filler.hh
@@ -8,819 +8,819 @@
 #include <dune/microstructure/prestrain_material_geometry.hh>
 
 
-	using std::string;
-	using namespace Dune;
-	using namespace Functions;
-    using namespace Functions::BasisFactory;
-
-	//static const int dimworld = 3;
-
-	//using GT = UGGrid<dim>; //typename MicrostructuredRodGrid::GT<dim>;
-	//using GV = typename GT::LeafGridView;
-	/*
-	using MatrixRT = FieldMatrix< double, dimworld, dimworld>;
-	using VectorRT = FieldVector< double, dimworld>;
-	using ScalarRT = double;
-
-
-	using ScalarCT = std::vector<double>;
-	using VectorCT = BlockVector<FieldVector<double,1> >;
-
-	using HierarchicVectorView = Dune::Functions::HierarchicVectorWrapper< VectorCT, double>;
-*/
-	/*
-	template<class Basis>
-	static auto scalarDiscGlobalBasisFunc(
-		const Basis& feBasis,
-		std::function< double(const typename Basis::GridView::template Codim<0>::Geometry::GlobalCoordinate&) >& scalarFunc)
-	{
-		ScalarCT values;
-    	Functions::interpolate(feBasis, values, scalarFunc);
-    	auto discGlobalBasisFunc = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(feBasis, values);
-    	return discGlobalBasisFunc;
-	}
-
-	template<class Basis>
-	static auto vectorDiscGlobalBasisFunc(
-		const Basis& feBasis,
-		std::function< FieldVector< double, dimworld>(const typename Basis::GridView::template Codim<0>::Geometry::GlobalCoordinate&) >& vectorFunc)
-	{
-		VectorCT values;
-    	Functions::interpolate(feBasis, values, vectorFunc);
-    	auto discGlobalBasisFunc = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-    		(Functions::subspaceBasis(feBasis), HierarchicVectorView(values));
-    	return discGlobalBasisFunc;
-	}
-*/
-
-template <int dim>
-class FTKfillerContainer {
-
-public:
-
-	static const int dimworld = 3;
-
-// 	using GT = UGGrid<dim>; //typename MicrostructuredRodGrid::GT<dim>;
-    using GT =YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
-	using GV = typename GT::LeafGridView;
-	using Domain = typename GV::template Codim<0>::Geometry::GlobalCoordinate;
-	using MatrixRT = FieldMatrix< double, dimworld, dimworld>;
-	using VectorRT = FieldVector< double, dimworld>;
-	using ScalarRT = double;
-	using FuncMatrix = std::function< MatrixRT(const Domain&) >;
-	using FuncVector = std::function< VectorRT(const Domain&) >;
-	using FuncScalar = std::function< ScalarRT(const Domain&) >;
+using std::string;
+using namespace Dune;
+using namespace Functions;
+using namespace Functions::BasisFactory;
 
-	using ScalarCT = std::vector<double>;
-	using VectorCT = BlockVector<FieldVector<double,1> >;
-	using HierarchicVectorView = Dune::Functions::HierarchicVectorWrapper< VectorCT, double>;
+//static const int dimworld = 3;
 
+//using GT = UGGrid<dim>; //typename MicrostructuredRodGrid::GT<dim>;
+//using GV = typename GT::LeafGridView;
+/*
+   using MatrixRT = FieldMatrix< double, dimworld, dimworld>;
+   using VectorRT = FieldVector< double, dimworld>;
+   using ScalarRT = double;
 
-    void vtkPrestrainNorm(const GV& gridView, const FuncMatrix& B, string filename)          // Updated
-    {
-	    VTKWriter<typename GT::LeafGridView>  vtkWriter(gridView);
-	    Functions::LagrangeBasis<typename GT::LeafGridView, 1> feBasis(gridView);
-	    FuncScalar normB = PrestrainImp<dim>().getNormPrestrain(B);
 
-// 	    auto discGlobalBasisFunc = scalarDiscGlobalBasisFunc(feBasis, normB);
-        auto discGlobalBasisFunc  = Dune::Functions::makeGridViewFunction(normB, gridView);
-//     auto muLocal = localFunction(muGridF);
+   using ScalarCT = std::vector<double>;
+   using VectorCT = BlockVector<FieldVector<double,1> >;
 
+   using HierarchicVectorView = Dune::Functions::HierarchicVectorWrapper< VectorCT, double>;
+ */
+/*
+   template<class Basis>
+   static auto scalarDiscGlobalBasisFunc(
+        const Basis& feBasis,
+        std::function< double(const typename Basis::GridView::template Codim<0>::Geometry::GlobalCoordinate&) >& scalarFunc)
+   {
+        ScalarCT values;
+   Functions::interpolate(feBasis, values, scalarFunc);
+   auto discGlobalBasisFunc = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+        (feBasis, values);
+   return discGlobalBasisFunc;
+   }
+
+   template<class Basis>
+   static auto vectorDiscGlobalBasisFunc(
+        const Basis& feBasis,
+        std::function< FieldVector< double, dimworld>(const typename Basis::GridView::template Codim<0>::Geometry::GlobalCoordinate&) >& vectorFunc)
+   {
+        VectorCT values;
+   Functions::interpolate(feBasis, values, vectorFunc);
+   auto discGlobalBasisFunc = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+        (Functions::subspaceBasis(feBasis), HierarchicVectorView(values));
+   return discGlobalBasisFunc;
+   }
+ */
 
-	    ScalarCT values;
-    	Functions::interpolate(feBasis, values, normB);
-    	auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(feBasis, values);
-	    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
-    	vtkWriter.write(filename);
+template <int dim>
+class FTKfillerContainer {
 
-    }
+public:
 
-    void vtkPrestrainDirector(const typename GT::LeafGridView& gridView, const FuncVector& b, string filename)
-    {
-    	VTKWriter<typename GT::LeafGridView>  vtkWriter(gridView);
+  static const int dimworld = 3;
 
-        using namespace Functions::BasisFactory;
+  //    using GT = UGGrid<dim>; //typename MicrostructuredRodGrid::GT<dim>;
+  using GT =YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
+  using GV = typename GT::LeafGridView;
+  using Domain = typename GV::template Codim<0>::Geometry::GlobalCoordinate;
+  using MatrixRT = FieldMatrix< double, dimworld, dimworld>;
+  using VectorRT = FieldVector< double, dimworld>;
+  using ScalarRT = double;
+  using FuncMatrix = std::function< MatrixRT(const Domain&) >;
+  using FuncVector = std::function< VectorRT(const Domain&) >;
+  using FuncScalar = std::function< ScalarRT(const Domain&) >;
 
-    	auto basis_CE = makeBasis(
-	    gridView,
-	    power<dimworld>(
-      	lagrange<1>(),
-      	flatLexicographic()));//flatInterleaved()
+  using ScalarCT = std::vector<double>;
+  using VectorCT = BlockVector<FieldVector<double,1> >;
+  using HierarchicVectorView = Dune::Functions::HierarchicVectorWrapper< VectorCT, double>;
 
-    	VectorCT values;
-    	Functions::interpolate(basis_CE, values, b);
-    	auto b_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_CE, values);
 
-      	vtkWriter.addVertexData(b_DGBF, VTK::FieldInfo("prestrain_director", VTK::FieldInfo::Type::vector, dimworld));
-    	vtkWriter.write(filename);
-    }
+  void vtkPrestrainNorm(const GV& gridView, const FuncMatrix& B, string filename)            // Updated
+  {
+    VTKWriter<typename GT::LeafGridView>  vtkWriter(gridView);
+    Functions::LagrangeBasis<typename GT::LeafGridView, 1> feBasis(gridView);
+    FuncScalar normB = PrestrainImp<dim>().getNormPrestrain(B);
 
+    //      auto discGlobalBasisFunc = scalarDiscGlobalBasisFunc(feBasis, normB);
+    auto discGlobalBasisFunc  = Dune::Functions::makeGridViewFunction(normB, gridView);
+    //     auto muLocal = localFunction(muGridF);
 
-    void vtkMaterialCell(const GV& gridView_CE,
-    	const FuncScalar& mu_Func,
-    	std::string filename)
-    {
 
-    	std::cout << "vtkMaterialCell ...\n";
+    ScalarCT values;
+    Functions::interpolate(feBasis, values, normB);
+    auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                        (feBasis, values);
+    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
+    vtkWriter.write(filename);
 
-	    VTKWriter<GV>  vtkWriter(gridView_CE);
+  }
 
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
+  void vtkPrestrainDirector(const typename GT::LeafGridView& gridView, const FuncVector& b, string filename)
+  {
+    VTKWriter<typename GT::LeafGridView>  vtkWriter(gridView);
 
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addCellData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+    using namespace Functions::BasisFactory;
 
-	    vtkWriter.write(filename);
+    auto basis_CE = makeBasis(
+      gridView,
+      power<dimworld>(
+        lagrange<1>(),
+        flatLexicographic()));//flatInterleaved()
 
-	    std::cout << "vtkMaterialCell done.\n";
-    }
+    VectorCT values;
+    Functions::interpolate(basis_CE, values, b);
+    auto b_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_CE, values);
 
+    vtkWriter.addVertexData(b_DGBF, VTK::FieldInfo("prestrain_director", VTK::FieldInfo::Type::vector, dimworld));
+    vtkWriter.write(filename);
+  }
 
- 	  void vtkMaterial3DRod(const GV& gridView_R3D, double eps,
-    	const FuncVector& domain_Func, const FuncScalar& mu_Func,
-    	std::string filename)
-    {
 
-    	std::cout << "vtkProblem ...\n";
+  void vtkMaterialCell(const GV& gridView_CE,
+                       const FuncScalar& mu_Func,
+                       std::string filename)
+  {
 
-	    VTKWriter<GV>  vtkWriter(gridView_R3D);
+    std::cout << "vtkMaterialCell ...\n";
 
-	    // Vector data
-	    const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
+    VTKWriter<GV>  vtkWriter(gridView_CE);
 
-	    VectorCT domain_Coeff;
-	    Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
-	    auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
-	    vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
+    // Scalar data
+    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
 
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
+    ScalarCT material_Coeff;
+    Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
+    auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                           (scalarFeBasis, material_Coeff);
+    vtkWriter.addCellData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
 
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+    vtkWriter.write(filename);
 
-	    vtkWriter.write(filename);
+    std::cout << "vtkMaterialCell done.\n";
+  }
 
-	    std::cout << "vtkProblem done.\n";
-    }
 
+  void vtkMaterial3DRod(const GV& gridView_R3D, double eps,
+                        const FuncVector& domain_Func, const FuncScalar& mu_Func,
+                        std::string filename)
+  {
 
-    void vtkProblemCell(const GV& gridView_CE,
-    	const FuncMatrix& B_Func, const FuncScalar& mu_Func,
-    	std::string filename)
-    {
+    std::cout << "vtkProblem ...\n";
 
-    	std::cout << "vtkProblemCell ...\n";
-
-	    VTKWriter<GV>  vtkWriter(gridView_CE);
-
-	    // Vector data
-	    const auto basis_CE = makeBasis(gridView_CE, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
-
-
-    	FuncVector Be1_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[0];
-    	};
-    	VectorCT Be1_Coeff;
-	    Functions::interpolate(basis_CE, Be1_Coeff, Be1_Func);
-	    auto Be1_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be1_Coeff));
-	    vtkWriter.addVertexData(Be1_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
-
-	    FuncVector Be2_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[1];
-    	};
-    	VectorCT Be2_Coeff;
-	    Functions::interpolate(basis_CE, Be2_Coeff, Be2_Func);
-	    auto Be2_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be2_Coeff));
-	    vtkWriter.addVertexData(Be2_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be3_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[2];
-    	};
-    	VectorCT Be3_Coeff;
-	    Functions::interpolate(basis_CE, Be3_Coeff, Be3_Func);
-	    auto Be3_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be3_Coeff));
-	    vtkWriter.addVertexData(Be3_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
-
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
-	    FuncScalar normB_Func = PrestrainImp<dim>().getNormPrestrain(B_Func);
-	    ScalarCT prestrain_Coeff;
-    	Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_Func);
-    	auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, prestrain_Coeff);
-	    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
-
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
-
-	    vtkWriter.write(filename);
-
-	    std::cout << "vtkProblem done.\n";
-    }
+    VTKWriter<GV>  vtkWriter(gridView_R3D);
 
-    void vtkProblemCellBVec(const GV& gridView_CE,
-    	const FuncMatrix& B_Func, const FuncVector& B_vec_Func, const FuncScalar& mu_Func,
-    	std::string filename)
-    {
+    // Vector data
+    const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic()));         //flatInterleaved()
 
-    	std::cout << "vtkProblemCellBVec ...\n";
+    VectorCT domain_Coeff;
+    Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
+    auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                         (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
+    vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
 
-	    VTKWriter<GV>  vtkWriter(gridView_CE);
+    // Scalar data
+    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
 
-	    // Vector data
-	    const auto basis_CE = makeBasis(gridView_CE, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
+    ScalarCT material_Coeff;
+    Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
+    auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                           (scalarFeBasis, material_Coeff);
+    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
 
+    vtkWriter.write(filename);
 
-    	FuncVector Be1_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[0];
-    	};
-    	VectorCT Be1_Coeff;
-	    Functions::interpolate(basis_CE, Be1_Coeff, Be1_Func);
-	    auto Be1_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be1_Coeff));
-	    vtkWriter.addVertexData(Be1_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
+    std::cout << "vtkProblem done.\n";
+  }
 
 
-	    FuncVector Be2_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[1];
-    	};
-    	VectorCT Be2_Coeff;
-	    Functions::interpolate(basis_CE, Be2_Coeff, Be2_Func);
-	    auto Be2_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be2_Coeff));
-	    vtkWriter.addVertexData(Be2_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
+  void vtkProblemCell(const GV& gridView_CE,
+                      const FuncMatrix& B_Func, const FuncScalar& mu_Func,
+                      std::string filename)
+  {
 
+    std::cout << "vtkProblemCell ...\n";
 
-	    FuncVector Be3_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[2];
-    	};
-    	VectorCT Be3_Coeff;
-	    Functions::interpolate(basis_CE, Be3_Coeff, Be3_Func);
-	    auto Be3_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be3_Coeff));
-	    vtkWriter.addVertexData(Be3_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
+    VTKWriter<GV>  vtkWriter(gridView_CE);
 
+    // Vector data
+    const auto basis_CE = makeBasis(gridView_CE, power<dimworld>(lagrange<1>(), flatLexicographic()));         //flatInterleaved()
 
-    	VectorCT B_vec_Coeff;
-		Functions::interpolate(basis_CE, B_vec_Coeff, B_vec_Func);
-		auto B_vec_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_CE, B_vec_Coeff);
-  		vtkWriter.addVertexData(B_vec_DGBF, VTK::FieldInfo("B_vec", VTK::FieldInfo::Type::vector, dimworld));
 
+    FuncVector Be1_Func = [B_Func](const auto& x)
+                          {
+                            return B_Func(x)[0];
+                          };
+    VectorCT Be1_Coeff;
+    Functions::interpolate(basis_CE, Be1_Coeff, Be1_Func);
+    auto Be1_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                      (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be1_Coeff));
+    vtkWriter.addVertexData(Be1_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
 
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
+    FuncVector Be2_Func = [B_Func](const auto& x)
+                          {
+                            return B_Func(x)[1];
+                          };
+    VectorCT Be2_Coeff;
+    Functions::interpolate(basis_CE, Be2_Coeff, Be2_Func);
+    auto Be2_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                      (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be2_Coeff));
+    vtkWriter.addVertexData(Be2_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
 
-	    FuncScalar normB_Func = PrestrainImp<dim>().getNormPrestrain(B_Func);
-	    ScalarCT prestrain_Coeff;
-    	Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_Func);
-    	auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, prestrain_Coeff);
-	    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
 
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+    FuncVector Be3_Func = [B_Func](const auto& x)
+                          {
+                            return B_Func(x)[2];
+                          };
+    VectorCT Be3_Coeff;
+    Functions::interpolate(basis_CE, Be3_Coeff, Be3_Func);
+    auto Be3_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                      (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be3_Coeff));
+    vtkWriter.addVertexData(Be3_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
 
-	    vtkWriter.write(filename);
+    // Scalar data
+    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
+    FuncScalar normB_Func = PrestrainImp<dim>().getNormPrestrain(B_Func);
+    ScalarCT prestrain_Coeff;
+    Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_Func);
+    auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                        (scalarFeBasis, prestrain_Coeff);
+    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
 
-	    std::cout << "vtkProblem done.\n";
-    }
+    ScalarCT material_Coeff;
+    Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
+    auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                           (scalarFeBasis, material_Coeff);
+    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
 
+    vtkWriter.write(filename);
 
-    void vtkProblem3DRod(const GV& gridView_R3D, double eps,
-    	const FuncVector& domain_Func, const FuncMatrix& B_Func, const FuncScalar& mu_Func,
-    	std::string filename)
-    {
+    std::cout << "vtkProblem done.\n";
+  }
 
-    	std::cout << "vtkProblem ...\n";
-
-	    VTKWriter<GV>  vtkWriter(gridView_R3D);
-
-	    // Vector data
-	    const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
-
-	    VectorCT domain_Coeff;
-	    Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
-	    auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
-	    vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
-
-
-    	FuncVector Be1_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[0];
-    	};
-    	VectorCT Be1_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be1_R3D_Coeff, Be1_R3D_Func);
-	    auto Be1_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be1_R3D_Coeff));
-	    vtkWriter.addVertexData(Be1_R3D_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be2_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[1];
-    	};
-    	VectorCT Be2_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be2_R3D_Coeff, Be2_R3D_Func);
-	    auto Be2_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be2_R3D_Coeff));
-	    vtkWriter.addVertexData(Be2_R3D_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be3_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[2];
-    	};
-    	VectorCT Be3_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be3_R3D_Coeff, Be3_R3D_Func);
-	    auto Be3_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be3_R3D_Coeff));
-	    vtkWriter.addVertexData(Be3_R3D_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
-
-
-
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
-
-	    FuncScalar normB_Func = PrestrainImp<dim>().getNormPrestrain(B_Func);
-	    FuncScalar normB_R3D_Func = [normB_Func, eps](const auto& x)
-	    {
-	    	auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-	    	return normB_Func(x_Ce);
-	    };
-	    ScalarCT prestrain_Coeff;
-    	Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_R3D_Func);
-    	auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, prestrain_Coeff);
-	    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
-
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
-
-	    vtkWriter.write(filename);
-
-	    std::cout << "vtkProblem done.\n";
-    }
+  void vtkProblemCellBVec(const GV& gridView_CE,
+                          const FuncMatrix& B_Func, const FuncVector& B_vec_Func, const FuncScalar& mu_Func,
+                          std::string filename)
+  {
 
-     void vtkProblem3DRodBVec(const GV& gridView_R3D, double eps,
-    	const FuncVector& domain_Func, const FuncMatrix& B_Func, const FuncVector& B_vec_Func, const FuncScalar& mu_Func,
-    	std::string filename)
-    {
+    std::cout << "vtkProblemCellBVec ...\n";
 
-    	std::cout << "vtkProblem ...\n";
-
-	    VTKWriter<GV>  vtkWriter(gridView_R3D);
-
-	    // Vector data
-	    const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
-
-	    VectorCT domain_Coeff;
-	    Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
-	    auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
-	    vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
-
-
-    	FuncVector Be1_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[0];
-    	};
-    	VectorCT Be1_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be1_R3D_Coeff, Be1_R3D_Func);
-	    auto Be1_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be1_R3D_Coeff));
-	    vtkWriter.addVertexData(Be1_R3D_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be2_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[1];
-    	};
-    	VectorCT Be2_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be2_R3D_Coeff, Be2_R3D_Func);
-	    auto Be2_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be2_R3D_Coeff));
-	    vtkWriter.addVertexData(Be2_R3D_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be3_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[2];
-    	};
-    	VectorCT Be3_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be3_R3D_Coeff, Be3_R3D_Func);
-	    auto Be3_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be3_R3D_Coeff));
-	    vtkWriter.addVertexData(Be3_R3D_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
-
-	    FuncVector B_vec_R3D_Func = [B_vec_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_vec_Func(x_Ce);
-    	};
-	    VectorCT B_vec_Coeff;
-		Functions::interpolate(basis_R3D, B_vec_Coeff, B_vec_R3D_Func);
-		auto B_vec_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_R3D, B_vec_Coeff);
-  		vtkWriter.addVertexData(B_vec_DGBF, VTK::FieldInfo("B_vec", VTK::FieldInfo::Type::vector, dimworld));
-
-
-
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
-
-	    FuncScalar normB_Func = PrestrainImp<dim>().getNormPrestrain(B_Func);
-	    FuncScalar normB_R3D_Func = [normB_Func, eps](const auto& x)
-	    {
-	    	auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-	    	return normB_Func(x_Ce);
-	    };
-	    ScalarCT prestrain_Coeff;
-    	Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_R3D_Func);
-    	auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, prestrain_Coeff);
-	    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
-
-	    FuncScalar mu_R3D_Func = [mu_Func, eps](const auto& x)
-	    {
-	    	auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-	    	return mu_Func(x_Ce);
-	    };
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_R3D_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
-
-	    vtkWriter.write(filename);
-
-	    std::cout << "vtkProblem done.\n";
-    }
+    VTKWriter<GV>  vtkWriter(gridView_CE);
+
+    // Vector data
+    const auto basis_CE = makeBasis(gridView_CE, power<dimworld>(lagrange<1>(), flatLexicographic()));         //flatInterleaved()
+
+
+    FuncVector Be1_Func = [B_Func](const auto& x)
+                          {
+                            return B_Func(x)[0];
+                          };
+    VectorCT Be1_Coeff;
+    Functions::interpolate(basis_CE, Be1_Coeff, Be1_Func);
+    auto Be1_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                      (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be1_Coeff));
+    vtkWriter.addVertexData(Be1_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
+
+
+    FuncVector Be2_Func = [B_Func](const auto& x)
+                          {
+                            return B_Func(x)[1];
+                          };
+    VectorCT Be2_Coeff;
+    Functions::interpolate(basis_CE, Be2_Coeff, Be2_Func);
+    auto Be2_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                      (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be2_Coeff));
+    vtkWriter.addVertexData(Be2_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
+
+
+    FuncVector Be3_Func = [B_Func](const auto& x)
+                          {
+                            return B_Func(x)[2];
+                          };
+    VectorCT Be3_Coeff;
+    Functions::interpolate(basis_CE, Be3_Coeff, Be3_Func);
+    auto Be3_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                      (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be3_Coeff));
+    vtkWriter.addVertexData(Be3_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
+
+
+    VectorCT B_vec_Coeff;
+    Functions::interpolate(basis_CE, B_vec_Coeff, B_vec_Func);
+    auto B_vec_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_CE, B_vec_Coeff);
+    vtkWriter.addVertexData(B_vec_DGBF, VTK::FieldInfo("B_vec", VTK::FieldInfo::Type::vector, dimworld));
+
+
+    // Scalar data
+    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
+
+    FuncScalar normB_Func = PrestrainImp<dim>().getNormPrestrain(B_Func);
+    ScalarCT prestrain_Coeff;
+    Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_Func);
+    auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                        (scalarFeBasis, prestrain_Coeff);
+    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
+
+    ScalarCT material_Coeff;
+    Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
+    auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                           (scalarFeBasis, material_Coeff);
+    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+
+    vtkWriter.write(filename);
+
+    std::cout << "vtkProblem done.\n";
+  }
+
+
+  void vtkProblem3DRod(const GV& gridView_R3D, double eps,
+                       const FuncVector& domain_Func, const FuncMatrix& B_Func, const FuncScalar& mu_Func,
+                       std::string filename)
+  {
+
+    std::cout << "vtkProblem ...\n";
+
+    VTKWriter<GV>  vtkWriter(gridView_R3D);
+
+    // Vector data
+    const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic()));         //flatInterleaved()
+
+    VectorCT domain_Coeff;
+    Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
+    auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                         (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
+    vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
+
+
+    FuncVector Be1_R3D_Func = [B_Func, eps](const auto& x)
+                              {
+                                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                                return B_Func(x_Ce)[0];
+                              };
+    VectorCT Be1_R3D_Coeff;
+    Functions::interpolate(basis_R3D, Be1_R3D_Coeff, Be1_R3D_Func);
+    auto Be1_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                          (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be1_R3D_Coeff));
+    vtkWriter.addVertexData(Be1_R3D_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
+
+
+    FuncVector Be2_R3D_Func = [B_Func, eps](const auto& x)
+                              {
+                                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                                return B_Func(x_Ce)[1];
+                              };
+    VectorCT Be2_R3D_Coeff;
+    Functions::interpolate(basis_R3D, Be2_R3D_Coeff, Be2_R3D_Func);
+    auto Be2_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                          (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be2_R3D_Coeff));
+    vtkWriter.addVertexData(Be2_R3D_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
+
+
+    FuncVector Be3_R3D_Func = [B_Func, eps](const auto& x)
+                              {
+                                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                                return B_Func(x_Ce)[2];
+                              };
+    VectorCT Be3_R3D_Coeff;
+    Functions::interpolate(basis_R3D, Be3_R3D_Coeff, Be3_R3D_Func);
+    auto Be3_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                          (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be3_R3D_Coeff));
+    vtkWriter.addVertexData(Be3_R3D_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
+
+
+
+    // Scalar data
+    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
+
+    FuncScalar normB_Func = PrestrainImp<dim>().getNormPrestrain(B_Func);
+    FuncScalar normB_R3D_Func = [normB_Func, eps](const auto& x)
+                                {
+                                  auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                                  return normB_Func(x_Ce);
+                                };
+    ScalarCT prestrain_Coeff;
+    Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_R3D_Func);
+    auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                        (scalarFeBasis, prestrain_Coeff);
+    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
+
+    ScalarCT material_Coeff;
+    Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
+    auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                           (scalarFeBasis, material_Coeff);
+    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+
+    vtkWriter.write(filename);
+
+    std::cout << "vtkProblem done.\n";
+  }
+
+  void vtkProblem3DRodBVec(const GV& gridView_R3D, double eps,
+                           const FuncVector& domain_Func, const FuncMatrix& B_Func, const FuncVector& B_vec_Func, const FuncScalar& mu_Func,
+                           std::string filename)
+  {
+
+    std::cout << "vtkProblem ...\n";
+
+    VTKWriter<GV>  vtkWriter(gridView_R3D);
+
+    // Vector data
+    const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic()));         //flatInterleaved()
+
+    VectorCT domain_Coeff;
+    Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
+    auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                         (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
+    vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
+
+
+    FuncVector Be1_R3D_Func = [B_Func, eps](const auto& x)
+                              {
+                                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                                return B_Func(x_Ce)[0];
+                              };
+    VectorCT Be1_R3D_Coeff;
+    Functions::interpolate(basis_R3D, Be1_R3D_Coeff, Be1_R3D_Func);
+    auto Be1_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                          (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be1_R3D_Coeff));
+    vtkWriter.addVertexData(Be1_R3D_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
+
+
+    FuncVector Be2_R3D_Func = [B_Func, eps](const auto& x)
+                              {
+                                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                                return B_Func(x_Ce)[1];
+                              };
+    VectorCT Be2_R3D_Coeff;
+    Functions::interpolate(basis_R3D, Be2_R3D_Coeff, Be2_R3D_Func);
+    auto Be2_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                          (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be2_R3D_Coeff));
+    vtkWriter.addVertexData(Be2_R3D_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
+
+
+    FuncVector Be3_R3D_Func = [B_Func, eps](const auto& x)
+                              {
+                                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                                return B_Func(x_Ce)[2];
+                              };
+    VectorCT Be3_R3D_Coeff;
+    Functions::interpolate(basis_R3D, Be3_R3D_Coeff, Be3_R3D_Func);
+    auto Be3_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                          (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be3_R3D_Coeff));
+    vtkWriter.addVertexData(Be3_R3D_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
+
+    FuncVector B_vec_R3D_Func = [B_vec_Func, eps](const auto& x)
+                                {
+                                  auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                                  return B_vec_Func(x_Ce);
+                                };
+    VectorCT B_vec_Coeff;
+    Functions::interpolate(basis_R3D, B_vec_Coeff, B_vec_R3D_Func);
+    auto B_vec_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_R3D, B_vec_Coeff);
+    vtkWriter.addVertexData(B_vec_DGBF, VTK::FieldInfo("B_vec", VTK::FieldInfo::Type::vector, dimworld));
+
+
+
+    // Scalar data
+    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
+
+    FuncScalar normB_Func = PrestrainImp<dim>().getNormPrestrain(B_Func);
+    FuncScalar normB_R3D_Func = [normB_Func, eps](const auto& x)
+                                {
+                                  auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                                  return normB_Func(x_Ce);
+                                };
+    ScalarCT prestrain_Coeff;
+    Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_R3D_Func);
+    auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                        (scalarFeBasis, prestrain_Coeff);
+    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
+
+    FuncScalar mu_R3D_Func = [mu_Func, eps](const auto& x)
+                             {
+                               auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                               return mu_Func(x_Ce);
+                             };
+    ScalarCT material_Coeff;
+    Functions::interpolate(scalarFeBasis, material_Coeff, mu_R3D_Func);
+    auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                           (scalarFeBasis, material_Coeff);
+    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+
+    vtkWriter.write(filename);
+
+    std::cout << "vtkProblem done.\n";
+  }
 
 };
 
 /*
-	template<int dim>
-	void vtkProblemCell(const typename UGGrid<dim>::LeafGridView& gridView_CE,
-    	const std::function< MatrixRT(const typename UGGrid<dim>::LeafGridView::template Codim<0>::Geometry::GlobalCoordinate&)& B_Func,
-    	const std::function< ScalarRT(const typename UGGrid<dim>::LeafGridView::template Codim<0>::Geometry::GlobalCoordinate&)& mu_Func,
-    	std::string filename)
+        template<int dim>
+        void vtkProblemCell(const typename UGGrid<dim>::LeafGridView& gridView_CE,
+        const std::function< MatrixRT(const typename UGGrid<dim>::LeafGridView::template Codim<0>::Geometry::GlobalCoordinate&)& B_Func,
+        const std::function< ScalarRT(const typename UGGrid<dim>::LeafGridView::template Codim<0>::Geometry::GlobalCoordinate&)& mu_Func,
+        std::string filename)
     {
-    	using GT = UGGrid<dim>;
-    	using GV = typename GT::LeafGridView;
-    	using Domain = typename GV::template Codim<0>::Geometry::GlobalCoordinate;
-    	using FuncMatrix = std::function< MatrixRT(const Domain&) >;
-		using FuncVector = std::function< VectorRT(const Domain&) >;
-		using FuncScalar = std::function< ScalarRT(const Domain&) >;
-    	std::cout << "vtkProblemCell ...\n";
-
-	    VTKWriter<GV>  vtkWriter(gridView_CE);
-
-	    // Vector data
-	    const auto basis_CE = makeBasis(gridView_CE, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
-
-
-    	FuncVector Be1_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[0];
-    	};
-    	VectorCT Be1_Coeff;
-	    Functions::interpolate(basis_CE, Be1_Coeff, Be1_Func);
-	    auto Be1_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be1_Coeff));
-	    vtkWriter.addVertexData(Be1_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be2_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[1];
-    	};
-    	VectorCT Be2_Coeff;
-	    Functions::interpolate(basis_CE, Be2_Coeff, Be2_Func);
-	    auto Be2_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be2_Coeff));
-	    vtkWriter.addVertexData(Be2_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be3_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[2];
-    	};
-    	VectorCT Be3_Coeff;
-	    Functions::interpolate(basis_CE, Be3_Coeff, Be3_Func);
-	    auto Be3_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be3_Coeff));
-	    vtkWriter.addVertexData(Be3_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
-
-
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
-
-	    FuncScalar normB_Func = getNormPrestrain(B_Func);
-	    ScalarCT prestrain_Coeff;
-    	Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_Func);
-    	auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, prestrain_Coeff);
-	    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
-
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
-
-	    vtkWriter.write(filename);
-
-	    std::cout << "vtkProblem done.\n";
+        using GT = UGGrid<dim>;
+        using GV = typename GT::LeafGridView;
+        using Domain = typename GV::template Codim<0>::Geometry::GlobalCoordinate;
+        using FuncMatrix = std::function< MatrixRT(const Domain&) >;
+                using FuncVector = std::function< VectorRT(const Domain&) >;
+                using FuncScalar = std::function< ScalarRT(const Domain&) >;
+        std::cout << "vtkProblemCell ...\n";
+
+            VTKWriter<GV>  vtkWriter(gridView_CE);
+
+            // Vector data
+            const auto basis_CE = makeBasis(gridView_CE, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
+
+
+        FuncVector Be1_Func = [B_Func](const auto& x)
+        {
+                return B_Func(x)[0];
+        };
+        VectorCT Be1_Coeff;
+            Functions::interpolate(basis_CE, Be1_Coeff, Be1_Func);
+            auto Be1_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be1_Coeff));
+            vtkWriter.addVertexData(Be1_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
+
+
+            FuncVector Be2_Func = [B_Func](const auto& x)
+        {
+                return B_Func(x)[1];
+        };
+        VectorCT Be2_Coeff;
+            Functions::interpolate(basis_CE, Be2_Coeff, Be2_Func);
+            auto Be2_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be2_Coeff));
+            vtkWriter.addVertexData(Be2_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
+
+
+            FuncVector Be3_Func = [B_Func](const auto& x)
+        {
+                return B_Func(x)[2];
+        };
+        VectorCT Be3_Coeff;
+            Functions::interpolate(basis_CE, Be3_Coeff, Be3_Func);
+            auto Be3_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be3_Coeff));
+            vtkWriter.addVertexData(Be3_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
+
+
+            // Scalar data
+            Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
+
+            FuncScalar normB_Func = getNormPrestrain(B_Func);
+            ScalarCT prestrain_Coeff;
+        Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_Func);
+        auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                (scalarFeBasis, prestrain_Coeff);
+            vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
+
+            ScalarCT material_Coeff;
+        Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
+        auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                (scalarFeBasis, material_Coeff);
+            vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+
+            vtkWriter.write(filename);
+
+            std::cout << "vtkProblem done.\n";
     }
 
     void vtkProblemCellBVec(const GV& gridView_CE,
-    	const FuncMatrix& B_Func, const FuncVector& B_vec_Func, const FuncScalar& mu_Func,
-    	std::string filename)
+        const FuncMatrix& B_Func, const FuncVector& B_vec_Func, const FuncScalar& mu_Func,
+        std::string filename)
     {
 
-    	std::cout << "vtkProblemCell ...\n";
+        std::cout << "vtkProblemCell ...\n";
 
-	    VTKWriter<GV>  vtkWriter(gridView_CE);
+            VTKWriter<GV>  vtkWriter(gridView_CE);
 
-	    // Vector data
-	    const auto basis_CE = makeBasis(gridView_CE, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
+            // Vector data
+            const auto basis_CE = makeBasis(gridView_CE, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
 
 
-    	FuncVector Be1_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[0];
-    	};
-    	VectorCT Be1_Coeff;
-	    Functions::interpolate(basis_CE, Be1_Coeff, Be1_Func);
-	    auto Be1_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be1_Coeff));
-	    vtkWriter.addVertexData(Be1_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
+        FuncVector Be1_Func = [B_Func](const auto& x)
+        {
+                return B_Func(x)[0];
+        };
+        VectorCT Be1_Coeff;
+            Functions::interpolate(basis_CE, Be1_Coeff, Be1_Func);
+            auto Be1_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be1_Coeff));
+            vtkWriter.addVertexData(Be1_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
 
 
-	    FuncVector Be2_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[1];
-    	};
-    	VectorCT Be2_Coeff;
-	    Functions::interpolate(basis_CE, Be2_Coeff, Be2_Func);
-	    auto Be2_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be2_Coeff));
-	    vtkWriter.addVertexData(Be2_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
+            FuncVector Be2_Func = [B_Func](const auto& x)
+        {
+                return B_Func(x)[1];
+        };
+        VectorCT Be2_Coeff;
+            Functions::interpolate(basis_CE, Be2_Coeff, Be2_Func);
+            auto Be2_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be2_Coeff));
+            vtkWriter.addVertexData(Be2_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
 
 
-	    FuncVector Be3_Func = [B_Func](const auto& x)
-    	{
-    		return B_Func(x)[2];
-    	};
-    	VectorCT Be3_Coeff;
-	    Functions::interpolate(basis_CE, Be3_Coeff, Be3_Func);
-	    auto Be3_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be3_Coeff));
-	    vtkWriter.addVertexData(Be3_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
+            FuncVector Be3_Func = [B_Func](const auto& x)
+        {
+                return B_Func(x)[2];
+        };
+        VectorCT Be3_Coeff;
+            Functions::interpolate(basis_CE, Be3_Coeff, Be3_Func);
+            auto Be3_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_CE), HierarchicVectorView(Be3_Coeff));
+            vtkWriter.addVertexData(Be3_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
 
 
-    	VectorCT B_vec_Coeff;
-		Functions::interpolate(basis_CE, B_vec_Coeff, B_vec_Func);
-		auto B_vec_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_CE, B_vec_Coeff);
-  		vtkWriter.addVertexData(B_vec_DGBF, VTK::FieldInfo("B_vec", VTK::FieldInfo::Type::vector, dimworld));
+        VectorCT B_vec_Coeff;
+                Functions::interpolate(basis_CE, B_vec_Coeff, B_vec_Func);
+                auto B_vec_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_CE, B_vec_Coeff);
+                vtkWriter.addVertexData(B_vec_DGBF, VTK::FieldInfo("B_vec", VTK::FieldInfo::Type::vector, dimworld));
 
 
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
+            // Scalar data
+            Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_CE);
 
-	    FuncScalar normB_Func = getNormPrestrain(B_Func);
-	    ScalarCT prestrain_Coeff;
-    	Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_Func);
-    	auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, prestrain_Coeff);
-	    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
+            FuncScalar normB_Func = getNormPrestrain(B_Func);
+            ScalarCT prestrain_Coeff;
+        Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_Func);
+        auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                (scalarFeBasis, prestrain_Coeff);
+            vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
 
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+            ScalarCT material_Coeff;
+        Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
+        auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                (scalarFeBasis, material_Coeff);
+            vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
 
-	    vtkWriter.write(filename);
+            vtkWriter.write(filename);
 
-	    std::cout << "vtkProblem done.\n";
+            std::cout << "vtkProblem done.\n";
     }
 
 
     void vtkProblem3DRod(const GV& gridView_R3D, double eps,
-    	const FuncVector& domain_Func, const FuncMatrix& B_Func, const FuncScalar& mu_Func,
-    	std::string filename)
+        const FuncVector& domain_Func, const FuncMatrix& B_Func, const FuncScalar& mu_Func,
+        std::string filename)
     {
 
-    	std::cout << "vtkProblem ...\n";
-
-	    VTKWriter<GV>  vtkWriter(gridView_R3D);
-
-	    // Vector data
-	    const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
-
-	    VectorCT domain_Coeff;
-	    Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
-	    auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
-	    vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
-
-
-    	FuncVector Be1_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[0];
-    	};
-    	VectorCT Be1_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be1_R3D_Coeff, Be1_R3D_Func);
-	    auto Be1_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be1_R3D_Coeff));
-	    vtkWriter.addVertexData(Be1_R3D_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be2_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[1];
-    	};
-    	VectorCT Be2_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be2_R3D_Coeff, Be2_R3D_Func);
-	    auto Be2_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be2_R3D_Coeff));
-	    vtkWriter.addVertexData(Be2_R3D_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be3_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[2];
-    	};
-    	VectorCT Be3_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be3_R3D_Coeff, Be3_R3D_Func);
-	    auto Be3_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be3_R3D_Coeff));
-	    vtkWriter.addVertexData(Be3_R3D_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
-
-
-
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
-
-	    FuncScalar normB_Func = getNormPrestrain(B_Func);
-	    FuncScalar normB_R3D_Func = [normB_Func, eps](const auto& x)
-	    {
-	    	auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-	    	return normB_Func(x_Ce);
-	    };
-	    ScalarCT prestrain_Coeff;
-    	Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_R3D_Func);
-    	auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, prestrain_Coeff);
-	    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
-
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
-
-	    vtkWriter.write(filename);
-
-	    std::cout << "vtkProblem done.\n";
+        std::cout << "vtkProblem ...\n";
+
+            VTKWriter<GV>  vtkWriter(gridView_R3D);
+
+            // Vector data
+            const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
+
+            VectorCT domain_Coeff;
+            Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
+            auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
+            vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
+
+
+        FuncVector Be1_R3D_Func = [B_Func, eps](const auto& x)
+        {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return B_Func(x_Ce)[0];
+        };
+        VectorCT Be1_R3D_Coeff;
+            Functions::interpolate(basis_R3D, Be1_R3D_Coeff, Be1_R3D_Func);
+            auto Be1_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be1_R3D_Coeff));
+            vtkWriter.addVertexData(Be1_R3D_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
+
+
+            FuncVector Be2_R3D_Func = [B_Func, eps](const auto& x)
+        {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return B_Func(x_Ce)[1];
+        };
+        VectorCT Be2_R3D_Coeff;
+            Functions::interpolate(basis_R3D, Be2_R3D_Coeff, Be2_R3D_Func);
+            auto Be2_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be2_R3D_Coeff));
+            vtkWriter.addVertexData(Be2_R3D_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
+
+
+            FuncVector Be3_R3D_Func = [B_Func, eps](const auto& x)
+        {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return B_Func(x_Ce)[2];
+        };
+        VectorCT Be3_R3D_Coeff;
+            Functions::interpolate(basis_R3D, Be3_R3D_Coeff, Be3_R3D_Func);
+            auto Be3_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be3_R3D_Coeff));
+            vtkWriter.addVertexData(Be3_R3D_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
+
+
+
+            // Scalar data
+            Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
+
+            FuncScalar normB_Func = getNormPrestrain(B_Func);
+            FuncScalar normB_R3D_Func = [normB_Func, eps](const auto& x)
+            {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return normB_Func(x_Ce);
+            };
+            ScalarCT prestrain_Coeff;
+        Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_R3D_Func);
+        auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                (scalarFeBasis, prestrain_Coeff);
+            vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
+
+            ScalarCT material_Coeff;
+        Functions::interpolate(scalarFeBasis, material_Coeff, mu_Func);
+        auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                (scalarFeBasis, material_Coeff);
+            vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+
+            vtkWriter.write(filename);
+
+            std::cout << "vtkProblem done.\n";
     }
 
      void vtkProblem3DRodBVec(const GV& gridView_R3D, double eps,
-    	const FuncVector& domain_Func, const FuncMatrix& B_Func, const FuncVector& B_vec_Func, const FuncScalar& mu_Func,
-    	std::string filename)
+        const FuncVector& domain_Func, const FuncMatrix& B_Func, const FuncVector& B_vec_Func, const FuncScalar& mu_Func,
+        std::string filename)
     {
 
-    	std::cout << "vtkProblem ...\n";
-
-	    VTKWriter<GV>  vtkWriter(gridView_R3D);
-
-	    // Vector data
-	    const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
-
-	    VectorCT domain_Coeff;
-	    Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
-	    auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
-	    vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
-
-
-    	FuncVector Be1_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[0];
-    	};
-    	VectorCT Be1_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be1_R3D_Coeff, Be1_R3D_Func);
-	    auto Be1_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be1_R3D_Coeff));
-	    vtkWriter.addVertexData(Be1_R3D_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be2_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[1];
-    	};
-    	VectorCT Be2_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be2_R3D_Coeff, Be2_R3D_Func);
-	    auto Be2_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be2_R3D_Coeff));
-	    vtkWriter.addVertexData(Be2_R3D_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
-
-
-	    FuncVector Be3_R3D_Func = [B_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_Func(x_Ce)[2];
-    	};
-    	VectorCT Be3_R3D_Coeff;
-	    Functions::interpolate(basis_R3D, Be3_R3D_Coeff, Be3_R3D_Func);
-	    auto Be3_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
-	        (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be3_R3D_Coeff));
-	    vtkWriter.addVertexData(Be3_R3D_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
-
-	    FuncVector B_vec_R3D_Func = [B_vec_Func, eps](const auto& x)
-    	{
-    		auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-    		return B_vec_Func(x_Ce);
-    	};
-	    VectorCT B_vec_Coeff;
-		Functions::interpolate(basis_R3D, B_vec_Coeff, B_vec_R3D_Func);
-		auto B_vec_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_R3D, B_vec_Coeff);
-  		vtkWriter.addVertexData(B_vec_DGBF, VTK::FieldInfo("B_vec", VTK::FieldInfo::Type::vector, dimworld));
-
-
-
-	    // Scalar data
-	    Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
-
-	    FuncScalar normB_Func = getNormPrestrain(B_Func);
-	    FuncScalar normB_R3D_Func = [normB_Func, eps](const auto& x)
-	    {
-	    	auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-	    	return normB_Func(x_Ce);
-	    };
-	    ScalarCT prestrain_Coeff;
-    	Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_R3D_Func);
-    	auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, prestrain_Coeff);
-	    vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
-
-	    FuncScalar mu_R3D_Func = [mu_Func, eps](const auto& x)
-	    {
-	    	auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
-	    	return mu_Func(x_Ce);
-	    };
-	    ScalarCT material_Coeff;
-    	Functions::interpolate(scalarFeBasis, material_Coeff, mu_R3D_Func);
-    	auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
-    		(scalarFeBasis, material_Coeff);
-	    vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
-
-	    vtkWriter.write(filename);
-
-	    std::cout << "vtkProblem done.\n";
+        std::cout << "vtkProblem ...\n";
+
+            VTKWriter<GV>  vtkWriter(gridView_R3D);
+
+            // Vector data
+            const auto basis_R3D = makeBasis(gridView_R3D, power<dimworld>(lagrange<1>(), flatLexicographic())); //flatInterleaved()
+
+            VectorCT domain_Coeff;
+            Functions::interpolate(basis_R3D, domain_Coeff, domain_Func);
+            auto domain_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(domain_Coeff));
+            vtkWriter.addVertexData(domain_DGBF, VTK::FieldInfo("Domain", VTK::FieldInfo::Type::vector, 3));
+
+
+        FuncVector Be1_R3D_Func = [B_Func, eps](const auto& x)
+        {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return B_Func(x_Ce)[0];
+        };
+        VectorCT Be1_R3D_Coeff;
+            Functions::interpolate(basis_R3D, Be1_R3D_Coeff, Be1_R3D_Func);
+            auto Be1_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be1_R3D_Coeff));
+            vtkWriter.addVertexData(Be1_R3D_DGBF, VTK::FieldInfo("B_e1", VTK::FieldInfo::Type::vector, 3));
+
+
+            FuncVector Be2_R3D_Func = [B_Func, eps](const auto& x)
+        {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return B_Func(x_Ce)[1];
+        };
+        VectorCT Be2_R3D_Coeff;
+            Functions::interpolate(basis_R3D, Be2_R3D_Coeff, Be2_R3D_Func);
+            auto Be2_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be2_R3D_Coeff));
+            vtkWriter.addVertexData(Be2_R3D_DGBF, VTK::FieldInfo("B_e2", VTK::FieldInfo::Type::vector, 3));
+
+
+            FuncVector Be3_R3D_Func = [B_Func, eps](const auto& x)
+        {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return B_Func(x_Ce)[2];
+        };
+        VectorCT Be3_R3D_Coeff;
+            Functions::interpolate(basis_R3D, Be3_R3D_Coeff, Be3_R3D_Func);
+            auto Be3_R3D_DGBF = Functions::makeDiscreteGlobalBasisFunction<VectorRT>
+                (Functions::subspaceBasis(basis_R3D), HierarchicVectorView(Be3_R3D_Coeff));
+            vtkWriter.addVertexData(Be3_R3D_DGBF, VTK::FieldInfo("B_e3", VTK::FieldInfo::Type::vector, 3));
+
+            FuncVector B_vec_R3D_Func = [B_vec_Func, eps](const auto& x)
+        {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return B_vec_Func(x_Ce);
+        };
+            VectorCT B_vec_Coeff;
+                Functions::interpolate(basis_R3D, B_vec_Coeff, B_vec_R3D_Func);
+                auto B_vec_DGBF = Functions::makeDiscreteGlobalBasisFunction< VectorRT > (basis_R3D, B_vec_Coeff);
+                vtkWriter.addVertexData(B_vec_DGBF, VTK::FieldInfo("B_vec", VTK::FieldInfo::Type::vector, dimworld));
+
+
+
+            // Scalar data
+            Functions::LagrangeBasis<GV, 1> scalarFeBasis(gridView_R3D);
+
+            FuncScalar normB_Func = getNormPrestrain(B_Func);
+            FuncScalar normB_R3D_Func = [normB_Func, eps](const auto& x)
+            {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return normB_Func(x_Ce);
+            };
+            ScalarCT prestrain_Coeff;
+        Functions::interpolate(scalarFeBasis, prestrain_Coeff, normB_R3D_Func);
+        auto normB_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                (scalarFeBasis, prestrain_Coeff);
+            vtkWriter.addVertexData(normB_DGBF, VTK::FieldInfo("normB", VTK::FieldInfo::Type::scalar, 1));
+
+            FuncScalar mu_R3D_Func = [mu_Func, eps](const auto& x)
+            {
+                auto x_Ce = {x[0]/eps - int(x[0]/eps),x[1],x[2]};
+                return mu_Func(x_Ce);
+            };
+            ScalarCT material_Coeff;
+        Functions::interpolate(scalarFeBasis, material_Coeff, mu_R3D_Func);
+        auto material_DGBF = Functions::makeDiscreteGlobalBasisFunction< ScalarRT >
+                (scalarFeBasis, material_Coeff);
+            vtkWriter.addVertexData(material_DGBF, VTK::FieldInfo("mu", VTK::FieldInfo::Type::scalar, 1));
+
+            vtkWriter.write(filename);
+
+            std::cout << "vtkProblem done.\n";
     }
-*/
+ */
 
 #endif
diff --git a/dune/microstructure/energies/discretekirchhoffbendingenergyprestrained.hh b/dune/microstructure/energies/discretekirchhoffbendingenergyprestrained.hh
index c86a1e7e5378d57083285cd91db5d453b0f64284..757e4d60131d85b1ff2e151c2c48922e7394ccff 100644
--- a/dune/microstructure/energies/discretekirchhoffbendingenergyprestrained.hh
+++ b/dune/microstructure/energies/discretekirchhoffbendingenergyprestrained.hh
@@ -9,57 +9,28 @@
 #include <dune/gfe/assemblers/localenergy.hh>
 #include <dune/gfe/bendingisometryhelper.hh>
 #include <dune/gfe/tensor3.hh>
+#include <dune/gfe/linearalgebra.hh>
 
 #include <dune/localfunctions/lagrange/lagrangesimplex.hh>
 
-
+#include <dune/microstructure/bendingisometryaddons.hh>
 #include <dune/microstructure/microproblem.hh>
 
 #include <cmath>
-#include <string> 
+#include <string>
 #include <map>
 
 
-  // template <class T>
-  // constexpr std::string_view type_name()
-  // {
-  //     using namespace std;
-  // #ifdef __clang__
-  //     string_view p = __PRETTY_FUNCTION__;
-  //     return string_view(p.data() + 34, p.size() - 34 - 1);
-  // #elif defined(__GNUC__)
-  //     string_view p = __PRETTY_FUNCTION__;
-  // #  if __cplusplus < 201402
-  //     return string_view(p.data() + 36, p.size() - 36 - 1);
-  // #  else
-  //     return string_view(p.data() + 49, p.find(';', 49) - 49);
-  // #  endif
-  // #elif defined(_MSC_VER)
-  //     string_view p = __FUNCSIG__;
-  //     return string_view(p.data() + 84, p.size() - 84 - 7);
-  // #endif
-  // }
-
-
-
-
-/** 
- * \brief Assemble the discrete Kirchhoff bending energy for a single element. 
- * 
- *  The Kirchhoff bending energy consists of two parts: 
- * 
- *  1. The energy of  Qhom(II - Beff) where II is the second fundamental form of the surface parametrized by the deformation function 
- *     and Beff is a (given) effective prestrain tensor. 
- * 
- *     This contribution is split intro three parts which corresponds to the binomial formula (a+b)^2 = a^2 + 2ab + b^2
- *     each term is discretized separately.
- * 
- *  2. An integral over the scalar product of a forcing term and the discrete deformation 
- *  (i.e. the evaluation of localFunction_ ).
+/**
+ * \brief Assemble the discrete Kirchhoff bending energy for a single element.
+ *
+ *  The Kirchhoff bending energy consists of: Qhom(II - Beff) where II is the second fundamental form of the surface parametrized by the deformation function
+ *  and Beff is a (given) effective prestrain tensor. This contribution is split intro three parts which corresponds to the binomial formula (a+b)^2 = a^2 + 2ab + b^2
+ *  each term is discretized separately.
  */
 namespace Dune::GFE
 {
-  template<class Basis, class LocalDiscreteKirchhoffFunction, class LocalForce, class TargetSpace>
+  template<class Basis, class DiscreteKirchhoffFunction, class TargetSpace>
   class DiscreteKirchhoffBendingEnergyPrestrained
     : public Dune::GFE::LocalEnergy<Basis,TargetSpace>
   {
@@ -67,7 +38,7 @@ namespace Dune::GFE
     typedef typename Basis::GridView GridView;
     typedef typename GridView::ctype DT;
     typedef typename TargetSpace::ctype RT;
-    typedef typename LocalDiscreteKirchhoffFunction::DerivativeType DerivativeType;
+    typedef typename DiscreteKirchhoffFunction::DerivativeType DerivativeType;
     typedef typename Dune::FieldMatrix<double,2,2> PrestrainType;
     typedef typename Dune::FieldMatrix<double,3,3> MatrixType;
     // Grid dimension
@@ -77,13 +48,13 @@ namespace Dune::GFE
 
     using Domain = typename Basis::GridView ::template Codim<0>::Geometry::GlobalCoordinate;
 
-    using IndicatorType = std::function<int(const Domain&)>;
-    using IndicatorGridViewFunctionType = GridViewFunction<int(const Domain&), GridView>;
-    using LocalIndicatorFunctionType = LocalFunction<int(const Domain&), typename GridViewEntitySet<GridView, 0>::Element >;
+    using IndicatorType = std::function<int (const Domain&)>;
+    using IndicatorGridViewFunctionType = GridViewFunction<int (const Domain&), GridView>;
+    using LocalIndicatorFunctionType = LocalFunction<int (const Domain&), typename GridViewEntitySet<GridView, 0>::Element >;
 
-    LocalDiscreteKirchhoffFunction& localFunction_;
+    DiscreteKirchhoffFunction& localFunction_;
 
-    LocalForce& localForce_;
+    // LocalForce& localForce_;
 
     P2LocalFiniteElement lagrangeLFE_;
 
@@ -106,26 +77,26 @@ namespace Dune::GFE
     // Python::Module module_;
     // Python::Callable microstructureClass_;  //we use this class to create microstructure objects passed to microproblem.
 
-    // MicroProblem microProblem_; 
+    // MicroProblem microProblem_;
 
-    // std::shared_ptr<Python::Callable> anotherMicroProblem_;  
-    // std::shared_ptr<MicroProblem> microProblem_;  
+    // std::shared_ptr<Python::Callable> anotherMicroProblem_;
+    // std::shared_ptr<MicroProblem> microProblem_;
 
-    // std::vector<std::shared_ptr<MicroProblem>> microProblem_;  
-    std::map<int,std::shared_ptr<MicroProblem> > microProblem_;  
+    // std::vector<std::shared_ptr<MicroProblem>> microProblem_;
+    std::map<int,std::shared_ptr<MicroProblem> > microProblem_;
 
 
     IndicatorType macroPhaseIndicator_;
     mutable LocalIndicatorFunctionType macroPhaseIndicatorLocalFunction_;
 
-    int numberOfMacroPhases_; 
+    int numberOfMacroPhases_;
 
 
     std::vector<bool> constantMicrostructureVector_;
 
 
     /**
-     * @brief This is just used to initialize the MicrostructureClass with some macroscopic point 
+     * @brief This is just used to initialize the MicrostructureClass with some macroscopic point
      *        in the case of a macroscopically varying microstructure.
      */
     // static constexpr Domain initialMacroPoint{0.0};
@@ -137,18 +108,16 @@ namespace Dune::GFE
 
 
   public:
-    DiscreteKirchhoffBendingEnergyPrestrained(LocalDiscreteKirchhoffFunction &localFunction,
-                                   LocalForce &localForce,
-                                   const Dune::ParameterTree& parameterSet,
-                                   const Python::Module pyModule)
-        : localFunction_(localFunction),
-          localForce_(localForce),
-          parameterSet_(parameterSet),
-          module_(pyModule),
-          globalMicrostructureClass_(setupGlobalMicrostructureClass())
-          // microstructureClass_(setupMicrostructureClass())
-          // 
-          // microProblem_(setupMicroProblem())     // This is necessary since there is no default.constructor in for MicroProblem class.
+    DiscreteKirchhoffBendingEnergyPrestrained(DiscreteKirchhoffFunction &localFunction,
+                                              const Dune::ParameterTree& parameterSet,
+                                              const Python::Module pyModule)
+      : localFunction_(localFunction),
+      parameterSet_(parameterSet),
+      module_(pyModule),
+      globalMicrostructureClass_(setupGlobalMicrostructureClass())
+      // microstructureClass_(setupMicrostructureClass())
+      //
+      // microProblem_(setupMicroProblem())     // This is necessary since there is no default.constructor in for MicroProblem class.
     {
       // setupGlobalMicrostructureClass();
       setupEffectiveQuantities();
@@ -156,7 +125,7 @@ namespace Dune::GFE
 
 
     // const Python::Callable setupMicrostructureClass() const
-    // { 
+    // {
     //   std::cout << "Enter setupMicroStructureClass" <<  std::endl;
     //   Python::Callable microstructureClass;
 
@@ -174,24 +143,24 @@ namespace Dune::GFE
     //       std::cerr << "Error during  DiscreteKirchhoffBendingEnergyPrestrained setup" << e << std::endl;
     //     }
     //   }
-      
+
     //   return microstructureClass;
     // }
 
-    
 
 
-    
+
+
     const Python::Callable setupGlobalMicrostructureClass() const
-    { 
+    {
       Python::Callable globalMicrostructureClass;
 
-        try {
-          globalMicrostructureClass = module_.get("GlobalMicrostructure");
-        } catch (Dune::Exception &e) {
-          std::cout << "There is no class 'GlobalMicrostructure' in the Python module!" << std::endl;
-          std::cerr << "Error during  DiscreteKirchhoffBendingEnergyPrestrained setup" << e << std::endl;
-        }
+      try {
+        globalMicrostructureClass = module_.get("GlobalMicrostructure");
+      } catch (Dune::Exception &e) {
+        std::cout << "There is no class 'GlobalMicrostructure' in the Python module!" << std::endl;
+        std::cerr << "Error during  DiscreteKirchhoffBendingEnergyPrestrained setup" << e << std::endl;
+      }
 
       // TEST
       // std::cout << "Trying to access inner class directly without creating an instance:" << std::endl;
@@ -202,7 +171,7 @@ namespace Dune::GFE
 
 
     // const Python::Callable setupMicrostructureClass() const
-    // { 
+    // {
     //   // std::cout << "Enter setupMicroStructureClass" <<  std::endl;
     //   Python::Callable microstructureClass;
 
@@ -230,233 +199,233 @@ namespace Dune::GFE
     //     //     return MicroProblem();
     //     if(parameterSet_.get<bool>("macroscopically_varying_microstructure", 0))
     //         return MicroProblem(microstructureClass_(0),parameterSet_, module_);  //TODO Replace 0  with Domain input type. using Domain = typename GridView::template Codim<0>::Geometry::GlobalCoordinate;
-    //     else 
+    //     else
     //         return MicroProblem(microstructureClass_(),parameterSet_, module_);   //pass a constant microstructure object
     // }
 
 
     void setupEffectiveQuantities()
     {
-        /**
-         * @brief If the microstructure is constant on a macroscopic level,
-         *        we read the effective quantitites from the ParameterTree 
-         *        and set them up once here.
-         * 
-         *        If no effective quanitities are provided, we solve the 
-         *        micro problem once to obtain them.
-         * 
-         * 
-         *        If the microscture is varying on a macroscopic scale,
-         *        the microProblem is initialized with a default value
-         *        and gets updated for each each macro point later on 
-         *        in the quadrature loop.
-         */
+      /**
+       * @brief If the microstructure is constant on a macroscopic level,
+       *        we read the effective quantitites from the ParameterTree
+       *        and set them up once here.
+       *
+       *        If no effective quanitities are provided, we solve the
+       *        micro problem once to obtain them.
+       *
+       *
+       *        If the microscture is varying on a macroscopic scale,
+       *        the microProblem is initialized with a default value
+       *        and gets updated for each each macro point later on
+       *        in the quadrature loop.
+       */
 
 
 
 
 
-        //create instance of globalMicrostructureClass_
-        // Python::Reference globalMicrostructure = globalMicrostructureClass_();
-        globalMicrostructure_ = globalMicrostructureClass_();
+      //create instance of globalMicrostructureClass_
+      // Python::Reference globalMicrostructure = globalMicrostructureClass_();
+      globalMicrostructure_ = globalMicrostructureClass_();
 
-         // = globalMicrostructure.get("macroPhases", 1)
-        globalMicrostructure_.get("macroPhases").toC<int>(numberOfMacroPhases_);
-        std::cout << "numberOfMacroPhases: " << numberOfMacroPhases_ << std::endl;
+      // = globalMicrostructure.get("macroPhases", 1)
+      globalMicrostructure_.get("macroPhases").toC<int>(numberOfMacroPhases_);
+      std::cout << "numberOfMacroPhases: " << numberOfMacroPhases_ << std::endl;
 
 
 
-        // Get the macroPhaseIndicator function
-        try {
-          macroPhaseIndicator_ = Python::make_function<int>(Python::Callable(globalMicrostructure_.get("macroPhaseIndicator")));
-          // auto macroPhaseIndicatorGVF = Dune::Functions::makeGridViewFunction(macroPhaseIndicator_, localFunction_.gridView());
-          macroPhaseIndicatorLocalFunction_ = localFunction(Dune::Functions::makeGridViewFunction(macroPhaseIndicator_, localFunction_.gridView()));
-        } catch (Dune::Exception &e) {
-          std::cout << "Piecewise constant microstructure but no macroPhaseIndicator was provided. Assuming macroscopically constant microstructure" << std::endl;
-          // Using constant True function
-          macroPhaseIndicator_ = Python::make_function<int>(Python::Callable(Python::evaluate("lambda x: 1")));
-        }
-        //VTK-Write macroPhaseIndicator:
-        if(parameterSet_.get<bool>("VTKwriteMacroPhaseIndicator", 0))
-          VTKwriteMacroPhaseIndicator();
-        
+      // Get the macroPhaseIndicator function
+      try {
+        macroPhaseIndicator_ = Python::make_function<int>(Python::Callable(globalMicrostructure_.get("macroPhaseIndicator")));
+        // auto macroPhaseIndicatorGVF = Dune::Functions::makeGridViewFunction(macroPhaseIndicator_, localFunction_.gridView());
+        macroPhaseIndicatorLocalFunction_ = localFunction(Dune::Functions::makeGridViewFunction(macroPhaseIndicator_, localFunction_.gridView()));
+      } catch (Dune::Exception &e) {
+        std::cout << "Piecewise constant microstructure but no macroPhaseIndicator was provided. Assuming macroscopically constant microstructure" << std::endl;
+        // Using constant True function
+        macroPhaseIndicator_ = Python::make_function<int>(Python::Callable(Python::evaluate("lambda x: 1")));
+      }
+      //VTK-Write macroPhaseIndicator:
+      if(parameterSet_.get<bool>("VTKwriteMacroPhaseIndicator", 0))
+        VTKwriteMacroPhaseIndicator();
 
 
-        Qhom_.resize(numberOfMacroPhases_);
-        Beff_.resize(numberOfMacroPhases_);
 
-        constantMicrostructureVector_.resize(numberOfMacroPhases_);
-      
+      Qhom_.resize(numberOfMacroPhases_);
+      Beff_.resize(numberOfMacroPhases_);
 
-        for(size_t i=0; i<numberOfMacroPhases_; i++)
-        {
-            std::cout << "------------------- " + std::to_string(i+1) + "-th macro phase setup " + "------------------- " << std::endl;
-            LocalMicrostructureClass_.push_back(globalMicrostructure_.get("LocalMicrostructure_"+std::to_string(i+1)));
+      constantMicrostructureVector_.resize(numberOfMacroPhases_);
 
-            // microProblem_.push_back(std::make_shared<MicroProblem>(LocalMicrostructureClass_[i](),parameterSet_, module_));
 
-            // also store these quantities in a vector instead?
-            //---Create localMicrostructure object
-            // auto LocalMicrostructure = microProblem_[i]->getMicrostructure();
-            auto LocalMicrostructure = LocalMicrostructureClass_[i]();
+      for(size_t i=0; i<numberOfMacroPhases_; i++)
+      {
+        std::cout << "------------------- " + std::to_string(i+1) + "-th macro phase setup " + "------------------- " << std::endl;
+        LocalMicrostructureClass_.push_back(globalMicrostructure_.get("LocalMicrostructure_"+std::to_string(i+1)));
 
-            // std::string testString;
-            // LocalMicrostructure.get("phase" + std::to_string(1) + "_type").toC<std::string>(testString);
-            // std::cout << "Teststring:" << testString << std::endl;
+        // microProblem_.push_back(std::make_shared<MicroProblem>(LocalMicrostructureClass_[i](),parameterSet_, module_));
 
+        // also store these quantities in a vector instead?
+        //---Create localMicrostructure object
+        // auto LocalMicrostructure = microProblem_[i]->getMicrostructure();
+        auto LocalMicrostructure = LocalMicrostructureClass_[i]();
 
-            // bool .macroPhase2_readEffectiveQuantities
-            bool constantMicrostructure = true;
-            globalMicrostructure_.get("macroPhase" + std::to_string(i+1) + "_constantMicrostructure").toC<bool>(constantMicrostructure);
+        // std::string testString;
+        // LocalMicrostructure.get("phase" + std::to_string(1) + "_type").toC<std::string>(testString);
+        // std::cout << "Teststring:" << testString << std::endl;
 
-            constantMicrostructureVector_[i] = constantMicrostructure;
 
-            if (constantMicrostructure)
-            {
-              std::cout << "[Constant Microstructure]" << std::endl;
-                          // Check whether to read effective quantities for current phase or to compute them.
-              bool readEffectiveQuantities = false; //default
-              globalMicrostructure_.get("macroPhase" + std::to_string(i+1) + "_readEffectiveQuantities").toC<bool>(readEffectiveQuantities);
-
-              std::cout << "readEffectiveQuantities:" << readEffectiveQuantities << std::endl;
-
-              if(readEffectiveQuantities)
-              { 
-                std::cout << "(Read effective quantities for phase " + std::to_string(i+1) + ")" << std::endl;
-                LocalMicrostructure.get("effectiveQuadraticForm").toC<Dune::FieldMatrix<double,3,3>>(Qhom_[i]);
-                LocalMicrostructure.get("effectivePrestrain").toC<Dune::FieldMatrix<double,2,2>>(Beff_[i]);
-              } else {
-                std::cout << "(Solving the Micro-Problem once to obtain effective quantities ...)" << std::endl;
-
-                microProblem_.insert({i,std::make_shared<MicroProblem>(LocalMicrostructureClass_[i](),parameterSet_, module_)});
-                (microProblem_[i])->getEffectiveQuantities(Beff_[i],Qhom_[i]);
-              }
-
-              printmatrix(std::cout, Qhom_[i], "Setup effective Quadratic form (Qhom) for Phase " +std::to_string(i+1) + " as ", "--");
-              printmatrix(std::cout, Beff_[i], "Setup effective prestrain (Beff) for Phase " +std::to_string(i+1) + " as ", "--");
-            }
-            else 
-              std::cout << "[Macroscopically varying Microstructure]" << std::endl;
+        // bool .macroPhase2_readEffectiveQuantities
+        bool constantMicrostructure = true;
+        globalMicrostructure_.get("macroPhase" + std::to_string(i+1) + "_constantMicrostructure").toC<bool>(constantMicrostructure);
 
-        } //end-macroPhaseLoop
+        constantMicrostructureVector_[i] = constantMicrostructure;
 
-        // TEST Call python inner-class
-        // std::cout << "Try to access inner python-class: " << std::endl;
-        // Python::Reference innerClass; 
-        // globalMicrostructure_.get("lg").toC<Python::Reference>(innerClass); //conversion to C of Python::Reference not implemented!
+        if (constantMicrostructure)
+        {
+          std::cout << "[Constant Microstructure]" << std::endl;
+          // Check whether to read effective quantities for current phase or to compute them.
+          bool readEffectiveQuantities = false;     //default
+          globalMicrostructure_.get("macroPhase" + std::to_string(i+1) + "_readEffectiveQuantities").toC<bool>(readEffectiveQuantities);
 
-        // Python::Callable LocalMicrostructureClass = globalMicrostructure_.get(Python::Callable("LocalMicrostructure"));
-        // Python::Callable LocalMicrostructureClass = globalMicrostructure_.get("LocalMicrostructure_1");
-        // LocalMicrostructureClass_[0] = globalMicrostructure_.get("LocalMicrostructure_1");
+          std::cout << "readEffectiveQuantities:" << readEffectiveQuantities << std::endl;
 
-        // create instance of inner class: 
-        // auto LocalMicrostructure = LocalMicrostructureClass();
+          if(readEffectiveQuantities)
+          {
+            std::cout << "(Read effective quantities for phase " + std::to_string(i+1) + ")" << std::endl;
+            LocalMicrostructure.get("effectiveQuadraticForm").toC<Dune::FieldMatrix<double,3,3> >(Qhom_[i]);
+            LocalMicrostructure.get("effectivePrestrain").toC<Dune::FieldMatrix<double,2,2> >(Beff_[i]);
+          } else {
+            std::cout << "(Solving the Micro-Problem once to obtain effective quantities ...)" << std::endl;
+
+            microProblem_.insert({i,std::make_shared<MicroProblem>(LocalMicrostructureClass_[i](),parameterSet_, module_)});
+            (microProblem_[i])->getEffectiveQuantities(Beff_[i],Qhom_[i]);
+          }
 
+          printmatrix(std::cout, Qhom_[i], "Setup effective Quadratic form (Qhom) for Phase " +std::to_string(i+1) + " as ", "--");
+          printmatrix(std::cout, Beff_[i], "Setup effective prestrain (Beff) for Phase " +std::to_string(i+1) + " as ", "--");
+        }
+        else
+          std::cout << "[Macroscopically varying Microstructure]" << std::endl;
 
+      }   //end-macroPhaseLoop
 
+      // TEST Call python inner-class
+      // std::cout << "Try to access inner python-class: " << std::endl;
+      // Python::Reference innerClass;
+      // globalMicrostructure_.get("lg").toC<Python::Reference>(innerClass); //conversion to C of Python::Reference not implemented!
 
-        // int numberOfMacroPhases_ = parameterSet_.get<int>("numberOfMacroPhases_", 1);
+      // Python::Callable LocalMicrostructureClass = globalMicrostructure_.get(Python::Callable("LocalMicrostructure"));
+      // Python::Callable LocalMicrostructureClass = globalMicrostructure_.get("LocalMicrostructure_1");
+      // LocalMicrostructureClass_[0] = globalMicrostructure_.get("LocalMicrostructure_1");
 
+      // create instance of inner class:
+      // auto LocalMicrostructure = LocalMicrostructureClass();
 
 
-        //  microProblem_ = std::make_shared<MicroProblem>(microstructureClass_(),parameterSet_, module_);
-        // microProblem_ = std::make_shared<MicroProblem>(LocalMicrostructureClass_[0](),parameterSet_, module_);
 
-        // auto LocalMicrostructure = microProblem_->getMicrostructure();
 
+      // int numberOfMacroPhases_ = parameterSet_.get<int>("numberOfMacroPhases_", 1);
 
-        // access members of inner class:
-        // auto test = LocalMicrostructure.get("name");
 
 
+      //  microProblem_ = std::make_shared<MicroProblem>(microstructureClass_(),parameterSet_, module_);
+      // microProblem_ = std::make_shared<MicroProblem>(LocalMicrostructureClass_[0](),parameterSet_, module_);
 
-        // std::string test;
-        // LocalMicrostructure.get("name").toC<std::string>(test);
-        // std::cout << "access member of inner class: " << test << std::endl;
+      // auto LocalMicrostructure = microProblem_->getMicrostructure();
 
-        
 
+      // access members of inner class:
+      // auto test = LocalMicrostructure.get("name");
 
 
 
+      // std::string test;
+      // LocalMicrostructure.get("name").toC<std::string>(test);
+      // std::cout << "access member of inner class: " << test << std::endl;
 
 
-        // if(parameterSet_.get<bool>("macroscopically_varying_microstructure", 0))
-        // {
-        //    std::cout << "MACROSCOPICALLY VARYING MICROSTRUCTURE is used! " << std::endl;
-        //    /*
-        //     *  This 'default' microstructureClass_() is just used for an initial setup.
-        //    */
-        //   //  microProblem_ = std::make_shared<MicroProblem>(microstructureClass_(initialMacroPoint),parameterSet_, module_);
-        //   //  microProblem_ = std::make_shared<MicroProblem>(microstructureClass_(),parameterSet_, module_);
-        // }
-        // else{
-        //   std::cout << "CONSTANT MICROSTRUCTURE is used with effective quantities..." << std::endl;
 
 
-        //   // Get Number of MacroPhases
 
-        //   // If possible read the effective quantities from ParameterTree
-        //   if(parameterSet_.get<bool>("read_effectiveQuantities_from_Parset", 1))
-        //   {
 
 
 
-        //     std::cout << "READ EFFECTIVE QUANTITIES FROM PARSET..." << std::endl;
-        //     // module_.get("effectiveQuadraticForm").toC<Dune::FieldMatrix<double,3,3>>(Qhom_[0]);
-        //     // module_.get("effectivePrestrain").toC<Dune::FieldMatrix<double,2,2>>(Beff_[0]);
+      // if(parameterSet_.get<bool>("macroscopically_varying_microstructure", 0))
+      // {
+      //    std::cout << "MACROSCOPICALLY VARYING MICROSTRUCTURE is used! " << std::endl;
+      //    /*
+      //     *  This 'default' microstructureClass_() is just used for an initial setup.
+      //    */
+      //   //  microProblem_ = std::make_shared<MicroProblem>(microstructureClass_(initialMacroPoint),parameterSet_, module_);
+      //   //  microProblem_ = std::make_shared<MicroProblem>(microstructureClass_(),parameterSet_, module_);
+      // }
+      // else{
+      //   std::cout << "CONSTANT MICROSTRUCTURE is used with effective quantities..." << std::endl;
 
 
-        //     std::cout << "Obtain effective quantitites from Microstructure-Class:" << std::endl;
+      //   // Get Number of MacroPhases
 
-       
-        //     // (microProblem_->microstructure_).get("phase" + std::to_string(1) + "_type").toC<std::string>(testString);
+      //   // If possible read the effective quantities from ParameterTree
+      //   if(parameterSet_.get<bool>("read_effectiveQuantities_from_Parset", 1))
+      //   {
 
 
 
-        //     std::string testString;
-        //     LocalMicrostructure.get("phase" + std::to_string(1) + "_type").toC<std::string>(testString);
-        //     std::cout << "Teststring:" << testString << std::endl;
+      //     std::cout << "READ EFFECTIVE QUANTITIES FROM PARSET..." << std::endl;
+      //     // module_.get("effectiveQuadraticForm").toC<Dune::FieldMatrix<double,3,3>>(Qhom_[0]);
+      //     // module_.get("effectivePrestrain").toC<Dune::FieldMatrix<double,2,2>>(Beff_[0]);
 
 
-        //     LocalMicrostructure.get("effectiveQuadraticForm").toC<Dune::FieldMatrix<double,3,3>>(Qhom_[0]);
-        //     LocalMicrostructure.get("effectivePrestrain").toC<Dune::FieldMatrix<double,2,2>>(Beff_[0]);
+      //     std::cout << "Obtain effective quantitites from Microstructure-Class:" << std::endl;
 
-        //   }
-        //   else{
-        //     std::cout << "Solving the Micro/Cell-Problem (once) to obtain effective quantities ..." << std::endl;
 
-        //     // microProblem_ = std::make_shared<MicroProblem>(microstructureClass_(),parameterSet_, module_);
-        //     // microProblem_.updateMicrostructure(microstructureClass_()); // pass a constant microstructure object.
-        //     microProblem_->getEffectiveQuantities(Beff_[0],Qhom_[0]);
-        //   }
+      //     // (microProblem_->microstructure_).get("phase" + std::to_string(1) + "_type").toC<std::string>(testString);
+
+
+
+      //     std::string testString;
+      //     LocalMicrostructure.get("phase" + std::to_string(1) + "_type").toC<std::string>(testString);
+      //     std::cout << "Teststring:" << testString << std::endl;
+
+
+      //     LocalMicrostructure.get("effectiveQuadraticForm").toC<Dune::FieldMatrix<double,3,3>>(Qhom_[0]);
+      //     LocalMicrostructure.get("effectivePrestrain").toC<Dune::FieldMatrix<double,2,2>>(Beff_[0]);
+
+      //   }
+      //   else{
+      //     std::cout << "Solving the Micro/Cell-Problem (once) to obtain effective quantities ..." << std::endl;
+
+      //     // microProblem_ = std::make_shared<MicroProblem>(microstructureClass_(),parameterSet_, module_);
+      //     // microProblem_.updateMicrostructure(microstructureClass_()); // pass a constant microstructure object.
+      //     microProblem_->getEffectiveQuantities(Beff_[0],Qhom_[0]);
+      //   }
+
+      //   printmatrix(std::cout, Qhom_[0], "Setup effective Quadratic form (Qhom) as  ", "--");
+      //   printmatrix(std::cout, Beff_[0], "Setup effective prestrain (Beff) as  ", "--");
+      // }
 
-        //   printmatrix(std::cout, Qhom_[0], "Setup effective Quadratic form (Qhom) as  ", "--");
-        //   printmatrix(std::cout, Beff_[0], "Setup effective prestrain (Beff) as  ", "--");
-        // }
-          
     }
 
 
 
     void VTKwriteMacroPhaseIndicator() const
     {
-          std::cout << "VTK write macroPhaseIndicator" << std::endl;
-          std::string resultPath = parameterSet_.get("resultPath", "../../outputs");
-          // std::string baseName = parameterSet_.get("baseName", "CellProblem-result");
-          std::string baseName = "MacroPhaseIndicator";
-          int subsamplingRefinement = parameterSet_.get<int>("MacroPhaseSubsamplingRefinement", 0);
-
-          Dune::SubsamplingVTKWriter<GridView> MacroPhaseVtkWriter(localFunction_.gridView(), Dune::refinementLevels(subsamplingRefinement));
-          
-          MacroPhaseVtkWriter.addCellData(
-              macroPhaseIndicator_,
-              Dune::VTK::FieldInfo("macroPhaseIndicator_", Dune::VTK::FieldInfo::Type::scalar, 1));
-
-          MacroPhaseVtkWriter.write(resultPath + "/" + baseName );
-          std::cout << "wrote data to file:" + resultPath + "/" + baseName  << std::endl;  
-
-          return;
+      std::cout << "VTK write macroPhaseIndicator" << std::endl;
+      std::string resultPath = parameterSet_.get("resultPath", "../../outputs");
+      // std::string baseName = parameterSet_.get("baseName", "CellProblem-result");
+      std::string baseName = "MacroPhaseIndicator";
+      int subsamplingRefinement = parameterSet_.get<int>("MacroPhaseSubsamplingRefinement", 0);
+
+      Dune::SubsamplingVTKWriter<GridView> MacroPhaseVtkWriter(localFunction_.gridView(), Dune::refinementLevels(subsamplingRefinement));
+
+      MacroPhaseVtkWriter.addCellData(
+        macroPhaseIndicator_,
+        Dune::VTK::FieldInfo("macroPhaseIndicator_", Dune::VTK::FieldInfo::Type::scalar, 1));
+
+      MacroPhaseVtkWriter.write(resultPath + "/" + baseName );
+      std::cout << "wrote data to file:" + resultPath + "/" + baseName  << std::endl;
+
+      return;
     };
 
 
@@ -465,21 +434,21 @@ namespace Dune::GFE
     template<class Itype>
     void resetEffectiveQuadraticForm(const Dune::FieldMatrix<Itype,3,3>& A, const int macroPhase) const
     {
-        std::cout << "reset quadratic form ..." << std::endl;
-        convertFieldMatrix<RT>(A,Qhom_[macroPhase]);
+      std::cout << "reset quadratic form ..." << std::endl;
+      convertFieldMatrix<RT>(A,Qhom_[macroPhase]);
     }
 
     template<class Itype>
     void resetEffectivePrestrain(const Dune::FieldMatrix<Itype,2,2>& B, const int macroPhase) const
     {
-        std::cout << "reset effective prestrain ..." << std::endl;
-        convertFieldMatrix<RT>(B,Beff_[macroPhase]);
+      std::cout << "reset effective prestrain ..." << std::endl;
+      convertFieldMatrix<RT>(B,Beff_[macroPhase]);
     }
 
 
     /**
      * @brief Apply to effective quadratic form (Qhom).
-     * 
+     *
      * @param Qhom effective elastic moduli
      * @param A coefficient vector of first input (coefficient vectors of R_sym^{2x2} matrix in orthonormal basis)
      * @param B coefficient vector of second input (coefficient vectors of R_sym^{2x2} matrix in orthonormal basis)
@@ -487,23 +456,29 @@ namespace Dune::GFE
      */
     auto applyQhom(const MatrixType& Qhom,const Dune::FieldVector<RT,3>& A, const Dune::FieldVector<RT,3>& B) const
     {
-      return Qhom[0][0]*A[0]*B[0] + Qhom[0][1]*A[1]*B[0] + Qhom[0][2]*A[2]*B[0] 
-          +  Qhom[1][0]*A[0]*B[1] + Qhom[1][1]*A[1]*B[1] + Qhom[1][2]*A[2]*B[1] 
-          +  Qhom[2][0]*A[0]*B[2] + Qhom[2][1]*A[1]*B[2] + Qhom[2][2]*A[2]*B[2];
+      return Qhom[0][0]*A[0]*B[0] + Qhom[0][1]*A[1]*B[0] + Qhom[0][2]*A[2]*B[0]
+             +  Qhom[1][0]*A[0]*B[1] + Qhom[1][1]*A[1]*B[1] + Qhom[1][2]*A[2]*B[1]
+             +  Qhom[2][0]*A[0]*B[2] + Qhom[2][1]*A[1]*B[2] + Qhom[2][2]*A[2]*B[2];
+    }
+
+
+
+    /** \brief Assemble the energy for a single element */
+    virtual RT energy (const typename Basis::LocalView& localView,
+                       const typename Impl::LocalEnergyTypes<TargetSpace>::CompositeCoefficients& coefficients) const override
+    {
+      DUNE_THROW(NotImplemented, "!");
     }
-    
 
 
     /** \brief Assemble the energy for a single element */
-    virtual RT energy (const typename Basis::LocalView& localView,         
-               const  std::vector<TargetSpace>& localSolution) const
+    virtual RT energy (const typename Basis::LocalView& localView,
+                       const std::vector<TargetSpace>& localConfiguration) const override
     {
-      RT energy = 0;
 
-  
       /**
        * @brief TEST reset effective quantities.
-       * 
+       *
        */
       // Dune::FieldMatrix<double,2,2> A = {{2.0, 0.0}, {0.0, 2.0}};
       // Dune::FieldMatrix<double,3,3> Q = {{1.0, 2.0, 3.0}, {4.0,5.0,6.0}, {1.0,2.0,3.0}};
@@ -527,7 +502,6 @@ namespace Dune::GFE
       // int quadOrder = 1;  //too low. bad results.
       // int quadOrder = 6;  // Same as used/explained by [Rumpf et al. - Two-scale Finite elements approximation of a homogenized model]
 
-
       int quadOrder = parameterSet_.get<int>("macroQuadOrder", 6);
 #else
       if (localFiniteElement.localBasis().order()==1)
@@ -536,68 +510,79 @@ namespace Dune::GFE
         quadOrder = (localFiniteElement.type().isSimplex()) ? (localFiniteElement.localBasis().order() - 1) * 2
                                                             : (localFiniteElement.localBasis().order() * gridDim - 1) * 2;
 #endif
-      
+
       const auto element = localView.element();
       auto geometry = element.geometry();
       auto gridView = localFunction_.gridView();
       const auto &indexSet = gridView.indexSet();
 
-      // bind to current element.
-      localFunction_.bind(element);
-      localForce_.bind(element);
+
+
+      /**
+          bind the underlying Hermite basis to the current element.
+          Note: The DiscreteKirchhoffFunction object stores a vector of global
+          and local basis coefficients that are accessed for evaluation
+          methods (linear combinations of hermite basis function and local coefficients).
+          Therefore the local configuration is passed to the bind method as well since
+          these coefficient vectors need to be updated with the new local configuration
+          previous to evaluation.
+       */
+      localFunction_.bind(element,localConfiguration);
+      // // bind to current element.
+      // localFunction_.bind(element);
+      // localForce_.bind(element);
 
       macroPhaseIndicatorLocalFunction_.bind(element);
 
 
 
-      /**
-       * @brief We need to update the Coefficients of localFunction_
-       *        on the current element.
-       */
-      localFunction_.updateLocalCoefficients(localSolution,element);
+      // /**
+      //  * @brief We need to update the Coefficients of localFunction_
+      //  *        on the current element.
+      //  */
+      // localFunction_.updateLocalCoefficients(localConfiguration,element);
 
 
 
       if(PRINT_DEBUG)
       {
-          std::cout << " -------------------------------------------- " << std::endl;
-          std::cout << "ELEMENT NUMBER( indexSet.index(element)) ):" << indexSet.index(element) << std::endl;
-          std::cout << "geometry.corner(0): " << geometry.corner(0) << std::endl;
-          std::cout << "geometry.corner(1)): " << geometry.corner(1) << std::endl;
-          std::cout << "geometry.corner(2): " << geometry.corner(2) << std::endl;
+        std::cout << " -------------------------------------------- " << std::endl;
+        std::cout << "ELEMENT NUMBER( indexSet.index(element)) ):" << indexSet.index(element) << std::endl;
+        std::cout << "geometry.corner(0): " << geometry.corner(0) << std::endl;
+        std::cout << "geometry.corner(1)): " << geometry.corner(1) << std::endl;
+        std::cout << "geometry.corner(2): " << geometry.corner(2) << std::endl;
       }
 
 
       /**
-       * @brief  Get Coefficients of the discrete Gradient 
-       * 
+       * @brief  Get Coefficients of the discrete Gradient
+       *
        * The discrete Gradient is a special linear combination represented in a [P2]^2 - (Lagrange) space
        * The coefficients of this linear combination correspond to certain linear combinations of the Gradients of localfunction_ .
        * The coefficients are stored in the form [Basisfunctions x components x gridDim]
        * in a BlockVector<FieldMatrix<RT, 3, gridDim>> .
        */
-      BlockVector<FieldMatrix<RT, 3, gridDim>> discreteJacobianCoefficients;
-      discreteGradientCoefficients(discreteJacobianCoefficients,lagrangeLFE_,localFunction_,element);
-    
-    
-    
-  
+      // BlockVector<FieldMatrix<RT, 3, gridDim> > discreteJacobianCoefficients;
+      // discreteGradientCoefficients(discreteJacobianCoefficients,lagrangeLFE_,localFunction_,element);
+
+
+
+
 
       /**
        * @brief Compute The energy contribution of  Qhom(II - Beff).
-       *        This is called 'harmonicEnergy' for historical reasons: 
        *        without prestrain and if Qhom=|.|^2 (squared Frobenius-Norm),
        *        This is just the harmonic energy of the deformation Gradient.
-       * 
-       * 
-       *        Mixed version using the binomal formula (a-b)^2 = a^2 - 2ab + b^2 
-       *        for | II - Beff |^2 and discretize every term individually. 
+       *
+       *
+       *        Mixed version using the binomal formula (a-b)^2 = a^2 - 2ab + b^2
+       *        for | II - Beff |^2 and discretize every term individually.
        */
-      RT harmonicEnergy = 0;
+      RT bendingEnergy = 0;
 
       // Gauss-Legendre-Quadrature (default):
       const auto &quadRule = QuadratureRules<double, gridDim>::rule(lagrangeLFE_.type(), quadOrder);
-      //TEST Gauß-Jacobi-Quadrature formula: 
+      //TEST Gauß-Jacobi-Quadrature formula:
       // const auto &quadRule = QuadratureRules<double, gridDim>::rule(lagrangeLFE_.type(), quadOrder, QuadratureType::GaussJacobi_1_0);
 
 
@@ -620,7 +605,7 @@ namespace Dune::GFE
 
         // exit(0);
 
-        // Determine macro phase and type 
+        // Determine macro phase and type
         int currentPhase = macroPhaseIndicatorLocalFunction_(quadPos);
 
         // bool constantMicrostructure = true;
@@ -630,18 +615,18 @@ namespace Dune::GFE
 
         if(!constantMicrostructure)
         {
-           std::cout << "Compute effective quantities at current quadrature point: " << element.geometry().global(quadPos) << std::endl;
+          std::cout << "Compute effective quantities at current quadrature point: " << element.geometry().global(quadPos) << std::endl;
+
 
-          
           // microProblem_.insert({(currentPhase-1),std::make_shared<MicroProblem>(LocalMicrostructureClass_[(currentPhase-1)](),parameterSet_, module_)});
           // (microProblem_[(currentPhase-1)])->getEffectiveQuantities(Beff_[(currentPhase-1)],Qhom_[(currentPhase-1)]); //this doesnt work in const-method?!
 
-          auto currentMicroProblem = std::make_shared<MicroProblem>(LocalMicrostructureClass_[(currentPhase-1)](),parameterSet_, module_);
+          auto currentMicroProblem = std::make_shared<MicroProblem>(LocalMicrostructureClass_[(currentPhase-1)](element.geometry().global(quadPos)),parameterSet_, module_);
           currentMicroProblem->getEffectiveQuantities(Beff_[(currentPhase-1)],Qhom_[(currentPhase-1)]);
 
           // auto microProblem = microProblem_.find(currentPhase);
 
-          // ((*microProblem).second)->updateMicrostructure(LocalMicrostructureClass_[(currentPhase-1)](element.geometry().global(quadPos))); 
+          // ((*microProblem).second)->updateMicrostructure(LocalMicrostructureClass_[(currentPhase-1)](element.geometry().global(quadPos)));
           // ((*microProblem).second)->getEffectiveQuantities(Beff_[(currentPhase-1)],Qhom_[(currentPhase-1)]);
         }
 
@@ -658,41 +643,41 @@ namespace Dune::GFE
 
         //     //USAGE:
 
-        //   //TODO 
+        //   //TODO
         //   //create instance of globalMicrostructure_Class_
         //   // Python::Reference globalMicrostructure_ = globalMicrostructure_Class_();
         //   // //get LocalMicrostructureClass
         //   // Python::Callable LocalMicrostructureClass = globalMicrostructure_.get("LocalMicrostructure_1");
 
-          
+
 
         //   auto microProblem = microProblem_.find(0);
 
-        //   ((*microProblem).second)->updateMicrostructure(LocalMicrostructureClass_[0](element.geometry().global(quadPos))); 
+        //   ((*microProblem).second)->updateMicrostructure(LocalMicrostructureClass_[0](element.geometry().global(quadPos)));
         //   ((*microProblem).second)->getEffectiveQuantities(Beff_[0],Qhom_[0]);
 
-        //   // (*microProblem_[0])->updateMicrostructure(LocalMicrostructureClass_[0](element.geometry().global(quadPos))); 
+        //   // (*microProblem_[0])->updateMicrostructure(LocalMicrostructureClass_[0](element.geometry().global(quadPos)));
         //   // (*microProblem_[0])->getEffectiveQuantities(Beff_[0],Qhom_[0]);
 
-          
+
         //   //easier to simply create new microProblem object ...
 
 
-        //   // microProblem_->updateMicrostructure(LocalMicrostructureClass_[0](element.geometry().global(quadPos))); 
+        //   // microProblem_->updateMicrostructure(LocalMicrostructureClass_[0](element.geometry().global(quadPos)));
         //   // microProblem_->getEffectiveQuantities(Beff_[0],Qhom_[0]);
-        //   // microProblem_->updateMicrostructure(microstructureClass_(element.geometry().global(quadPos))); 
+        //   // microProblem_->updateMicrostructure(microstructureClass_(element.geometry().global(quadPos)));
         //   // microProblem_->getEffectiveQuantities(Beff_,Qhom_,count);
 
         //   // count++;
 
-        
+
 
         //   /**
-        //    * @brief  TODO .. 
-        //    * 
+        //    * @brief  TODO ..
+        //    *
         //    *        1.information from each quadrature point has to enter.
         //    *        2. Caching of Effective Quantities
-        //    * 
+        //    *
         //    */
 
         //   // exit(0);
@@ -705,30 +690,35 @@ namespace Dune::GFE
 
 
 
-        //Get values of the P2-Basis functions on current quadrature point
-        std::vector<FieldVector<double,1>> basisValues;
-        lagrangeLFE_.localBasis().evaluateFunction(quadPos, basisValues);
+        // //Get values of the P2-Basis functions on current quadrature point
+        // std::vector<FieldVector<double,1> > basisValues;
+        // lagrangeLFE_.localBasis().evaluateFunction(quadPos, basisValues);
 
-        const auto geometryJacobianInverse = geometry.jacobianInverse(quadPos);
-        std::vector<FieldMatrix<double,1,gridDim> > gradients;
-        lagrangeLFE_.localBasis().evaluateJacobian(quadPos, gradients);
+        // const auto geometryJacobianInverse = geometry.jacobianInverse(quadPos);
+        // std::vector<FieldMatrix<double,1,gridDim> > gradients;
+        // lagrangeLFE_.localBasis().evaluateJacobian(quadPos, gradients);
 
-        for (size_t i=0; i< gradients.size(); i++)
-           gradients[i] = gradients[i] * geometryJacobianInverse;
+        // for (size_t i=0; i< gradients.size(); i++)
+        //   gradients[i] = gradients[i] * geometryJacobianInverse;
 
 
-        Tensor3<RT,3,gridDim,gridDim> discreteHessian(0); 
-        FieldMatrix<RT, 3, gridDim> discreteGradient(0);
+        // Tensor3<RT,3,gridDim,gridDim> discreteHessian(0);
+        // FieldMatrix<RT, 3, gridDim> discreteGradient(0);
+
+        // for (int k=0; k<3; k++)
+        //   for (int l=0; l<gridDim; l++)
+        //     for (std::size_t i=0; i<lagrangeLFE_.size(); i++)
+        //     {
+        //       discreteGradient[k][l]    += discreteJacobianCoefficients[i][k][l]*basisValues[i];
+        //       discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0][0];
+        //       discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0][1];
+        //     }
+
+        // Evaluate discrete Gradient and Hessian.
+        auto discreteGradient= localFunction_.evaluateDiscreteGradient(quadPoint.position());
+        auto discreteHessian= localFunction_.evaluateDiscreteHessian(quadPoint.position());
+
 
-        for (int k=0; k<3; k++)
-        for (int l=0; l<gridDim; l++)
-        for (std::size_t i=0; i<lagrangeLFE_.size(); i++)
-        {
-            discreteGradient[k][l]    += discreteJacobianCoefficients[i][k][l]*basisValues[i];
-            discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0][0];
-            discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0][1];
-        }
-      
         if(PRINT_DEBUG)
         {
           /**
@@ -739,27 +729,27 @@ namespace Dune::GFE
           FieldMatrix<RT, gridDim, gridDim> discreteHessian_slice3(0);
 
           for (int i=0; i<gridDim; i++)
-          for (int l=0; l<gridDim; l++)
-          {
+            for (int l=0; l<gridDim; l++)
+            {
               discreteHessian_slice1[i][l] = discreteHessian[0][i][l];
               discreteHessian_slice2[i][l] = discreteHessian[1][i][l];
               discreteHessian_slice3[i][l] = discreteHessian[2][i][l];
-          }
-          printmatrix(std::cout, discreteHessian_slice1, "discreteHessian_slice1: ", "--");
-          printmatrix(std::cout, discreteHessian_slice2, "discreteHessian_slice2: ", "--");
-          printmatrix(std::cout, discreteHessian_slice3, "discreteHessian_slice3: ", "--");
-          printmatrix(std::cout, sym(discreteHessian_slice1), "SYM discreteHessian_slice1: ", "--");
-          printmatrix(std::cout, sym(discreteHessian_slice2), "SYM discreteHessian_slice2: ", "--");
-          printmatrix(std::cout, sym(discreteHessian_slice3), "SYM discreteHessian_slice3: ", "--");
+            }
+          // printmatrix(std::cout, discreteHessian_slice1, "discreteHessian_slice1: ", "--");
+          // printmatrix(std::cout, discreteHessian_slice2, "discreteHessian_slice2: ", "--");
+          // printmatrix(std::cout, discreteHessian_slice3, "discreteHessian_slice3: ", "--");
+          // printmatrix(std::cout, sym(discreteHessian_slice1), "SYM discreteHessian_slice1: ", "--");
+          // printmatrix(std::cout, sym(discreteHessian_slice2), "SYM discreteHessian_slice2: ", "--");
+          // printmatrix(std::cout, sym(discreteHessian_slice3), "SYM discreteHessian_slice3: ", "--");
         }
 
 
 
         /**
-         * @brief Compute the normal vector of the surface parametrized by the 
-         *        discrete deformation. This is given by the 
+         * @brief Compute the normal vector of the surface parametrized by the
+         *        discrete deformation. This is given by the
          *        cross product of partial derivatives
-         */       
+         */
         FieldVector<RT,3> partialX = {discreteGradient[0][0], discreteGradient[1][0], discreteGradient[2][0]};
         FieldVector<RT,3> partialY = {discreteGradient[0][1], discreteGradient[1][1], discreteGradient[2][1]};
         // Normalize if requested
@@ -780,16 +770,26 @@ namespace Dune::GFE
          * @brief Compute the second fundamental form of the surface parametrized by the
          *        discrete deformation.
          *        We have to multiply by (-1.0) to get the right sign/normal/orientation.
-         */       
+         */
         FieldMatrix<RT,gridDim,gridDim> secondFF(0);
 
         for(size_t m=0; m<2; m++)
-        for(size_t n=0; n<2; n++)
-        for(size_t k=0; k<3; k++) 
-          secondFF[m][n] += surfaceNormal[k]*discreteHessian[k][n][m];
+          for(size_t n=0; n<2; n++)
+            for(size_t k=0; k<3; k++)
+              secondFF[m][n] += surfaceNormal[k]*discreteHessian[k][n][m];
         // To get the right sign:
         secondFF *= -1.0;
 
+        if(PRINT_DEBUG)
+        {
+          // Check Symmetry of discrete second fundamental form
+          if((secondFF - sym(secondFF)).frobenius_norm() > 1e-8)
+          {
+            std::cout << "frobenius-norm of skew-symmetric part of discrete second fundamental form :" << (secondFF - sym(secondFF)).frobenius_norm() << std::endl;
+            printmatrix(std::cout, secondFF, "secondFF: ", "--");
+          }
+        
+        }
 
         /**
          * @brief Compute the first term: Qhom(II)
@@ -799,17 +799,15 @@ namespace Dune::GFE
         RT term1 = 0.0;
 
 
-        std::vector<FieldVector<RT,3>> X(3);
+        std::vector<FieldVector<RT,3> > X(3);
         tensorToSymCoefficients(discreteHessian, X);
 
-        // apply Qhom to each slice of the Hessian... 
+        // apply Qhom to each slice of the Hessian...
         for(int k=0; k<3; k++)
-          term1 += applyQhom(Qhom_[currentPhase-1],X[k], X[k]); 
-      
-
-        term1 *= weight;
+          term1 += applyQhom(Qhom_[currentPhase-1],X[k], X[k]);
 
 
+        term1 *= weight;
 
 
         /**
@@ -826,50 +824,25 @@ namespace Dune::GFE
         RT term3 = weight * applyQhom(Qhom_[currentPhase-1],BeffCoefficients,BeffCoefficients);
 
 
-        harmonicEnergy +=  term1 - term2 + term3;     
-        // std::cout << "harmonicEnergy: " << harmonicEnergy << std::endl;
-        
+        bendingEnergy +=  term1 - term2 + term3;
+        // std::cout << "bendingEnergy: " << bendingEnergy << std::endl;
+
 
         /**
          * @brief Test: Discretize II-Beff directly.
          *              This time with higher quad orders.
          *              * Does not seem to produce good results..
-         * 
+         *
          */
         // RT newTerm = weight* applyQhom(Qhom_[currentPhase-1],(secondFFCoefficients - BeffCoefficients),(secondFFCoefficients - BeffCoefficients));
-        // harmonicEnergy += newTerm;
+        // bendingEnergy += newTerm;
 
       }
-      
 
-
-      /**
-       * @brief Compute contribution of the force Term
-       * 
-       * Integrate the scalar product of the force 'f' 
-       * with the local deformation function 'localFunction_'
-       * over the current element.
-       */
-      RT forceTermEnergy = 0;
-
-      if (parameterSet_.get<bool>("assemble_force_term", 1))
-      {
-        for (auto&& quadPoint : quadRule)
-        {
-            auto deformationValue = localFunction_.evaluate(quadPoint.position());
-            auto forceValue = localForce_(quadPoint.position());
-            auto weight = quadPoint.weight() * element.geometry().integrationElement(quadPoint.position());
-            forceTermEnergy += deformationValue.globalCoordinates() * forceValue * weight;
-        }
-      }
-
-      /**
-       * @brief Return total energy.
-       */
-      return harmonicEnergy - forceTermEnergy;
+      return bendingEnergy;
     }
 
   };
 
 }  // namespace Dune::GFE
-#endif
\ No newline at end of file
+#endif
diff --git a/dune/microstructure/energies/discretekirchhoffbendingenergyprestrained_debug.hh b/dune/microstructure/energies/discretekirchhoffbendingenergyprestrained_debug.hh
index c6c5091307d64b0c7902b242a0732bdae9dfd733..2d2994da6edfa804596e579972e7294c53fd9d42 100644
--- a/dune/microstructure/energies/discretekirchhoffbendingenergyprestrained_debug.hh
+++ b/dune/microstructure/energies/discretekirchhoffbendingenergyprestrained_debug.hh
@@ -11,18 +11,18 @@
 #include <dune/localfunctions/lagrange/lagrangesimplex.hh>
 
 #include <cmath>
-/** 
- * \brief Assemble the discrete Kirchhoff bending energy for a single element. 
- * 
- *  The Kirchhoff bending energy consists of two parts: 
- * 
- *  1. The energy of  Qhom(II - Beff) where II is the second fundamental form of the surface parametrized by the deformation function 
- *     and Beff is a (given) effective prestrain tensor. 
- * 
+/**
+ * \brief Assemble the discrete Kirchhoff bending energy for a single element.
+ *
+ *  The Kirchhoff bending energy consists of two parts:
+ *
+ *  1. The energy of  Qhom(II - Beff) where II is the second fundamental form of the surface parametrized by the deformation function
+ *     and Beff is a (given) effective prestrain tensor.
+ *
  *     This contribution is split intro three parts which corresponds to the binomial formula (a+b)^2 = a^2 + 2ab + b^2
  *     each term is discretized separately.
- * 
- *  2. An integral over the scalar product of a forcing term and the discrete deformation 
+ *
+ *  2. An integral over the scalar product of a forcing term and the discrete deformation
  *  (i.e. the evaluation of localFunction_ ).
  */
 namespace Dune::GFE
@@ -45,17 +45,17 @@ namespace Dune::GFE
 
   public:
     DiscreteKirchhoffBendingEnergyPrestrained(LocalDiscreteKirchhoffFunction &localFunction,
-                                   LocalForce &localForce,
-                                   const Dune::ParameterTree& parameterSet)
-        : localFunction_(localFunction),
-          localForce_(localForce),
-          parameterSet_(parameterSet)
+                                              LocalForce &localForce,
+                                              const Dune::ParameterTree& parameterSet)
+      : localFunction_(localFunction),
+      localForce_(localForce),
+      parameterSet_(parameterSet)
     {}
 
 
     /** \brief Assemble the energy for a single element */
-    virtual RT energy (const typename Basis::LocalView& localView,         
-               const  std::vector<TargetSpace>& localSolution) const       
+    virtual RT energy (const typename Basis::LocalView& localView,
+                       const std::vector<TargetSpace>& localSolution) const
     {
       RT energy = 0;
 
@@ -70,27 +70,27 @@ namespace Dune::GFE
       // MatrixType Qhom = quadraticForm_;
 
 
-        /**
+      /**
        * @brief Get effective prestrain Tensor
        */
-      Dune::FieldVector<RT,3> Beffvec = parameterSet_.get<Dune::FieldVector<RT,3>>("effectivePrestrain", {0.0, 0.0, 0.0});
+      Dune::FieldVector<RT,3> Beffvec = parameterSet_.get<Dune::FieldVector<RT,3> >("effectivePrestrain", {0.0, 0.0, 0.0});
       Dune::FieldMatrix<RT,2,2> Beff = {{Beffvec[0], Beffvec[2]}, {Beffvec[2], Beffvec[1]} };
       // printmatrix(std::cout, Beff, "effective prestrain (Beff): ", "--");
 
 
       /**
        * @brief Get effective quadratic form Qhom
-       * 
+       *
        *  input-vector: [q_1,q_2,q_3,q_12,q_13,q_23]
        *  is assembled into a matrix where the off-diagonal entries are divided by 2 (compare with definition in the paper)
        *            (   q_1    , 0.5*q_12  ,  0.5*q_13 )
        *     Q =    ( 0.5*q_12 ,   q_2     ,  0.5*q_23 )
        *            ( 0.5*q_13 , 0.5*q_23  ,    q_3    )
        */
-      Dune::FieldVector<RT,6> Qhomvec = parameterSet_.get<Dune::FieldVector<RT,6>>("effectiveQuadraticForm", {1.0, 1.0, 1.0, 0.0, 0.0, 0.0});
-      MatrixType Qhom = {{Qhomvec[0]    , 0.5*Qhomvec[3], 0.5*Qhomvec[4]}, 
-                         {0.5*Qhomvec[3],     Qhomvec[1], 0.5*Qhomvec[5]},
-                         {0.5*Qhomvec[4], 0.5*Qhomvec[5],     Qhomvec[2]}};
+      Dune::FieldVector<RT,6> Qhomvec = parameterSet_.get<Dune::FieldVector<RT,6> >("effectiveQuadraticForm", {1.0, 1.0, 1.0, 0.0, 0.0, 0.0});
+      MatrixType Qhom = {{Qhomvec[0]    , 0.5*Qhomvec[3], 0.5*Qhomvec[4]},
+        {0.5*Qhomvec[3],     Qhomvec[1], 0.5*Qhomvec[5]},
+        {0.5*Qhomvec[4], 0.5*Qhomvec[5],     Qhomvec[2]}};
       // printmatrix(std::cout, Qhom, "effective quadratic form (Qhom): ", "--");
 
 
@@ -110,7 +110,7 @@ namespace Dune::GFE
         quadOrder = (localFiniteElement.type().isSimplex()) ? (localFiniteElement.localBasis().order() - 1) * 2
                                                             : (localFiniteElement.localBasis().order() * gridDim - 1) * 2;
 #endif
-      
+
       const auto element = localView.element();
       auto geometry = element.geometry();
       auto gridView = localFunction_.gridView();
@@ -131,40 +131,40 @@ namespace Dune::GFE
       // std::cout <<"ELEMENT NUMBER( indexSet.index(element)) ):" << indexSet.index(element) << std::endl;
       if(PRINT_DEBUG)
       {
-      std::cout << "geometry.corner(0): " << geometry.corner(0) << std::endl;
-      std::cout << "geometry.corner(1)): " << geometry.corner(1) << std::endl;
-      std::cout << "geometry.corner(2): " << geometry.corner(2) << std::endl;
+        std::cout << "geometry.corner(0): " << geometry.corner(0) << std::endl;
+        std::cout << "geometry.corner(1)): " << geometry.corner(1) << std::endl;
+        std::cout << "geometry.corner(2): " << geometry.corner(2) << std::endl;
       }
 
 
       /**
-       * @brief  Get Coefficients of the discrete Jacobian 
-       * 
+       * @brief  Get Coefficients of the discrete Jacobian
+       *
        * The discrete Jacobian is a special linear combination represented in a [P2]^2 - (Lagrange) space
        * The coefficients of this linear combination correspond to certain linear combinations of the Jacobians of localfunction_ .
        * The coefficients are stored in the form [Basisfunctions x components x gridDim]
        * in a BlockVector<FieldMatrix<RT, 3, gridDim>> .
        */
-      BlockVector<FieldMatrix<RT, 3, gridDim>> discreteJacobianCoefficients;
+      BlockVector<FieldMatrix<RT, 3, gridDim> > discreteJacobianCoefficients;
       discreteGradientCoefficients(discreteJacobianCoefficients,lagrangeLFE_,localFunction_,element);
-    
-    
-    
-  
+
+
+
+
 
       /**
        * @brief Compute harmonic energy contribution:
        */
       RT harmonicEnergy = 0;
 
-      
+
 
       //VERSION - 1
 
       #if 0
       /**
-       * @brief Setup Quadrature rule. 
-       * 
+       * @brief Setup Quadrature rule.
+       *
        */
       // Gauss-Quadrature:
       const auto &quadRule = QuadratureRules<double, gridDim>::rule(lagrangeLFE_.type(), quadOrder);
@@ -175,7 +175,7 @@ namespace Dune::GFE
       for (auto&& quadPoint : quadRule)
       {
         //Get values of the P2-Basis functions on current quadrature point
-        std::vector<FieldVector<double,1>> basisValues;
+        std::vector<FieldVector<double,1> > basisValues;
         lagrangeLFE_.localBasis().evaluateFunction(quadPoint.position(), basisValues);
 
         // if(PRINT_DEBUG)
@@ -186,14 +186,14 @@ namespace Dune::GFE
         // }
 
         // Get Jacobians of the P2-Basis functions on current quadrature point
-        std::vector<FieldMatrix<double, 1, gridDim>> referenceGradients;
+        std::vector<FieldMatrix<double, 1, gridDim> > referenceGradients;
 
         lagrangeLFE_.localBasis().evaluateJacobian(quadPoint.position(), referenceGradients);
         const auto jacobian = geometry.jacobianInverseTransposed(quadPoint.position());
         const auto integrationElement = geometry.integrationElement(quadPoint.position());
         // printmatrix(std::cout, jacobian , "jacobian : ", "--");
 
-        std::vector<FieldVector<RT, gridDim>> gradients(referenceGradients.size());
+        std::vector<FieldVector<RT, gridDim> > gradients(referenceGradients.size());
         for (size_t i = 0; i<gradients.size(); i++)
           jacobian.mv(referenceGradients[i][0], gradients[i]);
 
@@ -203,30 +203,30 @@ namespace Dune::GFE
         // lagrangeLFE_.localBasis().evaluateJacobian(quadPoint.position(), gradients);
 
 
-        Tensor3<RT,3,2,2> discreteHessian(0); 
+        Tensor3<RT,3,2,2> discreteHessian(0);
         FieldMatrix<RT, 3, gridDim> discreteGradient(0);
 
 
-      /**
-       * @brief Compute the discrete Hessian and discrete Gradient as a linear combination of 
-       * function and gradient evaluations of the P2-basis functions with the coefficients given 
-       * by 'discreteJacobianCoefficients'. 
-       * Since the deformation function has k=3 components we get 
-       * - discreteGradient : 3x2   matrix
-       * - discreteHessian:   3x2x2 tensor
-       */
+        /**
+         * @brief Compute the discrete Hessian and discrete Gradient as a linear combination of
+         * function and gradient evaluations of the P2-basis functions with the coefficients given
+         * by 'discreteJacobianCoefficients'.
+         * Since the deformation function has k=3 components we get
+         * - discreteGradient : 3x2   matrix
+         * - discreteHessian:   3x2x2 tensor
+         */
         for (int k=0; k<3; k++)
-        for (int l=0; l<gridDim; l++)
-        for(std::size_t i=0; i<lagrangeLFE_.size(); i++)
-        {
-            // Compute discrete gradient
-            discreteGradient[k][l] += discreteJacobianCoefficients[i][k][l]*basisValues[i];
-            // Compute discrete Hessian
-            discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0];
-            discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][1];
-            // discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0][0];
-            // discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0][1];
-        }
+          for (int l=0; l<gridDim; l++)
+            for(std::size_t i=0; i<lagrangeLFE_.size(); i++)
+            {
+              // Compute discrete gradient
+              discreteGradient[k][l] += discreteJacobianCoefficients[i][k][l]*basisValues[i];
+              // Compute discrete Hessian
+              discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0];
+              discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][1];
+              // discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0][0];
+              // discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0][1];
+            }
 
 
         // DerivativeType whJacobianValue = localFunction_.evaluateDerivative(quadPoint.position());
@@ -239,7 +239,7 @@ namespace Dune::GFE
 
 
         //
-       
+
 
 
 
@@ -262,17 +262,17 @@ namespace Dune::GFE
 
         // if(PRINT_DEBUG)
         // {
-          /**
-           * @brief print the (two) different 3x2 slices of the discrete Hessian
-           */
+        /**
+         * @brief print the (two) different 3x2 slices of the discrete Hessian
+         */
         FieldMatrix<RT, 3, 2> discreteHessian_slice1(0);
         FieldMatrix<RT, 3, 2> discreteHessian_slice2(0);
         for (int k=0; k<3; k++)
-        for (int l=0; l<gridDim; l++)
-        {
+          for (int l=0; l<gridDim; l++)
+          {
             discreteHessian_slice1[k][l] = discreteHessian[k][l][0];
             discreteHessian_slice2[k][l] = discreteHessian[k][l][1];
-        }
+          }
         //  printmatrix(std::cout, discreteHessian_slice1, "discreteHessian_slice1: ", "--");
         //  printmatrix(std::cout, discreteHessian_slice2, "discreteHessian_slice2: ", "--");
         // }
@@ -287,7 +287,7 @@ namespace Dune::GFE
 
 
         /**
-         * @brief Compute the surface normal given by the cross-product of the two different partial derivatives 
+         * @brief Compute the surface normal given by the cross-product of the two different partial derivatives
          *        of the discrete gradient.
          *        This is needed to compute the second fundamental form.
          */
@@ -299,7 +299,7 @@ namespace Dune::GFE
         auto normY = partialY.two_norm();
 
         /**
-         * @brief Test: normalize 
+         * @brief Test: normalize
          */
         // partialX /= normX;
         // partialY /= normY;
@@ -311,9 +311,9 @@ namespace Dune::GFE
         // std::cout << "surfaceNormal.two_norm() : " << surfaceNormal.two_norm() << std::endl;
 
         // surfaceNormal *= -1.0;
- 
+
         /**
-         * @brief Test: normalize 
+         * @brief Test: normalize
          */
         // auto norm = surfaceNormal.two_norm();
         // surfaceNormal /= norm;
@@ -326,24 +326,24 @@ namespace Dune::GFE
         FieldMatrix<RT,2,2> secondFF(0);
 
         for(size_t m=0; m<2; m++)
-        for(size_t n=0; n<2; n++)
-        for(size_t k=0; k<3; k++) 
-        {
-          secondFF[m][n] += surfaceNormal[k]*discreteHessian[k][n][m];
-
-
-          //Test: transposed version 
-          // secondFF[m][n] += discreteHessian[k][m][n]*surfaceNormal[k];
-          // secondFF[0][0] += surfaceNormal[k]*discreteHessian[k][0][0];
-          // secondFF[0][1] += surfaceNormal[k]*discreteHessian[k][1][0];
-          // secondFF[1][0] += surfaceNormal[k]*discreteHessian[k][0][1];
-          // secondFF[1][1] += surfaceNormal[k]*discreteHessian[k][1][1];
-        }
+          for(size_t n=0; n<2; n++)
+            for(size_t k=0; k<3; k++)
+            {
+              secondFF[m][n] += surfaceNormal[k]*discreteHessian[k][n][m];
+
+
+              //Test: transposed version
+              // secondFF[m][n] += discreteHessian[k][m][n]*surfaceNormal[k];
+              // secondFF[0][0] += surfaceNormal[k]*discreteHessian[k][0][0];
+              // secondFF[0][1] += surfaceNormal[k]*discreteHessian[k][1][0];
+              // secondFF[1][0] += surfaceNormal[k]*discreteHessian[k][0][1];
+              // secondFF[1][1] += surfaceNormal[k]*discreteHessian[k][1][1];
+            }
         // printmatrix(std::cout, secondFF , "secondFF: ", "--");
 
 
         /**
-         * @brief Check orthogonality between discrete Hessian and discrete gradient 
+         * @brief Check orthogonality between discrete Hessian and discrete gradient
          *        at nodes.
          */
         // std::cout << "---- ORTHOGONALITY CHECK 1: ----" << std::endl;
@@ -402,7 +402,7 @@ namespace Dune::GFE
         /**
          * @brief Subtract the effective prestrain
          */
-        auto G = secondFF - Beff; 
+        auto G = secondFF - Beff;
 
 
         // auto symG = 0.5*(G.transposed() + G);
@@ -415,7 +415,7 @@ namespace Dune::GFE
         auto weight = quadPoint.weight() * element.geometry().integrationElement(quadPoint.position());
 
         /**
-         * @brief TEST: Check the difference between the squared Frobenius norm of the 
+         * @brief TEST: Check the difference between the squared Frobenius norm of the
          *              second fundamental form and discrete Hessian.
          *              (Note that for isometries, these should be equal.)
          */
@@ -441,7 +441,7 @@ namespace Dune::GFE
         //   {
         //     term2 += weight * secondFF[i][j] * Beff[i][j];
         //   }
-        //   auto term3 = 0.5 * weight * Beff.frobenius_norm2();  
+        //   auto term3 = 0.5 * weight * Beff.frobenius_norm2();
         //   std::cout << "term1-term2+term3 :" << term1-term2+term3 << std::endl;
         // }
 
@@ -496,17 +496,17 @@ namespace Dune::GFE
       // std::cout << "------ print P2-Basis evaluation -----" << std::endl;
       // for(std::size_t i=0; i<lagrangeLFE_.size(); i++)
       // {
-      //   std::cout << i << "-th P2-basis function: " << std::endl; 
+      //   std::cout << i << "-th P2-basis function: " << std::endl;
       //   printvector(std::cout, basisValues_edge1[i]  , "basisValues_edge1[i]  ", "--");
       // }
       // for(std::size_t i=0; i<lagrangeLFE_.size(); i++)
       // {
-      //   std::cout << i << "-th P2-basis function: " << std::endl; 
+      //   std::cout << i << "-th P2-basis function: " << std::endl;
       //   printvector(std::cout, basisValues_edge2[i]  , "basisValues_edge2[i]  ", "--");
       // }
       // for(std::size_t i=0; i<lagrangeLFE_.size(); i++)
       // {
-      //   std::cout << i << "-th P2-basis function: " << std::endl; 
+      //   std::cout << i << "-th P2-basis function: " << std::endl;
       //   printvector(std::cout, basisValues_edge3[i]  , "basisValues_edge3[i]  ", "--");
       // }
 
@@ -538,7 +538,7 @@ namespace Dune::GFE
       // // std::cout << "cos(geometry.global({0.5,0.5})[0]): " << cos(geometry.global({0.5,0.5})[0]) << std::endl;
       // // std::cout << "sin(geometry.global({0.0,0.5})[0]): " << sin(geometry.global({0.0,0.5})[0]) << std::endl;
       // // std::cout << "cos(geometry.global({0.0,0.5})[0]): " << cos(geometry.global({0.0,0.5})[0]) << std::endl;
-      // // TEST VERTICES 
+      // // TEST VERTICES
       // // std::cout << "sin(geometry.global({0.0,0.0})[0]): " << sin(geometry.global({0.0,0.0})[0]) << std::endl;
       // // std::cout << "cos(geometry.global({0.0,0.0})[0]): " << cos(geometry.global({0.0,0.0})[0]) << std::endl;
       // // std::cout << "sin(geometry.global({1.0,0.0})[0]): " << sin(geometry.global({1.0,0.0})[0]) << std::endl;
@@ -550,10 +550,10 @@ namespace Dune::GFE
       // exit(0);
 
 
-      // #if 0 
+      // #if 0
       /**
-       * @brief VERSION - 2 : Mixed version using the binomal formula (a-b)^2 = a^2 - 2ab + b^2 
-       *                      for | II - Beff |^2 and discretize every term individually. 
+       * @brief VERSION - 2 : Mixed version using the binomal formula (a-b)^2 = a^2 - 2ab + b^2
+       *                      for | II - Beff |^2 and discretize every term individually.
        */
       // Gauss-Quadrature:
       const auto &quadRule = QuadratureRules<double, gridDim>::rule(lagrangeLFE_.type(), quadOrder);
@@ -565,49 +565,49 @@ namespace Dune::GFE
       {
 
         //Get values of the P2-Basis functions on current quadrature point
-        std::vector<FieldVector<double,1>> basisValues;
+        std::vector<FieldVector<double,1> > basisValues;
         lagrangeLFE_.localBasis().evaluateFunction(quadPoint.position(), basisValues);
 
 
         // Get Jacobians of the P2-Basis functions on current quadrature point
-        std::vector<FieldMatrix<double, 1, gridDim>> referenceGradients;
+        std::vector<FieldMatrix<double, 1, gridDim> > referenceGradients;
 
         lagrangeLFE_.localBasis().evaluateJacobian(quadPoint.position(), referenceGradients);
         const auto jacobian = geometry.jacobianInverseTransposed(quadPoint.position());
         const auto integrationElement = geometry.integrationElement(quadPoint.position());
 
-        std::vector<FieldVector<RT, gridDim>> gradients(referenceGradients.size());
+        std::vector<FieldVector<RT, gridDim> > gradients(referenceGradients.size());
         for (size_t i = 0; i<gradients.size(); i++)
           jacobian.mv(referenceGradients[i][0], gradients[i]);
 
 
-        Tensor3<RT,3,2,2> discreteHessian(0); 
+        Tensor3<RT,3,2,2> discreteHessian(0);
         FieldMatrix<RT, 3, gridDim> discreteGradient(0);
 
         for (int k=0; k<3; k++)
-        for (int l=0; l<gridDim; l++)
-        for(std::size_t i=0; i<lagrangeLFE_.size(); i++)
-        {
-            discreteGradient[k][l]    += discreteJacobianCoefficients[i][k][l]*basisValues[i];
-            discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0];
-            discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][1];
-            
-        }
-      
+          for (int l=0; l<gridDim; l++)
+            for(std::size_t i=0; i<lagrangeLFE_.size(); i++)
+            {
+              discreteGradient[k][l]    += discreteJacobianCoefficients[i][k][l]*basisValues[i];
+              discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0];
+              discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][1];
+
+            }
+
         /**
-           * @brief print the (three) 2x2 slices of the discrete Hessian (check for symmetry)
-           */
+         * @brief print the (three) 2x2 slices of the discrete Hessian (check for symmetry)
+         */
         FieldMatrix<RT, 2, 2> discreteHessian_slice1(0);
         FieldMatrix<RT, 2, 2> discreteHessian_slice2(0);
         FieldMatrix<RT, 2, 2> discreteHessian_slice3(0);
 
         for (int i=0; i<2; i++)
-        for (int l=0; l<gridDim; l++)
-        {
+          for (int l=0; l<gridDim; l++)
+          {
             discreteHessian_slice1[i][l] = discreteHessian[0][i][l];
             discreteHessian_slice2[i][l] = discreteHessian[1][i][l];
             discreteHessian_slice3[i][l] = discreteHessian[2][i][l];
-        }
+          }
 
         // printmatrix(std::cout, discreteHessian_slice1, "discreteHessian_slice1: ", "--");
         // printmatrix(std::cout, discreteHessian_slice2, "discreteHessian_slice2: ", "--");
@@ -644,20 +644,20 @@ namespace Dune::GFE
         FieldMatrix<RT,2,2> secondFF(0);
 
         for(size_t m=0; m<2; m++)
-        for(size_t n=0; n<2; n++)
-        for(size_t k=0; k<3; k++) 
-        {
-          secondFF[m][n] += surfaceNormal[k]*discreteHessian[k][n][m];
-        }
+          for(size_t n=0; n<2; n++)
+            for(size_t k=0; k<3; k++)
+            {
+              secondFF[m][n] += surfaceNormal[k]*discreteHessian[k][n][m];
+            }
 
         // To get the right sign:
         secondFF = -1.0*secondFF;
 
 
-        // substract effective prestrain 
-        // G = G + Beff; 
+        // substract effective prestrain
+        // G = G + Beff;
 
-        //Take symmetric part? 
+        //Take symmetric part?
         // auto symG = 0.5*(G.transposed() + G);
 
 
@@ -698,9 +698,9 @@ namespace Dune::GFE
         for(int k=0; k<3; k++)
         {
           // term1 += Qhom[0][0]*pow((2.0*discreteHessian[k][0][0]),2)+ Qhom[0][1]* ... more efficient (TODO)  Qhom is symmetric
-          term1 += Qhom[0][0]*pow(X[k][0],2)    + Qhom[0][1]*X[k][1]*X[k][0]  + Qhom[0][2]*X[k][2]*X[k][0] 
-                +  Qhom[1][0]*X[k][0]*X[k][1]   + Qhom[1][1]*pow(X[k][1],2)   + Qhom[1][2]*X[k][2]*X[k][1] 
-                +  Qhom[2][0]*X[k][0]*X[k][2]   + Qhom[2][1]*X[k][1]*X[k][2]  + Qhom[2][2]*pow(X[k][2],2);
+          term1 += Qhom[0][0]*pow(X[k][0],2)    + Qhom[0][1]*X[k][1]*X[k][0]  + Qhom[0][2]*X[k][2]*X[k][0]
+                   +  Qhom[1][0]*X[k][0]*X[k][1]   + Qhom[1][1]*pow(X[k][1],2)   + Qhom[1][2]*X[k][2]*X[k][1]
+                   +  Qhom[2][0]*X[k][0]*X[k][2]   + Qhom[2][1]*X[k][1]*X[k][2]  + Qhom[2][2]*pow(X[k][2],2);
         }
         // term1 = term1 * 0.5 *  weight;
         term1 = term1 *  weight;
@@ -719,29 +719,29 @@ namespace Dune::GFE
         // {
         //   term2 += weight * secondFF[i][j] * Beff[i][j];
         // }
-        
+
 
         FieldVector<RT,3> secondFFCoefficients = matrixToSymCoefficients(secondFF);
         FieldVector<RT,3> BeffCoefficients = matrixToSymCoefficients(Beff);
 
         RT term2 = 0.0;
-          term2 += Qhom[0][0]*BeffCoefficients[0]*secondFFCoefficients[0] + Qhom[0][1]*BeffCoefficients[1]*secondFFCoefficients[0] + Qhom[0][2]*BeffCoefficients[2]*secondFFCoefficients[0] 
-                +  Qhom[1][0]*BeffCoefficients[0]*secondFFCoefficients[1] + Qhom[1][1]*BeffCoefficients[1]*secondFFCoefficients[1] + Qhom[1][2]*BeffCoefficients[2]*secondFFCoefficients[1] 
-                +  Qhom[2][0]*BeffCoefficients[0]*secondFFCoefficients[2] + Qhom[2][1]*BeffCoefficients[1]*secondFFCoefficients[2] + Qhom[2][2]*BeffCoefficients[2]*secondFFCoefficients[2];
+        term2 += Qhom[0][0]*BeffCoefficients[0]*secondFFCoefficients[0] + Qhom[0][1]*BeffCoefficients[1]*secondFFCoefficients[0] + Qhom[0][2]*BeffCoefficients[2]*secondFFCoefficients[0]
+                 +  Qhom[1][0]*BeffCoefficients[0]*secondFFCoefficients[1] + Qhom[1][1]*BeffCoefficients[1]*secondFFCoefficients[1] + Qhom[1][2]*BeffCoefficients[2]*secondFFCoefficients[1]
+                 +  Qhom[2][0]*BeffCoefficients[0]*secondFFCoefficients[2] + Qhom[2][1]*BeffCoefficients[1]*secondFFCoefficients[2] + Qhom[2][2]*BeffCoefficients[2]*secondFFCoefficients[2];
         term2 = 2.0 * term2 * weight;
 
 
 
 
 
-        // auto term3 = 0.5 * weight* Beff.frobenius_norm2();        
+        // auto term3 = 0.5 * weight* Beff.frobenius_norm2();
+
+        RT term3 = 0.0;
 
-        RT term3 = 0.0;   
+        term3 += Qhom[0][0]*BeffCoefficients[0]*BeffCoefficients[0]  + Qhom[0][1]*BeffCoefficients[1]*BeffCoefficients[0] + Qhom[0][2]*BeffCoefficients[2]*BeffCoefficients[0]
+                 +  Qhom[1][0]*BeffCoefficients[0]*BeffCoefficients[1]  + Qhom[1][1]*BeffCoefficients[1]*BeffCoefficients[1] + Qhom[1][2]*BeffCoefficients[2]*BeffCoefficients[1]
+                 +  Qhom[2][0]*BeffCoefficients[0]*BeffCoefficients[2]  + Qhom[2][1]*BeffCoefficients[1]*BeffCoefficients[2] + Qhom[2][2]*BeffCoefficients[2]*BeffCoefficients[2];
 
-        term3 += Qhom[0][0]*BeffCoefficients[0]*BeffCoefficients[0]  + Qhom[0][1]*BeffCoefficients[1]*BeffCoefficients[0] + Qhom[0][2]*BeffCoefficients[2]*BeffCoefficients[0] 
-              +  Qhom[1][0]*BeffCoefficients[0]*BeffCoefficients[1]  + Qhom[1][1]*BeffCoefficients[1]*BeffCoefficients[1] + Qhom[1][2]*BeffCoefficients[2]*BeffCoefficients[1] 
-              +  Qhom[2][0]*BeffCoefficients[0]*BeffCoefficients[2]  + Qhom[2][1]*BeffCoefficients[1]*BeffCoefficients[2] + Qhom[2][2]*BeffCoefficients[2]*BeffCoefficients[2];
-      
         // term3 = term3 * 0.5 *  weight ;
         term3 = term3 *  weight ;
 
@@ -751,7 +751,7 @@ namespace Dune::GFE
         // std::cout << "term1 - term2 + term3: " << term1 - term2 + term3 << std::endl;
 
         // harmonicEnergy +=    weight *  G.frobenius_norm2();
-        harmonicEnergy +=  term1 - term2 + term3;     //eigentlich muss man term2 abziehen bei | II - Z | 
+        harmonicEnergy +=  term1 - term2 + term3;     //eigentlich muss man term2 abziehen bei | II - Z |
 
         // std::cout << "harmonicEnergy: " << harmonicEnergy << std::endl;
       }
@@ -760,8 +760,8 @@ namespace Dune::GFE
 
       #if 0
       /**
-       * @brief VERSION - 3 : Mixed version using the binomal formula (a-b)^2 = a^2 - 2ab + b^2 
-       *                      for | II - Beff |^2 and discretize every term individually. 
+       * @brief VERSION - 3 : Mixed version using the binomal formula (a-b)^2 = a^2 - 2ab + b^2
+       *                      for | II - Beff |^2 and discretize every term individually.
        *                      *But with |II|^2 instead of |D^2y|^2
        */
       // Gauss-Quadrature:
@@ -774,34 +774,34 @@ namespace Dune::GFE
       {
 
         //Get values of the P2-Basis functions on current quadrature point
-        std::vector<FieldVector<double,1>> basisValues;
+        std::vector<FieldVector<double,1> > basisValues;
         lagrangeLFE_.localBasis().evaluateFunction(quadPoint.position(), basisValues);
 
 
         // Get Jacobians of the P2-Basis functions on current quadrature point
-        std::vector<FieldMatrix<double, 1, gridDim>> referenceGradients;
+        std::vector<FieldMatrix<double, 1, gridDim> > referenceGradients;
 
         lagrangeLFE_.localBasis().evaluateJacobian(quadPoint.position(), referenceGradients);
         const auto jacobian = geometry.jacobianInverseTransposed(quadPoint.position());
         const auto integrationElement = geometry.integrationElement(quadPoint.position());
 
-        std::vector<FieldVector<RT, gridDim>> gradients(referenceGradients.size());
+        std::vector<FieldVector<RT, gridDim> > gradients(referenceGradients.size());
         for (size_t i = 0; i<gradients.size(); i++)
           jacobian.mv(referenceGradients[i][0], gradients[i]);
 
 
-        Tensor3<RT,3,2,2> discreteHessian(0); 
+        Tensor3<RT,3,2,2> discreteHessian(0);
         FieldMatrix<RT, 3, gridDim> discreteGradient(0);
 
         for (int k=0; k<3; k++)
-        for (int l=0; l<gridDim; l++)
-        for(std::size_t i=0; i<lagrangeLFE_.size(); i++)
-        {
-            discreteGradient[k][l] += discreteJacobianCoefficients[i][k][l]*basisValues[i];
-            discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0];
-            discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][1];
-            
-        }
+          for (int l=0; l<gridDim; l++)
+            for(std::size_t i=0; i<lagrangeLFE_.size(); i++)
+            {
+              discreteGradient[k][l] += discreteJacobianCoefficients[i][k][l]*basisValues[i];
+              discreteHessian[k][l][0]  += discreteJacobianCoefficients[i][k][l]*gradients[i][0];
+              discreteHessian[k][l][1]  += discreteJacobianCoefficients[i][k][l]*gradients[i][1];
+
+            }
 
 
         //compute normal vector (cross product of partial derivatives)
@@ -831,22 +831,22 @@ namespace Dune::GFE
         FieldMatrix<RT,2,2> secondFF(0);
 
         for(size_t m=0; m<2; m++)
-        for(size_t n=0; n<2; n++)
-        for(size_t k=0; k<3; k++) 
-        {
-          secondFF[m][n] += surfaceNormal[k]*discreteHessian[k][n][m];
-          //Test: transposed version 
-          // secondFF[m][n] += discreteHessian[k][m][n]*surfaceNormal[k];
-          // secondFF[0][0] += surfaceNormal[k]*discreteHessian[k][0][0];
-          // secondFF[0][1] += surfaceNormal[k]*discreteHessian[k][1][0];
-          // secondFF[1][0] += surfaceNormal[k]*discreteHessian[k][0][1];
-          // secondFF[1][1] += surfaceNormal[k]*discreteHessian[k][1][1];
-        }
-
-        // substract effective prestrain 
-        // G = G + Beff; 
-
-        //Take symmetric part? 
+          for(size_t n=0; n<2; n++)
+            for(size_t k=0; k<3; k++)
+            {
+              secondFF[m][n] += surfaceNormal[k]*discreteHessian[k][n][m];
+              //Test: transposed version
+              // secondFF[m][n] += discreteHessian[k][m][n]*surfaceNormal[k];
+              // secondFF[0][0] += surfaceNormal[k]*discreteHessian[k][0][0];
+              // secondFF[0][1] += surfaceNormal[k]*discreteHessian[k][1][0];
+              // secondFF[1][0] += surfaceNormal[k]*discreteHessian[k][0][1];
+              // secondFF[1][1] += surfaceNormal[k]*discreteHessian[k][1][1];
+            }
+
+        // substract effective prestrain
+        // G = G + Beff;
+
+        //Take symmetric part?
         // auto symG = 0.5*(G.transposed() + G);
 
 
@@ -885,12 +885,12 @@ namespace Dune::GFE
         RT term2 = 0.0;
 
         for(size_t i=0; i<2; i++)
-        for(size_t j=0; j<2; j++)
-        {
-          term2 += weight * secondFF[i][j] * Beff[i][j];
-        }
+          for(size_t j=0; j<2; j++)
+          {
+            term2 += weight * secondFF[i][j] * Beff[i][j];
+          }
 
-        auto term3 = 0.5 * weight* Beff.frobenius_norm2();           
+        auto term3 = 0.5 * weight* Beff.frobenius_norm2();
 
         // std::cout << "term1: " << term1 << std::endl;
         // std::cout << "term2: " << term2 << std::endl;
@@ -898,7 +898,7 @@ namespace Dune::GFE
         // std::cout << "term1 - term2 + term3: " << term1 - term2 + term3 << std::endl;
 
         // harmonicEnergy +=    weight *  G.frobenius_norm2();
-        harmonicEnergy +=   term1 - term2 + term3;     //eigentlich muss man term2 abziehen bei | II - Z | 
+        harmonicEnergy +=   term1 - term2 + term3;     //eigentlich muss man term2 abziehen bei | II - Z |
 
         // std::cout << "harmonicEnergy: " << harmonicEnergy << std::endl;
       }
@@ -907,8 +907,8 @@ namespace Dune::GFE
 
       /**
        * @brief Compute contribution of the force Term
-       * 
-       * Integrate the scalar product of the force 'f' 
+       *
+       * Integrate the scalar product of the force 'f'
        * with the local deformation function 'localFunction_'
        * over the current element.
        */
@@ -918,17 +918,17 @@ namespace Dune::GFE
       {
         for (auto&& quadPoint : quadRule)
         {
-            auto deformationValue = localFunction_.evaluate(quadPoint.position());
-            auto forceValue = localForce_(quadPoint.position());
-            // printvector(std::cout, deformationValue.globalCoordinates(), "deformationValue", "--");
-            // printvector(std::cout, forceValue, "forceValue", "--");
-            // const auto jacobian = geometry.jacobianInverseTransposed(quadPoint.position());
-            auto weight = quadPoint.weight() * element.geometry().integrationElement(quadPoint.position());
-            forceTermEnergy += deformationValue.globalCoordinates() * forceValue * weight;
-            // std::cout << "forceTermEnergy:" << forceTermEnergy << std::endl;
+          auto deformationValue = localFunction_.evaluate(quadPoint.position());
+          auto forceValue = localForce_(quadPoint.position());
+          // printvector(std::cout, deformationValue.globalCoordinates(), "deformationValue", "--");
+          // printvector(std::cout, forceValue, "forceValue", "--");
+          // const auto jacobian = geometry.jacobianInverseTransposed(quadPoint.position());
+          auto weight = quadPoint.weight() * element.geometry().integrationElement(quadPoint.position());
+          forceTermEnergy += deformationValue.globalCoordinates() * forceValue * weight;
+          // std::cout << "forceTermEnergy:" << forceTermEnergy << std::endl;
         }
       }
-    
+
       return harmonicEnergy - forceTermEnergy;
     }
 
@@ -947,4 +947,4 @@ namespace Dune::GFE
   };
 
 }  // namespace Dune::GFE
-#endif
\ No newline at end of file
+#endif
diff --git a/dune/microstructure/localdiscretekirchhoffbendingisometry.hh b/dune/microstructure/localdiscretekirchhoffbendingisometry.hh
new file mode 100644
index 0000000000000000000000000000000000000000..6ebf07fe88a13d9f1e19ff29652644cf431ccfd5
--- /dev/null
+++ b/dune/microstructure/localdiscretekirchhoffbendingisometry.hh
@@ -0,0 +1,388 @@
+#ifndef DUNE_MICROSTRUCTURE_LOCALDISCRETEKIRCHHOFFBENDINGISOMETRY_HH
+#define DUNE_MICROSTRUCTURE_LOCALDISCRETEKIRCHHOFFBENDINGISOMETRY_HH
+
+#include <vector>
+
+#include <dune/common/fvector.hh>
+
+#include <dune/geometry/type.hh>
+#include <dune/geometry/quadraturerules.hh>
+
+#include <dune/gfe/spaces/productmanifold.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rotation.hh>
+#include <dune/gfe/functions/localisometrycomponentfunction.hh>
+#include <dune/gfe/localprojectedfefunction.hh>
+#include <dune/gfe/bendingisometryhelper.hh>
+
+#include <dune/functions/functionspacebases/cubichermitebasis.hh>
+
+namespace Dune::GFE
+{
+  /** \brief Interpolate a Discrete Kirchhoff finite element function from a set of RealTuple x Rotation coefficients
+   *
+   * The Discrete Kirchhoff finite element is a Hermite-type element.
+   * The Rotation component of the coefficient set represents the deformation gradient.
+   *
+   * The class stores both a global coefficient vector 'coefficients_'
+   * as well as a local coefficient vector 'localHermiteCoefficients_'
+   * that is used for local evaluation after binding to an element.
+   *
+   *
+   * \tparam DiscreteKirchhoffBasis The basis used to compute function values
+   * \tparam CoefficientBasis The basis used to index the coefficient vector.
+   * \tparam Coefficients The container of global coefficients
+   */
+  template <int dim, class ctype, class LocalHermiteFiniteElement>
+  class LocalDiscreteKirchhoffBendingIsometry
+  {
+
+  public:
+    using TargetSpace = GFE::ProductManifold<RealTuple<double,3>, Rotation<double,3> >;
+    using ATargetSpace = typename TargetSpace::template rebind<adouble>::other;
+
+    using IsometryCoefficients = std::vector<TargetSpace>;
+
+    constexpr static int gridDim = dim;
+    using RT = ctype;
+    // using Coefficient = typename Coefficients::value_type;
+    // using RT = typename Coefficient::ctype;
+
+    static constexpr int components_ = 3;
+
+    
+    // typedef typename GFE::RealTuple<RT, components_ > ValueType;
+    using ValueType = RealTuple<double,components_>; 
+
+    typedef typename Dune::LagrangeSimplexLocalFiniteElement<ctype, double, gridDim, 1> P1LagrangeLFE;
+
+    typedef Dune::GFE::LocalProjectedFEFunction<gridDim, ctype, P1LagrangeLFE, Dune::GFE::ProductManifold<RealTuple<RT,components_>, Rotation<RT,components_> > > LocalPBInterpolationRule;
+
+    /** \brief The type used for derivatives */
+    typedef Dune::FieldMatrix<RT, components_, gridDim> DerivativeType;
+
+
+    // /** \brief Constructor
+    //  * \param basis An object of Hermite basis type
+    //  * \param coefficientBasis An object of type LagrangeBasis<GridView,1>
+    //  * \param globalIsometryCoefficients Values and derivatives of the function at the Lagrange points
+    //  */
+    // LocalDiscreteKirchhoffBendingIsometry(const DiscreteKirchhoffBasis& discreteKirchhoffBasis,
+    //                                  const CoefficientBasis& coefficientBasis,
+    //                                  Coefficients& globalIsometryCoefficients)
+    //   : basis_(discreteKirchhoffBasis),
+    //   coefficientBasis_(coefficientBasis),
+    //   localView_(basis_),
+    //   localViewCoefficient_(coefficientBasis_),
+    //   globalIsometryCoefficients_(globalIsometryCoefficients)
+    // {}
+    /** \brief Constructor
+    * \param localHermiteFiniteElement A Hermite finite element 
+    * \param coefficients Values of the function at the Lagrange points
+    */
+    LocalDiscreteKirchhoffBendingIsometry(const LocalHermiteFiniteElement& localHermiteFiniteElement,
+                                          const IsometryCoefficients& isometryCoefficients)
+    : localHermiteFiniteElement_(localHermiteFiniteElement),
+    isometryCoefficients_(isometryCoefficients)
+    {
+     convertIsometryToHermiteCoefficients(isometryCoefficients);
+    }
+
+    // /** \brief The number of Local degrees of freedom */
+    // unsigned int size() const
+    // {
+    //     return LocalHermiteFiniteElement_.localBasis().size();
+    // }
+
+    /** \brief The type of the reference element */
+    Dune::GeometryType type() const
+    {
+        return localHermiteFiniteElement_.type();
+    }
+
+    const LocalHermiteFiniteElement& localFiniteElement() const
+    {
+    return localHermiteFiniteElement_;
+    }
+
+
+    // /** \brief Evaluate the function */
+    // auto evaluate(const Dune::FieldVector<ctype, dim>& local) const;
+
+    // /** \brief Evaluate the derivative of the function */
+    // DerivativeType evaluateDerivative(const Dune::FieldVector<ctype, dim>& local) const;
+
+    // // /** \brief Evaluate the derivative of the function, if you happen to know the function value (much faster!)
+    // // *        \param local Local coordinates in the reference element where to evaluate the derivative
+    // // *        \param q Value of the local gfe function at 'local'.  If you provide something wrong here the result will be wrong, too!
+    // // *
+    // // * \note This method is only usable in the conforming setting, because it requires the caller
+    // // * to hand over the interpolation value as a TargetSpace object.
+    // // */
+    // // DerivativeType evaluateDerivative(const Dune::FieldVector<ctype, dim>& local,
+    // //                                 const TargetSpace& q) const;
+
+    // /** \brief Evaluate the value and the derivative of the interpolation function
+    // *
+    // * \return A std::pair containing the value and the first derivative of the interpolation function.
+    // * If the interpolation is conforming then the first member of the pair will be a TargetSpace.
+    // * Otherwise it will be a RealTuple.
+    // */
+    // auto evaluateValueAndDerivative(const Dune::FieldVector<ctype, dim>& local) const;
+
+
+
+    /** \brief Get the i'th base coefficient. */
+    const TargetSpace& coefficient(int i) const
+    {
+    return isometryCoefficients_[i];
+    }
+
+
+
+
+    /**
+        The coefficients are of "manifold"-type. In order to construct a linear combination of these values 
+        with the values of the Hermite-basis evaluations we need to first interpolate them into the hermite basis 
+        to get the scaling right.
+     */
+    void convertIsometryToHermiteCoefficients(const IsometryCoefficients& localIsometryCoefficients)
+    {
+    //   localViewCoefficient_.bind(element);
+
+      //Create a LocalProjected-Finite element from the local coefficients used for interpolation.
+    //   auto P1LagrangeLFE = localViewCoefficient_.tree().finiteElement();
+      Dune::LagrangeSimplexLocalFiniteElement<ctype, double, gridDim, 2> P1LagrangeLFE ;
+      LocalPBInterpolationRule localPBfunction(P1LagrangeLFE,localIsometryCoefficients);
+
+      /**
+          Interpolate into the local hermite space for each component.
+       */
+    //   const auto &localHermiteFiniteElement = localView_.tree().child(0).finiteElement();
+      for(size_t k=0; k<components_; k++)
+      {
+        std::vector<RT> hermiteComponentCoefficients;
+        Dune::GFE::Impl::LocalIsometryComponentFunction<double,LocalPBInterpolationRule> localIsometryComponentFunction(localPBfunction,k);
+
+        localHermiteFiniteElement_.localInterpolation().interpolate(localIsometryComponentFunction,hermiteComponentCoefficients);
+
+        for(size_t i=0; i<localHermiteFiniteElement_.size(); i++)
+          localHermiteCoefficients_[i][k] = hermiteComponentCoefficients[i];
+      }
+    }
+
+
+
+    // -------------------------------------------------
+
+    // void bind(const typename GridView::template Codim<0>::Entity& element)
+    // {
+    //   localView_.bind(element);
+
+    //   /** extract the local coefficients from the global coefficient vector */
+    //   std::vector<Coefficient> localIsometryCoefficients;
+    //   getLocalIsometryCoefficients(localIsometryCoefficients,element);
+    //   updateLocalHermiteCoefficients(localIsometryCoefficients,element);
+    // }
+
+    // /** bind to an element and update the coefficient member variables for a set of new local coefficients */
+    // void bind(const typename GridView::template Codim<0>::Entity& element,const Coefficients& newLocalCoefficients)
+    // {
+    //   this->bind(element);
+
+    //   // Update the global isometry coefficients.
+    //   for (unsigned int vertex=0; vertex<3; ++vertex)
+    //   {
+    //     size_t localIdx = localViewCoefficient_.tree().localIndex(vertex);
+    //     size_t globalIdx = localViewCoefficient_.index(localIdx);
+    //     globalIsometryCoefficients_[globalIdx] = newLocalCoefficients[vertex];
+    //   }
+
+    //   // Update the local hermite coefficients.
+    //   updateLocalHermiteCoefficients(newLocalCoefficients,element);
+    // }
+
+
+    /** \brief Evaluate the function */
+    auto evaluate(const Dune::FieldVector<ctype, gridDim>& local) const
+    {
+    //   const auto &localFiniteElement = localView_.tree().child(0).finiteElement();
+
+      // Evaluate the shape functions
+      std::vector<FieldVector<double, 1> > values;
+      localHermiteFiniteElement_.localBasis().evaluateFunction(local, values);
+
+      FieldVector<RT,components_> result(0);
+
+      for(size_t i=0; i<localHermiteFiniteElement_.size(); i++)
+        result.axpy(values[i][0], localHermiteCoefficients_[i]);
+
+      return (RealTuple<RT, components_>)result;
+    }
+
+    /** \brief Evaluate the derivative of the function */
+    DerivativeType evaluateDerivative(const Dune::FieldVector<ctype, gridDim>& local) const
+    {
+    //   const auto &LocalHermiteFiniteElement = localView_.tree().child(0).finiteElement();
+    //   const auto jacobianInverse = localView_.element().geometry().jacobianInverse(local);
+
+      std::vector<FieldMatrix<double,1,gridDim> > jacobianValues;
+      localHermiteFiniteElement_.localBasis().evaluateJacobian(local, jacobianValues);
+    //   for (size_t i = 0; i<jacobianValues.size(); i++)
+    //     jacobianValues[i] = jacobianValues[i] * jacobianInverse;
+
+      DerivativeType result(0);
+
+      for(size_t i=0; i<localHermiteFiniteElement_.size(); i++)
+        for (unsigned int k = 0; k<components_; k++)
+          for (unsigned int j = 0; j<gridDim; ++j)
+            result[k][j] += (jacobianValues[i][0][j] * localHermiteCoefficients_[i][k]);
+
+      return result;
+    }
+
+
+    auto evaluateValueAndDerivative(const Dune::FieldVector<ctype, dim>& local) const
+    {
+      // Construct the type of the result -- it depends on whether the interpolation
+      // is conforming or not.
+    //   using Value = std::conditional_t<conforming,TargetSpace,RealTuple<RT,embeddedDim> >;
+      
+
+      std::pair<ValueType,DerivativeType> result;
+
+      ///////////////////////////////////////////////////////////
+      //  Compute the value of the interpolation function
+      ///////////////////////////////////////////////////////////
+
+      // Evaluate the shape functions
+      std::vector<FieldVector<double, 1> > values;
+      localHermiteFiniteElement_.localBasis().evaluateFunction(local, values);
+
+      FieldVector<RT,components_> value_result(0);
+
+      for(size_t i=0; i<localHermiteFiniteElement_.size(); i++)
+        value_result.axpy(values[i][0], localHermiteCoefficients_[i]);
+
+      result.first = (RealTuple<RT, components_>)value_result;
+
+
+      ///////////////////////////////////////////////////////////
+      //  Compute the derivative of the interpolation function
+      ///////////////////////////////////////////////////////////
+
+      std::vector<FieldMatrix<double,1,gridDim> > jacobianValues;
+      localHermiteFiniteElement_.localBasis().evaluateJacobian(local, jacobianValues);
+
+      DerivativeType der_result(0);
+
+      for(size_t i=0; i<localHermiteFiniteElement_.size(); i++)
+        for (unsigned int k = 0; k<components_; k++)
+          for (unsigned int j = 0; j<gridDim; ++j)
+            der_result[k][j] += (jacobianValues[i][0][j] * localHermiteCoefficients_[i][k]);
+
+      result.second = der_result;
+
+      return result;
+    }
+
+    /** \brief Evaluate the derivative of the function, if you happen to know the function value (much faster!)
+     *        \param local Local coordinates in the reference element where to evaluate the derivative
+     *        \param q Value of the local gfe function at 'local'.  If you provide something wrong here the result will be wrong, too!
+     */
+    DerivativeType evaluateDerivative(const Dune::FieldVector<ctype, gridDim>& local,
+                                      const ValueType& q) const
+    {
+      return evaluateDerivative(local);
+    }
+
+    // //! Obtain the grid view that the basis is defined on
+    // const GridView &gridView() const
+    // {
+    //   return basis_.gridView();
+    // }
+
+    // void updateglobalIsometryCoefficients(const Coefficients& newCoefficients)
+    // {
+    //   globalIsometryCoefficients_ = newCoefficients;
+//     }
+
+//     /**
+//         Update the local hermite basis coefficient vector
+//      */
+//     void updateLocalHermiteCoefficients(const Coefficients& localIsometryCoefficients,const typename GridView::template Codim<0>::Entity& element)
+//     {
+//       localViewCoefficient_.bind(element);
+
+//       //Create a LocalProjected-Finite element from the local coefficients used for interpolation.
+//       auto P1LagrangeLFE = localViewCoefficient_.tree().finiteElement();
+//       LocalInterpolationRule localPBfunction(P1LagrangeLFE,localIsometryCoefficients);
+
+//       /**
+//           Interpolate into the local hermite space for each component.
+//        */
+//       const auto &localHermiteFiniteElement = localView_.tree().child(0).finiteElement();
+
+//       for(size_t k=0; k<components_; k++)
+//       {
+//         std::vector<RT> hermiteComponentCoefficients;
+//         Dune::GFE::Impl::LocalIsometryComponentFunction<double,LocalInterpolationRule> localIsometryComponentFunction(localPBfunction,k);
+
+//         localHermiteFiniteElement.localInterpolation().interpolate(localIsometryComponentFunction,hermiteComponentCoefficients);
+
+//         for(size_t i=0; i<localHermiteFiniteElement.size(); i++)
+//           localHermiteCoefficients_[i][k] = hermiteComponentCoefficients[i];
+//       }
+//     }
+
+//     /** Extract the local isometry coefficients. */
+//     void getLocalIsometryCoefficients(std::vector<Coefficient>& in,const typename GridView::template Codim<0>::Entity& element)
+//     {
+//       localViewCoefficient_.bind(element);
+
+//       in.resize(3);
+//       for (unsigned int vertex = 0; vertex<3; ++vertex)
+//       {
+//         size_t localIdx = localViewCoefficient_.tree().localIndex(vertex);
+//         size_t globalIdx = localViewCoefficient_.index(localIdx);
+//         in[vertex] = globalIsometryCoefficients_[globalIdx];
+//       }
+//     }
+
+
+// #if 0
+//     /** \brief Get the i'th base coefficient. */
+//     TargetSpace coefficient(int i) const
+//     {
+//       return globalIsometryCoefficients_[i];
+//     }
+// #endif
+  private:
+
+    /** \brief Hermite Finite element */
+    const LocalHermiteFiniteElement& localHermiteFiniteElement_;
+
+    // /** \brief The Lagrange basis used to assign manifold-valued degrees of freedom */
+    // const CoefficientBasis& coefficientBasis_;
+
+    // /** \brief The hermite basis used to represent deformations */
+    // const DiscreteKirchhoffBasis& basis_;
+
+    // mutable typename DiscreteKirchhoffBasis::LocalView localView_;
+    // mutable typename CoefficientBasis::LocalView localViewCoefficient_;
+
+    // /** \brief The global coefficient vector */
+    // Coefficients& globalIsometryCoefficients_;
+
+    // The coefficients of this interpolation rule
+    IsometryCoefficients isometryCoefficients_;
+
+    static constexpr int localHermiteBasisSize_ = Dune::Functions::Impl::CubicHermiteLocalCoefficients<gridDim,true>::size();
+
+    /** \brief The local coefficient vector of the hermite basis. */
+    std::array<Dune::FieldVector<RT,components_>,localHermiteBasisSize_> localHermiteCoefficients_;
+
+  };
+
+}  // end namespace Dune::GFE
+#endif   // DUNE_MICROSTRUCTURE_LOCALDISCRETEKIRCHHOFFBENDINGISOMETRY_HH
diff --git a/dune/microstructure/matrix_operations.hh b/dune/microstructure/matrix_operations.hh
index e99a6112b9dc22746703dbf6a3aae01e7ccc3fb5..868e254dcfcc2a59d2f36aa9665a602da468dfb2 100644
--- a/dune/microstructure/matrix_operations.hh
+++ b/dune/microstructure/matrix_operations.hh
@@ -3,230 +3,180 @@
 
 namespace MatrixOperations {
 
-	using MatrixRT = Dune::FieldMatrix< double, 3, 3>;
-	using VectorRT = Dune::FieldVector< double, 3>;
-
-	using std::sin;
-	using std::cos;
-	
-
-
-	static MatrixRT sym (MatrixRT M) { // 1/2 (M^T + M)
-    	MatrixRT ret(0);
-    	for (int i=0; i<3; i++)
-		{
-			ret[i][i] = M[i][i];
-    		for (int j=i+1; j<3; j++)
-			{
-    			ret[i][j] = 0.5*(M[i][j] + M[j][i]);
-				ret[j][i] = ret[i][j];
-			}
-		}
-    	return ret;
-	}
-
-
-	static VectorRT crossProduct (VectorRT v, VectorRT w) { // v otimes w
-    	return {v[1]*w[2] - v[2]*w[1], -1*(v[0]*w[2] - v[2]*w[0]), v[0]*w[1] - v[1]*w[0]};
-	}
-
-	static MatrixRT rankoneTensorproduct (VectorRT v, VectorRT w) { // v otimes w
-    	return 
-    	{{v[0]*w[0], v[1]*w[0], v[2]*w[0]}, 
-	     {v[0]*w[1], v[1]*w[1], v[2]*w[1]}, 
-	     {v[0]*w[2], v[1]*w[2], v[2]*w[2]}};
-	}
-
-	static MatrixRT nematicLiquidCrystal (double p, VectorRT n){ //B = 1/6*p*Id + 1/2*p*(n otimes n)
-		MatrixRT B(0);
-	    for (int i=0;i<3;i++)
-	        B[i][i]=p/6.0;
-	    MatrixRT n_ot_n = rankoneTensorproduct(n,n);
-	    n_ot_n*=p/2.0;
-	    B += n_ot_n;
-	    return B;
-	}
-
-	static MatrixRT biotStrainApprox (VectorRT U, VectorRT k, VectorRT e_cs){ //E_h = (U +  k x e_cs, 0, 0)
-	    VectorRT k_x_ecs = crossProduct(k, e_cs);
-	    VectorRT U_plus_k_x_ecs = U + k_x_ecs;
-	    VectorRT e_1 = {1, 0, 0};
-	    return rankoneTensorproduct(U_plus_k_x_ecs, e_1);
-	}
-
-	
-    static MatrixRT crossSectionDirectionScaling(double w, MatrixRT M){
-		return {{M[0][0], M[0][1], w*M[0][2]},
-                {M[1][0], M[1][1], w*M[1][2]},
-                {M[2][0], M[2][1], w*M[2][2]}
-               };
-	}
-
-	static double trace (MatrixRT M){ 
-	    return M[0][0]+ M[1][1] + M[2][2];
-	}
-
-	static double scalarProduct (MatrixRT M1, MatrixRT M2){ 
-		double sum = 0.0;
-		for (int i=0; i<3; i++)
-		    for (int j=0; j<3; j++)
-		    	sum += M1[i][j] * M2[i][j];
-	    return sum;
-	}
-
-
-	/**
-	 * @brief Determines rotation matrix based on an axis and an angle
-	 * 
-	 * @param axis 
-	 * @param angle 
-	 * @return MatrixRT 
-	 */
-	static MatrixRT rotationMatrix(int axis, double angle){
-
-		switch (axis)
-		{
-			case 0:
-			{
-				return {{1.0,          0,            0   },
-						{  0, cos(angle), -1.0*sin(angle)},
-						{  0, sin(angle),      cos(angle)}};
-			}
-			case 1:
-			{
-				return {{     cos(angle),   0, sin(angle)},
-						{              0, 1.0,      0    },
-						{-1.0*sin(angle),   0, cos(angle)}};
-			}
-			case 2:
-			{
-				return {{cos(angle), -1.0*sin(angle),    0},
-						{sin(angle),      cos(angle),    0},
-						{         0,               0,  1.0}};
-			}
-			default:
-				DUNE_THROW(Dune::Exception, " axis not feasible. rotationMatrix is only implemented for 3x3-matrices. Choose between 0: x-axis, 1: y-axis, 2: z-axis");
-		}
-	}
-
-	/**
-	 * @brief 6x6 matrix that transforms the strain tensor. This matrix is used to 
-	 * 		  transform the compliance matrix (given in Voigt notation) into another frame.
-	 * 		  see 'https://en.wikipedia.org/wiki/Orthotropic_material#Condition_for_material_symmetry_2' 
-	 * 		  for details.
-	 * 
-	 * @param axis 
-	 * @param angle 
-	 * @return MatrixRT 
-	 */
-	static Dune::FieldMatrix<double,6,6> rotationMatrixCompliance(int axis, double angle){
-		
-		MatrixRT R = rotationMatrix(axis,angle);
-
-        return {{    R[0][0]*R[0][0],     R[0][1]*R[0][1],     R[0][2]*R[0][2],                 R[0][1]*R[0][2],                 R[0][0]*R[0][2],                 R[0][0]*R[0][1]},
-                {    R[1][0]*R[1][0],     R[1][1]*R[1][1],     R[1][2]*R[1][2],                 R[1][1]*R[1][2],                 R[1][0]*R[1][2],                 R[1][0]*R[1][1]},
-                {    R[2][0]*R[2][0],     R[2][1]*R[2][1],     R[2][2]*R[2][2],                 R[2][1]*R[2][2],                 R[2][0]*R[2][2],                 R[2][0]*R[2][1]},
-                {2.0*R[1][0]*R[2][0], 2.0*R[1][1]*R[2][1], 2.0*R[1][2]*R[2][2], R[1][1]*R[2][2]+R[1][2]*R[2][1], R[1][0]*R[2][2]+R[1][2]*R[2][0], R[1][0]*R[2][1]+R[1][1]*R[2][0]},
-                {2.0*R[0][0]*R[2][0], 2.0*R[0][1]*R[2][1], 2.0*R[0][2]*R[2][2], R[0][1]*R[2][2]+R[0][2]*R[2][1], R[0][0]*R[2][2]+R[0][2]*R[2][0], R[0][0]*R[2][1]+R[0][1]*R[2][0]},
-                {2.0*R[0][0]*R[1][0], 2.0*R[0][1]*R[1][1], 2.0*R[0][2]*R[1][2], R[0][1]*R[1][2]+R[0][2]*R[1][1], R[0][0]*R[1][2]+R[0][2]*R[1][0], R[0][0]*R[1][1]+R[0][1]*R[1][0]}
-               };
-	}
-
-
-	/**
-	 * @brief  Scale last three columns of stiffness matrix by a factor of 2.
-	 * 		   Inserting this facotr in the stiffness matrix allows to use the 
-	 * 		   same Matrix-to-Vector mapping for both the stress and the strain.
-	 * 
-	 * @param S  Stiffness matrix
-	 */
-	static void scaleStiffnessMatrix(Dune::FieldMatrix<double,6,6>& S){
-      for(size_t i = 0; i<6; i++) 
+  using MatrixRT = Dune::FieldMatrix< double, 3, 3>;
+  using VectorRT = Dune::FieldVector< double, 3>;
+
+  using std::sin;
+  using std::cos;
+
+
+
+  static MatrixRT sym (MatrixRT M) {       // 1/2 (M^T + M)
+    MatrixRT ret(0);
+    for (int i=0; i<3; i++)
+    {
+      ret[i][i] = M[i][i];
+      for (int j=i+1; j<3; j++)
+      {
+        ret[i][j] = 0.5*(M[i][j] + M[j][i]);
+        ret[j][i] = ret[i][j];
+      }
+    }
+    return ret;
+  }
+
+
+  static MatrixRT rankoneTensorproduct (VectorRT v, VectorRT w) {       // v otimes w
+    return
+      {{v[0]*w[0], v[1]*w[0], v[2]*w[0]},
+        {v[0]*w[1], v[1]*w[1], v[2]*w[1]},
+        {v[0]*w[2], v[1]*w[2], v[2]*w[2]}};
+  }
+
+  static MatrixRT crossSectionDirectionScaling(double w, MatrixRT M){
+    return {{M[0][0], M[0][1], w*M[0][2]},
+      {M[1][0], M[1][1], w*M[1][2]},
+      {M[2][0], M[2][1], w*M[2][2]}
+    };
+  }
+
+  static double trace (MatrixRT M){
+    return M[0][0]+ M[1][1] + M[2][2];
+  }
+
+  static double scalarProduct (MatrixRT M1, MatrixRT M2){
+    double sum = 0.0;
+    for (int i=0; i<3; i++)
+      for (int j=0; j<3; j++)
+        sum += M1[i][j] * M2[i][j];
+    return sum;
+  }
+
+
+  /**
+   * @brief Determines rotation matrix based on an axis and an angle
+   *
+   * @param axis
+   * @param angle
+   * @return MatrixRT
+   */
+  static MatrixRT rotationMatrix(int axis, double angle){
+
+    switch (axis)
+    {
+    case 0 :
+    {
+      return {{1.0,          0,            0   },
+        {  0, cos(angle), -1.0*sin(angle)},
+        {  0, sin(angle),      cos(angle)}};
+    }
+    case 1 :
+    {
+      return {{     cos(angle),   0, sin(angle)},
+        {              0, 1.0,      0    },
+        {-1.0*sin(angle),   0, cos(angle)}};
+    }
+    case 2 :
+    {
+      return {{cos(angle), -1.0*sin(angle),    0},
+        {sin(angle),      cos(angle),    0},
+        {         0,               0,  1.0}};
+    }
+    default :
+      DUNE_THROW(Dune::Exception, " axis not feasible. rotationMatrix is only implemented for 3x3-matrices. Choose between 0: x-axis, 1: y-axis, 2: z-axis");
+    }
+  }
+
+  /**
+   * @brief 6x6 matrix that transforms the strain tensor. This matrix is used to
+   *              transform the compliance matrix (given in Voigt notation) into another frame.
+   *              see 'https://en.wikipedia.org/wiki/Orthotropic_material#Condition_for_material_symmetry_2'
+   *              for details.
+   *
+   * @param axis
+   * @param angle
+   * @return MatrixRT
+   */
+  static Dune::FieldMatrix<double,6,6> rotationMatrixCompliance(int axis, double angle){
+
+    MatrixRT R = rotationMatrix(axis,angle);
+
+    return {{    R[0][0]*R[0][0],     R[0][1]*R[0][1],     R[0][2]*R[0][2],                 R[0][1]*R[0][2],                 R[0][0]*R[0][2],                 R[0][0]*R[0][1]},
+      {    R[1][0]*R[1][0],     R[1][1]*R[1][1],     R[1][2]*R[1][2],                 R[1][1]*R[1][2],                 R[1][0]*R[1][2],                 R[1][0]*R[1][1]},
+      {    R[2][0]*R[2][0],     R[2][1]*R[2][1],     R[2][2]*R[2][2],                 R[2][1]*R[2][2],                 R[2][0]*R[2][2],                 R[2][0]*R[2][1]},
+      {2.0*R[1][0]*R[2][0], 2.0*R[1][1]*R[2][1], 2.0*R[1][2]*R[2][2], R[1][1]*R[2][2]+R[1][2]*R[2][1], R[1][0]*R[2][2]+R[1][2]*R[2][0], R[1][0]*R[2][1]+R[1][1]*R[2][0]},
+      {2.0*R[0][0]*R[2][0], 2.0*R[0][1]*R[2][1], 2.0*R[0][2]*R[2][2], R[0][1]*R[2][2]+R[0][2]*R[2][1], R[0][0]*R[2][2]+R[0][2]*R[2][0], R[0][0]*R[2][1]+R[0][1]*R[2][0]},
+      {2.0*R[0][0]*R[1][0], 2.0*R[0][1]*R[1][1], 2.0*R[0][2]*R[1][2], R[0][1]*R[1][2]+R[0][2]*R[1][1], R[0][0]*R[1][2]+R[0][2]*R[1][0], R[0][0]*R[1][1]+R[0][1]*R[1][0]}
+    };
+  }
+
+
+  /**
+   * @brief  Scale last three columns of stiffness matrix by a factor of 2.
+   *               Inserting this facotr in the stiffness matrix allows to use the
+   *               same Matrix-to-Vector mapping for both the stress and the strain.
+   *
+   * @param S  Stiffness matrix
+   */
+  static void scaleStiffnessMatrix(Dune::FieldMatrix<double,6,6>& S){
+    for(size_t i = 0; i<6; i++)
       for(size_t j = 3; j<6; j++)
       {
         S[i][j] = 2.0*S[i][j];
       }
-	}
-
-    static double linearizedStVenantKirchhoffDensity(double mu, double lambda, MatrixRT E1, MatrixRT E2)  // CHANGED
-    {  
-        auto t1 = 2.0 * mu * sym(E1) + MatrixRT(Dune::ScaledIdentityMatrix<double,3>(lambda * trace(sym(E1))));
-        auto tmp1 = scalarProduct(t1,sym(E2));
-        return tmp1; 
-        
-	}
-
-
-
-    // --- Generalization: Define Quadratic QuadraticForm
-    static double QuadraticForm(const double mu, const double lambda, const MatrixRT M){
-        
-        auto tmp1 = sym(M);
-        double tmp2 = tmp1.frobenius_norm();
-//         double tmp2 = norm(M);                                //TEST 
-        return lambda*std::pow(trace(M),2) + 2.0*mu*pow( tmp2 ,2);
-//         return lambda*std::pow(trace(M),2) + 2*mu*pow( norm( sym(M) ),2);
-    }
+  }
 
-    
+  static double linearizedStVenantKirchhoffDensity(double mu, double lambda, MatrixRT E1, MatrixRT E2)    // CHANGED
+  {
+    auto t1 = 2.0 * mu * sym(E1) + MatrixRT(Dune::ScaledIdentityMatrix<double,3>(lambda * trace(sym(E1))));
+    auto tmp1 = scalarProduct(t1,sym(E2));
+    return tmp1;
 
-	static double generalizedDensity(const double mu, const double lambda, MatrixRT F, MatrixRT G){
-     /// Write this whole File as a Class that uses lambda,mu as members ? 
-        
-     // Define L via Polarization-Identity from QuadratifForm
-     // <LF,G> := (1/2)*(Q(F+G) - Q(F) - Q(G) ) 
-        return (1.0/2.0)*(QuadraticForm(mu,lambda,F+G) - QuadraticForm(mu,lambda,F) - QuadraticForm(mu,lambda,G) );
-    }
+  }
+
+
+
+  // --- Generalization: Define Quadratic QuadraticForm
+  static double QuadraticForm(const double mu, const double lambda, const MatrixRT M){
+
+    auto tmp1 = sym(M);
+    double tmp2 = tmp1.frobenius_norm();
+    //         double tmp2 = norm(M);                                //TEST
+    return lambda*std::pow(trace(M),2) + 2.0*mu*pow( tmp2 ,2);
+    //         return lambda*std::pow(trace(M),2) + 2*mu*pow( norm( sym(M) ),2);
+  }
+
+
+
+  static double generalizedDensity(const double mu, const double lambda, MatrixRT F, MatrixRT G){
+    /// Write this whole File as a Class that uses lambda,mu as members ?
+
+    // Define L via Polarization-Identity from QuadratifForm
+    // <LF,G> := (1/2)*(Q(F+G) - Q(F) - Q(G) )
+    return (1.0/2.0)*(QuadraticForm(mu,lambda,F+G) - QuadraticForm(mu,lambda,F) - QuadraticForm(mu,lambda,G) );
+  }
+
+
+  /**
+   * @brief This is used to convert FieldMatrices to 'adouble'
+   *        since adouble-type can not be read from ParSet.
+   *        is there a better way?
+   *
+   * @tparam Rtype
+   * @tparam IMatrixType
+   * @param A
+   * @param B
+   */
+  template<class Rtype>
+  static void convertFieldMatrix(auto& A,
+                                 auto& B)
+  {
+    for(size_t i=0; i<B.N(); i++)
+      for(size_t j=0; j<B.M(); j++)
+        B[i][j] = (Rtype)A[i][j];
 
-	static MatrixRT matrixSqrt(MatrixRT M){
-		std::cout << "matrixSqrt not implemented!!!" << std::endl;//implement this
-		return M;
-	}
-
-	static double lameMu(double E, double nu){
-		return 0.5 * 1.0/(1.0 + nu) * E;
-	}
-
-	static double lameLambda(double E, double nu){
-		return nu/(1.0-2.0*nu) * 1.0/(1.0+nu) * E;
-	}
-
-	static bool isInRotatedPlane(double phi, double x1, double x2){
-		return cos(phi)*x1 + sin(phi)*x2 > 0;
-	}
-
-
-	extern "C" 
-	{
-
-		MatrixRT new_sym(MatrixRT M)
-		{
-			return sym(M);
-		}
-
-	}
-
-
-	/**
-	 * @brief This is used to convert FieldMatrices to 'adouble'
-	 *        since adouble-type can not be read from ParSet.
-	 *        is there a better way?
-	 * 
-	 * @tparam Rtype 
-	 * @tparam IMatrixType 
-	 * @param A 
-	 * @param B 
-	*/
-	template<class Rtype>
-	static void convertFieldMatrix(auto& A,
-								auto& B)
-	{
-	for(size_t i=0; i<B.N(); i++)
-	for(size_t j=0; j<B.M(); j++)
-	B[i][j] = (Rtype)A[i][j];
-
-	return;
-	}
+    return;
+  }
 
 
 
diff --git a/dune/microstructure/microproblem.hh b/dune/microstructure/microproblem.hh
index 3a4bbfdbc73ba88e85614fc92a650f2e01f0f9db..621f0ea8b29f282f7d68f88c8a1215c425f407ec 100644
--- a/dune/microstructure/microproblem.hh
+++ b/dune/microstructure/microproblem.hh
@@ -26,12 +26,13 @@
 #include <dune/istl/spqr.hh>
 #include <dune/istl/preconditioners.hh>
 #include <dune/istl/io.hh>
-#include <dune/istl/eigenvalue/test/matrixinfo.hh> // TEST: compute condition Number 
+#include <dune/istl/eigenvalue/test/matrixinfo.hh> // TEST: compute condition Number
 
 #include <dune/functions/functionspacebases/interpolate.hh>
 #include <dune/functions/backends/istlvectorbackend.hh>
 #include <dune/functions/functionspacebases/powerbasis.hh>
 #include <dune/functions/functionspacebases/compositebasis.hh>
+#include <dune/functions/functionspacebases/cubichermitebasis.hh>
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 #include <dune/functions/functionspacebases/periodicbasis.hh>
 #include <dune/functions/functionspacebases/subspacebasis.hh>
@@ -40,11 +41,11 @@
 #include <dune/functions/gridfunctions/gridviewfunction.hh>
 
 #include <dune/microstructure/matrix_operations.hh>
-#include <dune/microstructure/CorrectorComputer.hh>    
-#include <dune/microstructure/EffectiveQuantitiesComputer.hh>  
-#include <dune/microstructure/prestrainedMaterial.hh>  
+#include <dune/microstructure/CorrectorComputer.hh>
+#include <dune/microstructure/EffectiveQuantitiesComputer.hh>
+#include <dune/microstructure/prestrainedMaterial.hh>
 
-#include <dune/solvers/solvers/umfpacksolver.hh>   
+#include <dune/solvers/solvers/umfpacksolver.hh>
 
 // #include <iomanip>   // needed when working with relative paths e.g. from python-scripts
 
@@ -52,7 +53,7 @@
 // using namespace MatrixOperations;
 
 
-  // method to print types of objects:
+// method to print types of objects:
 //   template <class T>
 //   constexpr std::string_view type_name()
 //   {
@@ -77,254 +78,254 @@
 //--------------------------------------------------------
 class MicroProblem
 {
-    private:
-        static const int dim = 3;
-        using CellGridType = Dune::YaspGrid<dim, Dune::EquidistantOffsetCoordinates<double, dim> >;
-        using GridView = typename CellGridType::LeafGridView;
-        // typedef typename    Dune::Functions::DefaultGlobalBasis<Dune::Functions::PowerPreBasis<Dune::Functions::BasisFactory::FlatLexicographic, \
-        //             Dune::Functions::Experimental::TransformedIndexPreBasis<Dune::Functions::LagrangePreBasis<Dune::GridView< \
-        //             Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, dim> > > >, 1, double>, \
-        //             Dune::Functions::BasisFactory::Experimental::Impl::PeriodicIndexingTransformation>, dim> >  BasisType; 
-
-
-        using BasisType = typename Dune::Functions::DefaultGlobalBasis<Dune::Functions::PowerPreBasis<Dune::Functions::BasisFactory::FlatLexicographic, \
-                    Dune::Functions::Experimental::TransformedIndexPreBasis<Dune::Functions::LagrangePreBasis<Dune::GridView< \
-                    Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, dim> > > >, 1, double>, \
-                    Dune::Functions::BasisFactory::Experimental::Impl::PeriodicIndexingTransformation>, dim> >;
-
-        using MaterialType = prestrainedMaterial<GridView>;
-
-
-        Python::Reference microstructure_;
-        const Dune::ParameterTree parameterSet_;
-        const Python::Module module_;
-        const CellGridType grid_;
-        const GridView gridView_; 
-        const BasisType basis_;
-        // Dune::ParameterTree parameterSet_;
-        // Python::Module module_;
-        // CellGridType grid_;
-        // GridView gridView_; 
-        // BasisType basis_;
-
-
-        // std::fstream log_; // deprecated: only used to define CorrectorComputer object. 
-
-
-        // MaterialType material_;
-        std::shared_ptr<MaterialType> material_;
-
-        // CorrectorComputer<BasisType, MaterialType> correctorComputer_;
-        std::shared_ptr<CorrectorComputer<BasisType, MaterialType> > correctorComputer_; 
-        EffectiveQuantitiesComputer<BasisType,MaterialType> effectiveQuantitiesComputer_;
-        
-
-
-    public:
-        
-
-        //Constructor
-        MicroProblem(const Python::Reference microstructure,
-                     const Dune::ParameterTree& parameterSet,
-                     const Python::Module pyModule)
-            : microstructure_(microstructure), 
-            parameterSet_(parameterSet),
-            module_(pyModule),
-            grid_(createGrid()),
-            gridView_(grid_.leafGridView()),
-            basis_(createPeriodicBasis()),
-            // material_(setupMaterial(gridView_))
-            // material_(gridView_,microstructure_,parameterSet_,module_),
-            material_(std::make_shared<MaterialType>(gridView_,microstructure_,parameterSet_,module_)),
-            correctorComputer_(std::make_shared<CorrectorComputer<BasisType, MaterialType>>(basis_, material_, parameterSet_)),
-            // correctorComputer_(basis_, material_, parameterSet_),
-            effectiveQuantitiesComputer_(correctorComputer_)
-            // effectiveQuantitiesComputer_(correctorComputer_,material_)  // Remove material dependency 
-        {};
-        // //Constructor
-        // MicroProblem(const Dune::ParameterTree& parameterSet,
-        //              Python::Module pyModule)
-        //     : parameterSet_(parameterSet),
-        //     module_(pyModule),
-        //     grid_(createGrid()),
-        //     gridView_(grid_.leafGridView()),
-        //     basis_(createPeriodicBasis())
-        // {
-        //     initialSetup();
-        // };
-
-
-        // Create a default constructor like this?
-        // MicroProblem() = default;
-
-
-        // MaterialType setupMaterial(const GridView& gridView) const 
-        // {
-        //     return MaterialType(gridView,microstructure_,parameterSet_,module_);
-        // }
-
-
-
-        /**
-         * @brief Infrastructure for handling periodicity.
-         *         Check whether two points are equal on R/Z x R/Z x R
-         */
-        static constexpr auto equivalent = [](const Dune::FieldVector<double,3>& x, const Dune::FieldVector<double,3>& y)
+private:
+  static const int dim = 3;
+  using CellGridType = Dune::YaspGrid<dim, Dune::EquidistantOffsetCoordinates<double, dim> >;
+  using GridView = typename CellGridType::LeafGridView;
+  // typedef typename    Dune::Functions::DefaultGlobalBasis<Dune::Functions::PowerPreBasis<Dune::Functions::BasisFactory::FlatLexicographic, \
+  //             Dune::Functions::Experimental::TransformedIndexPreBasis<Dune::Functions::LagrangePreBasis<Dune::GridView< \
+  //             Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, dim> > > >, 1, double>, \
+  //             Dune::Functions::BasisFactory::Experimental::Impl::PeriodicIndexingTransformation>, dim> >  BasisType;
+
+
+  using BasisType = typename Dune::Functions::DefaultGlobalBasis<Dune::Functions::PowerPreBasis<Dune::Functions::BasisFactory::FlatLexicographic, \
+      Dune::Functions::Experimental::TransformedIndexPreBasis<Dune::Functions::LagrangePreBasis<Dune::GridView< \
+      Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, dim> > > >, 1, double>, \
+      Dune::Functions::BasisFactory::Experimental::Impl::PeriodicIndexingTransformation>, dim> >;
+
+  using MaterialType = prestrainedMaterial<GridView>;
+
+
+  Python::Reference microstructure_;
+  const Dune::ParameterTree parameterSet_;
+  const Python::Module module_;
+  const CellGridType grid_;
+  const GridView gridView_;
+  const BasisType basis_;
+  // Dune::ParameterTree parameterSet_;
+  // Python::Module module_;
+  // CellGridType grid_;
+  // GridView gridView_;
+  // BasisType basis_;
+
+
+  // std::fstream log_; // deprecated: only used to define CorrectorComputer object.
+
+
+  // MaterialType material_;
+  std::shared_ptr<MaterialType> material_;
+
+  // CorrectorComputer<BasisType, MaterialType> correctorComputer_;
+  std::shared_ptr<CorrectorComputer<BasisType, MaterialType> > correctorComputer_;
+  EffectiveQuantitiesComputer<BasisType,MaterialType> effectiveQuantitiesComputer_;
+
+
+
+public:
+
+
+  //Constructor
+  MicroProblem(const Python::Reference microstructure,
+               const Dune::ParameterTree& parameterSet,
+               const Python::Module pyModule)
+    : microstructure_(microstructure),
+    parameterSet_(parameterSet),
+    module_(pyModule),
+    grid_(createGrid()),
+    gridView_(grid_.leafGridView()),
+    basis_(createPeriodicBasis()),
+    // material_(setupMaterial(gridView_))
+    // material_(gridView_,microstructure_,parameterSet_,module_),
+    material_(std::make_shared<MaterialType>(gridView_,microstructure_,parameterSet_,module_)),
+    correctorComputer_(std::make_shared<CorrectorComputer<BasisType, MaterialType> >(basis_, material_, parameterSet_)),
+    // correctorComputer_(basis_, material_, parameterSet_),
+    effectiveQuantitiesComputer_(correctorComputer_)
+    // effectiveQuantitiesComputer_(correctorComputer_,material_)  // Remove material dependency
+  {};
+  // //Constructor
+  // MicroProblem(const Dune::ParameterTree& parameterSet,
+  //              Python::Module pyModule)
+  //     : parameterSet_(parameterSet),
+  //     module_(pyModule),
+  //     grid_(createGrid()),
+  //     gridView_(grid_.leafGridView()),
+  //     basis_(createPeriodicBasis())
+  // {
+  //     initialSetup();
+  // };
+
+
+  // Create a default constructor like this?
+  // MicroProblem() = default;
+
+
+  // MaterialType setupMaterial(const GridView& gridView) const
+  // {
+  //     return MaterialType(gridView,microstructure_,parameterSet_,module_);
+  // }
+
+
+
+  /**
+   * @brief Infrastructure for handling periodicity.
+   *         Check whether two points are equal on R/Z x R/Z x R
+   */
+  static constexpr auto equivalent = [](const Dune::FieldVector<double,3>& x, const Dune::FieldVector<double,3>& y)
+                                     {
+                                       return ( (Dune::FloatCmp::eq(x[0],y[0]) or Dune::FloatCmp::eq(x[0]+1,y[0]) or Dune::FloatCmp::eq(x[0]-1,y[0]))
+                                                and (Dune::FloatCmp::eq(x[1],y[1]) or Dune::FloatCmp::eq(x[1]+1,y[1]) or Dune::FloatCmp::eq(x[1]-1,y[1]))
+                                                and (Dune::FloatCmp::eq(x[2],y[2]))
+                                                );
+                                     };
+
+
+  /**
+   * @brief Generate the grid.
+   *        Corrector Problem Domain (-1/2,1/2)^3.
+   */
+  const CellGridType createGrid() const
+  {
+    Dune::FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
+    Dune::FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
+    int microGridLevel = parameterSet_.get<int>("microGridLevel", 0);
+    std::array<int, dim> nElements = {(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel)};
+    // std::cout << "Number of Grid-Elements in each direction: " << nElements << std::endl;
+    std::cout << "Number of Micro Grid-Elements in each direction: " << (int)std::pow(2,microGridLevel) << std::endl;
+
+    return CellGridType(lower,upper,nElements);
+  }
+
+  const BasisType createPeriodicBasis() const
+  {
+    // using namespace Functions::BasisFactory;
+    Dune::Functions::BasisFactory::Experimental::PeriodicIndexSet periodicIndices;
+
+    //--- Get PeriodicIndices for periodicBasis (Don't do the following in real life: It has quadratic run-time in the number of vertices.)
+    for (const auto& v1 : vertices(gridView_))
+      for (const auto& v2 : vertices(gridView_))
+        if (equivalent(v1.geometry().corner(0), v2.geometry().corner(0)))
         {
-            return ( (Dune::FloatCmp::eq(x[0],y[0]) or Dune::FloatCmp::eq(x[0]+1,y[0]) or Dune::FloatCmp::eq(x[0]-1,y[0]))
-                    and (Dune::FloatCmp::eq(x[1],y[1]) or Dune::FloatCmp::eq(x[1]+1,y[1]) or Dune::FloatCmp::eq(x[1]-1,y[1]))
-                    and (Dune::FloatCmp::eq(x[2],y[2]))
-                );
-        };
-
-
-        /**
-         * @brief Generate the grid.
-         *        Corrector Problem Domain (-1/2,1/2)^3.
-         */
-        const CellGridType createGrid() const
-        {
-            Dune::FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
-            Dune::FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
-            int microGridLevel = parameterSet_.get<int>("microGridLevel", 0);
-            std::array<int, dim> nElements = {(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel)};
-            // std::cout << "Number of Grid-Elements in each direction: " << nElements << std::endl;
-            std::cout << "Number of Micro Grid-Elements in each direction: " << (int)std::pow(2,microGridLevel) << std::endl;
-
-            return CellGridType(lower,upper,nElements);
+          periodicIndices.unifyIndexPair({gridView_.indexSet().index(v1)}, {gridView_.indexSet().index(v2)});
         }
 
-        const BasisType createPeriodicBasis() const
-        {
-            // using namespace Functions::BasisFactory;
-            Dune::Functions::BasisFactory::Experimental::PeriodicIndexSet periodicIndices;
-
-            //--- Get PeriodicIndices for periodicBasis (Don't do the following in real life: It has quadratic run-time in the number of vertices.)
-            for (const auto& v1 : vertices(gridView_))
-            for (const auto& v2 : vertices(gridView_))
-                if (equivalent(v1.geometry().corner(0), v2.geometry().corner(0)))
-                {
-                    periodicIndices.unifyIndexPair({gridView_.indexSet().index(v1)}, {gridView_.indexSet().index(v2)});
-                }
-
-            return makeBasis(gridView_,
-                            power<dim>(                                  
-                            Dune::Functions::BasisFactory::Experimental::periodic(lagrange<1>(), periodicIndices),
-                            flatLexicographic()
-                            ));   
-        }
+    return makeBasis(gridView_,
+                     power<dim>(
+                       Dune::Functions::BasisFactory::Experimental::periodic(lagrange<1>(), periodicIndices),
+                       flatLexicographic()
+                       ));
+  }
 
 
-        void updateMicrostructure(Python::Reference microstructure) 
-        {
-            microstructure_ = microstructure;
+  void updateMicrostructure(Python::Reference microstructure)
+  {
+    microstructure_ = microstructure;
 
-            // material_.updateMicrostructure(microstructure_);
-            material_->updateMicrostructure(microstructure_);
-            correctorComputer_->updateMaterial(material_);
-            effectiveQuantitiesComputer_.updateCorrectorComputer(correctorComputer_);
-        }
+    // material_.updateMicrostructure(microstructure_);
+    material_->updateMicrostructure(microstructure_);
+    correctorComputer_->updateMaterial(material_);
+    effectiveQuantitiesComputer_.updateCorrectorComputer(correctorComputer_);
+  }
 
 
-        Python::Reference getMicrostructure()
-        {
-            return microstructure_;
-        }
+  Python::Reference getMicrostructure()
+  {
+    return microstructure_;
+  }
 
 
 
 
-        // template<class Btype,class Qtype>
-        // void getEffectiveQuantities(Btype& B, Qtype& Q, int count = 0)
-        template<class Btype,class Qtype>
-        void getEffectiveQuantities(Btype& B, Qtype& Q)
-        {
-            Dune::Timer microProblemTimer;
-            // std::cout << "getting effective quantities.. " << std::endl;
+  // template<class Btype,class Qtype>
+  // void getEffectiveQuantities(Btype& B, Qtype& Q, int count = 0)
+  template<class Btype,class Qtype>
+  void getEffectiveQuantities(Btype& B, Qtype& Q)
+  {
+    Dune::Timer microProblemTimer;
+    // std::cout << "getting effective quantities.. " << std::endl;
 
-            // --- Get scale ratio 
-            // double gamma = parameterSet_.get<double>("gamma",1.0); 
-            double gamma;
-            microstructure_.get("gamma").toC<double>(gamma);
-            if (parameterSet_.get<bool>("printMicroOutput ", false))
-              std::cout << "Microstructure scale ratio (gamma) set to : " << gamma << std::endl;
+    // --- Get scale ratio
+    // double gamma = parameterSet_.get<double>("gamma",1.0);
+    double gamma;
+    microstructure_.get("gamma").toC<double>(gamma);
+    if (parameterSet_.get<bool>("printMicroOutput ", false))
+      std::cout << "Microstructure scale ratio (gamma) set to : " << gamma << std::endl;
 
 
-            // /**
-            //  * @brief Create Log (Remove later) 
-            //  * 
-            //  */
-            // std::string baseName = parameterSet_.get("baseName", "CellProblem-result");
-            // std::string outputPath = parameterSet_.get("resultPath", "../../outputs") ;
-            // //--- setup Log-File
-            // std::fstream log;
-            // log.open(outputPath + "/" + baseName + "_log.txt" ,std::ios::out);
+    // /**
+    //  * @brief Create Log (Remove later)
+    //  *
+    //  */
+    // std::string baseName = parameterSet_.get("baseName", "CellProblem-result");
+    // std::string outputPath = parameterSet_.get("resultPath", "../../outputs") ;
+    // //--- setup Log-File
+    // std::fstream log;
+    // log.open(outputPath + "/" + baseName + "_log.txt" ,std::ios::out);
 
-            // std::cout << "log done" << std::endl;
-          
-            // //  Create prestrained material object
-            // auto material = prestrainedMaterial(basis_.gridView(),microstructure_,parameterSet_,module_);
+    // std::cout << "log done" << std::endl;
 
+    // //  Create prestrained material object
+    // auto material = prestrainedMaterial(basis_.gridView(),microstructure_,parameterSet_,module_);
 
-            // std::cout << "type_name<decltype(material_)>():" << type_name<decltype(material_)>() << std::endl;
-            // std::cout << "type_name<decltype(material)>():" << type_name<decltype(material)>() << std::endl;
 
+    // std::cout << "type_name<decltype(material_)>():" << type_name<decltype(material_)>() << std::endl;
+    // std::cout << "type_name<decltype(material)>():" << type_name<decltype(material)>() << std::endl;
 
 
 
 
-            // // std::cout << "TEST-VTK write.." << std::endl;
-            // material.writeVTKMaterialFunctions(parameterSet_.get<int>("microGridLevel", 0));
-            // std::cout << "Part1 works." << std::endl;
 
+    // // std::cout << "TEST-VTK write.." << std::endl;
+    // material.writeVTKMaterialFunctions(parameterSet_.get<int>("microGridLevel", 0));
+    // std::cout << "Part1 works." << std::endl;
 
-            if (parameterSet_.get<bool>("write_materialFunctions", false))
-               material_->writeVTKMaterialFunctions(parameterSet_.get<int>("microGridLevel", 0));
 
-            // exit(0);
+    if (parameterSet_.get<bool>("write_materialFunctions", false))
+      material_->writeVTKMaterialFunctions(parameterSet_.get<int>("microGridLevel", 0));
 
-            // std::cout << "Material setup done" << std::endl;
+    // exit(0);
 
-            // // Compute Correctors
-            // auto correctorComputer = CorrectorComputer(basis_, material, log, parameterSet_);
-            // #if 0
+    // std::cout << "Material setup done" << std::endl;
 
-            // std::cout << "Starting Corrector assembly" << std::endl;
-            correctorComputer_->assemble();
-            // std::cout << "Starting Corrector solve..." << std::endl;
-            correctorComputer_->solve();
+    // // Compute Correctors
+    // auto correctorComputer = CorrectorComputer(basis_, material, log, parameterSet_);
+    // #if 0
 
+    // std::cout << "Starting Corrector assembly" << std::endl;
+    correctorComputer_->assemble();
+    // std::cout << "Starting Corrector solve..." << std::endl;
+    correctorComputer_->solve();
 
-            // std::cout << "Corrector done" << std::endl;
-            // //--- Compute effective quantities
-            // auto effectiveQuantitiesComputer = EffectiveQuantitiesComputer(correctorComputer,material);
-            effectiveQuantitiesComputer_.computeEffectiveQuantities();
 
+    // std::cout << "Corrector done" << std::endl;
+    // //--- Compute effective quantities
+    // auto effectiveQuantitiesComputer = EffectiveQuantitiesComputer(correctorComputer,material);
+    effectiveQuantitiesComputer_.computeEffectiveQuantities();
 
-            // std::cout << "effective Quantities  done" << std::endl;
 
-            // //--- Get effective quantities
-            auto Beffvec = effectiveQuantitiesComputer_.getBeff();
-            // // convert CoefficientVector to matrix
-            auto Beff = CoefficientsToSymMatrix(Beffvec);
-            Q = effectiveQuantitiesComputer_.getQeff();
-            B = CoefficientsToSymMatrix(Beffvec);
+    // std::cout << "effective Quantities  done" << std::endl;
 
+    // //--- Get effective quantities
+    auto Beffvec = effectiveQuantitiesComputer_.getBeff();
+    // // convert CoefficientVector to matrix
+    auto Beff = CoefficientsToSymMatrix(Beffvec);
+    Q = effectiveQuantitiesComputer_.getQeff();
+    B = CoefficientsToSymMatrix(Beffvec);
 
-            if (parameterSet_.get<bool>("printMicroOutput ", false))
-            {
-                printmatrix(std::cout, Q, "Matrix Qeff", "--");
-                printmatrix(std::cout, B, "Beff", "--");
-            }
 
-            std::cout << "Micro-Problem took " << microProblemTimer.elapsed() << " seconds." << std::endl;
+    if (parameterSet_.get<bool>("printMicroOutput ", false))
+    {
+      printmatrix(std::cout, Q, "Matrix Qeff", "--");
+      printmatrix(std::cout, B, "Beff", "--");
+    }
 
-            // #endif
+    std::cout << "Micro-Problem took " << microProblemTimer.elapsed() << " seconds." << std::endl;
 
-            // exit(0);
-        }
+    // #endif
+
+    // exit(0);
+  }
 
 };
 
 
-#endif 
\ No newline at end of file
+#endif
diff --git a/dune/microstructure/prestrainedMaterial.hh b/dune/microstructure/prestrainedMaterial.hh
index 008952bde46cf19fef09e092a8f29c8e60d01ab4..2e2f5460ff3883d5ca7048c1880b1f6c181fc2fb 100644
--- a/dune/microstructure/prestrainedMaterial.hh
+++ b/dune/microstructure/prestrainedMaterial.hh
@@ -37,13 +37,13 @@ using std::make_shared;
  * @brief The 'prestrainedMaterial' class descripes the LOCAL microstructure.
  *        It stores all the necessary information to define the local Cell-problem.
  *        This includes:
- * 
+ *
  *        Indicatorfunction, #Phases, Prestrain, elasticity/compliance tensors ,scale-ratio 'gamma'
- *        
+ *
  */
 
-//-------------------------------------------------------- 
-template <class GridView>         
+//--------------------------------------------------------
+template <class GridView>
 class prestrainedMaterial
 {
 
@@ -56,16 +56,16 @@ public:
   using ScalarRT = Dune::FieldVector< double, 1>;
   using VectorRT = Dune::FieldVector< double, dimworld>;
   using MatrixRT = Dune::FieldMatrix< double, dimworld, dimworld>;
-  using FuncScalar = std::function< double(const Domain&) >;
-  using Func2int = std::function< int(const Domain&) >;
+  using FuncScalar = std::function< double (const Domain&) >;
+  using Func2int = std::function< int (const Domain&) >;
   using Func2Tensor = std::function< MatrixRT(const Domain&) >;
   using Func2TensorParam = std::function< MatrixRT(const MatrixRT& ,const Domain&) >;
   using Func2TensorPhase = std::function< MatrixRT(const MatrixRT& ,const int&) >;
   using MatrixFunc  = std::function< MatrixRT(const MatrixRT&) >;
   using MatrixPhase = std::function< MatrixRT(const int&) >;
 
-  using IndicatorGridViewFunctionType = GridViewFunction<int(const Domain&), GridView>;
-  using LocalIndicatorFunctionType = LocalFunction<int(const Domain&), typename GridViewEntitySet<GridView, 0>::Element >;
+  using IndicatorGridViewFunctionType = GridViewFunction<int (const Domain&), GridView>;
+  using LocalIndicatorFunctionType = LocalFunction<int (const Domain&), typename GridViewEntitySet<GridView, 0>::Element >;
 
 
   // const GridView& gridView_;
@@ -91,169 +91,169 @@ public:
   IndicatorGridViewFunctionType indicatorFunctionGVF_;
   LocalIndicatorFunctionType localIndicatorFunction_;
 
-  double gamma_; 
+  double gamma_;
 
 
-public: 
-    prestrainedMaterial(const GridView& gridView,
-                        Python::Reference microstructure,
-                        const Dune::ParameterTree& parameterSet,
-                        const Python::Module pyModule)
-                       : gridView_(gridView), 
-                         microstructure_(microstructure),
-                         parameterSet_(parameterSet),
-                         module_(pyModule) 
-    {
-       setup();
-    } 
-    ~prestrainedMaterial(){std::cout << "prestrainedMaterial object destroyed!" << std::endl;};
-
-    // prestrainedMaterial() = default;
-    
-    //copy constructor 
-    prestrainedMaterial(const prestrainedMaterial& that) = default;
-
-    // Copy assignment operator
-    // prestrainedMaterial& operator=(prestrainedMaterial const& that)
-    // {
-    //   gridView_ = that.gridView_;
-    //   parameterSet_ = that.parameterSet_;
-    //   L_ = that.L_;
-    //   prestrain_ = that.prestrain_;
-    //   module_ = that.module_;
-    //   microstructure_ = that.microstructure_;
-
-    //   return *this;
-    // }
-
-  
-  void updateMicrostructure(const Python::Reference microstructure) 
+public:
+  prestrainedMaterial(const GridView& gridView,
+                      Python::Reference microstructure,
+                      const Dune::ParameterTree& parameterSet,
+                      const Python::Module pyModule)
+    : gridView_(gridView),
+    microstructure_(microstructure),
+    parameterSet_(parameterSet),
+    module_(pyModule)
   {
-      // std::cout << "updateMicrostrucrue of prestrainedMaterial" << std::endl;
-      microstructure_ = microstructure;
+    setup();
   }
+  ~prestrainedMaterial(){std::cout << "prestrainedMaterial object destroyed!" << std::endl;};
 
+  // prestrainedMaterial() = default;
 
-  void updateGamma(const double gamma) 
-  {
-      gamma_ = gamma;
-  }
+  //copy constructor
+  prestrainedMaterial(const prestrainedMaterial& that) = default;
 
+  // Copy assignment operator
+  // prestrainedMaterial& operator=(prestrainedMaterial const& that)
+  // {
+  //   gridView_ = that.gridView_;
+  //   parameterSet_ = that.parameterSet_;
+  //   L_ = that.L_;
+  //   prestrain_ = that.prestrain_;
+  //   module_ = that.module_;
+  //   microstructure_ = that.microstructure_;
 
-/**
- * @brief TODO: Code allows a spatially varying prestrain. However most of the time we only 
- *              use a constant prestrain. 
- *              - Add switch (constant/non-constant) prestrain?
- * 
- * @param phase           material phase
- * @return Func2Tensor 
- */
-Func2Tensor setupPrestrainPhase(const int phase){
-
-  // auto prestrain = Python::make_function<MatrixRT>(module_.get("prestrain_phase" + std::to_string(phase)));
-  auto prestrain = Python::make_function<MatrixRT>(Python::Callable(microstructure_.get("prestrain_phase" + std::to_string(phase))));
+  //   return *this;
+  // }
 
-  //TODO...
 
-  int axis = 0;
-  double angle = 0;
-  try 
+  void updateMicrostructure(const Python::Reference microstructure)
   {
-    // module_.get("phase" + std::to_string(phase) + "_axis").toC<int>(axis);
-    // module_.get("phase" + std::to_string(phase) + "_angle").toC<double>(angle);
-    axis = parameterSet_.get<int>("phase" + std::to_string(phase) + "_axis", 0);
-    angle = parameterSet_.get<double>("phase" + std::to_string(phase) + "_angle", 0);
+    // std::cout << "updateMicrostrucrue of prestrainedMaterial" << std::endl;
+    microstructure_ = microstructure;
   }
-  catch(Dune::Exception&)
+
+
+  void updateGamma(const double gamma)
   {
-    //default frame is used.
+    gamma_ = gamma;
   }
+
+
   /**
-   * @brief (optional) Tramsform prestrain to the correct frame.
+   * @brief TODO: Code allows a spatially varying prestrain. However most of the time we only
+   *              use a constant prestrain.
+   *              - Add switch (constant/non-constant) prestrain?
+   *
+   * @param phase           material phase
+   * @return Func2Tensor
    */
-  if(abs(angle) > 1e-12){
-    auto R = rotationMatrix(axis,angle);
-    Func2Tensor f = [prestrain,R] (const Domain& x) { return (prestrain(x).leftmultiply(R)).rightmultiply(R.transposed()); };
+  Func2Tensor setupPrestrainPhase(const int phase){
+
+    // auto prestrain = Python::make_function<MatrixRT>(module_.get("prestrain_phase" + std::to_string(phase)));
+    auto prestrain = Python::make_function<MatrixRT>(Python::Callable(microstructure_.get("prestrain_phase" + std::to_string(phase))));
 
-    return f;
+    //TODO...
+
+    int axis = 0;
+    double angle = 0;
+    try
+    {
+      // module_.get("phase" + std::to_string(phase) + "_axis").toC<int>(axis);
+      // module_.get("phase" + std::to_string(phase) + "_angle").toC<double>(angle);
+      axis = parameterSet_.get<int>("phase" + std::to_string(phase) + "_axis", 0);
+      angle = parameterSet_.get<double>("phase" + std::to_string(phase) + "_angle", 0);
+    }
+    catch(Dune::Exception&)
+    {
+      //default frame is used.
+    }
+    /**
+     * @brief (optional) Tramsform prestrain to the correct frame.
+     */
+    if(abs(angle) > 1e-12) {
+      auto R = rotationMatrix(axis,angle);
+      Func2Tensor f = [prestrain,R] (const Domain& x) { return (prestrain(x).leftmultiply(R)).rightmultiply(R.transposed()); };
+
+      return f;
+    }
+    else
+      return prestrain;
   }
-  else 
-    return prestrain;
-}
 
 
 
-// Dune::FieldMatrix<double,6,6> setupPhase(const std::string phaseType, Python::Module module, int phase)
-Dune::FieldMatrix<double,6,6> setupPhase(const int phase)
-{
-  std::string phaseType;
+  // Dune::FieldMatrix<double,6,6> setupPhase(const std::string phaseType, Python::Module module, int phase)
+  Dune::FieldMatrix<double,6,6> setupPhase(const int phase)
+  {
+    std::string phaseType;
 
-  // phaseType = parameterSet_.get<std::string>("phase" + std::to_string(phase) + "_type");
-  microstructure_.get("phase" + std::to_string(phase) + "_type").toC<std::string>(phaseType);
+    // phaseType = parameterSet_.get<std::string>("phase" + std::to_string(phase) + "_type");
+    microstructure_.get("phase" + std::to_string(phase) + "_type").toC<std::string>(phaseType);
 
-  std::cout << "Setup phase "<< phase << " as " << phaseType << " material." << std::endl;
+    std::cout << "Setup phase "<< phase << " as " << phaseType << " material." << std::endl;
 
-  if(phaseType == "isotropic")
-  {
+    if(phaseType == "isotropic")
+    {
       Dune::FieldVector<double,2> materialParameters(0);
       // module_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,2>>(materialParameters);
-      microstructure_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,2>>(materialParameters);
+      microstructure_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,2> >(materialParameters);
       std::cout << "Lame-Parameters (mu,lambda): (" << materialParameters[0] << "," << materialParameters[1] << ") " << std::endl;
       return isotropic(materialParameters[0],materialParameters[1]);
-  }
+    }
 
 
-  /**
-   * @brief For other material classes. The stiffness-/compliance matrix depends on the 
-   *        coordinate frame.
-   * 
-   *        (optional) rotate material coordinate frame by an 'angle' around 'axis'
-   */
-  int axis = 0;
-  double angle = 0;
+    /**
+     * @brief For other material classes. The stiffness-/compliance matrix depends on the
+     *        coordinate frame.
+     *
+     *        (optional) rotate material coordinate frame by an 'angle' around 'axis'
+     */
+    int axis = 0;
+    double angle = 0;
 
-  try 
-  {
-    // axis = parameterSet_.get<int>("phase" + std::to_string(phase) + "_axis", 0);
-    // angle = parameterSet_.get<double>("phase" + std::to_string(phase) + "_angle", 0);
-    microstructure_.get("phase" + std::to_string(phase) + "_axis").toC<int>(axis);
-    microstructure_.get("phase" + std::to_string(phase) + "_angle").toC<double>(angle);
-  }
-  catch(Dune::Exception& e)
-  {
-    std::cout << "(Could not read rotation axis & angle for material phase) " << phase << ": - Canonical Frame (default) is used." << std::endl;
-  }
+    try
+    {
+      // axis = parameterSet_.get<int>("phase" + std::to_string(phase) + "_axis", 0);
+      // angle = parameterSet_.get<double>("phase" + std::to_string(phase) + "_angle", 0);
+      microstructure_.get("phase" + std::to_string(phase) + "_axis").toC<int>(axis);
+      microstructure_.get("phase" + std::to_string(phase) + "_angle").toC<double>(angle);
+    }
+    catch(Dune::Exception& e)
+    {
+      std::cout << "(Could not read rotation axis & angle for material phase) " << phase << ": - Canonical Frame (default) is used." << std::endl;
+    }
 
 
-  if(phaseType == "orthotropic")
-  {
+    if(phaseType == "orthotropic")
+    {
       Dune::FieldVector<double,9> materialParameters(0);
       // module_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,9>>(materialParameters);
-      microstructure_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,9>>(materialParameters);
+      microstructure_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,9> >(materialParameters);
       return orthotropic(axis,angle,materialParameters);
-  }
-  if(phaseType == "transversely_isotropic")
-  {
+    }
+    if(phaseType == "transversely_isotropic")
+    {
       Dune::FieldVector<double,5> materialParameters(0);
       // module_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,5>>(materialParameters);
-      microstructure_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,5>>(materialParameters);
+      microstructure_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,5> >(materialParameters);
       return transversely_isotropic(axis,angle,materialParameters);
-  }
-  if(phaseType == "general_anisotropic")
-  {
+    }
+    if(phaseType == "general_anisotropic")
+    {
       Dune::FieldMatrix<double,6,6> materialParameters(0); //compliance matric
       // module_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldMatrix<double,6,6>>(materialParameters);
-      microstructure_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldMatrix<double,6,6>>(materialParameters);
+      microstructure_.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldMatrix<double,6,6> >(materialParameters);
       return general_anisotropic(axis,angle,materialParameters);
+    }
+    else
+      DUNE_THROW(Dune::Exception, " Unknown material class for phase " + std::to_string(phase));
   }
-  else
-    DUNE_THROW(Dune::Exception, " Unknown material class for phase " + std::to_string(phase));
-}
 
   /**
    * @brief Setup method that determines the correct stiffness-matrix (constitutive law)
-   *        for each material phase separately. 
-   * 
+   *        for each material phase separately.
+   *
    */
   void setup()
   {
@@ -269,7 +269,7 @@ Dune::FieldMatrix<double,6,6> setupPhase(const int phase)
     localIndicatorFunction_ = localFunction(indicatorFunctionGVF_);
 
     int phases;
-    // phases = parameterSet_.get<int>("Phases"); 
+    // phases = parameterSet_.get<int>("Phases");
     microstructure_.get("phases").toC<int>(phases);
     std::cout << "---- Starting material setup... (Number of Phases: "<< phases << ") "  << std::endl;
 
@@ -292,13 +292,13 @@ Dune::FieldMatrix<double,6,6> setupPhase(const int phase)
   /** \brief Isotropic stiffness matrix in Voigt notation but scaled by a factor of 2 in the last three columns. */
   Dune::FieldMatrix<double,6,6> isotropic(const double& mu, const double& lambda)
   {
-        return {{lambda+2.0*mu, lambda       , lambda       , 0.0   , 0.0   , 0.0    },
-                {lambda       , lambda+2.0*mu, lambda       , 0.0   , 0.0   , 0.0    },
-                {lambda       , lambda       , lambda+2.0*mu, 0.0   , 0.0   , 0.0    },
-                {  0.0        ,  0.0         , 0.0          , 2.0*mu, 0.0   , 0.0    },
-                {  0.0        ,  0.0         , 0.0          , 0.0   , 2.0*mu, 0.0    },
-                {  0.0        ,  0.0         , 0.0          , 0.0   , 0.0   , 2.0*mu }
-              };
+    return {{lambda+2.0*mu, lambda       , lambda       , 0.0   , 0.0   , 0.0    },
+      {lambda       , lambda+2.0*mu, lambda       , 0.0   , 0.0   , 0.0    },
+      {lambda       , lambda       , lambda+2.0*mu, 0.0   , 0.0   , 0.0    },
+      {  0.0        ,  0.0         , 0.0          , 2.0*mu, 0.0   , 0.0    },
+      {  0.0        ,  0.0         , 0.0          , 0.0   , 2.0*mu, 0.0    },
+      {  0.0        ,  0.0         , 0.0          , 0.0   , 0.0   , 2.0*mu }
+    };
   }
   //-------------------------------------------------------------------------------
 
@@ -308,74 +308,74 @@ Dune::FieldMatrix<double,6,6> setupPhase(const int phase)
    *        The convention in literature is to provide the elastic constants in form of the 'compliance matrix'
    *        In order to compute stresses from strain, we have to invert the 'compliance matrix' to obtain the 'stiffness matrix'
    *        (see https://en.wikipedia.org/wiki/Orthotropic_material for more details)
-   * 
+   *
    * @param axis    rotate material frame around axis
-   * @param angle   rotation angle 
+   * @param angle   rotation angle
    * @param p       elastic constants: (E1,E2,E3,G12,G23,G31,nu12,nu13,nu23)
    * @return        Stiffness matrix
    */
   Dune::FieldMatrix<double,6,6> orthotropic(const int& axis,
                                             const double& angle,
                                             const Dune::FieldVector<double,9>& p
-                                            ) 
+                                            )
   {
-      auto E_1 = p[0];
-      auto E_2 = p[1];
-      auto E_3 = p[2];
-      auto G_12 = p[3];
-      auto G_23 = p[4];
-      auto G_31 = p[5];
-      auto nu_12 = p[6];
-      auto nu_13 = p[7];
-      auto nu_23 = p[8];
-      //other three poisson ratios are not independent 
-      auto nu_21 = (p[6]/p[0])*p[1];
-      auto nu_31 = (p[7]/p[0])*p[2];
-      auto nu_32 = (p[8]/p[1])*p[2]; 
-
-      std::string axis_string;
-      switch (axis)
-      {
-        case 0:
-             axis_string = "x - axis";
-             break;
-        case 1: 
-             axis_string = "y - axis";
-             break;
-        case 2: 
-             axis_string = "z - axis";
-             break;
-        default: break;
-      }
-
-      // Compliance matrix
-      Dune::FieldMatrix<double,6,6> Compliance = {{1.0/E_1      , -nu_21/E_2   , -nu_31/E_3   , 0.0     , 0.0     , 0.0     },
-                                                  {-nu_12/E_1   , 1.0/E_2      , -nu_32/E_3   , 0.0     , 0.0     , 0.0     },
-                                                  {-nu_13/E_1   , -nu_23/E_2   , 1.0/E_3      , 0.0     , 0.0     , 0.0     },
-                                                  {  0.0        ,  0.0         , 0.0          , 1.0/G_23, 0.0     , 0.0     },
-                                                  {  0.0        ,  0.0         , 0.0          , 0.0     , 1.0/G_31, 0.0     },
-                                                  {  0.0        ,  0.0         , 0.0          , 0.0     , 0.0     , 1.0/G_12}
-                                                  };
-
-
-      /**
-       * @brief (optional) Tramsform compliance matrix to the correct frame.
-       */
-      if(abs(angle) > 1e-12){
-        std::cout << "material frame rotated around axis: " << axis_string << " by an angle of: " << angle << std::endl;
-        Dune::FieldMatrix<double,6,6> C_rot = rotationMatrixCompliance(axis,angle);
-        (Compliance.leftmultiply(C_rot)).rightmultiply(C_rot.transposed());
-      }
-
-      printmatrix(std::cout, Compliance, "Compliance matrix used:", "--");
-
-      // invert Compliance matrix to obtain elasticity/stiffness matrix
-      Compliance.invert();
-      // printmatrix(std::cout, Compliance, "Stiffness Tensor", "--");
-      scaleStiffnessMatrix(Compliance);
-      // printmatrix(std::cout, Compliance, "Stiffness Tensor scaled", "--");
-      // printmatrix(std::cout, Compliance, "Stiffness Tensor", "--");
-      return Compliance;
+    auto E_1 = p[0];
+    auto E_2 = p[1];
+    auto E_3 = p[2];
+    auto G_12 = p[3];
+    auto G_23 = p[4];
+    auto G_31 = p[5];
+    auto nu_12 = p[6];
+    auto nu_13 = p[7];
+    auto nu_23 = p[8];
+    //other three poisson ratios are not independent
+    auto nu_21 = (p[6]/p[0])*p[1];
+    auto nu_31 = (p[7]/p[0])*p[2];
+    auto nu_32 = (p[8]/p[1])*p[2];
+
+    std::string axis_string;
+    switch (axis)
+    {
+    case 0 :
+      axis_string = "x - axis";
+      break;
+    case 1 :
+      axis_string = "y - axis";
+      break;
+    case 2 :
+      axis_string = "z - axis";
+      break;
+    default : break;
+    }
+
+    // Compliance matrix
+    Dune::FieldMatrix<double,6,6> Compliance = {{1.0/E_1      , -nu_21/E_2   , -nu_31/E_3   , 0.0     , 0.0     , 0.0     },
+      {-nu_12/E_1   , 1.0/E_2      , -nu_32/E_3   , 0.0     , 0.0     , 0.0     },
+      {-nu_13/E_1   , -nu_23/E_2   , 1.0/E_3      , 0.0     , 0.0     , 0.0     },
+      {  0.0        ,  0.0         , 0.0          , 1.0/G_23, 0.0     , 0.0     },
+      {  0.0        ,  0.0         , 0.0          , 0.0     , 1.0/G_31, 0.0     },
+      {  0.0        ,  0.0         , 0.0          , 0.0     , 0.0     , 1.0/G_12}
+    };
+
+
+    /**
+     * @brief (optional) Tramsform compliance matrix to the correct frame.
+     */
+    if(abs(angle) > 1e-12) {
+      std::cout << "material frame rotated around axis: " << axis_string << " by an angle of: " << angle << std::endl;
+      Dune::FieldMatrix<double,6,6> C_rot = rotationMatrixCompliance(axis,angle);
+      (Compliance.leftmultiply(C_rot)).rightmultiply(C_rot.transposed());
+    }
+
+    printmatrix(std::cout, Compliance, "Compliance matrix used:", "--");
+
+    // invert Compliance matrix to obtain elasticity/stiffness matrix
+    Compliance.invert();
+    // printmatrix(std::cout, Compliance, "Stiffness Tensor", "--");
+    scaleStiffnessMatrix(Compliance);
+    // printmatrix(std::cout, Compliance, "Stiffness Tensor scaled", "--");
+    // printmatrix(std::cout, Compliance, "Stiffness Tensor", "--");
+    return Compliance;
   }
   //-------------------------------------------------------------------------------
 
@@ -383,124 +383,124 @@ Dune::FieldMatrix<double,6,6> setupPhase(const int phase)
    * @brief Definition of transversely isotropic elasticity tensor (in Voigt notation)
    *        (see https://en.wikipedia.org/wiki/Poisson%27s_ratio)
    * @param axis    rotate material frame around axis
-   * @param angle   rotation angle 
+   * @param angle   rotation angle
    * @param p       elastic constants: {E1,E2,G12,nu12,nu23}
    * @return        Stiffness matrix
    */
   Dune::FieldMatrix<double,6,6> transversely_isotropic(const int& axis,
-                                          const double& angle,
-                                          const Dune::FieldVector<double,5>& p
-                                          ) 
+                                                       const double& angle,
+                                                       const Dune::FieldVector<double,5>& p
+                                                       )
   {
     // (see https://en.wikipedia.org/wiki/Poisson%27s_ratio)
-      auto E_1 = p[0];
-      auto E_2 = p[1];
-      auto E_3 = E_2;
-      auto nu_12 = p[3];
-      auto nu_13 = nu_12;
-      auto nu_21 = (nu_12/E_1)*E_2;
-      auto nu_31 = nu_21;
-      auto nu_23 = p[4];
-      auto nu_32 = nu_23;
-      auto G_12 = p[2];
-      auto G_23 = E_2/(2.0*(1+nu_23));
-      auto G_31 = G_23;
-      //other three poisson ratios are not independent 
-
-      std::string axis_string;
-      switch (axis)
-      {
-        case 0:
-             axis_string = "x - axis";
-             break;
-        case 1: 
-             axis_string = "y - axis";
-             break;
-        case 2: 
-             axis_string = "z - axis";
-             break;
-        default: break;
-      }
-      
-      //---compliance matrix
-      Dune::FieldMatrix<double,6,6> Compliance = {{1.0/E_1      , -nu_21/E_2   , -nu_31/E_3   , 0.0     , 0.0     , 0.0   },
-                                                  {-nu_12/E_1   , 1.0/E_2      , -nu_32/E_3   , 0.0     , 0.0     , 0.0   },
-                                                  {-nu_13/E_1   , -nu_23/E_2   , 1.0/E_3      , 0.0     , 0.0     , 0.0   },
-                                                  {  0.0        ,  0.0         , 0.0          , 1.0/G_23, 0.0     , 0.0   },
-                                                  {  0.0        ,  0.0         , 0.0          , 0.0     , 1.0/G_31, 0.0   },
-                                                  {  0.0        ,  0.0         , 0.0          , 0.0     , 0.0     , 1.0/G_12}
-                                                  };
-
-      /**
-       * @brief (optional) Tramsform compliance matrix to the correct frame.
-       */
-      if(abs(angle) > 1e-12){
-        // std::cout << "material frame rotated around axis: " << axis << " by an angle of: " << angle << std::endl;
-        std::cout << "material frame rotated around axis: " << axis_string << " by an angle of: " << angle << std::endl;
-        Dune::FieldMatrix<double,6,6> C_rot = rotationMatrixCompliance(axis,angle);
-        (Compliance.leftmultiply(C_rot)).rightmultiply(C_rot.transposed());
-      }
-
-      printmatrix(std::cout, Compliance, "Compliance matrix used:", "--");
-
-      // invert Compliance matrix to obtain elasticity/stiffness matrix
-      Compliance.invert();
-      // printmatrix(std::cout, Compliance, "Stiffness Tensor", "--");
-      
-      scaleStiffnessMatrix(Compliance);
-
-      return Compliance;
+    auto E_1 = p[0];
+    auto E_2 = p[1];
+    auto E_3 = E_2;
+    auto nu_12 = p[3];
+    auto nu_13 = nu_12;
+    auto nu_21 = (nu_12/E_1)*E_2;
+    auto nu_31 = nu_21;
+    auto nu_23 = p[4];
+    auto nu_32 = nu_23;
+    auto G_12 = p[2];
+    auto G_23 = E_2/(2.0*(1+nu_23));
+    auto G_31 = G_23;
+    //other three poisson ratios are not independent
+
+    std::string axis_string;
+    switch (axis)
+    {
+    case 0 :
+      axis_string = "x - axis";
+      break;
+    case 1 :
+      axis_string = "y - axis";
+      break;
+    case 2 :
+      axis_string = "z - axis";
+      break;
+    default : break;
+    }
+
+    //---compliance matrix
+    Dune::FieldMatrix<double,6,6> Compliance = {{1.0/E_1      , -nu_21/E_2   , -nu_31/E_3   , 0.0     , 0.0     , 0.0   },
+      {-nu_12/E_1   , 1.0/E_2      , -nu_32/E_3   , 0.0     , 0.0     , 0.0   },
+      {-nu_13/E_1   , -nu_23/E_2   , 1.0/E_3      , 0.0     , 0.0     , 0.0   },
+      {  0.0        ,  0.0         , 0.0          , 1.0/G_23, 0.0     , 0.0   },
+      {  0.0        ,  0.0         , 0.0          , 0.0     , 1.0/G_31, 0.0   },
+      {  0.0        ,  0.0         , 0.0          , 0.0     , 0.0     , 1.0/G_12}
+    };
+
+    /**
+     * @brief (optional) Tramsform compliance matrix to the correct frame.
+     */
+    if(abs(angle) > 1e-12) {
+      // std::cout << "material frame rotated around axis: " << axis << " by an angle of: " << angle << std::endl;
+      std::cout << "material frame rotated around axis: " << axis_string << " by an angle of: " << angle << std::endl;
+      Dune::FieldMatrix<double,6,6> C_rot = rotationMatrixCompliance(axis,angle);
+      (Compliance.leftmultiply(C_rot)).rightmultiply(C_rot.transposed());
+    }
+
+    printmatrix(std::cout, Compliance, "Compliance matrix used:", "--");
+
+    // invert Compliance matrix to obtain elasticity/stiffness matrix
+    Compliance.invert();
+    // printmatrix(std::cout, Compliance, "Stiffness Tensor", "--");
+
+    scaleStiffnessMatrix(Compliance);
+
+    return Compliance;
   }
   //-------------------------------------------------------------------------------
 
 
   /**
    * @brief Definition of general anisotropic elasticity tensor (in Voigt notation)
-   *        
+   *
    * @param axis        rotate material frame around axis
-   * @param angle       rotation angle 
+   * @param angle       rotation angle
    * @param Compliance  Compliance matrix
    * @return            Stiffness matrix
-   */  
+   */
   Dune::FieldMatrix<double,6,6> general_anisotropic(const int& axis,
                                                     const double& angle,
                                                     Dune::FieldMatrix<double,6,6>& Compliance
-                                                    ) 
+                                                    )
   {
-      std::string axis_string;
-      switch (axis)
-      {
-        case 0:
-             axis_string = "x - axis";
-             break;
-        case 1: 
-             axis_string = "y - axis";
-             break;
-        case 2: 
-             axis_string = "z - axis";
-             break;
-        default: break;
-      }
-
-      /**
-       * @brief (optional) Tramsform compliance matrix to the correct frame.
-       */
-      if(abs(angle) > 1e-12){
-        // std::cout << "material frame rotated around axis: " << axis << " by an angle of: " << angle << std::endl;
-        std::cout << "material frame rotated around axis: " << axis_string << " by an angle of: " << angle << std::endl;
-        Dune::FieldMatrix<double,6,6> C_rot = rotationMatrixCompliance(axis,angle);
-        (Compliance.leftmultiply(C_rot)).rightmultiply(C_rot.transposed());
-      }
-      printmatrix(std::cout, Compliance, "Compliance matrix used:", "--");
-
-
-      // invert Compliance matrix to obtain elasticity/stiffness matrix
-      Compliance.invert();
-      // printmatrix(std::cout, Compliance, "Stiffness Tensor", "--");
-      
-      scaleStiffnessMatrix(Compliance);
-
-      return Compliance;
+    std::string axis_string;
+    switch (axis)
+    {
+    case 0 :
+      axis_string = "x - axis";
+      break;
+    case 1 :
+      axis_string = "y - axis";
+      break;
+    case 2 :
+      axis_string = "z - axis";
+      break;
+    default : break;
+    }
+
+    /**
+     * @brief (optional) Tramsform compliance matrix to the correct frame.
+     */
+    if(abs(angle) > 1e-12) {
+      // std::cout << "material frame rotated around axis: " << axis << " by an angle of: " << angle << std::endl;
+      std::cout << "material frame rotated around axis: " << axis_string << " by an angle of: " << angle << std::endl;
+      Dune::FieldMatrix<double,6,6> C_rot = rotationMatrixCompliance(axis,angle);
+      (Compliance.leftmultiply(C_rot)).rightmultiply(C_rot.transposed());
+    }
+    printmatrix(std::cout, Compliance, "Compliance matrix used:", "--");
+
+
+    // invert Compliance matrix to obtain elasticity/stiffness matrix
+    Compliance.invert();
+    // printmatrix(std::cout, Compliance, "Stiffness Tensor", "--");
+
+    scaleStiffnessMatrix(Compliance);
+
+    return Compliance;
   }
   //-------------------------------------------------------------------------------
 
@@ -515,7 +515,7 @@ Dune::FieldMatrix<double,6,6> setupPhase(const int phase)
   }
 
 
-  MatrixRT prestrain(const int& phase,const Domain& x) const  
+  MatrixRT prestrain(const int& phase,const Domain& x) const
   {
     return prestrain_[phase-1](x);
   }
@@ -527,21 +527,21 @@ Dune::FieldMatrix<double,6,6> setupPhase(const int phase)
   }
 
 
-    ///////////////////////////////
-    // Getter
-    ///////////////////////////////
-    Dune::ParameterTree getParameterSet() const {return parameterSet_;}
-    std::vector<VoigtMatrix<double,3>> getElasticityTensor() const {return L_;}
+  ///////////////////////////////
+  // Getter
+  ///////////////////////////////
+  Dune::ParameterTree getParameterSet() const {return parameterSet_;}
+  std::vector<VoigtMatrix<double,3> > getElasticityTensor() const {return L_;}
 
 
 
-    MatrixPhase getPrestrainFunction() const {return prestrain_;} 
+  MatrixPhase getPrestrainFunction() const {return prestrain_;}
 
-    auto getLocalIndicatorFunction() const {return localIndicatorFunction_;}   //get as localFunction
-    auto getIndicatorFunctionGVF() const {return indicatorFunctionGVF_;}   //get as GridViewFunction
-    auto getIndicatorFunction() const {return indicatorFunction_;}
+  auto getLocalIndicatorFunction() const {return localIndicatorFunction_;}     //get as localFunction
+  auto getIndicatorFunctionGVF() const {return indicatorFunctionGVF_;}     //get as GridViewFunction
+  auto getIndicatorFunction() const {return indicatorFunction_;}
 
-    auto getGamma() const {return gamma_;}
+  auto getGamma() const {return gamma_;}
 
 
   ///////////////////////////////
@@ -551,53 +551,53 @@ Dune::FieldMatrix<double,6,6> setupPhase(const int phase)
   /**
    * @brief Write material indicator function as a grid function to VTK.
    *        The Writer uses piecewise constant (P0) interpolation
-   * 
+   *
    * @param level  GridLevel
    */
   // void writeVTKMaterialFunctions(const int level, double vtkIndex = 1) const
   void writeVTKMaterialFunctions(const int level) const
   {
-        // std::string outputPath = parameterSet_.get("outputPath", "../../outputs");
-        std::string resultPath = parameterSet_.get("resultPath", "../../outputs");
-        std::string baseName = parameterSet_.get("baseName", "CellProblem-result");
+    // std::string outputPath = parameterSet_.get("outputPath", "../../outputs");
+    std::string resultPath = parameterSet_.get("resultPath", "../../outputs");
+    std::string baseName = parameterSet_.get("baseName", "CellProblem-result");
+
+    int subsamplingRefinement = parameterSet_.get<int>("MaterialSubsamplingRefinement", 2);
+
+    Dune::SubsamplingVTKWriter<GridView> MaterialVtkWriter(gridView_, Dune::refinementLevels(subsamplingRefinement));
 
-        int subsamplingRefinement = parameterSet_.get<int>("MaterialSubsamplingRefinement", 2);
+    MaterialVtkWriter.addCellData(
+      indicatorFunction_,
+      Dune::VTK::FieldInfo("materialIndicatorFunction_", Dune::VTK::FieldInfo::Type::scalar, 1));
 
-        Dune::SubsamplingVTKWriter<GridView> MaterialVtkWriter(gridView_, Dune::refinementLevels(subsamplingRefinement));
-        
-        MaterialVtkWriter.addCellData(
-            indicatorFunction_,
-            Dune::VTK::FieldInfo("materialIndicatorFunction_", Dune::VTK::FieldInfo::Type::scalar, 1));
+    MaterialVtkWriter.write(resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level) );
+    std::cout << "wrote data to file:" + resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level) << std::endl;
 
-        MaterialVtkWriter.write(resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level) );
-        std::cout << "wrote data to file:" + resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level) << std::endl;  
 
-        
-        //-- Version using the Dune::VTKSequenceWriter
-        // std::shared_ptr<Dune::SubsamplingVTKWriter<GridView> > MaterialVtkWriter = std::make_shared<Dune::SubsamplingVTKWriter<GridView>>(gridView_, Dune::refinementLevels(subsamplingRefinement));
+    //-- Version using the Dune::VTKSequenceWriter
+    // std::shared_ptr<Dune::SubsamplingVTKWriter<GridView> > MaterialVtkWriter = std::make_shared<Dune::SubsamplingVTKWriter<GridView>>(gridView_, Dune::refinementLevels(subsamplingRefinement));
 
-        // MaterialVtkWriter->addCellData(indicatorFunction_,
-        //                                Dune::VTK::FieldInfo("materialIndicatorFunction_", Dune::VTK::FieldInfo::Type::scalar, 1));
+    // MaterialVtkWriter->addCellData(indicatorFunction_,
+    //                                Dune::VTK::FieldInfo("materialIndicatorFunction_", Dune::VTK::FieldInfo::Type::scalar, 1));
 
 
-        // Dune::VTKSequenceWriter<GridView> SequenceMaterialVTK(MaterialVtkWriter, resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level));
-        // SequenceMaterialVTK.write(vtkIndex);
-        // std::cout << "wrote data to file:" + resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level) + "-" + std::to_string(vtkIndex) << std::endl;  
+    // Dune::VTKSequenceWriter<GridView> SequenceMaterialVTK(MaterialVtkWriter, resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level));
+    // SequenceMaterialVTK.write(vtkIndex);
+    // std::cout << "wrote data to file:" + resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level) + "-" + std::to_string(vtkIndex) << std::endl;
 
-        //--Version using dune-vtk 
-        // Dune::Vtk::DiscontinuousDataCollector<GridView> discontinuousDataCollector(gridView_);
-        // Dune::Vtk::YaspDataCollector<GridView, 4> yaspDataCollector(gridView_);
-        // Dune::Vtk::LagrangeDataCollector<GridView, 4> lagrangeDataCollector(gridView_);
-        // Dune::Vtk::UnstructuredGridWriter writer(lagrangeDataCollector, Dune::Vtk::FormatTypes::ASCII, Dune::Vtk::DataTypes::FLOAT32);
-        // // Dune::Vtk::UnstructuredGridWriter writer(discontinuousDataCollector, Dune::Vtk::FormatTypes::ASCII, Dune::Vtk::DataTypes::FLOAT32);
+    //--Version using dune-vtk
+    // Dune::Vtk::DiscontinuousDataCollector<GridView> discontinuousDataCollector(gridView_);
+    // Dune::Vtk::YaspDataCollector<GridView, 4> yaspDataCollector(gridView_);
+    // Dune::Vtk::LagrangeDataCollector<GridView, 4> lagrangeDataCollector(gridView_);
+    // Dune::Vtk::UnstructuredGridWriter writer(lagrangeDataCollector, Dune::Vtk::FormatTypes::ASCII, Dune::Vtk::DataTypes::FLOAT32);
+    // // Dune::Vtk::UnstructuredGridWriter writer(discontinuousDataCollector, Dune::Vtk::FormatTypes::ASCII, Dune::Vtk::DataTypes::FLOAT32);
 
-        // auto f2 = Dune::Functions::makeAnalyticGridViewFunction(indicatorFunction_ ,gridView_);
-        // // writer.addPointData(f2 , "IndicatorFunction");
-        // writer.addCellData(f2 , "IndicatorFunction");
-        // writer.write(resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level) + "_DuneVTK");
-	      return;
+    // auto f2 = Dune::Functions::makeAnalyticGridViewFunction(indicatorFunction_ ,gridView_);
+    // // writer.addPointData(f2 , "IndicatorFunction");
+    // writer.addCellData(f2 , "IndicatorFunction");
+    // writer.write(resultPath + "/" + baseName + "_MaterialFunction-level"+ std::to_string(level) + "_DuneVTK");
+    return;
   };
 
 };
 
-#endif
\ No newline at end of file
+#endif
diff --git a/dune/microstructure/voigthelper.hh b/dune/microstructure/voigthelper.hh
index 5058f710ec2b21a535b8da7f51aec7082d498646..a3ed64d17e4f1478c57b0eca7539c18a20223c56 100644
--- a/dune/microstructure/voigthelper.hh
+++ b/dune/microstructure/voigthelper.hh
@@ -17,12 +17,12 @@ using VoigtMatrix = Dune::FieldMatrix<T,dim*(dim+1)/2,dim*(dim+1)/2>;
 
 
 /**
- * @brief Voigt-notation(https://de.wikipedia.org/wiki/Voigtsche_Notation) distinguishes 
+ * @brief Voigt-notation(https://de.wikipedia.org/wiki/Voigtsche_Notation) distinguishes
  *        in the transformation from Matrix to Vector between stresses and strains. The transformation
- *        for strains features an additional factor 2 for the non-diagonal entries. In order to avoid 
+ *        for strains features an additional factor 2 for the non-diagonal entries. In order to avoid
  *        the use of different data structures for both stresses & strains we use the same Matrix-to-Vector
- *        mapping ('matrixToVoigt') and incorporate the factors in suitable places. namely: 
- *        - The Stiffness matrix of the constitutive relation get scaled by a factor of 2 in the last three columns 
+ *        mapping ('matrixToVoigt') and incorporate the factors in suitable places. namely:
+ *        - The Stiffness matrix of the constitutive relation get scaled by a factor of 2 in the last three columns
  *        - The 'voigtScalarProduct' scales the lase three products by a factor of 2
  */
 
diff --git a/experiment/macro-problem/L-clamped-Plate.py b/experiment/macro-problem/L-clamped-Plate.py
index c48aa2dc9ab9f2710a2d786bbd01496ef86289f3..44bffbef77a9f4227cbe98a93ad863fa58b067ba 100644
--- a/experiment/macro-problem/L-clamped-Plate.py
+++ b/experiment/macro-problem/L-clamped-Plate.py
@@ -25,15 +25,15 @@ parameterSet.baseName= 'L-clamped-Plate'
 #############################################
 #  Grid parameters
 #############################################
-nX=8
-nY=8
+nX=1
+nY=1
 
 parameterSet.structuredGrid = 'simplex'
 parameterSet.lower = '0 0'
 parameterSet.upper = '4 4'
 parameterSet.elements = str(nX)+' '+  str(nY)
 
-parameterSet.macroGridLevel = 1
+parameterSet.macroGridLevel = 3
 #############################################
 #  Options
 #############################################
@@ -47,6 +47,8 @@ parameterSet.conforming_DiscreteJacobian = 0
 #############################################
 #  Solver parameters
 #############################################
+# Choose solver: "RNHM" (Default:Riemannian Newton with Hessian modification), "RiemannianTR" (Riemannain Trust-region method)
+parameterSet.Solver = "RNHM"
 # Tolerance of the multigrid solver
 parameterSet.tolerance = 1e-12
 # Maximum number of multigrid iterations
@@ -99,8 +101,8 @@ def dirichlet_indicator(x) :
 
 
 #boundary-values/derivative function
-def boundaryValues(x):
-    return [x[0], x[1], 0]
+# def boundaryValues(x):
+#     return [x[0], x[1], 0]
 
 
 # def boundaryValuesDerivative(x):
diff --git a/experiment/macro-problem/MVM_infinitynorm.py b/experiment/macro-problem/MVM_infinitynorm.py
new file mode 100644
index 0000000000000000000000000000000000000000..c76b48a7cec2ef8f951462a383f0ecd28d410009
--- /dev/null
+++ b/experiment/macro-problem/MVM_infinitynorm.py
@@ -0,0 +1,333 @@
+import math
+import numpy as np
+
+class ParameterSet(dict):
+    def __init__(self, *args, **kwargs):
+        super(ParameterSet, self).__init__(*args, **kwargs)
+        self.__dict__ = self
+
+parameterSet = ParameterSet()
+
+
+""""
+    Experiment: (0,2) x (0,1) domain 
+    with Microstructure with infinity distances (squares) from vertices 
+                and RVE center but constant in one space direction.
+
+"""
+
+#############################################
+#  Paths
+#############################################
+parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_MVM_infinitynorm'
+parameterSet.baseName= 'MVM_infinitynorm'
+
+#############################################
+#  Grid parameters
+#############################################
+nX=8
+nY=4
+
+parameterSet.structuredGrid = 'simplex'
+parameterSet.lower = '0 0'
+parameterSet.upper = '2 1'
+parameterSet.elements = str(nX)+' '+  str(nY)
+
+parameterSet.macroGridLevel = 2 
+#############################################
+#  Options
+#############################################
+parameterSet.measure_analyticalError = False
+parameterSet.measure_isometryError = False
+parameterSet.vtkWrite_analyticalSurfaceNormal = False
+parameterSet.vtkwrite_analyticalSolution = False
+
+
+parameterSet.conforming_DiscreteJacobian = 0
+#############################################
+#  Solver parameters
+#############################################
+# Tolerance of the multigrid solver
+parameterSet.tolerance = 1e-12
+# Maximum number of multigrid iterations
+parameterSet.maxProximalNewtonSteps = 1000
+# Initial regularization
+parameterSet.initialRegularization = 1000
+# Measure convergence
+parameterSet.instrumented = 0
+
+# parameterSet.regularizationNorm = 'Euclidean'
+parameterSet.regularizationNorm = 'H1semi'
+
+############################
+#   Problem specifications
+############################
+# Dimension of the domain (only used for numerical-test python files)
+parameterSet.dim = 2
+
+#############################################
+#  VTK/Output
+#############################################
+# Write discrete solution as .vtk-File
+parameterSet.writeVTK = 1
+parameterSet.vtkwrite_analyticalSolution = 0
+parameterSet.vtkWrite_analyticalSurfaceNormal = 0
+
+# The grid can be refined several times for a higher resolution in the VTK-file.
+parameterSet.subsamplingRefinement = 0
+
+# Write Dof-Vector to .txt-file
+parameterSet.writeDOFvector = 0
+
+#############################################
+#  Dirichlet boundary indicator
+#############################################
+# def dirichlet_indicator(x) :
+#     if( (x[0] <= 0.01) or (x[0] >= 1.99)):
+#         return True
+#     else:
+#         return False
+
+# one-sided bc
+def dirichlet_indicator(x) :
+    if( (x[0] <= 0.01) ):
+        return True
+    else:
+        return False
+
+# def dirichlet_indicator(x) :
+#         return False
+
+
+#############################################
+#  MICROSTRUCTURE
+############################################
+parameterSet.VTKwriteMacroPhaseIndicator = True
+parameterSet.MacroPhaseSubsamplingRefinement = 3
+
+
+class GlobalMicrostructure:
+    """ Class that represents the global microstructure.
+    
+        The global microstructure can be defined individually 
+        for different (finitely many) macroscopic phases. 
+        Each macroscopic phase corresponds to a 'LocalMicrostructure_'
+        sub-class that defines the necessary data for the local 
+        micro-problem. 
+
+        Currently, there are three possibilities for the LocalMicrostructure:
+            (1) Read the effective quantities (Qhom,Beff) from this parset.
+            (Constant local microstructure)
+            (2) Solve the micro-problem once to obtain the effective quantities. 
+            (Constant local microstructure)
+            (3) Solve for micro-problem for each macroscopic quadrature point.
+            (Macroscopocally varying local microstructure)) 
+    """
+    def __init__(self,macroPoint=[0,0]):
+        self.macroPhases = 1
+
+        # define first local microstructure options.
+        # self.macroPhase1_constantMicrostructure = True
+        self.macroPhase1_constantMicrostructure = False 
+        self.macroPhase1_readEffectiveQuantities = False;
+
+
+    def macroPhaseIndicator(self,y): #y :macroscopic point
+            """ Indicatorfunction that determines the domains 
+                i.e. macro-phases of different local microstructures.
+            """
+            return 1;
+                
+    # Represents the local microstructure in Phase 1
+    class LocalMicrostructure_1:  
+        def __init__(self,macroPoint=[0,0]):  #default value for initialization
+            self.macroPoint = macroPoint
+
+            self.gamma = 1.0    #in the future this might change depending on macroPoint.
+            self.phases = 2     #in the future this might change depending on macroPoint.
+            #--- Define different material phases:
+
+            #- PHASE 1
+            self.phase1_type="isotropic"
+            self.materialParameters_phase1 = [28.7,22.5]  # glass (Fibre)
+            #- PHASE 2
+            self.phase2_type="isotropic"
+            self.materialParameters_phase2 = [1.2,2.58]    #Matrix-material: polystyrene
+
+
+            # self.cacheMacroPhase=True
+            # self.macroPhases = [] #store macro phase numbers.
+            # self.macroPhaseCount = 0
+
+
+
+
+            self.theta = 0.2 # only used with constant microstructure.
+
+            self.theta_start = 0.1 
+            self.theta_target = 0.3
+
+
+        def one_norm(self,v):
+            # r = 0
+            # for i in range(0, len(v)):
+            #     r += np.abs(v[i])
+            # return r
+            return np.linalg.norm(v,1)
+
+        def two_norm(self,v):
+            # r = 0
+            # for i in range(0, len(v)):
+            #     r += v[i]**2
+            # return np.sqrt(r)
+            return np.linalg.norm(v, 'fro') # frobenius-norm (default)
+
+
+        def infinity_norm(self,v):
+            # return np.abs(v).max()
+            return np.linalg.norm(v,np.inf) # Use already exisiting norm from numpy..
+
+        
+        """
+            extract subarray from A with index i removed.
+        """
+        def subArray(self,v,i):
+            r = []
+            for j in range(0,len(v)):
+                if not (j == i):
+                    r.append(v[j])
+
+            return np.array(r)
+
+
+
+        #--- Indicator function for material phases
+        def indicatorFunction(self,y):
+
+                # get local theta value (varies linearly in x1 - direction):
+                macrolength_x = 2.0 #macroscopic length in x1-direction
+                theta = self.theta_start + (self.macroPoint[0]/macrolength_x) * (self.theta_target-self.theta_start)
+
+                # theta = self.theta #used with constant microstructure.
+
+                # cast to numpy array 
+                x = np.array(y)
+                # print('y:', y)
+
+                """
+                    We assume constancy in one space-direction:
+                """
+                # constant in ... 
+                # x = self.subArray(x,0) #y1-direction
+                # x = self.subArray(x,1) #y2-direction
+                x = self.subArray(x,2) #x3-direction
+                # print('y:', y)
+
+                # Dfine nodes (2D as we assume constanty in one direction)
+                node1 = [-0.5,-0.5]
+                node2 = [0.5,-0.5]
+                node3 = [-0.5,0.5]
+                node4 = [0.5,0.5]
+                center = [0,0]
+
+                indicator = (self.infinity_norm(x-node1) < theta) | (self.infinity_norm(x-node2)  < theta) \
+                | (self.infinity_norm(x-node3)  < theta) | (self.infinity_norm(x-node4)  < theta) \
+                | (self.infinity_norm(x-center)  < theta)
+
+                
+                indicator = indicator & (y[2]>= 0)
+                
+                if(indicator):
+                    return 1    #Phase1   
+                else :
+                    return 2    #Phase2
+
+        def prestrain_phase1(self,x):
+            rho =  1.0
+            return [[rho*1.0, 0, 0], [0,rho*1.0,0], [0,0,rho*1.0]]
+
+        def prestrain_phase2(self,x):
+            return [[0, 0, 0], [0,0,0], [0,0,0]]
+
+
+
+
+
+
+
+# def f(x):
+#     a = (3.0/16.0)
+#     if(x[0] <= 0.01):
+#         return [x[0]+a, x[1], 0]
+#     elif(x[0] >= 1.99):
+#         return [x[0] - a, x[1], 0]
+#     else:
+#         return [x[0], x[1], 0]
+
+
+def f(x):
+    return [x[0], x[1], 0]
+
+
+def df(x):
+    return ((1,0),
+            (0,1),
+            (0,0))
+
+
+
+fdf = (f, df)
+
+
+#############################################
+#  Force
+############################################
+parameterSet.assemble_force_term = False
+
+def force(x):
+    return [0, 0, 0]
+
+
+
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+#############################################
+#  Grid parameters
+#############################################
+parameterSet.microGridLevel = 3
+
+#############################################
+#  Assembly options
+#############################################
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
+
+#############################################
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
+#############################################
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
+
+#############################################
+#  Write/Output options      #(default=false)
+#############################################
+# --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
+parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
+#parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
+parameterSet.MaterialSubsamplingRefinement= 2
+# --- Write Correctos to VTK-File:  
+parameterSet.writeCorrectorsVTK = 0
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = False
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/experiment/macro-problem/MVM_onenorm.py b/experiment/macro-problem/MVM_onenorm.py
new file mode 100644
index 0000000000000000000000000000000000000000..3cfbe7b7a6386ae66eb35ead762c3871d97873ef
--- /dev/null
+++ b/experiment/macro-problem/MVM_onenorm.py
@@ -0,0 +1,324 @@
+import math
+import numpy as np
+
+class ParameterSet(dict):
+    def __init__(self, *args, **kwargs):
+        super(ParameterSet, self).__init__(*args, **kwargs)
+        self.__dict__ = self
+
+parameterSet = ParameterSet()
+
+
+""""
+    Experiment: (0,2) x (0,1) domain 
+    with Microstructure with infinity distances (squares) from vertices 
+                and RVE center but constant in one space direction.
+
+"""
+
+#############################################
+#  Paths
+#############################################
+parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_MVM_onenorm'
+parameterSet.baseName= 'MVM_onenorm'
+
+#############################################
+#  Grid parameters
+#############################################
+nX=8
+nY=4
+
+parameterSet.structuredGrid = 'simplex'
+parameterSet.lower = '0 0'
+parameterSet.upper = '2 1'
+parameterSet.elements = str(nX)+' '+  str(nY)
+
+parameterSet.macroGridLevel = 2 
+#############################################
+#  Options
+#############################################
+parameterSet.measure_analyticalError = False
+parameterSet.measure_isometryError = False
+parameterSet.vtkWrite_analyticalSurfaceNormal = False
+parameterSet.vtkwrite_analyticalSolution = False
+
+
+parameterSet.conforming_DiscreteJacobian = 0
+#############################################
+#  Solver parameters
+#############################################
+# Tolerance of the multigrid solver
+parameterSet.tolerance = 1e-12
+# Maximum number of multigrid iterations
+parameterSet.maxProximalNewtonSteps = 200
+# Initial regularization
+parameterSet.initialRegularization = 200
+# Measure convergence
+parameterSet.instrumented = 0
+
+# parameterSet.regularizationNorm = 'Euclidean'
+parameterSet.regularizationNorm = 'H1semi'
+
+############################
+#   Problem specifications
+############################
+# Dimension of the domain (only used for numerical-test python files)
+parameterSet.dim = 2
+
+#############################################
+#  VTK/Output
+#############################################
+# Write discrete solution as .vtk-File
+parameterSet.writeVTK = 1
+parameterSet.vtkwrite_analyticalSolution = 0
+parameterSet.vtkWrite_analyticalSurfaceNormal = 0
+
+# The grid can be refined several times for a higher resolution in the VTK-file.
+parameterSet.subsamplingRefinement = 0
+
+# Write Dof-Vector to .txt-file
+parameterSet.writeDOFvector = 0
+
+#############################################
+#  Dirichlet boundary indicator
+#############################################
+# def dirichlet_indicator(x) :
+#     if( (x[0] <= 0.01) or (x[0] >= 1.99)):
+#         return True
+#     else:
+#         return False
+
+def dirichlet_indicator(x) :
+        return False
+
+
+#############################################
+#  MICROSTRUCTURE
+############################################
+parameterSet.VTKwriteMacroPhaseIndicator = True
+parameterSet.MacroPhaseSubsamplingRefinement = 3
+
+
+class GlobalMicrostructure:
+    """ Class that represents the global microstructure.
+    
+        The global microstructure can be defined individually 
+        for different (finitely many) macroscopic phases. 
+        Each macroscopic phase corresponds to a 'LocalMicrostructure_'
+        sub-class that defines the necessary data for the local 
+        micro-problem. 
+
+        Currently, there are three possibilities for the LocalMicrostructure:
+            (1) Read the effective quantities (Qhom,Beff) from this parset.
+            (Constant local microstructure)
+            (2) Solve the micro-problem once to obtain the effective quantities. 
+            (Constant local microstructure)
+            (3) Solve for micro-problem for each macroscopic quadrature point.
+            (Macroscopocally varying local microstructure)) 
+    """
+    def __init__(self,macroPoint=[0,0]):
+        self.macroPhases = 1
+
+        # define first local microstructure options.
+        self.macroPhase1_constantMicrostructure = False 
+        self.macroPhase1_readEffectiveQuantities = False;
+
+
+    def macroPhaseIndicator(self,y): #y :macroscopic point
+            """ Indicatorfunction that determines the domains 
+                i.e. macro-phases of different local microstructures.
+            """
+            return 1;
+                
+    # Represents the local microstructure in Phase 1
+    class LocalMicrostructure_1:  
+        def __init__(self,macroPoint=[0,0]):  #default value for initialization
+            self.macroPoint = macroPoint
+
+            self.gamma = 1.0    #in the future this might change depending on macroPoint.
+            self.phases = 2     #in the future this might change depending on macroPoint.
+            #--- Define different material phases:
+
+            #- PHASE 1
+            self.phase1_type="isotropic"
+            self.materialParameters_phase1 = [28.7,22.5]  # glass (Fibre)
+            #- PHASE 2
+            self.phase2_type="isotropic"
+            self.materialParameters_phase2 = [1.2,2.58]    #Matrix-material: polystyrene
+
+
+            # self.cacheMacroPhase=True
+            # self.macroPhases = [] #store macro phase numbers.
+            # self.macroPhaseCount = 0
+
+
+
+
+            # self.theta = 0.1
+
+            self.theta_start = 0.1 
+            self.theta_target = 0.3
+
+
+        def one_norm(self,v):
+            # r = 0
+            # for i in range(0, len(v)):
+            #     r += np.abs(v[i])
+            # return r
+            return np.linalg.norm(v,1)
+
+        def two_norm(self,v):
+            # r = 0
+            # for i in range(0, len(v)):
+            #     r += v[i]**2
+            # return np.sqrt(r)
+            return np.linalg.norm(v, 'fro') # frobenius-norm (default)
+
+
+        def infinity_norm(self,v):
+            # return np.abs(v).max()
+            return np.linalg.norm(v,np.inf) # Use already exisiting norm from numpy..
+
+        
+        """
+            extract subarray from A with index i removed.
+        """
+        def subArray(self,v,i):
+            r = []
+            for j in range(0,len(v)):
+                if not (j == i):
+                    r.append(v[j])
+
+            return np.array(r)
+
+
+
+        #--- Indicator function for material phases
+        def indicatorFunction(self,y):
+
+                # get local theta value (varies linearly in x1 - direction):
+                macrolength_x = 2.0 #macroscopic length in x1-direction
+                theta = self.theta_start + (self.macroPoint[0]/macrolength_x) * (self.theta_target-self.theta_start)
+
+
+                # cast to numpy array 
+                x = np.array(y)
+                # print('y:', y)
+
+                """
+                    We assume constancy in one space-direction:
+                """
+                # constant in ... 
+                # x = self.subArray(x,0) #y1-direction
+                # x = self.subArray(x,1) #y2-direction
+                x = self.subArray(x,2) #x3-direction
+                # print('y:', y)
+
+                # Dfine nodes (2D as we assume constanty in one direction)
+                node1 = [-0.5,-0.5]
+                node2 = [0.5,-0.5]
+                node3 = [-0.5,0.5]
+                node4 = [0.5,0.5]
+                center = [0,0]
+
+                indicator = (self.one_norm(x-node1) < theta) | (self.one_norm(x-node2)  < theta) \
+                | (self.one_norm(x-node3)  < theta) | (self.one_norm(x-node4)  < theta) \
+                | (self.one_norm(x-center)  < theta)
+
+                
+                indicator = indicator & (y[2]>= 0)
+                
+                if(indicator):
+                    return 1    #Phase1   
+                else :
+                    return 2    #Phase2
+
+        def prestrain_phase1(self,x):
+            rho =  1.0
+            return [[rho*1.0, 0, 0], [0,rho*1.0,0], [0,0,rho*1.0]]
+
+        def prestrain_phase2(self,x):
+            return [[0, 0, 0], [0,0,0], [0,0,0]]
+
+
+
+
+
+
+
+
+
+def f(x):
+    a = (3.0/16.0)
+    if(x[0] <= 0.01):
+        return [x[0]+a, x[1], 0]
+    elif(x[0] >= 1.99):
+        return [x[0] - a, x[1], 0]
+    else:
+        return [x[0], x[1], 0]
+
+
+
+def df(x):
+    return ((1,0),
+            (0,1),
+            (0,0))
+
+
+
+fdf = (f, df)
+
+
+#############################################
+#  Force
+############################################
+parameterSet.assemble_force_term = False
+
+def force(x):
+    return [0, 0, 1e-2]
+
+
+
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+#############################################
+#  Grid parameters
+#############################################
+parameterSet.microGridLevel = 3
+
+
+#############################################
+#  Assembly options
+#############################################
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
+
+#############################################
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
+#############################################
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
+
+#############################################
+#  Write/Output options      #(default=false)
+#############################################
+# --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
+parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
+#parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
+parameterSet.MaterialSubsamplingRefinement= 2
+# --- Write Correctos to VTK-File:  
+parameterSet.writeCorrectorsVTK = 0
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = False
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/experiment/macro-problem/Rumpf-Experiments/diagonal-trusses.py b/experiment/macro-problem/Rumpf-Experiments/diagonal-trusses.py
index 2529eab2363fb8a9f2869904528d72d389012500..dd4cb6f0d6750f5fec83c91076561071a706afcd 100644
--- a/experiment/macro-problem/Rumpf-Experiments/diagonal-trusses.py
+++ b/experiment/macro-problem/Rumpf-Experiments/diagonal-trusses.py
@@ -91,7 +91,6 @@ def dirichlet_indicator(x) :
 #############################################
 #  MICROSTRUCTURE
 ############################################
-parameterSet.printMicroOutput = False
 parameterSet.VTKwriteMacroPhaseIndicator = True
 parameterSet.MacroPhaseSubsamplingRefinement = 3
 
@@ -546,6 +545,7 @@ def force(x):
 #     return [[0, 0, 0], [0,0,0], [0,0,0]]
 
 
+parameterSet.printMicroOutput = 0 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
 #  Grid parameters
@@ -555,17 +555,18 @@ parameterSet.microGridLevel = 2
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
@@ -573,20 +574,16 @@ parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for sol
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
 parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
-parameterSet.MaterialSubsamplingRefinement = 1
+parameterSet.MaterialSubsamplingRefinement= 2
+# --- Write Correctos to VTK-File:  
+parameterSet.writeCorrectorsVTK = 0
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = False
 
-# --- (Additional debug output)
+#############################################
+#  Debug options
+#############################################
 parameterSet.print_debug = 0  #(default=false)
-
+parameterSet.print_conditionNumber = 0
 parameterSet.print_corrector_matrices = 0
-
-# --- Write Correctos to VTK-File:  
-parameterSet.write_VTK = 0
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/experiment/macro-problem/Rumpf-Experiments/twisted-valley.py b/experiment/macro-problem/Rumpf-Experiments/twisted-valley.py
index c8c08672a4698c2d6b10c84b1e5372e297b54c09..b3c3b18857515b60eb412ef4951ff0394293d3a8 100644
--- a/experiment/macro-problem/Rumpf-Experiments/twisted-valley.py
+++ b/experiment/macro-problem/Rumpf-Experiments/twisted-valley.py
@@ -91,7 +91,6 @@ def dirichlet_indicator(x) :
 #############################################
 #  MICROSTRUCTURE
 ############################################
-parameterSet.printMicroOutput = False
 parameterSet.VTKwriteMacroPhaseIndicator = True
 parameterSet.MacroPhaseSubsamplingRefinement = 3
 
@@ -288,6 +287,8 @@ def force(x):
     return [0, 0, -1e-4]
 
 
+parameterSet.printMicroOutput = 0 # Flag that allows to supress the output of the micro-problem.
+
 #############################################
 #  Grid parameters
 #############################################
@@ -296,38 +297,35 @@ parameterSet.microGridLevel = 4
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
-parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
+parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
-parameterSet.MaterialSubsamplingRefinement = 1
+parameterSet.MaterialSubsamplingRefinement= 2
+# --- Write Correctos to VTK-File:  
+parameterSet.writeCorrectorsVTK = 0
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
 
-# --- (Additional debug output)
+#############################################
+#  Debug options
+#############################################
 parameterSet.print_debug = 0  #(default=false)
-
+parameterSet.print_conditionNumber = 0
 parameterSet.print_corrector_matrices = 0
-
-# --- Write Correctos to VTK-File:  
-parameterSet.writeCorrectorsVTK = 1
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/experiment/macro-problem/buckling_experiment/ParaviewBucklingExperiment.py b/experiment/macro-problem/buckling_experiment/ParaviewBucklingExperiment.py
new file mode 100644
index 0000000000000000000000000000000000000000..a195c128fd1ec3badd4c264abd468e96ba2f90fb
--- /dev/null
+++ b/experiment/macro-problem/buckling_experiment/ParaviewBucklingExperiment.py
@@ -0,0 +1,2203 @@
+# trace generated using paraview version 5.10.0-RC1
+#import paraview
+#paraview.compatibility.major = 5
+#paraview.compatibility.minor = 10
+
+#### import the simple module from the paraview
+from paraview.simple import *
+#### disable automatic camera reset on 'Show'
+paraview.simple._DisableFirstRenderCameraReset()
+
+# Disconnect()
+# Connect()
+# ResetSession()
+
+gridLevel = 3
+
+rho = 0.0
+# rho = 1.0
+
+""""
+    remove decimal points for string
+"""
+rhoString  = (str(rho)).replace('.', '')
+
+basePath = '/home/klaus/Desktop/Dune_TestTest/dune-microstructure/outputs_buckling_experiment/'
+experimentName = 'buckling_experiment_rho' + rhoString + '_level'+ str(gridLevel) + '_NC.vtu' 
+fileName = basePath + experimentName
+print('fileName:', fileName)
+
+
+outputPath = '/home/klaus/Desktop/'
+outputName = outputPath +  'Buckling_rho' + rhoString
+
+#----------------------- Create Boxes to visualize boundary conditions:
+# create a new 'Box'
+box1 = Box(registrationName='Box1')
+
+# Properties modified on box1
+box1.XLength = 0.1
+box1.YLength = 1.0
+box1.ZLength = 0.1
+
+# get active view
+renderView1 = GetActiveViewOrCreate('RenderView')
+
+# show data in view
+box1Display = Show(box1, renderView1, 'GeometryRepresentation')
+
+# trace defaults for the display properties.
+box1Display.Representation = 'Surface'
+box1Display.ColorArrayName = [None, '']
+box1Display.SelectTCoordArray = 'TCoords'
+box1Display.SelectNormalArray = 'Normals'
+box1Display.SelectTangentArray = 'None'
+box1Display.OSPRayScaleArray = 'Normals'
+box1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+box1Display.SelectOrientationVectors = 'None'
+box1Display.ScaleFactor = 0.3140000104904175
+box1Display.SelectScaleArray = 'None'
+box1Display.GlyphType = 'Arrow'
+box1Display.GlyphTableIndexArray = 'None'
+box1Display.GaussianRadius = 0.015700000524520873
+box1Display.SetScaleArray = ['POINTS', 'Normals']
+box1Display.ScaleTransferFunction = 'PiecewiseFunction'
+box1Display.OpacityArray = ['POINTS', 'Normals']
+box1Display.OpacityTransferFunction = 'PiecewiseFunction'
+box1Display.DataAxesGrid = 'GridAxesRepresentation'
+box1Display.PolarAxes = 'PolarAxesRepresentation'
+
+# init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+box1Display.ScaleTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+
+# init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+box1Display.OpacityTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+
+# reset view to fit data
+renderView1.ResetCamera(False)
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# Properties modified on box1Display
+box1Display.Position = [0, 0.5, 0.0]
+
+# Properties modified on box1Display.DataAxesGrid
+box1Display.DataAxesGrid.Position = [0, 0.5, 0.0]
+
+# Properties modified on box1Display.PolarAxes
+box1Display.PolarAxes.Translation = [0, 0.5, 0.0]
+
+# change solid color
+# change solid color
+box1Display.AmbientColor = [1.0, 0.8196078431372549, 0.7607843137254902]
+box1Display.DiffuseColor = [1.0, 0.8196078431372549, 0.7607843137254902]
+
+# create a new 'Box'
+box2 = Box(registrationName='Box2')
+
+# Properties modified on box2
+box2.XLength = 0.1
+box2.YLength = 1.0
+box2.ZLength = 0.1
+
+# get active view
+renderView1 = GetActiveViewOrCreate('RenderView')
+
+# show data in view
+box2Display = Show(box2, renderView1, 'GeometryRepresentation')
+
+# trace defaults for the display properties.
+box2Display.Representation = 'Surface'
+box2Display.ColorArrayName = [None, '']
+box2Display.SelectTCoordArray = 'TCoords'
+box2Display.SelectNormalArray = 'Normals'
+box2Display.SelectTangentArray = 'None'
+box2Display.OSPRayScaleArray = 'Normals'
+box2Display.OSPRayScaleFunction = 'PiecewiseFunction'
+box2Display.SelectOrientationVectors = 'None'
+box2Display.ScaleFactor = 0.3140000104904175
+box2Display.SelectScaleArray = 'None'
+box2Display.GlyphType = 'Arrow'
+box2Display.GlyphTableIndexArray = 'None'
+box2Display.GaussianRadius = 0.015700000524520873
+box2Display.SetScaleArray = ['POINTS', 'Normals']
+box2Display.ScaleTransferFunction = 'PiecewiseFunction'
+box2Display.OpacityArray = ['POINTS', 'Normals']
+box2Display.OpacityTransferFunction = 'PiecewiseFunction'
+box2Display.DataAxesGrid = 'GridAxesRepresentation'
+box2Display.PolarAxes = 'PolarAxesRepresentation'
+
+# init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+box2Display.ScaleTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+
+# init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+box2Display.OpacityTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+
+# reset view to fit data
+renderView1.ResetCamera(False)
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# Properties modified on box2Display
+box2Display.Position = [3.5, 0.5, 0.0]
+
+# Properties modified on box2Display.DataAxesGrid
+box2Display.DataAxesGrid.Position = [3.5, 0.5, 0.0]
+
+# Properties modified on box2Display.PolarAxes
+box2Display.PolarAxes.Translation = [3.5, 0.5, 0.0]
+
+# change solid color
+# change solid color
+box2Display.AmbientColor = [1.0, 0.8196078431372549, 0.7607843137254902]
+box2Display.DiffuseColor = [1.0, 0.8196078431372549, 0.7607843137254902]
+
+#----------------------------------------------------------------------------------------------
+
+# create a new 'XML Unstructured Grid Reader'
+buckling_experiment_rho10_level3_NCvtu = XMLUnstructuredGridReader(registrationName=experimentName, FileName=[fileName])
+buckling_experiment_rho10_level3_NCvtu.CellArrayStatus = []
+buckling_experiment_rho10_level3_NCvtu.PointArrayStatus = ['Displacement dune-VTK', 'IsometryErrorFunction', 'SurfaceNormalDiscrete']
+buckling_experiment_rho10_level3_NCvtu.TimeArray = 'TimeValue'
+
+# find source
+box1 = FindSource('Box1')
+
+# Properties modified on buckling_experiment_rho10_level3_NCvtu
+buckling_experiment_rho10_level3_NCvtu.TimeArray = 'None'
+
+# get active view
+renderView1 = GetActiveViewOrCreate('RenderView')
+
+# show data in view
+buckling_experiment_rho10_level3_NCvtuDisplay = Show(buckling_experiment_rho10_level3_NCvtu, renderView1, 'UnstructuredGridRepresentation')
+
+# get 2D transfer function for 'IsometryErrorFunction'
+isometryErrorFunctionTF2D = GetTransferFunction2D('IsometryErrorFunction')
+isometryErrorFunctionTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+isometryErrorFunctionTF2D.Boxes = []
+isometryErrorFunctionTF2D.ScalarRangeInitialized = 0
+isometryErrorFunctionTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+isometryErrorFunctionTF2D.OutputDimensions = [10, 10]
+
+# get color transfer function/color map for 'IsometryErrorFunction'
+isometryErrorFunctionLUT = GetColorTransferFunction('IsometryErrorFunction')
+isometryErrorFunctionLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+isometryErrorFunctionLUT.InterpretValuesAsCategories = 0
+isometryErrorFunctionLUT.AnnotationsInitialized = 0
+isometryErrorFunctionLUT.ShowCategoricalColorsinDataRangeOnly = 0
+isometryErrorFunctionLUT.RescaleOnVisibilityChange = 0
+isometryErrorFunctionLUT.EnableOpacityMapping = 0
+isometryErrorFunctionLUT.TransferFunction2D = isometryErrorFunctionTF2D
+isometryErrorFunctionLUT.Use2DTransferFunction = 0
+isometryErrorFunctionLUT.RGBPoints = [0.0, 0.231373, 0.298039, 0.752941, 0.021906808018684387, 0.865003, 0.865003, 0.865003, 0.043813616037368774, 0.705882, 0.0156863, 0.14902]
+isometryErrorFunctionLUT.UseLogScale = 0
+isometryErrorFunctionLUT.UseOpacityControlPointsFreehandDrawing = 0
+isometryErrorFunctionLUT.ShowDataHistogram = 0
+isometryErrorFunctionLUT.AutomaticDataHistogramComputation = 0
+isometryErrorFunctionLUT.DataHistogramNumberOfBins = 10
+isometryErrorFunctionLUT.ColorSpace = 'Diverging'
+isometryErrorFunctionLUT.UseBelowRangeColor = 0
+isometryErrorFunctionLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+isometryErrorFunctionLUT.UseAboveRangeColor = 0
+isometryErrorFunctionLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+isometryErrorFunctionLUT.NanColor = [1.0, 1.0, 0.0]
+isometryErrorFunctionLUT.NanOpacity = 1.0
+isometryErrorFunctionLUT.Discretize = 1
+isometryErrorFunctionLUT.NumberOfTableValues = 256
+isometryErrorFunctionLUT.ScalarRangeInitialized = 1.0
+isometryErrorFunctionLUT.HSVWrap = 0
+isometryErrorFunctionLUT.VectorComponent = 0
+isometryErrorFunctionLUT.VectorMode = 'Magnitude'
+isometryErrorFunctionLUT.AllowDuplicateScalars = 1
+isometryErrorFunctionLUT.Annotations = []
+isometryErrorFunctionLUT.ActiveAnnotatedValues = []
+isometryErrorFunctionLUT.IndexedColors = []
+isometryErrorFunctionLUT.IndexedOpacities = []
+
+# get opacity transfer function/opacity map for 'IsometryErrorFunction'
+isometryErrorFunctionPWF = GetOpacityTransferFunction('IsometryErrorFunction')
+isometryErrorFunctionPWF.Points = [0.0, 0.0, 0.5, 0.0, 0.043813616037368774, 1.0, 0.5, 0.0]
+isometryErrorFunctionPWF.AllowDuplicateScalars = 1
+isometryErrorFunctionPWF.UseLogScale = 0
+isometryErrorFunctionPWF.ScalarRangeInitialized = 1
+
+# trace defaults for the display properties.
+buckling_experiment_rho10_level3_NCvtuDisplay.Selection = None
+buckling_experiment_rho10_level3_NCvtuDisplay.Representation = 'Surface'
+buckling_experiment_rho10_level3_NCvtuDisplay.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+buckling_experiment_rho10_level3_NCvtuDisplay.LookupTable = isometryErrorFunctionLUT
+buckling_experiment_rho10_level3_NCvtuDisplay.MapScalars = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.MultiComponentsMapping = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.InterpolateScalarsBeforeMapping = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.Opacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PointSize = 2.0
+buckling_experiment_rho10_level3_NCvtuDisplay.LineWidth = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.RenderLinesAsTubes = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.RenderPointsAsSpheres = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.Interpolation = 'Gouraud'
+buckling_experiment_rho10_level3_NCvtuDisplay.Specular = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.SpecularColor = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.SpecularPower = 100.0
+buckling_experiment_rho10_level3_NCvtuDisplay.Luminosity = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.Ambient = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.Diffuse = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.Roughness = 0.3
+buckling_experiment_rho10_level3_NCvtuDisplay.Metallic = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.EdgeTint = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.Anisotropy = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.AnisotropyRotation = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.BaseIOR = 1.5
+buckling_experiment_rho10_level3_NCvtuDisplay.CoatStrength = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.CoatIOR = 2.0
+buckling_experiment_rho10_level3_NCvtuDisplay.CoatRoughness = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.CoatColor = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectTCoordArray = 'None'
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectNormalArray = 'None'
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectTangentArray = 'None'
+buckling_experiment_rho10_level3_NCvtuDisplay.Texture = None
+buckling_experiment_rho10_level3_NCvtuDisplay.RepeatTextures = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.InterpolateTextures = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.SeamlessU = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.SeamlessV = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.UseMipmapTextures = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.ShowTexturesOnBackface = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.BaseColorTexture = None
+buckling_experiment_rho10_level3_NCvtuDisplay.NormalTexture = None
+buckling_experiment_rho10_level3_NCvtuDisplay.NormalScale = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.CoatNormalTexture = None
+buckling_experiment_rho10_level3_NCvtuDisplay.CoatNormalScale = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.MaterialTexture = None
+buckling_experiment_rho10_level3_NCvtuDisplay.OcclusionStrength = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.AnisotropyTexture = None
+buckling_experiment_rho10_level3_NCvtuDisplay.EmissiveTexture = None
+buckling_experiment_rho10_level3_NCvtuDisplay.EmissiveFactor = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.FlipTextures = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.BackfaceRepresentation = 'Follow Frontface'
+buckling_experiment_rho10_level3_NCvtuDisplay.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.BackfaceOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.Position = [0.0, 0.0, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.Scale = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.Orientation = [0.0, 0.0, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.Origin = [0.0, 0.0, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+buckling_experiment_rho10_level3_NCvtuDisplay.Pickable = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.Triangulate = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.UseShaderReplacements = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.ShaderReplacements = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.NonlinearSubdivisionLevel = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.UseDataPartitions = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.OSPRayUseScaleArray = 'All Approximate'
+buckling_experiment_rho10_level3_NCvtuDisplay.OSPRayScaleArray = 'IsometryErrorFunction'
+buckling_experiment_rho10_level3_NCvtuDisplay.OSPRayScaleFunction = 'PiecewiseFunction'
+buckling_experiment_rho10_level3_NCvtuDisplay.OSPRayMaterial = 'None'
+buckling_experiment_rho10_level3_NCvtuDisplay.BlockSelectors = ['/']
+buckling_experiment_rho10_level3_NCvtuDisplay.BlockColors = []
+buckling_experiment_rho10_level3_NCvtuDisplay.BlockOpacities = []
+buckling_experiment_rho10_level3_NCvtuDisplay.Orient = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.OrientationMode = 'Direction'
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectOrientationVectors = 'Displacement dune-VTK'
+buckling_experiment_rho10_level3_NCvtuDisplay.Scaling = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.ScaleMode = 'No Data Scaling Off'
+buckling_experiment_rho10_level3_NCvtuDisplay.ScaleFactor = 0.4
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectScaleArray = 'IsometryErrorFunction'
+buckling_experiment_rho10_level3_NCvtuDisplay.GlyphType = 'Arrow'
+buckling_experiment_rho10_level3_NCvtuDisplay.UseGlyphTable = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.GlyphTableIndexArray = 'IsometryErrorFunction'
+buckling_experiment_rho10_level3_NCvtuDisplay.UseCompositeGlyphTable = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.UseGlyphCullingAndLOD = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.LODValues = []
+buckling_experiment_rho10_level3_NCvtuDisplay.ColorByLODIndex = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.GaussianRadius = 0.02
+buckling_experiment_rho10_level3_NCvtuDisplay.ShaderPreset = 'Sphere'
+buckling_experiment_rho10_level3_NCvtuDisplay.CustomTriangleScale = 3
+buckling_experiment_rho10_level3_NCvtuDisplay.CustomShader = """ // This custom shader code define a gaussian blur
+ // Please take a look into vtkSMPointGaussianRepresentation.cxx
+ // for other custom shader examples
+ //VTK::Color::Impl
+   float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+   float gaussian = exp(-0.5*dist2);
+   opacity = opacity*gaussian;
+"""
+buckling_experiment_rho10_level3_NCvtuDisplay.Emissive = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.ScaleByArray = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+buckling_experiment_rho10_level3_NCvtuDisplay.ScaleArrayComponent = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.UseScaleFunction = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.ScaleTransferFunction = 'PiecewiseFunction'
+buckling_experiment_rho10_level3_NCvtuDisplay.OpacityByArray = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+buckling_experiment_rho10_level3_NCvtuDisplay.OpacityArrayComponent = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.OpacityTransferFunction = 'PiecewiseFunction'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid = 'GridAxesRepresentation'
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionCellLabelBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionCellLabelFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionCellLabelFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionCellLabelFontSize = 18
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionCellLabelItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionCellLabelJustification = 'Left'
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionCellLabelOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionCellLabelShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionPointLabelBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionPointLabelFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionPointLabelFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionPointLabelFontSize = 18
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionPointLabelItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionPointLabelJustification = 'Left'
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionPointLabelOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectionPointLabelShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes = 'PolarAxesRepresentation'
+buckling_experiment_rho10_level3_NCvtuDisplay.ScalarOpacityFunction = isometryErrorFunctionPWF
+buckling_experiment_rho10_level3_NCvtuDisplay.ScalarOpacityUnitDistance = 0.5153882032022076
+buckling_experiment_rho10_level3_NCvtuDisplay.UseSeparateOpacityArray = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+buckling_experiment_rho10_level3_NCvtuDisplay.OpacityComponent = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectMapper = 'Projected tetra'
+buckling_experiment_rho10_level3_NCvtuDisplay.SamplingDimensions = [128, 128, 128]
+buckling_experiment_rho10_level3_NCvtuDisplay.UseFloatingPointFrameBuffer = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+buckling_experiment_rho10_level3_NCvtuDisplay.NumberOfSteps = 40
+buckling_experiment_rho10_level3_NCvtuDisplay.StepSize = 0.25
+buckling_experiment_rho10_level3_NCvtuDisplay.NormalizeVectors = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.EnhancedLIC = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.ColorMode = 'Blend'
+buckling_experiment_rho10_level3_NCvtuDisplay.LICIntensity = 0.8
+buckling_experiment_rho10_level3_NCvtuDisplay.MapModeBias = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.EnhanceContrast = 'Off'
+buckling_experiment_rho10_level3_NCvtuDisplay.LowLICContrastEnhancementFactor = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.HighLICContrastEnhancementFactor = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.LowColorContrastEnhancementFactor = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.HighColorContrastEnhancementFactor = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.AntiAlias = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.MaskOnSurface = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.MaskThreshold = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.MaskIntensity = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.MaskColor = [0.5, 0.5, 0.5]
+buckling_experiment_rho10_level3_NCvtuDisplay.GenerateNoiseTexture = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.NoiseType = 'Gaussian'
+buckling_experiment_rho10_level3_NCvtuDisplay.NoiseTextureSize = 128
+buckling_experiment_rho10_level3_NCvtuDisplay.NoiseGrainSize = 2
+buckling_experiment_rho10_level3_NCvtuDisplay.MinNoiseValue = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.MaxNoiseValue = 0.8
+buckling_experiment_rho10_level3_NCvtuDisplay.NumberOfNoiseLevels = 1024
+buckling_experiment_rho10_level3_NCvtuDisplay.ImpulseNoiseProbability = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.ImpulseNoiseBackgroundValue = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.NoiseGeneratorSeed = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.CompositeStrategy = 'AUTO'
+buckling_experiment_rho10_level3_NCvtuDisplay.UseLICForLOD = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.WriteLog = ''
+
+# init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+buckling_experiment_rho10_level3_NCvtuDisplay.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.OSPRayScaleFunction.UseLogScale = 0
+
+# init the 'Arrow' selected for 'GlyphType'
+buckling_experiment_rho10_level3_NCvtuDisplay.GlyphType.TipResolution = 100
+buckling_experiment_rho10_level3_NCvtuDisplay.GlyphType.TipRadius = 0.075
+buckling_experiment_rho10_level3_NCvtuDisplay.GlyphType.TipLength = 0.35
+buckling_experiment_rho10_level3_NCvtuDisplay.GlyphType.ShaftResolution = 100
+buckling_experiment_rho10_level3_NCvtuDisplay.GlyphType.ShaftRadius = 0.015
+buckling_experiment_rho10_level3_NCvtuDisplay.GlyphType.Invert = 0
+
+# init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+buckling_experiment_rho10_level3_NCvtuDisplay.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.043813616037368774, 1.0, 0.5, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.ScaleTransferFunction.UseLogScale = 0
+
+# init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+buckling_experiment_rho10_level3_NCvtuDisplay.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.043813616037368774, 1.0, 0.5, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.OpacityTransferFunction.UseLogScale = 0
+
+# init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XTitle = 'X Axis'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YTitle = 'Y Axis'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZTitle = 'Z Axis'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XTitleFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XTitleFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XTitleBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XTitleItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XTitleFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XTitleShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XTitleOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YTitleFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YTitleFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YTitleBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YTitleItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YTitleFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YTitleShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YTitleOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZTitleBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZTitleItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZTitleShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZTitleOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.FacesToRender = 63
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.CullBackface = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.CullFrontface = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ShowGrid = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ShowEdges = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ShowTicks = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.LabelUniqueEdgesOnly = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.AxesToLabel = 63
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XLabelFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XLabelFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XLabelBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XLabelItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XLabelFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XLabelShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XLabelOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YLabelFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YLabelFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YLabelBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YLabelItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YLabelFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YLabelShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YLabelOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZLabelBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZLabelItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZLabelShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZLabelOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XAxisNotation = 'Mixed'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XAxisPrecision = 2
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XAxisUseCustomLabels = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.XAxisLabels = []
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YAxisNotation = 'Mixed'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YAxisPrecision = 2
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YAxisUseCustomLabels = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.YAxisLabels = []
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZAxisNotation = 'Mixed'
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZAxisPrecision = 2
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZAxisUseCustomLabels = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.ZAxisLabels = []
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.UseCustomBounds = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+# init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.Visibility = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.Translation = [0.0, 0.0, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.Scale = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.EnableCustomBounds = [0, 0, 0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.EnableCustomRange = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.CustomRange = [0.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.RadialAxesVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.DrawRadialGridlines = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarArcsVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.DrawPolarArcsGridlines = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.NumberOfRadialAxes = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.AutoSubdividePolarAxis = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.NumberOfPolarAxis = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.MinimumRadius = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.MinimumAngle = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.MaximumAngle = 90.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.RadialAxesOriginToPolarAxis = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.Ratio = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitle = 'Radial Distance'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarLabelVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarLabelFormat = '%-#6.3g'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarLabelExponentLocation = 'Labels'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.RadialLabelVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.RadialLabelFormat = '%-#3.1f'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.RadialLabelLocation = 'Bottom'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.RadialUnitsVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.ScreenSize = 10.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextBold = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextItalic = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextShadow = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.EnableDistanceLOD = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.DistanceLODThreshold = 0.7
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.EnableViewAngleLOD = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.ViewAngleLODThreshold = 0.7
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.SmallestVisiblePolarAngle = 0.5
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarTicksVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.ArcTicksOriginToPolarAxis = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.TickLocation = 'Both'
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.AxisTickVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.AxisMinorTickVisibility = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.ArcTickVisibility = 1
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.ArcMinorTickVisibility = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.DeltaAngleMajor = 10.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.DeltaAngleMinor = 5.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisMajorTickSize = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTickRatioSize = 0.3
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisMajorTickThickness = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.PolarAxisTickRatioThickness = 0.5
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.ArcMajorTickSize = 0.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.ArcTickRatioSize = 0.3
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.ArcMajorTickThickness = 1.0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.ArcTickRatioThickness = 0.5
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.Use2DMode = 0
+buckling_experiment_rho10_level3_NCvtuDisplay.PolarAxes.UseLogAxis = 0
+
+# show color bar/color legend
+buckling_experiment_rho10_level3_NCvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+# find source
+box2 = FindSource('Box2')
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# set scalar coloring
+ColorBy(buckling_experiment_rho10_level3_NCvtuDisplay, ('POINTS', 'Displacement dune-VTK', 'Magnitude'))
+
+# Hide the scalar bar for this color map if no visible data is colored by it.
+HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+# rescale color and/or opacity maps used to include current data range
+buckling_experiment_rho10_level3_NCvtuDisplay.RescaleTransferFunctionToDataRange(True, False)
+
+# show color bar/color legend
+buckling_experiment_rho10_level3_NCvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+# get 2D transfer function for 'DisplacementduneVTK'
+displacementduneVTKTF2D = GetTransferFunction2D('DisplacementduneVTK')
+displacementduneVTKTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+displacementduneVTKTF2D.Boxes = []
+displacementduneVTKTF2D.ScalarRangeInitialized = 0
+displacementduneVTKTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+displacementduneVTKTF2D.OutputDimensions = [10, 10]
+
+# get color transfer function/color map for 'DisplacementduneVTK'
+displacementduneVTKLUT = GetColorTransferFunction('DisplacementduneVTK')
+displacementduneVTKLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+displacementduneVTKLUT.InterpretValuesAsCategories = 0
+displacementduneVTKLUT.AnnotationsInitialized = 0
+displacementduneVTKLUT.ShowCategoricalColorsinDataRangeOnly = 0
+displacementduneVTKLUT.RescaleOnVisibilityChange = 0
+displacementduneVTKLUT.EnableOpacityMapping = 0
+displacementduneVTKLUT.TransferFunction2D = displacementduneVTKTF2D
+displacementduneVTKLUT.Use2DTransferFunction = 0
+displacementduneVTKLUT.RGBPoints = [0.0, 0.231373, 0.298039, 0.752941, 0.4440353065316699, 0.865003, 0.865003, 0.865003, 0.8880706130633398, 0.705882, 0.0156863, 0.14902]
+displacementduneVTKLUT.UseLogScale = 0
+displacementduneVTKLUT.UseOpacityControlPointsFreehandDrawing = 0
+displacementduneVTKLUT.ShowDataHistogram = 0
+displacementduneVTKLUT.AutomaticDataHistogramComputation = 0
+displacementduneVTKLUT.DataHistogramNumberOfBins = 10
+displacementduneVTKLUT.ColorSpace = 'Diverging'
+displacementduneVTKLUT.UseBelowRangeColor = 0
+displacementduneVTKLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+displacementduneVTKLUT.UseAboveRangeColor = 0
+displacementduneVTKLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+displacementduneVTKLUT.NanColor = [1.0, 1.0, 0.0]
+displacementduneVTKLUT.NanOpacity = 1.0
+displacementduneVTKLUT.Discretize = 1
+displacementduneVTKLUT.NumberOfTableValues = 256
+displacementduneVTKLUT.ScalarRangeInitialized = 1.0
+displacementduneVTKLUT.HSVWrap = 0
+displacementduneVTKLUT.VectorComponent = 0
+displacementduneVTKLUT.VectorMode = 'Magnitude'
+displacementduneVTKLUT.AllowDuplicateScalars = 1
+displacementduneVTKLUT.Annotations = []
+displacementduneVTKLUT.ActiveAnnotatedValues = []
+displacementduneVTKLUT.IndexedColors = []
+displacementduneVTKLUT.IndexedOpacities = []
+
+# get opacity transfer function/opacity map for 'DisplacementduneVTK'
+displacementduneVTKPWF = GetOpacityTransferFunction('DisplacementduneVTK')
+displacementduneVTKPWF.Points = [0.0, 0.0, 0.5, 0.0, 0.8880706130633398, 1.0, 0.5, 0.0]
+displacementduneVTKPWF.AllowDuplicateScalars = 1
+displacementduneVTKPWF.UseLogScale = 0
+displacementduneVTKPWF.ScalarRangeInitialized = 1
+
+# create a new 'Warp By Vector'
+warpByVector1 = WarpByVector(registrationName='WarpByVector1', Input=buckling_experiment_rho10_level3_NCvtu)
+warpByVector1.Vectors = ['POINTS', 'Displacement dune-VTK']
+warpByVector1.ScaleFactor = 1.0
+
+# show data in view
+warpByVector1Display = Show(warpByVector1, renderView1, 'UnstructuredGridRepresentation')
+
+# trace defaults for the display properties.
+warpByVector1Display.Selection = None
+warpByVector1Display.Representation = 'Surface'
+warpByVector1Display.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+warpByVector1Display.LookupTable = isometryErrorFunctionLUT
+warpByVector1Display.MapScalars = 1
+warpByVector1Display.MultiComponentsMapping = 0
+warpByVector1Display.InterpolateScalarsBeforeMapping = 1
+warpByVector1Display.Opacity = 1.0
+warpByVector1Display.PointSize = 2.0
+warpByVector1Display.LineWidth = 1.0
+warpByVector1Display.RenderLinesAsTubes = 0
+warpByVector1Display.RenderPointsAsSpheres = 0
+warpByVector1Display.Interpolation = 'Gouraud'
+warpByVector1Display.Specular = 0.0
+warpByVector1Display.SpecularColor = [1.0, 1.0, 1.0]
+warpByVector1Display.SpecularPower = 100.0
+warpByVector1Display.Luminosity = 0.0
+warpByVector1Display.Ambient = 0.0
+warpByVector1Display.Diffuse = 1.0
+warpByVector1Display.Roughness = 0.3
+warpByVector1Display.Metallic = 0.0
+warpByVector1Display.EdgeTint = [1.0, 1.0, 1.0]
+warpByVector1Display.Anisotropy = 0.0
+warpByVector1Display.AnisotropyRotation = 0.0
+warpByVector1Display.BaseIOR = 1.5
+warpByVector1Display.CoatStrength = 0.0
+warpByVector1Display.CoatIOR = 2.0
+warpByVector1Display.CoatRoughness = 0.0
+warpByVector1Display.CoatColor = [1.0, 1.0, 1.0]
+warpByVector1Display.SelectTCoordArray = 'None'
+warpByVector1Display.SelectNormalArray = 'None'
+warpByVector1Display.SelectTangentArray = 'None'
+warpByVector1Display.Texture = None
+warpByVector1Display.RepeatTextures = 1
+warpByVector1Display.InterpolateTextures = 0
+warpByVector1Display.SeamlessU = 0
+warpByVector1Display.SeamlessV = 0
+warpByVector1Display.UseMipmapTextures = 0
+warpByVector1Display.ShowTexturesOnBackface = 1
+warpByVector1Display.BaseColorTexture = None
+warpByVector1Display.NormalTexture = None
+warpByVector1Display.NormalScale = 1.0
+warpByVector1Display.CoatNormalTexture = None
+warpByVector1Display.CoatNormalScale = 1.0
+warpByVector1Display.MaterialTexture = None
+warpByVector1Display.OcclusionStrength = 1.0
+warpByVector1Display.AnisotropyTexture = None
+warpByVector1Display.EmissiveTexture = None
+warpByVector1Display.EmissiveFactor = [1.0, 1.0, 1.0]
+warpByVector1Display.FlipTextures = 0
+warpByVector1Display.BackfaceRepresentation = 'Follow Frontface'
+warpByVector1Display.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+warpByVector1Display.BackfaceOpacity = 1.0
+warpByVector1Display.Position = [0.0, 0.0, 0.0]
+warpByVector1Display.Scale = [1.0, 1.0, 1.0]
+warpByVector1Display.Orientation = [0.0, 0.0, 0.0]
+warpByVector1Display.Origin = [0.0, 0.0, 0.0]
+warpByVector1Display.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+warpByVector1Display.Pickable = 1
+warpByVector1Display.Triangulate = 0
+warpByVector1Display.UseShaderReplacements = 0
+warpByVector1Display.ShaderReplacements = ''
+warpByVector1Display.NonlinearSubdivisionLevel = 1
+warpByVector1Display.UseDataPartitions = 0
+warpByVector1Display.OSPRayUseScaleArray = 'All Approximate'
+warpByVector1Display.OSPRayScaleArray = 'IsometryErrorFunction'
+warpByVector1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+warpByVector1Display.OSPRayMaterial = 'None'
+warpByVector1Display.BlockSelectors = ['/']
+warpByVector1Display.BlockColors = []
+warpByVector1Display.BlockOpacities = []
+warpByVector1Display.Orient = 0
+warpByVector1Display.OrientationMode = 'Direction'
+warpByVector1Display.SelectOrientationVectors = 'Displacement dune-VTK'
+warpByVector1Display.Scaling = 0
+warpByVector1Display.ScaleMode = 'No Data Scaling Off'
+warpByVector1Display.ScaleFactor = 0.35000000000000003
+warpByVector1Display.SelectScaleArray = 'IsometryErrorFunction'
+warpByVector1Display.GlyphType = 'Arrow'
+warpByVector1Display.UseGlyphTable = 0
+warpByVector1Display.GlyphTableIndexArray = 'IsometryErrorFunction'
+warpByVector1Display.UseCompositeGlyphTable = 0
+warpByVector1Display.UseGlyphCullingAndLOD = 0
+warpByVector1Display.LODValues = []
+warpByVector1Display.ColorByLODIndex = 0
+warpByVector1Display.GaussianRadius = 0.0175
+warpByVector1Display.ShaderPreset = 'Sphere'
+warpByVector1Display.CustomTriangleScale = 3
+warpByVector1Display.CustomShader = """ // This custom shader code define a gaussian blur
+ // Please take a look into vtkSMPointGaussianRepresentation.cxx
+ // for other custom shader examples
+ //VTK::Color::Impl
+   float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+   float gaussian = exp(-0.5*dist2);
+   opacity = opacity*gaussian;
+"""
+warpByVector1Display.Emissive = 0
+warpByVector1Display.ScaleByArray = 0
+warpByVector1Display.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+warpByVector1Display.ScaleArrayComponent = ''
+warpByVector1Display.UseScaleFunction = 1
+warpByVector1Display.ScaleTransferFunction = 'PiecewiseFunction'
+warpByVector1Display.OpacityByArray = 0
+warpByVector1Display.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+warpByVector1Display.OpacityArrayComponent = ''
+warpByVector1Display.OpacityTransferFunction = 'PiecewiseFunction'
+warpByVector1Display.DataAxesGrid = 'GridAxesRepresentation'
+warpByVector1Display.SelectionCellLabelBold = 0
+warpByVector1Display.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+warpByVector1Display.SelectionCellLabelFontFamily = 'Arial'
+warpByVector1Display.SelectionCellLabelFontFile = ''
+warpByVector1Display.SelectionCellLabelFontSize = 18
+warpByVector1Display.SelectionCellLabelItalic = 0
+warpByVector1Display.SelectionCellLabelJustification = 'Left'
+warpByVector1Display.SelectionCellLabelOpacity = 1.0
+warpByVector1Display.SelectionCellLabelShadow = 0
+warpByVector1Display.SelectionPointLabelBold = 0
+warpByVector1Display.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+warpByVector1Display.SelectionPointLabelFontFamily = 'Arial'
+warpByVector1Display.SelectionPointLabelFontFile = ''
+warpByVector1Display.SelectionPointLabelFontSize = 18
+warpByVector1Display.SelectionPointLabelItalic = 0
+warpByVector1Display.SelectionPointLabelJustification = 'Left'
+warpByVector1Display.SelectionPointLabelOpacity = 1.0
+warpByVector1Display.SelectionPointLabelShadow = 0
+warpByVector1Display.PolarAxes = 'PolarAxesRepresentation'
+warpByVector1Display.ScalarOpacityFunction = isometryErrorFunctionPWF
+warpByVector1Display.ScalarOpacityUnitDistance = 0.46736141372385986
+warpByVector1Display.UseSeparateOpacityArray = 0
+warpByVector1Display.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+warpByVector1Display.OpacityComponent = ''
+warpByVector1Display.SelectMapper = 'Projected tetra'
+warpByVector1Display.SamplingDimensions = [128, 128, 128]
+warpByVector1Display.UseFloatingPointFrameBuffer = 1
+warpByVector1Display.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+warpByVector1Display.NumberOfSteps = 40
+warpByVector1Display.StepSize = 0.25
+warpByVector1Display.NormalizeVectors = 1
+warpByVector1Display.EnhancedLIC = 1
+warpByVector1Display.ColorMode = 'Blend'
+warpByVector1Display.LICIntensity = 0.8
+warpByVector1Display.MapModeBias = 0.0
+warpByVector1Display.EnhanceContrast = 'Off'
+warpByVector1Display.LowLICContrastEnhancementFactor = 0.0
+warpByVector1Display.HighLICContrastEnhancementFactor = 0.0
+warpByVector1Display.LowColorContrastEnhancementFactor = 0.0
+warpByVector1Display.HighColorContrastEnhancementFactor = 0.0
+warpByVector1Display.AntiAlias = 0
+warpByVector1Display.MaskOnSurface = 1
+warpByVector1Display.MaskThreshold = 0.0
+warpByVector1Display.MaskIntensity = 0.0
+warpByVector1Display.MaskColor = [0.5, 0.5, 0.5]
+warpByVector1Display.GenerateNoiseTexture = 0
+warpByVector1Display.NoiseType = 'Gaussian'
+warpByVector1Display.NoiseTextureSize = 128
+warpByVector1Display.NoiseGrainSize = 2
+warpByVector1Display.MinNoiseValue = 0.0
+warpByVector1Display.MaxNoiseValue = 0.8
+warpByVector1Display.NumberOfNoiseLevels = 1024
+warpByVector1Display.ImpulseNoiseProbability = 1.0
+warpByVector1Display.ImpulseNoiseBackgroundValue = 0.0
+warpByVector1Display.NoiseGeneratorSeed = 1
+warpByVector1Display.CompositeStrategy = 'AUTO'
+warpByVector1Display.UseLICForLOD = 0
+warpByVector1Display.WriteLog = ''
+
+# init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+warpByVector1Display.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+warpByVector1Display.OSPRayScaleFunction.UseLogScale = 0
+
+# # init the 'Arrow' selected for 'GlyphType'
+# warpByVector1Display.GlyphType.TipResolution = 6
+# warpByVector1Display.GlyphType.TipRadius = 0.1
+# warpByVector1Display.GlyphType.TipLength = 0.35
+# warpByVector1Display.GlyphType.ShaftResolution = 6
+# warpByVector1Display.GlyphType.ShaftRadius = 0.03
+# warpByVector1Display.GlyphType.Invert = 0
+
+# init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+warpByVector1Display.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.043813616037368774, 1.0, 0.5, 0.0]
+warpByVector1Display.ScaleTransferFunction.UseLogScale = 0
+
+# init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+warpByVector1Display.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.043813616037368774, 1.0, 0.5, 0.0]
+warpByVector1Display.OpacityTransferFunction.UseLogScale = 0
+
+# init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+warpByVector1Display.DataAxesGrid.XTitle = 'X Axis'
+warpByVector1Display.DataAxesGrid.YTitle = 'Y Axis'
+warpByVector1Display.DataAxesGrid.ZTitle = 'Z Axis'
+warpByVector1Display.DataAxesGrid.XTitleFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.XTitleFontFile = ''
+warpByVector1Display.DataAxesGrid.XTitleBold = 0
+warpByVector1Display.DataAxesGrid.XTitleItalic = 0
+warpByVector1Display.DataAxesGrid.XTitleFontSize = 12
+warpByVector1Display.DataAxesGrid.XTitleShadow = 0
+warpByVector1Display.DataAxesGrid.XTitleOpacity = 1.0
+warpByVector1Display.DataAxesGrid.YTitleFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.YTitleFontFile = ''
+warpByVector1Display.DataAxesGrid.YTitleBold = 0
+warpByVector1Display.DataAxesGrid.YTitleItalic = 0
+warpByVector1Display.DataAxesGrid.YTitleFontSize = 12
+warpByVector1Display.DataAxesGrid.YTitleShadow = 0
+warpByVector1Display.DataAxesGrid.YTitleOpacity = 1.0
+warpByVector1Display.DataAxesGrid.ZTitleFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.ZTitleFontFile = ''
+warpByVector1Display.DataAxesGrid.ZTitleBold = 0
+warpByVector1Display.DataAxesGrid.ZTitleItalic = 0
+warpByVector1Display.DataAxesGrid.ZTitleFontSize = 12
+warpByVector1Display.DataAxesGrid.ZTitleShadow = 0
+warpByVector1Display.DataAxesGrid.ZTitleOpacity = 1.0
+warpByVector1Display.DataAxesGrid.FacesToRender = 63
+warpByVector1Display.DataAxesGrid.CullBackface = 0
+warpByVector1Display.DataAxesGrid.CullFrontface = 1
+warpByVector1Display.DataAxesGrid.ShowGrid = 0
+warpByVector1Display.DataAxesGrid.ShowEdges = 1
+warpByVector1Display.DataAxesGrid.ShowTicks = 1
+warpByVector1Display.DataAxesGrid.LabelUniqueEdgesOnly = 1
+warpByVector1Display.DataAxesGrid.AxesToLabel = 63
+warpByVector1Display.DataAxesGrid.XLabelFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.XLabelFontFile = ''
+warpByVector1Display.DataAxesGrid.XLabelBold = 0
+warpByVector1Display.DataAxesGrid.XLabelItalic = 0
+warpByVector1Display.DataAxesGrid.XLabelFontSize = 12
+warpByVector1Display.DataAxesGrid.XLabelShadow = 0
+warpByVector1Display.DataAxesGrid.XLabelOpacity = 1.0
+warpByVector1Display.DataAxesGrid.YLabelFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.YLabelFontFile = ''
+warpByVector1Display.DataAxesGrid.YLabelBold = 0
+warpByVector1Display.DataAxesGrid.YLabelItalic = 0
+warpByVector1Display.DataAxesGrid.YLabelFontSize = 12
+warpByVector1Display.DataAxesGrid.YLabelShadow = 0
+warpByVector1Display.DataAxesGrid.YLabelOpacity = 1.0
+warpByVector1Display.DataAxesGrid.ZLabelFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.ZLabelFontFile = ''
+warpByVector1Display.DataAxesGrid.ZLabelBold = 0
+warpByVector1Display.DataAxesGrid.ZLabelItalic = 0
+warpByVector1Display.DataAxesGrid.ZLabelFontSize = 12
+warpByVector1Display.DataAxesGrid.ZLabelShadow = 0
+warpByVector1Display.DataAxesGrid.ZLabelOpacity = 1.0
+warpByVector1Display.DataAxesGrid.XAxisNotation = 'Mixed'
+warpByVector1Display.DataAxesGrid.XAxisPrecision = 2
+warpByVector1Display.DataAxesGrid.XAxisUseCustomLabels = 0
+warpByVector1Display.DataAxesGrid.XAxisLabels = []
+warpByVector1Display.DataAxesGrid.YAxisNotation = 'Mixed'
+warpByVector1Display.DataAxesGrid.YAxisPrecision = 2
+warpByVector1Display.DataAxesGrid.YAxisUseCustomLabels = 0
+warpByVector1Display.DataAxesGrid.YAxisLabels = []
+warpByVector1Display.DataAxesGrid.ZAxisNotation = 'Mixed'
+warpByVector1Display.DataAxesGrid.ZAxisPrecision = 2
+warpByVector1Display.DataAxesGrid.ZAxisUseCustomLabels = 0
+warpByVector1Display.DataAxesGrid.ZAxisLabels = []
+warpByVector1Display.DataAxesGrid.UseCustomBounds = 0
+warpByVector1Display.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+# init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+warpByVector1Display.PolarAxes.Visibility = 0
+warpByVector1Display.PolarAxes.Translation = [0.0, 0.0, 0.0]
+warpByVector1Display.PolarAxes.Scale = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+warpByVector1Display.PolarAxes.EnableCustomBounds = [0, 0, 0]
+warpByVector1Display.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+warpByVector1Display.PolarAxes.EnableCustomRange = 0
+warpByVector1Display.PolarAxes.CustomRange = [0.0, 1.0]
+warpByVector1Display.PolarAxes.PolarAxisVisibility = 1
+warpByVector1Display.PolarAxes.RadialAxesVisibility = 1
+warpByVector1Display.PolarAxes.DrawRadialGridlines = 1
+warpByVector1Display.PolarAxes.PolarArcsVisibility = 1
+warpByVector1Display.PolarAxes.DrawPolarArcsGridlines = 1
+warpByVector1Display.PolarAxes.NumberOfRadialAxes = 0
+warpByVector1Display.PolarAxes.AutoSubdividePolarAxis = 1
+warpByVector1Display.PolarAxes.NumberOfPolarAxis = 0
+warpByVector1Display.PolarAxes.MinimumRadius = 0.0
+warpByVector1Display.PolarAxes.MinimumAngle = 0.0
+warpByVector1Display.PolarAxes.MaximumAngle = 90.0
+warpByVector1Display.PolarAxes.RadialAxesOriginToPolarAxis = 1
+warpByVector1Display.PolarAxes.Ratio = 1.0
+warpByVector1Display.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.PolarAxisTitleVisibility = 1
+warpByVector1Display.PolarAxes.PolarAxisTitle = 'Radial Distance'
+warpByVector1Display.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+warpByVector1Display.PolarAxes.PolarLabelVisibility = 1
+warpByVector1Display.PolarAxes.PolarLabelFormat = '%-#6.3g'
+warpByVector1Display.PolarAxes.PolarLabelExponentLocation = 'Labels'
+warpByVector1Display.PolarAxes.RadialLabelVisibility = 1
+warpByVector1Display.PolarAxes.RadialLabelFormat = '%-#3.1f'
+warpByVector1Display.PolarAxes.RadialLabelLocation = 'Bottom'
+warpByVector1Display.PolarAxes.RadialUnitsVisibility = 1
+warpByVector1Display.PolarAxes.ScreenSize = 10.0
+warpByVector1Display.PolarAxes.PolarAxisTitleOpacity = 1.0
+warpByVector1Display.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+warpByVector1Display.PolarAxes.PolarAxisTitleFontFile = ''
+warpByVector1Display.PolarAxes.PolarAxisTitleBold = 0
+warpByVector1Display.PolarAxes.PolarAxisTitleItalic = 0
+warpByVector1Display.PolarAxes.PolarAxisTitleShadow = 0
+warpByVector1Display.PolarAxes.PolarAxisTitleFontSize = 12
+warpByVector1Display.PolarAxes.PolarAxisLabelOpacity = 1.0
+warpByVector1Display.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+warpByVector1Display.PolarAxes.PolarAxisLabelFontFile = ''
+warpByVector1Display.PolarAxes.PolarAxisLabelBold = 0
+warpByVector1Display.PolarAxes.PolarAxisLabelItalic = 0
+warpByVector1Display.PolarAxes.PolarAxisLabelShadow = 0
+warpByVector1Display.PolarAxes.PolarAxisLabelFontSize = 12
+warpByVector1Display.PolarAxes.LastRadialAxisTextOpacity = 1.0
+warpByVector1Display.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+warpByVector1Display.PolarAxes.LastRadialAxisTextFontFile = ''
+warpByVector1Display.PolarAxes.LastRadialAxisTextBold = 0
+warpByVector1Display.PolarAxes.LastRadialAxisTextItalic = 0
+warpByVector1Display.PolarAxes.LastRadialAxisTextShadow = 0
+warpByVector1Display.PolarAxes.LastRadialAxisTextFontSize = 12
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextBold = 0
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextItalic = 0
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextShadow = 0
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+warpByVector1Display.PolarAxes.EnableDistanceLOD = 1
+warpByVector1Display.PolarAxes.DistanceLODThreshold = 0.7
+warpByVector1Display.PolarAxes.EnableViewAngleLOD = 1
+warpByVector1Display.PolarAxes.ViewAngleLODThreshold = 0.7
+warpByVector1Display.PolarAxes.SmallestVisiblePolarAngle = 0.5
+warpByVector1Display.PolarAxes.PolarTicksVisibility = 1
+warpByVector1Display.PolarAxes.ArcTicksOriginToPolarAxis = 1
+warpByVector1Display.PolarAxes.TickLocation = 'Both'
+warpByVector1Display.PolarAxes.AxisTickVisibility = 1
+warpByVector1Display.PolarAxes.AxisMinorTickVisibility = 0
+warpByVector1Display.PolarAxes.ArcTickVisibility = 1
+warpByVector1Display.PolarAxes.ArcMinorTickVisibility = 0
+warpByVector1Display.PolarAxes.DeltaAngleMajor = 10.0
+warpByVector1Display.PolarAxes.DeltaAngleMinor = 5.0
+warpByVector1Display.PolarAxes.PolarAxisMajorTickSize = 0.0
+warpByVector1Display.PolarAxes.PolarAxisTickRatioSize = 0.3
+warpByVector1Display.PolarAxes.PolarAxisMajorTickThickness = 1.0
+warpByVector1Display.PolarAxes.PolarAxisTickRatioThickness = 0.5
+warpByVector1Display.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+warpByVector1Display.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+warpByVector1Display.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+warpByVector1Display.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+warpByVector1Display.PolarAxes.ArcMajorTickSize = 0.0
+warpByVector1Display.PolarAxes.ArcTickRatioSize = 0.3
+warpByVector1Display.PolarAxes.ArcMajorTickThickness = 1.0
+warpByVector1Display.PolarAxes.ArcTickRatioThickness = 0.5
+warpByVector1Display.PolarAxes.Use2DMode = 0
+warpByVector1Display.PolarAxes.UseLogAxis = 0
+
+# hide data in view
+Hide(buckling_experiment_rho10_level3_NCvtu, renderView1)
+
+# show color bar/color legend
+warpByVector1Display.SetScalarBarVisibility(renderView1, True)
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# set active source
+SetActiveSource(buckling_experiment_rho10_level3_NCvtu)
+
+# show data in view
+buckling_experiment_rho10_level3_NCvtuDisplay = Show(buckling_experiment_rho10_level3_NCvtu, renderView1, 'UnstructuredGridRepresentation')
+
+# show color bar/color legend
+buckling_experiment_rho10_level3_NCvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+# hide data in view
+Hide(buckling_experiment_rho10_level3_NCvtu, renderView1)
+
+# Apply a preset using its name. Note this may not work as expected when presets have duplicate names.
+displacementduneVTKLUT.ApplyPreset('Greens', True)
+
+# set active source
+SetActiveSource(warpByVector1)
+
+# Apply a preset using its name. Note this may not work as expected when presets have duplicate names.
+isometryErrorFunctionLUT.ApplyPreset('Greens', True)
+
+# set scalar coloring
+ColorBy(warpByVector1Display, ('POINTS', 'Displacement dune-VTK', 'Magnitude'))
+
+# Hide the scalar bar for this color map if no visible data is colored by it.
+HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+# rescale color and/or opacity maps used to include current data range
+warpByVector1Display.RescaleTransferFunctionToDataRange(True, False)
+
+# show color bar/color legend
+warpByVector1Display.SetScalarBarVisibility(renderView1, True)
+
+# hide color bar/color legend
+warpByVector1Display.SetScalarBarVisibility(renderView1, False)
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.NonlinearSubdivisionLevel = 4
+
+# Properties modified on renderView1
+renderView1.OrientationAxesVisibility = 0
+
+#================================================================
+# addendum: following script captures some of the application
+# state to faithfully reproduce the visualization during playback
+#================================================================
+
+
+
+#--------------------------------------------
+# uncomment the following to render all views
+# RenderAllViews()
+# alternatively, if you want to write images, you can use SaveScreenshot(...).
+
+
+
+# get active view
+renderView1 = GetActiveViewOrCreate('RenderView')
+
+renderView1.ApplyIsometricView()
+
+# reset view to fit data
+renderView1.ResetCamera(False)
+
+renderView1.AdjustRoll(-90.0)
+
+# reset view to fit data
+renderView1.ResetCamera(True)
+
+# reset view to fit data bounds
+renderView1.ResetCamera(0.0, 3.5, -0.0007144344272091985, 1.0007144212722778, -0.00020493667398113757, 0.8521557450294495, False)
+
+# reset view to fit data bounds
+renderView1.ResetCamera(0.0, 3.5, -0.0007144344272091985, 1.0007144212722778, -0.00020493667398113757, 0.8521557450294495, True)
+
+# reset view to fit data
+renderView1.ResetCamera(False)
+
+# get active source.
+warpByVector1 = GetActiveSource()
+
+# get display properties
+warpByVector1Display = GetDisplayProperties(warpByVector1, view=renderView1)
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Ambient = 0.15
+warpByVector1Display.Ambient = 0.3
+
+# get 2D transfer function for 'DisplacementduneVTK'
+displacementduneVTKTF2D = GetTransferFunction2D('DisplacementduneVTK')
+displacementduneVTKTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+displacementduneVTKTF2D.Boxes = []
+displacementduneVTKTF2D.ScalarRangeInitialized = 0
+displacementduneVTKTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+displacementduneVTKTF2D.OutputDimensions = [10, 10]
+
+# get color transfer function/color map for 'DisplacementduneVTK'
+displacementduneVTKLUT = GetColorTransferFunction('DisplacementduneVTK')
+displacementduneVTKLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+displacementduneVTKLUT.InterpretValuesAsCategories = 0
+displacementduneVTKLUT.AnnotationsInitialized = 0
+displacementduneVTKLUT.ShowCategoricalColorsinDataRangeOnly = 0
+displacementduneVTKLUT.RescaleOnVisibilityChange = 0
+displacementduneVTKLUT.EnableOpacityMapping = 0
+displacementduneVTKLUT.TransferFunction2D = displacementduneVTKTF2D
+displacementduneVTKLUT.Use2DTransferFunction = 0
+displacementduneVTKLUT.RGBPoints = [0.0, 0.0, 0.266667, 0.105882, 0.05572199061665925, 0.0, 0.347374, 0.139346, 0.1114439812333185, 0.000538, 0.427912, 0.172933, 0.1671664158852843, 0.069435, 0.486967, 0.222145, 0.22288840650194355, 0.138178, 0.546082, 0.271326, 0.2786103971186028, 0.197232, 0.609073, 0.31857, 0.334332387735262, 0.257255, 0.671742, 0.365859, 0.3900543783519213, 0.357647, 0.720953, 0.415071, 0.4457766220687053, 0.45767, 0.769919, 0.465021, 0.5014988036205464, 0.546251, 0.811257, 0.537855, 0.5572207942372056, 0.634295, 0.852211, 0.610688, 0.6129427848538649, 0.709097, 0.883706, 0.683522, 0.6686647754705242, 0.78316, 0.914833, 0.755894, 0.7243872101224899, 0.842215, 0.938454, 0.818885, 0.7801092007391492, 0.899977, 0.961538, 0.880692, 0.8358311913558085, 0.935409, 0.975317, 0.92203, 0.8880706130633398, 0.968627, 0.988235, 0.960784]
+displacementduneVTKLUT.UseLogScale = 0
+displacementduneVTKLUT.UseOpacityControlPointsFreehandDrawing = 0
+displacementduneVTKLUT.ShowDataHistogram = 0
+displacementduneVTKLUT.AutomaticDataHistogramComputation = 0
+displacementduneVTKLUT.DataHistogramNumberOfBins = 10
+displacementduneVTKLUT.ColorSpace = 'Lab'
+displacementduneVTKLUT.UseBelowRangeColor = 0
+displacementduneVTKLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+displacementduneVTKLUT.UseAboveRangeColor = 0
+displacementduneVTKLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+displacementduneVTKLUT.NanColor = [1.0, 1.0, 0.0]
+displacementduneVTKLUT.NanOpacity = 1.0
+displacementduneVTKLUT.Discretize = 1
+displacementduneVTKLUT.NumberOfTableValues = 256
+displacementduneVTKLUT.ScalarRangeInitialized = 1.0
+displacementduneVTKLUT.HSVWrap = 0
+displacementduneVTKLUT.VectorComponent = 0
+displacementduneVTKLUT.VectorMode = 'Magnitude'
+displacementduneVTKLUT.AllowDuplicateScalars = 1
+displacementduneVTKLUT.Annotations = []
+displacementduneVTKLUT.ActiveAnnotatedValues = []
+displacementduneVTKLUT.IndexedColors = []
+displacementduneVTKLUT.IndexedOpacities = []
+
+# get opacity transfer function/opacity map for 'DisplacementduneVTK'
+displacementduneVTKPWF = GetOpacityTransferFunction('DisplacementduneVTK')
+displacementduneVTKPWF.Points = [0.0, 0.0, 0.5, 0.0, 0.8880706130633398, 1.0, 0.5, 0.0]
+displacementduneVTKPWF.AllowDuplicateScalars = 1
+displacementduneVTKPWF.UseLogScale = 0
+displacementduneVTKPWF.ScalarRangeInitialized = 1
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Specular = 0.5
+# warpByVector1Display.Specular = 0.3
+
+
+
+# ----- Normal vector field 
+# find source
+warpByVector1 = FindSource('WarpByVector1')
+
+# create a new 'Glyph'
+glyph1 = Glyph(registrationName='Glyph1', Input=warpByVector1,
+    GlyphType='Arrow')
+glyph1.OrientationArray = ['POINTS', 'Displacement dune-VTK']
+glyph1.ScaleArray = ['POINTS', 'IsometryErrorFunction']
+glyph1.VectorScaleMode = 'Scale by Magnitude'
+glyph1.ScaleFactor = 0.35000000000000003
+glyph1.GlyphTransform = 'Transform2'
+glyph1.GlyphMode = 'Uniform Spatial Distribution (Bounds Based)'
+glyph1.MaximumNumberOfSamplePoints = 5000
+glyph1.Seed = 10339
+glyph1.Stride = 1
+
+# init the 'Arrow' selected for 'GlyphType'
+glyph1.GlyphType.TipResolution = 100
+glyph1.GlyphType.TipRadius = 0.075
+glyph1.GlyphType.TipLength = 0.35
+glyph1.GlyphType.ShaftResolution = 100
+glyph1.GlyphType.ShaftRadius = 0.015
+glyph1.GlyphType.Invert = 0
+
+# init the 'Transform2' selected for 'GlyphTransform'
+glyph1.GlyphTransform.Translate = [0.0, 0.0, 0.0]
+glyph1.GlyphTransform.Rotate = [0.0, 0.0, 0.0]
+glyph1.GlyphTransform.Scale = [1.0, 1.0, 1.0]
+
+# find source
+box1 = FindSource('Box1')
+
+# Properties modified on glyph1
+glyph1.OrientationArray = ['POINTS', 'SurfaceNormalDiscrete']
+glyph1.ScaleArray = ['POINTS', 'No scale array']
+glyph1.ScaleFactor = 0.1
+
+# get active view
+renderView1 = GetActiveViewOrCreate('RenderView')
+
+# show data in view
+glyph1Display = Show(glyph1, renderView1, 'GeometryRepresentation')
+
+# get 2D transfer function for 'IsometryErrorFunction'
+isometryErrorFunctionTF2D = GetTransferFunction2D('IsometryErrorFunction')
+isometryErrorFunctionTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+isometryErrorFunctionTF2D.Boxes = []
+isometryErrorFunctionTF2D.ScalarRangeInitialized = 0
+isometryErrorFunctionTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+isometryErrorFunctionTF2D.OutputDimensions = [10, 10]
+
+# get color transfer function/color map for 'IsometryErrorFunction'
+isometryErrorFunctionLUT = GetColorTransferFunction('IsometryErrorFunction')
+isometryErrorFunctionLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+isometryErrorFunctionLUT.InterpretValuesAsCategories = 0
+isometryErrorFunctionLUT.AnnotationsInitialized = 0
+isometryErrorFunctionLUT.ShowCategoricalColorsinDataRangeOnly = 0
+isometryErrorFunctionLUT.RescaleOnVisibilityChange = 0
+isometryErrorFunctionLUT.EnableOpacityMapping = 0
+isometryErrorFunctionLUT.TransferFunction2D = isometryErrorFunctionTF2D
+isometryErrorFunctionLUT.Use2DTransferFunction = 0
+isometryErrorFunctionLUT.RGBPoints = [0.0, 0.0, 0.266667, 0.105882, 0.0027490853382647036, 0.0, 0.347374, 0.139346, 0.005498170676529407, 0.000538, 0.427912, 0.172933, 0.00824727792160213, 0.069435, 0.486967, 0.222145, 0.010996363259866833, 0.138178, 0.546082, 0.271326, 0.013745448598131538, 0.197232, 0.609073, 0.31857, 0.01649453393639624, 0.257255, 0.671742, 0.365859, 0.019243619274660943, 0.357647, 0.720953, 0.415071, 0.021992717099806217, 0.45767, 0.769919, 0.465021, 0.024741811857998373, 0.546251, 0.811257, 0.537855, 0.027490897196263075, 0.634295, 0.852211, 0.610688, 0.03023998253452778, 0.709097, 0.883706, 0.683522, 0.03298906787279249, 0.78316, 0.914833, 0.755894, 0.0357381751178652, 0.842215, 0.938454, 0.818885, 0.03848726045612991, 0.899977, 0.961538, 0.880692, 0.04123634579439461, 0.935409, 0.975317, 0.92203, 0.043813616037368774, 0.968627, 0.988235, 0.960784]
+isometryErrorFunctionLUT.UseLogScale = 0
+isometryErrorFunctionLUT.UseOpacityControlPointsFreehandDrawing = 0
+isometryErrorFunctionLUT.ShowDataHistogram = 0
+isometryErrorFunctionLUT.AutomaticDataHistogramComputation = 0
+isometryErrorFunctionLUT.DataHistogramNumberOfBins = 10
+isometryErrorFunctionLUT.ColorSpace = 'Lab'
+isometryErrorFunctionLUT.UseBelowRangeColor = 0
+isometryErrorFunctionLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+isometryErrorFunctionLUT.UseAboveRangeColor = 0
+isometryErrorFunctionLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+isometryErrorFunctionLUT.NanColor = [1.0, 1.0, 0.0]
+isometryErrorFunctionLUT.NanOpacity = 1.0
+isometryErrorFunctionLUT.Discretize = 1
+isometryErrorFunctionLUT.NumberOfTableValues = 256
+isometryErrorFunctionLUT.ScalarRangeInitialized = 1.0
+isometryErrorFunctionLUT.HSVWrap = 0
+isometryErrorFunctionLUT.VectorComponent = 0
+isometryErrorFunctionLUT.VectorMode = 'Magnitude'
+isometryErrorFunctionLUT.AllowDuplicateScalars = 1
+isometryErrorFunctionLUT.Annotations = []
+isometryErrorFunctionLUT.ActiveAnnotatedValues = []
+isometryErrorFunctionLUT.IndexedColors = []
+isometryErrorFunctionLUT.IndexedOpacities = []
+
+# trace defaults for the display properties.
+glyph1Display.Selection = None
+glyph1Display.Representation = 'Surface'
+glyph1Display.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+glyph1Display.LookupTable = isometryErrorFunctionLUT
+glyph1Display.MapScalars = 1
+glyph1Display.MultiComponentsMapping = 0
+glyph1Display.InterpolateScalarsBeforeMapping = 1
+glyph1Display.Opacity = 1.0
+glyph1Display.PointSize = 2.0
+glyph1Display.LineWidth = 1.0
+glyph1Display.RenderLinesAsTubes = 0
+glyph1Display.RenderPointsAsSpheres = 0
+glyph1Display.Interpolation = 'Gouraud'
+glyph1Display.Specular = 0.0
+glyph1Display.SpecularColor = [1.0, 1.0, 1.0]
+glyph1Display.SpecularPower = 100.0
+glyph1Display.Luminosity = 0.0
+glyph1Display.Ambient = 0.0
+glyph1Display.Diffuse = 1.0
+glyph1Display.Roughness = 0.3
+glyph1Display.Metallic = 0.0
+glyph1Display.EdgeTint = [1.0, 1.0, 1.0]
+glyph1Display.Anisotropy = 0.0
+glyph1Display.AnisotropyRotation = 0.0
+glyph1Display.BaseIOR = 1.5
+glyph1Display.CoatStrength = 0.0
+glyph1Display.CoatIOR = 2.0
+glyph1Display.CoatRoughness = 0.0
+glyph1Display.CoatColor = [1.0, 1.0, 1.0]
+glyph1Display.SelectTCoordArray = 'None'
+glyph1Display.SelectNormalArray = 'None'
+glyph1Display.SelectTangentArray = 'None'
+glyph1Display.Texture = None
+glyph1Display.RepeatTextures = 1
+glyph1Display.InterpolateTextures = 0
+glyph1Display.SeamlessU = 0
+glyph1Display.SeamlessV = 0
+glyph1Display.UseMipmapTextures = 0
+glyph1Display.ShowTexturesOnBackface = 1
+glyph1Display.BaseColorTexture = None
+glyph1Display.NormalTexture = None
+glyph1Display.NormalScale = 1.0
+glyph1Display.CoatNormalTexture = None
+glyph1Display.CoatNormalScale = 1.0
+glyph1Display.MaterialTexture = None
+glyph1Display.OcclusionStrength = 1.0
+glyph1Display.AnisotropyTexture = None
+glyph1Display.EmissiveTexture = None
+glyph1Display.EmissiveFactor = [1.0, 1.0, 1.0]
+glyph1Display.FlipTextures = 0
+glyph1Display.BackfaceRepresentation = 'Follow Frontface'
+glyph1Display.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+glyph1Display.BackfaceOpacity = 1.0
+glyph1Display.Position = [0.0, 0.0, 0.0]
+glyph1Display.Scale = [1.0, 1.0, 1.0]
+glyph1Display.Orientation = [0.0, 0.0, 0.0]
+glyph1Display.Origin = [0.0, 0.0, 0.0]
+glyph1Display.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+glyph1Display.Pickable = 1
+glyph1Display.Triangulate = 0
+glyph1Display.UseShaderReplacements = 0
+glyph1Display.ShaderReplacements = ''
+glyph1Display.NonlinearSubdivisionLevel = 1
+glyph1Display.UseDataPartitions = 0
+glyph1Display.OSPRayUseScaleArray = 'All Approximate'
+glyph1Display.OSPRayScaleArray = 'IsometryErrorFunction'
+glyph1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+glyph1Display.OSPRayMaterial = 'None'
+glyph1Display.BlockSelectors = ['/']
+glyph1Display.BlockColors = []
+glyph1Display.BlockOpacities = []
+glyph1Display.Orient = 0
+glyph1Display.OrientationMode = 'Direction'
+glyph1Display.SelectOrientationVectors = 'Displacement dune-VTK'
+glyph1Display.Scaling = 0
+glyph1Display.ScaleMode = 'No Data Scaling Off'
+glyph1Display.ScaleFactor = 0.35175590813159946
+glyph1Display.SelectScaleArray = 'IsometryErrorFunction'
+glyph1Display.GlyphType = 'Arrow'
+glyph1Display.UseGlyphTable = 0
+glyph1Display.GlyphTableIndexArray = 'IsometryErrorFunction'
+glyph1Display.UseCompositeGlyphTable = 0
+glyph1Display.UseGlyphCullingAndLOD = 0
+glyph1Display.LODValues = []
+glyph1Display.ColorByLODIndex = 0
+glyph1Display.GaussianRadius = 0.01758779540657997
+glyph1Display.ShaderPreset = 'Sphere'
+glyph1Display.CustomTriangleScale = 3
+glyph1Display.CustomShader = """ // This custom shader code define a gaussian blur
+ // Please take a look into vtkSMPointGaussianRepresentation.cxx
+ // for other custom shader examples
+ //VTK::Color::Impl
+   float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+   float gaussian = exp(-0.5*dist2);
+   opacity = opacity*gaussian;
+"""
+glyph1Display.Emissive = 0
+glyph1Display.ScaleByArray = 0
+glyph1Display.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+glyph1Display.ScaleArrayComponent = ''
+glyph1Display.UseScaleFunction = 1
+glyph1Display.ScaleTransferFunction = 'PiecewiseFunction'
+glyph1Display.OpacityByArray = 0
+glyph1Display.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+glyph1Display.OpacityArrayComponent = ''
+glyph1Display.OpacityTransferFunction = 'PiecewiseFunction'
+glyph1Display.DataAxesGrid = 'GridAxesRepresentation'
+glyph1Display.SelectionCellLabelBold = 0
+glyph1Display.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+glyph1Display.SelectionCellLabelFontFamily = 'Arial'
+glyph1Display.SelectionCellLabelFontFile = ''
+glyph1Display.SelectionCellLabelFontSize = 18
+glyph1Display.SelectionCellLabelItalic = 0
+glyph1Display.SelectionCellLabelJustification = 'Left'
+glyph1Display.SelectionCellLabelOpacity = 1.0
+glyph1Display.SelectionCellLabelShadow = 0
+glyph1Display.SelectionPointLabelBold = 0
+glyph1Display.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+glyph1Display.SelectionPointLabelFontFamily = 'Arial'
+glyph1Display.SelectionPointLabelFontFile = ''
+glyph1Display.SelectionPointLabelFontSize = 18
+glyph1Display.SelectionPointLabelItalic = 0
+glyph1Display.SelectionPointLabelJustification = 'Left'
+glyph1Display.SelectionPointLabelOpacity = 1.0
+glyph1Display.SelectionPointLabelShadow = 0
+glyph1Display.PolarAxes = 'PolarAxesRepresentation'
+glyph1Display.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+glyph1Display.NumberOfSteps = 40
+glyph1Display.StepSize = 0.25
+glyph1Display.NormalizeVectors = 1
+glyph1Display.EnhancedLIC = 1
+glyph1Display.ColorMode = 'Blend'
+glyph1Display.LICIntensity = 0.8
+glyph1Display.MapModeBias = 0.0
+glyph1Display.EnhanceContrast = 'Off'
+glyph1Display.LowLICContrastEnhancementFactor = 0.0
+glyph1Display.HighLICContrastEnhancementFactor = 0.0
+glyph1Display.LowColorContrastEnhancementFactor = 0.0
+glyph1Display.HighColorContrastEnhancementFactor = 0.0
+glyph1Display.AntiAlias = 0
+glyph1Display.MaskOnSurface = 1
+glyph1Display.MaskThreshold = 0.0
+glyph1Display.MaskIntensity = 0.0
+glyph1Display.MaskColor = [0.5, 0.5, 0.5]
+glyph1Display.GenerateNoiseTexture = 0
+glyph1Display.NoiseType = 'Gaussian'
+glyph1Display.NoiseTextureSize = 128
+glyph1Display.NoiseGrainSize = 2
+glyph1Display.MinNoiseValue = 0.0
+glyph1Display.MaxNoiseValue = 0.8
+glyph1Display.NumberOfNoiseLevels = 1024
+glyph1Display.ImpulseNoiseProbability = 1.0
+glyph1Display.ImpulseNoiseBackgroundValue = 0.0
+glyph1Display.NoiseGeneratorSeed = 1
+glyph1Display.CompositeStrategy = 'AUTO'
+glyph1Display.UseLICForLOD = 0
+glyph1Display.WriteLog = ''
+
+# init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+glyph1Display.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+glyph1Display.OSPRayScaleFunction.UseLogScale = 0
+
+# init the 'Arrow' selected for 'GlyphType'
+glyph1Display.GlyphType.TipResolution = 100
+glyph1Display.GlyphType.TipRadius = 0.075
+glyph1Display.GlyphType.TipLength = 0.35
+glyph1Display.GlyphType.ShaftResolution = 100
+glyph1Display.GlyphType.ShaftRadius = 0.015
+glyph1Display.GlyphType.Invert = 0
+
+# init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+glyph1Display.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.042020171880722046, 1.0, 0.5, 0.0]
+glyph1Display.ScaleTransferFunction.UseLogScale = 0
+
+# init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+glyph1Display.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.042020171880722046, 1.0, 0.5, 0.0]
+glyph1Display.OpacityTransferFunction.UseLogScale = 0
+
+# init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+glyph1Display.DataAxesGrid.XTitle = 'X Axis'
+glyph1Display.DataAxesGrid.YTitle = 'Y Axis'
+glyph1Display.DataAxesGrid.ZTitle = 'Z Axis'
+glyph1Display.DataAxesGrid.XTitleFontFamily = 'Arial'
+glyph1Display.DataAxesGrid.XTitleFontFile = ''
+glyph1Display.DataAxesGrid.XTitleBold = 0
+glyph1Display.DataAxesGrid.XTitleItalic = 0
+glyph1Display.DataAxesGrid.XTitleFontSize = 12
+glyph1Display.DataAxesGrid.XTitleShadow = 0
+glyph1Display.DataAxesGrid.XTitleOpacity = 1.0
+glyph1Display.DataAxesGrid.YTitleFontFamily = 'Arial'
+glyph1Display.DataAxesGrid.YTitleFontFile = ''
+glyph1Display.DataAxesGrid.YTitleBold = 0
+glyph1Display.DataAxesGrid.YTitleItalic = 0
+glyph1Display.DataAxesGrid.YTitleFontSize = 12
+glyph1Display.DataAxesGrid.YTitleShadow = 0
+glyph1Display.DataAxesGrid.YTitleOpacity = 1.0
+glyph1Display.DataAxesGrid.ZTitleFontFamily = 'Arial'
+glyph1Display.DataAxesGrid.ZTitleFontFile = ''
+glyph1Display.DataAxesGrid.ZTitleBold = 0
+glyph1Display.DataAxesGrid.ZTitleItalic = 0
+glyph1Display.DataAxesGrid.ZTitleFontSize = 12
+glyph1Display.DataAxesGrid.ZTitleShadow = 0
+glyph1Display.DataAxesGrid.ZTitleOpacity = 1.0
+glyph1Display.DataAxesGrid.FacesToRender = 63
+glyph1Display.DataAxesGrid.CullBackface = 0
+glyph1Display.DataAxesGrid.CullFrontface = 1
+glyph1Display.DataAxesGrid.ShowGrid = 0
+glyph1Display.DataAxesGrid.ShowEdges = 1
+glyph1Display.DataAxesGrid.ShowTicks = 1
+glyph1Display.DataAxesGrid.LabelUniqueEdgesOnly = 1
+glyph1Display.DataAxesGrid.AxesToLabel = 63
+glyph1Display.DataAxesGrid.XLabelFontFamily = 'Arial'
+glyph1Display.DataAxesGrid.XLabelFontFile = ''
+glyph1Display.DataAxesGrid.XLabelBold = 0
+glyph1Display.DataAxesGrid.XLabelItalic = 0
+glyph1Display.DataAxesGrid.XLabelFontSize = 12
+glyph1Display.DataAxesGrid.XLabelShadow = 0
+glyph1Display.DataAxesGrid.XLabelOpacity = 1.0
+glyph1Display.DataAxesGrid.YLabelFontFamily = 'Arial'
+glyph1Display.DataAxesGrid.YLabelFontFile = ''
+glyph1Display.DataAxesGrid.YLabelBold = 0
+glyph1Display.DataAxesGrid.YLabelItalic = 0
+glyph1Display.DataAxesGrid.YLabelFontSize = 12
+glyph1Display.DataAxesGrid.YLabelShadow = 0
+glyph1Display.DataAxesGrid.YLabelOpacity = 1.0
+glyph1Display.DataAxesGrid.ZLabelFontFamily = 'Arial'
+glyph1Display.DataAxesGrid.ZLabelFontFile = ''
+glyph1Display.DataAxesGrid.ZLabelBold = 0
+glyph1Display.DataAxesGrid.ZLabelItalic = 0
+glyph1Display.DataAxesGrid.ZLabelFontSize = 12
+glyph1Display.DataAxesGrid.ZLabelShadow = 0
+glyph1Display.DataAxesGrid.ZLabelOpacity = 1.0
+glyph1Display.DataAxesGrid.XAxisNotation = 'Mixed'
+glyph1Display.DataAxesGrid.XAxisPrecision = 2
+glyph1Display.DataAxesGrid.XAxisUseCustomLabels = 0
+glyph1Display.DataAxesGrid.XAxisLabels = []
+glyph1Display.DataAxesGrid.YAxisNotation = 'Mixed'
+glyph1Display.DataAxesGrid.YAxisPrecision = 2
+glyph1Display.DataAxesGrid.YAxisUseCustomLabels = 0
+glyph1Display.DataAxesGrid.YAxisLabels = []
+glyph1Display.DataAxesGrid.ZAxisNotation = 'Mixed'
+glyph1Display.DataAxesGrid.ZAxisPrecision = 2
+glyph1Display.DataAxesGrid.ZAxisUseCustomLabels = 0
+glyph1Display.DataAxesGrid.ZAxisLabels = []
+glyph1Display.DataAxesGrid.UseCustomBounds = 0
+glyph1Display.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+# init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+glyph1Display.PolarAxes.Visibility = 0
+glyph1Display.PolarAxes.Translation = [0.0, 0.0, 0.0]
+glyph1Display.PolarAxes.Scale = [1.0, 1.0, 1.0]
+glyph1Display.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+glyph1Display.PolarAxes.EnableCustomBounds = [0, 0, 0]
+glyph1Display.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+glyph1Display.PolarAxes.EnableCustomRange = 0
+glyph1Display.PolarAxes.CustomRange = [0.0, 1.0]
+glyph1Display.PolarAxes.PolarAxisVisibility = 1
+glyph1Display.PolarAxes.RadialAxesVisibility = 1
+glyph1Display.PolarAxes.DrawRadialGridlines = 1
+glyph1Display.PolarAxes.PolarArcsVisibility = 1
+glyph1Display.PolarAxes.DrawPolarArcsGridlines = 1
+glyph1Display.PolarAxes.NumberOfRadialAxes = 0
+glyph1Display.PolarAxes.AutoSubdividePolarAxis = 1
+glyph1Display.PolarAxes.NumberOfPolarAxis = 0
+glyph1Display.PolarAxes.MinimumRadius = 0.0
+glyph1Display.PolarAxes.MinimumAngle = 0.0
+glyph1Display.PolarAxes.MaximumAngle = 90.0
+glyph1Display.PolarAxes.RadialAxesOriginToPolarAxis = 1
+glyph1Display.PolarAxes.Ratio = 1.0
+glyph1Display.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+glyph1Display.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+glyph1Display.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+glyph1Display.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+glyph1Display.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+glyph1Display.PolarAxes.PolarAxisTitleVisibility = 1
+glyph1Display.PolarAxes.PolarAxisTitle = 'Radial Distance'
+glyph1Display.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+glyph1Display.PolarAxes.PolarLabelVisibility = 1
+glyph1Display.PolarAxes.PolarLabelFormat = '%-#6.3g'
+glyph1Display.PolarAxes.PolarLabelExponentLocation = 'Labels'
+glyph1Display.PolarAxes.RadialLabelVisibility = 1
+glyph1Display.PolarAxes.RadialLabelFormat = '%-#3.1f'
+glyph1Display.PolarAxes.RadialLabelLocation = 'Bottom'
+glyph1Display.PolarAxes.RadialUnitsVisibility = 1
+glyph1Display.PolarAxes.ScreenSize = 10.0
+glyph1Display.PolarAxes.PolarAxisTitleOpacity = 1.0
+glyph1Display.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+glyph1Display.PolarAxes.PolarAxisTitleFontFile = ''
+glyph1Display.PolarAxes.PolarAxisTitleBold = 0
+glyph1Display.PolarAxes.PolarAxisTitleItalic = 0
+glyph1Display.PolarAxes.PolarAxisTitleShadow = 0
+glyph1Display.PolarAxes.PolarAxisTitleFontSize = 12
+glyph1Display.PolarAxes.PolarAxisLabelOpacity = 1.0
+glyph1Display.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+glyph1Display.PolarAxes.PolarAxisLabelFontFile = ''
+glyph1Display.PolarAxes.PolarAxisLabelBold = 0
+glyph1Display.PolarAxes.PolarAxisLabelItalic = 0
+glyph1Display.PolarAxes.PolarAxisLabelShadow = 0
+glyph1Display.PolarAxes.PolarAxisLabelFontSize = 12
+glyph1Display.PolarAxes.LastRadialAxisTextOpacity = 1.0
+glyph1Display.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+glyph1Display.PolarAxes.LastRadialAxisTextFontFile = ''
+glyph1Display.PolarAxes.LastRadialAxisTextBold = 0
+glyph1Display.PolarAxes.LastRadialAxisTextItalic = 0
+glyph1Display.PolarAxes.LastRadialAxisTextShadow = 0
+glyph1Display.PolarAxes.LastRadialAxisTextFontSize = 12
+glyph1Display.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+glyph1Display.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+glyph1Display.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+glyph1Display.PolarAxes.SecondaryRadialAxesTextBold = 0
+glyph1Display.PolarAxes.SecondaryRadialAxesTextItalic = 0
+glyph1Display.PolarAxes.SecondaryRadialAxesTextShadow = 0
+glyph1Display.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+glyph1Display.PolarAxes.EnableDistanceLOD = 1
+glyph1Display.PolarAxes.DistanceLODThreshold = 0.7
+glyph1Display.PolarAxes.EnableViewAngleLOD = 1
+glyph1Display.PolarAxes.ViewAngleLODThreshold = 0.7
+glyph1Display.PolarAxes.SmallestVisiblePolarAngle = 0.5
+glyph1Display.PolarAxes.PolarTicksVisibility = 1
+glyph1Display.PolarAxes.ArcTicksOriginToPolarAxis = 1
+glyph1Display.PolarAxes.TickLocation = 'Both'
+glyph1Display.PolarAxes.AxisTickVisibility = 1
+glyph1Display.PolarAxes.AxisMinorTickVisibility = 0
+glyph1Display.PolarAxes.ArcTickVisibility = 1
+glyph1Display.PolarAxes.ArcMinorTickVisibility = 0
+glyph1Display.PolarAxes.DeltaAngleMajor = 10.0
+glyph1Display.PolarAxes.DeltaAngleMinor = 5.0
+glyph1Display.PolarAxes.PolarAxisMajorTickSize = 0.0
+glyph1Display.PolarAxes.PolarAxisTickRatioSize = 0.3
+glyph1Display.PolarAxes.PolarAxisMajorTickThickness = 1.0
+glyph1Display.PolarAxes.PolarAxisTickRatioThickness = 0.5
+glyph1Display.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+glyph1Display.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+glyph1Display.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+glyph1Display.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+glyph1Display.PolarAxes.ArcMajorTickSize = 0.0
+glyph1Display.PolarAxes.ArcTickRatioSize = 0.3
+glyph1Display.PolarAxes.ArcMajorTickThickness = 1.0
+glyph1Display.PolarAxes.ArcTickRatioThickness = 0.5
+glyph1Display.PolarAxes.Use2DMode = 0
+glyph1Display.PolarAxes.UseLogAxis = 0
+
+# show color bar/color legend
+glyph1Display.SetScalarBarVisibility(renderView1, True)
+
+# find source
+buckling_experiment_rho10_level3_NCvtu = FindSource('buckling_experiment_rho10_level3_NC.vtu')
+
+# find source
+box2 = FindSource('Box2')
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# get opacity transfer function/opacity map for 'IsometryErrorFunction'
+isometryErrorFunctionPWF = GetOpacityTransferFunction('IsometryErrorFunction')
+isometryErrorFunctionPWF.Points = [0.0, 0.0, 0.5, 0.0, 0.043813616037368774, 1.0, 0.5, 0.0]
+isometryErrorFunctionPWF.AllowDuplicateScalars = 1
+isometryErrorFunctionPWF.UseLogScale = 0
+isometryErrorFunctionPWF.ScalarRangeInitialized = 1
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# Properties modified on glyph1
+glyph1.GlyphMode = 'Every Nth Point'
+glyph1.Stride = 15
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# turn off scalar coloring
+ColorBy(glyph1Display, None)
+
+# Hide the scalar bar for this color map if no visible data is colored by it.
+HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+# change solid color
+glyph1Display.AmbientColor = [0.0, 0.0, 0.0]
+glyph1Display.DiffuseColor = [0.0, 0.0, 0.0]
+
+# Properties modified on glyph1Display
+glyph1Display.Opacity = 0.75
+
+# Properties modified on glyph1Display
+glyph1Display.Opacity = 0.25
+
+# Properties modified on glyph1Display
+glyph1Display.Opacity = 0.5
+
+# # Properties modified on glyph1Display
+# glyph1Display.Opacity = 1.0
+
+###############################
+
+
+
+
+### Nice Camera Angle:
+# get active view
+renderView1 = GetActiveViewOrCreate('RenderView')
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995387, -6.373117888516298, 3.0455402693025477]
+renderView1.CameraFocalPoint = [1.7499999999999973, 0.49948221910744894, 0.03305599093437161]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.4285092855481871
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995387, -6.373117888516298, 3.0455402693025477]
+renderView1.CameraFocalPoint = [1.7499999999999973, 0.49948221910744894, 0.03305599093437161]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.4285092855481871
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995387, -6.373117888516298, 3.0455402693025477]
+renderView1.CameraFocalPoint = [1.7499999999999973, 0.49948221910744894, 0.03305599093437161]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.4285092855481871
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995387, -6.373117888516298, 3.0455402693025477]
+renderView1.CameraFocalPoint = [1.7499999999999973, 0.49948221910744894, 0.03305599093437161]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.4285092855481871
+
+# reset view to fit data
+renderView1.ResetCamera(True)
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+# reset view to fit data bounds
+renderView1.ResetCamera(-0.0070663392543792725, 3.507066249847412, -0.020176716148853302, 1.0201082229614258, -0.879596471786499, 0.0999700278043747, False)
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-0.9127173710767202, -5.7533624403677806, 2.3512240239158935]
+renderView1.CameraFocalPoint = [1.7499999552965164, 0.49996575340628624, -0.38981322199106216]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.8967650839948296
+
+# reset view to fit data
+renderView1.ResetCamera(True)
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+# reset view to fit data bounds
+renderView1.ResetCamera(-0.0070663392543792725, 3.507066249847412, -0.020176716148853302, 1.0201082229614258, -0.879596471786499, 0.0999700278043747, True)
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-0.9127173710767202, -5.7533624403677806, 2.3512240239158935]
+renderView1.CameraFocalPoint = [1.7499999552965164, 0.49996575340628624, -0.38981322199106216]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 0.9539530708784568
+
+# reset view to fit data
+renderView1.ResetCamera(True)
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+
+
+# Replace colormap by solid color and use LIGHTING View
+# set active source
+SetActiveSource(warpByVector1)
+
+# get active view
+renderView1 = GetActiveViewOrCreate('RenderView')
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+# get 2D transfer function for 'DisplacementduneVTK'
+displacementduneVTKTF2D = GetTransferFunction2D('DisplacementduneVTK')
+displacementduneVTKTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+displacementduneVTKTF2D.Boxes = []
+displacementduneVTKTF2D.ScalarRangeInitialized = 0
+displacementduneVTKTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+displacementduneVTKTF2D.OutputDimensions = [10, 10]
+
+# get color transfer function/color map for 'DisplacementduneVTK'
+displacementduneVTKLUT = GetColorTransferFunction('DisplacementduneVTK')
+displacementduneVTKLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+displacementduneVTKLUT.InterpretValuesAsCategories = 0
+displacementduneVTKLUT.AnnotationsInitialized = 0
+displacementduneVTKLUT.ShowCategoricalColorsinDataRangeOnly = 0
+displacementduneVTKLUT.RescaleOnVisibilityChange = 0
+displacementduneVTKLUT.EnableOpacityMapping = 0
+displacementduneVTKLUT.TransferFunction2D = displacementduneVTKTF2D
+displacementduneVTKLUT.Use2DTransferFunction = 0
+displacementduneVTKLUT.RGBPoints = [0.0, 0.0, 0.266667, 0.105882, 0.05572199061665925, 0.0, 0.347374, 0.139346, 0.1114439812333185, 0.000538, 0.427912, 0.172933, 0.1671664158852843, 0.069435, 0.486967, 0.222145, 0.22288840650194355, 0.138178, 0.546082, 0.271326, 0.2786103971186028, 0.197232, 0.609073, 0.31857, 0.334332387735262, 0.257255, 0.671742, 0.365859, 0.3900543783519213, 0.357647, 0.720953, 0.415071, 0.4457766220687053, 0.45767, 0.769919, 0.465021, 0.5014988036205464, 0.546251, 0.811257, 0.537855, 0.5572207942372056, 0.634295, 0.852211, 0.610688, 0.6129427848538649, 0.709097, 0.883706, 0.683522, 0.6686647754705242, 0.78316, 0.914833, 0.755894, 0.7243872101224899, 0.842215, 0.938454, 0.818885, 0.7801092007391492, 0.899977, 0.961538, 0.880692, 0.8358311913558085, 0.935409, 0.975317, 0.92203, 0.8880706130633398, 0.968627, 0.988235, 0.960784]
+displacementduneVTKLUT.UseLogScale = 0
+displacementduneVTKLUT.UseOpacityControlPointsFreehandDrawing = 0
+displacementduneVTKLUT.ShowDataHistogram = 0
+displacementduneVTKLUT.AutomaticDataHistogramComputation = 0
+displacementduneVTKLUT.DataHistogramNumberOfBins = 10
+displacementduneVTKLUT.ColorSpace = 'Lab'
+displacementduneVTKLUT.UseBelowRangeColor = 0
+displacementduneVTKLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+displacementduneVTKLUT.UseAboveRangeColor = 0
+displacementduneVTKLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+displacementduneVTKLUT.NanColor = [1.0, 1.0, 0.0]
+displacementduneVTKLUT.NanOpacity = 1.0
+displacementduneVTKLUT.Discretize = 1
+displacementduneVTKLUT.NumberOfTableValues = 256
+displacementduneVTKLUT.ScalarRangeInitialized = 1.0
+displacementduneVTKLUT.HSVWrap = 0
+displacementduneVTKLUT.VectorComponent = 0
+displacementduneVTKLUT.VectorMode = 'Magnitude'
+displacementduneVTKLUT.AllowDuplicateScalars = 1
+displacementduneVTKLUT.Annotations = []
+displacementduneVTKLUT.ActiveAnnotatedValues = []
+displacementduneVTKLUT.IndexedColors = []
+displacementduneVTKLUT.IndexedOpacities = []
+
+# get opacity transfer function/opacity map for 'DisplacementduneVTK'
+displacementduneVTKPWF = GetOpacityTransferFunction('DisplacementduneVTK')
+displacementduneVTKPWF.Points = [0.0, 0.0, 0.5, 0.0, 0.8880706130633398, 1.0, 0.5, 0.0]
+displacementduneVTKPWF.AllowDuplicateScalars = 1
+displacementduneVTKPWF.UseLogScale = 0
+displacementduneVTKPWF.ScalarRangeInitialized = 1
+
+# get display properties
+warpByVector1Display = GetDisplayProperties(warpByVector1, view=renderView1)
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+# turn off scalar coloring
+ColorBy(warpByVector1Display, None)
+
+# Hide the scalar bar for this color map if no visible data is colored by it.
+HideScalarBarIfNotNeeded(displacementduneVTKLUT, renderView1)
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+# change solid color
+warpByVector1Display.AmbientColor = [0.2901960784313726, 0.5843137254901961, 0.43137254901960786]
+warpByVector1Display.DiffuseColor = [0.2901960784313726, 0.5843137254901961, 0.43137254901960786]
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Ambient = 0.2
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Ambient = 0.15
+warpByVector1Display.Ambient = 0.3
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+# change solid color
+warpByVector1Display.AmbientColor = [0.3254901960784314, 0.6549019607843137, 0.47843137254901963]
+warpByVector1Display.DiffuseColor = [0.3254901960784314, 0.6549019607843137, 0.47843137254901963]
+# Adjust camera
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+
+
+
+renderView1.UseLight = 0
+# Create a new 'Light'
+light1 = AddLight(view=renderView1)
+light1.Enable = 1
+light1.Coords = 'Scene'
+light1.Intensity = 1.0
+light1.Type = 'Directional'
+light1.Position = [0.0, 0.0, 1.0]
+light1.FocalPoint = [0.0, 0.0, 0.0]
+light1.DiffuseColor = [1.0, 1.0, 1.0]
+light1.ConeAngle = 30.0
+light1.Radius = 0.0
+
+# toggle interactive widget visibility (only when running from the GUI)
+ShowInteractiveWidgets(proxy=light1)
+
+#update a light
+light1.Position = [-0.9716648057044535, -5.891721101441701, 3.2497098661047565]
+light1.FocalPoint = [1.75, 0.5000438429415226, 0.44799128733575344]
+
+#update a light
+light1.Position = [-0.9716648057044535, -5.891721101441701, 3.2497098661047565]
+light1.FocalPoint = [1.75, 0.5000438429415226, 0.44799128733575344]
+
+# Properties modified on light1
+light1.Type = 'Positional'
+
+# Properties modified on light1
+light1.Intensity = 1.75
+
+# Properties modified on light1
+light1.Position = [2.5, -5.891721101441701, 3.2497098661047565]
+
+# Properties modified on light1
+light1.Position = [2.5, 10.0, 3.2497098661047565]
+
+# Properties modified on light1
+# light1.Position = [2.5, 10.0, 7.0]
+light1.Position = [5, 12, 8.5]
+
+# Properties modified on light1
+light1.FocalPoint = [0.75, 0.5000438429415226, 0.44799128733575344]
+
+# Properties modified on light1
+light1.FocalPoint = [0.75, 0.768, 0.44799128733575344]
+
+# Properties modified on light1
+light1.FocalPoint = [0.75, 0.768, 0.5]
+
+#================================================================
+# addendum: following script captures some of the application
+# state to faithfully reproduce the visualization during playback
+#================================================================
+
+# # get layout
+# layout1 = GetLayout()
+
+# #--------------------------------
+# # saving layout sizes for layouts
+
+# # layout/tab size in pixels
+# layout1.SetSize(850, 750)
+#####################################################################
+
+
+
+
+
+
+
+
+
+
+
+#================================================================
+# addendum: following script captures some of the application
+# state to faithfully reproduce the visualization during playback
+#================================================================
+
+# get layout
+layout1 = GetLayout()
+
+#--------------------------------
+# saving layout sizes for layouts
+
+# layout/tab size in pixels
+layout1.SetSize(2923, 908)
+
+#-----------------------------------
+# saving camera placements for views
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+renderView1.CameraParallelScale = 1.3953474628479614
+
+
+
+# reset view to fit data
+renderView1.ResetCamera(True)
+# --------------------------------------------------------------
+
+
+# #TEST:Set Size in Pixels:
+# # layout/tab size in pixels
+# layout1.SetSize(850, 750)
+# reset view to fit data
+renderView1.ResetCamera(True)
+
+# layout1.SetSize(2560, 1440)
+layout1.SetSize(2257, 1395)
+# layout1.SetSize(4514, 2790)
+# layout1.SetSize(4514, 4514)
+
+# reset view to fit data
+renderView1.ResetCamera(True)
+
+
+
+# Write to pdf
+# ExportView(outputName + '.pdf', view=renderView1)
+
+ExportView(outputName + '.pdf', view=renderView1, Plottitle='ParaView GL2PS Export',
+    Compressoutputfile=0,
+    Drawbackground=1,
+    Cullhiddenprimitives=1,
+    Linewidthscalingfactor=0.714,
+    Pointsizescalingfactor=0.714,
+    GL2PSdepthsortmethod='Simple sorting (fast, good)',
+    Rasterize3Dgeometry=1,
+    Dontrasterizecubeaxes=1,
+    Rendertextaspaths=1)
+
+
+# # get layout
+layout1 = GetLayout()
+
+# layout1.SetSize(850, 750)
+layout1.SetSize(2257, 1395)
+# layout1.SetSize(4514, 4514)
+
+
+
+# # get active view
+# renderView1 = GetActiveViewOrCreate('RenderView')
+
+# # get layout
+# layout1 = GetLayout()
+
+# # layout/tab size in pixels
+# layout1.SetSize(2922, 908)
+
+# # current camera placement for renderView1
+# renderView1.InteractionMode = '2D'
+# renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+# renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+# renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+# renderView1.CameraParallelScale = 1.3953474628479614
+
+# save screenshot
+SaveScreenshot(outputName + '.png', renderView1, ImageResolution=[5844, 1816],
+    FontScaling='Scale fonts proportionally',
+    OverrideColorPalette='WhiteBackground',
+    StereoMode='No change',
+    TransparentBackground=0, 
+    # PNG options
+    CompressionLevel='5',
+    MetaData=['Application', 'ParaView'])
+
+# SaveScreenshot(outputName + '.png', renderView1, ImageResolution=[1500, 1240],
+#     FontScaling='Scale fonts proportionally',
+#     OverrideColorPalette='WhiteBackground',
+#     StereoMode='No change',
+#     TransparentBackground=0, 
+#     # PNG options
+#     CompressionLevel='5',
+#     MetaData=['Application', 'ParaView'])
+
+
+# # export view
+# ExportView('/home/klaus/Desktop/output.pdf', view=renderView1, Plottitle='ParaView GL2PS Export',
+#     Compressoutputfile=0,
+#     Drawbackground=1,
+#     Cullhiddenprimitives=1,
+#     Linewidthscalingfactor=0.714,
+#     Pointsizescalingfactor=0.714,
+#     GL2PSdepthsortmethod='Simple sorting (fast, good)',
+#     Rasterize3Dgeometry=1,
+#     Dontrasterizecubeaxes=1,
+#     Rendertextaspaths=1)
+
+#================================================================
+# addendum: following script captures some of the application
+# state to faithfully reproduce the visualization during playback
+#================================================================
+
+# # get layout
+# layout1 = GetLayout()
+
+# #--------------------------------
+# # saving layout sizes for layouts
+
+# # layout/tab size in pixels
+# layout1.SetSize(2923, 908)
+
+# #-----------------------------------
+# # saving camera placements for views
+
+# # current camera placement for renderView1
+# renderView1.CameraPosition = [6.037484195894283, 4.7874841893168165, 4.688562068036481]
+# renderView1.CameraFocalPoint = [1.75, 0.4999999934225343, 0.4010778721421957]
+# renderView1.CameraViewUp = [-0.7071067811865478, 8.326672684688675e-17, 0.7071067811865474]
+# renderView1.CameraParallelScale = 1.922026583673492
+
+#--------------------------------------------
+# uncomment the following to render all views
+# RenderAllViews()
+# alternatively, if you want to write images, you can use SaveScreenshot(...).
\ No newline at end of file
diff --git a/experiment/macro-problem/buckling_experiment/buckling_experiment.py b/experiment/macro-problem/buckling_experiment/buckling_experiment.py
index 4686e42cbf3de28da8ac993772bc81763dd4c2f7..4f21698710221c5d3112e83a064f1f24a660cff1 100644
--- a/experiment/macro-problem/buckling_experiment/buckling_experiment.py
+++ b/experiment/macro-problem/buckling_experiment/buckling_experiment.py
@@ -21,18 +21,29 @@ parameterSet = ParameterSet()
 parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_buckling_experiment'
 parameterSet.baseName= 'buckling_experiment'
 
+
+
+"""
+        -----    MACRO-PROBLEM PARAMETERS:    -----
+"""
+
 #############################################
-#  Grid parameters
+#  Macro-Grid parameters
 #############################################
+# nX=8
+# nY=8
+# nX=4
+# nY=4
 nX=8
-nY=8
+nY=2
+
 
 parameterSet.structuredGrid = 'simplex'
 parameterSet.lower = '0 0'
 parameterSet.upper = '4 1'
 parameterSet.elements = str(nX)+' '+  str(nY)
 
-parameterSet.macroGridLevel = 3 
+parameterSet.macroGridLevel = 1
 
 
 parameterSet.macroQuadOrder = 6
@@ -61,6 +72,8 @@ parameterSet.initialRegularization = 2000
 # Measure convergence
 parameterSet.instrumented = 0
 
+# parameterSet.regularizationNorm = 'Euclidean'
+parameterSet.regularizationNorm = 'H1semi'
 
 
 # --- (optional) Riemannian Trust-region solver:
@@ -99,8 +112,8 @@ parameterSet.writeVTK = 1
 parameterSet.vtkwrite_analyticalSolution = 0
 parameterSet.vtkWrite_analyticalSurfaceNormal = 0
 
-# The grid can be refined several times for a higher resolution in the VTK-file.
-parameterSet.subsamplingRefinement = 2
+# # The grid can be refined several times for a higher resolution in the VTK-file.
+# parameterSet.subsamplingRefinement = 2
 
 # Write Dof-Vector to .txt-file
 parameterSet.writeDOFvector = 0
@@ -152,13 +165,6 @@ def dirichlet_indicator(x) :
 #############################################
 #  Initial iterate function
 #############################################
-# def f(x):
-#     return [x[0], x[1], 0]
-
-# def df(x):
-#     return ((1,0),
-#             (0,1),
-#             (0,0))
 #Rotation:
 def R(beta):
     return  [[math.cos(beta),0],
@@ -176,8 +182,9 @@ def f(x):
         return [x[0], x[1], 0]
 
 
+### Rotation angle (boundary condition).
 # beta = math.pi/4.0
-beta= 0.05
+beta= 0.025
 # beta= math.pi/12.0
 # beta= 0.10
 # beta = 0
@@ -198,22 +205,6 @@ def df(x):
 
 
 
-# def f(x):
-#     # a = 0.4
-#     a = 1.4
-#     if(x[0] <= -1.99):
-#         return [x[0] + a, x[1], 0]
-#     elif(x[0] >= 1.99):
-#         return [x[0] - a, x[1], 0]
-#     else:
-#         return [x[0], x[1], 0]
-
-
-# def df(x):
-#     return ((1,0),
-#             (0,1),
-#             (0,0))
-
 
 
 fdf = (f, df)
@@ -226,8 +217,6 @@ parameterSet.assemble_force_term = False
 
 def force(x):
     return [0, 0, 0]
-
-
 #############################################
 #  Analytical reference Solution
 #############################################
@@ -236,9 +225,6 @@ def force(x):
 #############################################
 #  MICROSTRUCTURE
 ############################################
-
-
-parameterSet.printMicroOutput = False
 parameterSet.VTKwriteMacroPhaseIndicator = True
 parameterSet.MacroPhaseSubsamplingRefinement = 3
 
@@ -279,19 +265,30 @@ class GlobalMicrostructure:
         
     # Represents the local microstructure in Phase 1
     class LocalMicrostructure_1:  
+        
+        # prestrain parameter
+        rho = 0.0
+
         def __init__(self,macroPoint=[0,0]):
             # gamma = 1.0
             # self.macroPoint = macroPoint
             self.gamma = 1.0    #in the future this might change depending on macroPoint.
-
             self.phases = 2     #in the future this might change depending on macroPoint.
             #--- Define different material phases:
+            # #- PHASE 1
+            # self.phase1_type="isotropic"
+            # self.materialParameters_phase1 = [200, 1.0]   
+            # #- PHASE 2
+            # self.phase2_type="isotropic"
+            # self.materialParameters_phase2 = [100, 1.0]    
+
             #- PHASE 1
             self.phase1_type="isotropic"
-            self.materialParameters_phase1 = [200, 1.0]   
+            self.materialParameters_phase1 = [28.7,22.5]  # glass (Fibre)
+
             #- PHASE 2
-            self.phase2_type="isotropic"
-            self.materialParameters_phase2 = [100, 1.0]    
+            self.phase2_type="isotropic"  
+            self.materialParameters_phase2 = [1.2,2.58]    #Matrix-material: polystyrene
 
             # self.effectivePrestrain= np.array([[-0.725, 0.0],
             #                                    [0.0, -1.0]]);
@@ -300,68 +297,118 @@ class GlobalMicrostructure:
             #                                         [0.8, 20.3, 0.0],
             #                                         [0.0, 0.0, 19.3]]);
 
-
         #--- Indicator function for material phases
         def indicatorFunction(self,x):
-            # if (abs(x[0]) < (theta/2) and x[2] >= 0 ):
-            if (abs(x[0]) < (1.0/4.0) and x[2] <= 0 ):
+            fibreRadius = (1.0/4.0)
+            # if (abs(x[0]) < fibreRadius and x[2] <= 0 ): #bottom x2_aligned fibre
+            # if (abs(x[0]) < fibreRadius and x[2] >= 0 ):   #top x2_aligned fibre
+            if (abs(x[1]) < fibreRadius and x[2] >= 0 ):     #top x1_aligned fibre
+            # if (abs(x[1]) < fibreRadius and x[2] <= 0 ):   #bottom x1_aligned fibre
+            # if (abs(x[1]) < fibreRadius and x[2] >= 0 ):   #top x1_aligned fibre
                 return 1    #Phase1   
             else :
                 return 2    #Phase2
             
         #--- Define prestrain function for each phase (also works with non-constant values)
         def prestrain_phase1(self,x):
-            # return [[2, 0, 0], [0,2,0], [0,0,2]]
-            # rho = 1.0
-            rho = 1.0
-            return [[rho*1.0, 0, 0], [0,rho*1.0,0], [0,0,rho*1.0]]
+            return [[self.rho*1.0, 0, 0], [0,self.rho*1.0,0], [0,0,self.rho*1.0]]
 
         def prestrain_phase2(self,x):
             return [[0, 0, 0], [0,0,0], [0,0,0]]
+        
+
+    #TEST: Use three-phase-composite:
+    # class LocalMicrostructure_1:  
+    #     def __init__(self,macroPoint=[0,0]):
+
+    #         self.gamma = 1.0    #in the future this might change depending on macroPoint.
+    #         self.phases = 3     #in the future this might change depending on macroPoint.
             
+    #         #--- Define different material phases:
+    #         #- PHASE 1
+    #         self.phase1_type="isotropic"
+    #         self.materialParameters_phase1 = [200, 1.0]   
+    #         #- PHASE 2
+    #         self.phase2_type="isotropic"
+    #         self.materialParameters_phase2 = [200, 1.0]    
+    #         #- PHASE 3
+    #         self.phase3_type="isotropic"
+    #         # self.materialParameters_phase3 = [100, 1.0]    #(Matrix-material)
+    #         self.materialParameters_phase3 = [50, 0.5]    #(Matrix-material)
+
+    #     #--- Three-phase composite phase indicator
+    #     def indicatorFunction(self,x):
+    #         # l = 1.0/4.0 # center point of fibre with quadratic cross section of area r**2
+    #         # # l = 3.0/8.0 # center point of fibre with quadratic cross section of area r**2
+    #         # r = 1.0/4.0
+    #         # if (np.max([abs(x[2]-l), abs(x[1]-0.5)]) < r):
+    #         fibreRadius = 1.0/4.0
+    #         if (abs(x[0]) < fibreRadius   and x[2] > 0 ):
+    #             return 1    #Phase1   
+    #         elif (abs(x[1]) < fibreRadius and x[2] < 0 ):
+    #             return 2    #Phase2
+    #         else :
+    #             return 3    #Phase3
+            
+    #     # prestrained fibre in top layer , e2-aligned
+    #     def prestrain_phase1(self,x):
+    #         return [[1.0, 0, 0], [0,1.0,0], [0,0,1.0]]
+
+    #     # prestrained fibre in bottom layer , e1-aligned
+    #     def prestrain_phase2(self,x):
+    #         #prestrain ratio
+    #         rho = 0.0
+    #         return [[rho*1.0, 0, 0], [0,rho*1.0,0], [0,0,rho*1.0]]
+
+    #     # no prestrain in matrix-material
+    #     def prestrain_phase3(self,x):
+    #         return [[0, 0, 0], [0,0,0], [0,0,0]]
+
+
+
+"""
+        -----    MICRO-PROBLEM PARAMETERS:    -----
+"""
+
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
 #############################################
-#  Grid parameters
+#  Micro-Grid parameters
 #############################################
 parameterSet.microGridLevel = 3
 
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
-parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
+parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
-# --- write effective quantities (Qhom,Beff) to .txt-files
-# Qhom is written as a Coefficient-matrix 
-# Beff is written as Coefficient-vector
+# --- write effective quantities (Qhom.Beff) to .txt-files
 parameterSet.write_EffectiveQuantitiesToTxt = True
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/experiment/macro-problem/buckling_experiment/buckling_experiment_Top.py b/experiment/macro-problem/buckling_experiment/buckling_experiment_Top.py
index 845c02a0967a46b7a7223c0821bb129df67bbd56..1fb45bd8b46713ffe3f63f16d57b7c556efbdfe3 100644
--- a/experiment/macro-problem/buckling_experiment/buckling_experiment_Top.py
+++ b/experiment/macro-problem/buckling_experiment/buckling_experiment_Top.py
@@ -122,8 +122,6 @@ parameterSet.macroscopically_varying_microstructure = False
 parameterSet.read_effectiveQuantities_from_Parset = False # Otherwise the Micro/Cell-Problem is solved once to obtain the quantities.
 # parameterSet.read_effectiveQuantities_from_Parset = True # Otherwise the Micro/Cell-Problem is solved once to obtain the quantities.
 
-parameterSet.printMicroOutput = False
-
 # parameterSet.read_effectiveQuantities_from_Parset = True
 effectivePrestrain= np.array([[-0.725, 0.0],
                               [0.0, -1.0]]);
@@ -230,9 +228,7 @@ def force(x):
 
 
 ##################### MICROSCALE PROBLEM ####################
-
 # Microstructure used:  Isotropic matrix material (phase 2) with prestrained fibers (phase 1) in the top layer aligned with the e2-direction.
-
 class Microstructure:
     def __init__(self):
         # self.macroPoint = macroPoint
@@ -313,6 +309,7 @@ class Microstructure:
 #     return [[0, 0, 0], [0,0,0], [0,0,0]]
 
 
+parameterSet.printMicroOutput = 0 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
 #  Grid parameters
@@ -322,36 +319,35 @@ parameterSet.microGridLevel = 3
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
-parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
+parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
 
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/experiment/macro-problem/buckling_experiment/buckling_experiment_rho_0.py b/experiment/macro-problem/buckling_experiment/buckling_experiment_rho_0.py
new file mode 100644
index 0000000000000000000000000000000000000000..b6795df7e2ca9d48d02e4fdf3d8dd19797297a44
--- /dev/null
+++ b/experiment/macro-problem/buckling_experiment/buckling_experiment_rho_0.py
@@ -0,0 +1,5 @@
+from buckling_experiment import*
+
+
+# Change parameter 
+GlobalMicrostructure.LocalMicrostructure_1.rho = 0.0
\ No newline at end of file
diff --git a/experiment/macro-problem/buckling_experiment/buckling_experiment_rho_1.py b/experiment/macro-problem/buckling_experiment/buckling_experiment_rho_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..efab639c1b0ee5ea5320748caf24893074966dde
--- /dev/null
+++ b/experiment/macro-problem/buckling_experiment/buckling_experiment_rho_1.py
@@ -0,0 +1,4 @@
+from buckling_experiment import*
+
+# Change parameter 
+GlobalMicrostructure.LocalMicrostructure_1.rho = 1.0
\ No newline at end of file
diff --git a/experiment/macro-problem/buckling_experiment/buckling_experiment_xAlignedLow.py b/experiment/macro-problem/buckling_experiment/buckling_experiment_xAlignedLow.py
index 24db5dad9a647c59b48c8b8bdc4d91ed0c961ae7..acec0ac7cffc1171284e109b88fc19111a7e0f5d 100644
--- a/experiment/macro-problem/buckling_experiment/buckling_experiment_xAlignedLow.py
+++ b/experiment/macro-problem/buckling_experiment/buckling_experiment_xAlignedLow.py
@@ -122,7 +122,6 @@ parameterSet.macroscopically_varying_microstructure = False
 parameterSet.read_effectiveQuantities_from_Parset = False # Otherwise the Micro/Cell-Problem is solved once to obtain the quantities.
 # parameterSet.read_effectiveQuantities_from_Parset = True # Otherwise the Micro/Cell-Problem is solved once to obtain the quantities.
 
-parameterSet.printMicroOutput = False
 
 # parameterSet.read_effectiveQuantities_from_Parset = True
 effectivePrestrain= np.array([[-0.725, 0.0],
@@ -315,6 +314,8 @@ class Microstructure:
 
 
 
+parameterSet.printMicroOutput = 0 # Flag that allows to supress the output of the micro-problem.
+
 #############################################
 #  Grid parameters
 #############################################
@@ -323,36 +324,35 @@ parameterSet.microGridLevel = 3
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
-parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
+parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
 
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
\ No newline at end of file
diff --git a/experiment/macro-problem/buckling_experiment/buckling_experiment_xAlignedTop.py b/experiment/macro-problem/buckling_experiment/buckling_experiment_xAlignedTop.py
index 2ce12efdb4069d2cd5f49474bc75d07f45c1b816..5080cbbbbec8b4192fceb7ad0c069c565d43fa1a 100644
--- a/experiment/macro-problem/buckling_experiment/buckling_experiment_xAlignedTop.py
+++ b/experiment/macro-problem/buckling_experiment/buckling_experiment_xAlignedTop.py
@@ -122,8 +122,6 @@ parameterSet.macroscopically_varying_microstructure = False
 parameterSet.read_effectiveQuantities_from_Parset = False # Otherwise the Micro/Cell-Problem is solved once to obtain the quantities.
 # parameterSet.read_effectiveQuantities_from_Parset = True # Otherwise the Micro/Cell-Problem is solved once to obtain the quantities.
 
-parameterSet.printMicroOutput = False
-
 # parameterSet.read_effectiveQuantities_from_Parset = True
 effectivePrestrain= np.array([[-0.725, 0.0],
                               [0.0, -1.0]]);
@@ -314,6 +312,7 @@ class Microstructure:
 #     return [[0, 0, 0], [0,0,0], [0,0,0]]
 
 
+parameterSet.printMicroOutput = 0 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
 #  Grid parameters
@@ -323,36 +322,35 @@ parameterSet.microGridLevel = 3
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
-parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
+parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
 
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
\ No newline at end of file
diff --git a/experiment/macro-problem/fibreRotation.py b/experiment/macro-problem/fibreRotation.py
new file mode 100644
index 0000000000000000000000000000000000000000..60f06e004e123849586465050221b58c89c4550f
--- /dev/null
+++ b/experiment/macro-problem/fibreRotation.py
@@ -0,0 +1,321 @@
+import math
+import numpy as np
+
+class ParameterSet(dict):
+    def __init__(self, *args, **kwargs):
+        super(ParameterSet, self).__init__(*args, **kwargs)
+        self.__dict__ = self
+
+parameterSet = ParameterSet()
+
+
+""""
+    Experiment: (0,2) x (0,1) domain 
+    with Microstructure with infinity distances (squares) from vertices 
+                and RVE center but constant in one space direction.
+
+"""
+
+#############################################
+#  Paths
+#############################################
+parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_fibreRotation'
+parameterSet.baseName= 'fibreRotation'
+
+#############################################
+#  Grid parameters
+#############################################
+nX=8
+nY=4
+# nX=1
+# nY=1
+
+
+
+parameterSet.structuredGrid = 'simplex'
+parameterSet.lower = '0 0'
+parameterSet.upper = '2 1'
+parameterSet.elements = str(nX)+' '+  str(nY)
+
+parameterSet.macroGridLevel = 2 
+#############################################
+#  Options
+#############################################
+parameterSet.measure_analyticalError = False
+parameterSet.measure_isometryError = False
+parameterSet.vtkWrite_analyticalSurfaceNormal = False
+parameterSet.vtkwrite_analyticalSolution = False
+
+
+parameterSet.conforming_DiscreteJacobian = 0
+#############################################
+#  Solver parameters
+#############################################
+# Tolerance of the multigrid solver
+parameterSet.tolerance = 1e-12
+# Maximum number of multigrid iterations
+parameterSet.maxProximalNewtonSteps = 200
+# Initial regularization
+parameterSet.initialRegularization = 200
+# Measure convergence
+parameterSet.instrumented = 0
+
+############################
+#   Problem specifications
+############################
+# Dimension of the domain (only used for numerical-test python files)
+parameterSet.dim = 2
+
+#############################################
+#  VTK/Output
+#############################################
+# Write discrete solution as .vtk-File
+parameterSet.writeVTK = 1
+parameterSet.vtkwrite_analyticalSolution = 0
+parameterSet.vtkWrite_analyticalSurfaceNormal = 0
+
+# The grid can be refined several times for a higher resolution in the VTK-file.
+parameterSet.subsamplingRefinement = 0
+
+# Write Dof-Vector to .txt-file
+parameterSet.writeDOFvector = 0
+
+#############################################
+#  Dirichlet boundary indicator
+#############################################
+# def dirichlet_indicator(x) :
+#     if( (x[0] <= 0.01) or (x[0] >= 1.99)):
+#         return True
+#     else:
+#         return False
+
+# one-sided bc
+def dirichlet_indicator(x) :
+    if( (x[0] <= 0.01) ):
+        return True
+    else:
+        return False
+
+# def dirichlet_indicator(x) :
+#         return False
+
+
+#############################################
+#  MICROSTRUCTURE
+############################################
+parameterSet.VTKwriteMacroPhaseIndicator = True
+parameterSet.MacroPhaseSubsamplingRefinement = 3
+
+
+class GlobalMicrostructure:
+    """ Class that represents the global microstructure.
+    
+        The global microstructure can be defined individually 
+        for different (finitely many) macroscopic phases. 
+        Each macroscopic phase corresponds to a 'LocalMicrostructure_'
+        sub-class that defines the necessary data for the local 
+        micro-problem. 
+
+        Currently, there are three possibilities for the LocalMicrostructure:
+            (1) Read the effective quantities (Qhom,Beff) from this parset.
+            (Constant local microstructure)
+            (2) Solve the micro-problem once to obtain the effective quantities. 
+            (Constant local microstructure)
+            (3) Solve for micro-problem for each macroscopic quadrature point.
+            (Macroscopocally varying local microstructure)) 
+    """
+    def __init__(self,macroPoint=[0,0]):
+        self.macroPhases = 1
+
+        # define first local microstructure options.
+        # self.macroPhase1_constantMicrostructure = True
+        self.macroPhase1_constantMicrostructure = False 
+        self.macroPhase1_readEffectiveQuantities = False;
+
+
+    def macroPhaseIndicator(self,y): #y :macroscopic point
+            """ Indicatorfunction that determines the domains 
+                i.e. macro-phases of different local microstructures.
+            """
+            return 1;
+                
+    # Represents the local microstructure in Phase 1
+    class LocalMicrostructure_1:  
+        def __init__(self,macroPoint=[0,0]):  #default value for initialization
+            self.macroPoint = macroPoint
+
+            self.gamma = 1.0    #in the future this might change depending on macroPoint.
+            self.phases = 2     #in the future this might change depending on macroPoint.
+            #--- Define different material phases:
+
+            #- PHASE 1
+            self.phase1_type="isotropic"
+            self.materialParameters_phase1 = [28.7,22.5]  # glass (Fibre)
+            #- PHASE 2
+            self.phase2_type="isotropic"
+            self.materialParameters_phase2 = [1.2,2.58]    #Matrix-material: polystyrene
+
+
+            # self.cacheMacroPhase=True
+            # self.macroPhases = [] #store macro phase numbers.
+            # self.macroPhaseCount = 0
+
+
+
+
+            # self.theta = 0.2 # only used with constant microstructure.
+            # self.alpha = (np.pi/2.0) - np.pi/3.0
+
+            self.theta_start = 0.1
+            self.theta_target = 0.4
+
+
+            self.alpha_start =  (np.pi/2.0) - np.pi/12.0
+            self.alpha_target = (np.pi/2.0) - np.pi/3.0
+
+
+
+        def one_norm(self,v):
+            # r = 0
+            # for i in range(0, len(v)):
+            #     r += np.abs(v[i])
+            # return r
+            return np.linalg.norm(v,1)
+
+        def two_norm(self,v):
+            # r = 0
+            # for i in range(0, len(v)):
+            #     r += v[i]**2
+            # return np.sqrt(r)
+            return np.linalg.norm(v, 'fro') # frobenius-norm (default)
+
+
+        def infinity_norm(self,v):
+            # return np.abs(v).max()
+            return np.linalg.norm(v,np.inf) # Use already exisiting norm from numpy..
+
+        
+        """
+            extract subarray from A with index i removed.
+        """
+        def subArray(self,v,i):
+            r = []
+            for j in range(0,len(v)):
+                if not (j == i):
+                    r.append(v[j])
+
+            return np.array(r)
+
+
+
+        #--- Indicator function for material phases
+        def indicatorFunction(self,y):
+                # get local theta value (varies linearly in x1 - direction):
+                macrolength_x = 2.0 #macroscopic length in x1-direction
+                macrolength_y = 1.0 #macroscopic length in x2-direction
+                theta = self.theta_start + (self.macroPoint[0]/macrolength_x) * (self.theta_target-self.theta_start)
+                alpha = self.alpha_start + (self.macroPoint[1]/macrolength_y) * (self.alpha_target-self.alpha_start)
+
+
+                # theta = self.theta 
+                # alpah = self.alpha
+
+
+                # cast to numpy array 
+                x = np.array(y)
+
+                #Rotated Fibre of width theta
+                if (abs(-np.cos(alpha)*x[0] + np.sin(alpha)*x[1] ) < theta and x[2] >= 0 ):
+                    return 1    #Phase1   
+                else :
+                    return 2    #Phase2
+
+        def prestrain_phase1(self,x):
+            rho =  1.0
+            return [[rho*1.0, 0, 0], [0,rho*1.0,0], [0,0,rho*1.0]]
+
+        def prestrain_phase2(self,x):
+            return [[0, 0, 0], [0,0,0], [0,0,0]]
+
+
+
+
+
+
+
+# def f(x):
+#     a = (3.0/16.0)
+#     if(x[0] <= 0.01):
+#         return [x[0]+a, x[1], 0]
+#     elif(x[0] >= 1.99):
+#         return [x[0] - a, x[1], 0]
+#     else:
+#         return [x[0], x[1], 0]
+
+
+def f(x):
+    return [x[0], x[1], 0]
+
+
+def df(x):
+    return ((1,0),
+            (0,1),
+            (0,0))
+
+
+
+fdf = (f, df)
+
+
+#############################################
+#  Force
+############################################
+parameterSet.assemble_force_term = False
+
+def force(x):
+    return [0, 0, 0]
+
+
+
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+#############################################
+#  Grid parameters
+#############################################
+parameterSet.microGridLevel = 3
+
+#############################################
+#  Assembly options
+#############################################
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
+
+#############################################
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
+#############################################
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
+
+#############################################
+#  Write/Output options      #(default=false)
+#############################################
+# --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
+parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
+#parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
+parameterSet.MaterialSubsamplingRefinement= 2
+# --- Write Correctos to VTK-File:  
+parameterSet.writeCorrectorsVTK = 0
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = False
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/experiment/macro-problem/self-folding-box/self-folding-box.py b/experiment/macro-problem/self-folding-box/self-folding-box.py
index 918501f639cc0b3b19c0eb22a13aa42d4305864b..2eba3933d1c69eabb0edf34d3ba1b3cc1ea56336 100644
--- a/experiment/macro-problem/self-folding-box/self-folding-box.py
+++ b/experiment/macro-problem/self-folding-box/self-folding-box.py
@@ -189,7 +189,6 @@ def force(x):
 # parameterSet.prestrainFlag = True #deprecated
 # parameterSet.macroscopically_varying_microstructure = False
 # parameterSet.read_effectiveQuantities_from_Parset = True # Otherwise the Micro/Cell-Problem is solved once to obtain the quantities.
-parameterSet.printMicroOutput = False
 
 #New
 # parameterSet.piecewiseConstantMicrostructure = True
@@ -489,6 +488,7 @@ class GlobalMicrostructure:
 # 
 
 
+parameterSet.printMicroOutput = 0 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
 #  Grid parameters
@@ -498,36 +498,35 @@ parameterSet.microGridLevel = 3
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = 0
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = 0
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0
-#parameterSet.arbitraryElementNumber = 3         #(default = 0
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 0
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
-#  Write/Output options      #(default = 0
+#  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
 parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default = 0
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
 
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/experiment/macro-problem/validation/ParaView-validationGrids.py b/experiment/macro-problem/validation/ParaView-validationGrids.py
new file mode 100644
index 0000000000000000000000000000000000000000..d131548073dbf213372ad0ba3b8c0e3da2b04ec6
--- /dev/null
+++ b/experiment/macro-problem/validation/ParaView-validationGrids.py
@@ -0,0 +1,164 @@
+# trace generated using paraview version 5.11.2
+#import paraview
+#paraview.compatibility.major = 5
+#paraview.compatibility.minor = 11
+
+#### import the simple module from the paraview
+from paraview.simple import *
+#### disable automatic camera reset on 'Show'
+paraview.simple._DisableFirstRenderCameraReset()
+
+
+fileName = ['/home/klaus/Desktop/Dune_TestTest/dune-microstructure/outputs_validation/validation_level3_NC_DuneVTK.vtu']
+# fileName = ['/home/klaus/Desktop/Validation-experiment/outputs_validation/validation_level3_NC_DuneVTK.vtu']
+
+outputPath = '/home/klaus/Desktop/'
+outputName = outputPath +  'RegularGrid.pdf'
+outputName = outputPath +  'SymmetricGrid.pdf'
+
+
+# create a new 'XML Unstructured Grid Reader'
+validation_level3_NC_DuneVTKvtu = XMLUnstructuredGridReader(registrationName='validation_level3_NC_DuneVTK.vtu', FileName=fileName)
+validation_level3_NC_DuneVTKvtu.PointArrayStatus = ['Displacement dune-VTK', 'IsometryErrorFunction', 'SurfaceNormalDiscrete']
+
+# Properties modified on validation_level3_NC_DuneVTKvtu
+validation_level3_NC_DuneVTKvtu.TimeArray = 'None'
+
+# get active view
+renderView1 = GetActiveViewOrCreate('RenderView')
+
+# show data in view
+validation_level3_NC_DuneVTKvtuDisplay = Show(validation_level3_NC_DuneVTKvtu, renderView1, 'UnstructuredGridRepresentation')
+
+# get 2D transfer function for 'IsometryErrorFunction'
+isometryErrorFunctionTF2D = GetTransferFunction2D('IsometryErrorFunction')
+
+# get color transfer function/color map for 'IsometryErrorFunction'
+isometryErrorFunctionLUT = GetColorTransferFunction('IsometryErrorFunction')
+isometryErrorFunctionLUT.TransferFunction2D = isometryErrorFunctionTF2D
+isometryErrorFunctionLUT.RGBPoints = [0.0, 0.231373, 0.298039, 0.752941, 1.5060151815414429, 0.865003, 0.865003, 0.865003, 3.0120303630828857, 0.705882, 0.0156863, 0.14902]
+isometryErrorFunctionLUT.ScalarRangeInitialized = 1.0
+
+# get opacity transfer function/opacity map for 'IsometryErrorFunction'
+isometryErrorFunctionPWF = GetOpacityTransferFunction('IsometryErrorFunction')
+isometryErrorFunctionPWF.Points = [0.0, 0.0, 0.5, 0.0, 3.0120303630828857, 1.0, 0.5, 0.0]
+isometryErrorFunctionPWF.ScalarRangeInitialized = 1
+
+# trace defaults for the display properties.
+validation_level3_NC_DuneVTKvtuDisplay.Representation = 'Surface'
+validation_level3_NC_DuneVTKvtuDisplay.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+validation_level3_NC_DuneVTKvtuDisplay.LookupTable = isometryErrorFunctionLUT
+validation_level3_NC_DuneVTKvtuDisplay.SelectTCoordArray = 'None'
+validation_level3_NC_DuneVTKvtuDisplay.SelectNormalArray = 'None'
+validation_level3_NC_DuneVTKvtuDisplay.SelectTangentArray = 'None'
+validation_level3_NC_DuneVTKvtuDisplay.OSPRayScaleArray = 'IsometryErrorFunction'
+validation_level3_NC_DuneVTKvtuDisplay.OSPRayScaleFunction = 'PiecewiseFunction'
+validation_level3_NC_DuneVTKvtuDisplay.SelectOrientationVectors = 'Displacement dune-VTK'
+validation_level3_NC_DuneVTKvtuDisplay.ScaleFactor = 0.31415901184082035
+validation_level3_NC_DuneVTKvtuDisplay.SelectScaleArray = 'IsometryErrorFunction'
+validation_level3_NC_DuneVTKvtuDisplay.GlyphType = 'Arrow'
+validation_level3_NC_DuneVTKvtuDisplay.GlyphTableIndexArray = 'IsometryErrorFunction'
+validation_level3_NC_DuneVTKvtuDisplay.GaussianRadius = 0.015707950592041015
+validation_level3_NC_DuneVTKvtuDisplay.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+validation_level3_NC_DuneVTKvtuDisplay.ScaleTransferFunction = 'PiecewiseFunction'
+validation_level3_NC_DuneVTKvtuDisplay.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+validation_level3_NC_DuneVTKvtuDisplay.OpacityTransferFunction = 'PiecewiseFunction'
+validation_level3_NC_DuneVTKvtuDisplay.DataAxesGrid = 'GridAxesRepresentation'
+validation_level3_NC_DuneVTKvtuDisplay.PolarAxes = 'PolarAxesRepresentation'
+validation_level3_NC_DuneVTKvtuDisplay.ScalarOpacityFunction = isometryErrorFunctionPWF
+validation_level3_NC_DuneVTKvtuDisplay.ScalarOpacityUnitDistance = 2.221439676435089
+validation_level3_NC_DuneVTKvtuDisplay.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+validation_level3_NC_DuneVTKvtuDisplay.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+validation_level3_NC_DuneVTKvtuDisplay.WriteLog = ''
+
+# init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+validation_level3_NC_DuneVTKvtuDisplay.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 3.0120303630828857, 1.0, 0.5, 0.0]
+
+# init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+validation_level3_NC_DuneVTKvtuDisplay.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 3.0120303630828857, 1.0, 0.5, 0.0]
+
+# reset view to fit data
+renderView1.ResetCamera(False)
+
+#changing interaction mode based on data extents
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [1.5707950592041016, 1.5707950592041016, 10.52432689666748]
+renderView1.CameraFocalPoint = [1.5707950592041016, 1.5707950592041016, 0.0]
+
+# show color bar/color legend
+validation_level3_NC_DuneVTKvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# turn off scalar coloring
+ColorBy(validation_level3_NC_DuneVTKvtuDisplay, None)
+
+# Hide the scalar bar for this color map if no visible data is colored by it.
+HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+# change solid color
+validation_level3_NC_DuneVTKvtuDisplay.AmbientColor = [0.0, 0.6666666666666666, 1.0]
+validation_level3_NC_DuneVTKvtuDisplay.DiffuseColor = [0.0, 0.6666666666666666, 1.0]
+
+# change representation type
+validation_level3_NC_DuneVTKvtuDisplay.SetRepresentationType('Surface With Edges')
+
+# Properties modified on validation_level3_NC_DuneVTKvtuDisplay
+validation_level3_NC_DuneVTKvtuDisplay.LineWidth = 3.0
+
+# Properties modified on validation_level3_NC_DuneVTKvtuDisplay
+validation_level3_NC_DuneVTKvtuDisplay.LineWidth = 2.0
+
+# Properties modified on validation_level3_NC_DuneVTKvtuDisplay
+validation_level3_NC_DuneVTKvtuDisplay.LineWidth = 1.0
+
+# Properties modified on validation_level3_NC_DuneVTKvtuDisplay
+validation_level3_NC_DuneVTKvtuDisplay.LineWidth = 2.0
+
+# Properties modified on validation_level3_NC_DuneVTKvtuDisplay
+validation_level3_NC_DuneVTKvtuDisplay.Specular = 0.5
+
+# Properties modified on validation_level3_NC_DuneVTKvtuDisplay
+validation_level3_NC_DuneVTKvtuDisplay.Ambient = 0.1
+
+# Properties modified on validation_level3_NC_DuneVTKvtuDisplay
+validation_level3_NC_DuneVTKvtuDisplay.EdgeColor = [0.1411764705882353, 0.12156862745098039, 0.19215686274509805]
+
+# Properties modified on validation_level3_NC_DuneVTKvtuDisplay
+validation_level3_NC_DuneVTKvtuDisplay.NonlinearSubdivisionLevel = 0
+
+# Properties modified on renderView1
+renderView1.OrientationAxesVisibility = 0
+
+# export view
+# ExportView('/home/klaus/Desktop/Dune_TestTest/dune-microstructure/outputs_validation/Grid2.pdf', view=renderView1)
+ExportView(outputName, view=renderView1)
+
+#================================================================
+# addendum: following script captures some of the application
+# state to faithfully reproduce the visualization during playback
+#================================================================
+
+# get layout
+layout1 = GetLayout()
+
+#--------------------------------
+# saving layout sizes for layouts
+
+# layout/tab size in pixels
+layout1.SetSize(2844, 1165)
+
+#-----------------------------------
+# saving camera placements for views
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [1.5707950592041016, 1.5707950592041016, 10.52432689666748]
+renderView1.CameraFocalPoint = [1.5707950592041016, 1.5707950592041016, 0.0]
+renderView1.CameraParallelScale = 2.221439676435089
+
+#--------------------------------------------
+# uncomment the following to render all views
+# RenderAllViews()
+# alternatively, if you want to write images, you can use SaveScreenshot(...).
\ No newline at end of file
diff --git a/experiment/macro-problem/validation/Paraview_GridValidationMinimizer.py b/experiment/macro-problem/validation/Paraview_GridValidationMinimizer.py
new file mode 100644
index 0000000000000000000000000000000000000000..f87bc3b531065397d95e07948de014af3fa38ad3
--- /dev/null
+++ b/experiment/macro-problem/validation/Paraview_GridValidationMinimizer.py
@@ -0,0 +1,1137 @@
+# trace generated using paraview version 5.11.2
+#import paraview
+#paraview.compatibility.major = 5
+#paraview.compatibility.minor = 11
+
+#### import the simple module from the paraview
+from paraview.simple import *
+#### disable automatic camera reset on 'Show'
+paraview.simple._DisableFirstRenderCameraReset()
+
+
+fileName = ['/home/klaus/Desktop/Validation-experiment/REGULAR_FreeMinimizer/LongStrip/validation_level6_NC_DuneVTK.vtu']
+fileName = ['/home/klaus/Desktop/Validation-experiment/SYMMETRIC_FreeMinimizer/LongStrip/validation_level12_NC_DuneVTK.vtu']
+
+outputPath = '/home/klaus/Desktop/'
+outputName = outputPath +  'RegularGridMinimizer.pdf'
+outputName = outputPath +  'SymmetricGridMinimizer.pdf'
+
+
+# create a new 'XML Unstructured Grid Reader'
+validation_level6_NC_DuneVTKvtu = XMLUnstructuredGridReader(registrationName='validation_level6_NC_DuneVTK.vtu', FileName=fileName)
+validation_level6_NC_DuneVTKvtu.CellArrayStatus = []
+validation_level6_NC_DuneVTKvtu.PointArrayStatus = ['Displacement dune-VTK', 'IsometryErrorFunction', 'Displacement_analytical dune-VTK', 'SurfaceNormalDiscrete']
+validation_level6_NC_DuneVTKvtu.TimeArray = 'TimeValue'
+
+# Properties modified on validation_level6_NC_DuneVTKvtu
+validation_level6_NC_DuneVTKvtu.TimeArray = 'None'
+
+# get active view
+renderView1 = GetActiveViewOrCreate('RenderView')
+
+# show data in view
+validation_level6_NC_DuneVTKvtuDisplay = Show(validation_level6_NC_DuneVTKvtu, renderView1, 'UnstructuredGridRepresentation')
+
+# get 2D transfer function for 'IsometryErrorFunction'
+isometryErrorFunctionTF2D = GetTransferFunction2D('IsometryErrorFunction')
+isometryErrorFunctionTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+isometryErrorFunctionTF2D.Boxes = []
+isometryErrorFunctionTF2D.ScalarRangeInitialized = 0
+isometryErrorFunctionTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+isometryErrorFunctionTF2D.OutputDimensions = [10, 10]
+
+# get color transfer function/color map for 'IsometryErrorFunction'
+isometryErrorFunctionLUT = GetColorTransferFunction('IsometryErrorFunction')
+isometryErrorFunctionLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+isometryErrorFunctionLUT.InterpretValuesAsCategories = 0
+isometryErrorFunctionLUT.AnnotationsInitialized = 0
+isometryErrorFunctionLUT.ShowCategoricalColorsinDataRangeOnly = 0
+isometryErrorFunctionLUT.RescaleOnVisibilityChange = 0
+isometryErrorFunctionLUT.EnableOpacityMapping = 0
+isometryErrorFunctionLUT.TransferFunction2D = isometryErrorFunctionTF2D
+isometryErrorFunctionLUT.Use2DTransferFunction = 0
+isometryErrorFunctionLUT.RGBPoints = [0.0, 0.231373, 0.298039, 0.752941, 0.03546995297074318, 0.865003, 0.865003, 0.865003, 0.07093990594148636, 0.705882, 0.0156863, 0.14902]
+isometryErrorFunctionLUT.UseLogScale = 0
+isometryErrorFunctionLUT.UseOpacityControlPointsFreehandDrawing = 0
+isometryErrorFunctionLUT.ShowDataHistogram = 0
+isometryErrorFunctionLUT.AutomaticDataHistogramComputation = 0
+isometryErrorFunctionLUT.DataHistogramNumberOfBins = 10
+isometryErrorFunctionLUT.ColorSpace = 'Diverging'
+isometryErrorFunctionLUT.UseBelowRangeColor = 0
+isometryErrorFunctionLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+isometryErrorFunctionLUT.UseAboveRangeColor = 0
+isometryErrorFunctionLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+isometryErrorFunctionLUT.NanColor = [1.0, 1.0, 0.0]
+isometryErrorFunctionLUT.NanOpacity = 1.0
+isometryErrorFunctionLUT.Discretize = 1
+isometryErrorFunctionLUT.NumberOfTableValues = 256
+isometryErrorFunctionLUT.ScalarRangeInitialized = 1.0
+isometryErrorFunctionLUT.HSVWrap = 0
+isometryErrorFunctionLUT.VectorComponent = 0
+isometryErrorFunctionLUT.VectorMode = 'Magnitude'
+isometryErrorFunctionLUT.AllowDuplicateScalars = 1
+isometryErrorFunctionLUT.Annotations = []
+isometryErrorFunctionLUT.ActiveAnnotatedValues = []
+isometryErrorFunctionLUT.IndexedColors = []
+isometryErrorFunctionLUT.IndexedOpacities = []
+
+# get opacity transfer function/opacity map for 'IsometryErrorFunction'
+isometryErrorFunctionPWF = GetOpacityTransferFunction('IsometryErrorFunction')
+isometryErrorFunctionPWF.Points = [0.0, 0.0, 0.5, 0.0, 0.07093990594148636, 1.0, 0.5, 0.0]
+isometryErrorFunctionPWF.AllowDuplicateScalars = 1
+isometryErrorFunctionPWF.UseLogScale = 0
+isometryErrorFunctionPWF.ScalarRangeInitialized = 1
+
+# trace defaults for the display properties.
+validation_level6_NC_DuneVTKvtuDisplay.Selection = None
+validation_level6_NC_DuneVTKvtuDisplay.Representation = 'Surface'
+validation_level6_NC_DuneVTKvtuDisplay.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+validation_level6_NC_DuneVTKvtuDisplay.LookupTable = isometryErrorFunctionLUT
+validation_level6_NC_DuneVTKvtuDisplay.MapScalars = 1
+validation_level6_NC_DuneVTKvtuDisplay.MultiComponentsMapping = 0
+validation_level6_NC_DuneVTKvtuDisplay.InterpolateScalarsBeforeMapping = 1
+validation_level6_NC_DuneVTKvtuDisplay.Opacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.PointSize = 2.0
+validation_level6_NC_DuneVTKvtuDisplay.LineWidth = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.RenderLinesAsTubes = 0
+validation_level6_NC_DuneVTKvtuDisplay.RenderPointsAsSpheres = 0
+validation_level6_NC_DuneVTKvtuDisplay.Interpolation = 'Gouraud'
+validation_level6_NC_DuneVTKvtuDisplay.Specular = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.SpecularColor = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.SpecularPower = 100.0
+validation_level6_NC_DuneVTKvtuDisplay.Luminosity = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.Ambient = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.Diffuse = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.Roughness = 0.3
+validation_level6_NC_DuneVTKvtuDisplay.Metallic = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.EdgeTint = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.Anisotropy = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.AnisotropyRotation = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.BaseIOR = 1.5
+validation_level6_NC_DuneVTKvtuDisplay.CoatStrength = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.CoatIOR = 2.0
+validation_level6_NC_DuneVTKvtuDisplay.CoatRoughness = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.CoatColor = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.SelectTCoordArray = 'None'
+validation_level6_NC_DuneVTKvtuDisplay.SelectNormalArray = 'None'
+validation_level6_NC_DuneVTKvtuDisplay.SelectTangentArray = 'None'
+validation_level6_NC_DuneVTKvtuDisplay.Texture = None
+validation_level6_NC_DuneVTKvtuDisplay.RepeatTextures = 1
+validation_level6_NC_DuneVTKvtuDisplay.InterpolateTextures = 0
+validation_level6_NC_DuneVTKvtuDisplay.SeamlessU = 0
+validation_level6_NC_DuneVTKvtuDisplay.SeamlessV = 0
+validation_level6_NC_DuneVTKvtuDisplay.UseMipmapTextures = 0
+validation_level6_NC_DuneVTKvtuDisplay.ShowTexturesOnBackface = 1
+validation_level6_NC_DuneVTKvtuDisplay.BaseColorTexture = None
+validation_level6_NC_DuneVTKvtuDisplay.NormalTexture = None
+validation_level6_NC_DuneVTKvtuDisplay.NormalScale = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.CoatNormalTexture = None
+validation_level6_NC_DuneVTKvtuDisplay.CoatNormalScale = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.MaterialTexture = None
+validation_level6_NC_DuneVTKvtuDisplay.OcclusionStrength = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.AnisotropyTexture = None
+validation_level6_NC_DuneVTKvtuDisplay.EmissiveTexture = None
+validation_level6_NC_DuneVTKvtuDisplay.EmissiveFactor = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.FlipTextures = 0
+validation_level6_NC_DuneVTKvtuDisplay.BackfaceRepresentation = 'Follow Frontface'
+validation_level6_NC_DuneVTKvtuDisplay.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.BackfaceOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.Position = [0.0, 0.0, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.Scale = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.Orientation = [0.0, 0.0, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.Origin = [0.0, 0.0, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+validation_level6_NC_DuneVTKvtuDisplay.Pickable = 1
+validation_level6_NC_DuneVTKvtuDisplay.Triangulate = 0
+validation_level6_NC_DuneVTKvtuDisplay.UseShaderReplacements = 0
+validation_level6_NC_DuneVTKvtuDisplay.ShaderReplacements = ''
+validation_level6_NC_DuneVTKvtuDisplay.NonlinearSubdivisionLevel = 1
+validation_level6_NC_DuneVTKvtuDisplay.UseDataPartitions = 0
+validation_level6_NC_DuneVTKvtuDisplay.OSPRayUseScaleArray = 'All Approximate'
+validation_level6_NC_DuneVTKvtuDisplay.OSPRayScaleArray = 'IsometryErrorFunction'
+validation_level6_NC_DuneVTKvtuDisplay.OSPRayScaleFunction = 'PiecewiseFunction'
+validation_level6_NC_DuneVTKvtuDisplay.OSPRayMaterial = 'None'
+validation_level6_NC_DuneVTKvtuDisplay.BlockSelectors = ['/']
+validation_level6_NC_DuneVTKvtuDisplay.BlockColors = []
+validation_level6_NC_DuneVTKvtuDisplay.BlockOpacities = []
+validation_level6_NC_DuneVTKvtuDisplay.Orient = 0
+validation_level6_NC_DuneVTKvtuDisplay.OrientationMode = 'Direction'
+validation_level6_NC_DuneVTKvtuDisplay.SelectOrientationVectors = 'Displacement dune-VTK'
+validation_level6_NC_DuneVTKvtuDisplay.Scaling = 0
+validation_level6_NC_DuneVTKvtuDisplay.ScaleMode = 'No Data Scaling Off'
+validation_level6_NC_DuneVTKvtuDisplay.ScaleFactor = 0.628000020980835
+validation_level6_NC_DuneVTKvtuDisplay.SelectScaleArray = 'IsometryErrorFunction'
+validation_level6_NC_DuneVTKvtuDisplay.GlyphType = 'Arrow'
+validation_level6_NC_DuneVTKvtuDisplay.UseGlyphTable = 0
+validation_level6_NC_DuneVTKvtuDisplay.GlyphTableIndexArray = 'IsometryErrorFunction'
+validation_level6_NC_DuneVTKvtuDisplay.UseCompositeGlyphTable = 0
+validation_level6_NC_DuneVTKvtuDisplay.UseGlyphCullingAndLOD = 0
+validation_level6_NC_DuneVTKvtuDisplay.LODValues = []
+validation_level6_NC_DuneVTKvtuDisplay.ColorByLODIndex = 0
+validation_level6_NC_DuneVTKvtuDisplay.GaussianRadius = 0.03140000104904175
+validation_level6_NC_DuneVTKvtuDisplay.ShaderPreset = 'Sphere'
+validation_level6_NC_DuneVTKvtuDisplay.CustomTriangleScale = 3
+validation_level6_NC_DuneVTKvtuDisplay.CustomShader = """ // This custom shader code define a gaussian blur
+ // Please take a look into vtkSMPointGaussianRepresentation.cxx
+ // for other custom shader examples
+ //VTK::Color::Impl
+   float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+   float gaussian = exp(-0.5*dist2);
+   opacity = opacity*gaussian;
+"""
+validation_level6_NC_DuneVTKvtuDisplay.Emissive = 0
+validation_level6_NC_DuneVTKvtuDisplay.ScaleByArray = 0
+validation_level6_NC_DuneVTKvtuDisplay.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+validation_level6_NC_DuneVTKvtuDisplay.ScaleArrayComponent = ''
+validation_level6_NC_DuneVTKvtuDisplay.UseScaleFunction = 1
+validation_level6_NC_DuneVTKvtuDisplay.ScaleTransferFunction = 'PiecewiseFunction'
+validation_level6_NC_DuneVTKvtuDisplay.OpacityByArray = 0
+validation_level6_NC_DuneVTKvtuDisplay.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+validation_level6_NC_DuneVTKvtuDisplay.OpacityArrayComponent = ''
+validation_level6_NC_DuneVTKvtuDisplay.OpacityTransferFunction = 'PiecewiseFunction'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid = 'GridAxesRepresentation'
+validation_level6_NC_DuneVTKvtuDisplay.SelectionCellLabelBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.SelectionCellLabelFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.SelectionCellLabelFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.SelectionCellLabelFontSize = 18
+validation_level6_NC_DuneVTKvtuDisplay.SelectionCellLabelItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.SelectionCellLabelJustification = 'Left'
+validation_level6_NC_DuneVTKvtuDisplay.SelectionCellLabelOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.SelectionCellLabelShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.SelectionPointLabelBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.SelectionPointLabelFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.SelectionPointLabelFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.SelectionPointLabelFontSize = 18
+validation_level6_NC_DuneVTKvtuDisplay.SelectionPointLabelItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.SelectionPointLabelJustification = 'Left'
+validation_level6_NC_DuneVTKvtuDisplay.SelectionPointLabelOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.SelectionPointLabelShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes = 'PolarAxesRepresentation'
+validation_level6_NC_DuneVTKvtuDisplay.ScalarOpacityFunction = isometryErrorFunctionPWF
+validation_level6_NC_DuneVTKvtuDisplay.ScalarOpacityUnitDistance = 0.5529451794983521
+validation_level6_NC_DuneVTKvtuDisplay.UseSeparateOpacityArray = 0
+validation_level6_NC_DuneVTKvtuDisplay.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+validation_level6_NC_DuneVTKvtuDisplay.OpacityComponent = ''
+validation_level6_NC_DuneVTKvtuDisplay.SelectMapper = 'Projected tetra'
+validation_level6_NC_DuneVTKvtuDisplay.SamplingDimensions = [128, 128, 128]
+validation_level6_NC_DuneVTKvtuDisplay.UseFloatingPointFrameBuffer = 1
+validation_level6_NC_DuneVTKvtuDisplay.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+validation_level6_NC_DuneVTKvtuDisplay.NumberOfSteps = 40
+validation_level6_NC_DuneVTKvtuDisplay.StepSize = 0.25
+validation_level6_NC_DuneVTKvtuDisplay.NormalizeVectors = 1
+validation_level6_NC_DuneVTKvtuDisplay.EnhancedLIC = 1
+validation_level6_NC_DuneVTKvtuDisplay.ColorMode = 'Blend'
+validation_level6_NC_DuneVTKvtuDisplay.LICIntensity = 0.8
+validation_level6_NC_DuneVTKvtuDisplay.MapModeBias = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.EnhanceContrast = 'Off'
+validation_level6_NC_DuneVTKvtuDisplay.LowLICContrastEnhancementFactor = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.HighLICContrastEnhancementFactor = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.LowColorContrastEnhancementFactor = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.HighColorContrastEnhancementFactor = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.AntiAlias = 0
+validation_level6_NC_DuneVTKvtuDisplay.MaskOnSurface = 1
+validation_level6_NC_DuneVTKvtuDisplay.MaskThreshold = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.MaskIntensity = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.MaskColor = [0.5, 0.5, 0.5]
+validation_level6_NC_DuneVTKvtuDisplay.GenerateNoiseTexture = 0
+validation_level6_NC_DuneVTKvtuDisplay.NoiseType = 'Gaussian'
+validation_level6_NC_DuneVTKvtuDisplay.NoiseTextureSize = 128
+validation_level6_NC_DuneVTKvtuDisplay.NoiseGrainSize = 2
+validation_level6_NC_DuneVTKvtuDisplay.MinNoiseValue = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.MaxNoiseValue = 0.8
+validation_level6_NC_DuneVTKvtuDisplay.NumberOfNoiseLevels = 1024
+validation_level6_NC_DuneVTKvtuDisplay.ImpulseNoiseProbability = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.ImpulseNoiseBackgroundValue = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.NoiseGeneratorSeed = 1
+validation_level6_NC_DuneVTKvtuDisplay.CompositeStrategy = 'AUTO'
+validation_level6_NC_DuneVTKvtuDisplay.UseLICForLOD = 0
+validation_level6_NC_DuneVTKvtuDisplay.WriteLog = ''
+
+# init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+validation_level6_NC_DuneVTKvtuDisplay.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.OSPRayScaleFunction.UseLogScale = 0
+
+# init the 'Arrow' selected for 'GlyphType'
+validation_level6_NC_DuneVTKvtuDisplay.GlyphType.TipResolution = 6
+validation_level6_NC_DuneVTKvtuDisplay.GlyphType.TipRadius = 0.1
+validation_level6_NC_DuneVTKvtuDisplay.GlyphType.TipLength = 0.35
+validation_level6_NC_DuneVTKvtuDisplay.GlyphType.ShaftResolution = 6
+validation_level6_NC_DuneVTKvtuDisplay.GlyphType.ShaftRadius = 0.03
+validation_level6_NC_DuneVTKvtuDisplay.GlyphType.Invert = 0
+
+# init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+validation_level6_NC_DuneVTKvtuDisplay.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.07093990594148636, 1.0, 0.5, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.ScaleTransferFunction.UseLogScale = 0
+
+# init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+validation_level6_NC_DuneVTKvtuDisplay.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.07093990594148636, 1.0, 0.5, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.OpacityTransferFunction.UseLogScale = 0
+
+# init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XTitle = 'X Axis'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YTitle = 'Y Axis'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZTitle = 'Z Axis'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XTitleFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XTitleFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XTitleBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XTitleItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XTitleFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XTitleShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XTitleOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YTitleFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YTitleFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YTitleBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YTitleItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YTitleFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YTitleShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YTitleOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZTitleFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZTitleFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZTitleBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZTitleItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZTitleFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZTitleShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZTitleOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.FacesToRender = 63
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.CullBackface = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.CullFrontface = 1
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ShowGrid = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ShowEdges = 1
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ShowTicks = 1
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.LabelUniqueEdgesOnly = 1
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.AxesToLabel = 63
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XLabelFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XLabelFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XLabelBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XLabelItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XLabelFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XLabelShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XLabelOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YLabelFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YLabelFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YLabelBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YLabelItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YLabelFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YLabelShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YLabelOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZLabelFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZLabelFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZLabelBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZLabelItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZLabelFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZLabelShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZLabelOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XAxisNotation = 'Mixed'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XAxisPrecision = 2
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XAxisUseCustomLabels = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.XAxisLabels = []
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YAxisNotation = 'Mixed'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YAxisPrecision = 2
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YAxisUseCustomLabels = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.YAxisLabels = []
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZAxisNotation = 'Mixed'
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZAxisPrecision = 2
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZAxisUseCustomLabels = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.ZAxisLabels = []
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.UseCustomBounds = 0
+validation_level6_NC_DuneVTKvtuDisplay.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+# init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.Visibility = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.Translation = [0.0, 0.0, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.Scale = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.EnableCustomBounds = [0, 0, 0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.EnableCustomRange = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.CustomRange = [0.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.RadialAxesVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.DrawRadialGridlines = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarArcsVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.DrawPolarArcsGridlines = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.NumberOfRadialAxes = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.AutoSubdividePolarAxis = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.NumberOfPolarAxis = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.MinimumRadius = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.MinimumAngle = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.MaximumAngle = 90.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.RadialAxesOriginToPolarAxis = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.Ratio = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitleVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitle = 'Radial Distance'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarLabelVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarLabelFormat = '%-#6.3g'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarLabelExponentLocation = 'Labels'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.RadialLabelVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.RadialLabelFormat = '%-#3.1f'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.RadialLabelLocation = 'Bottom'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.RadialUnitsVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.ScreenSize = 10.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitleOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitleFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitleBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitleItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitleShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTitleFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisLabelOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisLabelFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisLabelBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisLabelItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisLabelShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisLabelFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisTextOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisTextFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisTextBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisTextItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisTextShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisTextFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SecondaryRadialAxesTextBold = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SecondaryRadialAxesTextItalic = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SecondaryRadialAxesTextShadow = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.EnableDistanceLOD = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.DistanceLODThreshold = 0.7
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.EnableViewAngleLOD = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.ViewAngleLODThreshold = 0.7
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.SmallestVisiblePolarAngle = 0.5
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarTicksVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.ArcTicksOriginToPolarAxis = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.TickLocation = 'Both'
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.AxisTickVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.AxisMinorTickVisibility = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.ArcTickVisibility = 1
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.ArcMinorTickVisibility = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.DeltaAngleMajor = 10.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.DeltaAngleMinor = 5.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisMajorTickSize = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTickRatioSize = 0.3
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisMajorTickThickness = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.PolarAxisTickRatioThickness = 0.5
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.ArcMajorTickSize = 0.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.ArcTickRatioSize = 0.3
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.ArcMajorTickThickness = 1.0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.ArcTickRatioThickness = 0.5
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.Use2DMode = 0
+validation_level6_NC_DuneVTKvtuDisplay.PolarAxes.UseLogAxis = 0
+
+# reset view to fit data
+renderView1.ResetCamera(False)
+
+#changing interaction mode based on data extents
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [3.140000104904175, 1.5707963705062866, 21.03800070285797]
+renderView1.CameraFocalPoint = [3.140000104904175, 1.5707963705062866, 0.0]
+
+# show color bar/color legend
+validation_level6_NC_DuneVTKvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# create a new 'Warp By Vector'
+warpByVector1 = WarpByVector(registrationName='WarpByVector1', Input=validation_level6_NC_DuneVTKvtu)
+warpByVector1.Vectors = ['POINTS', 'Displacement dune-VTK']
+warpByVector1.ScaleFactor = 1.0
+
+# show data in view
+warpByVector1Display = Show(warpByVector1, renderView1, 'UnstructuredGridRepresentation')
+
+# trace defaults for the display properties.
+warpByVector1Display.Selection = None
+warpByVector1Display.Representation = 'Surface'
+warpByVector1Display.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+warpByVector1Display.LookupTable = isometryErrorFunctionLUT
+warpByVector1Display.MapScalars = 1
+warpByVector1Display.MultiComponentsMapping = 0
+warpByVector1Display.InterpolateScalarsBeforeMapping = 1
+warpByVector1Display.Opacity = 1.0
+warpByVector1Display.PointSize = 2.0
+warpByVector1Display.LineWidth = 1.0
+warpByVector1Display.RenderLinesAsTubes = 0
+warpByVector1Display.RenderPointsAsSpheres = 0
+warpByVector1Display.Interpolation = 'Gouraud'
+warpByVector1Display.Specular = 0.0
+warpByVector1Display.SpecularColor = [1.0, 1.0, 1.0]
+warpByVector1Display.SpecularPower = 100.0
+warpByVector1Display.Luminosity = 0.0
+warpByVector1Display.Ambient = 0.0
+warpByVector1Display.Diffuse = 1.0
+warpByVector1Display.Roughness = 0.3
+warpByVector1Display.Metallic = 0.0
+warpByVector1Display.EdgeTint = [1.0, 1.0, 1.0]
+warpByVector1Display.Anisotropy = 0.0
+warpByVector1Display.AnisotropyRotation = 0.0
+warpByVector1Display.BaseIOR = 1.5
+warpByVector1Display.CoatStrength = 0.0
+warpByVector1Display.CoatIOR = 2.0
+warpByVector1Display.CoatRoughness = 0.0
+warpByVector1Display.CoatColor = [1.0, 1.0, 1.0]
+warpByVector1Display.SelectTCoordArray = 'None'
+warpByVector1Display.SelectNormalArray = 'None'
+warpByVector1Display.SelectTangentArray = 'None'
+warpByVector1Display.Texture = None
+warpByVector1Display.RepeatTextures = 1
+warpByVector1Display.InterpolateTextures = 0
+warpByVector1Display.SeamlessU = 0
+warpByVector1Display.SeamlessV = 0
+warpByVector1Display.UseMipmapTextures = 0
+warpByVector1Display.ShowTexturesOnBackface = 1
+warpByVector1Display.BaseColorTexture = None
+warpByVector1Display.NormalTexture = None
+warpByVector1Display.NormalScale = 1.0
+warpByVector1Display.CoatNormalTexture = None
+warpByVector1Display.CoatNormalScale = 1.0
+warpByVector1Display.MaterialTexture = None
+warpByVector1Display.OcclusionStrength = 1.0
+warpByVector1Display.AnisotropyTexture = None
+warpByVector1Display.EmissiveTexture = None
+warpByVector1Display.EmissiveFactor = [1.0, 1.0, 1.0]
+warpByVector1Display.FlipTextures = 0
+warpByVector1Display.BackfaceRepresentation = 'Follow Frontface'
+warpByVector1Display.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+warpByVector1Display.BackfaceOpacity = 1.0
+warpByVector1Display.Position = [0.0, 0.0, 0.0]
+warpByVector1Display.Scale = [1.0, 1.0, 1.0]
+warpByVector1Display.Orientation = [0.0, 0.0, 0.0]
+warpByVector1Display.Origin = [0.0, 0.0, 0.0]
+warpByVector1Display.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+warpByVector1Display.Pickable = 1
+warpByVector1Display.Triangulate = 0
+warpByVector1Display.UseShaderReplacements = 0
+warpByVector1Display.ShaderReplacements = ''
+warpByVector1Display.NonlinearSubdivisionLevel = 1
+warpByVector1Display.UseDataPartitions = 0
+warpByVector1Display.OSPRayUseScaleArray = 'All Approximate'
+warpByVector1Display.OSPRayScaleArray = 'IsometryErrorFunction'
+warpByVector1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+warpByVector1Display.OSPRayMaterial = 'None'
+warpByVector1Display.BlockSelectors = ['/']
+warpByVector1Display.BlockColors = []
+warpByVector1Display.BlockOpacities = []
+warpByVector1Display.Orient = 0
+warpByVector1Display.OrientationMode = 'Direction'
+warpByVector1Display.SelectOrientationVectors = 'Displacement dune-VTK'
+warpByVector1Display.Scaling = 0
+warpByVector1Display.ScaleMode = 'No Data Scaling Off'
+warpByVector1Display.ScaleFactor = 0.4831523358821869
+warpByVector1Display.SelectScaleArray = 'IsometryErrorFunction'
+warpByVector1Display.GlyphType = 'Arrow'
+warpByVector1Display.UseGlyphTable = 0
+warpByVector1Display.GlyphTableIndexArray = 'IsometryErrorFunction'
+warpByVector1Display.UseCompositeGlyphTable = 0
+warpByVector1Display.UseGlyphCullingAndLOD = 0
+warpByVector1Display.LODValues = []
+warpByVector1Display.ColorByLODIndex = 0
+warpByVector1Display.GaussianRadius = 0.024157616794109344
+warpByVector1Display.ShaderPreset = 'Sphere'
+warpByVector1Display.CustomTriangleScale = 3
+warpByVector1Display.CustomShader = """ // This custom shader code define a gaussian blur
+ // Please take a look into vtkSMPointGaussianRepresentation.cxx
+ // for other custom shader examples
+ //VTK::Color::Impl
+   float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+   float gaussian = exp(-0.5*dist2);
+   opacity = opacity*gaussian;
+"""
+warpByVector1Display.Emissive = 0
+warpByVector1Display.ScaleByArray = 0
+warpByVector1Display.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+warpByVector1Display.ScaleArrayComponent = ''
+warpByVector1Display.UseScaleFunction = 1
+warpByVector1Display.ScaleTransferFunction = 'PiecewiseFunction'
+warpByVector1Display.OpacityByArray = 0
+warpByVector1Display.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+warpByVector1Display.OpacityArrayComponent = ''
+warpByVector1Display.OpacityTransferFunction = 'PiecewiseFunction'
+warpByVector1Display.DataAxesGrid = 'GridAxesRepresentation'
+warpByVector1Display.SelectionCellLabelBold = 0
+warpByVector1Display.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+warpByVector1Display.SelectionCellLabelFontFamily = 'Arial'
+warpByVector1Display.SelectionCellLabelFontFile = ''
+warpByVector1Display.SelectionCellLabelFontSize = 18
+warpByVector1Display.SelectionCellLabelItalic = 0
+warpByVector1Display.SelectionCellLabelJustification = 'Left'
+warpByVector1Display.SelectionCellLabelOpacity = 1.0
+warpByVector1Display.SelectionCellLabelShadow = 0
+warpByVector1Display.SelectionPointLabelBold = 0
+warpByVector1Display.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+warpByVector1Display.SelectionPointLabelFontFamily = 'Arial'
+warpByVector1Display.SelectionPointLabelFontFile = ''
+warpByVector1Display.SelectionPointLabelFontSize = 18
+warpByVector1Display.SelectionPointLabelItalic = 0
+warpByVector1Display.SelectionPointLabelJustification = 'Left'
+warpByVector1Display.SelectionPointLabelOpacity = 1.0
+warpByVector1Display.SelectionPointLabelShadow = 0
+warpByVector1Display.PolarAxes = 'PolarAxesRepresentation'
+warpByVector1Display.ScalarOpacityFunction = isometryErrorFunctionPWF
+warpByVector1Display.ScalarOpacityUnitDistance = 0.4798796485453529
+warpByVector1Display.UseSeparateOpacityArray = 0
+warpByVector1Display.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+warpByVector1Display.OpacityComponent = ''
+warpByVector1Display.SelectMapper = 'Projected tetra'
+warpByVector1Display.SamplingDimensions = [128, 128, 128]
+warpByVector1Display.UseFloatingPointFrameBuffer = 1
+warpByVector1Display.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+warpByVector1Display.NumberOfSteps = 40
+warpByVector1Display.StepSize = 0.25
+warpByVector1Display.NormalizeVectors = 1
+warpByVector1Display.EnhancedLIC = 1
+warpByVector1Display.ColorMode = 'Blend'
+warpByVector1Display.LICIntensity = 0.8
+warpByVector1Display.MapModeBias = 0.0
+warpByVector1Display.EnhanceContrast = 'Off'
+warpByVector1Display.LowLICContrastEnhancementFactor = 0.0
+warpByVector1Display.HighLICContrastEnhancementFactor = 0.0
+warpByVector1Display.LowColorContrastEnhancementFactor = 0.0
+warpByVector1Display.HighColorContrastEnhancementFactor = 0.0
+warpByVector1Display.AntiAlias = 0
+warpByVector1Display.MaskOnSurface = 1
+warpByVector1Display.MaskThreshold = 0.0
+warpByVector1Display.MaskIntensity = 0.0
+warpByVector1Display.MaskColor = [0.5, 0.5, 0.5]
+warpByVector1Display.GenerateNoiseTexture = 0
+warpByVector1Display.NoiseType = 'Gaussian'
+warpByVector1Display.NoiseTextureSize = 128
+warpByVector1Display.NoiseGrainSize = 2
+warpByVector1Display.MinNoiseValue = 0.0
+warpByVector1Display.MaxNoiseValue = 0.8
+warpByVector1Display.NumberOfNoiseLevels = 1024
+warpByVector1Display.ImpulseNoiseProbability = 1.0
+warpByVector1Display.ImpulseNoiseBackgroundValue = 0.0
+warpByVector1Display.NoiseGeneratorSeed = 1
+warpByVector1Display.CompositeStrategy = 'AUTO'
+warpByVector1Display.UseLICForLOD = 0
+warpByVector1Display.WriteLog = ''
+
+# init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+warpByVector1Display.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+warpByVector1Display.OSPRayScaleFunction.UseLogScale = 0
+
+# init the 'Arrow' selected for 'GlyphType'
+warpByVector1Display.GlyphType.TipResolution = 6
+warpByVector1Display.GlyphType.TipRadius = 0.1
+warpByVector1Display.GlyphType.TipLength = 0.35
+warpByVector1Display.GlyphType.ShaftResolution = 6
+warpByVector1Display.GlyphType.ShaftRadius = 0.03
+warpByVector1Display.GlyphType.Invert = 0
+
+# init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+warpByVector1Display.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.07093990594148636, 1.0, 0.5, 0.0]
+warpByVector1Display.ScaleTransferFunction.UseLogScale = 0
+
+# init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+warpByVector1Display.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.07093990594148636, 1.0, 0.5, 0.0]
+warpByVector1Display.OpacityTransferFunction.UseLogScale = 0
+
+# init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+warpByVector1Display.DataAxesGrid.XTitle = 'X Axis'
+warpByVector1Display.DataAxesGrid.YTitle = 'Y Axis'
+warpByVector1Display.DataAxesGrid.ZTitle = 'Z Axis'
+warpByVector1Display.DataAxesGrid.XTitleFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.XTitleFontFile = ''
+warpByVector1Display.DataAxesGrid.XTitleBold = 0
+warpByVector1Display.DataAxesGrid.XTitleItalic = 0
+warpByVector1Display.DataAxesGrid.XTitleFontSize = 12
+warpByVector1Display.DataAxesGrid.XTitleShadow = 0
+warpByVector1Display.DataAxesGrid.XTitleOpacity = 1.0
+warpByVector1Display.DataAxesGrid.YTitleFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.YTitleFontFile = ''
+warpByVector1Display.DataAxesGrid.YTitleBold = 0
+warpByVector1Display.DataAxesGrid.YTitleItalic = 0
+warpByVector1Display.DataAxesGrid.YTitleFontSize = 12
+warpByVector1Display.DataAxesGrid.YTitleShadow = 0
+warpByVector1Display.DataAxesGrid.YTitleOpacity = 1.0
+warpByVector1Display.DataAxesGrid.ZTitleFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.ZTitleFontFile = ''
+warpByVector1Display.DataAxesGrid.ZTitleBold = 0
+warpByVector1Display.DataAxesGrid.ZTitleItalic = 0
+warpByVector1Display.DataAxesGrid.ZTitleFontSize = 12
+warpByVector1Display.DataAxesGrid.ZTitleShadow = 0
+warpByVector1Display.DataAxesGrid.ZTitleOpacity = 1.0
+warpByVector1Display.DataAxesGrid.FacesToRender = 63
+warpByVector1Display.DataAxesGrid.CullBackface = 0
+warpByVector1Display.DataAxesGrid.CullFrontface = 1
+warpByVector1Display.DataAxesGrid.ShowGrid = 0
+warpByVector1Display.DataAxesGrid.ShowEdges = 1
+warpByVector1Display.DataAxesGrid.ShowTicks = 1
+warpByVector1Display.DataAxesGrid.LabelUniqueEdgesOnly = 1
+warpByVector1Display.DataAxesGrid.AxesToLabel = 63
+warpByVector1Display.DataAxesGrid.XLabelFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.XLabelFontFile = ''
+warpByVector1Display.DataAxesGrid.XLabelBold = 0
+warpByVector1Display.DataAxesGrid.XLabelItalic = 0
+warpByVector1Display.DataAxesGrid.XLabelFontSize = 12
+warpByVector1Display.DataAxesGrid.XLabelShadow = 0
+warpByVector1Display.DataAxesGrid.XLabelOpacity = 1.0
+warpByVector1Display.DataAxesGrid.YLabelFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.YLabelFontFile = ''
+warpByVector1Display.DataAxesGrid.YLabelBold = 0
+warpByVector1Display.DataAxesGrid.YLabelItalic = 0
+warpByVector1Display.DataAxesGrid.YLabelFontSize = 12
+warpByVector1Display.DataAxesGrid.YLabelShadow = 0
+warpByVector1Display.DataAxesGrid.YLabelOpacity = 1.0
+warpByVector1Display.DataAxesGrid.ZLabelFontFamily = 'Arial'
+warpByVector1Display.DataAxesGrid.ZLabelFontFile = ''
+warpByVector1Display.DataAxesGrid.ZLabelBold = 0
+warpByVector1Display.DataAxesGrid.ZLabelItalic = 0
+warpByVector1Display.DataAxesGrid.ZLabelFontSize = 12
+warpByVector1Display.DataAxesGrid.ZLabelShadow = 0
+warpByVector1Display.DataAxesGrid.ZLabelOpacity = 1.0
+warpByVector1Display.DataAxesGrid.XAxisNotation = 'Mixed'
+warpByVector1Display.DataAxesGrid.XAxisPrecision = 2
+warpByVector1Display.DataAxesGrid.XAxisUseCustomLabels = 0
+warpByVector1Display.DataAxesGrid.XAxisLabels = []
+warpByVector1Display.DataAxesGrid.YAxisNotation = 'Mixed'
+warpByVector1Display.DataAxesGrid.YAxisPrecision = 2
+warpByVector1Display.DataAxesGrid.YAxisUseCustomLabels = 0
+warpByVector1Display.DataAxesGrid.YAxisLabels = []
+warpByVector1Display.DataAxesGrid.ZAxisNotation = 'Mixed'
+warpByVector1Display.DataAxesGrid.ZAxisPrecision = 2
+warpByVector1Display.DataAxesGrid.ZAxisUseCustomLabels = 0
+warpByVector1Display.DataAxesGrid.ZAxisLabels = []
+warpByVector1Display.DataAxesGrid.UseCustomBounds = 0
+warpByVector1Display.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+# init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+warpByVector1Display.PolarAxes.Visibility = 0
+warpByVector1Display.PolarAxes.Translation = [0.0, 0.0, 0.0]
+warpByVector1Display.PolarAxes.Scale = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+warpByVector1Display.PolarAxes.EnableCustomBounds = [0, 0, 0]
+warpByVector1Display.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+warpByVector1Display.PolarAxes.EnableCustomRange = 0
+warpByVector1Display.PolarAxes.CustomRange = [0.0, 1.0]
+warpByVector1Display.PolarAxes.PolarAxisVisibility = 1
+warpByVector1Display.PolarAxes.RadialAxesVisibility = 1
+warpByVector1Display.PolarAxes.DrawRadialGridlines = 1
+warpByVector1Display.PolarAxes.PolarArcsVisibility = 1
+warpByVector1Display.PolarAxes.DrawPolarArcsGridlines = 1
+warpByVector1Display.PolarAxes.NumberOfRadialAxes = 0
+warpByVector1Display.PolarAxes.AutoSubdividePolarAxis = 1
+warpByVector1Display.PolarAxes.NumberOfPolarAxis = 0
+warpByVector1Display.PolarAxes.MinimumRadius = 0.0
+warpByVector1Display.PolarAxes.MinimumAngle = 0.0
+warpByVector1Display.PolarAxes.MaximumAngle = 90.0
+warpByVector1Display.PolarAxes.RadialAxesOriginToPolarAxis = 1
+warpByVector1Display.PolarAxes.Ratio = 1.0
+warpByVector1Display.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+warpByVector1Display.PolarAxes.PolarAxisTitleVisibility = 1
+warpByVector1Display.PolarAxes.PolarAxisTitle = 'Radial Distance'
+warpByVector1Display.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+warpByVector1Display.PolarAxes.PolarLabelVisibility = 1
+warpByVector1Display.PolarAxes.PolarLabelFormat = '%-#6.3g'
+warpByVector1Display.PolarAxes.PolarLabelExponentLocation = 'Labels'
+warpByVector1Display.PolarAxes.RadialLabelVisibility = 1
+warpByVector1Display.PolarAxes.RadialLabelFormat = '%-#3.1f'
+warpByVector1Display.PolarAxes.RadialLabelLocation = 'Bottom'
+warpByVector1Display.PolarAxes.RadialUnitsVisibility = 1
+warpByVector1Display.PolarAxes.ScreenSize = 10.0
+warpByVector1Display.PolarAxes.PolarAxisTitleOpacity = 1.0
+warpByVector1Display.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+warpByVector1Display.PolarAxes.PolarAxisTitleFontFile = ''
+warpByVector1Display.PolarAxes.PolarAxisTitleBold = 0
+warpByVector1Display.PolarAxes.PolarAxisTitleItalic = 0
+warpByVector1Display.PolarAxes.PolarAxisTitleShadow = 0
+warpByVector1Display.PolarAxes.PolarAxisTitleFontSize = 12
+warpByVector1Display.PolarAxes.PolarAxisLabelOpacity = 1.0
+warpByVector1Display.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+warpByVector1Display.PolarAxes.PolarAxisLabelFontFile = ''
+warpByVector1Display.PolarAxes.PolarAxisLabelBold = 0
+warpByVector1Display.PolarAxes.PolarAxisLabelItalic = 0
+warpByVector1Display.PolarAxes.PolarAxisLabelShadow = 0
+warpByVector1Display.PolarAxes.PolarAxisLabelFontSize = 12
+warpByVector1Display.PolarAxes.LastRadialAxisTextOpacity = 1.0
+warpByVector1Display.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+warpByVector1Display.PolarAxes.LastRadialAxisTextFontFile = ''
+warpByVector1Display.PolarAxes.LastRadialAxisTextBold = 0
+warpByVector1Display.PolarAxes.LastRadialAxisTextItalic = 0
+warpByVector1Display.PolarAxes.LastRadialAxisTextShadow = 0
+warpByVector1Display.PolarAxes.LastRadialAxisTextFontSize = 12
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextBold = 0
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextItalic = 0
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextShadow = 0
+warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+warpByVector1Display.PolarAxes.EnableDistanceLOD = 1
+warpByVector1Display.PolarAxes.DistanceLODThreshold = 0.7
+warpByVector1Display.PolarAxes.EnableViewAngleLOD = 1
+warpByVector1Display.PolarAxes.ViewAngleLODThreshold = 0.7
+warpByVector1Display.PolarAxes.SmallestVisiblePolarAngle = 0.5
+warpByVector1Display.PolarAxes.PolarTicksVisibility = 1
+warpByVector1Display.PolarAxes.ArcTicksOriginToPolarAxis = 1
+warpByVector1Display.PolarAxes.TickLocation = 'Both'
+warpByVector1Display.PolarAxes.AxisTickVisibility = 1
+warpByVector1Display.PolarAxes.AxisMinorTickVisibility = 0
+warpByVector1Display.PolarAxes.ArcTickVisibility = 1
+warpByVector1Display.PolarAxes.ArcMinorTickVisibility = 0
+warpByVector1Display.PolarAxes.DeltaAngleMajor = 10.0
+warpByVector1Display.PolarAxes.DeltaAngleMinor = 5.0
+warpByVector1Display.PolarAxes.PolarAxisMajorTickSize = 0.0
+warpByVector1Display.PolarAxes.PolarAxisTickRatioSize = 0.3
+warpByVector1Display.PolarAxes.PolarAxisMajorTickThickness = 1.0
+warpByVector1Display.PolarAxes.PolarAxisTickRatioThickness = 0.5
+warpByVector1Display.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+warpByVector1Display.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+warpByVector1Display.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+warpByVector1Display.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+warpByVector1Display.PolarAxes.ArcMajorTickSize = 0.0
+warpByVector1Display.PolarAxes.ArcTickRatioSize = 0.3
+warpByVector1Display.PolarAxes.ArcMajorTickThickness = 1.0
+warpByVector1Display.PolarAxes.ArcTickRatioThickness = 0.5
+warpByVector1Display.PolarAxes.Use2DMode = 0
+warpByVector1Display.PolarAxes.UseLogAxis = 0
+
+# hide data in view
+Hide(validation_level6_NC_DuneVTKvtu, renderView1)
+
+# show color bar/color legend
+warpByVector1Display.SetScalarBarVisibility(renderView1, True)
+
+# update the view to ensure updated data information
+renderView1.Update()
+
+# set scalar coloring
+ColorBy(warpByVector1Display, ('POINTS', 'Displacement dune-VTK', 'Magnitude'))
+
+# Hide the scalar bar for this color map if no visible data is colored by it.
+HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+# rescale color and/or opacity maps used to include current data range
+warpByVector1Display.RescaleTransferFunctionToDataRange(True, False)
+
+# show color bar/color legend
+warpByVector1Display.SetScalarBarVisibility(renderView1, True)
+
+# get 2D transfer function for 'DisplacementduneVTK'
+displacementduneVTKTF2D = GetTransferFunction2D('DisplacementduneVTK')
+displacementduneVTKTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+displacementduneVTKTF2D.Boxes = []
+displacementduneVTKTF2D.ScalarRangeInitialized = 0
+displacementduneVTKTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+displacementduneVTKTF2D.OutputDimensions = [10, 10]
+
+# get color transfer function/color map for 'DisplacementduneVTK'
+displacementduneVTKLUT = GetColorTransferFunction('DisplacementduneVTK')
+displacementduneVTKLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+displacementduneVTKLUT.InterpretValuesAsCategories = 0
+displacementduneVTKLUT.AnnotationsInitialized = 0
+displacementduneVTKLUT.ShowCategoricalColorsinDataRangeOnly = 0
+displacementduneVTKLUT.RescaleOnVisibilityChange = 0
+displacementduneVTKLUT.EnableOpacityMapping = 0
+displacementduneVTKLUT.TransferFunction2D = displacementduneVTKTF2D
+displacementduneVTKLUT.Use2DTransferFunction = 0
+displacementduneVTKLUT.RGBPoints = [0.13888426365894344, 0.231373, 0.298039, 0.752941, 0.820044164029222, 0.865003, 0.865003, 0.865003, 1.5012040643995004, 0.705882, 0.0156863, 0.14902]
+displacementduneVTKLUT.UseLogScale = 0
+displacementduneVTKLUT.UseOpacityControlPointsFreehandDrawing = 0
+displacementduneVTKLUT.ShowDataHistogram = 0
+displacementduneVTKLUT.AutomaticDataHistogramComputation = 0
+displacementduneVTKLUT.DataHistogramNumberOfBins = 10
+displacementduneVTKLUT.ColorSpace = 'Diverging'
+displacementduneVTKLUT.UseBelowRangeColor = 0
+displacementduneVTKLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+displacementduneVTKLUT.UseAboveRangeColor = 0
+displacementduneVTKLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+displacementduneVTKLUT.NanColor = [1.0, 1.0, 0.0]
+displacementduneVTKLUT.NanOpacity = 1.0
+displacementduneVTKLUT.Discretize = 1
+displacementduneVTKLUT.NumberOfTableValues = 256
+displacementduneVTKLUT.ScalarRangeInitialized = 1.0
+displacementduneVTKLUT.HSVWrap = 0
+displacementduneVTKLUT.VectorComponent = 0
+displacementduneVTKLUT.VectorMode = 'Magnitude'
+displacementduneVTKLUT.AllowDuplicateScalars = 1
+displacementduneVTKLUT.Annotations = []
+displacementduneVTKLUT.ActiveAnnotatedValues = []
+displacementduneVTKLUT.IndexedColors = []
+displacementduneVTKLUT.IndexedOpacities = []
+
+# get opacity transfer function/opacity map for 'DisplacementduneVTK'
+displacementduneVTKPWF = GetOpacityTransferFunction('DisplacementduneVTK')
+displacementduneVTKPWF.Points = [0.13888426365894344, 0.0, 0.5, 0.0, 1.5012040643995004, 1.0, 0.5, 0.0]
+displacementduneVTKPWF.AllowDuplicateScalars = 1
+displacementduneVTKPWF.UseLogScale = 0
+displacementduneVTKPWF.ScalarRangeInitialized = 1
+
+# convert to log space
+displacementduneVTKLUT.MapControlPointsToLogSpace()
+
+# Properties modified on displacementduneVTKLUT
+displacementduneVTKLUT.UseLogScale = 1
+
+# Apply a preset using its name. Note this may not work as expected when presets have duplicate names.
+displacementduneVTKLUT.ApplyPreset('Viridis (matplotlib)', True)
+
+# hide color bar/color legend
+warpByVector1Display.SetScalarBarVisibility(renderView1, False)
+
+# set active source
+SetActiveSource(validation_level6_NC_DuneVTKvtu)
+
+# set active source
+SetActiveSource(validation_level6_NC_DuneVTKvtu)
+
+# show data in view
+validation_level6_NC_DuneVTKvtuDisplay = Show(validation_level6_NC_DuneVTKvtu, renderView1, 'UnstructuredGridRepresentation')
+
+# show color bar/color legend
+validation_level6_NC_DuneVTKvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+# hide color bar/color legend
+validation_level6_NC_DuneVTKvtuDisplay.SetScalarBarVisibility(renderView1, False)
+
+# turn off scalar coloring
+ColorBy(validation_level6_NC_DuneVTKvtuDisplay, None)
+
+# Hide the scalar bar for this color map if no visible data is colored by it.
+HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+# Properties modified on validation_level6_NC_DuneVTKvtuDisplay
+validation_level6_NC_DuneVTKvtuDisplay.Opacity = 0.2
+
+# set active source
+SetActiveSource(warpByVector1)
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.NonlinearSubdivisionLevel = 4
+
+# Properties modified on renderView1
+renderView1.OrientationAxesInteractivity = 1
+
+# Properties modified on renderView1
+renderView1.OrientationAxesVisibility = 0
+
+# Properties modified on renderView1
+renderView1.OrientationAxesInteractivity = 0
+
+renderView1.ResetActiveCameraToPositiveZ()
+
+# reset view to fit data
+renderView1.ResetCamera(False)
+
+renderView1.ResetActiveCameraToNegativeZ()
+
+# reset view to fit data
+renderView1.ResetCamera(False)
+
+# reset view to fit data
+renderView1.ResetCamera(True)
+
+# reset view to fit data bounds
+renderView1.ResetCamera(0.7242339253425598, 5.5557661056518555, -0.041813626885414124, 3.183406352996826, -1.1687347888946533, 0.6730884313583374, True)
+
+# reset view to fit data
+renderView1.ResetCamera(True)
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Specular = 0.3
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Ambient = 0.2
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Ambient = 0.5
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Ambient = 0.3
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Specular = 0.5
+
+# Properties modified on warpByVector1Display
+warpByVector1Display.Specular = 0.2
+
+# export view
+# ExportView('/home/klaus/Desktop/RegularGridMinimizer.pdf', view=renderView1, Plottitle='ParaView GL2PS Export',
+#     Compressoutputfile=0,
+#     Drawbackground=1,
+#     Cullhiddenprimitives=1,
+#     Linewidthscalingfactor=0.714,
+#     Pointsizescalingfactor=0.714,
+#     GL2PSdepthsortmethod='Simple sorting (fast, good)',
+#     Rasterize3Dgeometry=1,
+#     Dontrasterizecubeaxes=1,
+#     Rendertextaspaths=1)
+
+
+
+#######
+# # get active source.
+# warpByVector1 = GetActiveSource()
+
+# # get active view
+# renderView1 = GetActiveViewOrCreate('RenderView')
+
+# # get display properties
+# warpByVector1Display = GetDisplayProperties(warpByVector1, view=renderView1)
+
+# # set scalar coloring using an separate color/opacity maps
+# ColorBy(warpByVector1Display, ('POINTS', 'Displacement dune-VTK', 'Magnitude'), True)
+
+# # get 2D transfer function for 'DisplacementduneVTK'
+# displacementduneVTKTF2D = GetTransferFunction2D('DisplacementduneVTK')
+# displacementduneVTKTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+# displacementduneVTKTF2D.Boxes = []
+# displacementduneVTKTF2D.ScalarRangeInitialized = 0
+# displacementduneVTKTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+# displacementduneVTKTF2D.OutputDimensions = [10, 10]
+
+# # get color transfer function/color map for 'DisplacementduneVTK'
+# displacementduneVTKLUT = GetColorTransferFunction('DisplacementduneVTK')
+# displacementduneVTKLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+# displacementduneVTKLUT.InterpretValuesAsCategories = 0
+# displacementduneVTKLUT.AnnotationsInitialized = 0
+# displacementduneVTKLUT.ShowCategoricalColorsinDataRangeOnly = 0
+# displacementduneVTKLUT.RescaleOnVisibilityChange = 0
+# displacementduneVTKLUT.EnableOpacityMapping = 0
+# displacementduneVTKLUT.TransferFunction2D = displacementduneVTKTF2D
+# displacementduneVTKLUT.Use2DTransferFunction = 0
+# displacementduneVTKLUT.RGBPoints = [0.13888426365894344, 0.267004, 0.004874, 0.329415, 0.14018693868800136, 0.26851, 0.009605, 0.335427, 0.14150149542403362, 0.269944, 0.014625, 0.341379, 0.14282871896835034, 0.271305, 0.019942, 0.347269, 0.14416804812680054, 0.272594, 0.025563, 0.353093, 0.14552028279568993, 0.273809, 0.031497, 0.358853, 0.1468848512053343, 0.274952, 0.037752, 0.364543, 0.1482625683258423, 0.276022, 0.044167, 0.370164, 0.14965320784405547, 0.277018, 0.050344, 0.375715, 0.15105653139389116, 0.277941, 0.056324, 0.381191, 0.1524733770914437, 0.278791, 0.062145, 0.386592, 0.15390314584734208, 0.279566, 0.067836, 0.391917, 0.15534669157172393, 0.280267, 0.073417, 0.397163, 0.15680340388556102, 0.280894, 0.078907, 0.402329, 0.15827415279066817, 0.281446, 0.08432, 0.407414, 0.15975869669185494, 0.281924, 0.089666, 0.412415, 0.16125678112712044, 0.282327, 0.094955, 0.417331, 0.16276930080722193, 0.282656, 0.100196, 0.42216, 0.1642956161886542, 0.28291, 0.105393, 0.426902, 0.16583663884272695, 0.283091, 0.110553, 0.431554, 0.16739171717393184, 0.283197, 0.11568, 0.436115, 0.16896177993186304, 0.283229, 0.120777, 0.440584, 0.1705465692073631, 0.283187, 0.125848, 0.44496, 0.17214581335561926, 0.283072, 0.130895, 0.449241, 0.17376046750366528, 0.282884, 0.13592, 0.453427, 0.1753898489221541, 0.282623, 0.140926, 0.457517, 0.17703493073719828, 0.28229, 0.145912, 0.46151, 0.17869501735362364, 0.281887, 0.150881, 0.465405, 0.18037110023580868, 0.281412, 0.155834, 0.469201, 0.18206247068029957, 0.280868, 0.160771, 0.472899, 0.1837701388353198, 0.280255, 0.165693, 0.476498, 0.18549382418771615, 0.279574, 0.170599, 0.479997, 0.1872332312848427, 0.278826, 0.17549, 0.483397, 0.188989398964167, 0.278012, 0.180367, 0.486697, 0.19076158465972565, 0.277134, 0.185228, 0.489898, 0.1925508467855629, 0.276194, 0.190074, 0.493001, 0.19435642878228532, 0.275191, 0.194905, 0.496005, 0.19617940900942818, 0.274128, 0.199721, 0.498911, 0.19801948801189523, 0.273006, 0.20452, 0.501721, 0.19987635038629262, 0.271828, 0.209303, 0.504434, 0.2017511051186707, 0.270595, 0.214069, 0.507052, 0.20364295950052552, 0.269308, 0.218818, 0.509577, 0.20555304341641273, 0.267968, 0.223549, 0.512008, 0.20748054921947728, 0.26658, 0.228262, 0.514349, 0.20942662808660623, 0.265145, 0.232956, 0.516599, 0.21139096034168567, 0.263663, 0.237631, 0.518762, 0.21337320928337883, 0.262138, 0.242286, 0.520837, 0.21537455878317513, 0.260571, 0.246922, 0.522828, 0.21739416260410258, 0.258965, 0.251537, 0.524736, 0.21943322692734907, 0.257322, 0.25613, 0.526563, 0.22149088956886404, 0.255645, 0.260703, 0.528312, 0.22356837943995359, 0.253935, 0.265254, 0.529983, 0.225665355278041, 0.252194, 0.269783, 0.531579, 0.2277814576456809, 0.250425, 0.27429, 0.533103, 0.22991795035651894, 0.248629, 0.278775, 0.534556, 0.23207393003054946, 0.246811, 0.283237, 0.535941, 0.23425068429760254, 0.244972, 0.287675, 0.53726, 0.2364472927537507, 0.243113, 0.292092, 0.538516, 0.23866506729381692, 0.241237, 0.296485, 0.539709, 0.2409036436111135, 0.239346, 0.300855, 0.540844, 0.2431626379968067, 0.237441, 0.305202, 0.541921, 0.24544339960487593, 0.235526, 0.309527, 0.542944, 0.2477449640536391, 0.233603, 0.313828, 0.543914, 0.2500687059214728, 0.231674, 0.318106, 0.544834, 0.25241364265321464, 0.229739, 0.322361, 0.545706, 0.25478117473075335, 0.227802, 0.326594, 0.546532, 0.25717091324721214, 0.225863, 0.330805, 0.547314, 0.2595824485834184, 0.223925, 0.334994, 0.548053, 0.2620172209963803, 0.221989, 0.339161, 0.548752, 0.2644742009835375, 0.220057, 0.343307, 0.549413, 0.266954855943104, 0.21813, 0.347432, 0.550038, 0.2694581369718562, 0.21621, 0.351535, 0.550627, 0.27198553912068213, 0.214298, 0.355619, 0.551184, 0.27453664722136245, 0.212395, 0.359683, 0.55171, 0.27711102399476334, 0.210503, 0.363727, 0.552206, 0.27971020695274856, 0.208623, 0.367752, 0.552675, 0.2823330970745241, 0.206756, 0.371758, 0.553117, 0.28498126084589803, 0.204903, 0.375746, 0.553533, 0.28765357853536344, 0.203063, 0.379716, 0.553925, 0.29035164614867753, 0.201239, 0.38367, 0.554294, 0.29307432285333307, 0.19943, 0.387607, 0.554642, 0.2958232347313313, 0.197636, 0.391528, 0.554969, 0.2985979302277625, 0.19586, 0.395433, 0.555276, 0.30139793373892976, 0.1941, 0.399323, 0.555565, 0.3042249175292282, 0.192357, 0.403199, 0.555836, 0.3070776862561134, 0.190631, 0.407061, 0.556089, 0.3099579436972952, 0.188923, 0.41091, 0.556326, 0.31286447198436207, 0.187231, 0.414746, 0.556547, 0.3157990070021972, 0.185556, 0.41857, 0.556753, 0.31876106670417526, 0.183898, 0.422383, 0.556944, 0.3217501433709637, 0.182256, 0.426184, 0.55712, 0.3247680221883539, 0.180629, 0.429975, 0.557282, 0.3278134270970504, 0.179019, 0.433756, 0.55743, 0.3308881769241286, 0.177423, 0.437527, 0.557565, 0.33399097156334334, 0.175841, 0.44129, 0.557685, 0.3371236641170137, 0.174274, 0.445044, 0.557792, 0.3402857399878135, 0.172719, 0.448791, 0.557885, 0.3434766571721331, 0.171176, 0.45253, 0.557965, 0.3466983214022952, 0.169646, 0.456262, 0.55803, 0.34994937045177044, 0.168126, 0.459988, 0.558082, 0.3532317459658282, 0.166617, 0.463708, 0.558119, 0.3565440600471939, 0.165117, 0.467423, 0.558141, 0.35988829093085245, 0.163625, 0.471133, 0.558148, 0.36326388927075665, 0.162142, 0.474838, 0.55814, 0.36667027646393835, 0.160665, 0.47854, 0.558115, 0.3701094869292816, 0.159194, 0.482237, 0.558073, 0.3735800664544908, 0.157729, 0.485932, 0.558013, 0.377084087796456, 0.15627, 0.489624, 0.557936, 0.3806200693386926, 0.154815, 0.493313, 0.55784, 0.3841901228985645, 0.153364, 0.497, 0.557724, 0.38779366203486043, 0.151918, 0.500685, 0.557587, 0.39143006907384365, 0.150476, 0.504369, 0.55743, 0.3951015158106538, 0.149039, 0.508051, 0.55725, 0.3988064498357943, 0.147607, 0.511733, 0.557049, 0.4025470838712246, 0.14618, 0.515413, 0.556823, 0.4063218362527627, 0.144759, 0.519093, 0.556572, 0.4101329614004413, 0.143343, 0.522773, 0.556295, 0.41397983327299515, 0.141935, 0.526453, 0.555991, 0.4178617924876243, 0.140536, 0.530132, 0.555659, 0.421781157492199, 0.139147, 0.533812, 0.555298, 0.42573627104915357, 0.13777, 0.537492, 0.554906, 0.4297294952968039, 0.136408, 0.541173, 0.554483, 0.43375914176744557, 0.135066, 0.544853, 0.554029, 0.4378276171131739, 0.133743, 0.548535, 0.553541, 0.4419342530186344, 0.132444, 0.552216, 0.553018, 0.4460783455755166, 0.131172, 0.555899, 0.552459, 0.4502623697872996, 0.129933, 0.559582, 0.551864, 0.45448455650972375, 0.128729, 0.563265, 0.551229, 0.45874742738695673, 0.127568, 0.566949, 0.550556, 0.46304917993575273, 0.126453, 0.570633, 0.549841, 0.467392383319898, 0.125394, 0.574318, 0.549086, 0.471775201088897, 0.124395, 0.578002, 0.548287, 0.4762002508216477, 0.123463, 0.581687, 0.547445, 0.4806668056294682, 0.122606, 0.585371, 0.546557, 0.48517409991123867, 0.121831, 0.589055, 0.545623, 0.4897248255877781, 0.121148, 0.592739, 0.544641, 0.49431705846128, 0.120565, 0.596422, 0.543611, 0.49895354118099394, 0.120092, 0.600104, 0.54253, 0.50363231328819, 0.119738, 0.603785, 0.5414, 0.5083561691165097, 0.119512, 0.607464, 0.540218, 0.5131243326933554, 0.119423, 0.611141, 0.538982, 0.5179359867195936, 0.119483, 0.614817, 0.537692, 0.5227940048908023, 0.119699, 0.61849, 0.536347, 0.5276963330757127, 0.120081, 0.622161, 0.534946, 0.5326458991238233, 0.120638, 0.625828, 0.533488, 0.5376406101943856, 0.12138, 0.629492, 0.531973, 0.5426834493113325, 0.122312, 0.633153, 0.530398, 0.5477735881037079, 0.123444, 0.636809, 0.528763, 0.5529101540834025, 0.12478, 0.640461, 0.527068, 0.5580962149952833, 0.126326, 0.644107, 0.525311, 0.5633295780007267, 0.128087, 0.647749, 0.523491, 0.5686133686553208, 0.130067, 0.651384, 0.521608, 0.5739453527970633, 0.132268, 0.655014, 0.519661, 0.5793287148816879, 0.134692, 0.658636, 0.517649, 0.5847625706016262, 0.137339, 0.662252, 0.515571, 0.5902459885530998, 0.14021, 0.665859, 0.513427, 0.595782243633646, 0.143303, 0.669459, 0.511215, 0.6013689949309269, 0.146616, 0.67305, 0.508936, 0.6070095790569294, 0.150148, 0.676631, 0.506589, 0.6127016109855338, 0.153894, 0.680203, 0.504172, 0.618448490206166, 0.157851, 0.683765, 0.501686, 0.6242492726974678, 0.162016, 0.687316, 0.499129, 0.6301029641616495, 0.166383, 0.690856, 0.496502, 0.6360130606371179, 0.170948, 0.694384, 0.493803, 0.64197706313899, 0.175707, 0.6979, 0.491033, 0.6479985335874546, 0.180653, 0.701402, 0.488189, 0.6540749259050174, 0.185783, 0.704891, 0.485273, 0.6602098691351714, 0.19109, 0.708366, 0.482284, 0.666402355510532, 0.196571, 0.711827, 0.479221, 0.6726513235923147, 0.202219, 0.715272, 0.476084, 0.6789605054925639, 0.20803, 0.718701, 0.472873, 0.6853272334798376, 0.214, 0.722114, 0.469588, 0.6917553099966984, 0.220124, 0.725509, 0.466226, 0.6982420170391147, 0.226397, 0.728888, 0.462789, 0.7047912287055246, 0.232815, 0.732247, 0.459277, 0.7114018691779996, 0.239374, 0.735588, 0.455688, 0.7180728053429959, 0.24607, 0.73891, 0.452024, 0.7248080213273134, 0.252899, 0.742211, 0.448284, 0.7316046692581637, 0.259857, 0.745492, 0.444467, 0.7384668083420066, 0.266941, 0.748751, 0.440573, 0.745391537038756, 0.274149, 0.751988, 0.436601, 0.7523829910493842, 0.281477, 0.755203, 0.432552, 0.7594382141551639, 0.288921, 0.758394, 0.428426, 0.7665614199930958, 0.296479, 0.761561, 0.424223, 0.7737514384570766, 0.304148, 0.764704, 0.419943, 0.7810070371238121, 0.311925, 0.767822, 0.415586, 0.7883325493019095, 0.319809, 0.770914, 0.411152, 0.7957248775217641, 0.327796, 0.77398, 0.40664, 0.8031884367518671, 0.335885, 0.777018, 0.402049, 0.8107200711517398, 0.344074, 0.780029, 0.397381, 0.8183242788886144, 0.35236, 0.783011, 0.392636, 0.8259998108437521, 0.360741, 0.785964, 0.387814, 0.8337453513731921, 0.369214, 0.788888, 0.382914, 0.8415655263967217, 0.377779, 0.791781, 0.377939, 0.8494570292848724, 0.386433, 0.794644, 0.372886, 0.8574245731314847, 0.395174, 0.797475, 0.367757, 0.8654647889946623, 0.404001, 0.800275, 0.362552, 0.8735824787850683, 0.412913, 0.803041, 0.357269, 0.8817763090359193, 0.421908, 0.805774, 0.35191, 0.8900448752630242, 0.430983, 0.808473, 0.346476, 0.8983931157562258, 0.440137, 0.811138, 0.340967, 0.9068175006024546, 0.449368, 0.813768, 0.335384, 0.9153230611521249, 0.458674, 0.816363, 0.329727, 0.9239062009720274, 0.468053, 0.818921, 0.323998, 0.9325720462268475, 0.477504, 0.821444, 0.318195, 0.9413191734060677, 0.487026, 0.823929, 0.312321, 0.9501460831862382, 0.496615, 0.826376, 0.306377, 0.9590580473203706, 0.506271, 0.828786, 0.300362, 0.9680512975343356, 0.515992, 0.831158, 0.294279, 0.9771312049257292, 0.525776, 0.833491, 0.288127, 0.9862939302084405, 0.535621, 0.835785, 0.281908, 0.9955449456967685, 0.545524, 0.838039, 0.275626, 1.0048827317561648, 0.555484, 0.840254, 0.269281, 1.0143056878198, 0.565498, 0.84243, 0.262877, 1.0238194416213033, 0.575563, 0.844566, 0.256415, 1.033419970429907, 0.585678, 0.846661, 0.249897, 1.0431130080321702, 0.595839, 0.848717, 0.243329, 1.0528944558901863, 0.606045, 0.850733, 0.236712, 1.062770155841981, 0.616293, 0.852709, 0.230052, 1.072738485638099, 0.626579, 0.854645, 0.223353, 1.0827977366317674, 0.636902, 0.856542, 0.21662, 1.0929539165751945, 0.647257, 0.8584, 0.209861, 1.1032027310985248, 0.657642, 0.860219, 0.203082, 1.1135503011682315, 0.668054, 0.861999, 0.196293, 1.1239922514883631, 0.678489, 0.863742, 0.189503, 1.134534818373148, 0.688944, 0.865448, 0.182725, 1.1451762700290444, 0.699415, 0.867117, 0.175971, 1.1559147824311262, 0.709898, 0.868751, 0.169257, 1.1667567690113314, 0.720391, 0.87035, 0.162603, 1.1776976454180035, 0.730889, 0.871916, 0.156029, 1.1887439459422569, 0.741388, 0.873449, 0.149561, 1.1998909998417207, 0.751884, 0.874951, 0.143228, 1.211145464544241, 0.762373, 0.876424, 0.137064, 1.222502581288726, 0.772852, 0.877868, 0.131109, 1.2339691329602271, 0.783315, 0.879285, 0.125405, 1.245543235985196, 0.79376, 0.880678, 0.120005, 1.2572229064752396, 0.804182, 0.882046, 0.114965, 1.2690151199562907, 0.814576, 0.883393, 0.110347, 1.280914890289232, 0.82494, 0.88472, 0.106217, 1.2929293244516642, 0.83527, 0.886029, 0.102646, 1.3050533423421917, 0.845561, 0.887322, 0.099702, 1.3172941848672497, 0.85581, 0.888601, 0.097452, 1.3296498412630218, 0.866013, 0.889868, 0.095953, 1.3421181936769844, 0.876168, 0.891125, 0.09525, 1.3547066886647299, 0.886271, 0.892374, 0.095374, 1.3674100033928986, 0.89632, 0.893616, 0.096335, 1.3802357247451622, 0.906311, 0.894855, 0.098125, 1.3931784295809833, 0.916242, 0.896091, 0.100717, 1.4062458477565516, 0.926106, 0.89733, 0.104071, 1.4194358327291279, 0.935904, 0.89857, 0.108131, 1.43274612363599, 0.945636, 0.899815, 0.112838, 1.4461846698691572, 0.9553, 0.901065, 0.118128, 1.4597457891654002, 0.964894, 0.902323, 0.123941, 1.473437580720618, 0.974417, 0.90359, 0.130215, 1.4872542551910566, 0.983868, 0.904867, 0.136897, 1.5012040643995004, 0.993248, 0.906157, 0.143936]
+# displacementduneVTKLUT.UseLogScale = 1
+# displacementduneVTKLUT.UseOpacityControlPointsFreehandDrawing = 0
+# displacementduneVTKLUT.ShowDataHistogram = 0
+# displacementduneVTKLUT.AutomaticDataHistogramComputation = 0
+# displacementduneVTKLUT.DataHistogramNumberOfBins = 10
+# displacementduneVTKLUT.ColorSpace = 'Diverging'
+# displacementduneVTKLUT.UseBelowRangeColor = 0
+# displacementduneVTKLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+# displacementduneVTKLUT.UseAboveRangeColor = 0
+# displacementduneVTKLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+# displacementduneVTKLUT.NanColor = [1.0, 0.0, 0.0]
+# displacementduneVTKLUT.NanOpacity = 1.0
+# displacementduneVTKLUT.Discretize = 1
+# displacementduneVTKLUT.NumberOfTableValues = 256
+# displacementduneVTKLUT.ScalarRangeInitialized = 1.0
+# displacementduneVTKLUT.HSVWrap = 0
+# displacementduneVTKLUT.VectorComponent = 0
+# displacementduneVTKLUT.VectorMode = 'Magnitude'
+# displacementduneVTKLUT.AllowDuplicateScalars = 1
+# displacementduneVTKLUT.Annotations = []
+# displacementduneVTKLUT.ActiveAnnotatedValues = []
+# displacementduneVTKLUT.IndexedColors = []
+# displacementduneVTKLUT.IndexedOpacities = []
+
+# # Hide the scalar bar for this color map if no visible data is colored by it.
+# HideScalarBarIfNotNeeded(displacementduneVTKLUT, renderView1)
+
+# # rescale color and/or opacity maps used to include current data range
+# warpByVector1Display.RescaleTransferFunctionToDataRange(True, False)
+
+# # show color bar/color legend
+# warpByVector1Display.SetScalarBarVisibility(renderView1, True)
+
+# # get separate 2D transfer function for 'DisplacementduneVTK'
+# separate_warpByVector1Display_DisplacementduneVTKTF2D = GetTransferFunction2D('DisplacementduneVTK', warpByVector1Display, separate=True)
+# separate_warpByVector1Display_DisplacementduneVTKTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+# separate_warpByVector1Display_DisplacementduneVTKTF2D.Boxes = []
+# separate_warpByVector1Display_DisplacementduneVTKTF2D.ScalarRangeInitialized = 0
+# separate_warpByVector1Display_DisplacementduneVTKTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+# separate_warpByVector1Display_DisplacementduneVTKTF2D.OutputDimensions = [10, 10]
+
+# # get separate color transfer function/color map for 'DisplacementduneVTK'
+# separate_warpByVector1Display_DisplacementduneVTKLUT = GetColorTransferFunction('DisplacementduneVTK', warpByVector1Display, separate=True)
+# separate_warpByVector1Display_DisplacementduneVTKLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+# separate_warpByVector1Display_DisplacementduneVTKLUT.InterpretValuesAsCategories = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.AnnotationsInitialized = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.ShowCategoricalColorsinDataRangeOnly = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.RescaleOnVisibilityChange = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.EnableOpacityMapping = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.TransferFunction2D = separate_warpByVector1Display_DisplacementduneVTKTF2D
+# separate_warpByVector1Display_DisplacementduneVTKLUT.Use2DTransferFunction = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.RGBPoints = [0.016965557100507393, 0.231373, 0.298039, 0.752941, 0.25047902350935686, 0.865003, 0.865003, 0.865003, 0.4839924899182063, 0.705882, 0.0156863, 0.14902]
+# separate_warpByVector1Display_DisplacementduneVTKLUT.UseLogScale = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.UseOpacityControlPointsFreehandDrawing = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.ShowDataHistogram = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.AutomaticDataHistogramComputation = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.DataHistogramNumberOfBins = 10
+# separate_warpByVector1Display_DisplacementduneVTKLUT.ColorSpace = 'Diverging'
+# separate_warpByVector1Display_DisplacementduneVTKLUT.UseBelowRangeColor = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+# separate_warpByVector1Display_DisplacementduneVTKLUT.UseAboveRangeColor = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+# separate_warpByVector1Display_DisplacementduneVTKLUT.NanColor = [1.0, 1.0, 0.0]
+# separate_warpByVector1Display_DisplacementduneVTKLUT.NanOpacity = 1.0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.Discretize = 1
+# separate_warpByVector1Display_DisplacementduneVTKLUT.NumberOfTableValues = 256
+# separate_warpByVector1Display_DisplacementduneVTKLUT.ScalarRangeInitialized = 1.0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.HSVWrap = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.VectorComponent = 0
+# separate_warpByVector1Display_DisplacementduneVTKLUT.VectorMode = 'Magnitude'
+# separate_warpByVector1Display_DisplacementduneVTKLUT.AllowDuplicateScalars = 1
+# separate_warpByVector1Display_DisplacementduneVTKLUT.Annotations = []
+# separate_warpByVector1Display_DisplacementduneVTKLUT.ActiveAnnotatedValues = []
+# separate_warpByVector1Display_DisplacementduneVTKLUT.IndexedColors = []
+# separate_warpByVector1Display_DisplacementduneVTKLUT.IndexedOpacities = []
+
+# # get separate opacity transfer function/opacity map for 'DisplacementduneVTK'
+# separate_warpByVector1Display_DisplacementduneVTKPWF = GetOpacityTransferFunction('DisplacementduneVTK', warpByVector1Display, separate=True)
+# separate_warpByVector1Display_DisplacementduneVTKPWF.Points = [0.016965557100507393, 0.0, 0.5, 0.0, 0.4839924899182063, 1.0, 0.5, 0.0]
+# separate_warpByVector1Display_DisplacementduneVTKPWF.AllowDuplicateScalars = 1
+# separate_warpByVector1Display_DisplacementduneVTKPWF.UseLogScale = 0
+# separate_warpByVector1Display_DisplacementduneVTKPWF.ScalarRangeInitialized = 1
+
+# # Apply a preset using its name. Note this may not work as expected when presets have duplicate names.
+# separate_warpByVector1Display_DisplacementduneVTKLUT.ApplyPreset('Viridis (matplotlib)', True)
+
+# # hide color bar/color legend
+# warpByVector1Display.SetScalarBarVisibility(renderView1, False)
+
+
+#####################################
+
+# get layout
+layout1 = GetLayout()
+
+#--------------------------------
+# saving layout sizes for layouts
+
+# layout/tab size in pixels
+layout1.SetSize(2756, 1165)
+
+#-----------------------------------
+# saving camera placements for views
+
+# current camera placement for renderView1
+renderView1.InteractionMode = '2D'
+renderView1.CameraPosition = [-2.2403573446265757, 13.577405127683948, -5.303558746361971]
+renderView1.CameraFocalPoint = [3.140000104904175, 1.570796363055706, -0.24782317876815796]
+renderView1.CameraViewUp = [0.12586597003697914, -0.3365546684060209, -0.9332141837545996]
+renderView1.CameraParallelScale = 2.060390665888721
+
+ExportView(outputName, view=renderView1)
+
+#================================================================
+# addendum: following script captures some of the application
+# state to faithfully reproduce the visualization during playback
+#================================================================
+
+
+
+#--------------------------------------------
+# uncomment the following to render all views
+# RenderAllViews()
+# alternatively, if you want to write images, you can use SaveScreenshot(...).
\ No newline at end of file
diff --git a/experiment/macro-problem/validation/validation.py b/experiment/macro-problem/validation/validation.py
new file mode 100644
index 0000000000000000000000000000000000000000..95fd2bf48329baa68bd086d42d8015cc4e2f7c89
--- /dev/null
+++ b/experiment/macro-problem/validation/validation.py
@@ -0,0 +1,282 @@
+import math
+import numpy as np
+
+class ParameterSet(dict):
+    def __init__(self, *args, **kwargs):
+        super(ParameterSet, self).__init__(*args, **kwargs)
+        self.__dict__ = self
+
+parameterSet = ParameterSet()
+#############################################
+#  Paths
+#############################################
+parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_validation'
+parameterSet.baseName= 'validation'
+
+#############################################
+#  Grid parameters
+#############################################
+nX=1
+nY=1
+
+parameterSet.structuredGrid = 'simplex'
+parameterSet.lower = '0 0'
+# parameterSet.upper = '3.14159265359 3.14159265359'     #  pi
+parameterSet.upper = '6.28 3.14159265359'     #  pi
+parameterSet.elements = str(nX)+' '+  str(nY)
+
+parameterSet.macroGridLevel = 2
+#############################################
+#  GFE parameters
+#############################################
+parameterSet.order = 1
+
+parameterSet.conforming_DiscreteJacobian = 1
+
+parameterSet.measure_analyticalError = True
+parameterSet.measure_isometryError = True
+
+# Compare energy values.
+parameterSet.compare_EnergyValues = True
+parameterSet.analytical_energy = 9.253
+#############################################
+#  Solver parameters
+#############################################
+# Tolerance of the multigrid solver
+parameterSet.tolerance = 1e-12
+# Maximum number of multigrid iterations
+parameterSet.maxProximalNewtonSteps = 200
+# Initial regularization
+parameterSet.initialRegularization = 200
+# Measure convergence
+parameterSet.instrumented = 0
+############################
+#   Problem specifications
+############################
+# Dimension of the domain (only used for numerical-test python files)
+parameterSet.dim = 2
+
+# # Dimension of the target space
+# parameterSet.targetDim = 3
+# parameterSet.targetSpace = 'BendingIsometry'
+
+#############################################
+#  Effective prestrain
+############################################
+# parameterSet.prestrainFlag = True
+# parameterSet.macroscopically_varying_microstructure = False
+# parameterSet.read_effectiveQuantities_from_Parset = True # Otherwise the Micro/Cell-Problem is solved once to obtain the quantities.
+
+
+# # parameterSet.effectivePrestrain = '1.0 1.0 0.0'   # b1 b2 b12   #deprecated
+
+# effectivePrestrain= np.array([[1.0, 0.0],
+#                               [0.0, 1.0]]);
+
+
+# #############################################
+# #  Effective elastic moduli
+# ############################################
+# # input-vector: [q_1,q_2,q_3,q_12,q_13,q_23]
+# # is assembled into a matrix where the off-diagonal entries are divided by 2 (compare with definition in the paper)
+# #  (   q_1    , 0.5*q_12  ,  0.5*q_13 )
+# #  ( 0.5*q_12 ,   q_2     ,  0.5*q_23 )
+# #  ( 0.5*q_13 , 0.5*q_23  ,    q_3    )
+
+# # parameterSet.effectiveQuadraticForm = '1.0 4.0 2.0 1.0 0.0 0.0' #deprecated
+
+# effectiveQuadraticForm = np.array([[1.0, 0.5, 0.0],
+#                                    [0.5, 4.0, 0.0],
+#                                    [0.0, 0.0, 2.0]]);
+
+
+
+
+#############################################
+#  MICROSTRUCTURE
+############################################
+parameterSet.printMicroOutput = True
+parameterSet.VTKwriteMacroPhaseIndicator = False
+parameterSet.MacroPhaseSubsamplingRefinement = 3
+
+# Microstructure used:  Isotropic matrix material (phase 2) with prestrained fibers (phase 1) in the top layer aligned with the e2-direction.
+class GlobalMicrostructure:
+    """ Class that represents the global microstructure.
+    
+        The global microstructure can be defined individually 
+        for different (finitely many) macroscopic phases. 
+        Each macroscopic phase corresponds to a 'LocalMicrostructure_'
+        sub-class that defines the necessary data for the local 
+        micro-problem. 
+
+        Currently, there are three possibilities for the LocalMicrostructure:
+            (1) Read the effective quantities (Qhom,Beff) from this parset.
+            (Constant local microstructure)
+            (2) Solve the micro-problem once to obtain the effective quantities. 
+            (Constant local microstructure)
+            (3) Solve for micro-problem for each macroscopic quadrature point.
+            (Macroscopocally varying local microstructure)) 
+    """
+    def __init__(self,macroPoint=[0,0]):
+        self.macroPhases = 1
+
+        # define first local microstructure options.
+        self.macroPhase1_constantMicrostructure = True
+        self.macroPhase1_readEffectiveQuantities = True;
+
+
+    def macroPhaseIndicator(self,y): #y :macroscopic point
+            """ Indicatorfunction that determines the domains 
+                i.e. macro-phases of different local microstructures.
+            """
+            return 1;
+                
+    # Represents the local microstructure in Phase 1
+    class LocalMicrostructure_1:  
+        def __init__(self,macroPoint=[0,0]):
+            # gamma = 1.0
+            # self.macroPoint = macroPoint
+            self.gamma = 1.0    #in the future this might change depending on macroPoint.
+            self.phases = 2     #in the future this might change depending on macroPoint.
+
+            # self.effectivePrestrain= np.array([[1.0, 0.0],
+            #                                    [0.0, 1.0]]);
+
+            # self.effectiveQuadraticForm = np.array([[1.0, 0.5, 0.0],
+            #                                         [0.5, 4.0, 0.0],
+            #                                         [0.0, 0.0, 2.0]]);
+
+            # TEST: 
+            self.effectivePrestrain= np.array([[0.456, 0.0],
+                                               [0.0, 0.456]]);
+
+            self.effectiveQuadraticForm = np.array([[16.62, 0.046, 0.0],
+                                                    [0.046, 16.62, 0.0],
+                                                    [0.0,     0.0, 14.38]]);
+
+
+
+#############################################
+#  VTK/Output
+#############################################
+# Write discrete solution as .vtk-File
+parameterSet.writeVTK = 1
+parameterSet.vtkwrite_analyticalSolution = 1
+parameterSet.vtkWrite_analyticalSurfaceNormal = 0
+
+# The grid can be refined several times for a higher resolution in the VTK-file.
+parameterSet.subsamplingRefinement = 0
+
+# Write Dof-Vector to .txt-file
+parameterSet.writeDOFvector = 0
+#############################################f
+#  Dirichlet boundary indicator
+#############################################
+
+# Constraint y=0 boundary
+# def dirichlet_indicator(x) :
+#     if((x[1] <= 0.01)  ):
+#         return True
+#     else:
+#         return False
+
+def dirichlet_indicator(x) :
+    return False
+    
+
+#############################################
+#  Initial iterate function
+#############################################
+def f(x):
+    return [x[0], x[1], 0]
+
+
+def df(x):
+    return ((1,0),
+            (0,1),
+            (0,0))
+
+#start with analytical solution:
+# def f(x):
+#     return u(x)
+
+# def df(x):
+#     return du(x)
+
+fdf = (f, df)
+
+#############################################
+#  Force
+############################################
+parameterSet.assemble_force_term = False
+
+
+def force(x):
+    return [0, 0, 0]
+#############################################
+#  Analytical reference Solution
+#############################################
+
+#Rotation around z-axis:
+def R(alpha):
+    return np.array([[math.cos(alpha), -math.sin(alpha), 0],
+                    [math.sin(alpha), math.cos(alpha), 0],
+                    [0, 0, 1]
+                    ])
+#Rotation around z-axis:
+def R_z(alpha):
+    return np.array([[math.cos(alpha), -math.sin(alpha), 0],
+                    [math.sin(alpha), math.cos(alpha), 0],
+                    [0, 0, 1]
+                    ])
+
+#Rotation around x-axis:
+def R_x(alpha):
+    return np.array([[1,0,0],
+                    [0 , math.cos(alpha), -math.sin(alpha)],
+                    [0 , math.sin(alpha), math.cos(alpha)]
+                    ])
+
+#Rotate solution 
+alpha= math.pi/2.0
+
+kappa = 9.0/8.0
+
+def deformation(x):
+    mat = np.array([-(1.0/kappa)*math.sin(-kappa*x[1]), -x[0], 1.0*((1.0/kappa)*math.cos(-kappa*x[1])-(1.0/kappa))] )
+
+    rotation = np.dot(R_x(0),R_z(alpha))
+    out = np.dot(rotation, mat)
+
+    return out
+
+
+def deformationGradient(x):
+    dmat = np.array([[0, math.cos(-kappa*x[1])],
+            [-1.0, 0],
+            [0, 1.0*(math.sin(-kappa*x[1])) ]])
+    
+    rotation = np.dot(R_x(0),R_z(alpha))
+    out = np.dot(rotation,dmat)
+
+    # out = np.dot(S_z,out)
+
+    return out
+
+def displacement(x):
+    return deformation(x) - np.array([x[0], x[1], 0])
+
+def displacementGradient(x):
+    return deformationGradient(x) - np.array([[1.0, 0.0], [0.0,1.0], [0.0,0.0]])
+
+
+def surfaceNormal(x):
+    dmat = deformationGradient(x);
+
+    normal = np.array([(dmat[1][0]*dmat[2][1])-(dmat[1][1]*dmat[2][0]), (dmat[2][0]*dmat[0][1]) - (dmat[0][0]*dmat[2][1]), (dmat[0][0]*dmat[1][1]) - (dmat[0][1]*dmat[1][0]) ])
+    
+    return normal
+
+
+# udu = (u, du)
+analyticalSol = (displacement, displacementGradient)
\ No newline at end of file
diff --git a/experiment/macro-problem/variableBC/ParaviewVariableBC.py b/experiment/macro-problem/variableBC/ParaviewVariableBC.py
new file mode 100644
index 0000000000000000000000000000000000000000..d699b6dfdd91be89ea409150e538fc9f3402ca71
--- /dev/null
+++ b/experiment/macro-problem/variableBC/ParaviewVariableBC.py
@@ -0,0 +1,1916 @@
+#### import the simple module from the paraview
+from paraview.simple import *
+# from paraview import *
+#### disable automatic camera reset on 'Show'
+paraview.simple._DisableFirstRenderCameraReset()
+
+
+gridLevel = 3
+
+AddGlyph = True
+# AddGlyph = False
+
+#Boundary length segment parameter
+deltaArray = [0.25,0.5,1.0,1.5,2.0]
+deltaArray = [1.5]
+
+
+
+for i in range(0, len(deltaArray)):
+    # Reset/Reopen Session.
+    Disconnect()
+    Connect()
+    ResetSession()
+    
+
+
+    delta = deltaArray[i]
+
+    """"
+        remove decimal points for string
+    """
+    # deltaString = str(delta);
+    deltaString  = (str(delta)).replace('.', '')
+
+    print('deltaString:', deltaString)
+
+
+    basePath = '/home/klaus/Desktop/Dune_TestTest/dune-microstructure/outputs_cylindrical_2variableBC/'
+    experimentName = 'cylindrical_2variableBC_delta' + deltaString + '_level'+ str(gridLevel) + '_NC.vtu' 
+    fileName = basePath + experimentName
+    print('fileName:', fileName)
+    # fileName = ['/home/klaus/Desktop/Dune_TestTest/dune-microstructure/outputs_cylindrical_2variableBC/cylindrical_2variableBC_delta01_level3_NC.vtu']
+
+    outputPath = '/home/klaus/Desktop/'
+    outputName = outputPath +  'VariableBC_delta' + deltaString 
+
+    if AddGlyph:
+        outputName = outputName + '_normalfield'
+
+
+    #----------------------- Create Box to visualize boundary conditions:
+    # create a new 'Box'
+    box1 = Box(registrationName='Box1')
+
+    # get active view
+    renderView1 = GetActiveViewOrCreate('RenderView')
+
+    # show data in view
+    box1Display = Show(box1, renderView1, 'GeometryRepresentation')
+
+    # trace defaults for the display properties.
+    box1Display.Representation = 'Surface'
+    box1Display.ColorArrayName = [None, '']
+    box1Display.SelectTCoordArray = 'TCoords'
+    box1Display.SelectNormalArray = 'Normals'
+    box1Display.SelectTangentArray = 'None'
+    box1Display.OSPRayScaleArray = 'Normals'
+    box1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+    box1Display.SelectOrientationVectors = 'None'
+    box1Display.ScaleFactor = 0.1
+    box1Display.SelectScaleArray = 'None'
+    box1Display.GlyphType = 'Arrow'
+    box1Display.GlyphTableIndexArray = 'None'
+    box1Display.GaussianRadius = 0.005
+    box1Display.SetScaleArray = ['POINTS', 'Normals']
+    box1Display.ScaleTransferFunction = 'PiecewiseFunction'
+    box1Display.OpacityArray = ['POINTS', 'Normals']
+    box1Display.OpacityTransferFunction = 'PiecewiseFunction'
+    box1Display.DataAxesGrid = 'GridAxesRepresentation'
+    box1Display.PolarAxes = 'PolarAxesRepresentation'
+
+    # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+    box1Display.ScaleTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+    # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+    box1Display.OpacityTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+
+    # Properties modified on box1
+    box1.XLength = 2.0
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+
+    # Properties modified on box1
+    box1.XLength = 0.1
+    box1.YLength = delta
+    box1.ZLength = 0.1
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+
+    # Properties modified on box1Display
+    box1Display.Position = [-1.0, 0.0, 0.0]
+
+    # Properties modified on box1Display.DataAxesGrid
+    box1Display.DataAxesGrid.Position = [-1.0, 0.0, 0.0]
+
+    # Properties modified on box1Display.PolarAxes
+    box1Display.PolarAxes.Translation = [-1.0, 0.0, 0.0]
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+    #-------------------------------------------------------------------------------
+
+
+
+    # create a new 'XML Unstructured Grid Reader'
+    cylindrical_2variableBC_delta15_level3_NCvtu = XMLUnstructuredGridReader(registrationName=experimentName, FileName=[fileName])
+    cylindrical_2variableBC_delta15_level3_NCvtu.CellArrayStatus = []
+    cylindrical_2variableBC_delta15_level3_NCvtu.PointArrayStatus = ['Displacement dune-VTK', 'IsometryErrorFunction', 'SurfaceNormalDiscrete']
+    cylindrical_2variableBC_delta15_level3_NCvtu.TimeArray = 'TimeValue'
+
+    # Properties modified on cylindrical_2variableBC_delta15_level3_NCvtu
+    cylindrical_2variableBC_delta15_level3_NCvtu.TimeArray = 'None'
+
+    # get active view
+    renderView1 = GetActiveViewOrCreate('RenderView')
+
+    # show data in view
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay = Show(cylindrical_2variableBC_delta15_level3_NCvtu, renderView1, 'UnstructuredGridRepresentation')
+
+    # get 2D transfer function for 'IsometryErrorFunction'
+    isometryErrorFunctionTF2D = GetTransferFunction2D('IsometryErrorFunction')
+    isometryErrorFunctionTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    isometryErrorFunctionTF2D.Boxes = []
+    isometryErrorFunctionTF2D.ScalarRangeInitialized = 0
+    isometryErrorFunctionTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+    isometryErrorFunctionTF2D.OutputDimensions = [10, 10]
+
+    # get color transfer function/color map for 'IsometryErrorFunction'
+    isometryErrorFunctionLUT = GetColorTransferFunction('IsometryErrorFunction')
+    isometryErrorFunctionLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    isometryErrorFunctionLUT.InterpretValuesAsCategories = 0
+    isometryErrorFunctionLUT.AnnotationsInitialized = 0
+    isometryErrorFunctionLUT.ShowCategoricalColorsinDataRangeOnly = 0
+    isometryErrorFunctionLUT.RescaleOnVisibilityChange = 0
+    isometryErrorFunctionLUT.EnableOpacityMapping = 0
+    isometryErrorFunctionLUT.TransferFunction2D = isometryErrorFunctionTF2D
+    isometryErrorFunctionLUT.Use2DTransferFunction = 0
+    isometryErrorFunctionLUT.RGBPoints = [0.0, 0.231373, 0.298039, 0.752941, 0.030321702361106873, 0.865003, 0.865003, 0.865003, 0.060643404722213745, 0.705882, 0.0156863, 0.14902]
+    isometryErrorFunctionLUT.UseLogScale = 0
+    isometryErrorFunctionLUT.UseOpacityControlPointsFreehandDrawing = 0
+    isometryErrorFunctionLUT.ShowDataHistogram = 0
+    isometryErrorFunctionLUT.AutomaticDataHistogramComputation = 0
+    isometryErrorFunctionLUT.DataHistogramNumberOfBins = 10
+    isometryErrorFunctionLUT.ColorSpace = 'Diverging'
+    isometryErrorFunctionLUT.UseBelowRangeColor = 0
+    isometryErrorFunctionLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+    isometryErrorFunctionLUT.UseAboveRangeColor = 0
+    isometryErrorFunctionLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+    isometryErrorFunctionLUT.NanColor = [1.0, 1.0, 0.0]
+    isometryErrorFunctionLUT.NanOpacity = 1.0
+    isometryErrorFunctionLUT.Discretize = 1
+    isometryErrorFunctionLUT.NumberOfTableValues = 256
+    isometryErrorFunctionLUT.ScalarRangeInitialized = 1.0
+    isometryErrorFunctionLUT.HSVWrap = 0
+    isometryErrorFunctionLUT.VectorComponent = 0
+    isometryErrorFunctionLUT.VectorMode = 'Magnitude'
+    isometryErrorFunctionLUT.AllowDuplicateScalars = 1
+    isometryErrorFunctionLUT.Annotations = []
+    isometryErrorFunctionLUT.ActiveAnnotatedValues = []
+    isometryErrorFunctionLUT.IndexedColors = []
+    isometryErrorFunctionLUT.IndexedOpacities = []
+
+    # get opacity transfer function/opacity map for 'IsometryErrorFunction'
+    isometryErrorFunctionPWF = GetOpacityTransferFunction('IsometryErrorFunction')
+    isometryErrorFunctionPWF.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    isometryErrorFunctionPWF.AllowDuplicateScalars = 1
+    isometryErrorFunctionPWF.UseLogScale = 0
+    isometryErrorFunctionPWF.ScalarRangeInitialized = 1
+
+    # trace defaults for the display properties.
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Selection = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Representation = 'Surface'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LookupTable = isometryErrorFunctionLUT
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MapScalars = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MultiComponentsMapping = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.InterpolateScalarsBeforeMapping = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Opacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PointSize = 2.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LineWidth = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.RenderLinesAsTubes = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.RenderPointsAsSpheres = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Interpolation = 'Gouraud'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Specular = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SpecularColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SpecularPower = 100.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Luminosity = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Ambient = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Diffuse = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Roughness = 0.3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Metallic = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EdgeTint = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Anisotropy = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.AnisotropyRotation = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BaseIOR = 1.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatStrength = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatIOR = 2.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatRoughness = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectTCoordArray = 'None'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectNormalArray = 'None'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectTangentArray = 'None'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Texture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.RepeatTextures = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.InterpolateTextures = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SeamlessU = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SeamlessV = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseMipmapTextures = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ShowTexturesOnBackface = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BaseColorTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NormalTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NormalScale = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatNormalTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatNormalScale = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaterialTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OcclusionStrength = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.AnisotropyTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EmissiveTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EmissiveFactor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.FlipTextures = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BackfaceRepresentation = 'Follow Frontface'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BackfaceOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Position = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Scale = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Orientation = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Origin = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Pickable = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Triangulate = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseShaderReplacements = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ShaderReplacements = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NonlinearSubdivisionLevel = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseDataPartitions = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayUseScaleArray = 'All Approximate'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayScaleArray = 'IsometryErrorFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayScaleFunction = 'PiecewiseFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayMaterial = 'None'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BlockSelectors = ['/']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BlockColors = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BlockOpacities = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Orient = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OrientationMode = 'Direction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectOrientationVectors = 'Displacement dune-VTK'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Scaling = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleMode = 'No Data Scaling Off'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleFactor = 0.2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectScaleArray = 'IsometryErrorFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType = 'Arrow'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseGlyphTable = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphTableIndexArray = 'IsometryErrorFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseCompositeGlyphTable = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseGlyphCullingAndLOD = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LODValues = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ColorByLODIndex = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GaussianRadius = 0.01
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ShaderPreset = 'Sphere'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CustomTriangleScale = 3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CustomShader = """ // This custom shader code define a gaussian blur
+    // Please take a look into vtkSMPointGaussianRepresentation.cxx
+    // for other custom shader examples
+    //VTK::Color::Impl
+    float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+    float gaussian = exp(-0.5*dist2);
+    opacity = opacity*gaussian;
+    """
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Emissive = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleByArray = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleArrayComponent = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseScaleFunction = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleTransferFunction = 'PiecewiseFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityByArray = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityArrayComponent = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityTransferFunction = 'PiecewiseFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid = 'GridAxesRepresentation'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelFontSize = 18
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelJustification = 'Left'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelFontSize = 18
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelJustification = 'Left'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes = 'PolarAxesRepresentation'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScalarOpacityFunction = isometryErrorFunctionPWF
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScalarOpacityUnitDistance = 0.22272467953508482
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseSeparateOpacityArray = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityComponent = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectMapper = 'Projected tetra'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SamplingDimensions = [128, 128, 128]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseFloatingPointFrameBuffer = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NumberOfSteps = 40
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.StepSize = 0.25
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NormalizeVectors = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EnhancedLIC = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ColorMode = 'Blend'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LICIntensity = 0.8
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MapModeBias = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EnhanceContrast = 'Off'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LowLICContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.HighLICContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LowColorContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.HighColorContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.AntiAlias = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaskOnSurface = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaskThreshold = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaskIntensity = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaskColor = [0.5, 0.5, 0.5]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GenerateNoiseTexture = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NoiseType = 'Gaussian'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NoiseTextureSize = 128
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NoiseGrainSize = 2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MinNoiseValue = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaxNoiseValue = 0.8
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NumberOfNoiseLevels = 1024
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ImpulseNoiseProbability = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ImpulseNoiseBackgroundValue = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NoiseGeneratorSeed = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CompositeStrategy = 'AUTO'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseLICForLOD = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.WriteLog = ''
+
+    # init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayScaleFunction.UseLogScale = 0
+
+    # init the 'Arrow' selected for 'GlyphType'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.TipResolution = 6
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.TipRadius = 0.1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.TipLength = 0.35
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.ShaftResolution = 6
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.ShaftRadius = 0.03
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.Invert = 0
+
+    # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleTransferFunction.UseLogScale = 0
+
+    # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityTransferFunction.UseLogScale = 0
+
+    # init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitle = 'X Axis'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitle = 'Y Axis'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitle = 'Z Axis'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.FacesToRender = 63
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.CullBackface = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.CullFrontface = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ShowGrid = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ShowEdges = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ShowTicks = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.LabelUniqueEdgesOnly = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.AxesToLabel = 63
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XAxisNotation = 'Mixed'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XAxisPrecision = 2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XAxisUseCustomLabels = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XAxisLabels = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YAxisNotation = 'Mixed'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YAxisPrecision = 2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YAxisUseCustomLabels = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YAxisLabels = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZAxisNotation = 'Mixed'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZAxisPrecision = 2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZAxisUseCustomLabels = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZAxisLabels = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.UseCustomBounds = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+    # init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Visibility = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Translation = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Scale = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.EnableCustomBounds = [0, 0, 0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.EnableCustomRange = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.CustomRange = [0.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialAxesVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DrawRadialGridlines = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarArcsVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DrawPolarArcsGridlines = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.NumberOfRadialAxes = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.AutoSubdividePolarAxis = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.NumberOfPolarAxis = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.MinimumRadius = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.MinimumAngle = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.MaximumAngle = 90.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialAxesOriginToPolarAxis = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Ratio = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitle = 'Radial Distance'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarLabelVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarLabelFormat = '%-#6.3g'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarLabelExponentLocation = 'Labels'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialLabelVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialLabelFormat = '%-#3.1f'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialLabelLocation = 'Bottom'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialUnitsVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ScreenSize = 10.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.EnableDistanceLOD = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DistanceLODThreshold = 0.7
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.EnableViewAngleLOD = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ViewAngleLODThreshold = 0.7
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SmallestVisiblePolarAngle = 0.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarTicksVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcTicksOriginToPolarAxis = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.TickLocation = 'Both'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.AxisTickVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.AxisMinorTickVisibility = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcTickVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcMinorTickVisibility = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DeltaAngleMajor = 10.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DeltaAngleMinor = 5.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisMajorTickSize = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTickRatioSize = 0.3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisMajorTickThickness = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTickRatioThickness = 0.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcMajorTickSize = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcTickRatioSize = 0.3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcMajorTickThickness = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcTickRatioThickness = 0.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Use2DMode = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.UseLogAxis = 0
+
+    # show color bar/color legend
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+    # find source
+    box1 = FindSource('Box1')
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+
+    # set scalar coloring
+    ColorBy(cylindrical_2variableBC_delta15_level3_NCvtuDisplay, ('POINTS', 'Displacement dune-VTK', 'Magnitude'))
+
+    # Hide the scalar bar for this color map if no visible data is colored by it.
+    HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+    # rescale color and/or opacity maps used to include current data range
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.RescaleTransferFunctionToDataRange(True, False)
+
+    # show color bar/color legend
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+    # get 2D transfer function for 'DisplacementduneVTK'
+    displacementduneVTKTF2D = GetTransferFunction2D('DisplacementduneVTK')
+    displacementduneVTKTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    displacementduneVTKTF2D.Boxes = []
+    displacementduneVTKTF2D.ScalarRangeInitialized = 0
+    displacementduneVTKTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+    displacementduneVTKTF2D.OutputDimensions = [10, 10]
+
+    # get color transfer function/color map for 'DisplacementduneVTK'
+    displacementduneVTKLUT = GetColorTransferFunction('DisplacementduneVTK')
+    displacementduneVTKLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    displacementduneVTKLUT.InterpretValuesAsCategories = 0
+    displacementduneVTKLUT.AnnotationsInitialized = 0
+    displacementduneVTKLUT.ShowCategoricalColorsinDataRangeOnly = 0
+    displacementduneVTKLUT.RescaleOnVisibilityChange = 0
+    displacementduneVTKLUT.EnableOpacityMapping = 0
+    displacementduneVTKLUT.TransferFunction2D = displacementduneVTKTF2D
+    displacementduneVTKLUT.Use2DTransferFunction = 0
+    displacementduneVTKLUT.RGBPoints = [0.0, 0.231373, 0.298039, 0.752941, 0.6756904005417563, 0.865003, 0.865003, 0.865003, 1.3513808010835127, 0.705882, 0.0156863, 0.14902]
+    displacementduneVTKLUT.UseLogScale = 0
+    displacementduneVTKLUT.UseOpacityControlPointsFreehandDrawing = 0
+    displacementduneVTKLUT.ShowDataHistogram = 0
+    displacementduneVTKLUT.AutomaticDataHistogramComputation = 0
+    displacementduneVTKLUT.DataHistogramNumberOfBins = 10
+    displacementduneVTKLUT.ColorSpace = 'Diverging'
+    displacementduneVTKLUT.UseBelowRangeColor = 0
+    displacementduneVTKLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+    displacementduneVTKLUT.UseAboveRangeColor = 0
+    displacementduneVTKLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+    displacementduneVTKLUT.NanColor = [1.0, 1.0, 0.0]
+    displacementduneVTKLUT.NanOpacity = 1.0
+    displacementduneVTKLUT.Discretize = 1
+    displacementduneVTKLUT.NumberOfTableValues = 256
+    displacementduneVTKLUT.ScalarRangeInitialized = 1.0
+    displacementduneVTKLUT.HSVWrap = 0
+    displacementduneVTKLUT.VectorComponent = 0
+    displacementduneVTKLUT.VectorMode = 'Magnitude'
+    displacementduneVTKLUT.AllowDuplicateScalars = 1
+    displacementduneVTKLUT.Annotations = []
+    displacementduneVTKLUT.ActiveAnnotatedValues = []
+    displacementduneVTKLUT.IndexedColors = []
+    displacementduneVTKLUT.IndexedOpacities = []
+
+    # get opacity transfer function/opacity map for 'DisplacementduneVTK'
+    displacementduneVTKPWF = GetOpacityTransferFunction('DisplacementduneVTK')
+    displacementduneVTKPWF.Points = [0.0, 0.0, 0.5, 0.0, 1.3513808010835127, 1.0, 0.5, 0.0]
+    displacementduneVTKPWF.AllowDuplicateScalars = 1
+    displacementduneVTKPWF.UseLogScale = 0
+    displacementduneVTKPWF.ScalarRangeInitialized = 1
+
+    # create a new 'Warp By Vector'
+    warpByVector1 = WarpByVector(registrationName='WarpByVector1', Input=cylindrical_2variableBC_delta15_level3_NCvtu)
+    warpByVector1.Vectors = ['POINTS', 'Displacement dune-VTK']
+    warpByVector1.ScaleFactor = 1.0
+
+    # show data in view
+    warpByVector1Display = Show(warpByVector1, renderView1, 'UnstructuredGridRepresentation')
+
+    # trace defaults for the display properties.
+    warpByVector1Display.Selection = None
+    warpByVector1Display.Representation = 'Surface'
+    warpByVector1Display.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+    warpByVector1Display.LookupTable = isometryErrorFunctionLUT
+    warpByVector1Display.MapScalars = 1
+    warpByVector1Display.MultiComponentsMapping = 0
+    warpByVector1Display.InterpolateScalarsBeforeMapping = 1
+    warpByVector1Display.Opacity = 1.0
+    warpByVector1Display.PointSize = 2.0
+    warpByVector1Display.LineWidth = 1.0
+    warpByVector1Display.RenderLinesAsTubes = 0
+    warpByVector1Display.RenderPointsAsSpheres = 0
+    warpByVector1Display.Interpolation = 'Gouraud'
+    warpByVector1Display.Specular = 0.0
+    warpByVector1Display.SpecularColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.SpecularPower = 100.0
+    warpByVector1Display.Luminosity = 0.0
+    warpByVector1Display.Ambient = 0.0
+    warpByVector1Display.Diffuse = 1.0
+    warpByVector1Display.Roughness = 0.3
+    warpByVector1Display.Metallic = 0.0
+    warpByVector1Display.EdgeTint = [1.0, 1.0, 1.0]
+    warpByVector1Display.Anisotropy = 0.0
+    warpByVector1Display.AnisotropyRotation = 0.0
+    warpByVector1Display.BaseIOR = 1.5
+    warpByVector1Display.CoatStrength = 0.0
+    warpByVector1Display.CoatIOR = 2.0
+    warpByVector1Display.CoatRoughness = 0.0
+    warpByVector1Display.CoatColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.SelectTCoordArray = 'None'
+    warpByVector1Display.SelectNormalArray = 'None'
+    warpByVector1Display.SelectTangentArray = 'None'
+    warpByVector1Display.Texture = None
+    warpByVector1Display.RepeatTextures = 1
+    warpByVector1Display.InterpolateTextures = 0
+    warpByVector1Display.SeamlessU = 0
+    warpByVector1Display.SeamlessV = 0
+    warpByVector1Display.UseMipmapTextures = 0
+    warpByVector1Display.ShowTexturesOnBackface = 1
+    warpByVector1Display.BaseColorTexture = None
+    warpByVector1Display.NormalTexture = None
+    warpByVector1Display.NormalScale = 1.0
+    warpByVector1Display.CoatNormalTexture = None
+    warpByVector1Display.CoatNormalScale = 1.0
+    warpByVector1Display.MaterialTexture = None
+    warpByVector1Display.OcclusionStrength = 1.0
+    warpByVector1Display.AnisotropyTexture = None
+    warpByVector1Display.EmissiveTexture = None
+    warpByVector1Display.EmissiveFactor = [1.0, 1.0, 1.0]
+    warpByVector1Display.FlipTextures = 0
+    warpByVector1Display.BackfaceRepresentation = 'Follow Frontface'
+    warpByVector1Display.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.BackfaceOpacity = 1.0
+    warpByVector1Display.Position = [0.0, 0.0, 0.0]
+    warpByVector1Display.Scale = [1.0, 1.0, 1.0]
+    warpByVector1Display.Orientation = [0.0, 0.0, 0.0]
+    warpByVector1Display.Origin = [0.0, 0.0, 0.0]
+    warpByVector1Display.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+    warpByVector1Display.Pickable = 1
+    warpByVector1Display.Triangulate = 0
+    warpByVector1Display.UseShaderReplacements = 0
+    warpByVector1Display.ShaderReplacements = ''
+    warpByVector1Display.NonlinearSubdivisionLevel = 1
+    warpByVector1Display.UseDataPartitions = 0
+    warpByVector1Display.OSPRayUseScaleArray = 'All Approximate'
+    warpByVector1Display.OSPRayScaleArray = 'IsometryErrorFunction'
+    warpByVector1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+    warpByVector1Display.OSPRayMaterial = 'None'
+    warpByVector1Display.BlockSelectors = ['/']
+    warpByVector1Display.BlockColors = []
+    warpByVector1Display.BlockOpacities = []
+    warpByVector1Display.Orient = 0
+    warpByVector1Display.OrientationMode = 'Direction'
+    warpByVector1Display.SelectOrientationVectors = 'Displacement dune-VTK'
+    warpByVector1Display.Scaling = 0
+    warpByVector1Display.ScaleMode = 'No Data Scaling Off'
+    warpByVector1Display.ScaleFactor = 0.19999914765357973
+    warpByVector1Display.SelectScaleArray = 'IsometryErrorFunction'
+    warpByVector1Display.GlyphType = 'Arrow'
+    warpByVector1Display.UseGlyphTable = 0
+    warpByVector1Display.GlyphTableIndexArray = 'IsometryErrorFunction'
+    warpByVector1Display.UseCompositeGlyphTable = 0
+    warpByVector1Display.UseGlyphCullingAndLOD = 0
+    warpByVector1Display.LODValues = []
+    warpByVector1Display.ColorByLODIndex = 0
+    warpByVector1Display.GaussianRadius = 0.009999957382678986
+    warpByVector1Display.ShaderPreset = 'Sphere'
+    warpByVector1Display.CustomTriangleScale = 3
+    warpByVector1Display.CustomShader = """ // This custom shader code define a gaussian blur
+    // Please take a look into vtkSMPointGaussianRepresentation.cxx
+    // for other custom shader examples
+    //VTK::Color::Impl
+    float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+    float gaussian = exp(-0.5*dist2);
+    opacity = opacity*gaussian;
+    """
+    warpByVector1Display.Emissive = 0
+    warpByVector1Display.ScaleByArray = 0
+    warpByVector1Display.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+    warpByVector1Display.ScaleArrayComponent = ''
+    warpByVector1Display.UseScaleFunction = 1
+    warpByVector1Display.ScaleTransferFunction = 'PiecewiseFunction'
+    warpByVector1Display.OpacityByArray = 0
+    warpByVector1Display.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+    warpByVector1Display.OpacityArrayComponent = ''
+    warpByVector1Display.OpacityTransferFunction = 'PiecewiseFunction'
+    warpByVector1Display.DataAxesGrid = 'GridAxesRepresentation'
+    warpByVector1Display.SelectionCellLabelBold = 0
+    warpByVector1Display.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+    warpByVector1Display.SelectionCellLabelFontFamily = 'Arial'
+    warpByVector1Display.SelectionCellLabelFontFile = ''
+    warpByVector1Display.SelectionCellLabelFontSize = 18
+    warpByVector1Display.SelectionCellLabelItalic = 0
+    warpByVector1Display.SelectionCellLabelJustification = 'Left'
+    warpByVector1Display.SelectionCellLabelOpacity = 1.0
+    warpByVector1Display.SelectionCellLabelShadow = 0
+    warpByVector1Display.SelectionPointLabelBold = 0
+    warpByVector1Display.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+    warpByVector1Display.SelectionPointLabelFontFamily = 'Arial'
+    warpByVector1Display.SelectionPointLabelFontFile = ''
+    warpByVector1Display.SelectionPointLabelFontSize = 18
+    warpByVector1Display.SelectionPointLabelItalic = 0
+    warpByVector1Display.SelectionPointLabelJustification = 'Left'
+    warpByVector1Display.SelectionPointLabelOpacity = 1.0
+    warpByVector1Display.SelectionPointLabelShadow = 0
+    warpByVector1Display.PolarAxes = 'PolarAxesRepresentation'
+    warpByVector1Display.ScalarOpacityFunction = isometryErrorFunctionPWF
+    warpByVector1Display.ScalarOpacityUnitDistance = 0.21902417179491238
+    warpByVector1Display.UseSeparateOpacityArray = 0
+    warpByVector1Display.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+    warpByVector1Display.OpacityComponent = ''
+    warpByVector1Display.SelectMapper = 'Projected tetra'
+    warpByVector1Display.SamplingDimensions = [128, 128, 128]
+    warpByVector1Display.UseFloatingPointFrameBuffer = 1
+    warpByVector1Display.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+    warpByVector1Display.NumberOfSteps = 40
+    warpByVector1Display.StepSize = 0.25
+    warpByVector1Display.NormalizeVectors = 1
+    warpByVector1Display.EnhancedLIC = 1
+    warpByVector1Display.ColorMode = 'Blend'
+    warpByVector1Display.LICIntensity = 0.8
+    warpByVector1Display.MapModeBias = 0.0
+    warpByVector1Display.EnhanceContrast = 'Off'
+    warpByVector1Display.LowLICContrastEnhancementFactor = 0.0
+    warpByVector1Display.HighLICContrastEnhancementFactor = 0.0
+    warpByVector1Display.LowColorContrastEnhancementFactor = 0.0
+    warpByVector1Display.HighColorContrastEnhancementFactor = 0.0
+    warpByVector1Display.AntiAlias = 0
+    warpByVector1Display.MaskOnSurface = 1
+    warpByVector1Display.MaskThreshold = 0.0
+    warpByVector1Display.MaskIntensity = 0.0
+    warpByVector1Display.MaskColor = [0.5, 0.5, 0.5]
+    warpByVector1Display.GenerateNoiseTexture = 0
+    warpByVector1Display.NoiseType = 'Gaussian'
+    warpByVector1Display.NoiseTextureSize = 128
+    warpByVector1Display.NoiseGrainSize = 2
+    warpByVector1Display.MinNoiseValue = 0.0
+    warpByVector1Display.MaxNoiseValue = 0.8
+    warpByVector1Display.NumberOfNoiseLevels = 1024
+    warpByVector1Display.ImpulseNoiseProbability = 1.0
+    warpByVector1Display.ImpulseNoiseBackgroundValue = 0.0
+    warpByVector1Display.NoiseGeneratorSeed = 1
+    warpByVector1Display.CompositeStrategy = 'AUTO'
+    warpByVector1Display.UseLICForLOD = 0
+    warpByVector1Display.WriteLog = ''
+
+    # init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+    warpByVector1Display.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+    warpByVector1Display.OSPRayScaleFunction.UseLogScale = 0
+
+    # init the 'Arrow' selected for 'GlyphType'
+    warpByVector1Display.GlyphType.TipResolution = 6
+    warpByVector1Display.GlyphType.TipRadius = 0.1
+    warpByVector1Display.GlyphType.TipLength = 0.35
+    warpByVector1Display.GlyphType.ShaftResolution = 6
+    warpByVector1Display.GlyphType.ShaftRadius = 0.03
+    warpByVector1Display.GlyphType.Invert = 0
+
+    # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+    warpByVector1Display.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    warpByVector1Display.ScaleTransferFunction.UseLogScale = 0
+
+    # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+    warpByVector1Display.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    warpByVector1Display.OpacityTransferFunction.UseLogScale = 0
+
+    # init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+    warpByVector1Display.DataAxesGrid.XTitle = 'X Axis'
+    warpByVector1Display.DataAxesGrid.YTitle = 'Y Axis'
+    warpByVector1Display.DataAxesGrid.ZTitle = 'Z Axis'
+    warpByVector1Display.DataAxesGrid.XTitleFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.XTitleFontFile = ''
+    warpByVector1Display.DataAxesGrid.XTitleBold = 0
+    warpByVector1Display.DataAxesGrid.XTitleItalic = 0
+    warpByVector1Display.DataAxesGrid.XTitleFontSize = 12
+    warpByVector1Display.DataAxesGrid.XTitleShadow = 0
+    warpByVector1Display.DataAxesGrid.XTitleOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.YTitleFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.YTitleFontFile = ''
+    warpByVector1Display.DataAxesGrid.YTitleBold = 0
+    warpByVector1Display.DataAxesGrid.YTitleItalic = 0
+    warpByVector1Display.DataAxesGrid.YTitleFontSize = 12
+    warpByVector1Display.DataAxesGrid.YTitleShadow = 0
+    warpByVector1Display.DataAxesGrid.YTitleOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.ZTitleFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.ZTitleFontFile = ''
+    warpByVector1Display.DataAxesGrid.ZTitleBold = 0
+    warpByVector1Display.DataAxesGrid.ZTitleItalic = 0
+    warpByVector1Display.DataAxesGrid.ZTitleFontSize = 12
+    warpByVector1Display.DataAxesGrid.ZTitleShadow = 0
+    warpByVector1Display.DataAxesGrid.ZTitleOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.FacesToRender = 63
+    warpByVector1Display.DataAxesGrid.CullBackface = 0
+    warpByVector1Display.DataAxesGrid.CullFrontface = 1
+    warpByVector1Display.DataAxesGrid.ShowGrid = 0
+    warpByVector1Display.DataAxesGrid.ShowEdges = 1
+    warpByVector1Display.DataAxesGrid.ShowTicks = 1
+    warpByVector1Display.DataAxesGrid.LabelUniqueEdgesOnly = 1
+    warpByVector1Display.DataAxesGrid.AxesToLabel = 63
+    warpByVector1Display.DataAxesGrid.XLabelFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.XLabelFontFile = ''
+    warpByVector1Display.DataAxesGrid.XLabelBold = 0
+    warpByVector1Display.DataAxesGrid.XLabelItalic = 0
+    warpByVector1Display.DataAxesGrid.XLabelFontSize = 12
+    warpByVector1Display.DataAxesGrid.XLabelShadow = 0
+    warpByVector1Display.DataAxesGrid.XLabelOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.YLabelFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.YLabelFontFile = ''
+    warpByVector1Display.DataAxesGrid.YLabelBold = 0
+    warpByVector1Display.DataAxesGrid.YLabelItalic = 0
+    warpByVector1Display.DataAxesGrid.YLabelFontSize = 12
+    warpByVector1Display.DataAxesGrid.YLabelShadow = 0
+    warpByVector1Display.DataAxesGrid.YLabelOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.ZLabelFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.ZLabelFontFile = ''
+    warpByVector1Display.DataAxesGrid.ZLabelBold = 0
+    warpByVector1Display.DataAxesGrid.ZLabelItalic = 0
+    warpByVector1Display.DataAxesGrid.ZLabelFontSize = 12
+    warpByVector1Display.DataAxesGrid.ZLabelShadow = 0
+    warpByVector1Display.DataAxesGrid.ZLabelOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.XAxisNotation = 'Mixed'
+    warpByVector1Display.DataAxesGrid.XAxisPrecision = 2
+    warpByVector1Display.DataAxesGrid.XAxisUseCustomLabels = 0
+    warpByVector1Display.DataAxesGrid.XAxisLabels = []
+    warpByVector1Display.DataAxesGrid.YAxisNotation = 'Mixed'
+    warpByVector1Display.DataAxesGrid.YAxisPrecision = 2
+    warpByVector1Display.DataAxesGrid.YAxisUseCustomLabels = 0
+    warpByVector1Display.DataAxesGrid.YAxisLabels = []
+    warpByVector1Display.DataAxesGrid.ZAxisNotation = 'Mixed'
+    warpByVector1Display.DataAxesGrid.ZAxisPrecision = 2
+    warpByVector1Display.DataAxesGrid.ZAxisUseCustomLabels = 0
+    warpByVector1Display.DataAxesGrid.ZAxisLabels = []
+    warpByVector1Display.DataAxesGrid.UseCustomBounds = 0
+    warpByVector1Display.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+    # init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+    warpByVector1Display.PolarAxes.Visibility = 0
+    warpByVector1Display.PolarAxes.Translation = [0.0, 0.0, 0.0]
+    warpByVector1Display.PolarAxes.Scale = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+    warpByVector1Display.PolarAxes.EnableCustomBounds = [0, 0, 0]
+    warpByVector1Display.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+    warpByVector1Display.PolarAxes.EnableCustomRange = 0
+    warpByVector1Display.PolarAxes.CustomRange = [0.0, 1.0]
+    warpByVector1Display.PolarAxes.PolarAxisVisibility = 1
+    warpByVector1Display.PolarAxes.RadialAxesVisibility = 1
+    warpByVector1Display.PolarAxes.DrawRadialGridlines = 1
+    warpByVector1Display.PolarAxes.PolarArcsVisibility = 1
+    warpByVector1Display.PolarAxes.DrawPolarArcsGridlines = 1
+    warpByVector1Display.PolarAxes.NumberOfRadialAxes = 0
+    warpByVector1Display.PolarAxes.AutoSubdividePolarAxis = 1
+    warpByVector1Display.PolarAxes.NumberOfPolarAxis = 0
+    warpByVector1Display.PolarAxes.MinimumRadius = 0.0
+    warpByVector1Display.PolarAxes.MinimumAngle = 0.0
+    warpByVector1Display.PolarAxes.MaximumAngle = 90.0
+    warpByVector1Display.PolarAxes.RadialAxesOriginToPolarAxis = 1
+    warpByVector1Display.PolarAxes.Ratio = 1.0
+    warpByVector1Display.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.PolarAxisTitleVisibility = 1
+    warpByVector1Display.PolarAxes.PolarAxisTitle = 'Radial Distance'
+    warpByVector1Display.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+    warpByVector1Display.PolarAxes.PolarLabelVisibility = 1
+    warpByVector1Display.PolarAxes.PolarLabelFormat = '%-#6.3g'
+    warpByVector1Display.PolarAxes.PolarLabelExponentLocation = 'Labels'
+    warpByVector1Display.PolarAxes.RadialLabelVisibility = 1
+    warpByVector1Display.PolarAxes.RadialLabelFormat = '%-#3.1f'
+    warpByVector1Display.PolarAxes.RadialLabelLocation = 'Bottom'
+    warpByVector1Display.PolarAxes.RadialUnitsVisibility = 1
+    warpByVector1Display.PolarAxes.ScreenSize = 10.0
+    warpByVector1Display.PolarAxes.PolarAxisTitleOpacity = 1.0
+    warpByVector1Display.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+    warpByVector1Display.PolarAxes.PolarAxisTitleFontFile = ''
+    warpByVector1Display.PolarAxes.PolarAxisTitleBold = 0
+    warpByVector1Display.PolarAxes.PolarAxisTitleItalic = 0
+    warpByVector1Display.PolarAxes.PolarAxisTitleShadow = 0
+    warpByVector1Display.PolarAxes.PolarAxisTitleFontSize = 12
+    warpByVector1Display.PolarAxes.PolarAxisLabelOpacity = 1.0
+    warpByVector1Display.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+    warpByVector1Display.PolarAxes.PolarAxisLabelFontFile = ''
+    warpByVector1Display.PolarAxes.PolarAxisLabelBold = 0
+    warpByVector1Display.PolarAxes.PolarAxisLabelItalic = 0
+    warpByVector1Display.PolarAxes.PolarAxisLabelShadow = 0
+    warpByVector1Display.PolarAxes.PolarAxisLabelFontSize = 12
+    warpByVector1Display.PolarAxes.LastRadialAxisTextOpacity = 1.0
+    warpByVector1Display.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+    warpByVector1Display.PolarAxes.LastRadialAxisTextFontFile = ''
+    warpByVector1Display.PolarAxes.LastRadialAxisTextBold = 0
+    warpByVector1Display.PolarAxes.LastRadialAxisTextItalic = 0
+    warpByVector1Display.PolarAxes.LastRadialAxisTextShadow = 0
+    warpByVector1Display.PolarAxes.LastRadialAxisTextFontSize = 12
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextBold = 0
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextItalic = 0
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextShadow = 0
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+    warpByVector1Display.PolarAxes.EnableDistanceLOD = 1
+    warpByVector1Display.PolarAxes.DistanceLODThreshold = 0.7
+    warpByVector1Display.PolarAxes.EnableViewAngleLOD = 1
+    warpByVector1Display.PolarAxes.ViewAngleLODThreshold = 0.7
+    warpByVector1Display.PolarAxes.SmallestVisiblePolarAngle = 0.5
+    warpByVector1Display.PolarAxes.PolarTicksVisibility = 1
+    warpByVector1Display.PolarAxes.ArcTicksOriginToPolarAxis = 1
+    warpByVector1Display.PolarAxes.TickLocation = 'Both'
+    warpByVector1Display.PolarAxes.AxisTickVisibility = 1
+    warpByVector1Display.PolarAxes.AxisMinorTickVisibility = 0
+    warpByVector1Display.PolarAxes.ArcTickVisibility = 1
+    warpByVector1Display.PolarAxes.ArcMinorTickVisibility = 0
+    warpByVector1Display.PolarAxes.DeltaAngleMajor = 10.0
+    warpByVector1Display.PolarAxes.DeltaAngleMinor = 5.0
+    warpByVector1Display.PolarAxes.PolarAxisMajorTickSize = 0.0
+    warpByVector1Display.PolarAxes.PolarAxisTickRatioSize = 0.3
+    warpByVector1Display.PolarAxes.PolarAxisMajorTickThickness = 1.0
+    warpByVector1Display.PolarAxes.PolarAxisTickRatioThickness = 0.5
+    warpByVector1Display.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+    warpByVector1Display.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+    warpByVector1Display.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+    warpByVector1Display.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+    warpByVector1Display.PolarAxes.ArcMajorTickSize = 0.0
+    warpByVector1Display.PolarAxes.ArcTickRatioSize = 0.3
+    warpByVector1Display.PolarAxes.ArcMajorTickThickness = 1.0
+    warpByVector1Display.PolarAxes.ArcTickRatioThickness = 0.5
+    warpByVector1Display.PolarAxes.Use2DMode = 0
+    warpByVector1Display.PolarAxes.UseLogAxis = 0
+
+    # hide data in view
+    Hide(cylindrical_2variableBC_delta15_level3_NCvtu, renderView1)
+
+    # show color bar/color legend
+    warpByVector1Display.SetScalarBarVisibility(renderView1, True)
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+
+    # set scalar coloring
+    ColorBy(warpByVector1Display, ('POINTS', 'Displacement dune-VTK', 'Magnitude'))
+
+    # Hide the scalar bar for this color map if no visible data is colored by it.
+    HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+    # rescale color and/or opacity maps used to include current data range
+    warpByVector1Display.RescaleTransferFunctionToDataRange(True, False)
+
+    # show color bar/color legend
+    warpByVector1Display.SetScalarBarVisibility(renderView1, True)
+
+    # Apply a preset using its name. Note this may not work as expected when presets have duplicate names.
+    displacementduneVTKLUT.ApplyPreset('Greens', True)
+
+    # Rescale transfer function
+    displacementduneVTKLUT.RescaleTransferFunction(0.00013513808010835127, 1.3513808010835127)
+
+    # Rescale transfer function
+    displacementduneVTKPWF.RescaleTransferFunction(0.00013513808010835127, 1.3513808010835127)
+
+    # convert to log space
+    displacementduneVTKLUT.MapControlPointsToLogSpace()
+
+    # Properties modified on displacementduneVTKLUT
+    displacementduneVTKLUT.UseLogScale = 1
+
+    # hide color bar/color legend
+    warpByVector1Display.SetScalarBarVisibility(renderView1, False)
+
+    # reset view to fit data bounds
+    renderView1.ResetCamera(-1.0, 0.48625946044921875, -0.9997166991233826, 1.0002747774124146, -0.03165162727236748, 1.2042447328567505, True)
+
+    # Properties modified on renderView1
+    renderView1.OrientationAxesVisibility = 0
+
+    # Properties modified on warpByVector1Display
+    warpByVector1Display.Specular = 0.0
+
+    # Properties modified on warpByVector1Display
+    warpByVector1Display.Interpolation = 'Flat'
+
+    # set active source
+    SetActiveSource(cylindrical_2variableBC_delta15_level3_NCvtu)
+
+    # Properties modified on cylindrical_2variableBC_delta15_level3_NCvtuDisplay
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Specular = 0.0
+
+    # set active source
+    SetActiveSource(warpByVector1)
+
+    # Properties modified on warpByVector1Display
+    warpByVector1Display.Ambient = 0.2
+
+    # Properties modified on warpByVector1Display
+    warpByVector1Display.NonlinearSubdivisionLevel = 4
+
+    if AddGlyph:
+        # create a new 'Glyph'
+        glyph1 = Glyph(registrationName='Glyph1', Input=warpByVector1,
+            GlyphType='Arrow')
+        glyph1.OrientationArray = ['POINTS', 'Displacement dune-VTK']
+        glyph1.ScaleArray = ['POINTS', 'IsometryErrorFunction']
+        glyph1.VectorScaleMode = 'Scale by Magnitude'
+        glyph1.ScaleFactor = 0.19999914765357973
+        glyph1.GlyphTransform = 'Transform2'
+        glyph1.GlyphMode = 'Uniform Spatial Distribution (Bounds Based)'
+        glyph1.MaximumNumberOfSamplePoints = 5000
+        glyph1.Seed = 10339
+        glyph1.Stride = 1
+
+        # init the 'Arrow' selected for 'GlyphType'
+        glyph1.GlyphType.TipResolution = 30
+        glyph1.GlyphType.TipRadius = 0.075
+        glyph1.GlyphType.TipLength = 0.35
+        glyph1.GlyphType.ShaftResolution = 30
+        glyph1.GlyphType.ShaftRadius = 0.015
+        glyph1.GlyphType.Invert = 0
+
+        # init the 'Transform2' selected for 'GlyphTransform'
+        glyph1.GlyphTransform.Translate = [0.0, 0.0, 0.0]
+        glyph1.GlyphTransform.Rotate = [0.0, 0.0, 0.0]
+        glyph1.GlyphTransform.Scale = [1.0, 1.0, 1.0]
+
+        # Properties modified on glyph1
+        glyph1.OrientationArray = ['POINTS', 'SurfaceNormalDiscrete']
+        glyph1.ScaleArray = ['POINTS', 'No scale array']
+        # glyph1.ScaleFactor = 0.1
+        glyph1.ScaleFactor = 0.15
+        glyph1.GlyphMode = 'Every Nth Point'
+        glyph1.Stride = 35
+
+        # show data in view
+        glyph1Display = Show(glyph1, renderView1, 'GeometryRepresentation')
+
+        # trace defaults for the display properties.
+        glyph1Display.Selection = None
+        glyph1Display.Representation = 'Surface'
+        glyph1Display.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+        glyph1Display.LookupTable = isometryErrorFunctionLUT
+        glyph1Display.MapScalars = 1
+        glyph1Display.MultiComponentsMapping = 0
+        glyph1Display.InterpolateScalarsBeforeMapping = 1
+        glyph1Display.Opacity = 1.0
+        glyph1Display.PointSize = 2.0
+        glyph1Display.LineWidth = 1.0
+        glyph1Display.RenderLinesAsTubes = 0
+        glyph1Display.RenderPointsAsSpheres = 0
+        glyph1Display.Interpolation = 'Gouraud'
+        glyph1Display.Specular = 0.0
+        glyph1Display.SpecularColor = [1.0, 1.0, 1.0]
+        glyph1Display.SpecularPower = 100.0
+        glyph1Display.Luminosity = 0.0
+        glyph1Display.Ambient = 0.0
+        glyph1Display.Diffuse = 1.0
+        glyph1Display.Roughness = 0.3
+        glyph1Display.Metallic = 0.0
+        glyph1Display.EdgeTint = [1.0, 1.0, 1.0]
+        glyph1Display.Anisotropy = 0.0
+        glyph1Display.AnisotropyRotation = 0.0
+        glyph1Display.BaseIOR = 1.5
+        glyph1Display.CoatStrength = 0.0
+        glyph1Display.CoatIOR = 2.0
+        glyph1Display.CoatRoughness = 0.0
+        glyph1Display.CoatColor = [1.0, 1.0, 1.0]
+        glyph1Display.SelectTCoordArray = 'None'
+        glyph1Display.SelectNormalArray = 'None'
+        glyph1Display.SelectTangentArray = 'None'
+        glyph1Display.Texture = None
+        glyph1Display.RepeatTextures = 1
+        glyph1Display.InterpolateTextures = 0
+        glyph1Display.SeamlessU = 0
+        glyph1Display.SeamlessV = 0
+        glyph1Display.UseMipmapTextures = 0
+        glyph1Display.ShowTexturesOnBackface = 1
+        glyph1Display.BaseColorTexture = None
+        glyph1Display.NormalTexture = None
+        glyph1Display.NormalScale = 1.0
+        glyph1Display.CoatNormalTexture = None
+        glyph1Display.CoatNormalScale = 1.0
+        glyph1Display.MaterialTexture = None
+        glyph1Display.OcclusionStrength = 1.0
+        glyph1Display.AnisotropyTexture = None
+        glyph1Display.EmissiveTexture = None
+        glyph1Display.EmissiveFactor = [1.0, 1.0, 1.0]
+        glyph1Display.FlipTextures = 0
+        glyph1Display.BackfaceRepresentation = 'Follow Frontface'
+        glyph1Display.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+        glyph1Display.BackfaceOpacity = 1.0
+        glyph1Display.Position = [0.0, 0.0, 0.0]
+        glyph1Display.Scale = [1.0, 1.0, 1.0]
+        glyph1Display.Orientation = [0.0, 0.0, 0.0]
+        glyph1Display.Origin = [0.0, 0.0, 0.0]
+        glyph1Display.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+        glyph1Display.Pickable = 1
+        glyph1Display.Triangulate = 0
+        glyph1Display.UseShaderReplacements = 0
+        glyph1Display.ShaderReplacements = ''
+        glyph1Display.NonlinearSubdivisionLevel = 1
+        glyph1Display.UseDataPartitions = 0
+        glyph1Display.OSPRayUseScaleArray = 'All Approximate'
+        glyph1Display.OSPRayScaleArray = 'IsometryErrorFunction'
+        glyph1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+        glyph1Display.OSPRayMaterial = 'None'
+        glyph1Display.BlockSelectors = ['/']
+        glyph1Display.BlockColors = []
+        glyph1Display.BlockOpacities = []
+        glyph1Display.Orient = 0
+        glyph1Display.OrientationMode = 'Direction'
+        glyph1Display.SelectOrientationVectors = 'Displacement dune-VTK'
+        glyph1Display.Scaling = 0
+        glyph1Display.ScaleMode = 'No Data Scaling Off'
+        glyph1Display.ScaleFactor = 0.205192768573761
+        glyph1Display.SelectScaleArray = 'IsometryErrorFunction'
+        glyph1Display.GlyphType = 'Arrow'
+        glyph1Display.UseGlyphTable = 0
+        glyph1Display.GlyphTableIndexArray = 'IsometryErrorFunction'
+        glyph1Display.UseCompositeGlyphTable = 0
+        glyph1Display.UseGlyphCullingAndLOD = 0
+        glyph1Display.LODValues = []
+        glyph1Display.ColorByLODIndex = 0
+        glyph1Display.GaussianRadius = 0.01025963842868805
+        glyph1Display.ShaderPreset = 'Sphere'
+        glyph1Display.CustomTriangleScale = 3
+        glyph1Display.CustomShader = """ // This custom shader code define a gaussian blur
+        // Please take a look into vtkSMPointGaussianRepresentation.cxx
+        // for other custom shader examples
+        //VTK::Color::Impl
+        float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+        float gaussian = exp(-0.5*dist2);
+        opacity = opacity*gaussian;
+        """
+        glyph1Display.Emissive = 0
+        glyph1Display.ScaleByArray = 0
+        glyph1Display.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+        glyph1Display.ScaleArrayComponent = ''
+        glyph1Display.UseScaleFunction = 1
+        glyph1Display.ScaleTransferFunction = 'PiecewiseFunction'
+        glyph1Display.OpacityByArray = 0
+        glyph1Display.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+        glyph1Display.OpacityArrayComponent = ''
+        glyph1Display.OpacityTransferFunction = 'PiecewiseFunction'
+        glyph1Display.DataAxesGrid = 'GridAxesRepresentation'
+        glyph1Display.SelectionCellLabelBold = 0
+        glyph1Display.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+        glyph1Display.SelectionCellLabelFontFamily = 'Arial'
+        glyph1Display.SelectionCellLabelFontFile = ''
+        glyph1Display.SelectionCellLabelFontSize = 18
+        glyph1Display.SelectionCellLabelItalic = 0
+        glyph1Display.SelectionCellLabelJustification = 'Left'
+        glyph1Display.SelectionCellLabelOpacity = 1.0
+        glyph1Display.SelectionCellLabelShadow = 0
+        glyph1Display.SelectionPointLabelBold = 0
+        glyph1Display.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+        glyph1Display.SelectionPointLabelFontFamily = 'Arial'
+        glyph1Display.SelectionPointLabelFontFile = ''
+        glyph1Display.SelectionPointLabelFontSize = 18
+        glyph1Display.SelectionPointLabelItalic = 0
+        glyph1Display.SelectionPointLabelJustification = 'Left'
+        glyph1Display.SelectionPointLabelOpacity = 1.0
+        glyph1Display.SelectionPointLabelShadow = 0
+        glyph1Display.PolarAxes = 'PolarAxesRepresentation'
+        glyph1Display.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+        glyph1Display.NumberOfSteps = 40
+        glyph1Display.StepSize = 0.25
+        glyph1Display.NormalizeVectors = 1
+        glyph1Display.EnhancedLIC = 1
+        glyph1Display.ColorMode = 'Blend'
+        glyph1Display.LICIntensity = 0.8
+        glyph1Display.MapModeBias = 0.0
+        glyph1Display.EnhanceContrast = 'Off'
+        glyph1Display.LowLICContrastEnhancementFactor = 0.0
+        glyph1Display.HighLICContrastEnhancementFactor = 0.0
+        glyph1Display.LowColorContrastEnhancementFactor = 0.0
+        glyph1Display.HighColorContrastEnhancementFactor = 0.0
+        glyph1Display.AntiAlias = 0
+        glyph1Display.MaskOnSurface = 1
+        glyph1Display.MaskThreshold = 0.0
+        glyph1Display.MaskIntensity = 0.0
+        glyph1Display.MaskColor = [0.5, 0.5, 0.5]
+        glyph1Display.GenerateNoiseTexture = 0
+        glyph1Display.NoiseType = 'Gaussian'
+        glyph1Display.NoiseTextureSize = 128
+        glyph1Display.NoiseGrainSize = 2
+        glyph1Display.MinNoiseValue = 0.0
+        glyph1Display.MaxNoiseValue = 0.8
+        glyph1Display.NumberOfNoiseLevels = 1024
+        glyph1Display.ImpulseNoiseProbability = 1.0
+        glyph1Display.ImpulseNoiseBackgroundValue = 0.0
+        glyph1Display.NoiseGeneratorSeed = 1
+        glyph1Display.CompositeStrategy = 'AUTO'
+        glyph1Display.UseLICForLOD = 0
+        glyph1Display.WriteLog = ''
+
+        # init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+        glyph1Display.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+        glyph1Display.OSPRayScaleFunction.UseLogScale = 0
+
+        # init the 'Arrow' selected for 'GlyphType'
+        glyph1Display.GlyphType.TipResolution = 30
+        glyph1Display.GlyphType.TipRadius = 0.075
+        glyph1Display.GlyphType.TipLength = 0.35
+        glyph1Display.GlyphType.ShaftResolution = 30
+        glyph1Display.GlyphType.ShaftRadius = 0.015
+        glyph1Display.GlyphType.Invert = 0
+
+        # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+        glyph1Display.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.0557803250849247, 1.0, 0.5, 0.0]
+        glyph1Display.ScaleTransferFunction.UseLogScale = 0
+
+        # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+        glyph1Display.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.0557803250849247, 1.0, 0.5, 0.0]
+        glyph1Display.OpacityTransferFunction.UseLogScale = 0
+
+        # init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+        glyph1Display.DataAxesGrid.XTitle = 'X Axis'
+        glyph1Display.DataAxesGrid.YTitle = 'Y Axis'
+        glyph1Display.DataAxesGrid.ZTitle = 'Z Axis'
+        glyph1Display.DataAxesGrid.XTitleFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.XTitleFontFile = ''
+        glyph1Display.DataAxesGrid.XTitleBold = 0
+        glyph1Display.DataAxesGrid.XTitleItalic = 0
+        glyph1Display.DataAxesGrid.XTitleFontSize = 12
+        glyph1Display.DataAxesGrid.XTitleShadow = 0
+        glyph1Display.DataAxesGrid.XTitleOpacity = 1.0
+        glyph1Display.DataAxesGrid.YTitleFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.YTitleFontFile = ''
+        glyph1Display.DataAxesGrid.YTitleBold = 0
+        glyph1Display.DataAxesGrid.YTitleItalic = 0
+        glyph1Display.DataAxesGrid.YTitleFontSize = 12
+        glyph1Display.DataAxesGrid.YTitleShadow = 0
+        glyph1Display.DataAxesGrid.YTitleOpacity = 1.0
+        glyph1Display.DataAxesGrid.ZTitleFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.ZTitleFontFile = ''
+        glyph1Display.DataAxesGrid.ZTitleBold = 0
+        glyph1Display.DataAxesGrid.ZTitleItalic = 0
+        glyph1Display.DataAxesGrid.ZTitleFontSize = 12
+        glyph1Display.DataAxesGrid.ZTitleShadow = 0
+        glyph1Display.DataAxesGrid.ZTitleOpacity = 1.0
+        glyph1Display.DataAxesGrid.FacesToRender = 63
+        glyph1Display.DataAxesGrid.CullBackface = 0
+        glyph1Display.DataAxesGrid.CullFrontface = 1
+        glyph1Display.DataAxesGrid.ShowGrid = 0
+        glyph1Display.DataAxesGrid.ShowEdges = 1
+        glyph1Display.DataAxesGrid.ShowTicks = 1
+        glyph1Display.DataAxesGrid.LabelUniqueEdgesOnly = 1
+        glyph1Display.DataAxesGrid.AxesToLabel = 63
+        glyph1Display.DataAxesGrid.XLabelFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.XLabelFontFile = ''
+        glyph1Display.DataAxesGrid.XLabelBold = 0
+        glyph1Display.DataAxesGrid.XLabelItalic = 0
+        glyph1Display.DataAxesGrid.XLabelFontSize = 12
+        glyph1Display.DataAxesGrid.XLabelShadow = 0
+        glyph1Display.DataAxesGrid.XLabelOpacity = 1.0
+        glyph1Display.DataAxesGrid.YLabelFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.YLabelFontFile = ''
+        glyph1Display.DataAxesGrid.YLabelBold = 0
+        glyph1Display.DataAxesGrid.YLabelItalic = 0
+        glyph1Display.DataAxesGrid.YLabelFontSize = 12
+        glyph1Display.DataAxesGrid.YLabelShadow = 0
+        glyph1Display.DataAxesGrid.YLabelOpacity = 1.0
+        glyph1Display.DataAxesGrid.ZLabelFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.ZLabelFontFile = ''
+        glyph1Display.DataAxesGrid.ZLabelBold = 0
+        glyph1Display.DataAxesGrid.ZLabelItalic = 0
+        glyph1Display.DataAxesGrid.ZLabelFontSize = 12
+        glyph1Display.DataAxesGrid.ZLabelShadow = 0
+        glyph1Display.DataAxesGrid.ZLabelOpacity = 1.0
+        glyph1Display.DataAxesGrid.XAxisNotation = 'Mixed'
+        glyph1Display.DataAxesGrid.XAxisPrecision = 2
+        glyph1Display.DataAxesGrid.XAxisUseCustomLabels = 0
+        glyph1Display.DataAxesGrid.XAxisLabels = []
+        glyph1Display.DataAxesGrid.YAxisNotation = 'Mixed'
+        glyph1Display.DataAxesGrid.YAxisPrecision = 2
+        glyph1Display.DataAxesGrid.YAxisUseCustomLabels = 0
+        glyph1Display.DataAxesGrid.YAxisLabels = []
+        glyph1Display.DataAxesGrid.ZAxisNotation = 'Mixed'
+        glyph1Display.DataAxesGrid.ZAxisPrecision = 2
+        glyph1Display.DataAxesGrid.ZAxisUseCustomLabels = 0
+        glyph1Display.DataAxesGrid.ZAxisLabels = []
+        glyph1Display.DataAxesGrid.UseCustomBounds = 0
+        glyph1Display.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+        # init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+        glyph1Display.PolarAxes.Visibility = 0
+        glyph1Display.PolarAxes.Translation = [0.0, 0.0, 0.0]
+        glyph1Display.PolarAxes.Scale = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+        glyph1Display.PolarAxes.EnableCustomBounds = [0, 0, 0]
+        glyph1Display.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+        glyph1Display.PolarAxes.EnableCustomRange = 0
+        glyph1Display.PolarAxes.CustomRange = [0.0, 1.0]
+        glyph1Display.PolarAxes.PolarAxisVisibility = 1
+        glyph1Display.PolarAxes.RadialAxesVisibility = 1
+        glyph1Display.PolarAxes.DrawRadialGridlines = 1
+        glyph1Display.PolarAxes.PolarArcsVisibility = 1
+        glyph1Display.PolarAxes.DrawPolarArcsGridlines = 1
+        glyph1Display.PolarAxes.NumberOfRadialAxes = 0
+        glyph1Display.PolarAxes.AutoSubdividePolarAxis = 1
+        glyph1Display.PolarAxes.NumberOfPolarAxis = 0
+        glyph1Display.PolarAxes.MinimumRadius = 0.0
+        glyph1Display.PolarAxes.MinimumAngle = 0.0
+        glyph1Display.PolarAxes.MaximumAngle = 90.0
+        glyph1Display.PolarAxes.RadialAxesOriginToPolarAxis = 1
+        glyph1Display.PolarAxes.Ratio = 1.0
+        glyph1Display.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.PolarAxisTitleVisibility = 1
+        glyph1Display.PolarAxes.PolarAxisTitle = 'Radial Distance'
+        glyph1Display.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+        glyph1Display.PolarAxes.PolarLabelVisibility = 1
+        glyph1Display.PolarAxes.PolarLabelFormat = '%-#6.3g'
+        glyph1Display.PolarAxes.PolarLabelExponentLocation = 'Labels'
+        glyph1Display.PolarAxes.RadialLabelVisibility = 1
+        glyph1Display.PolarAxes.RadialLabelFormat = '%-#3.1f'
+        glyph1Display.PolarAxes.RadialLabelLocation = 'Bottom'
+        glyph1Display.PolarAxes.RadialUnitsVisibility = 1
+        glyph1Display.PolarAxes.ScreenSize = 10.0
+        glyph1Display.PolarAxes.PolarAxisTitleOpacity = 1.0
+        glyph1Display.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+        glyph1Display.PolarAxes.PolarAxisTitleFontFile = ''
+        glyph1Display.PolarAxes.PolarAxisTitleBold = 0
+        glyph1Display.PolarAxes.PolarAxisTitleItalic = 0
+        glyph1Display.PolarAxes.PolarAxisTitleShadow = 0
+        glyph1Display.PolarAxes.PolarAxisTitleFontSize = 12
+        glyph1Display.PolarAxes.PolarAxisLabelOpacity = 1.0
+        glyph1Display.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+        glyph1Display.PolarAxes.PolarAxisLabelFontFile = ''
+        glyph1Display.PolarAxes.PolarAxisLabelBold = 0
+        glyph1Display.PolarAxes.PolarAxisLabelItalic = 0
+        glyph1Display.PolarAxes.PolarAxisLabelShadow = 0
+        glyph1Display.PolarAxes.PolarAxisLabelFontSize = 12
+        glyph1Display.PolarAxes.LastRadialAxisTextOpacity = 1.0
+        glyph1Display.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+        glyph1Display.PolarAxes.LastRadialAxisTextFontFile = ''
+        glyph1Display.PolarAxes.LastRadialAxisTextBold = 0
+        glyph1Display.PolarAxes.LastRadialAxisTextItalic = 0
+        glyph1Display.PolarAxes.LastRadialAxisTextShadow = 0
+        glyph1Display.PolarAxes.LastRadialAxisTextFontSize = 12
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextBold = 0
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextItalic = 0
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextShadow = 0
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+        glyph1Display.PolarAxes.EnableDistanceLOD = 1
+        glyph1Display.PolarAxes.DistanceLODThreshold = 0.7
+        glyph1Display.PolarAxes.EnableViewAngleLOD = 1
+        glyph1Display.PolarAxes.ViewAngleLODThreshold = 0.7
+        glyph1Display.PolarAxes.SmallestVisiblePolarAngle = 0.5
+        glyph1Display.PolarAxes.PolarTicksVisibility = 1
+        glyph1Display.PolarAxes.ArcTicksOriginToPolarAxis = 1
+        glyph1Display.PolarAxes.TickLocation = 'Both'
+        glyph1Display.PolarAxes.AxisTickVisibility = 1
+        glyph1Display.PolarAxes.AxisMinorTickVisibility = 0
+        glyph1Display.PolarAxes.ArcTickVisibility = 1
+        glyph1Display.PolarAxes.ArcMinorTickVisibility = 0
+        glyph1Display.PolarAxes.DeltaAngleMajor = 10.0
+        glyph1Display.PolarAxes.DeltaAngleMinor = 5.0
+        glyph1Display.PolarAxes.PolarAxisMajorTickSize = 0.0
+        glyph1Display.PolarAxes.PolarAxisTickRatioSize = 0.3
+        glyph1Display.PolarAxes.PolarAxisMajorTickThickness = 1.0
+        glyph1Display.PolarAxes.PolarAxisTickRatioThickness = 0.5
+        glyph1Display.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+        glyph1Display.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+        glyph1Display.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+        glyph1Display.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+        glyph1Display.PolarAxes.ArcMajorTickSize = 0.0
+        glyph1Display.PolarAxes.ArcTickRatioSize = 0.3
+        glyph1Display.PolarAxes.ArcMajorTickThickness = 1.0
+        glyph1Display.PolarAxes.ArcTickRatioThickness = 0.5
+        glyph1Display.PolarAxes.Use2DMode = 0
+        glyph1Display.PolarAxes.UseLogAxis = 0
+
+        # show color bar/color legend
+        glyph1Display.SetScalarBarVisibility(renderView1, True)
+
+        # update the view to ensure updated data information
+        renderView1.Update()
+
+        # Rescale transfer function
+        displacementduneVTKLUT.RescaleTransferFunction(0.0, 1.3513808010835129)
+
+        # Rescale transfer function
+        displacementduneVTKPWF.RescaleTransferFunction(0.0, 1.3513808010835127)
+
+        # Properties modified on glyph1
+        glyph1.Stride = 25
+
+        # update the view to ensure updated data information
+        renderView1.Update()
+
+        # Rescale transfer function
+        displacementduneVTKLUT.RescaleTransferFunction(0.0, 1.3513808010835129)
+
+        # Properties modified on glyph1
+        glyph1.Stride = 30
+
+        # update the view to ensure updated data information
+        renderView1.Update()
+
+        # Rescale transfer function
+        displacementduneVTKLUT.RescaleTransferFunction(0.0, 1.3513808010835129)
+
+        # Properties modified on glyph1
+        glyph1.Stride = 40
+
+        # update the view to ensure updated data information
+        renderView1.Update()
+
+        # Rescale transfer function
+        displacementduneVTKLUT.RescaleTransferFunction(0.0, 1.3513808010835129)
+
+        # turn off scalar coloring
+        ColorBy(glyph1Display, None)
+
+        # Hide the scalar bar for this color map if no visible data is colored by it.
+        HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+        # change solid color (Black)
+        # glyph1Display.AmbientColor = [0.0, 0.0, 0.0]
+        # glyph1Display.DiffuseColor = [0.0, 0.0, 0.0]
+
+        # change solid color    (DarkBlue)
+        glyph1Display.AmbientColor = [0.0, 0.3333333333333333, 0.4980392156862745]
+        glyph1Display.DiffuseColor = [0.0, 0.3333333333333333, 0.4980392156862745]
+
+        # Properties modified on glyph1Display
+        glyph1Display.Opacity = 0.25
+
+        # Properties modified on glyph1Display
+        glyph1Display.Specular = 1.0
+
+        # Properties modified on glyph1Display
+        glyph1Display.Specular = 0.0
+
+        # Properties modified on glyph1Display
+        glyph1Display.Ambient = 0.2
+
+    #================================================================
+    # addendum: following script captures some of the application
+    # state to faithfully reproduce the visualization during playback
+    #================================================================
+
+    # get layout
+    layout1 = GetLayout()
+
+    print('layout1:',layout1)
+
+    #--------------------------------
+    # saving layout sizes for layouts
+
+    # layout/tab size in pixels
+    layout1.SetSize(1526, 873)
+
+    #-----------------------------------
+    # saving camera placements for views
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.5317894883522003, -7.950546149218976, 1.8355840818083122]
+    renderView1.CameraFocalPoint = [-0.3373855559365908, -2.646797497088115, 0.9959448222039734]
+    renderView1.CameraViewUp = [-0.0628645081836353, 0.15830147075535642, 0.9853875876869572]
+    renderView1.CameraViewAngle = 25.620465826651394
+    renderView1.CameraParallelScale = 1.3907168028548302
+
+
+
+    #Camera View:
+    # # get active view
+    # renderView1 = GetActiveViewOrCreate('RenderView')
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # # reset view to fit data bounds
+    # renderView1.ResetCamera(-1.0, 1.0257619619369507, -0.9359287619590759, 0.9359057545661926, -0.32227325439453125, 0.3284286856651306, True)
+
+    # # reset view to fit data bounds
+    # renderView1.ResetCamera(-1.0, 1.0257619619369507, -0.9359287619590759, 0.9359057545661926, -0.32227325439453125, 0.3284286856651306, False)
+
+    # # reset view to fit data bounds
+    # renderView1.ResetCamera(-1.0, 1.0257619619369507, -0.9359287619590759, 0.9359057545661926, -0.32227325439453125, 0.3284286856651306, False)
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # #================================================================
+    # # addendum: following script captures some of the application
+    # # state to faithfully reproduce the visualization during playback
+    # #================================================================
+
+    # # get layout
+    # layout1 = GetLayout()
+
+    # #--------------------------------
+    # # saving layout sizes for layouts
+
+    # # layout/tab size in pixels
+    # layout1.SetSize(1526, 873)
+
+    # #-----------------------------------
+    # # saving camera placements for views
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [-0.018803465136511217, -6.344229746084431, 0.8643549211317467]
+    # renderView1.CameraFocalPoint = [-0.012119019404053688, -0.0020669102668762207, 0.4409867525100708]
+    # renderView1.CameraViewUp = [-0.03973953847604448, 0.06659538567372057, 0.9969883769075141]
+    # renderView1.CameraViewAngle = 20.04581901489118
+    # renderView1.CameraParallelScale = 1.645126712646716
+
+
+    # # get active view
+    # renderView1 = GetActiveViewOrCreate('RenderView')
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.6190132298381256, -5.978102214366906, 2.4112112938696906]
+    # renderView1.CameraFocalPoint = [-0.012119019404053688, -2.568960189819349e-05, 0.45254665613174444]
+    # renderView1.CameraViewUp = [-0.05404025977722483, 0.305743653322491, 0.9505790176393684]
+    # renderView1.CameraViewAngle = 24.32226040473463
+    # renderView1.CameraParallelScale = 1.6363442723895476
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.3561670752092, -6.043235495365254, 2.2735558848687107]
+    # renderView1.CameraFocalPoint = [-0.012119019404053686, -2.568960189819236e-05, 0.4525466561317445]
+    # renderView1.CameraViewUp = [-0.05311946210744569, 0.28514078064511844, 0.9570125693837611]
+    # renderView1.CameraViewAngle = 24.32226040473463
+    # renderView1.CameraParallelScale = 1.6363442723895476
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.013021130832849942, -5.989702202981394, 2.4762159109807733]
+    # renderView1.CameraFocalPoint = [-0.01211901940405369, -2.5689601898192394e-05, 0.4525466561317443]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 24.32226040473463
+    # renderView1.CameraParallelScale = 1.6363442723895476
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.018300562382599708, -7.247534270791088, 2.9011864544990695]
+    # renderView1.CameraFocalPoint = [-0.01211901940405369, -2.5689601898192394e-05, 0.4525466561317443]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 24.32226040473463
+    # renderView1.CameraParallelScale = 1.6363442723895476
+
+    # # reset view to fit data bounds
+    # renderView1.ResetCamera(-1.0, 1.0257619619369507, -0.9359287619590759, 0.9359057545661926, -0.32227325439453125, 0.3284286856651306, True)
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.03465030801593522, -5.186584602883577, 1.7554108333598906]
+    # renderView1.CameraFocalPoint = [0.012880980968475342, -1.150369644165039e-05, 0.0030777156352996826]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 17.52577319587629
+    # renderView1.CameraParallelScale = 1.416941159547869
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.013021130832849927, -5.98970220298139, 2.4762159109807724]
+    # renderView1.CameraFocalPoint = [-0.012119019404053688, -2.568960189819336e-05, 0.4525466561317444]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 24.4749904543719
+    # renderView1.CameraParallelScale = 1.6363442723895476
+
+    # #================================================================
+    # # addendum: following script captures some of the application
+    # # state to faithfully reproduce the visualization during playback
+    # #================================================================
+
+    # # get layout
+    # layout1 = GetLayout()
+
+    # #--------------------------------
+    # # saving layout sizes for layouts
+
+    # # layout/tab size in pixels
+    # layout1.SetSize(2634, 873)
+
+    # #-----------------------------------
+    # # saving camera placements for views
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.013021130832849927, -5.98970220298139, 2.4762159109807724]
+    # renderView1.CameraFocalPoint = [-0.012119019404053688, -2.568960189819336e-05, 0.4525466561317444]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 24.4749904543719
+    # renderView1.CameraParallelScale = 1.6363442723895476
+
+
+    # CAMERA ANGLE : 
+    # get active view
+    renderView1 = GetActiveViewOrCreate('RenderView')
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.340685566276368, -6.094047325708376, 2.353324867421649]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975586, 0.46127742528915405]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.340685566276368, -6.094047325708376, 2.353324867421649]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975586, 0.46127742528915405]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.340685566276368, -6.094047325708376, 2.353324867421649]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975586, 0.46127742528915405]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    #================================================================
+    # addendum: following script captures some of the application
+    # state to faithfully reproduce the visualization during playback
+    #================================================================
+
+    # get layout
+    layout1 = GetLayout()
+
+    #--------------------------------
+    # saving layout sizes for layouts
+
+    # layout/tab size in pixels
+    layout1.SetSize(2634, 873)
+
+    #-----------------------------------
+    # saving camera placements for views
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    #-----------------------------------------
+
+
+    # NEW CAMERA ANGLE 
+    # get active view
+    renderView1 = GetActiveViewOrCreate('RenderView')
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [0.029912744310289893, -5.070841782883837, 2.2549998815448675]
+    renderView1.CameraFocalPoint = [-0.01429512538015842, -0.00023770332336425738, 0.013518139719963074]
+    renderView1.CameraViewUp = [-0.00012445946588129702, 0.4043111685224597, 0.9146214864728713]
+    renderView1.CameraViewAngle = 15.234822451317298
+    renderView1.CameraParallelScale = 1.434922768089897
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [0.13564184339304414, -5.002529762527205, 2.399270332667408]
+    renderView1.CameraFocalPoint = [-0.01429512538015842, -0.00023770332336425751, 0.013518139719963072]
+    renderView1.CameraViewUp = [-0.00025096931135483794, 0.4304728027354104, 0.9026035137974622]
+    renderView1.CameraViewAngle = 15.234822451317298
+    renderView1.CameraParallelScale = 1.434922768089897
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [0.1351322919568179, -4.837566763896823, 2.718169591018591]
+    renderView1.CameraFocalPoint = [-0.014295125380158416, -0.00023770332336425754, 0.013518139719963074]
+    renderView1.CameraViewUp = [-0.0025668859947288896, 0.4879570721064113, 0.8728638535749024]
+    renderView1.CameraViewAngle = 15.234822451317298
+    renderView1.CameraParallelScale = 1.434922768089897
+
+    #================================================================
+    # addendum: following script captures some of the application
+    # state to faithfully reproduce the visualization during playback
+    #================================================================
+
+    # get layout
+    layout1 = GetLayout()
+
+    #--------------------------------
+    # saving layout sizes for layouts
+
+    # layout/tab size in pixels
+    layout1.SetSize(2634, 873)
+
+    #-----------------------------------
+    # saving camera placements for views
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [0.1351322919568179, -4.837566763896823, 2.718169591018591]
+    renderView1.CameraFocalPoint = [-0.014295125380158416, -0.00023770332336425754, 0.013518139719963074]
+    renderView1.CameraViewUp = [-0.0025668859947288896, 0.4879570721064113, 0.8728638535749024]
+    renderView1.CameraViewAngle = 15.234822451317298
+    renderView1.CameraParallelScale = 1.434922768089897
+    ###
+
+
+
+
+
+
+    #TEST:Set Size in Pixels:
+    # layout/tab size in pixels
+    layout1.SetSize(750, 620)
+
+
+
+
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+
+
+    # Write to pdf
+    # ExportView(outputName + '.pdf', view=renderView1)
+
+    # export view
+    ExportView(outputName + '.pdf', view=renderView1, Plottitle='ParaView GL2PS Export',
+        Compressoutputfile=0,
+        Drawbackground=1,
+        Cullhiddenprimitives=1,
+        Linewidthscalingfactor=0.714,
+        Pointsizescalingfactor=0.714,
+        GL2PSdepthsortmethod='Simple sorting (fast, good)',
+        Rasterize3Dgeometry=1,
+        Dontrasterizecubeaxes=1,
+        Rendertextaspaths=1)
+
+#================================================================
+# addendum: following script captures some of the application
+# state to faithfully reproduce the visualization during playback
+#================================================================
+
+    # get layout
+    layout1 = GetLayout()
+
+    #--------------------------------
+    # saving layout sizes for layouts
+
+    # layout/tab size in pixels
+    layout1.SetSize(750, 620)
+
+
+
+    # # get active view
+    # renderView1 = GetActiveViewOrCreate('RenderView')
+
+    # # get layout
+    # layout1 = GetLayout()
+
+    # # layout/tab size in pixels
+    # layout1.SetSize(2922, 908)
+
+    # # current camera placement for renderView1
+    # renderView1.InteractionMode = '2D'
+    # renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+    # renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+    # renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+    # renderView1.CameraParallelScale = 1.3953474628479614
+
+    # save screenshot
+    SaveScreenshot(outputName + '.png', renderView1, ImageResolution=[1500, 1240],
+        FontScaling='Scale fonts proportionally',
+        OverrideColorPalette='WhiteBackground',
+        StereoMode='No change',
+        TransparentBackground=0, 
+        # PNG options
+        CompressionLevel='5',
+        MetaData=['Application', 'ParaView'])
+
+    #         # save screenshot
+    # SaveScreenshot(outputName + '.png', renderView1, ImageResolution=[5844, 1816],
+    #     FontScaling='Scale fonts proportionally',
+    #     OverrideColorPalette='WhiteBackground',
+    #     StereoMode='No change',
+    #     TransparentBackground=0, 
+    #     # PNG options
+    #     CompressionLevel='5',
+    #     MetaData=['Application', 'ParaView'])
diff --git a/experiment/macro-problem/variableBC/ParaviewVariableBC_birdsview.py b/experiment/macro-problem/variableBC/ParaviewVariableBC_birdsview.py
new file mode 100644
index 0000000000000000000000000000000000000000..5b946e7eb24bfec24eeccd6f3967dcda7dc03b01
--- /dev/null
+++ b/experiment/macro-problem/variableBC/ParaviewVariableBC_birdsview.py
@@ -0,0 +1,2384 @@
+#### import the simple module from the paraview
+from paraview.simple import *
+# from paraview import *
+#### disable automatic camera reset on 'Show'
+paraview.simple._DisableFirstRenderCameraReset()
+
+
+gridLevel = 3
+
+AddGlyph = True
+AddGlyph = False
+
+#Boundary length segment parameter
+deltaArray = [0.25,0.5,1.0,1.5,2.0]
+deltaArray = [0.5]
+
+
+
+for i in range(0, len(deltaArray)):
+    # Reset/Reopen Session.
+    Disconnect()
+    Connect()
+    ResetSession()
+    
+
+
+    delta = deltaArray[i]
+
+    """"
+        remove decimal points for string
+    """
+    # deltaString = str(delta);
+    deltaString  = (str(delta)).replace('.', '')
+
+    print('deltaString:', deltaString)
+
+
+    basePath = '/home/klaus/Desktop/Dune_TestTest/dune-microstructure/outputs_cylindrical_2variableBC/'
+    experimentName = 'cylindrical_2variableBC_delta' + deltaString + '_level'+ str(gridLevel) + '_NC.vtu' 
+    fileName = basePath + experimentName
+    print('fileName:', fileName)
+    # fileName = ['/home/klaus/Desktop/Dune_TestTest/dune-microstructure/outputs_cylindrical_2variableBC/cylindrical_2variableBC_delta01_level3_NC.vtu']
+
+    outputPath = '/home/klaus/Desktop/'
+    outputName = outputPath +  'VariableBC_delta' + deltaString + '_birdsview'
+
+    if AddGlyph:
+        outputName = outputName + '_normalfield'
+
+
+    #----------------------- Create Box to visualize boundary conditions:
+    # create a new 'Box'
+    box1 = Box(registrationName='Box1')
+
+    # get active view
+    renderView1 = GetActiveViewOrCreate('RenderView')
+
+    # show data in view
+    box1Display = Show(box1, renderView1, 'GeometryRepresentation')
+
+    # trace defaults for the display properties.
+    box1Display.Representation = 'Surface'
+    box1Display.ColorArrayName = [None, '']
+    box1Display.SelectTCoordArray = 'TCoords'
+    box1Display.SelectNormalArray = 'Normals'
+    box1Display.SelectTangentArray = 'None'
+    box1Display.OSPRayScaleArray = 'Normals'
+    box1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+    box1Display.SelectOrientationVectors = 'None'
+    box1Display.ScaleFactor = 0.1
+    box1Display.SelectScaleArray = 'None'
+    box1Display.GlyphType = 'Arrow'
+    box1Display.GlyphTableIndexArray = 'None'
+    box1Display.GaussianRadius = 0.005
+    box1Display.SetScaleArray = ['POINTS', 'Normals']
+    box1Display.ScaleTransferFunction = 'PiecewiseFunction'
+    box1Display.OpacityArray = ['POINTS', 'Normals']
+    box1Display.OpacityTransferFunction = 'PiecewiseFunction'
+    box1Display.DataAxesGrid = 'GridAxesRepresentation'
+    box1Display.PolarAxes = 'PolarAxesRepresentation'
+
+    # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+    box1Display.ScaleTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+    # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+    box1Display.OpacityTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+
+    # Properties modified on box1
+    box1.XLength = 2.0
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+
+    # Properties modified on box1
+    box1.XLength = 0.1
+    box1.YLength = delta
+    box1.ZLength = 0.1
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+
+    # Properties modified on box1Display
+    box1Display.Position = [-1.0, 0.0, 0.0]
+
+    # Properties modified on box1Display.DataAxesGrid
+    box1Display.DataAxesGrid.Position = [-1.0, 0.0, 0.0]
+
+    # Properties modified on box1Display.PolarAxes
+    box1Display.PolarAxes.Translation = [-1.0, 0.0, 0.0]
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+    #-------------------------------------------------------------------------------
+
+
+
+    # create a new 'XML Unstructured Grid Reader'
+    cylindrical_2variableBC_delta15_level3_NCvtu = XMLUnstructuredGridReader(registrationName=experimentName, FileName=[fileName])
+    cylindrical_2variableBC_delta15_level3_NCvtu.CellArrayStatus = []
+    cylindrical_2variableBC_delta15_level3_NCvtu.PointArrayStatus = ['Displacement dune-VTK', 'IsometryErrorFunction', 'SurfaceNormalDiscrete']
+    cylindrical_2variableBC_delta15_level3_NCvtu.TimeArray = 'TimeValue'
+
+    # Properties modified on cylindrical_2variableBC_delta15_level3_NCvtu
+    cylindrical_2variableBC_delta15_level3_NCvtu.TimeArray = 'None'
+
+    # get active view
+    renderView1 = GetActiveViewOrCreate('RenderView')
+
+    # show data in view
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay = Show(cylindrical_2variableBC_delta15_level3_NCvtu, renderView1, 'UnstructuredGridRepresentation')
+
+    # get 2D transfer function for 'IsometryErrorFunction'
+    isometryErrorFunctionTF2D = GetTransferFunction2D('IsometryErrorFunction')
+    isometryErrorFunctionTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    isometryErrorFunctionTF2D.Boxes = []
+    isometryErrorFunctionTF2D.ScalarRangeInitialized = 0
+    isometryErrorFunctionTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+    isometryErrorFunctionTF2D.OutputDimensions = [10, 10]
+
+    # get color transfer function/color map for 'IsometryErrorFunction'
+    isometryErrorFunctionLUT = GetColorTransferFunction('IsometryErrorFunction')
+    isometryErrorFunctionLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    isometryErrorFunctionLUT.InterpretValuesAsCategories = 0
+    isometryErrorFunctionLUT.AnnotationsInitialized = 0
+    isometryErrorFunctionLUT.ShowCategoricalColorsinDataRangeOnly = 0
+    isometryErrorFunctionLUT.RescaleOnVisibilityChange = 0
+    isometryErrorFunctionLUT.EnableOpacityMapping = 0
+    isometryErrorFunctionLUT.TransferFunction2D = isometryErrorFunctionTF2D
+    isometryErrorFunctionLUT.Use2DTransferFunction = 0
+    isometryErrorFunctionLUT.RGBPoints = [0.0, 0.231373, 0.298039, 0.752941, 0.030321702361106873, 0.865003, 0.865003, 0.865003, 0.060643404722213745, 0.705882, 0.0156863, 0.14902]
+    isometryErrorFunctionLUT.UseLogScale = 0
+    isometryErrorFunctionLUT.UseOpacityControlPointsFreehandDrawing = 0
+    isometryErrorFunctionLUT.ShowDataHistogram = 0
+    isometryErrorFunctionLUT.AutomaticDataHistogramComputation = 0
+    isometryErrorFunctionLUT.DataHistogramNumberOfBins = 10
+    isometryErrorFunctionLUT.ColorSpace = 'Diverging'
+    isometryErrorFunctionLUT.UseBelowRangeColor = 0
+    isometryErrorFunctionLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+    isometryErrorFunctionLUT.UseAboveRangeColor = 0
+    isometryErrorFunctionLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+    isometryErrorFunctionLUT.NanColor = [1.0, 1.0, 0.0]
+    isometryErrorFunctionLUT.NanOpacity = 1.0
+    isometryErrorFunctionLUT.Discretize = 1
+    isometryErrorFunctionLUT.NumberOfTableValues = 256
+    isometryErrorFunctionLUT.ScalarRangeInitialized = 1.0
+    isometryErrorFunctionLUT.HSVWrap = 0
+    isometryErrorFunctionLUT.VectorComponent = 0
+    isometryErrorFunctionLUT.VectorMode = 'Magnitude'
+    isometryErrorFunctionLUT.AllowDuplicateScalars = 1
+    isometryErrorFunctionLUT.Annotations = []
+    isometryErrorFunctionLUT.ActiveAnnotatedValues = []
+    isometryErrorFunctionLUT.IndexedColors = []
+    isometryErrorFunctionLUT.IndexedOpacities = []
+
+    # get opacity transfer function/opacity map for 'IsometryErrorFunction'
+    isometryErrorFunctionPWF = GetOpacityTransferFunction('IsometryErrorFunction')
+    isometryErrorFunctionPWF.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    isometryErrorFunctionPWF.AllowDuplicateScalars = 1
+    isometryErrorFunctionPWF.UseLogScale = 0
+    isometryErrorFunctionPWF.ScalarRangeInitialized = 1
+
+    # trace defaults for the display properties.
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Selection = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Representation = 'Surface'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LookupTable = isometryErrorFunctionLUT
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MapScalars = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MultiComponentsMapping = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.InterpolateScalarsBeforeMapping = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Opacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PointSize = 2.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LineWidth = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.RenderLinesAsTubes = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.RenderPointsAsSpheres = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Interpolation = 'Gouraud'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Specular = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SpecularColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SpecularPower = 100.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Luminosity = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Ambient = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Diffuse = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Roughness = 0.3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Metallic = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EdgeTint = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Anisotropy = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.AnisotropyRotation = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BaseIOR = 1.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatStrength = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatIOR = 2.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatRoughness = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectTCoordArray = 'None'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectNormalArray = 'None'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectTangentArray = 'None'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Texture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.RepeatTextures = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.InterpolateTextures = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SeamlessU = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SeamlessV = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseMipmapTextures = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ShowTexturesOnBackface = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BaseColorTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NormalTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NormalScale = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatNormalTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoatNormalScale = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaterialTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OcclusionStrength = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.AnisotropyTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EmissiveTexture = None
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EmissiveFactor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.FlipTextures = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BackfaceRepresentation = 'Follow Frontface'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BackfaceOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Position = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Scale = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Orientation = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Origin = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Pickable = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Triangulate = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseShaderReplacements = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ShaderReplacements = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NonlinearSubdivisionLevel = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseDataPartitions = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayUseScaleArray = 'All Approximate'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayScaleArray = 'IsometryErrorFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayScaleFunction = 'PiecewiseFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayMaterial = 'None'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BlockSelectors = ['/']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BlockColors = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.BlockOpacities = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Orient = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OrientationMode = 'Direction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectOrientationVectors = 'Displacement dune-VTK'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Scaling = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleMode = 'No Data Scaling Off'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleFactor = 0.2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectScaleArray = 'IsometryErrorFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType = 'Arrow'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseGlyphTable = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphTableIndexArray = 'IsometryErrorFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseCompositeGlyphTable = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseGlyphCullingAndLOD = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LODValues = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ColorByLODIndex = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GaussianRadius = 0.01
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ShaderPreset = 'Sphere'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CustomTriangleScale = 3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CustomShader = """ // This custom shader code define a gaussian blur
+    // Please take a look into vtkSMPointGaussianRepresentation.cxx
+    // for other custom shader examples
+    //VTK::Color::Impl
+    float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+    float gaussian = exp(-0.5*dist2);
+    opacity = opacity*gaussian;
+    """
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Emissive = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleByArray = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleArrayComponent = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseScaleFunction = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleTransferFunction = 'PiecewiseFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityByArray = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityArrayComponent = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityTransferFunction = 'PiecewiseFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid = 'GridAxesRepresentation'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelFontSize = 18
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelJustification = 'Left'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionCellLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelFontSize = 18
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelJustification = 'Left'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectionPointLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes = 'PolarAxesRepresentation'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScalarOpacityFunction = isometryErrorFunctionPWF
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScalarOpacityUnitDistance = 0.22272467953508482
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseSeparateOpacityArray = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityComponent = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectMapper = 'Projected tetra'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SamplingDimensions = [128, 128, 128]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseFloatingPointFrameBuffer = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NumberOfSteps = 40
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.StepSize = 0.25
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NormalizeVectors = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EnhancedLIC = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ColorMode = 'Blend'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LICIntensity = 0.8
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MapModeBias = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.EnhanceContrast = 'Off'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LowLICContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.HighLICContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.LowColorContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.HighColorContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.AntiAlias = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaskOnSurface = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaskThreshold = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaskIntensity = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaskColor = [0.5, 0.5, 0.5]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GenerateNoiseTexture = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NoiseType = 'Gaussian'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NoiseTextureSize = 128
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NoiseGrainSize = 2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MinNoiseValue = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.MaxNoiseValue = 0.8
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NumberOfNoiseLevels = 1024
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ImpulseNoiseProbability = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ImpulseNoiseBackgroundValue = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.NoiseGeneratorSeed = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.CompositeStrategy = 'AUTO'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.UseLICForLOD = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.WriteLog = ''
+
+    # init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OSPRayScaleFunction.UseLogScale = 0
+
+    # init the 'Arrow' selected for 'GlyphType'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.TipResolution = 6
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.TipRadius = 0.1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.TipLength = 0.35
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.ShaftResolution = 6
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.ShaftRadius = 0.03
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.GlyphType.Invert = 0
+
+    # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.ScaleTransferFunction.UseLogScale = 0
+
+    # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.OpacityTransferFunction.UseLogScale = 0
+
+    # init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitle = 'X Axis'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitle = 'Y Axis'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitle = 'Z Axis'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XTitleOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YTitleOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZTitleOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.FacesToRender = 63
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.CullBackface = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.CullFrontface = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ShowGrid = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ShowEdges = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ShowTicks = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.LabelUniqueEdgesOnly = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.AxesToLabel = 63
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XAxisNotation = 'Mixed'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XAxisPrecision = 2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XAxisUseCustomLabels = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.XAxisLabels = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YAxisNotation = 'Mixed'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YAxisPrecision = 2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YAxisUseCustomLabels = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.YAxisLabels = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZAxisNotation = 'Mixed'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZAxisPrecision = 2
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZAxisUseCustomLabels = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.ZAxisLabels = []
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.UseCustomBounds = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+    # init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Visibility = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Translation = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Scale = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.EnableCustomBounds = [0, 0, 0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.EnableCustomRange = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.CustomRange = [0.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialAxesVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DrawRadialGridlines = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarArcsVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DrawPolarArcsGridlines = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.NumberOfRadialAxes = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.AutoSubdividePolarAxis = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.NumberOfPolarAxis = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.MinimumRadius = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.MinimumAngle = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.MaximumAngle = 90.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialAxesOriginToPolarAxis = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Ratio = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitle = 'Radial Distance'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarLabelVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarLabelFormat = '%-#6.3g'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarLabelExponentLocation = 'Labels'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialLabelVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialLabelFormat = '%-#3.1f'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialLabelLocation = 'Bottom'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.RadialUnitsVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ScreenSize = 10.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextBold = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextItalic = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextShadow = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.EnableDistanceLOD = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DistanceLODThreshold = 0.7
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.EnableViewAngleLOD = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ViewAngleLODThreshold = 0.7
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.SmallestVisiblePolarAngle = 0.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarTicksVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcTicksOriginToPolarAxis = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.TickLocation = 'Both'
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.AxisTickVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.AxisMinorTickVisibility = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcTickVisibility = 1
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcMinorTickVisibility = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DeltaAngleMajor = 10.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.DeltaAngleMinor = 5.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisMajorTickSize = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTickRatioSize = 0.3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisMajorTickThickness = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.PolarAxisTickRatioThickness = 0.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcMajorTickSize = 0.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcTickRatioSize = 0.3
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcMajorTickThickness = 1.0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.ArcTickRatioThickness = 0.5
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.Use2DMode = 0
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.PolarAxes.UseLogAxis = 0
+
+    # show color bar/color legend
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+    # find source
+    box1 = FindSource('Box1')
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+
+    # set scalar coloring
+    ColorBy(cylindrical_2variableBC_delta15_level3_NCvtuDisplay, ('POINTS', 'Displacement dune-VTK', 'Magnitude'))
+
+    # Hide the scalar bar for this color map if no visible data is colored by it.
+    HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+    # rescale color and/or opacity maps used to include current data range
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.RescaleTransferFunctionToDataRange(True, False)
+
+    # show color bar/color legend
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.SetScalarBarVisibility(renderView1, True)
+
+    # get 2D transfer function for 'DisplacementduneVTK'
+    displacementduneVTKTF2D = GetTransferFunction2D('DisplacementduneVTK')
+    displacementduneVTKTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    displacementduneVTKTF2D.Boxes = []
+    displacementduneVTKTF2D.ScalarRangeInitialized = 0
+    displacementduneVTKTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+    displacementduneVTKTF2D.OutputDimensions = [10, 10]
+
+    # get color transfer function/color map for 'DisplacementduneVTK'
+    displacementduneVTKLUT = GetColorTransferFunction('DisplacementduneVTK')
+    displacementduneVTKLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    displacementduneVTKLUT.InterpretValuesAsCategories = 0
+    displacementduneVTKLUT.AnnotationsInitialized = 0
+    displacementduneVTKLUT.ShowCategoricalColorsinDataRangeOnly = 0
+    displacementduneVTKLUT.RescaleOnVisibilityChange = 0
+    displacementduneVTKLUT.EnableOpacityMapping = 0
+    displacementduneVTKLUT.TransferFunction2D = displacementduneVTKTF2D
+    displacementduneVTKLUT.Use2DTransferFunction = 0
+    displacementduneVTKLUT.RGBPoints = [0.0, 0.231373, 0.298039, 0.752941, 0.6756904005417563, 0.865003, 0.865003, 0.865003, 1.3513808010835127, 0.705882, 0.0156863, 0.14902]
+    displacementduneVTKLUT.UseLogScale = 0
+    displacementduneVTKLUT.UseOpacityControlPointsFreehandDrawing = 0
+    displacementduneVTKLUT.ShowDataHistogram = 0
+    displacementduneVTKLUT.AutomaticDataHistogramComputation = 0
+    displacementduneVTKLUT.DataHistogramNumberOfBins = 10
+    displacementduneVTKLUT.ColorSpace = 'Diverging'
+    displacementduneVTKLUT.UseBelowRangeColor = 0
+    displacementduneVTKLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+    displacementduneVTKLUT.UseAboveRangeColor = 0
+    displacementduneVTKLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+    displacementduneVTKLUT.NanColor = [1.0, 1.0, 0.0]
+    displacementduneVTKLUT.NanOpacity = 1.0
+    displacementduneVTKLUT.Discretize = 1
+    displacementduneVTKLUT.NumberOfTableValues = 256
+    displacementduneVTKLUT.ScalarRangeInitialized = 1.0
+    displacementduneVTKLUT.HSVWrap = 0
+    displacementduneVTKLUT.VectorComponent = 0
+    displacementduneVTKLUT.VectorMode = 'Magnitude'
+    displacementduneVTKLUT.AllowDuplicateScalars = 1
+    displacementduneVTKLUT.Annotations = []
+    displacementduneVTKLUT.ActiveAnnotatedValues = []
+    displacementduneVTKLUT.IndexedColors = []
+    displacementduneVTKLUT.IndexedOpacities = []
+
+    # get opacity transfer function/opacity map for 'DisplacementduneVTK'
+    displacementduneVTKPWF = GetOpacityTransferFunction('DisplacementduneVTK')
+    displacementduneVTKPWF.Points = [0.0, 0.0, 0.5, 0.0, 1.3513808010835127, 1.0, 0.5, 0.0]
+    displacementduneVTKPWF.AllowDuplicateScalars = 1
+    displacementduneVTKPWF.UseLogScale = 0
+    displacementduneVTKPWF.ScalarRangeInitialized = 1
+
+    # create a new 'Warp By Vector'
+    warpByVector1 = WarpByVector(registrationName='WarpByVector1', Input=cylindrical_2variableBC_delta15_level3_NCvtu)
+    warpByVector1.Vectors = ['POINTS', 'Displacement dune-VTK']
+    warpByVector1.ScaleFactor = 1.0
+
+    # show data in view
+    warpByVector1Display = Show(warpByVector1, renderView1, 'UnstructuredGridRepresentation')
+
+    # trace defaults for the display properties.
+    warpByVector1Display.Selection = None
+    warpByVector1Display.Representation = 'Surface'
+    warpByVector1Display.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+    warpByVector1Display.LookupTable = isometryErrorFunctionLUT
+    warpByVector1Display.MapScalars = 1
+    warpByVector1Display.MultiComponentsMapping = 0
+    warpByVector1Display.InterpolateScalarsBeforeMapping = 1
+    warpByVector1Display.Opacity = 1.0
+    warpByVector1Display.PointSize = 2.0
+    warpByVector1Display.LineWidth = 1.0
+    warpByVector1Display.RenderLinesAsTubes = 0
+    warpByVector1Display.RenderPointsAsSpheres = 0
+    warpByVector1Display.Interpolation = 'Gouraud'
+    warpByVector1Display.Specular = 0.0
+    warpByVector1Display.SpecularColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.SpecularPower = 100.0
+    warpByVector1Display.Luminosity = 0.0
+    warpByVector1Display.Ambient = 0.0
+    warpByVector1Display.Diffuse = 1.0
+    warpByVector1Display.Roughness = 0.3
+    warpByVector1Display.Metallic = 0.0
+    warpByVector1Display.EdgeTint = [1.0, 1.0, 1.0]
+    warpByVector1Display.Anisotropy = 0.0
+    warpByVector1Display.AnisotropyRotation = 0.0
+    warpByVector1Display.BaseIOR = 1.5
+    warpByVector1Display.CoatStrength = 0.0
+    warpByVector1Display.CoatIOR = 2.0
+    warpByVector1Display.CoatRoughness = 0.0
+    warpByVector1Display.CoatColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.SelectTCoordArray = 'None'
+    warpByVector1Display.SelectNormalArray = 'None'
+    warpByVector1Display.SelectTangentArray = 'None'
+    warpByVector1Display.Texture = None
+    warpByVector1Display.RepeatTextures = 1
+    warpByVector1Display.InterpolateTextures = 0
+    warpByVector1Display.SeamlessU = 0
+    warpByVector1Display.SeamlessV = 0
+    warpByVector1Display.UseMipmapTextures = 0
+    warpByVector1Display.ShowTexturesOnBackface = 1
+    warpByVector1Display.BaseColorTexture = None
+    warpByVector1Display.NormalTexture = None
+    warpByVector1Display.NormalScale = 1.0
+    warpByVector1Display.CoatNormalTexture = None
+    warpByVector1Display.CoatNormalScale = 1.0
+    warpByVector1Display.MaterialTexture = None
+    warpByVector1Display.OcclusionStrength = 1.0
+    warpByVector1Display.AnisotropyTexture = None
+    warpByVector1Display.EmissiveTexture = None
+    warpByVector1Display.EmissiveFactor = [1.0, 1.0, 1.0]
+    warpByVector1Display.FlipTextures = 0
+    warpByVector1Display.BackfaceRepresentation = 'Follow Frontface'
+    warpByVector1Display.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.BackfaceOpacity = 1.0
+    warpByVector1Display.Position = [0.0, 0.0, 0.0]
+    warpByVector1Display.Scale = [1.0, 1.0, 1.0]
+    warpByVector1Display.Orientation = [0.0, 0.0, 0.0]
+    warpByVector1Display.Origin = [0.0, 0.0, 0.0]
+    warpByVector1Display.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+    warpByVector1Display.Pickable = 1
+    warpByVector1Display.Triangulate = 0
+    warpByVector1Display.UseShaderReplacements = 0
+    warpByVector1Display.ShaderReplacements = ''
+    warpByVector1Display.NonlinearSubdivisionLevel = 1
+    warpByVector1Display.UseDataPartitions = 0
+    warpByVector1Display.OSPRayUseScaleArray = 'All Approximate'
+    warpByVector1Display.OSPRayScaleArray = 'IsometryErrorFunction'
+    warpByVector1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+    warpByVector1Display.OSPRayMaterial = 'None'
+    warpByVector1Display.BlockSelectors = ['/']
+    warpByVector1Display.BlockColors = []
+    warpByVector1Display.BlockOpacities = []
+    warpByVector1Display.Orient = 0
+    warpByVector1Display.OrientationMode = 'Direction'
+    warpByVector1Display.SelectOrientationVectors = 'Displacement dune-VTK'
+    warpByVector1Display.Scaling = 0
+    warpByVector1Display.ScaleMode = 'No Data Scaling Off'
+    warpByVector1Display.ScaleFactor = 0.19999914765357973
+    warpByVector1Display.SelectScaleArray = 'IsometryErrorFunction'
+    warpByVector1Display.GlyphType = 'Arrow'
+    warpByVector1Display.UseGlyphTable = 0
+    warpByVector1Display.GlyphTableIndexArray = 'IsometryErrorFunction'
+    warpByVector1Display.UseCompositeGlyphTable = 0
+    warpByVector1Display.UseGlyphCullingAndLOD = 0
+    warpByVector1Display.LODValues = []
+    warpByVector1Display.ColorByLODIndex = 0
+    warpByVector1Display.GaussianRadius = 0.009999957382678986
+    warpByVector1Display.ShaderPreset = 'Sphere'
+    warpByVector1Display.CustomTriangleScale = 3
+    warpByVector1Display.CustomShader = """ // This custom shader code define a gaussian blur
+    // Please take a look into vtkSMPointGaussianRepresentation.cxx
+    // for other custom shader examples
+    //VTK::Color::Impl
+    float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+    float gaussian = exp(-0.5*dist2);
+    opacity = opacity*gaussian;
+    """
+    warpByVector1Display.Emissive = 0
+    warpByVector1Display.ScaleByArray = 0
+    warpByVector1Display.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+    warpByVector1Display.ScaleArrayComponent = ''
+    warpByVector1Display.UseScaleFunction = 1
+    warpByVector1Display.ScaleTransferFunction = 'PiecewiseFunction'
+    warpByVector1Display.OpacityByArray = 0
+    warpByVector1Display.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+    warpByVector1Display.OpacityArrayComponent = ''
+    warpByVector1Display.OpacityTransferFunction = 'PiecewiseFunction'
+    warpByVector1Display.DataAxesGrid = 'GridAxesRepresentation'
+    warpByVector1Display.SelectionCellLabelBold = 0
+    warpByVector1Display.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+    warpByVector1Display.SelectionCellLabelFontFamily = 'Arial'
+    warpByVector1Display.SelectionCellLabelFontFile = ''
+    warpByVector1Display.SelectionCellLabelFontSize = 18
+    warpByVector1Display.SelectionCellLabelItalic = 0
+    warpByVector1Display.SelectionCellLabelJustification = 'Left'
+    warpByVector1Display.SelectionCellLabelOpacity = 1.0
+    warpByVector1Display.SelectionCellLabelShadow = 0
+    warpByVector1Display.SelectionPointLabelBold = 0
+    warpByVector1Display.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+    warpByVector1Display.SelectionPointLabelFontFamily = 'Arial'
+    warpByVector1Display.SelectionPointLabelFontFile = ''
+    warpByVector1Display.SelectionPointLabelFontSize = 18
+    warpByVector1Display.SelectionPointLabelItalic = 0
+    warpByVector1Display.SelectionPointLabelJustification = 'Left'
+    warpByVector1Display.SelectionPointLabelOpacity = 1.0
+    warpByVector1Display.SelectionPointLabelShadow = 0
+    warpByVector1Display.PolarAxes = 'PolarAxesRepresentation'
+    warpByVector1Display.ScalarOpacityFunction = isometryErrorFunctionPWF
+    warpByVector1Display.ScalarOpacityUnitDistance = 0.21902417179491238
+    warpByVector1Display.UseSeparateOpacityArray = 0
+    warpByVector1Display.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+    warpByVector1Display.OpacityComponent = ''
+    warpByVector1Display.SelectMapper = 'Projected tetra'
+    warpByVector1Display.SamplingDimensions = [128, 128, 128]
+    warpByVector1Display.UseFloatingPointFrameBuffer = 1
+    warpByVector1Display.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+    warpByVector1Display.NumberOfSteps = 40
+    warpByVector1Display.StepSize = 0.25
+    warpByVector1Display.NormalizeVectors = 1
+    warpByVector1Display.EnhancedLIC = 1
+    warpByVector1Display.ColorMode = 'Blend'
+    warpByVector1Display.LICIntensity = 0.8
+    warpByVector1Display.MapModeBias = 0.0
+    warpByVector1Display.EnhanceContrast = 'Off'
+    warpByVector1Display.LowLICContrastEnhancementFactor = 0.0
+    warpByVector1Display.HighLICContrastEnhancementFactor = 0.0
+    warpByVector1Display.LowColorContrastEnhancementFactor = 0.0
+    warpByVector1Display.HighColorContrastEnhancementFactor = 0.0
+    warpByVector1Display.AntiAlias = 0
+    warpByVector1Display.MaskOnSurface = 1
+    warpByVector1Display.MaskThreshold = 0.0
+    warpByVector1Display.MaskIntensity = 0.0
+    warpByVector1Display.MaskColor = [0.5, 0.5, 0.5]
+    warpByVector1Display.GenerateNoiseTexture = 0
+    warpByVector1Display.NoiseType = 'Gaussian'
+    warpByVector1Display.NoiseTextureSize = 128
+    warpByVector1Display.NoiseGrainSize = 2
+    warpByVector1Display.MinNoiseValue = 0.0
+    warpByVector1Display.MaxNoiseValue = 0.8
+    warpByVector1Display.NumberOfNoiseLevels = 1024
+    warpByVector1Display.ImpulseNoiseProbability = 1.0
+    warpByVector1Display.ImpulseNoiseBackgroundValue = 0.0
+    warpByVector1Display.NoiseGeneratorSeed = 1
+    warpByVector1Display.CompositeStrategy = 'AUTO'
+    warpByVector1Display.UseLICForLOD = 0
+    warpByVector1Display.WriteLog = ''
+
+    # init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+    warpByVector1Display.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+    warpByVector1Display.OSPRayScaleFunction.UseLogScale = 0
+
+    # init the 'Arrow' selected for 'GlyphType'
+    warpByVector1Display.GlyphType.TipResolution = 6
+    warpByVector1Display.GlyphType.TipRadius = 0.1
+    warpByVector1Display.GlyphType.TipLength = 0.35
+    warpByVector1Display.GlyphType.ShaftResolution = 6
+    warpByVector1Display.GlyphType.ShaftRadius = 0.03
+    warpByVector1Display.GlyphType.Invert = 0
+
+    # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+    warpByVector1Display.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    warpByVector1Display.ScaleTransferFunction.UseLogScale = 0
+
+    # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+    warpByVector1Display.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    warpByVector1Display.OpacityTransferFunction.UseLogScale = 0
+
+    # init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+    warpByVector1Display.DataAxesGrid.XTitle = 'X Axis'
+    warpByVector1Display.DataAxesGrid.YTitle = 'Y Axis'
+    warpByVector1Display.DataAxesGrid.ZTitle = 'Z Axis'
+    warpByVector1Display.DataAxesGrid.XTitleFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.XTitleFontFile = ''
+    warpByVector1Display.DataAxesGrid.XTitleBold = 0
+    warpByVector1Display.DataAxesGrid.XTitleItalic = 0
+    warpByVector1Display.DataAxesGrid.XTitleFontSize = 12
+    warpByVector1Display.DataAxesGrid.XTitleShadow = 0
+    warpByVector1Display.DataAxesGrid.XTitleOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.YTitleFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.YTitleFontFile = ''
+    warpByVector1Display.DataAxesGrid.YTitleBold = 0
+    warpByVector1Display.DataAxesGrid.YTitleItalic = 0
+    warpByVector1Display.DataAxesGrid.YTitleFontSize = 12
+    warpByVector1Display.DataAxesGrid.YTitleShadow = 0
+    warpByVector1Display.DataAxesGrid.YTitleOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.ZTitleFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.ZTitleFontFile = ''
+    warpByVector1Display.DataAxesGrid.ZTitleBold = 0
+    warpByVector1Display.DataAxesGrid.ZTitleItalic = 0
+    warpByVector1Display.DataAxesGrid.ZTitleFontSize = 12
+    warpByVector1Display.DataAxesGrid.ZTitleShadow = 0
+    warpByVector1Display.DataAxesGrid.ZTitleOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.FacesToRender = 63
+    warpByVector1Display.DataAxesGrid.CullBackface = 0
+    warpByVector1Display.DataAxesGrid.CullFrontface = 1
+    warpByVector1Display.DataAxesGrid.ShowGrid = 0
+    warpByVector1Display.DataAxesGrid.ShowEdges = 1
+    warpByVector1Display.DataAxesGrid.ShowTicks = 1
+    warpByVector1Display.DataAxesGrid.LabelUniqueEdgesOnly = 1
+    warpByVector1Display.DataAxesGrid.AxesToLabel = 63
+    warpByVector1Display.DataAxesGrid.XLabelFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.XLabelFontFile = ''
+    warpByVector1Display.DataAxesGrid.XLabelBold = 0
+    warpByVector1Display.DataAxesGrid.XLabelItalic = 0
+    warpByVector1Display.DataAxesGrid.XLabelFontSize = 12
+    warpByVector1Display.DataAxesGrid.XLabelShadow = 0
+    warpByVector1Display.DataAxesGrid.XLabelOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.YLabelFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.YLabelFontFile = ''
+    warpByVector1Display.DataAxesGrid.YLabelBold = 0
+    warpByVector1Display.DataAxesGrid.YLabelItalic = 0
+    warpByVector1Display.DataAxesGrid.YLabelFontSize = 12
+    warpByVector1Display.DataAxesGrid.YLabelShadow = 0
+    warpByVector1Display.DataAxesGrid.YLabelOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.ZLabelFontFamily = 'Arial'
+    warpByVector1Display.DataAxesGrid.ZLabelFontFile = ''
+    warpByVector1Display.DataAxesGrid.ZLabelBold = 0
+    warpByVector1Display.DataAxesGrid.ZLabelItalic = 0
+    warpByVector1Display.DataAxesGrid.ZLabelFontSize = 12
+    warpByVector1Display.DataAxesGrid.ZLabelShadow = 0
+    warpByVector1Display.DataAxesGrid.ZLabelOpacity = 1.0
+    warpByVector1Display.DataAxesGrid.XAxisNotation = 'Mixed'
+    warpByVector1Display.DataAxesGrid.XAxisPrecision = 2
+    warpByVector1Display.DataAxesGrid.XAxisUseCustomLabels = 0
+    warpByVector1Display.DataAxesGrid.XAxisLabels = []
+    warpByVector1Display.DataAxesGrid.YAxisNotation = 'Mixed'
+    warpByVector1Display.DataAxesGrid.YAxisPrecision = 2
+    warpByVector1Display.DataAxesGrid.YAxisUseCustomLabels = 0
+    warpByVector1Display.DataAxesGrid.YAxisLabels = []
+    warpByVector1Display.DataAxesGrid.ZAxisNotation = 'Mixed'
+    warpByVector1Display.DataAxesGrid.ZAxisPrecision = 2
+    warpByVector1Display.DataAxesGrid.ZAxisUseCustomLabels = 0
+    warpByVector1Display.DataAxesGrid.ZAxisLabels = []
+    warpByVector1Display.DataAxesGrid.UseCustomBounds = 0
+    warpByVector1Display.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+    # init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+    warpByVector1Display.PolarAxes.Visibility = 0
+    warpByVector1Display.PolarAxes.Translation = [0.0, 0.0, 0.0]
+    warpByVector1Display.PolarAxes.Scale = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+    warpByVector1Display.PolarAxes.EnableCustomBounds = [0, 0, 0]
+    warpByVector1Display.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+    warpByVector1Display.PolarAxes.EnableCustomRange = 0
+    warpByVector1Display.PolarAxes.CustomRange = [0.0, 1.0]
+    warpByVector1Display.PolarAxes.PolarAxisVisibility = 1
+    warpByVector1Display.PolarAxes.RadialAxesVisibility = 1
+    warpByVector1Display.PolarAxes.DrawRadialGridlines = 1
+    warpByVector1Display.PolarAxes.PolarArcsVisibility = 1
+    warpByVector1Display.PolarAxes.DrawPolarArcsGridlines = 1
+    warpByVector1Display.PolarAxes.NumberOfRadialAxes = 0
+    warpByVector1Display.PolarAxes.AutoSubdividePolarAxis = 1
+    warpByVector1Display.PolarAxes.NumberOfPolarAxis = 0
+    warpByVector1Display.PolarAxes.MinimumRadius = 0.0
+    warpByVector1Display.PolarAxes.MinimumAngle = 0.0
+    warpByVector1Display.PolarAxes.MaximumAngle = 90.0
+    warpByVector1Display.PolarAxes.RadialAxesOriginToPolarAxis = 1
+    warpByVector1Display.PolarAxes.Ratio = 1.0
+    warpByVector1Display.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+    warpByVector1Display.PolarAxes.PolarAxisTitleVisibility = 1
+    warpByVector1Display.PolarAxes.PolarAxisTitle = 'Radial Distance'
+    warpByVector1Display.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+    warpByVector1Display.PolarAxes.PolarLabelVisibility = 1
+    warpByVector1Display.PolarAxes.PolarLabelFormat = '%-#6.3g'
+    warpByVector1Display.PolarAxes.PolarLabelExponentLocation = 'Labels'
+    warpByVector1Display.PolarAxes.RadialLabelVisibility = 1
+    warpByVector1Display.PolarAxes.RadialLabelFormat = '%-#3.1f'
+    warpByVector1Display.PolarAxes.RadialLabelLocation = 'Bottom'
+    warpByVector1Display.PolarAxes.RadialUnitsVisibility = 1
+    warpByVector1Display.PolarAxes.ScreenSize = 10.0
+    warpByVector1Display.PolarAxes.PolarAxisTitleOpacity = 1.0
+    warpByVector1Display.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+    warpByVector1Display.PolarAxes.PolarAxisTitleFontFile = ''
+    warpByVector1Display.PolarAxes.PolarAxisTitleBold = 0
+    warpByVector1Display.PolarAxes.PolarAxisTitleItalic = 0
+    warpByVector1Display.PolarAxes.PolarAxisTitleShadow = 0
+    warpByVector1Display.PolarAxes.PolarAxisTitleFontSize = 12
+    warpByVector1Display.PolarAxes.PolarAxisLabelOpacity = 1.0
+    warpByVector1Display.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+    warpByVector1Display.PolarAxes.PolarAxisLabelFontFile = ''
+    warpByVector1Display.PolarAxes.PolarAxisLabelBold = 0
+    warpByVector1Display.PolarAxes.PolarAxisLabelItalic = 0
+    warpByVector1Display.PolarAxes.PolarAxisLabelShadow = 0
+    warpByVector1Display.PolarAxes.PolarAxisLabelFontSize = 12
+    warpByVector1Display.PolarAxes.LastRadialAxisTextOpacity = 1.0
+    warpByVector1Display.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+    warpByVector1Display.PolarAxes.LastRadialAxisTextFontFile = ''
+    warpByVector1Display.PolarAxes.LastRadialAxisTextBold = 0
+    warpByVector1Display.PolarAxes.LastRadialAxisTextItalic = 0
+    warpByVector1Display.PolarAxes.LastRadialAxisTextShadow = 0
+    warpByVector1Display.PolarAxes.LastRadialAxisTextFontSize = 12
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextBold = 0
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextItalic = 0
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextShadow = 0
+    warpByVector1Display.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+    warpByVector1Display.PolarAxes.EnableDistanceLOD = 1
+    warpByVector1Display.PolarAxes.DistanceLODThreshold = 0.7
+    warpByVector1Display.PolarAxes.EnableViewAngleLOD = 1
+    warpByVector1Display.PolarAxes.ViewAngleLODThreshold = 0.7
+    warpByVector1Display.PolarAxes.SmallestVisiblePolarAngle = 0.5
+    warpByVector1Display.PolarAxes.PolarTicksVisibility = 1
+    warpByVector1Display.PolarAxes.ArcTicksOriginToPolarAxis = 1
+    warpByVector1Display.PolarAxes.TickLocation = 'Both'
+    warpByVector1Display.PolarAxes.AxisTickVisibility = 1
+    warpByVector1Display.PolarAxes.AxisMinorTickVisibility = 0
+    warpByVector1Display.PolarAxes.ArcTickVisibility = 1
+    warpByVector1Display.PolarAxes.ArcMinorTickVisibility = 0
+    warpByVector1Display.PolarAxes.DeltaAngleMajor = 10.0
+    warpByVector1Display.PolarAxes.DeltaAngleMinor = 5.0
+    warpByVector1Display.PolarAxes.PolarAxisMajorTickSize = 0.0
+    warpByVector1Display.PolarAxes.PolarAxisTickRatioSize = 0.3
+    warpByVector1Display.PolarAxes.PolarAxisMajorTickThickness = 1.0
+    warpByVector1Display.PolarAxes.PolarAxisTickRatioThickness = 0.5
+    warpByVector1Display.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+    warpByVector1Display.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+    warpByVector1Display.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+    warpByVector1Display.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+    warpByVector1Display.PolarAxes.ArcMajorTickSize = 0.0
+    warpByVector1Display.PolarAxes.ArcTickRatioSize = 0.3
+    warpByVector1Display.PolarAxes.ArcMajorTickThickness = 1.0
+    warpByVector1Display.PolarAxes.ArcTickRatioThickness = 0.5
+    warpByVector1Display.PolarAxes.Use2DMode = 0
+    warpByVector1Display.PolarAxes.UseLogAxis = 0
+
+    # hide data in view
+    Hide(cylindrical_2variableBC_delta15_level3_NCvtu, renderView1)
+
+    # show color bar/color legend
+    warpByVector1Display.SetScalarBarVisibility(renderView1, True)
+
+    # update the view to ensure updated data information
+    renderView1.Update()
+
+    # set scalar coloring
+    ColorBy(warpByVector1Display, ('POINTS', 'Displacement dune-VTK', 'Magnitude'))
+
+    # Hide the scalar bar for this color map if no visible data is colored by it.
+    HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+    # rescale color and/or opacity maps used to include current data range
+    warpByVector1Display.RescaleTransferFunctionToDataRange(True, False)
+
+    # show color bar/color legend
+    warpByVector1Display.SetScalarBarVisibility(renderView1, True)
+
+    # Apply a preset using its name. Note this may not work as expected when presets have duplicate names.
+    displacementduneVTKLUT.ApplyPreset('Greens', True)
+
+    # Rescale transfer function
+    displacementduneVTKLUT.RescaleTransferFunction(0.00013513808010835127, 1.3513808010835127)
+
+    # Rescale transfer function
+    displacementduneVTKPWF.RescaleTransferFunction(0.00013513808010835127, 1.3513808010835127)
+
+    # convert to log space
+    displacementduneVTKLUT.MapControlPointsToLogSpace()
+
+    # Properties modified on displacementduneVTKLUT
+    displacementduneVTKLUT.UseLogScale = 1
+
+    # hide color bar/color legend
+    warpByVector1Display.SetScalarBarVisibility(renderView1, False)
+
+    # reset view to fit data bounds
+    renderView1.ResetCamera(-1.0, 0.48625946044921875, -0.9997166991233826, 1.0002747774124146, -0.03165162727236748, 1.2042447328567505, True)
+
+    # Properties modified on renderView1
+    renderView1.OrientationAxesVisibility = 0
+
+    # Properties modified on warpByVector1Display
+    warpByVector1Display.Specular = 0.0
+
+    # Properties modified on warpByVector1Display
+    warpByVector1Display.Interpolation = 'Flat'
+
+    # set active source
+    SetActiveSource(cylindrical_2variableBC_delta15_level3_NCvtu)
+
+    # Properties modified on cylindrical_2variableBC_delta15_level3_NCvtuDisplay
+    cylindrical_2variableBC_delta15_level3_NCvtuDisplay.Specular = 0.0
+
+    # set active source
+    SetActiveSource(warpByVector1)
+
+    # Properties modified on warpByVector1Display
+    warpByVector1Display.Ambient = 0.2
+
+    # Properties modified on warpByVector1Display
+    warpByVector1Display.NonlinearSubdivisionLevel = 4
+
+    if AddGlyph:
+        # create a new 'Glyph'
+        glyph1 = Glyph(registrationName='Glyph1', Input=warpByVector1,
+            GlyphType='Arrow')
+        glyph1.OrientationArray = ['POINTS', 'Displacement dune-VTK']
+        glyph1.ScaleArray = ['POINTS', 'IsometryErrorFunction']
+        glyph1.VectorScaleMode = 'Scale by Magnitude'
+        glyph1.ScaleFactor = 0.19999914765357973
+        glyph1.GlyphTransform = 'Transform2'
+        glyph1.GlyphMode = 'Uniform Spatial Distribution (Bounds Based)'
+        glyph1.MaximumNumberOfSamplePoints = 5000
+        glyph1.Seed = 10339
+        glyph1.Stride = 1
+
+        # init the 'Arrow' selected for 'GlyphType'
+        glyph1.GlyphType.TipResolution = 30
+        glyph1.GlyphType.TipRadius = 0.075
+        glyph1.GlyphType.TipLength = 0.35
+        glyph1.GlyphType.ShaftResolution = 30
+        glyph1.GlyphType.ShaftRadius = 0.015
+        glyph1.GlyphType.Invert = 0
+
+        # init the 'Transform2' selected for 'GlyphTransform'
+        glyph1.GlyphTransform.Translate = [0.0, 0.0, 0.0]
+        glyph1.GlyphTransform.Rotate = [0.0, 0.0, 0.0]
+        glyph1.GlyphTransform.Scale = [1.0, 1.0, 1.0]
+
+        # Properties modified on glyph1
+        glyph1.OrientationArray = ['POINTS', 'SurfaceNormalDiscrete']
+        glyph1.ScaleArray = ['POINTS', 'No scale array']
+        # glyph1.ScaleFactor = 0.1
+        glyph1.ScaleFactor = 0.15
+        glyph1.GlyphMode = 'Every Nth Point'
+        glyph1.Stride = 35
+
+        # show data in view
+        glyph1Display = Show(glyph1, renderView1, 'GeometryRepresentation')
+
+        # trace defaults for the display properties.
+        glyph1Display.Selection = None
+        glyph1Display.Representation = 'Surface'
+        glyph1Display.ColorArrayName = ['POINTS', 'IsometryErrorFunction']
+        glyph1Display.LookupTable = isometryErrorFunctionLUT
+        glyph1Display.MapScalars = 1
+        glyph1Display.MultiComponentsMapping = 0
+        glyph1Display.InterpolateScalarsBeforeMapping = 1
+        glyph1Display.Opacity = 1.0
+        glyph1Display.PointSize = 2.0
+        glyph1Display.LineWidth = 1.0
+        glyph1Display.RenderLinesAsTubes = 0
+        glyph1Display.RenderPointsAsSpheres = 0
+        glyph1Display.Interpolation = 'Gouraud'
+        glyph1Display.Specular = 0.0
+        glyph1Display.SpecularColor = [1.0, 1.0, 1.0]
+        glyph1Display.SpecularPower = 100.0
+        glyph1Display.Luminosity = 0.0
+        glyph1Display.Ambient = 0.0
+        glyph1Display.Diffuse = 1.0
+        glyph1Display.Roughness = 0.3
+        glyph1Display.Metallic = 0.0
+        glyph1Display.EdgeTint = [1.0, 1.0, 1.0]
+        glyph1Display.Anisotropy = 0.0
+        glyph1Display.AnisotropyRotation = 0.0
+        glyph1Display.BaseIOR = 1.5
+        glyph1Display.CoatStrength = 0.0
+        glyph1Display.CoatIOR = 2.0
+        glyph1Display.CoatRoughness = 0.0
+        glyph1Display.CoatColor = [1.0, 1.0, 1.0]
+        glyph1Display.SelectTCoordArray = 'None'
+        glyph1Display.SelectNormalArray = 'None'
+        glyph1Display.SelectTangentArray = 'None'
+        glyph1Display.Texture = None
+        glyph1Display.RepeatTextures = 1
+        glyph1Display.InterpolateTextures = 0
+        glyph1Display.SeamlessU = 0
+        glyph1Display.SeamlessV = 0
+        glyph1Display.UseMipmapTextures = 0
+        glyph1Display.ShowTexturesOnBackface = 1
+        glyph1Display.BaseColorTexture = None
+        glyph1Display.NormalTexture = None
+        glyph1Display.NormalScale = 1.0
+        glyph1Display.CoatNormalTexture = None
+        glyph1Display.CoatNormalScale = 1.0
+        glyph1Display.MaterialTexture = None
+        glyph1Display.OcclusionStrength = 1.0
+        glyph1Display.AnisotropyTexture = None
+        glyph1Display.EmissiveTexture = None
+        glyph1Display.EmissiveFactor = [1.0, 1.0, 1.0]
+        glyph1Display.FlipTextures = 0
+        glyph1Display.BackfaceRepresentation = 'Follow Frontface'
+        glyph1Display.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+        glyph1Display.BackfaceOpacity = 1.0
+        glyph1Display.Position = [0.0, 0.0, 0.0]
+        glyph1Display.Scale = [1.0, 1.0, 1.0]
+        glyph1Display.Orientation = [0.0, 0.0, 0.0]
+        glyph1Display.Origin = [0.0, 0.0, 0.0]
+        glyph1Display.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+        glyph1Display.Pickable = 1
+        glyph1Display.Triangulate = 0
+        glyph1Display.UseShaderReplacements = 0
+        glyph1Display.ShaderReplacements = ''
+        glyph1Display.NonlinearSubdivisionLevel = 1
+        glyph1Display.UseDataPartitions = 0
+        glyph1Display.OSPRayUseScaleArray = 'All Approximate'
+        glyph1Display.OSPRayScaleArray = 'IsometryErrorFunction'
+        glyph1Display.OSPRayScaleFunction = 'PiecewiseFunction'
+        glyph1Display.OSPRayMaterial = 'None'
+        glyph1Display.BlockSelectors = ['/']
+        glyph1Display.BlockColors = []
+        glyph1Display.BlockOpacities = []
+        glyph1Display.Orient = 0
+        glyph1Display.OrientationMode = 'Direction'
+        glyph1Display.SelectOrientationVectors = 'Displacement dune-VTK'
+        glyph1Display.Scaling = 0
+        glyph1Display.ScaleMode = 'No Data Scaling Off'
+        glyph1Display.ScaleFactor = 0.205192768573761
+        glyph1Display.SelectScaleArray = 'IsometryErrorFunction'
+        glyph1Display.GlyphType = 'Arrow'
+        glyph1Display.UseGlyphTable = 0
+        glyph1Display.GlyphTableIndexArray = 'IsometryErrorFunction'
+        glyph1Display.UseCompositeGlyphTable = 0
+        glyph1Display.UseGlyphCullingAndLOD = 0
+        glyph1Display.LODValues = []
+        glyph1Display.ColorByLODIndex = 0
+        glyph1Display.GaussianRadius = 0.01025963842868805
+        glyph1Display.ShaderPreset = 'Sphere'
+        glyph1Display.CustomTriangleScale = 3
+        glyph1Display.CustomShader = """ // This custom shader code define a gaussian blur
+        // Please take a look into vtkSMPointGaussianRepresentation.cxx
+        // for other custom shader examples
+        //VTK::Color::Impl
+        float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+        float gaussian = exp(-0.5*dist2);
+        opacity = opacity*gaussian;
+        """
+        glyph1Display.Emissive = 0
+        glyph1Display.ScaleByArray = 0
+        glyph1Display.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+        glyph1Display.ScaleArrayComponent = ''
+        glyph1Display.UseScaleFunction = 1
+        glyph1Display.ScaleTransferFunction = 'PiecewiseFunction'
+        glyph1Display.OpacityByArray = 0
+        glyph1Display.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+        glyph1Display.OpacityArrayComponent = ''
+        glyph1Display.OpacityTransferFunction = 'PiecewiseFunction'
+        glyph1Display.DataAxesGrid = 'GridAxesRepresentation'
+        glyph1Display.SelectionCellLabelBold = 0
+        glyph1Display.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+        glyph1Display.SelectionCellLabelFontFamily = 'Arial'
+        glyph1Display.SelectionCellLabelFontFile = ''
+        glyph1Display.SelectionCellLabelFontSize = 18
+        glyph1Display.SelectionCellLabelItalic = 0
+        glyph1Display.SelectionCellLabelJustification = 'Left'
+        glyph1Display.SelectionCellLabelOpacity = 1.0
+        glyph1Display.SelectionCellLabelShadow = 0
+        glyph1Display.SelectionPointLabelBold = 0
+        glyph1Display.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+        glyph1Display.SelectionPointLabelFontFamily = 'Arial'
+        glyph1Display.SelectionPointLabelFontFile = ''
+        glyph1Display.SelectionPointLabelFontSize = 18
+        glyph1Display.SelectionPointLabelItalic = 0
+        glyph1Display.SelectionPointLabelJustification = 'Left'
+        glyph1Display.SelectionPointLabelOpacity = 1.0
+        glyph1Display.SelectionPointLabelShadow = 0
+        glyph1Display.PolarAxes = 'PolarAxesRepresentation'
+        glyph1Display.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+        glyph1Display.NumberOfSteps = 40
+        glyph1Display.StepSize = 0.25
+        glyph1Display.NormalizeVectors = 1
+        glyph1Display.EnhancedLIC = 1
+        glyph1Display.ColorMode = 'Blend'
+        glyph1Display.LICIntensity = 0.8
+        glyph1Display.MapModeBias = 0.0
+        glyph1Display.EnhanceContrast = 'Off'
+        glyph1Display.LowLICContrastEnhancementFactor = 0.0
+        glyph1Display.HighLICContrastEnhancementFactor = 0.0
+        glyph1Display.LowColorContrastEnhancementFactor = 0.0
+        glyph1Display.HighColorContrastEnhancementFactor = 0.0
+        glyph1Display.AntiAlias = 0
+        glyph1Display.MaskOnSurface = 1
+        glyph1Display.MaskThreshold = 0.0
+        glyph1Display.MaskIntensity = 0.0
+        glyph1Display.MaskColor = [0.5, 0.5, 0.5]
+        glyph1Display.GenerateNoiseTexture = 0
+        glyph1Display.NoiseType = 'Gaussian'
+        glyph1Display.NoiseTextureSize = 128
+        glyph1Display.NoiseGrainSize = 2
+        glyph1Display.MinNoiseValue = 0.0
+        glyph1Display.MaxNoiseValue = 0.8
+        glyph1Display.NumberOfNoiseLevels = 1024
+        glyph1Display.ImpulseNoiseProbability = 1.0
+        glyph1Display.ImpulseNoiseBackgroundValue = 0.0
+        glyph1Display.NoiseGeneratorSeed = 1
+        glyph1Display.CompositeStrategy = 'AUTO'
+        glyph1Display.UseLICForLOD = 0
+        glyph1Display.WriteLog = ''
+
+        # init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+        glyph1Display.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+        glyph1Display.OSPRayScaleFunction.UseLogScale = 0
+
+        # init the 'Arrow' selected for 'GlyphType'
+        glyph1Display.GlyphType.TipResolution = 30
+        glyph1Display.GlyphType.TipRadius = 0.075
+        glyph1Display.GlyphType.TipLength = 0.35
+        glyph1Display.GlyphType.ShaftResolution = 30
+        glyph1Display.GlyphType.ShaftRadius = 0.015
+        glyph1Display.GlyphType.Invert = 0
+
+        # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+        glyph1Display.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.0557803250849247, 1.0, 0.5, 0.0]
+        glyph1Display.ScaleTransferFunction.UseLogScale = 0
+
+        # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+        glyph1Display.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.0557803250849247, 1.0, 0.5, 0.0]
+        glyph1Display.OpacityTransferFunction.UseLogScale = 0
+
+        # init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+        glyph1Display.DataAxesGrid.XTitle = 'X Axis'
+        glyph1Display.DataAxesGrid.YTitle = 'Y Axis'
+        glyph1Display.DataAxesGrid.ZTitle = 'Z Axis'
+        glyph1Display.DataAxesGrid.XTitleFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.XTitleFontFile = ''
+        glyph1Display.DataAxesGrid.XTitleBold = 0
+        glyph1Display.DataAxesGrid.XTitleItalic = 0
+        glyph1Display.DataAxesGrid.XTitleFontSize = 12
+        glyph1Display.DataAxesGrid.XTitleShadow = 0
+        glyph1Display.DataAxesGrid.XTitleOpacity = 1.0
+        glyph1Display.DataAxesGrid.YTitleFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.YTitleFontFile = ''
+        glyph1Display.DataAxesGrid.YTitleBold = 0
+        glyph1Display.DataAxesGrid.YTitleItalic = 0
+        glyph1Display.DataAxesGrid.YTitleFontSize = 12
+        glyph1Display.DataAxesGrid.YTitleShadow = 0
+        glyph1Display.DataAxesGrid.YTitleOpacity = 1.0
+        glyph1Display.DataAxesGrid.ZTitleFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.ZTitleFontFile = ''
+        glyph1Display.DataAxesGrid.ZTitleBold = 0
+        glyph1Display.DataAxesGrid.ZTitleItalic = 0
+        glyph1Display.DataAxesGrid.ZTitleFontSize = 12
+        glyph1Display.DataAxesGrid.ZTitleShadow = 0
+        glyph1Display.DataAxesGrid.ZTitleOpacity = 1.0
+        glyph1Display.DataAxesGrid.FacesToRender = 63
+        glyph1Display.DataAxesGrid.CullBackface = 0
+        glyph1Display.DataAxesGrid.CullFrontface = 1
+        glyph1Display.DataAxesGrid.ShowGrid = 0
+        glyph1Display.DataAxesGrid.ShowEdges = 1
+        glyph1Display.DataAxesGrid.ShowTicks = 1
+        glyph1Display.DataAxesGrid.LabelUniqueEdgesOnly = 1
+        glyph1Display.DataAxesGrid.AxesToLabel = 63
+        glyph1Display.DataAxesGrid.XLabelFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.XLabelFontFile = ''
+        glyph1Display.DataAxesGrid.XLabelBold = 0
+        glyph1Display.DataAxesGrid.XLabelItalic = 0
+        glyph1Display.DataAxesGrid.XLabelFontSize = 12
+        glyph1Display.DataAxesGrid.XLabelShadow = 0
+        glyph1Display.DataAxesGrid.XLabelOpacity = 1.0
+        glyph1Display.DataAxesGrid.YLabelFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.YLabelFontFile = ''
+        glyph1Display.DataAxesGrid.YLabelBold = 0
+        glyph1Display.DataAxesGrid.YLabelItalic = 0
+        glyph1Display.DataAxesGrid.YLabelFontSize = 12
+        glyph1Display.DataAxesGrid.YLabelShadow = 0
+        glyph1Display.DataAxesGrid.YLabelOpacity = 1.0
+        glyph1Display.DataAxesGrid.ZLabelFontFamily = 'Arial'
+        glyph1Display.DataAxesGrid.ZLabelFontFile = ''
+        glyph1Display.DataAxesGrid.ZLabelBold = 0
+        glyph1Display.DataAxesGrid.ZLabelItalic = 0
+        glyph1Display.DataAxesGrid.ZLabelFontSize = 12
+        glyph1Display.DataAxesGrid.ZLabelShadow = 0
+        glyph1Display.DataAxesGrid.ZLabelOpacity = 1.0
+        glyph1Display.DataAxesGrid.XAxisNotation = 'Mixed'
+        glyph1Display.DataAxesGrid.XAxisPrecision = 2
+        glyph1Display.DataAxesGrid.XAxisUseCustomLabels = 0
+        glyph1Display.DataAxesGrid.XAxisLabels = []
+        glyph1Display.DataAxesGrid.YAxisNotation = 'Mixed'
+        glyph1Display.DataAxesGrid.YAxisPrecision = 2
+        glyph1Display.DataAxesGrid.YAxisUseCustomLabels = 0
+        glyph1Display.DataAxesGrid.YAxisLabels = []
+        glyph1Display.DataAxesGrid.ZAxisNotation = 'Mixed'
+        glyph1Display.DataAxesGrid.ZAxisPrecision = 2
+        glyph1Display.DataAxesGrid.ZAxisUseCustomLabels = 0
+        glyph1Display.DataAxesGrid.ZAxisLabels = []
+        glyph1Display.DataAxesGrid.UseCustomBounds = 0
+        glyph1Display.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+        # init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+        glyph1Display.PolarAxes.Visibility = 0
+        glyph1Display.PolarAxes.Translation = [0.0, 0.0, 0.0]
+        glyph1Display.PolarAxes.Scale = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+        glyph1Display.PolarAxes.EnableCustomBounds = [0, 0, 0]
+        glyph1Display.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+        glyph1Display.PolarAxes.EnableCustomRange = 0
+        glyph1Display.PolarAxes.CustomRange = [0.0, 1.0]
+        glyph1Display.PolarAxes.PolarAxisVisibility = 1
+        glyph1Display.PolarAxes.RadialAxesVisibility = 1
+        glyph1Display.PolarAxes.DrawRadialGridlines = 1
+        glyph1Display.PolarAxes.PolarArcsVisibility = 1
+        glyph1Display.PolarAxes.DrawPolarArcsGridlines = 1
+        glyph1Display.PolarAxes.NumberOfRadialAxes = 0
+        glyph1Display.PolarAxes.AutoSubdividePolarAxis = 1
+        glyph1Display.PolarAxes.NumberOfPolarAxis = 0
+        glyph1Display.PolarAxes.MinimumRadius = 0.0
+        glyph1Display.PolarAxes.MinimumAngle = 0.0
+        glyph1Display.PolarAxes.MaximumAngle = 90.0
+        glyph1Display.PolarAxes.RadialAxesOriginToPolarAxis = 1
+        glyph1Display.PolarAxes.Ratio = 1.0
+        glyph1Display.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+        glyph1Display.PolarAxes.PolarAxisTitleVisibility = 1
+        glyph1Display.PolarAxes.PolarAxisTitle = 'Radial Distance'
+        glyph1Display.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+        glyph1Display.PolarAxes.PolarLabelVisibility = 1
+        glyph1Display.PolarAxes.PolarLabelFormat = '%-#6.3g'
+        glyph1Display.PolarAxes.PolarLabelExponentLocation = 'Labels'
+        glyph1Display.PolarAxes.RadialLabelVisibility = 1
+        glyph1Display.PolarAxes.RadialLabelFormat = '%-#3.1f'
+        glyph1Display.PolarAxes.RadialLabelLocation = 'Bottom'
+        glyph1Display.PolarAxes.RadialUnitsVisibility = 1
+        glyph1Display.PolarAxes.ScreenSize = 10.0
+        glyph1Display.PolarAxes.PolarAxisTitleOpacity = 1.0
+        glyph1Display.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+        glyph1Display.PolarAxes.PolarAxisTitleFontFile = ''
+        glyph1Display.PolarAxes.PolarAxisTitleBold = 0
+        glyph1Display.PolarAxes.PolarAxisTitleItalic = 0
+        glyph1Display.PolarAxes.PolarAxisTitleShadow = 0
+        glyph1Display.PolarAxes.PolarAxisTitleFontSize = 12
+        glyph1Display.PolarAxes.PolarAxisLabelOpacity = 1.0
+        glyph1Display.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+        glyph1Display.PolarAxes.PolarAxisLabelFontFile = ''
+        glyph1Display.PolarAxes.PolarAxisLabelBold = 0
+        glyph1Display.PolarAxes.PolarAxisLabelItalic = 0
+        glyph1Display.PolarAxes.PolarAxisLabelShadow = 0
+        glyph1Display.PolarAxes.PolarAxisLabelFontSize = 12
+        glyph1Display.PolarAxes.LastRadialAxisTextOpacity = 1.0
+        glyph1Display.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+        glyph1Display.PolarAxes.LastRadialAxisTextFontFile = ''
+        glyph1Display.PolarAxes.LastRadialAxisTextBold = 0
+        glyph1Display.PolarAxes.LastRadialAxisTextItalic = 0
+        glyph1Display.PolarAxes.LastRadialAxisTextShadow = 0
+        glyph1Display.PolarAxes.LastRadialAxisTextFontSize = 12
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextBold = 0
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextItalic = 0
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextShadow = 0
+        glyph1Display.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+        glyph1Display.PolarAxes.EnableDistanceLOD = 1
+        glyph1Display.PolarAxes.DistanceLODThreshold = 0.7
+        glyph1Display.PolarAxes.EnableViewAngleLOD = 1
+        glyph1Display.PolarAxes.ViewAngleLODThreshold = 0.7
+        glyph1Display.PolarAxes.SmallestVisiblePolarAngle = 0.5
+        glyph1Display.PolarAxes.PolarTicksVisibility = 1
+        glyph1Display.PolarAxes.ArcTicksOriginToPolarAxis = 1
+        glyph1Display.PolarAxes.TickLocation = 'Both'
+        glyph1Display.PolarAxes.AxisTickVisibility = 1
+        glyph1Display.PolarAxes.AxisMinorTickVisibility = 0
+        glyph1Display.PolarAxes.ArcTickVisibility = 1
+        glyph1Display.PolarAxes.ArcMinorTickVisibility = 0
+        glyph1Display.PolarAxes.DeltaAngleMajor = 10.0
+        glyph1Display.PolarAxes.DeltaAngleMinor = 5.0
+        glyph1Display.PolarAxes.PolarAxisMajorTickSize = 0.0
+        glyph1Display.PolarAxes.PolarAxisTickRatioSize = 0.3
+        glyph1Display.PolarAxes.PolarAxisMajorTickThickness = 1.0
+        glyph1Display.PolarAxes.PolarAxisTickRatioThickness = 0.5
+        glyph1Display.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+        glyph1Display.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+        glyph1Display.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+        glyph1Display.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+        glyph1Display.PolarAxes.ArcMajorTickSize = 0.0
+        glyph1Display.PolarAxes.ArcTickRatioSize = 0.3
+        glyph1Display.PolarAxes.ArcMajorTickThickness = 1.0
+        glyph1Display.PolarAxes.ArcTickRatioThickness = 0.5
+        glyph1Display.PolarAxes.Use2DMode = 0
+        glyph1Display.PolarAxes.UseLogAxis = 0
+
+        # show color bar/color legend
+        glyph1Display.SetScalarBarVisibility(renderView1, True)
+
+        # update the view to ensure updated data information
+        renderView1.Update()
+
+        # Rescale transfer function
+        displacementduneVTKLUT.RescaleTransferFunction(0.0, 1.3513808010835129)
+
+        # Rescale transfer function
+        displacementduneVTKPWF.RescaleTransferFunction(0.0, 1.3513808010835127)
+
+        # Properties modified on glyph1
+        glyph1.Stride = 25
+
+        # update the view to ensure updated data information
+        renderView1.Update()
+
+        # Rescale transfer function
+        displacementduneVTKLUT.RescaleTransferFunction(0.0, 1.3513808010835129)
+
+        # Properties modified on glyph1
+        glyph1.Stride = 30
+
+        # update the view to ensure updated data information
+        renderView1.Update()
+
+        # Rescale transfer function
+        displacementduneVTKLUT.RescaleTransferFunction(0.0, 1.3513808010835129)
+
+        # Properties modified on glyph1
+        glyph1.Stride = 40
+
+        # update the view to ensure updated data information
+        renderView1.Update()
+
+        # Rescale transfer function
+        displacementduneVTKLUT.RescaleTransferFunction(0.0, 1.3513808010835129)
+
+        # turn off scalar coloring
+        ColorBy(glyph1Display, None)
+
+        # Hide the scalar bar for this color map if no visible data is colored by it.
+        HideScalarBarIfNotNeeded(isometryErrorFunctionLUT, renderView1)
+
+        # change solid color (Black)
+        # glyph1Display.AmbientColor = [0.0, 0.0, 0.0]
+        # glyph1Display.DiffuseColor = [0.0, 0.0, 0.0]
+
+        # change solid color    (DarkBlue)
+        glyph1Display.AmbientColor = [0.0, 0.3333333333333333, 0.4980392156862745]
+        glyph1Display.DiffuseColor = [0.0, 0.3333333333333333, 0.4980392156862745]
+
+        # Properties modified on glyph1Display
+        glyph1Display.Opacity = 0.25
+
+        # Properties modified on glyph1Display
+        glyph1Display.Specular = 1.0
+
+        # Properties modified on glyph1Display
+        glyph1Display.Specular = 0.0
+
+        # Properties modified on glyph1Display
+        glyph1Display.Ambient = 0.2
+
+    #================================================================
+    # addendum: following script captures some of the application
+    # state to faithfully reproduce the visualization during playback
+    #================================================================
+
+    # get layout
+    layout1 = GetLayout()
+
+    print('layout1:',layout1)
+
+    #--------------------------------
+    # saving layout sizes for layouts
+
+    # layout/tab size in pixels
+    layout1.SetSize(1526, 873)
+
+    #-----------------------------------
+    # saving camera placements for views
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.5317894883522003, -7.950546149218976, 1.8355840818083122]
+    renderView1.CameraFocalPoint = [-0.3373855559365908, -2.646797497088115, 0.9959448222039734]
+    renderView1.CameraViewUp = [-0.0628645081836353, 0.15830147075535642, 0.9853875876869572]
+    renderView1.CameraViewAngle = 25.620465826651394
+    renderView1.CameraParallelScale = 1.3907168028548302
+
+
+
+    #Camera View:
+    # # get active view
+    # renderView1 = GetActiveViewOrCreate('RenderView')
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # # reset view to fit data bounds
+    # renderView1.ResetCamera(-1.0, 1.0257619619369507, -0.9359287619590759, 0.9359057545661926, -0.32227325439453125, 0.3284286856651306, True)
+
+    # # reset view to fit data bounds
+    # renderView1.ResetCamera(-1.0, 1.0257619619369507, -0.9359287619590759, 0.9359057545661926, -0.32227325439453125, 0.3284286856651306, False)
+
+    # # reset view to fit data bounds
+    # renderView1.ResetCamera(-1.0, 1.0257619619369507, -0.9359287619590759, 0.9359057545661926, -0.32227325439453125, 0.3284286856651306, False)
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+
+    # #================================================================
+    # # addendum: following script captures some of the application
+    # # state to faithfully reproduce the visualization during playback
+    # #================================================================
+
+    # # get layout
+    # layout1 = GetLayout()
+
+    # #--------------------------------
+    # # saving layout sizes for layouts
+
+    # # layout/tab size in pixels
+    # layout1.SetSize(1526, 873)
+
+    # #-----------------------------------
+    # # saving camera placements for views
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [-0.018803465136511217, -6.344229746084431, 0.8643549211317467]
+    # renderView1.CameraFocalPoint = [-0.012119019404053688, -0.0020669102668762207, 0.4409867525100708]
+    # renderView1.CameraViewUp = [-0.03973953847604448, 0.06659538567372057, 0.9969883769075141]
+    # renderView1.CameraViewAngle = 20.04581901489118
+    # renderView1.CameraParallelScale = 1.645126712646716
+
+
+    # # get active view
+    # renderView1 = GetActiveViewOrCreate('RenderView')
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.6190132298381256, -5.978102214366906, 2.4112112938696906]
+    # renderView1.CameraFocalPoint = [-0.012119019404053688, -2.568960189819349e-05, 0.45254665613174444]
+    # renderView1.CameraViewUp = [-0.05404025977722483, 0.305743653322491, 0.9505790176393684]
+    # renderView1.CameraViewAngle = 24.32226040473463
+    # renderView1.CameraParallelScale = 1.6363442723895476
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.3561670752092, -6.043235495365254, 2.2735558848687107]
+    # renderView1.CameraFocalPoint = [-0.012119019404053686, -2.568960189819236e-05, 0.4525466561317445]
+    # renderView1.CameraViewUp = [-0.05311946210744569, 0.28514078064511844, 0.9570125693837611]
+    # renderView1.CameraViewAngle = 24.32226040473463
+    # renderView1.CameraParallelScale = 1.6363442723895476
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.013021130832849942, -5.989702202981394, 2.4762159109807733]
+    # renderView1.CameraFocalPoint = [-0.01211901940405369, -2.5689601898192394e-05, 0.4525466561317443]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 24.32226040473463
+    # renderView1.CameraParallelScale = 1.6363442723895476
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.018300562382599708, -7.247534270791088, 2.9011864544990695]
+    # renderView1.CameraFocalPoint = [-0.01211901940405369, -2.5689601898192394e-05, 0.4525466561317443]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 24.32226040473463
+    # renderView1.CameraParallelScale = 1.6363442723895476
+
+    # # reset view to fit data bounds
+    # renderView1.ResetCamera(-1.0, 1.0257619619369507, -0.9359287619590759, 0.9359057545661926, -0.32227325439453125, 0.3284286856651306, True)
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.03465030801593522, -5.186584602883577, 1.7554108333598906]
+    # renderView1.CameraFocalPoint = [0.012880980968475342, -1.150369644165039e-05, 0.0030777156352996826]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 17.52577319587629
+    # renderView1.CameraParallelScale = 1.416941159547869
+
+    # # reset view to fit data
+    # renderView1.ResetCamera(True)
+    # # Adjust camera
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.013021130832849927, -5.98970220298139, 2.4762159109807724]
+    # renderView1.CameraFocalPoint = [-0.012119019404053688, -2.568960189819336e-05, 0.4525466561317444]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 24.4749904543719
+    # renderView1.CameraParallelScale = 1.6363442723895476
+
+    # #================================================================
+    # # addendum: following script captures some of the application
+    # # state to faithfully reproduce the visualization during playback
+    # #================================================================
+
+    # # get layout
+    # layout1 = GetLayout()
+
+    # #--------------------------------
+    # # saving layout sizes for layouts
+
+    # # layout/tab size in pixels
+    # layout1.SetSize(2634, 873)
+
+    # #-----------------------------------
+    # # saving camera placements for views
+
+    # # current camera placement for renderView1
+    # renderView1.CameraPosition = [0.013021130832849927, -5.98970220298139, 2.4762159109807724]
+    # renderView1.CameraFocalPoint = [-0.012119019404053688, -2.568960189819336e-05, 0.4525466561317444]
+    # renderView1.CameraViewUp = [-0.052765304975756634, 0.3194397242049962, 0.9461363988298154]
+    # renderView1.CameraViewAngle = 24.4749904543719
+    # renderView1.CameraParallelScale = 1.6363442723895476
+
+
+    # CAMERA ANGLE : 
+    # get active view
+    renderView1 = GetActiveViewOrCreate('RenderView')
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.3406855662763682, -6.09404732570838, 2.3533248674216507]
+    renderView1.CameraFocalPoint = [-0.012119019404053686, 0.0024850368499755933, 0.4612774252891543]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 22.909507445589917
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.340685566276368, -6.094047325708376, 2.353324867421649]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975586, 0.46127742528915405]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.340685566276368, -6.094047325708376, 2.353324867421649]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975586, 0.46127742528915405]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.340685566276368, -6.094047325708376, 2.353324867421649]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975586, 0.46127742528915405]
+    renderView1.CameraViewUp = [-0.004294862018419483, 0.296610486207875, 0.9549888866535415]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    #================================================================
+    # addendum: following script captures some of the application
+    # state to faithfully reproduce the visualization during playback
+    #================================================================
+
+    # get layout
+    layout1 = GetLayout()
+
+    #--------------------------------
+    # saving layout sizes for layouts
+
+    # layout/tab size in pixels
+    layout1.SetSize(2634, 873)
+
+    #-----------------------------------
+    # saving camera placements for views
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [-0.2801298596202444, -6.068765481441859, 2.4420837460567193]
+    renderView1.CameraFocalPoint = [-0.012119019404053688, 0.002485036849975583, 0.4612774252891541]
+    renderView1.CameraViewUp = [-0.003588791982126036, 0.3103104941288703, 0.9506284856901804]
+    renderView1.CameraViewAngle = 23.253150057273768
+    renderView1.CameraParallelScale = 1.6543276528524797
+
+    #-----------------------------------------
+
+
+    # NEW CAMERA ANGLE 
+    # get active view
+    renderView1 = GetActiveViewOrCreate('RenderView')
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [0.029912744310289893, -5.070841782883837, 2.2549998815448675]
+    renderView1.CameraFocalPoint = [-0.01429512538015842, -0.00023770332336425738, 0.013518139719963074]
+    renderView1.CameraViewUp = [-0.00012445946588129702, 0.4043111685224597, 0.9146214864728713]
+    renderView1.CameraViewAngle = 15.234822451317298
+    renderView1.CameraParallelScale = 1.434922768089897
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [0.13564184339304414, -5.002529762527205, 2.399270332667408]
+    renderView1.CameraFocalPoint = [-0.01429512538015842, -0.00023770332336425751, 0.013518139719963072]
+    renderView1.CameraViewUp = [-0.00025096931135483794, 0.4304728027354104, 0.9026035137974622]
+    renderView1.CameraViewAngle = 15.234822451317298
+    renderView1.CameraParallelScale = 1.434922768089897
+    # Adjust camera
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [0.1351322919568179, -4.837566763896823, 2.718169591018591]
+    renderView1.CameraFocalPoint = [-0.014295125380158416, -0.00023770332336425754, 0.013518139719963074]
+    renderView1.CameraViewUp = [-0.0025668859947288896, 0.4879570721064113, 0.8728638535749024]
+    renderView1.CameraViewAngle = 15.234822451317298
+    renderView1.CameraParallelScale = 1.434922768089897
+
+    #================================================================
+    # addendum: following script captures some of the application
+    # state to faithfully reproduce the visualization during playback
+    #================================================================
+
+    # get layout
+    layout1 = GetLayout()
+
+    #--------------------------------
+    # saving layout sizes for layouts
+
+    # layout/tab size in pixels
+    layout1.SetSize(2634, 873)
+
+    #-----------------------------------
+    # saving camera placements for views
+
+    # current camera placement for renderView1
+    renderView1.CameraPosition = [0.1351322919568179, -4.837566763896823, 2.718169591018591]
+    renderView1.CameraFocalPoint = [-0.014295125380158416, -0.00023770332336425754, 0.013518139719963074]
+    renderView1.CameraViewUp = [-0.0025668859947288896, 0.4879570721064113, 0.8728638535749024]
+    renderView1.CameraViewAngle = 15.234822451317298
+    renderView1.CameraParallelScale = 1.434922768089897
+    ###
+
+
+
+    # BIRDSVIEW:
+    # get active source.
+    warpByVector1 = GetActiveSource()
+
+    # get active view
+    renderView1 = GetActiveViewOrCreate('RenderView')
+
+    # hide data in view
+    Hide(warpByVector1, renderView1)
+
+    # find source
+    cylindrical_2variableBC_delta05_level3_NCvtu = FindSource('cylindrical_2variableBC_delta05_level3_NC.vtu')
+
+    # set active source
+    SetActiveSource(cylindrical_2variableBC_delta05_level3_NCvtu)
+
+    # show data in view
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay = Show(cylindrical_2variableBC_delta05_level3_NCvtu, renderView1, 'UnstructuredGridRepresentation')
+
+    # get 2D transfer function for 'DisplacementduneVTK'
+    displacementduneVTKTF2D = GetTransferFunction2D('DisplacementduneVTK')
+    displacementduneVTKTF2D.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    displacementduneVTKTF2D.Boxes = []
+    displacementduneVTKTF2D.ScalarRangeInitialized = 0
+    displacementduneVTKTF2D.Range = [0.0, 1.0, 0.0, 1.0]
+    displacementduneVTKTF2D.OutputDimensions = [10, 10]
+
+    # get color transfer function/color map for 'DisplacementduneVTK'
+    displacementduneVTKLUT = GetColorTransferFunction('DisplacementduneVTK')
+    displacementduneVTKLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
+    displacementduneVTKLUT.InterpretValuesAsCategories = 0
+    displacementduneVTKLUT.AnnotationsInitialized = 0
+    displacementduneVTKLUT.ShowCategoricalColorsinDataRangeOnly = 0
+    displacementduneVTKLUT.RescaleOnVisibilityChange = 0
+    displacementduneVTKLUT.EnableOpacityMapping = 0
+    displacementduneVTKLUT.TransferFunction2D = displacementduneVTKTF2D
+    displacementduneVTKLUT.Use2DTransferFunction = 0
+    displacementduneVTKLUT.RGBPoints = [0.00013513808010835127, 0.0, 0.266667, 0.105882, 0.0002408561525676924, 0.0, 0.347374, 0.139346, 0.00042927712294860734, 0.000538, 0.427912, 0.172933, 0.0007651027177836129, 0.069435, 0.486967, 0.222145, 0.001363640039703789, 0.138178, 0.546082, 0.271326, 0.0024304111260643295, 0.197232, 0.609073, 0.31857, 0.0043317136998854795, 0.257255, 0.671742, 0.365859, 0.007720398979641159, 0.357647, 0.720953, 0.415071, 0.013760077649046323, 0.45767, 0.769919, 0.465021, 0.024524589381361806, 0.546251, 0.811257, 0.537855, 0.04371009442313549, 0.634295, 0.852211, 0.610688, 0.07790435651213874, 0.709097, 0.883706, 0.683522, 0.13884867657385053, 0.78316, 0.914833, 0.755894, 0.2474706759997296, 0.842215, 0.938454, 0.818885, 0.44106616615265487, 0.899977, 0.961538, 0.880692, 0.7861107670179635, 0.935409, 0.975317, 0.92203, 1.3513808010835129, 0.968627, 0.988235, 0.960784]
+    displacementduneVTKLUT.UseLogScale = 1
+    displacementduneVTKLUT.UseOpacityControlPointsFreehandDrawing = 0
+    displacementduneVTKLUT.ShowDataHistogram = 0
+    displacementduneVTKLUT.AutomaticDataHistogramComputation = 0
+    displacementduneVTKLUT.DataHistogramNumberOfBins = 10
+    displacementduneVTKLUT.ColorSpace = 'Lab'
+    displacementduneVTKLUT.UseBelowRangeColor = 0
+    displacementduneVTKLUT.BelowRangeColor = [0.0, 0.0, 0.0]
+    displacementduneVTKLUT.UseAboveRangeColor = 0
+    displacementduneVTKLUT.AboveRangeColor = [0.5, 0.5, 0.5]
+    displacementduneVTKLUT.NanColor = [1.0, 1.0, 0.0]
+    displacementduneVTKLUT.NanOpacity = 1.0
+    displacementduneVTKLUT.Discretize = 1
+    displacementduneVTKLUT.NumberOfTableValues = 256
+    displacementduneVTKLUT.ScalarRangeInitialized = 1.0
+    displacementduneVTKLUT.HSVWrap = 0
+    displacementduneVTKLUT.VectorComponent = 0
+    displacementduneVTKLUT.VectorMode = 'Magnitude'
+    displacementduneVTKLUT.AllowDuplicateScalars = 1
+    displacementduneVTKLUT.Annotations = []
+    displacementduneVTKLUT.ActiveAnnotatedValues = []
+    displacementduneVTKLUT.IndexedColors = []
+    displacementduneVTKLUT.IndexedOpacities = []
+
+    # get opacity transfer function/opacity map for 'DisplacementduneVTK'
+    displacementduneVTKPWF = GetOpacityTransferFunction('DisplacementduneVTK')
+    displacementduneVTKPWF.Points = [0.00013513808010835127, 0.0, 0.5, 0.0, 1.3513808010835127, 1.0, 0.5, 0.0]
+    displacementduneVTKPWF.AllowDuplicateScalars = 1
+    displacementduneVTKPWF.UseLogScale = 0
+    displacementduneVTKPWF.ScalarRangeInitialized = 1
+
+    # trace defaults for the display properties.
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Selection = None
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Representation = 'Surface'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ColorArrayName = ['POINTS', 'Displacement dune-VTK']
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.LookupTable = displacementduneVTKLUT
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MapScalars = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MultiComponentsMapping = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.InterpolateScalarsBeforeMapping = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Opacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PointSize = 2.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.LineWidth = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.RenderLinesAsTubes = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.RenderPointsAsSpheres = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Interpolation = 'Gouraud'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Specular = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SpecularColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SpecularPower = 100.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Luminosity = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Ambient = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Diffuse = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Roughness = 0.3
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Metallic = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.EdgeTint = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Anisotropy = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.AnisotropyRotation = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.BaseIOR = 1.5
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CoatStrength = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CoatIOR = 2.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CoatRoughness = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CoatColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectTCoordArray = 'None'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectNormalArray = 'None'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectTangentArray = 'None'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Texture = None
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.RepeatTextures = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.InterpolateTextures = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SeamlessU = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SeamlessV = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseMipmapTextures = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ShowTexturesOnBackface = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.BaseColorTexture = None
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NormalTexture = None
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NormalScale = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CoatNormalTexture = None
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CoatNormalScale = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MaterialTexture = None
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OcclusionStrength = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.AnisotropyTexture = None
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.EmissiveTexture = None
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.EmissiveFactor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.FlipTextures = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.BackfaceRepresentation = 'Follow Frontface'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.BackfaceAmbientColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.BackfaceOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Position = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Scale = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Orientation = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Origin = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CoordinateShiftScaleMethod = 'Always Auto Shift Scale'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Pickable = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Triangulate = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseShaderReplacements = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ShaderReplacements = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NonlinearSubdivisionLevel = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseDataPartitions = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OSPRayUseScaleArray = 'All Approximate'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OSPRayScaleArray = 'IsometryErrorFunction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OSPRayScaleFunction = 'PiecewiseFunction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OSPRayMaterial = 'None'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.BlockSelectors = ['/']
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.BlockColors = []
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.BlockOpacities = []
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Orient = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OrientationMode = 'Direction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectOrientationVectors = 'Displacement dune-VTK'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Scaling = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ScaleMode = 'No Data Scaling Off'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ScaleFactor = 0.2
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectScaleArray = 'IsometryErrorFunction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GlyphType = 'Arrow'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseGlyphTable = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GlyphTableIndexArray = 'IsometryErrorFunction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseCompositeGlyphTable = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseGlyphCullingAndLOD = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.LODValues = []
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ColorByLODIndex = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GaussianRadius = 0.01
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ShaderPreset = 'Sphere'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CustomTriangleScale = 3
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CustomShader = """ // This custom shader code define a gaussian blur
+        // Please take a look into vtkSMPointGaussianRepresentation.cxx
+        // for other custom shader examples
+        //VTK::Color::Impl
+        float dist2 = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);
+        float gaussian = exp(-0.5*dist2);
+        opacity = opacity*gaussian;
+        """
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Emissive = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ScaleByArray = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SetScaleArray = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ScaleArrayComponent = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseScaleFunction = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ScaleTransferFunction = 'PiecewiseFunction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OpacityByArray = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OpacityArray = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OpacityArrayComponent = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OpacityTransferFunction = 'PiecewiseFunction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid = 'GridAxesRepresentation'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionCellLabelBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionCellLabelColor = [0.0, 1.0, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionCellLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionCellLabelFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionCellLabelFontSize = 18
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionCellLabelItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionCellLabelJustification = 'Left'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionCellLabelOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionCellLabelShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionPointLabelBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionPointLabelColor = [1.0, 1.0, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionPointLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionPointLabelFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionPointLabelFontSize = 18
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionPointLabelItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionPointLabelJustification = 'Left'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionPointLabelOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectionPointLabelShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes = 'PolarAxesRepresentation'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ScalarOpacityFunction = displacementduneVTKPWF
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ScalarOpacityUnitDistance = 0.22272467953508482
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseSeparateOpacityArray = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OpacityArrayName = ['POINTS', 'IsometryErrorFunction']
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OpacityComponent = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectMapper = 'Projected tetra'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SamplingDimensions = [128, 128, 128]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseFloatingPointFrameBuffer = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SelectInputVectors = ['POINTS', 'Displacement dune-VTK']
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NumberOfSteps = 40
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.StepSize = 0.25
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NormalizeVectors = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.EnhancedLIC = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ColorMode = 'Blend'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.LICIntensity = 0.8
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MapModeBias = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.EnhanceContrast = 'Off'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.LowLICContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.HighLICContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.LowColorContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.HighColorContrastEnhancementFactor = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.AntiAlias = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MaskOnSurface = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MaskThreshold = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MaskIntensity = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MaskColor = [0.5, 0.5, 0.5]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GenerateNoiseTexture = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NoiseType = 'Gaussian'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NoiseTextureSize = 128
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NoiseGrainSize = 2
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MinNoiseValue = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.MaxNoiseValue = 0.8
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NumberOfNoiseLevels = 1024
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ImpulseNoiseProbability = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ImpulseNoiseBackgroundValue = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NoiseGeneratorSeed = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.CompositeStrategy = 'AUTO'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.UseLICForLOD = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.WriteLog = ''
+
+    # init the 'PiecewiseFunction' selected for 'OSPRayScaleFunction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OSPRayScaleFunction.Points = [0.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OSPRayScaleFunction.UseLogScale = 0
+
+    # init the 'Arrow' selected for 'GlyphType'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GlyphType.TipResolution = 6
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GlyphType.TipRadius = 0.1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GlyphType.TipLength = 0.35
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GlyphType.ShaftResolution = 6
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GlyphType.ShaftRadius = 0.03
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.GlyphType.Invert = 0
+
+    # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ScaleTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.ScaleTransferFunction.UseLogScale = 0
+
+    # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OpacityTransferFunction.Points = [0.0, 0.0, 0.5, 0.0, 0.060643404722213745, 1.0, 0.5, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.OpacityTransferFunction.UseLogScale = 0
+
+    # init the 'GridAxesRepresentation' selected for 'DataAxesGrid'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XTitle = 'X Axis'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YTitle = 'Y Axis'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZTitle = 'Z Axis'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XTitleFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XTitleBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XTitleItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XTitleFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XTitleShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XTitleOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YTitleFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YTitleBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YTitleItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YTitleFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YTitleShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YTitleOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZTitleBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZTitleItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZTitleFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZTitleShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZTitleOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.FacesToRender = 63
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.CullBackface = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.CullFrontface = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ShowGrid = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ShowEdges = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ShowTicks = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.LabelUniqueEdgesOnly = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.AxesToLabel = 63
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XLabelFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XLabelBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XLabelItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XLabelFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XLabelShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XLabelOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YLabelFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YLabelBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YLabelItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YLabelFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YLabelShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YLabelOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZLabelBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZLabelItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZLabelFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZLabelShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZLabelOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XAxisNotation = 'Mixed'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XAxisPrecision = 2
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XAxisUseCustomLabels = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.XAxisLabels = []
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YAxisNotation = 'Mixed'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YAxisPrecision = 2
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YAxisUseCustomLabels = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.YAxisLabels = []
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZAxisNotation = 'Mixed'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZAxisPrecision = 2
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZAxisUseCustomLabels = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.ZAxisLabels = []
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.UseCustomBounds = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.DataAxesGrid.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+
+    # init the 'PolarAxesRepresentation' selected for 'PolarAxes'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.Visibility = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.Translation = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.Scale = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.Orientation = [0.0, 0.0, 0.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.EnableCustomBounds = [0, 0, 0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.CustomBounds = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.EnableCustomRange = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.CustomRange = [0.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.RadialAxesVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.DrawRadialGridlines = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarArcsVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.DrawPolarArcsGridlines = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.NumberOfRadialAxes = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.AutoSubdividePolarAxis = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.NumberOfPolarAxis = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.MinimumRadius = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.MinimumAngle = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.MaximumAngle = 90.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.RadialAxesOriginToPolarAxis = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.Ratio = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarArcsColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SecondaryPolarArcsColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesColor = [1.0, 1.0, 1.0]
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitle = 'Radial Distance'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleLocation = 'Bottom'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarLabelVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarLabelFormat = '%-#6.3g'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarLabelExponentLocation = 'Labels'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.RadialLabelVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.RadialLabelFormat = '%-#3.1f'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.RadialLabelLocation = 'Bottom'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.RadialUnitsVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.ScreenSize = 10.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTitleFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisLabelFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTextFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextOpacity = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFamily = 'Arial'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontFile = ''
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextBold = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextItalic = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextShadow = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SecondaryRadialAxesTextFontSize = 12
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.EnableDistanceLOD = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.DistanceLODThreshold = 0.7
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.EnableViewAngleLOD = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.ViewAngleLODThreshold = 0.7
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.SmallestVisiblePolarAngle = 0.5
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarTicksVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.ArcTicksOriginToPolarAxis = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.TickLocation = 'Both'
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.AxisTickVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.AxisMinorTickVisibility = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.ArcTickVisibility = 1
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.ArcMinorTickVisibility = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.DeltaAngleMajor = 10.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.DeltaAngleMinor = 5.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisMajorTickSize = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTickRatioSize = 0.3
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisMajorTickThickness = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.PolarAxisTickRatioThickness = 0.5
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisMajorTickSize = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTickRatioSize = 0.3
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisMajorTickThickness = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.LastRadialAxisTickRatioThickness = 0.5
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.ArcMajorTickSize = 0.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.ArcTickRatioSize = 0.3
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.ArcMajorTickThickness = 1.0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.ArcTickRatioThickness = 0.5
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.Use2DMode = 0
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.PolarAxes.UseLogAxis = 0
+
+    # hide color bar/color legend
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.SetScalarBarVisibility(renderView1, False)
+
+    # Properties modified on cylindrical_2variableBC_delta05_level3_NCvtuDisplay
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.NonlinearSubdivisionLevel = 4
+
+    # Properties modified on cylindrical_2variableBC_delta05_level3_NCvtuDisplay
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.Ambient = 0.2
+
+    renderView1.ResetActiveCameraToPositiveZ()
+
+    # reset view to fit data
+    renderView1.ResetCamera(False)
+
+    renderView1.ResetActiveCameraToNegativeZ()
+
+    # reset view to fit data
+    renderView1.ResetCamera(False)
+
+    # reset view to fit data bounds
+    renderView1.ResetCamera(-1.0, 1.0, -1.0, 1.0, 0.0, 0.0, False)
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+
+    # Apply a preset using its name. Note this may not work as expected when presets have duplicate names.
+    displacementduneVTKLUT.ApplyPreset('Cool to Warm', True)
+
+    # set scalar coloring
+    ColorBy(cylindrical_2variableBC_delta05_level3_NCvtuDisplay, ('POINTS', 'Displacement dune-VTK', 'Z'))
+
+    # rescale color and/or opacity maps used to exactly fit the current data range
+    cylindrical_2variableBC_delta05_level3_NCvtuDisplay.RescaleTransferFunctionToDataRange(False, False)
+
+    # Update a scalar bar component title.
+    UpdateScalarBarsComponentTitle(displacementduneVTKLUT, cylindrical_2variableBC_delta05_level3_NCvtuDisplay)
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+
+
+
+
+
+
+    #TEST:Set Size in Pixels:
+    # layout/tab size in pixels
+    layout1.SetSize(750, 620)
+
+
+
+
+
+    # reset view to fit data
+    renderView1.ResetCamera(True)
+
+
+    # Write to pdf
+    # ExportView(outputName + '.pdf', view=renderView1)
+
+    # export view
+    ExportView(outputName + '.pdf', view=renderView1, Plottitle='ParaView GL2PS Export',
+        Compressoutputfile=0,
+        Drawbackground=1,
+        Cullhiddenprimitives=1,
+        Linewidthscalingfactor=0.714,
+        Pointsizescalingfactor=0.714,
+        GL2PSdepthsortmethod='Simple sorting (fast, good)',
+        Rasterize3Dgeometry=1,
+        Dontrasterizecubeaxes=1,
+        Rendertextaspaths=1)
+
+#================================================================
+# addendum: following script captures some of the application
+# state to faithfully reproduce the visualization during playback
+#================================================================
+
+    # get layout
+    layout1 = GetLayout()
+
+    #--------------------------------
+    # saving layout sizes for layouts
+
+    # layout/tab size in pixels
+    layout1.SetSize(750, 620)
+
+
+
+    # # get active view
+    # renderView1 = GetActiveViewOrCreate('RenderView')
+
+    # # get layout
+    # layout1 = GetLayout()
+
+    # # layout/tab size in pixels
+    # layout1.SetSize(2922, 908)
+
+    # # current camera placement for renderView1
+    # renderView1.InteractionMode = '2D'
+    # renderView1.CameraPosition = [-1.1764082767995223, -6.3731178885162665, 3.0455402693025344]
+    # renderView1.CameraFocalPoint = [1.75, 0.49948221910744905, 0.03305599093437195]
+    # renderView1.CameraViewUp = [0.12613103997492955, 0.35271102737899473, 0.9271924783560838]
+    # renderView1.CameraParallelScale = 1.3953474628479614
+
+    # save screenshot
+    SaveScreenshot(outputName + '.png', renderView1, ImageResolution=[1500, 1240],
+        FontScaling='Scale fonts proportionally',
+        OverrideColorPalette='WhiteBackground',
+        StereoMode='No change',
+        TransparentBackground=0, 
+        # PNG options
+        CompressionLevel='5',
+        MetaData=['Application', 'ParaView'])
+
+    #         # save screenshot
+    # SaveScreenshot(outputName + '.png', renderView1, ImageResolution=[5844, 1816],
+    #     FontScaling='Scale fonts proportionally',
+    #     OverrideColorPalette='WhiteBackground',
+    #     StereoMode='No change',
+    #     TransparentBackground=0, 
+    #     # PNG options
+    #     CompressionLevel='5',
+    #     MetaData=['Application', 'ParaView'])
diff --git a/experiment/macro-problem/variableBC/create_boundaryBox.py b/experiment/macro-problem/variableBC/create_boundaryBox.py
index 7b7724fdc9598f0cb641abc135fdb54a1f0008bb..1724a08fc23af4a10c822f1f23e8b5624385c640 100644
--- a/experiment/macro-problem/variableBC/create_boundaryBox.py
+++ b/experiment/macro-problem/variableBC/create_boundaryBox.py
@@ -1,28 +1,13 @@
-# trace generated using paraview version 5.10.0-RC1
-#import paraview
-#paraview.compatibility.major = 5
-#paraview.compatibility.minor = 10
-
 #### import the simple module from the paraview
 from paraview.simple import *
 #### disable automatic camera reset on 'Show'
 paraview.simple._DisableFirstRenderCameraReset()
 
+delta = 2.0
+
 # create a new 'Box'
 box1 = Box(registrationName='Box1')
 
-# find source
-warpByVector3 = FindSource('WarpByVector3')
-
-# find source
-warpByVector2 = FindSource('WarpByVector2')
-
-# find source
-cylindrical_2variableBC_delta01_level3_NCvtu = FindSource('cylindrical_2variableBC_delta0.1_level3_NC.vtu')
-
-# find source
-cylindrical_2variableBC_delta10_level3_NCvtu = FindSource('cylindrical_2variableBC_delta1.0_level3_NC.vtu')
-
 # get active view
 renderView1 = GetActiveViewOrCreate('RenderView')
 
@@ -52,19 +37,9 @@ box1Display.PolarAxes = 'PolarAxesRepresentation'
 
 # init the 'PiecewiseFunction' selected for 'ScaleTransferFunction'
 box1Display.ScaleTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
-
 # init the 'PiecewiseFunction' selected for 'OpacityTransferFunction'
 box1Display.OpacityTransferFunction.Points = [-1.0, 0.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0]
 
-# find source
-warpByVector1 = FindSource('WarpByVector1')
-
-# find source
-cylindrical_2variableBC_delta05_level3_NCvtu = FindSource('cylindrical_2variableBC_delta0.5_level3_NC.vtu')
-
-# update the view to ensure updated data information
-renderView1.Update()
-
 # Properties modified on box1
 box1.XLength = 2.0
 
@@ -73,7 +48,7 @@ renderView1.Update()
 
 # Properties modified on box1
 box1.XLength = 0.1
-box1.YLength = 2.0
+box1.YLength = delta
 box1.ZLength = 0.1
 
 # update the view to ensure updated data information
@@ -88,37 +63,7 @@ box1Display.DataAxesGrid.Position = [-1.0, 0.0, 0.0]
 # Properties modified on box1Display.PolarAxes
 box1Display.PolarAxes.Translation = [-1.0, 0.0, 0.0]
 
-# Properties modified on box1
-box1.YLength = 1.0
-
 # update the view to ensure updated data information
 renderView1.Update()
 
-#================================================================
-# addendum: following script captures some of the application
-# state to faithfully reproduce the visualization during playback
-#================================================================
-
-# get layout
-layout1 = GetLayout()
-
-#--------------------------------
-# saving layout sizes for layouts
-
-# layout/tab size in pixels
-layout1.SetSize(2292, 1171)
-
-#-----------------------------------
-# saving camera placements for views
-
-# current camera placement for renderView1
-renderView1.InteractionMode = '2D'
-renderView1.CameraPosition = [3152.297535110951, -8555.241086160378, 4107.416501946229]
-renderView1.CameraFocalPoint = [-0.14072623447374652, -0.17247711115688338, -0.25121865343020566]
-renderView1.CameraViewUp = [-0.11249939664840285, 0.3960965825556926, 0.9112910528702928]
-renderView1.CameraParallelScale = 2.5053655927712435
-
-#--------------------------------------------
-# uncomment the following to render all views
-# RenderAllViews()
-# alternatively, if you want to write images, you can use SaveScreenshot(...).
\ No newline at end of file
+#-------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/experiment/macro-problem/variableBC/cylindrical_2variableBC.py b/experiment/macro-problem/variableBC/cylindrical_2variableBC.py
index 84df30f4ee1fea543c03859a34d7f865dcbeeb3a..fdec935ec4108a3df0e8dc7e46d7ecbdabb2db7c 100644
--- a/experiment/macro-problem/variableBC/cylindrical_2variableBC.py
+++ b/experiment/macro-problem/variableBC/cylindrical_2variableBC.py
@@ -9,7 +9,6 @@ class ParameterSet(dict):
 parameterSet = ParameterSet()
 
 
-
 #############################################
 #  Paths
 #############################################
@@ -17,8 +16,13 @@ parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/
 # parameterSet.outputPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_buckling_experiment' # This is currently still used in prestrainedMaterial
 parameterSet.baseName= 'cylindrical_2variableBC'
 
+
+"""
+        -----    MACRO-PROBLEM PARAMETERS:    -----
+"""
+
 #############################################
-#  Grid parameters
+#  Macro-Grid parameters
 #############################################
 nX=8
 nY=8
@@ -29,7 +33,6 @@ parameterSet.upper = '1 1'
 parameterSet.elements = str(nX)+' '+  str(nY)
 
 parameterSet.macroGridLevel = 1
-
 #############################################
 #  Options
 #############################################
@@ -48,13 +51,16 @@ parameterSet.conforming_DiscreteJacobian = 0
 # Tolerance of the multigrid solver
 parameterSet.tolerance = 1e-12
 # Maximum number of multigrid iterations
-parameterSet.maxProximalNewtonSteps = 100
+parameterSet.maxProximalNewtonSteps = 1000
 # Initial regularization
 parameterSet.initialRegularization = 2000
 # parameterSet.initialRegularization = 1
 # Measure convergence
 parameterSet.instrumented = 0
 
+# parameterSet.regularizationNorm = 'Euclidean'
+parameterSet.regularizationNorm = 'H1semi'
+
 
 
 # --- (optional) Riemannian Trust-region solver:
@@ -94,7 +100,7 @@ parameterSet.vtkwrite_analyticalSolution = 0
 parameterSet.vtkWrite_analyticalSurfaceNormal = 0
 
 # The grid can be refined several times for a higher resolution in the VTK-file.
-parameterSet.subsamplingRefinement = 2
+# parameterSet.subsamplingRefinement = 2
 
 # Write Dof-Vector to .txt-file
 parameterSet.writeDOFvector = 0
@@ -102,16 +108,19 @@ parameterSet.writeDOFvector = 0
 #############################################
 #  Dirichlet boundary indicator
 #############################################
+parameterSet.delta = 1.3
+print('parameterSet.delta:', parameterSet.delta)
+
 def dirichlet_indicator(x) :
-    delta = 0.75
-    if( (x[0] < -0.99) and (abs(x[1]) <(delta/2.0) )):
+    # length of the clamped boundary-segment
+    delta = parameterSet.delta
+    print('delta:', delta)
+    # if( (x[0] < -0.99) and (abs(x[1]) <(delta/2.0) )):
+    if( (x[0] < -0.99) and (abs(x[1]) <=(delta/2.0) )):
         return True
     else:
         return False
 
-
-
-
 #############################################
 #  Microstructure
 ############################################
@@ -128,66 +137,8 @@ def df(x):
     return ((1,0),
             (0,1),
             (0,0))
-# #Rotation:
-# def R(beta):
-#     return  [[math.cos(beta),0],
-#             [0,1],
-#             [-math.sin(beta),0]]
-
-
-# def f(x):
-#     a = 0.5
-#     if(x[0] <= 0.01):
-#         return [x[0], x[1], 0]
-#     elif(x[0] >= 3.99):
-#         return [x[0] - a, x[1], 0]
-#     else:
-#         return [x[0], x[1], 0]
-
-
-# # beta = math.pi/4.0
-# beta= 0.05
-# # beta= math.pi/12.0
-# # beta= 0.10
-# # beta = 0
-
-# def df(x):
-#     a = 0.5
-#     if(x[0] <= 0.01):
-#         # return R(-1.0*beta)
-#         return R(beta)
-#     elif(x[0] >= 3.99):
-#         # return R(beta)
-#         return R(-1.0*beta)
-#     else:
-#         return ((1,0),
-#                 (0,1),
-#                 (0,0))
-
-
-
-
-# def f(x):
-#     # a = 0.4
-#     a = 1.4
-#     if(x[0] <= -1.99):
-#         return [x[0] + a, x[1], 0]
-#     elif(x[0] >= 1.99):
-#         return [x[0] - a, x[1], 0]
-#     else:
-#         return [x[0], x[1], 0]
-
-
-# def df(x):
-#     return ((1,0),
-#             (0,1),
-#             (0,0))
-
-
 
 fdf = (f, df)
-
-
 #############################################
 #  Force
 ############################################
@@ -196,25 +147,6 @@ parameterSet.assemble_force_term = False
 def force(x):
     return [0, 0, 0]
 
-
-
-#############################################
-#  Analytical reference Solution
-#############################################
-# def f(x):
-#     return [x[0], x[1], 0]
-#
-#
-# def df(x):
-#     return ((1,0),
-#             (0,1),
-#             (0,0))
-#
-#
-# fdf = (f, df)
-
-
-
 ##################### MICROSCALE PROBLEM ####################
 
 # parameterSet.prestrainFlag = True #deprecated
@@ -225,8 +157,6 @@ def force(x):
 
 # parameterSet.read_effectiveQuantities_from_Parset = True
 
-
-parameterSet.printMicroOutput = False
 parameterSet.VTKwriteMacroPhaseIndicator = True
 parameterSet.MacroPhaseSubsamplingRefinement = 3
 
@@ -269,22 +199,36 @@ class GlobalMicrostructure:
         
     # Represents the local microstructure in Phase 1
     class LocalMicrostructure_1:  
+
+        rho = 0.95
+        # rho = 0.75
+        # rho = 0.33
+
         def __init__(self,macroPoint=[0,0]):
             # self.macroPoint = macroPoint
             self.gamma = 1.0    #in the future this might change depending on macroPoint.
-
             self.phases = 3     #in the future this might change depending on macroPoint.
             #--- Define different material phases:
+            # #- PHASE 1
+            # self.phase1_type="isotropic"
+            # self.materialParameters_phase1 = [200, 1.0]   
+            # #- PHASE 2
+            # self.phase2_type="isotropic"
+            # self.materialParameters_phase2 = [200, 1.0]    
+
+            # self.phase3_type="isotropic"
+            # self.materialParameters_phase3 = [100, 1.0]    #(Matrix-material)
+            # # self.materialParameters_phase3 = [100, 0.1]    #(Matrix-material)
+
             #- PHASE 1
             self.phase1_type="isotropic"
-            self.materialParameters_phase1 = [200, 1.0]   
+            self.materialParameters_phase1 = [28.7,22.5]  # glass 
             #- PHASE 2
             self.phase2_type="isotropic"
-            self.materialParameters_phase2 = [200, 1.0]    
-
+            self.materialParameters_phase2 = [28.7,22.5]  # glass 
+            #- PHASE 3
             self.phase3_type="isotropic"
-            self.materialParameters_phase3 = [100, 1.0]    #(Matrix-material)
-            # self.materialParameters_phase3 = [100, 0.1]    #(Matrix-material)
+            self.materialParameters_phase3 = [1.2,2.58]    #(Matrix-material: polystyrene
 
         # Three-phase composite
         def indicatorFunction(self,x):
@@ -298,27 +242,15 @@ class GlobalMicrostructure:
                 return 2    #Phase2
             else :
                 return 3    #Phase3
-                
-        # Two-phase composite:
-        def indicatorFunction(self,x):
-            if (abs(x[0]) < (1.0/2.0)   and x[2] >= 0 ):
-                return 1    #Phase1   
-            else :
-                return 2    #Phase2
-            # elif (abs(x[1]) < (1.0/2.0) and x[2] < 0 ):
-            #     return 2    #Phase2
-            # else :
-            #     return 3    #Phase3
+            
 
         # prestrained fibre in top layer , e2-aligned
         def prestrain_phase1(self,x):
             return [[1.0, 0, 0], [0,1.0,0], [0,0,1.0]]
 
-
         # prestrained fibre in bottom layer , e1-aligned
         def prestrain_phase2(self,x):
-            rho = 0.5
-            return [[rho*1.0, 0, 0], [0,rho*1.0,0], [0,0,rho*1.0]]
+            return [[self.rho*1.0, 0, 0], [0,self.rho*1.0,0], [0,0,self.rho*1.0]]
 
         def prestrain_phase3(self,x):
             return [[0, 0, 0], [0,0,0], [0,0,0]]
@@ -370,50 +302,49 @@ class GlobalMicrostructure:
 #         return [[0, 0, 0], [0,0,0], [0,0,0]]
 
 
-
-
+"""
+        -----    MICRO-PROBLEM PARAMETERS:    -----
+"""
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
-#  Grid parameters
+#  Micro-Grid parameters
 #############################################
-parameterSet.microGridLevel = 3
+parameterSet.microGridLevel = 2 #5
+
 
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
-parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
+parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
 # --- write effective quantities (Qhom.Beff) to .txt-files
-parameterSet.write_EffectiveQuantitiesToTxt = True
\ No newline at end of file
+parameterSet.write_EffectiveQuantitiesToTxt = True
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
\ No newline at end of file
diff --git a/experiment/macro-problem/variableBC/cylindrical_2variableBC_delta025.py b/experiment/macro-problem/variableBC/cylindrical_2variableBC_delta025.py
new file mode 100644
index 0000000000000000000000000000000000000000..1643bcb4fb8cc1abe597a1271cf434b7ddfb7c45
--- /dev/null
+++ b/experiment/macro-problem/variableBC/cylindrical_2variableBC_delta025.py
@@ -0,0 +1,11 @@
+from cylindrical_2variableBC import*
+
+
+def dirichlet_indicator(x) :
+    # length of the clamped boundary-segment
+    delta = 0.25
+    # if( (x[0] < -0.99) and (abs(x[1]) <(delta/2.0) )):
+    if( (x[0] < -0.99) and (abs(x[1]) <=(delta/2.0) )):
+        return True
+    else:
+        return False
diff --git a/experiment/macro-problem/variableBC/cylindrical_2variableBC_delta20.py b/experiment/macro-problem/variableBC/cylindrical_2variableBC_delta20.py
new file mode 100644
index 0000000000000000000000000000000000000000..b809c99c88d1665484932bf98ee0ae41328f7a6b
--- /dev/null
+++ b/experiment/macro-problem/variableBC/cylindrical_2variableBC_delta20.py
@@ -0,0 +1,11 @@
+from cylindrical_2variableBC import*
+
+
+def dirichlet_indicator(x) :
+    # length of the clamped boundary-segment
+    delta = 2.0
+    # if( (x[0] < -0.99) and (abs(x[1]) <(delta/2.0) )):
+    if( (x[0] < -0.99) and (abs(x[1]) <=(delta/2.0) )):
+        return True
+    else:
+        return False
diff --git a/experiment/micro-problem/ElasticModuliComputer.py b/experiment/micro-problem/ElasticModuliComputer.py
new file mode 100644
index 0000000000000000000000000000000000000000..2cf7cfefe64522e99b2dc5ec7f6da3a221f0f995
--- /dev/null
+++ b/experiment/micro-problem/ElasticModuliComputer.py
@@ -0,0 +1,124 @@
+import numpy as np 
+
+# todo: write as functions ..
+
+
+
+def computeLameParameters(E,nu):
+    # Lamé first parameter (lambda)
+    lame_1 =  (nu*E)/((1+nu)*(1-2*nu))
+    # Lamé second parameter (mu)
+    lame_2 = E/(2*(1+nu))
+    return [lame_1,lame_2]
+
+
+def computeElasticModuliFromLame(lame_1,lame_2):
+    E = (lame_2*(3*lame_1 + 2*lame_2))/(lame_1 + lame_2)
+    nu = lame_1/(2*(lame_1+lame_2))
+    return [E,nu]
+
+def computeModuliRatio(moduli_1,moduli_2):
+    ratio_1 = moduli_1[0]/moduli_2[0]
+    ratio_2 = moduli_1[1]/moduli_2[1]
+    return [ratio_1,ratio_2]
+ 
+
+"""
+    Parameters taken from [Zhang et al. - The near-isotropic elastic properties of interpenetrating composites reinforced by regular fibre-networks]
+    Composites often used in practice: 
+    1. SiC / Aluminium (matrix) 
+    2. Glass / Polystyrene (matrix)
+    3. Glass / Epoxy (matrix)
+"""
+
+#1. MaterialName 2. Youngs Modulus, 3. Poisson ratio
+material = [ ['SiC', 410, 0.19],
+             ['Steel', 200, 0.28],
+             ['Aluminium', 74, 0.33],
+             ['Glass', 70, 0.22],
+             ['Polystyrene', 3.25, 0.34],
+             ['Epoxy', 3.0, 0.35],
+             ['Rubber', 0.1, 0.4999],
+             ['Glass_2(Wang)', 72, 0.26],
+             ['Epoxy_2(Wang)', 3.79, 0.37]
+           ]
+
+# # Young's modulus 
+# # E = 3.14  #Polyethylene
+# E_Steel = 200 # Steel
+# E_SiC = 410 # Silicium Carbide
+# E_Alu = 74  # Aluminium (Computational results)
+# E_Glass = 70 # Glass 
+# E_Polystyrene = 3.25 # Polystyrene
+# E_epoxy = 3.0 # Epoxy
+# # Poisson ratio
+# nu_SiC =  0.19 # Silicium Carbide
+# nu_Alu = 0.33  #Aluminium
+# nu_Glass = 0.22 #Glass
+# nu_Polystyrene = 0.34 #Polystyrene
+# nu_Epoxy = 0.35 # Epoxy
+
+for i in range(0, len(material)):
+    print('material ' + str(i) + ':', material[i][0] )
+    print('Lame parameters', computeLameParameters(material[i][1],material[i][2]))
+
+
+print('elastic moduli ratio Sic/Alu:', computeModuliRatio(computeLameParameters(material[0][1],material[0][2]),computeLameParameters(material[2][1],material[2][2])))
+print('elastic moduli ratio Glass/Polystyrene:', computeModuliRatio(computeLameParameters(material[3][1],material[3][2]),computeLameParameters(material[4][1],material[4][2])))
+print('elastic moduli ratio Glass/Epoxy:', computeModuliRatio(computeLameParameters(material[3][1],material[3][2]),computeLameParameters(material[5][1],material[5][2])))
+
+
+print('elastic moduli paper:', computeElasticModuliFromLame(1,100))
+print('elastic moduli paper:', computeElasticModuliFromLame(1,150))
+print('elastic moduli ratio paper',computeModuliRatio(computeElasticModuliFromLame(1,150),computeElasticModuliFromLame(1,100)))
+# print('Lame parameters of SiC:', computeLameParameters(E_SiC,nu_SiC))
+
+
+
+# Shear modulus /  Lamé second parameter
+# mu = 0.117  #Polyethylene
+# mu = 79.3 # Steel
+
+# print('Youngs modulus:', E)
+# print('Shear modulus:', mu)
+
+
+# # Poisson ratio
+# nu_ = (E/(2*mu)) - 1
+
+# # Lamé first parameter
+# lambda_ = (nu_*E)/((1+nu_)*(1-2*nu_))
+
+
+
+# print('Lame parameter (nu):', nu_)
+# print('Lame parameter (lambda):', lambda_)
+
+
+# #TEST:
+# mu = 150
+# lambda_ =1 
+
+# #Rumpf ~ E = 6, nu = 0.2
+# mu = 5.0/2.0  
+# lambda_ = 5.0/3.0
+
+#----- Lamé parameters to Young/Shear modulus
+# E_b = (mu*(3*lambda_ + 2*mu))/(lambda_ + mu)
+# nu_b = lambda_/(2*(lambda_+mu))
+
+# print('E_ backwards', E_b)
+# print('nu_ backwards', nu_b)
+
+
+
+
+# # TEST (paper values)
+# E_1 = 200.99
+# nu_1 = 0.00495
+
+
+# E_2 = 300.99
+# nu_2 = 0.00331
+
+
diff --git a/experiment/micro-problem/MVM_infinitynorm_microproblem.py b/experiment/micro-problem/MVM_infinitynorm_microproblem.py
new file mode 100644
index 0000000000000000000000000000000000000000..c968c3c0dc9da970269ff1beedda22a0e9e2dc64
--- /dev/null
+++ b/experiment/micro-problem/MVM_infinitynorm_microproblem.py
@@ -0,0 +1,165 @@
+import math
+import numpy as np
+
+class ParameterSet(dict):
+    def __init__(self, *args, **kwargs):
+        super(ParameterSet, self).__init__(*args, **kwargs)
+        self.__dict__ = self
+
+parameterSet = ParameterSet()
+
+""""
+    Experiment: Microstructure with infinity distances (squares) from vertices 
+                and RVE center but constant in one space direction.
+
+"""
+
+#############################################
+#  Paths
+#############################################
+parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_buckling_microproblem'
+parameterSet.baseName= 'buckling_microproblem'
+
+##################### MICROSCALE PROBLEM ####################
+class Microstructure:
+    def __init__(self):
+        # self.macroPoint = macroPoint
+        self.gamma = 1.0    #in the future this might change depending on macroPoint.
+        self.phases = 2     #in the future this might change depending on macroPoint.
+        #--- Define different material phases:
+        #- PHASE 1
+        self.phase1_type="isotropic"
+        # self.materialParameters_phase1 = [200, 1.0]   
+        self.materialParameters_phase1 = [28.7,22.5]  # glass (Fibre)
+
+        #- PHASE 2
+        self.phase2_type="isotropic"
+        # self.materialParameters_phase2 = [100, 1.0]    
+        self.materialParameters_phase2 = [1.2,2.58]    #Matrix-material: polystyrene
+
+
+        self.theta = 0.2  # Distance from the nodes
+
+
+    def one_norm(self,v):
+        # r = 0
+        # for i in range(0, len(v)):
+        #     r += np.abs(v[i])
+        # return r
+        return np.linalg.norm(v,1)
+
+    def two_norm(self,v):
+        # r = 0
+        # for i in range(0, len(v)):
+        #     r += v[i]**2
+        # return np.sqrt(r)
+        return np.linalg.norm(v, 'fro') # frobenius-norm (default)
+
+
+    def infinity_norm(self,v):
+        # return np.abs(v).max()
+        return np.linalg.norm(v,np.inf) # Use already exisiting norm from numpy..
+
+    
+    """
+        extract subarray from A with index i removed.
+    """
+    def subArray(self,v,i):
+        r = []
+        for j in range(0,len(v)):
+            if not (j == i):
+                r.append(v[j])
+
+        return np.array(r)
+
+
+
+    #--- Indicator function for material phases
+    def indicatorFunction(self,y):
+
+            # cast to numpy array 
+            x = np.array(y)
+            # print('y:', y)
+
+            """
+                We assume constancy in one space-direction:
+            """
+            # constant in ... 
+            # x = self.subArray(x,0) #y1-direction
+            # x = self.subArray(x,1) #y2-direction
+            x = self.subArray(x,2) #x3-direction
+            # print('y:', y)
+
+            # Dfine nodes (2D as we assume constanty in one direction)
+            node1 = [-0.5,-0.5]
+            node2 = [0.5,-0.5]
+            node3 = [-0.5,0.5]
+            node4 = [0.5,0.5]
+            center = [0,0]
+
+            indicator = (self.infinity_norm(x-node1) < self.theta) | (self.infinity_norm(x-node2)  < self.theta) \
+            | (self.infinity_norm(x-node3)  < self.theta) | (self.infinity_norm(x-node4)  < self.theta) \
+            | (self.infinity_norm(x-center)  < self.theta)
+
+            
+            indicator = indicator & (y[2]>= 0)
+            
+            if(indicator):
+                return 1    #Phase1   
+            else :
+                return 2    #Phase2
+        
+    #--- Define prestrain function for each phase
+    def prestrain_phase1(self,x):
+        rho = 1.0
+        return [[rho*1.0, 0, 0], [0,rho*1.0,0], [0,0,rho*1.0]]
+
+    def prestrain_phase2(self,x):
+        return [[0, 0, 0], [0,0,0], [0,0,0]]
+
+
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+#############################################
+#  Grid parameters
+#############################################
+parameterSet.microGridLevel = 3
+
+#############################################
+#  Assembly options
+#############################################
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
+
+#############################################
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
+#############################################
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
+
+#############################################
+#  Write/Output options      #(default=false)
+#############################################
+# --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
+parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
+#parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
+parameterSet.MaterialSubsamplingRefinement= 2
+# --- Write Correctos to VTK-File:  
+parameterSet.writeCorrectorsVTK = 1
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 1  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
+
+
+
diff --git a/experiment/micro-problem/buckling_microproblem.py b/experiment/micro-problem/buckling_microproblem.py
index 446536ea5dddb241ea3f6c06767349c84f4c62c7..28d058a864c8b5e98e0973f824b0eb9799b502c8 100644
--- a/experiment/micro-problem/buckling_microproblem.py
+++ b/experiment/micro-problem/buckling_microproblem.py
@@ -24,7 +24,6 @@ parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/
 parameterSet.baseName= 'buckling_microproblem'
 
 ##################### MICROSCALE PROBLEM ####################
-
 class Microstructure:
     def __init__(self):
         # self.macroPoint = macroPoint
@@ -33,16 +32,20 @@ class Microstructure:
         #--- Define different material phases:
         #- PHASE 1
         self.phase1_type="isotropic"
-        self.materialParameters_phase1 = [200, 1.0]   
+        # self.materialParameters_phase1 = [200, 1.0]   
+        self.materialParameters_phase1 = [28.7,22.5]  # glass (Fibre)
+
         #- PHASE 2
         self.phase2_type="isotropic"
-        self.materialParameters_phase2 = [100, 1.0]    
-
+        # self.materialParameters_phase2 = [100, 1.0]    
+        self.materialParameters_phase2 = [1.2,2.58]    #Matrix-material: polystyrene
 
     #--- Indicator function for material phases
     def indicatorFunction(self,x):
-        fibreRadius = 0.2
-        if (abs(x[0]) < fibreRadius and x[2] >= 0 ):
+        # fibreRadius = 0.1
+        fibreRadius = 0.25
+        # if (abs(x[0]) < fibreRadius and x[2] >= 0 ):
+        if (abs(x[1]) < fibreRadius and x[2] >= 0 ):
             return 1    #Phase1   
         else :
             return 2    #Phase2
@@ -56,7 +59,7 @@ class Microstructure:
         return [[0, 0, 0], [0,0,0], [0,0,0]]
 
 
-
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
 #  Grid parameters
@@ -66,17 +69,18 @@ parameterSet.microGridLevel = 4
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
@@ -85,23 +89,18 @@ parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for sol
 parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
 # --- write effective quantities (Qhom.Beff) to .txt-files
 parameterSet.write_EffectiveQuantitiesToTxt = True
 
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
+
 
 
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/perforated_wood_upper.py b/experiment/micro-problem/compWood/perforated-bilayer/perforated_wood_upper.py
index 2c1f8381bda86844af5e9c9db11396d2a42cdf3e..46d4a4312c32d5c14115a93bcf618e813a0d43ca 100644
--- a/experiment/micro-problem/compWood/perforated-bilayer/perforated_wood_upper.py
+++ b/experiment/micro-problem/compWood/perforated-bilayer/perforated_wood_upper.py
@@ -69,9 +69,9 @@ parameterSet.Phases=3
 # Parameters of the model
 # -- (thickness upper layer) / (thickness)
 # param_r = 0.22
-param_r = 0.12
+param_r = 0.49
 # -- thickness [meter]
-param_h = 0.0047
+param_h = 0.008
 # -- moisture content in the flat state [%]
 param_omega_flat = 17.17547062
 # -- moisture content in the target state [%]
@@ -80,7 +80,7 @@ param_omega_target = 8.959564147
 param_theta = 0.0
 
 # Design Parameter ratio between perforaton (cylindrical) volume and volume of upper layer
-param_beta = 0.0
+param_beta = 0.3
 # Depth of perforation
 # perfDepth = 0.12
 # perfDepth = param_r 
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/BMatrix.txt
deleted file mode 100644
index 6137c432727280d2dfa86fd721657aeb9a3c66f1..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.02691656716370883
-1 2 -0.576108730383210088
-1 3 2.03963883345130819e-29
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/QMatrix.txt
deleted file mode 100644
index 1534b2f63411bcda7d39fe9bba6dbfc3f37a9f36..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 344.448324198946295
-1 2 46.0309380450088881
-1 3 -1.8599861030914169e-29
-2 1 46.0309380450078862
-2 2 889.279295541113925
-2 3 4.12349304813084745e-29
-3 1 2.07158959089932232e-28
-3 2 6.15195762196629843e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/perforated_wood_lower_log.txt
deleted file mode 100644
index 0312883171aca42ba74cb4759d4f05da8ad6ebdd..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/0/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.192467 9.00929e-30 0
-9.00929e-30 0.00914117 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00914117 2.49611e-30 0
-2.49611e-30 0.053197 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.37629e-31 8.75336e-20 0
-8.75336e-20 1.55529e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-344.448 46.0309 -1.85999e-29
-46.0309 889.279 4.12349e-29
-2.07159e-28 6.15196e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1360.55 -326.959 5.3719e-27
-Beff_: 4.02692 -0.576109 2.03964e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=344.448
-q2=889.279
-q3=224.213
-q12=46.0309
-q13=-1.85999e-29
-q23=4.12349e-29
-q_onetwo=46.030938
-b1=4.026917
-b2=-0.576109
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.44448e+02  & 8.89279e+02  & 2.24213e+02  & 4.60309e+01  & -1.85999e-29 & 4.12349e-29  & 4.02692e+00  & -5.76109e-01 & 2.03964e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/BMatrix.txt
deleted file mode 100644
index 53933e8ac6cdbf8198a47dcc29523939faf99f5e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.03220960821014707
-1 2 -0.57899301528280267
-1 3 3.87469583876794542e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/QMatrix.txt
deleted file mode 100644
index 4c3e74f2425ee4251cdce53fb5dba3c4ac2cfe63..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 341.83041637042902
-1 2 45.7592918336055732
-1 3 6.30246511107586914e-17
-2 1 45.7592918336055803
-2 2 881.640271660192298
-2 3 1.19046245571855641e-17
-3 1 8.86270689744671734e-17
-3 2 3.46848345197611242e-17
-3 3 222.764482947247643
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/perforated_wood_lower_log.txt
deleted file mode 100644
index 6d23b7202d214bd4f6f0502d4c3ede135618a722..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/1/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.194024 9.29013e-20 0
-9.29013e-20 0.00918894 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0090968 -1.74666e-20 0
--1.74666e-20 0.0518476 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-3.02467e-20 -0.000995565 0
--0.000995565 5.05146e-21 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-341.83 45.7593 6.30247e-17
-45.7593 881.64 1.19046e-17
-8.86271e-17 3.46848e-17 222.764
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1351.84 -325.953 1.20043e-15
-Beff_: 4.03221 -0.578993 3.8747e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=341.83
-q2=881.64
-q3=222.764
-q12=45.7593
-q13=6.30247e-17
-q23=1.19046e-17
-q_onetwo=45.759292
-b1=4.032210
-b2=-0.578993
-b3=0.000000
-mu_gamma=222.764483
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.41830e+02  & 8.81640e+02  & 2.22764e+02  & 4.57593e+01  & 6.30247e-17  & 1.19046e-17  & 4.03221e+00  & -5.78993e-01 & 3.87470e-18  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/BMatrix.txt
deleted file mode 100644
index 1cfb292da7b3f35c863bdfeffadedc319af856f8..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.04192623650617211
-1 2 -0.586174091360423644
-1 3 -7.24811870491674609e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/QMatrix.txt
deleted file mode 100644
index d502f6e9b88e1d25f215a711443292585d4a0593..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 337.282454261228338
-1 2 45.5269144900198199
-1 3 -7.07619794465715046e-17
-2 1 45.5269144900194789
-2 2 863.761709093920445
-2 3 -3.39968955358248628e-16
-3 1 -2.0273521834294865e-17
-3 2 -1.25148694440349248e-16
-3 3 219.834572890977029
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/perforated_wood_lower_log.txt
deleted file mode 100644
index 7ade1110cd8e27f595a9e02aa33f120baf87fb78..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/2/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.196742 -3.83847e-21 0
--3.83847e-21 0.00938185 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0087842 -2.20051e-20 0
--2.20051e-20 0.0484485 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.89255e-21 -0.00311244 0
--0.00311244 -2.37572e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-337.282 45.5269 -7.0762e-17
-45.5269 863.762 -3.39969e-16
--2.02735e-17 -1.25149e-16 219.835
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1336.58 -322.298 -1.60197e-15
-Beff_: 4.04193 -0.586174 -7.24812e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=337.282
-q2=863.762
-q3=219.835
-q12=45.5269
-q13=-7.0762e-17
-q23=-3.39969e-16
-q_onetwo=45.526914
-b1=4.041926
-b2=-0.586174
-b3=-0.000000
-mu_gamma=219.834573
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.37282e+02  & 8.63762e+02  & 2.19835e+02  & 4.55269e+01  & -7.07620e-17 & -3.39969e-16 & 4.04193e+00  & -5.86174e-01 & -7.24812e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/BMatrix.txt
deleted file mode 100644
index 8a84a45dde4a66b20cc77b8c574ae7e1a5d38ba3..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.0510966048893593
-1 2 -0.592799193287436799
-1 3 -1.27894493167162919e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/QMatrix.txt
deleted file mode 100644
index 181902373d83fcc8f9d8fa3225c602e43c351d46..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 333.129401873112613
-1 2 45.4664696489353162
-1 3 4.00456848671099097e-16
-2 1 45.4664696489350959
-2 2 848.052528549609065
-2 3 7.57850542303789565e-16
-3 1 4.67562186884373787e-19
-3 2 8.90829421066794379e-16
-3 3 217.016329559314272
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/perforated_wood_lower_log.txt
deleted file mode 100644
index ac56a197ffcbf14b0fd5bc75fc720983c8e7ec76..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/3/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.19923 2.70664e-19 0
-2.70664e-19 0.00960818 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00842772 4.46676e-19 0
-4.46676e-19 0.0452917 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.15583e-20 -0.00523522 0
--0.00523522 9.95678e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-333.129 45.4665 4.00457e-16
-45.4665 848.053 7.57851e-16
-4.67562e-19 8.90829e-16 217.016
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1322.59 -318.536 -3.30171e-15
-Beff_: 4.0511 -0.592799 -1.27894e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=333.129
-q2=848.053
-q3=217.016
-q12=45.4665
-q13=4.00457e-16
-q23=7.57851e-16
-q_onetwo=45.466470
-b1=4.051097
-b2=-0.592799
-b3=-0.000000
-mu_gamma=217.016330
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.33129e+02  & 8.48053e+02  & 2.17016e+02  & 4.54665e+01  & 4.00457e-16  & 7.57851e-16  & 4.05110e+00  & -5.92799e-01 & -1.27894e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/BMatrix.txt
deleted file mode 100644
index 84873de4c1702c281b222bc2f65c7917afe4d92e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.06213250662411784
-1 2 -0.600853091095135405
-1 3 -1.76581875274302341e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/QMatrix.txt
deleted file mode 100644
index 8342c937ddcadcdc2de1e497584dc00ce2ad9c10..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 328.21767735791525
-1 2 45.7178016487789165
-1 3 1.31289429198058749e-15
-2 1 45.7178016487785897
-2 2 830.689816984109711
-2 3 1.85496996723492208e-15
-3 1 8.90803374803666309e-16
-3 2 -4.52927786896424427e-16
-3 3 214.513694726799343
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/perforated_wood_lower_log.txt
deleted file mode 100644
index b378f820fe0563846e02cea024ff529d0181c56d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/4/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.202204 4.76658e-19 0
-4.76658e-19 0.00999719 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00787285 1.44137e-18 0
-1.44137e-18 0.0416783 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-5.30861e-19 -0.00714429 0
--0.00714429 -4.96051e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-328.218 45.7178 1.31289e-15
-45.7178 830.69 1.85497e-15
-8.90803e-16 -4.52928e-16 214.514
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1305.79 -313.411 3.51191e-15
-Beff_: 4.06213 -0.600853 -1.76582e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=328.218
-q2=830.69
-q3=214.514
-q12=45.7178
-q13=1.31289e-15
-q23=1.85497e-15
-q_onetwo=45.717802
-b1=4.062133
-b2=-0.600853
-b3=-0.000000
-mu_gamma=214.513695
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.28218e+02  & 8.30690e+02  & 2.14514e+02  & 4.57178e+01  & 1.31289e-15  & 1.85497e-15  & 4.06213e+00  & -6.00853e-01 & -1.76582e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/BMatrix.txt
deleted file mode 100644
index aa29196f4d717bcd6f7c8e2de6fb63da6ecbee1f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.07287843223964341
-1 2 -0.607469647844943061
-1 3 3.47293172159315383e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/QMatrix.txt
deleted file mode 100644
index 360769c9a67e969939fa90d943ec10d2a4918adb..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 323.402432382580912
-1 2 45.354332404498507
-1 3 4.66176440982665752e-16
-2 1 45.3543324044984004
-2 2 814.514553930954435
-2 3 3.51400935530866293e-16
-3 1 1.13632858005953408e-15
-3 2 9.79726587672317267e-16
-3 3 210.828881808632161
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/perforated_wood_lower_log.txt
deleted file mode 100644
index b018fb58c0b3068216c46a8b3b05917ae09bc8a4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/5/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.20509 3.8885e-19 0
-3.8885e-19 0.0101425 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00762404 2.66808e-19 0
-2.66808e-19 0.0382047 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-3.88905e-19 -0.0100947 0
--0.0100947 2.45295e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-323.402 45.3543 4.66176e-16
-45.3543 814.515 3.51401e-16
-1.13633e-15 9.79727e-16 210.829
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1289.63 -310.07 1.13549e-14
-Beff_: 4.07288 -0.60747 3.47293e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=323.402
-q2=814.515
-q3=210.829
-q12=45.3543
-q13=4.66176e-16
-q23=3.51401e-16
-q_onetwo=45.354332
-b1=4.072878
-b2=-0.607470
-b3=0.000000
-mu_gamma=210.828882
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.23402e+02  & 8.14515e+02  & 2.10829e+02  & 4.53543e+01  & 4.66176e-16  & 3.51401e-16  & 4.07288e+00  & -6.07470e-01 & 3.47293e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/BMatrix.txt
deleted file mode 100644
index 0f22405dded4516711b87d53c96c285763bc9a9e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.08102798827461033
-1 2 -0.613288405472155684
-1 3 1.63374360884752171e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/QMatrix.txt
deleted file mode 100644
index 77c61c4b5097243ef103403d5cf88a762f228102..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 319.901329194990751
-1 2 45.6480214365010895
-1 3 1.90502707331880947e-15
-2 1 45.648021436501061
-2 2 802.995915583982992
-2 3 3.3191519668916529e-15
-3 1 1.67252669369287107e-15
-3 2 1.69958219657759431e-15
-3 3 208.621458107481772
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/perforated_wood_lower_log.txt
deleted file mode 100644
index 29778657d24abfc007be5a3bf35ed36d6155f74d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_0/6/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.207228 1.95485e-18 0
-1.95485e-18 0.0104677 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00718107 2.31491e-18 0
-2.31491e-18 0.035673 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-6.92822e-19 -0.0118549 0
--0.0118549 9.82379e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-319.901 45.648 1.90503e-15
-45.648 802.996 3.31915e-15
-1.67253e-15 1.69958e-15 208.621
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1277.53 -306.177 9.19163e-15
-Beff_: 4.08103 -0.613288 1.63374e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=319.901
-q2=802.996
-q3=208.621
-q12=45.648
-q13=1.90503e-15
-q23=3.31915e-15
-q_onetwo=45.648021
-b1=4.081028
-b2=-0.613288
-b3=0.000000
-mu_gamma=208.621458
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.19901e+02  & 8.02996e+02  & 2.08621e+02  & 4.56480e+01  & 1.90503e-15  & 3.31915e-15  & 4.08103e+00  & -6.13288e-01 & 1.63374e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/BMatrix.txt
deleted file mode 100644
index 910cfcd016877f3d866c6eaf21b888ed5a6882e2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.15596094148045392
-1 2 -0.776402193757820269
-1 3 1.7703424517171586e-29
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/QMatrix.txt
deleted file mode 100644
index 2c5d3a2b37ab326494910bb78231fb135d60cb0f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 357.254344081100442
-1 2 42.7769003929809344
-1 3 -3.54062960976149439e-29
-2 1 42.7769003929807212
-2 2 790.334706977815472
-2 3 -2.1239155426702437e-30
-3 1 2.04724547529040308e-28
-3 2 5.65787579245127431e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/perforated_wood_lower_log.txt
deleted file mode 100644
index 2eb85621c635924c36e85dafcc2c2078d3c97e56..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/0/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.214567 9.80362e-30 0
-9.80362e-30 0.0106599 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0104814 2.4435e-30 0
-2.4435e-30 0.0717071 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.07707e-31 8.75336e-20 0
-8.75336e-20 1.54743e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-357.254 42.7769 -3.54063e-29
-42.7769 790.335 -2.12392e-30
-2.04725e-28 5.65788e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1451.52 -435.838 4.77623e-27
-Beff_: 4.15596 -0.776402 1.77034e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=357.254
-q2=790.335
-q3=224.213
-q12=42.7769
-q13=-3.54063e-29
-q23=-2.12392e-30
-q_onetwo=42.776900
-b1=4.155961
-b2=-0.776402
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.57254e+02  & 7.90335e+02  & 2.24213e+02  & 4.27769e+01  & -3.54063e-29 & -2.12392e-30 & 4.15596e+00  & -7.76402e-01 & 1.77034e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/BMatrix.txt
deleted file mode 100644
index 1f077dfe3da31925f5b56ce3aebaae18fd0483e8..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.16747086366115305
-1 2 -0.787908264368778033
-1 3 -4.37460529529542092e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/QMatrix.txt
deleted file mode 100644
index 78269e50188f1221e288e20324fee638d01e60e7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 350.319317619259664
-1 2 42.2688647672164777
-1 3 1.54207430245328903e-16
-2 1 42.2688647672159163
-2 2 770.507424566568261
-2 3 3.44517945801477848e-16
-3 1 1.12816106486563449e-16
-3 2 4.47586370661259207e-16
-3 3 220.28914689225067
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/perforated_wood_lower_log.txt
deleted file mode 100644
index 5bb7c8e9661a03a80296d89d3b4565c3a3e952e3..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/1/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.217968 2.0765e-19 0
-2.0765e-19 0.0108203 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0102482 1.05418e-19 0
-1.05418e-19 0.067367 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-4.40253e-20 -0.00297989 0
--0.00297989 7.28066e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-350.319 42.2689 1.54207e-16
-42.2689 770.507 3.44518e-16
-1.12816e-16 4.47586e-16 220.289
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1426.64 -430.935 -8.46177e-16
-Beff_: 4.16747 -0.787908 -4.37461e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=350.319
-q2=770.507
-q3=220.289
-q12=42.2689
-q13=1.54207e-16
-q23=3.44518e-16
-q_onetwo=42.268865
-b1=4.167471
-b2=-0.787908
-b3=-0.000000
-mu_gamma=220.289147
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.50319e+02  & 7.70507e+02  & 2.20289e+02  & 4.22689e+01  & 1.54207e-16  & 3.44518e-16  & 4.16747e+00  & -7.87908e-01 & -4.37461e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/BMatrix.txt
deleted file mode 100644
index ce6bf5648110b148f26fe564babe720e1d170967..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.17727072832930535
-1 2 -0.797892159648131316
-1 3 4.1301237300981938e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/QMatrix.txt
deleted file mode 100644
index 7498ece7be4874f0a31e7d97c2b6bbdcf1fa5197..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 344.883201764133844
-1 2 42.3473865811605918
-1 3 2.06460045728499436e-16
-2 1 42.3473865811604497
-2 2 754.881771804827849
-2 3 2.80793539597168698e-16
-3 1 2.00514245015688672e-16
-3 2 7.23904744030507818e-16
-3 3 217.121115659475748
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/perforated_wood_lower_log.txt
deleted file mode 100644
index 0f706e09e6a69ed7db9688339b3bd2e10874fe6b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/2/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.22065 2.00996e-19 0
-2.00996e-19 0.0111369 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00986091 4.6626e-20 0
-4.6626e-20 0.0637154 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-6.32571e-20 -0.00548097 0
--0.00548097 1.16374e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-344.883 42.3474 2.0646e-16
-42.3474 754.882 2.80794e-16
-2.00514e-16 7.23905e-16 217.121
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1406.88 -425.418 1.15674e-15
-Beff_: 4.17727 -0.797892 4.13012e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=344.883
-q2=754.882
-q3=217.121
-q12=42.3474
-q13=2.0646e-16
-q23=2.80794e-16
-q_onetwo=42.347387
-b1=4.177271
-b2=-0.797892
-b3=0.000000
-mu_gamma=217.121116
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.44883e+02  & 7.54882e+02  & 2.17121e+02  & 4.23474e+01  & 2.06460e-16  & 2.80794e-16  & 4.17727e+00  & -7.97892e-01 & 4.13012e-18  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/BMatrix.txt
deleted file mode 100644
index c307e672fcaf5cf11b5a4fa8a94480ee3b4f434e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.19322740638802749
-1 2 -0.815291083271237005
-1 3 -4.62434020017104174e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/QMatrix.txt
deleted file mode 100644
index f3ff2b544a9234d957f57f1e506670bbe881c0ba..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 336.557374084184175
-1 2 43.0074654887870551
-1 3 1.30792983187673004e-15
-2 1 43.0074654887870551
-2 2 729.67799510550708
-2 3 9.50445505718683359e-16
-3 1 5.09702777459434674e-16
-3 2 8.45123060011809303e-16
-3 3 212.123863225977914
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/perforated_wood_lower_log.txt
deleted file mode 100644
index 975958d8017dc35894af12e6a568ecf4c511125a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/3/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.22479 1.16266e-18 0
-1.16266e-18 0.011866 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00899841 3.81537e-19 0
-3.81537e-19 0.0575174 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.46908e-19 -0.00954319 0
--0.00954319 7.33649e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-336.557 43.0075 1.30793e-15
-43.0075 729.678 9.50446e-16
-5.09703e-16 8.45123e-16 212.124
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1376.2 -414.56 4.67345e-16
-Beff_: 4.19323 -0.815291 -4.62434e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=336.557
-q2=729.678
-q3=212.124
-q12=43.0075
-q13=1.30793e-15
-q23=9.50446e-16
-q_onetwo=43.007465
-b1=4.193227
-b2=-0.815291
-b3=-0.000000
-mu_gamma=212.123863
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.36557e+02  & 7.29678e+02  & 2.12124e+02  & 4.30075e+01  & 1.30793e-15  & 9.50446e-16  & 4.19323e+00  & -8.15291e-01 & -4.62434e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/BMatrix.txt
deleted file mode 100644
index 82cb18514bcf124a51e9a52f0850ee13c852c337..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.20409317115905257
-1 2 -0.824066795212823444
-1 3 1.30882766567444831e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/QMatrix.txt
deleted file mode 100644
index 293777988da5f8cb8b7df8236a5626eeaae97948..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 330.485351953942939
-1 2 42.6372030389351551
-1 3 1.89715305504113349e-15
-2 1 42.6372030389351266
-2 2 715.848291505663724
-2 3 1.53457806087008847e-16
-3 1 1.31443451551605103e-15
-3 2 5.4174453831151736e-16
-3 3 208.781630065269923
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/perforated_wood_lower_log.txt
deleted file mode 100644
index b351765efecc63341baaa668ffdb1599fd06871d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/4/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.227788 1.98021e-18 0
-1.98021e-18 0.0120262 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00881008 -4.43055e-20 0
--4.43055e-20 0.0540886 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-5.63743e-19 -0.0123176 0
--0.0123176 6.74047e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-330.485 42.6372 1.89715e-15
-42.6372 715.848 1.53458e-16
-1.31443e-15 5.41745e-16 208.782
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1354.26 -410.656 7.81216e-15
-Beff_: 4.20409 -0.824067 1.30883e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=330.485
-q2=715.848
-q3=208.782
-q12=42.6372
-q13=1.89715e-15
-q23=1.53458e-16
-q_onetwo=42.637203
-b1=4.204093
-b2=-0.824067
-b3=0.000000
-mu_gamma=208.781630
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.30485e+02  & 7.15848e+02  & 2.08782e+02  & 4.26372e+01  & 1.89715e-15  & 1.53458e-16  & 4.20409e+00  & -8.24067e-01 & 1.30883e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/BMatrix.txt
deleted file mode 100644
index c703e944fc66951d224cae1ed5c1f78242b68042..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.21657987985527871
-1 2 -0.833795656851315847
-1 3 -3.57357798101385084e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/QMatrix.txt
deleted file mode 100644
index 7d1c29f0da1efcbd29c96ca40777c83afbe0909f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 323.591225430740565
-1 2 41.9617675119484517
-1 3 1.31211925683384981e-15
-2 1 41.9617675119482101
-2 2 700.20700851681886
-2 3 3.26024675464074709e-15
-3 1 5.88216312748354904e-16
-3 2 2.73355584468651077e-15
-3 3 204.353098695254914
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/perforated_wood_lower_log.txt
deleted file mode 100644
index b7376cfa2696e10b6212ad94a6715502c911d267..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/5/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.231186 1.44451e-18 0
-1.44451e-18 0.0120991 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00869934 2.07143e-18 0
-2.07143e-18 0.0500877 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.20169e-19 -0.0160681 0
--0.0160681 1.21238e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-323.591 41.9618 1.31212e-15
-41.9618 700.207 3.26025e-15
-5.88216e-16 2.73356e-15 204.353
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1329.46 -406.894 -7.10168e-15
-Beff_: 4.21658 -0.833796 -3.57358e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=323.591
-q2=700.207
-q3=204.353
-q12=41.9618
-q13=1.31212e-15
-q23=3.26025e-15
-q_onetwo=41.961768
-b1=4.216580
-b2=-0.833796
-b3=-0.000000
-mu_gamma=204.353099
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.23591e+02  & 7.00207e+02  & 2.04353e+02  & 4.19618e+01  & 1.31212e-15  & 3.26025e-15  & 4.21658e+00  & -8.33796e-01 & -3.57358e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/BMatrix.txt
deleted file mode 100644
index 5cd411ab74f9a2783a0ef185766da24f18b22107..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.23112307756473705
-1 2 -0.845475233201549936
-1 3 -3.48722926218938752e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/QMatrix.txt
deleted file mode 100644
index a26c6a02e67067ac86451fc637eee37a78c9f946..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 315.851642515818298
-1 2 41.4100179913812454
-1 3 2.92177408298382318e-15
-2 1 41.4100179913806414
-2 2 682.59687770089954
-2 3 2.55132761163394395e-15
-3 1 9.38393073912201919e-16
-3 2 3.54651964449458545e-15
-3 3 199.508657961051227
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/perforated_wood_lower_log.txt
deleted file mode 100644
index c1e929931c862ca032d7ae6ad30369f90ab30650..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_1/6/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.235023 3.00607e-18 0
-3.00607e-18 0.0122714 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00848705 2.48771e-18 0
-2.48771e-18 0.0454293 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-5.03289e-19 -0.0202436 0
--0.0202436 7.54728e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-315.852 41.41 2.92177e-15
-41.41 682.597 2.55133e-15
-9.38393e-16 3.54652e-15 199.509
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1301.4 -401.908 -5.98536e-15
-Beff_: 4.23112 -0.845475 -3.48723e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=315.852
-q2=682.597
-q3=199.509
-q12=41.41
-q13=2.92177e-15
-q23=2.55133e-15
-q_onetwo=41.410018
-b1=4.231123
-b2=-0.845475
-b3=-0.000000
-mu_gamma=199.508658
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.15852e+02  & 6.82597e+02  & 1.99509e+02  & 4.14100e+01  & 2.92177e-15  & 2.55133e-15  & 4.23112e+00  & -8.45475e-01 & -3.48723e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/BMatrix.txt
deleted file mode 100644
index be8657c5a7c7ec0fdcf0db4b7caa753e557a9c73..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.03873445069710524
-1 2 -1.05995320800370529
-1 3 1.36076669459033724e-29
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/QMatrix.txt
deleted file mode 100644
index 655f1ff64c6cb9651d8618f4c60a9a720c897fe2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 362.077597710087787
-1 2 38.6653780788820356
-1 3 7.65965450042136346e-29
-2 1 38.6653780788812682
-2 2 673.576799924798138
-2 3 2.35949529346769039e-29
-3 1 1.91929433331978192e-28
-3 2 5.49556981433154364e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/perforated_wood_lower_log.txt
deleted file mode 100644
index 23e4ac9988a480ac380211e83f971bdf72e55340..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/0/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.228051 8.83488e-30 0
-8.83488e-30 0.0120825 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0119521 2.30937e-30 0
-2.30937e-30 0.0967075 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-7.67493e-32 8.75336e-20 0
-8.75336e-20 1.40158e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-362.078 38.6654 7.65965e-29
-38.6654 673.577 2.3595e-29
-1.91929e-28 5.49557e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1421.35 -557.801 3.76792e-27
-Beff_: 4.03873 -1.05995 1.36077e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=362.078
-q2=673.577
-q3=224.213
-q12=38.6654
-q13=7.65965e-29
-q23=2.3595e-29
-q_onetwo=38.665378
-b1=4.038734
-b2=-1.059953
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.62078e+02  & 6.73577e+02  & 2.24213e+02  & 3.86654e+01  & 7.65965e-29  & 2.35950e-29  & 4.03873e+00  & -1.05995e+00 & 1.36077e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/BMatrix.txt
deleted file mode 100644
index cfc89d36215f35995f2970f5813244a911a80feb..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.04999007563965829
-1 2 -1.08093307893877499
-1 3 -7.6171819283678007e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/QMatrix.txt
deleted file mode 100644
index 0fa1530f2c2e9db4d492d2279f067adc61f789ac..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 352.070772869657958
-1 2 38.3755898253089001
-1 3 4.91537030939933131e-16
-2 1 38.3755898253085377
-2 2 651.985363682309867
-2 3 5.01316026315984029e-16
-3 1 3.56474133489327518e-16
-3 2 -1.48215042720419151e-16
-3 3 219.115897677100861
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/perforated_wood_lower_log.txt
deleted file mode 100644
index 127f05d56723ca378a9716eeea165d9cf2449b55..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/1/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.23203 5.00488e-19 0
-5.00488e-19 0.0124378 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.011597 2.63189e-19 0
-2.63189e-19 0.0911294 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.27388e-19 -0.00402529 0
--0.00402529 -1.66064e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-352.071 38.3756 4.91537e-16
-38.3756 651.985 5.01316e-16
-3.56474e-16 -1.48215e-16 219.116
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1384.4 -549.332 -6.51184e-17
-Beff_: 4.04999 -1.08093 -7.61718e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=352.071
-q2=651.985
-q3=219.116
-q12=38.3756
-q13=4.91537e-16
-q23=5.01316e-16
-q_onetwo=38.375590
-b1=4.049990
-b2=-1.080933
-b3=-0.000000
-mu_gamma=219.115898
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.52071e+02  & 6.51985e+02  & 2.19116e+02  & 3.83756e+01  & 4.91537e-16  & 5.01316e-16  & 4.04999e+00  & -1.08093e+00 & -7.61718e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/BMatrix.txt
deleted file mode 100644
index 6fb1e0b1cc53d661cbf3a14b257927d272ee872a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.06569482979447194
-1 2 -1.11069937965733834
-1 3 -8.81203681641755608e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/QMatrix.txt
deleted file mode 100644
index dbfd83b76ab8a0bafac017305d42ab7f89cdeb07..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 340.447245262669469
-1 2 38.9900921055484488
-1 3 9.98984305244617413e-16
-2 1 38.9900921055476744
-2 2 623.427813598986177
-2 3 1.46048681842433394e-15
-3 1 7.89492093323184395e-16
-3 2 1.09986105882315787e-15
-3 3 212.168284823904514
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/perforated_wood_lower_log.txt
deleted file mode 100644
index 79fdc6d74e8feb4767e342ce5ee6b191748ab4ac..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/2/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.236673 1.10305e-18 0
-1.10305e-18 0.0133219 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0107483 8.82359e-19 0
-8.82359e-19 0.0829747 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.90047e-19 -0.00974864 0
--0.00974864 2.92401e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-340.447 38.9901 9.98984e-16
-38.9901 623.428 1.46049e-15
-7.89492e-16 1.09986e-15 212.168
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1340.85 -533.919 1.18584e-16
-Beff_: 4.06569 -1.1107 -8.81204e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=340.447
-q2=623.428
-q3=212.168
-q12=38.9901
-q13=9.98984e-16
-q23=1.46049e-15
-q_onetwo=38.990092
-b1=4.065695
-b2=-1.110699
-b3=-0.000000
-mu_gamma=212.168285
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.40447e+02  & 6.23428e+02  & 2.12168e+02  & 3.89901e+01  & 9.98984e-16  & 1.46049e-15  & 4.06569e+00  & -1.11070e+00 & -8.81204e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/BMatrix.txt
deleted file mode 100644
index 05556a474c9c2ca562a447b76a86fadece581f95..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.07522521316911224
-1 2 -1.12490731268905186
-1 3 -5.60557530105352452e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/QMatrix.txt
deleted file mode 100644
index 00529def5dc54a40e97fb61edae29aba70975998..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 331.879414845983206
-1 2 38.0845052426550126
-1 3 2.85464841597981439e-15
-2 1 38.0845052426548492
-2 2 608.896465572778993
-2 3 1.46121653730839351e-17
-3 1 2.45055229025083719e-15
-3 2 1.70718114090564945e-15
-3 3 207.252566029754433
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/perforated_wood_lower_log.txt
deleted file mode 100644
index e686481643636c62aef1014f046c31e6f3fde1c2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/3/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.240067 2.29917e-18 0
-2.29917e-18 0.0132941 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0107149 3.0661e-20 0
-3.0661e-20 0.0788311 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-6.45753e-19 -0.0138948 0
--0.0138948 7.62571e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-331.879 38.0845 2.85465e-15
-38.0845 608.896 1.46122e-17
-2.45055e-15 1.70718e-15 207.253
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1309.64 -529.749 6.90436e-15
-Beff_: 4.07523 -1.12491 -5.60558e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=331.879
-q2=608.896
-q3=207.253
-q12=38.0845
-q13=2.85465e-15
-q23=1.46122e-17
-q_onetwo=38.084505
-b1=4.075225
-b2=-1.124907
-b3=-0.000000
-mu_gamma=207.252566
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.31879e+02  & 6.08896e+02  & 2.07253e+02  & 3.80845e+01  & 2.85465e-15  & 1.46122e-17  & 4.07523e+00  & -1.12491e+00 & -5.60558e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/BMatrix.txt
deleted file mode 100644
index 74b8a5d704c867f74a0c6ffa8c27e008cefe27fc..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.08391953036553446
-1 2 -1.13712862436162232
-1 3 -3.22492018316077058e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/QMatrix.txt
deleted file mode 100644
index 804f67f00929efcc31e93a2d5c9f86929a9dc453..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 324.258487924717656
-1 2 36.9759022876518699
-1 3 8.71286888665979975e-16
-2 1 36.9759022876519978
-2 2 596.282689315279072
-2 3 1.06255624551842079e-16
-3 1 1.09839336248380298e-15
-3 2 2.4915950599518075e-15
-3 3 201.223021216891823
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/perforated_wood_lower_log.txt
deleted file mode 100644
index 74de42e764c7a4da4bfb9e3fe4058fce5827469b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/4/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.243068 7.49364e-19 0
-7.49364e-19 0.0131093 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0107975 1.22099e-20 0
-1.22099e-20 0.0751146 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-3.75858e-19 -0.019107 0
--0.019107 5.97949e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-324.258 36.9759 8.71287e-16
-36.9759 596.283 1.06256e-16
-1.09839e-15 2.4916e-15 201.223
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1282.2 -527.044 1.00356e-15
-Beff_: 4.08392 -1.13713 -3.22492e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=324.258
-q2=596.283
-q3=201.223
-q12=36.9759
-q13=8.71287e-16
-q23=1.06256e-16
-q_onetwo=36.975902
-b1=4.083920
-b2=-1.137129
-b3=-0.000000
-mu_gamma=201.223021
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.24258e+02  & 5.96283e+02  & 2.01223e+02  & 3.69759e+01  & 8.71287e-16  & 1.06256e-16  & 4.08392e+00  & -1.13713e+00 & -3.22492e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/BMatrix.txt
deleted file mode 100644
index 453b31666ce628f1609bf2da1c2650dc0455ccd3..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.0995890348852857
-1 2 -1.16321704880237808
-1 3 2.3980641859732622e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/QMatrix.txt
deleted file mode 100644
index 314647c63944302d55350e16a22ff88d26f6fb0e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 312.854491459566361
-1 2 36.8999891191427025
-1 3 4.81830287474283026e-15
-2 1 36.8999891191426741
-2 2 573.051681988519476
-2 3 6.92613250552389509e-15
-3 1 4.46786713325536024e-15
-3 2 5.5546311568898353e-15
-3 3 194.421949041239856
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/perforated_wood_lower_log.txt
deleted file mode 100644
index 7af06d4743daa329a98e661b63416925bed882e0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/5/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.247636 4.9213e-18 0
-4.9213e-18 0.0136516 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0102666 5.91604e-18 0
-5.91604e-18 0.067768 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.34007e-18 -0.0250186 0
--0.0250186 1.54394e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-312.854 36.9 4.8183e-15
-36.9 573.052 6.92613e-15
-4.46787e-15 5.55463e-15 194.422
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1239.65 -515.309 1.65175e-14
-Beff_: 4.09959 -1.16322 2.39806e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=312.854
-q2=573.052
-q3=194.422
-q12=36.9
-q13=4.8183e-15
-q23=6.92613e-15
-q_onetwo=36.899989
-b1=4.099589
-b2=-1.163217
-b3=0.000000
-mu_gamma=194.421949
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.12854e+02  & 5.73052e+02  & 1.94422e+02  & 3.69000e+01  & 4.81830e-15  & 6.92613e-15  & 4.09959e+00  & -1.16322e+00 & 2.39806e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/BMatrix.txt
deleted file mode 100644
index 59ae65e6430d2a22d81b75cd0f1d8f169d2677bd..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.10987377483157346
-1 2 -1.17735571055468613
-1 3 1.4162292737214143e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/QMatrix.txt
deleted file mode 100644
index efbf744dd2348b835990b72146c17051224d0154..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 304.292427642370228
-1 2 35.8259334588520275
-1 3 6.14487759585452195e-15
-2 1 35.8259334588520062
-2 2 559.888769051529607
-2 3 2.29185685593448138e-15
-3 1 5.43392303267546672e-15
-3 2 -3.1505559879713152e-16
-3 3 188.472903784859085
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/perforated_wood_lower_log.txt
deleted file mode 100644
index 8ccb9c1c677f3773f51e7fea047412a72976c044..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_2/6/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.251043 5.27593e-18 0
-5.27593e-18 0.0135199 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0103203 1.73829e-18 0
-1.73829e-18 0.0636326 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.05042e-18 -0.0303056 0
--0.0303056 -5.04844e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-304.292 35.8259 6.14488e-15
-35.8259 559.889 2.29186e-15
-5.43392e-15 -3.15056e-16 188.473
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1208.42 -511.948 2.53729e-14
-Beff_: 4.10987 -1.17736 1.41623e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=304.292
-q2=559.889
-q3=188.473
-q12=35.8259
-q13=6.14488e-15
-q23=2.29186e-15
-q_onetwo=35.825933
-b1=4.109874
-b2=-1.177356
-b3=0.000000
-mu_gamma=188.472904
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.04292e+02  & 5.59889e+02  & 1.88473e+02  & 3.58259e+01  & 6.14488e-15  & 2.29186e-15  & 4.10987e+00  & -1.17736e+00 & 1.41623e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/BMatrix.txt
deleted file mode 100644
index 29f046f95765f89baf0b3926693da51f9fa1cd71..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.38385954774598163
-1 2 -1.4580752040276912
-1 3 6.56599696043288159e-30
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/QMatrix.txt
deleted file mode 100644
index e37cbac73f60b005f3262687867e554af818225a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 362.884400627699449
-1 2 33.598217280456808
-1 3 2.66764408456964812e-29
-2 1 33.5982172804586838
-2 2 535.044060612796784
-2 3 -9.76610185849601493e-30
-3 1 1.41209476925862098e-28
-3 2 5.2699761983748409e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/perforated_wood_lower_log.txt
deleted file mode 100644
index a196c459b6f8346156aaddc6c15a94da6e9864e4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/0/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.226315 4.74252e-30 0
-4.74252e-30 0.0133775 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0133074 2.25105e-30 0
-2.25105e-30 0.133677 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-3.78604e-32 8.75336e-20 0
-8.75336e-20 8.16086e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-362.884 33.5982 2.66764e-29
-33.5982 535.044 -9.7661e-30
-1.41209e-28 5.26998e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1178.96 -666.443 1.87317e-27
-Beff_: 3.38386 -1.45808 6.566e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=362.884
-q2=535.044
-q3=224.213
-q12=33.5982
-q13=2.66764e-29
-q23=-9.7661e-30
-q_onetwo=33.598217
-b1=3.383860
-b2=-1.458075
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.62884e+02  & 5.35044e+02  & 2.24213e+02  & 3.35982e+01  & 2.66764e-29  & -9.76610e-30 & 3.38386e+00  & -1.45808e+00 & 6.56600e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/BMatrix.txt
deleted file mode 100644
index 702bf5d7f9b49384ac40aba5831c0ca1e50d0438..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.38622447818192507
-1 2 -1.50729967730868508
-1 3 8.64824522312232702e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/QMatrix.txt
deleted file mode 100644
index 1e244e88b94b95db23b56f03b18f5ab22e77252f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 344.998044908976908
-1 2 33.6599693231505128
-1 3 7.8376530356679807e-16
-2 1 33.6599693231504205
-2 2 504.509099129817287
-2 3 2.28891489875043038e-16
-3 1 1.27892340035624334e-15
-3 2 -5.5903528656161541e-16
-3 3 214.696384378512647
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/perforated_wood_lower_log.txt
deleted file mode 100644
index d250ff21f56c27147b6456d6272a5a6b3a74f52e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/1/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.231826 6.04268e-19 0
-6.04268e-19 0.014246 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0125956 9.4124e-20 0
-9.4124e-20 0.122725 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-4.01162e-19 -0.00765556 0
--0.00765556 -5.05207e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-344.998 33.66 7.83765e-16
-33.66 504.509 2.28891e-16
-1.27892e-15 -5.59035e-16 214.696
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1117.51 -646.466 7.0301e-15
-Beff_: 3.38622 -1.5073 8.64825e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=344.998
-q2=504.509
-q3=214.696
-q12=33.66
-q13=7.83765e-16
-q23=2.28891e-16
-q_onetwo=33.659969
-b1=3.386224
-b2=-1.507300
-b3=0.000000
-mu_gamma=214.696384
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.44998e+02  & 5.04509e+02  & 2.14696e+02  & 3.36600e+01  & 7.83765e-16  & 2.28891e-16  & 3.38622e+00  & -1.50730e+00 & 8.64825e-18  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/BMatrix.txt
deleted file mode 100644
index 4cf7f767ae212797dcc277633bac32733accbbb7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.38751867781356752
-1 2 -1.54825517746634622
-1 3 2.63368964115580119e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/QMatrix.txt
deleted file mode 100644
index 3e29b6f10e2b7a84d37f87e8f65aa1427d3829de..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 329.166779877348517
-1 2 33.2427905220994759
-1 3 -7.6088884948559074e-16
-2 1 33.2427905220995967
-2 2 480.185910971666715
-2 3 3.65489422784310257e-16
-3 1 6.93205834802288617e-16
-3 2 3.50498781914569419e-15
-3 3 204.431808589058903
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/perforated_wood_lower_log.txt
deleted file mode 100644
index 46237fad5e39f22f383021b8551fe6c8e86677f6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/2/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.236688 -2.76952e-19 0
--2.76952e-19 0.0147455 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0121199 1.42316e-19 0
-1.42316e-19 0.113357 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--5.67924e-20 -0.0161343 0
--0.0161343 1.94741e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-329.167 33.2428 -7.60889e-16
-33.2428 480.186 3.65489e-16
-6.93206e-16 3.50499e-15 204.432
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1063.59 -630.84 -2.53996e-15
-Beff_: 3.38752 -1.54826 2.63369e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=329.167
-q2=480.186
-q3=204.432
-q12=33.2428
-q13=-7.60889e-16
-q23=3.65489e-16
-q_onetwo=33.242791
-b1=3.387519
-b2=-1.548255
-b3=0.000000
-mu_gamma=204.431809
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.29167e+02  & 4.80186e+02  & 2.04432e+02  & 3.32428e+01  & -7.60889e-16 & 3.65489e-16  & 3.38752e+00  & -1.54826e+00 & 2.63369e-18  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/BMatrix.txt
deleted file mode 100644
index fae9f46859f20e7038e99d7d952798a98d57a20d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.38677315818319613
-1 2 -1.58548811490238983
-1 3 2.66345360256195294e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/QMatrix.txt
deleted file mode 100644
index ad1aa6d963e2ab8a6e1b12bad2efddd7ef872d4d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 313.716635430162569
-1 2 32.0398639550847264
-1 3 4.85905659445055003e-15
-2 1 32.0398639550851598
-2 2 459.039654096284096
-2 3 5.41997049421005708e-15
-3 1 3.32577407047328702e-15
-3 2 4.10582915797287444e-15
-3 3 192.997144512449893
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/perforated_wood_lower_log.txt
deleted file mode 100644
index 420bd6058efc82bddb052a3686fc26fb7ddd7da1..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/3/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.241417 4.21599e-18 0
-4.21599e-18 0.0147446 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0119257 4.39247e-18 0
-4.39247e-18 0.104877 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-9.21444e-19 -0.0257544 0
--0.0257544 1.64891e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-313.717 32.0399 4.85906e-15
-32.0399 459.04 5.41997e-15
-3.32577e-15 4.10583e-15 192.997
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1011.69 -619.29 9.89429e-15
-Beff_: 3.38677 -1.58549 2.66345e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=313.717
-q2=459.04
-q3=192.997
-q12=32.0399
-q13=4.85906e-15
-q23=5.41997e-15
-q_onetwo=32.039864
-b1=3.386773
-b2=-1.585488
-b3=0.000000
-mu_gamma=192.997145
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.13717e+02  & 4.59040e+02  & 1.92997e+02  & 3.20399e+01  & 4.85906e-15  & 5.41997e-15  & 3.38677e+00  & -1.58549e+00 & 2.66345e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/BMatrix.txt
deleted file mode 100644
index 462213a66879654daa9d18e0de1b77e3ebd91838..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.38329165935905918
-1 2 -1.62307733423587353
-1 3 -4.75481677545238855e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/QMatrix.txt
deleted file mode 100644
index afea9392560251a252f8abbc29c9bc99a50d491e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 296.999292925999669
-1 2 29.9252990199986542
-1 3 3.96837307480892021e-15
-2 1 29.9252990199986577
-2 2 438.524434249791966
-2 3 1.97615793561391022e-15
-3 1 3.68911181781333454e-15
-3 2 6.03818829043368567e-15
-3 3 179.344860199959697
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/perforated_wood_lower_log.txt
deleted file mode 100644
index 6802dc4900633123e43132ae6be5fd3d0288fe7c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/4/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.246518 2.90359e-18 0
-2.90359e-18 0.0142323 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0119901 1.44253e-18 0
-1.44253e-18 0.0963391 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-8.95888e-19 -0.0373961 0
--0.0373961 2.63468e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-296.999 29.9253 3.96837e-15
-29.9253 438.524 1.97616e-15
-3.68911e-15 6.03819e-15 179.345
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 956.264 -610.513 1.82814e-15
-Beff_: 3.38329 -1.62308 -4.75482e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=296.999
-q2=438.524
-q3=179.345
-q12=29.9253
-q13=3.96837e-15
-q23=1.97616e-15
-q_onetwo=29.925299
-b1=3.383292
-b2=-1.623077
-b3=-0.000000
-mu_gamma=179.344860
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.96999e+02  & 4.38524e+02  & 1.79345e+02  & 2.99253e+01  & 3.96837e-15  & 1.97616e-15  & 3.38329e+00  & -1.62308e+00 & -4.75482e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/BMatrix.txt
deleted file mode 100644
index a94193556c8c9bd64f1f7ecddda8edbdf108d0f0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.38122519218866069
-1 2 -1.6616122530121884
-1 3 1.26485126661345282e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/QMatrix.txt
deleted file mode 100644
index 7ba3810a534d1e9aa8f805b9a2f4230f7fba627d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 283.375878161345554
-1 2 28.7826308829220778
-1 3 8.55205714052472907e-15
-2 1 28.7826308829218718
-2 2 418.964184128026147
-2 3 5.2669287930583869e-15
-3 1 9.6672920590987893e-15
-3 2 1.07166930359134036e-14
-3 3 168.2955375686536
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/perforated_wood_lower_log.txt
deleted file mode 100644
index 049d514fc97e59a346cb64862b6650a1005b36e3..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/5/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.250708 7.1493e-18 0
-7.1493e-18 0.0141849 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0117984 4.04093e-18 0
-4.04093e-18 0.0877191 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.55168e-18 -0.0468698 0
--0.0468698 5.25253e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-283.376 28.7826 8.55206e-15
-28.7826 418.964 5.26693e-15
-9.66729e-15 1.07167e-14 168.296
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 910.332 -598.835 3.61672e-14
-Beff_: 3.38123 -1.66161 1.26485e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=283.376
-q2=418.964
-q3=168.296
-q12=28.7826
-q13=8.55206e-15
-q23=5.26693e-15
-q_onetwo=28.782631
-b1=3.381225
-b2=-1.661612
-b3=0.000000
-mu_gamma=168.295538
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.83376e+02  & 4.18964e+02  & 1.68296e+02  & 2.87826e+01  & 8.55206e-15  & 5.26693e-15  & 3.38123e+00  & -1.66161e+00 & 1.26485e-16  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/BMatrix.txt
deleted file mode 100644
index 1177db1a0425decde8da32e63cee783fda9b322b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.37520090948035811
-1 2 -1.68941079783955828
-1 3 5.86037437913984807e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/QMatrix.txt
deleted file mode 100644
index 24a3ba01b79789377971e9ec164e9cef359d1338..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 269.780072688275425
-1 2 26.4907150971832621
-1 3 1.19321997147834279e-14
-2 1 26.490715097183049
-2 2 405.237829781547759
-2 3 2.43658281112648246e-15
-3 1 9.93233967972297419e-15
-3 2 2.34726509266264781e-15
-3 3 154.36202894496958
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/perforated_wood_lower_log.txt
deleted file mode 100644
index 89342e523f4df5fcfb9a23927051579bdf31b74c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_3/6/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.254852 1.03996e-17 0
-1.03996e-17 0.0133238 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0120823 1.82025e-18 0
-1.82025e-18 0.081642 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.77565e-18 -0.0590472 0
--0.0590472 1.38459e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-269.78 26.4907 1.19322e-14
-26.4907 405.238 2.43658e-15
-9.93234e-15 2.34727e-15 154.362
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 865.808 -595.202 3.86043e-14
-Beff_: 3.3752 -1.68941 5.86037e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=269.78
-q2=405.238
-q3=154.362
-q12=26.4907
-q13=1.19322e-14
-q23=2.43658e-15
-q_onetwo=26.490715
-b1=3.375201
-b2=-1.689411
-b3=0.000000
-mu_gamma=154.362029
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.69780e+02  & 4.05238e+02  & 1.54362e+02  & 2.64907e+01  & 1.19322e-14  & 2.43658e-15  & 3.37520e+00  & -1.68941e+00 & 5.86037e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/BMatrix.txt
deleted file mode 100644
index cf985a30eec284ccfb47a20e95b7be9188929eda..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.66483564170735132
-1 2 -1.79630256913598552
-1 3 4.21524999060086665e-30
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/QMatrix.txt
deleted file mode 100644
index 4a9637791f9660e319dd9c2c48cf0c28e5488883..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 373.387124642992148
-1 2 30.7757080923943889
-1 3 -2.37028050115625891e-29
-2 1 30.775708092396453
-2 2 448.128969415925155
-2 3 1.50199183761628701e-29
-3 1 1.20071502034347367e-28
-3 2 5.43021142564616303e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/perforated_wood_lower_log.txt
deleted file mode 100644
index f4172fa32c2016934adf939bcc038327f5941ce6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/0/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.210626 4.03909e-30 0
-4.03909e-30 0.0139554 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0139207 2.21589e-30 0
-2.21589e-30 0.165225 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.46285e-32 8.75336e-20 0
-8.75336e-20 5.29448e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-373.387 30.7757 -2.37028e-29
-30.7757 448.129 1.50199e-29
-1.20072e-28 5.43021e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 939.733 -722.963 1.16754e-27
-Beff_: 2.66484 -1.7963 4.21525e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=373.387
-q2=448.129
-q3=224.213
-q12=30.7757
-q13=-2.37028e-29
-q23=1.50199e-29
-q_onetwo=30.775708
-b1=2.664836
-b2=-1.796303
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.73387e+02  & 4.48129e+02  & 2.24213e+02  & 3.07757e+01  & -2.37028e-29 & 1.50199e-29  & 2.66484e+00  & -1.79630e+00 & 4.21525e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/BMatrix.txt
deleted file mode 100644
index 5f409bdfc57b7470f35ca8375f2f1b2573f2c7a2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.64084196068768717
-1 2 -1.86292581212924491
-1 3 2.80587556336952648e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/QMatrix.txt
deleted file mode 100644
index 08889376bea01410515148a8e1e4beff1e8b3059..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 350.941627827251864
-1 2 30.8198020787422848
-1 3 1.21673932356651613e-15
-2 1 30.8198020787423559
-2 2 416.367504742039273
-2 3 3.32948428654049767e-16
-3 1 1.42819040505759312e-15
-3 2 1.51145628487153261e-15
-3 3 210.405969407880406
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/perforated_wood_lower_log.txt
deleted file mode 100644
index 9018c192bb997389291d15551dba1e486f99a86b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/1/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.216356 8.21075e-19 0
-8.21075e-19 0.01497 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0130783 2.41671e-19 0
-2.41671e-19 0.15004 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.86302e-19 -0.0107364 0
--0.0107364 7.63935e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-350.942 30.8198 1.21674e-15
-30.8198 416.368 3.32948e-16
-1.42819e-15 1.51146e-15 210.406
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 869.366 -694.272 6.85962e-15
-Beff_: 2.64084 -1.86293 2.80588e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=350.942
-q2=416.368
-q3=210.406
-q12=30.8198
-q13=1.21674e-15
-q23=3.32948e-16
-q_onetwo=30.819802
-b1=2.640842
-b2=-1.862926
-b3=0.000000
-mu_gamma=210.405969
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.50942e+02  & 4.16368e+02  & 2.10406e+02  & 3.08198e+01  & 1.21674e-15  & 3.32948e-16  & 2.64084e+00  & -1.86293e+00 & 2.80588e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/BMatrix.txt
deleted file mode 100644
index 275f0014fe6feebaa58ba2695be1c791b404b130..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.61335363713313429
-1 2 -1.9186806441407207
-1 3 2.81160794142212136e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/QMatrix.txt
deleted file mode 100644
index 6165b3d1621163ebb93391c5e4d16d789732d972..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 330.617420397262265
-1 2 29.5717994893105676
-1 3 3.10627734065359665e-15
-2 1 29.571799489311168
-2 2 391.802621169245697
-2 3 5.74697145455518117e-15
-3 1 2.74744919672473102e-15
-3 2 5.98663722998907851e-15
-3 3 193.98359385074221
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/perforated_wood_lower_log.txt
deleted file mode 100644
index 99ba84e395a464b80b3c9d9d3edf16583a4a1164..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/2/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.221497 2.47417e-18 0
-2.47417e-18 0.0150259 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0126967 4.55047e-18 0
-4.55047e-18 0.137577 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-5.53843e-19 -0.0236685 0
--0.0236685 2.95013e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-330.617 29.5718 3.10628e-15
-29.5718 391.803 5.74697e-15
-2.74745e-15 5.98664e-15 193.984
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 807.281 -674.463 1.14767e-15
-Beff_: 2.61335 -1.91868 2.81161e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=330.617
-q2=391.803
-q3=193.984
-q12=29.5718
-q13=3.10628e-15
-q23=5.74697e-15
-q_onetwo=29.571799
-b1=2.613354
-b2=-1.918681
-b3=0.000000
-mu_gamma=193.983594
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.30617e+02  & 3.91803e+02  & 1.93984e+02  & 2.95718e+01  & 3.10628e-15  & 5.74697e-15  & 2.61335e+00  & -1.91868e+00 & 2.81161e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/BMatrix.txt
deleted file mode 100644
index c5cdc8658be335b4c6ccd23549d9c9f100ed6f71..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.57983447425291912
-1 2 -1.96959270886908477
-1 3 6.7069316956404983e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/QMatrix.txt
deleted file mode 100644
index 579e4e2e683971e7afbca984f8d70d2f191215af..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 311.03932809744191
-1 2 27.4499183923376222
-1 3 8.71578627988838037e-15
-2 1 27.4499183923380947
-2 2 371.121451353094471
-2 3 -2.38052638243542967e-15
-3 1 7.44154527766455881e-15
-3 2 4.64443729209938674e-15
-3 3 177.032179766534455
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/perforated_wood_lower_log.txt
deleted file mode 100644
index 3e6940c9fb9869645232a9b77f9afaf2283edbb8..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/3/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.226439 6.2743e-18 0
-6.2743e-18 0.0144478 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0126154 -1.74495e-18 0
--1.74495e-18 0.126644 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.67747e-18 -0.0371856 0
--0.0371856 1.69041e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-311.039 27.4499 8.71579e-15
-27.4499 371.121 -2.38053e-15
-7.44155e-15 4.64444e-15 177.032
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 748.365 -660.142 2.19237e-14
-Beff_: 2.57983 -1.96959 6.70693e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=311.039
-q2=371.121
-q3=177.032
-q12=27.4499
-q13=8.71579e-15
-q23=-2.38053e-15
-q_onetwo=27.449918
-b1=2.579834
-b2=-1.969593
-b3=0.000000
-mu_gamma=177.032180
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.11039e+02  & 3.71121e+02  & 1.77032e+02  & 2.74499e+01  & 8.71579e-15  & -2.38053e-15 & 2.57983e+00  & -1.96959e+00 & 6.70693e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/BMatrix.txt
deleted file mode 100644
index 9fef61d6aa3181e531351ef52b94b1f02282ba84..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.54359903624110961
-1 2 -2.02706836820654068
-1 3 1.56564847223068667e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/QMatrix.txt
deleted file mode 100644
index adeaadcc88752576e4f1963716171bd09a5f84b5..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 292.462287506646305
-1 2 25.3977418053974979
-1 3 9.8710763277469124e-15
-2 1 25.3977418053975263
-2 2 349.523219123234981
-2 3 6.57707493958116702e-15
-3 1 1.07156565852233195e-14
-3 2 3.56775804273492137e-15
-3 3 159.642188914734078
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/perforated_wood_lower_log.txt
deleted file mode 100644
index 4e7cfe7cae4b9c9b3203ca0c125f97349526d649..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/4/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.231137 7.93719e-18 0
-7.93719e-18 0.013851 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0124778 4.69729e-18 0
-4.69729e-18 0.114697 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.41765e-18 -0.051106 0
--0.051106 2.80905e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-292.462 25.3977 9.87108e-15
-25.3977 349.523 6.57707e-15
-1.07157e-14 3.56776e-15 159.642
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 692.424 -643.906 4.50186e-14
-Beff_: 2.5436 -2.02707 1.56565e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=292.462
-q2=349.523
-q3=159.642
-q12=25.3977
-q13=9.87108e-15
-q23=6.57707e-15
-q_onetwo=25.397742
-b1=2.543599
-b2=-2.027068
-b3=0.000000
-mu_gamma=159.642189
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.92462e+02  & 3.49523e+02  & 1.59642e+02  & 2.53977e+01  & 9.87108e-15  & 6.57707e-15  & 2.54360e+00  & -2.02707e+00 & 1.56565e-16  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/BMatrix.txt
deleted file mode 100644
index 41444cd147ea878738bc62a7d0b2fdc26ba81e19..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.50985555274914951
-1 2 -2.07270084155500633
-1 3 -1.82786735055732479e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/QMatrix.txt
deleted file mode 100644
index e3e456fb788b7457c3c97249a1ef6cc3958784e4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 277.912968581139125
-1 2 23.2625137861003921
-1 3 4.62919980465299231e-15
-2 1 23.2625137861004276
-2 2 333.788388979598949
-2 3 6.62905645158165698e-15
-3 1 4.80927551522834914e-15
-3 2 3.73496499350088043e-15
-3 3 144.67579710917019
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/perforated_wood_lower_log.txt
deleted file mode 100644
index acf86395401ba0eb90b17aff14e2efbf4653d74b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/5/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.234799 3.63985e-18 0
-3.63985e-18 0.0129734 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.012521 5.57489e-18 0
-5.57489e-18 0.105707 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.08842e-18 -0.0631254 0
--0.0631254 2.22954e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-277.913 23.2625 4.6292e-15
-23.2625 333.788 6.62906e-15
-4.80928e-15 3.73496e-15 144.676
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 649.305 -633.458 1.68464e-15
-Beff_: 2.50986 -2.0727 -1.82787e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=277.913
-q2=333.788
-q3=144.676
-q12=23.2625
-q13=4.6292e-15
-q23=6.62906e-15
-q_onetwo=23.262514
-b1=2.509856
-b2=-2.072701
-b3=-0.000000
-mu_gamma=144.675797
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.77913e+02  & 3.33788e+02  & 1.44676e+02  & 2.32625e+01  & 4.62920e-15  & 6.62906e-15  & 2.50986e+00  & -2.07270e+00 & -1.82787e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/BMatrix.txt
deleted file mode 100644
index 49eda31319e6b4cad4b8aeb5d5c89a9c7d95d270..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.46804739698933817
-1 2 -2.13505755233524619
-1 3 -1.13034066728119737e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/QMatrix.txt
deleted file mode 100644
index eb97b4b3941d02303a46defcc7623ecf7e6bb750..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 261.64171605394705
-1 2 21.1839222220784009
-1 3 1.20140802722121329e-14
-2 1 21.1839222220786496
-2 2 313.790650921373697
-2 3 -9.32894226015877647e-15
-3 1 8.9196925874553571e-15
-3 2 -1.05039799249617544e-14
-3 3 127.92370442847799
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/perforated_wood_lower_log.txt
deleted file mode 100644
index e7b2de5a9cc6e8e0d1413a1182b1d41407d8c0b6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_4/6/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.238922 9.55391e-18 0
-9.55391e-18 0.0121993 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0124125 -6.93357e-18 0
--6.93357e-18 0.0938459 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.54823e-18 -0.076615 0
--0.076615 -5.59273e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-261.642 21.1839 1.20141e-14
-21.1839 313.791 -9.32894e-15
-8.91969e-15 -1.0504e-14 127.924
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 600.515 -617.678 2.99811e-14
-Beff_: 2.46805 -2.13506 -1.13034e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=261.642
-q2=313.791
-q3=127.924
-q12=21.1839
-q13=1.20141e-14
-q23=-9.32894e-15
-q_onetwo=21.183922
-b1=2.468047
-b2=-2.135058
-b3=-0.000000
-mu_gamma=127.923704
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.61642e+02  & 3.13791e+02  & 1.27924e+02  & 2.11839e+01  & 1.20141e-14  & -9.32894e-15 & 2.46805e+00  & -2.13506e+00 & -1.13034e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/BMatrix.txt
deleted file mode 100644
index fe91116a66419140efcfa10e10a57b8649f812fe..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.16105074507935901
-1 2 -1.98344337231396772
-1 3 2.57091952786952586e-30
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/QMatrix.txt
deleted file mode 100644
index 4b39868fc16ffde1fb3c56a29652891f988e3867..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 392.349438313312987
-1 2 30.0048996530020879
-1 3 7.23841510298498723e-30
-2 1 30.0048996530034842
-2 2 408.259132159441322
-2 3 1.7046791123760302e-29
-3 1 9.62934661366485363e-29
-3 2 5.3155620009550965e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/perforated_wood_lower_log.txt
deleted file mode 100644
index 7b23e855a378beb2a618a6c315b373a59da5242f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/0/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.194908 4.70518e-30 0
-4.70518e-30 0.0140927 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0140835 1.635e-30 0
-1.635e-30 0.184932 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.58978e-32 8.75336e-20 0
-8.75336e-20 2.01554e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-392.349 30.0049 7.23842e-30
-30.0049 408.259 1.70468e-29
-9.62935e-29 5.31556e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 788.374 -744.917 6.79097e-28
-Beff_: 2.16105 -1.98344 2.57092e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=392.349
-q2=408.259
-q3=224.213
-q12=30.0049
-q13=7.23842e-30
-q23=1.70468e-29
-q_onetwo=30.004900
-b1=2.161051
-b2=-1.983443
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.92349e+02  & 4.08259e+02  & 2.24213e+02  & 3.00049e+01  & 7.23842e-30  & 1.70468e-29  & 2.16105e+00  & -1.98344e+00 & 2.57092e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/BMatrix.txt
deleted file mode 100644
index b058a2ec04cd31f1ad0efbfba4203373beebfc34..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.1061545917084481
-1 2 -2.05749963086853249
-1 3 4.12058797616348285e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/QMatrix.txt
deleted file mode 100644
index ae302b27657c743e4ae725341b0ffb82ee92d460..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 366.098378118214782
-1 2 29.7018808193731338
-1 3 1.29384992083187702e-15
-2 1 29.7018808193747752
-2 2 375.701560639536922
-2 3 6.14731554196517704e-16
-3 1 1.38543668174272833e-15
-3 2 2.39509492561173001e-15
-3 3 205.870165856768466
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/perforated_wood_lower_log.txt
deleted file mode 100644
index d75c57c86d5988e126f6b2483ae341269e309a43..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/1/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.201008 8.80611e-19 0
-8.80611e-19 0.0150933 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.013212 4.23397e-19 0
-4.23397e-19 0.166592 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.34117e-19 -0.0139935 0
--0.0139935 8.14355e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-366.098 29.7019 1.29385e-15
-29.7019 375.702 6.14732e-16
-1.38544e-15 2.39509e-15 205.87
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 709.948 -710.449 6.4731e-15
-Beff_: 2.10615 -2.0575 4.12059e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=366.098
-q2=375.702
-q3=205.87
-q12=29.7019
-q13=1.29385e-15
-q23=6.14732e-16
-q_onetwo=29.701881
-b1=2.106155
-b2=-2.057500
-b3=0.000000
-mu_gamma=205.870166
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.66098e+02  & 3.75702e+02  & 2.05870e+02  & 2.97019e+01  & 1.29385e-15  & 6.14732e-16  & 2.10615e+00  & -2.05750e+00 & 4.12059e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/BMatrix.txt
deleted file mode 100644
index 98fec13bd8239f6d45efe4097c6965b28a77bd56..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.04691426025401491
-1 2 -2.12015269213630875
-1 3 -7.55855336156709028e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/QMatrix.txt
deleted file mode 100644
index edb0a1945429c8dc868f9b8993bdf8c4fbe153ed..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 342.753261612282586
-1 2 28.1135342761408502
-1 3 6.41393972913221859e-15
-2 1 28.1135342761428859
-2 2 350.632046979650966
-2 3 2.92675479553235608e-15
-3 1 3.00056985229774651e-15
-3 2 1.60552024657618832e-15
-3 3 185.675683578806257
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/perforated_wood_lower_log.txt
deleted file mode 100644
index 593b579b054897ec93e38503cabe282af526c425..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/2/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.206393 3.81715e-18 0
-3.81715e-18 0.0149939 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0127955 2.04777e-18 0
-2.04777e-18 0.15147 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-5.73124e-19 -0.0295733 0
--0.0295733 -5.19757e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-342.753 28.1135 6.41394e-15
-28.1135 350.632 2.92675e-15
-3.00057e-15 1.60552e-15 185.676
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 641.982 -685.847 1.33452e-15
-Beff_: 2.04691 -2.12015 -7.55855e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=342.753
-q2=350.632
-q3=185.676
-q12=28.1135
-q13=6.41394e-15
-q23=2.92675e-15
-q_onetwo=28.113534
-b1=2.046914
-b2=-2.120153
-b3=-0.000000
-mu_gamma=185.675684
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.42753e+02  & 3.50632e+02  & 1.85676e+02  & 2.81135e+01  & 6.41394e-15  & 2.92675e-15  & 2.04691e+00  & -2.12015e+00 & -7.55855e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/BMatrix.txt
deleted file mode 100644
index c457041bcfa22edb9a203265b1a0e69f014bc99f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.98562237208890258
-1 2 -2.17940998837972355
-1 3 7.38115124322571334e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/QMatrix.txt
deleted file mode 100644
index c32d99d4eac191062e6a9a5bb66e26f2e4daa3a2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 322.352575642990985
-1 2 25.8272422694688366
-1 3 2.73533006107365331e-15
-2 1 25.8272422694702222
-2 2 329.242014984973252
-2 3 7.46489400555341962e-15
-3 1 3.58096498044851042e-15
-3 2 7.34050875249634251e-15
-3 3 165.903215269326296
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/perforated_wood_lower_log.txt
deleted file mode 100644
index 2d6cfb63c3145159def3fb305cec3535116b28c0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/3/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.21108 1.65143e-18 0
-1.65143e-18 0.0141639 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0126209 5.35595e-18 0
-5.35595e-18 0.137885 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-6.78027e-19 -0.0449324 0
--0.0449324 2.88833e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-322.353 25.8272 2.73533e-15
-25.8272 329.242 7.46489e-15
-3.58096e-15 7.34051e-15 165.903
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 583.782 -666.27 3.35803e-15
-Beff_: 1.98562 -2.17941 7.38115e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=322.353
-q2=329.242
-q3=165.903
-q12=25.8272
-q13=2.73533e-15
-q23=7.46489e-15
-q_onetwo=25.827242
-b1=1.985622
-b2=-2.179410
-b3=0.000000
-mu_gamma=165.903215
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.22353e+02  & 3.29242e+02  & 1.65903e+02  & 2.58272e+01  & 2.73533e-15  & 7.46489e-15  & 1.98562e+00  & -2.17941e+00 & 7.38115e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/BMatrix.txt
deleted file mode 100644
index 250785c2c51b58e6a98a97ffc58c2a584d7e3425..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.91570194411631678
-1 2 -2.24295725570139792
-1 3 1.34912644755279199e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/QMatrix.txt
deleted file mode 100644
index 92013f4aeb09a89976ab502347ca3a2ab9436c10..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 302.234080455674871
-1 2 23.2535298002713233
-1 3 8.81338395716986262e-15
-2 1 23.2535298002727835
-2 2 308.309813768154072
-2 3 4.5191842802576272e-15
-3 1 6.55517878055261873e-15
-3 2 5.66079233726805853e-15
-3 3 143.920826132131651
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/perforated_wood_lower_log.txt
deleted file mode 100644
index 8b2d0d619bd3c28c34ee8acf84d175ebcd20f51c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/4/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.215697 6.32367e-18 0
-6.32367e-18 0.0130381 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0125048 3.38341e-18 0
-3.38341e-18 0.123946 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.34089e-18 -0.0620494 0
--0.0620494 1.15303e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-302.234 23.2535 8.81338e-15
-23.2535 308.31 4.51918e-15
-6.55518e-15 5.66079e-15 143.921
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 526.834 -646.979 1.92776e-14
-Beff_: 1.9157 -2.24296 1.34913e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=302.234
-q2=308.31
-q3=143.921
-q12=23.2535
-q13=8.81338e-15
-q23=4.51918e-15
-q_onetwo=23.253530
-b1=1.915702
-b2=-2.242957
-b3=0.000000
-mu_gamma=143.920826
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.02234e+02  & 3.08310e+02  & 1.43921e+02  & 2.32535e+01  & 8.81338e-15  & 4.51918e-15  & 1.91570e+00  & -2.24296e+00 & 1.34913e-16  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/BMatrix.txt
deleted file mode 100644
index 7aea8150e38e4abc41c64dcd4f04f00091669cf4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.85603858117051512
-1 2 -2.29768785669702602
-1 3 2.83658073463701581e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/QMatrix.txt
deleted file mode 100644
index a1f2f24b1ca97b4c8adfb448ec7e8c4a6a0cbd74..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 287.227199663029864
-1 2 21.1402971366876073
-1 3 1.11864520027464814e-14
-2 1 21.1402971366892807
-2 2 291.812840215799497
-2 3 6.28886335012974118e-15
-3 1 1.02101052088826068e-14
-3 2 1.00539629171577326e-14
-3 3 127.350584733715976
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/perforated_wood_lower_log.txt
deleted file mode 100644
index 3e7837ebced262e22635f14cae63f44c5d6b2eea..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/5/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.219149 8.84267e-18 0
-8.84267e-18 0.0119812 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0124179 4.92072e-18 0
-4.92072e-18 0.11251 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.70323e-18 -0.0750794 0
--0.0750794 6.87087e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-287.227 21.1403 1.11865e-14
-21.1403 291.813 6.28886e-15
-1.02101e-14 1.0054e-14 127.351
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 484.531 -631.258 3.19735e-14
-Beff_: 1.85604 -2.29769 2.83658e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=287.227
-q2=291.813
-q3=127.351
-q12=21.1403
-q13=1.11865e-14
-q23=6.28886e-15
-q_onetwo=21.140297
-b1=1.856039
-b2=-2.297688
-b3=0.000000
-mu_gamma=127.350585
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.87227e+02  & 2.91813e+02  & 1.27351e+02  & 2.11403e+01  & 1.11865e-14  & 6.28886e-15  & 1.85604e+00  & -2.29769e+00 & 2.83658e-16  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/BMatrix.txt
deleted file mode 100644
index 886ebf51c5dd330f61d3c49b555f97e4f7f8a867..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.77198211972579278
-1 2 -2.39434522901654789
-1 3 1.4424981126321284e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/QMatrix.txt
deleted file mode 100644
index 297de60d4c82f3c922a69297c274587abbe83061..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 268.290759685767568
-1 2 18.5710614166336114
-1 3 6.66333316180462934e-15
-2 1 18.5710614166351675
-2 2 265.249471970727427
-2 3 6.20437371946525604e-15
-3 1 6.98960597821758015e-15
-3 2 7.63185473442952369e-15
-3 3 108.737718776175683
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/perforated_wood_lower_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/perforated_wood_lower_log.txt
deleted file mode 100644
index 1673673e0af9a4ab78bd5060300c641913bcf365..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_lower_5/6/perforated_wood_lower_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.22351 4.98536e-18 0
-4.98536e-18 0.0107635 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0120637 4.47891e-18 0
-4.47891e-18 0.093279 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.49156e-18 -0.0895979 0
--0.0895979 1.62664e-18 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-268.291 18.5711 6.66333e-15
-18.5711 265.249 6.20437e-15
-6.98961e-15 7.63185e-15 108.738
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 430.941 -602.191 9.79756e-15
-Beff_: 1.77198 -2.39435 1.4425e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=268.291
-q2=265.249
-q3=108.738
-q12=18.5711
-q13=6.66333e-15
-q23=6.20437e-15
-q_onetwo=18.571061
-b1=1.771982
-b2=-2.394345
-b3=0.000000
-mu_gamma=108.737719
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.68291e+02  & 2.65249e+02  & 1.08738e+02  & 1.85711e+01  & 6.66333e-15  & 6.20437e-15  & 1.77198e+00  & -2.39435e+00 & 1.44250e-16  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/BMatrix.txt
deleted file mode 100644
index 6137c432727280d2dfa86fd721657aeb9a3c66f1..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.02691656716370883
-1 2 -0.576108730383210088
-1 3 2.03963883345130819e-29
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/QMatrix.txt
deleted file mode 100644
index 1534b2f63411bcda7d39fe9bba6dbfc3f37a9f36..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 344.448324198946295
-1 2 46.0309380450088881
-1 3 -1.8599861030914169e-29
-2 1 46.0309380450078862
-2 2 889.279295541113925
-2 3 4.12349304813084745e-29
-3 1 2.07158959089932232e-28
-3 2 6.15195762196629843e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/perforated_wood_upper_log.txt
deleted file mode 100644
index 99f7b04aed50a6f5f8b809662c422788b272d41a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/0/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/BMatrix.txt
deleted file mode 100644
index 162fada30f719de54b5eeef8bdc99c855c68846d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.01673193948725782
-1 2 -0.571408585630656329
-1 3 2.51259428533307006e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/QMatrix.txt
deleted file mode 100644
index 81a5a9f0d6ece78aac370812c8d3d1de316a823f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 342.715642066076271
-1 2 45.9631740539720255
-1 3 -9.74079419012972847e-17
-2 1 45.9631740539719189
-2 2 888.598101699151925
-2 3 -1.20719135642682884e-17
-3 1 5.65142499990437322e-17
-3 2 1.88651178012477772e-17
-3 3 223.44819507587161
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/perforated_wood_upper_log.txt
deleted file mode 100644
index d3fb0f043d1a7fb318cc5c9901d6bec3fc899007..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/1/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.190569 4.46494e-20 0
-4.46494e-20 0.00907093 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0090996 4.2367e-21 0
-4.2367e-21 0.0532993 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.02978e-20 0.000454423 0
-0.000454423 2.17517e-21 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-342.716 45.9632 -9.74079e-17
-45.9632 888.598 -1.20719e-17
-5.65142e-17 1.88651e-17 223.448
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1350.33 -323.131 7.77658e-16
-Beff_: 4.01673 -0.571409 2.51259e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=342.716
-q2=888.598
-q3=223.448
-q12=45.9632
-q13=-9.74079e-17
-q23=-1.20719e-17
-q_onetwo=45.963174
-b1=4.016732
-b2=-0.571409
-b3=0.000000
-mu_gamma=223.448195
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.42716e+02  & 8.88598e+02  & 2.23448e+02  & 4.59632e+01  & -9.74079e-17 & -1.20719e-17 & 4.01673e+00  & -5.71409e-01 & 2.51259e-18  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/BMatrix.txt
deleted file mode 100644
index 7b2067cd914aa770d23c951458a16167124e57be..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.99261936981966148
-1 2 -0.563429760320957818
-1 3 -1.73558493291249697e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/QMatrix.txt
deleted file mode 100644
index dd1672f3194271d20ab8f057eb3f254f1a343238..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 338.762457579968952
-1 2 45.8870250767289463
-1 3 9.94653849301779802e-17
-2 1 45.8870250767283565
-2 2 887.509454114953996
-2 3 -9.22249472970482209e-18
-3 1 -4.02255946651067231e-17
-3 2 1.38371302263462503e-17
-3 3 222.060151454125048
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/perforated_wood_upper_log.txt
deleted file mode 100644
index 234539afcf5e6d24e6e414b2130aced7eac58916..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/2/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.186263 2.29123e-20 0
-2.29123e-20 0.00889962 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0090719 -9.77089e-21 0
--9.77089e-21 0.0534633 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.22798e-19 0.00127509 0
-0.00127509 -1.1496e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-338.762 45.887 9.94654e-17
-45.887 887.509 -9.22249e-18
--4.02256e-17 1.38371e-17 222.06
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1326.7 -316.84 -4.02244e-15
-Beff_: 3.99262 -0.56343 -1.73558e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=338.762
-q2=887.509
-q3=222.06
-q12=45.887
-q13=9.94654e-17
-q23=-9.22249e-18
-q_onetwo=45.887025
-b1=3.992619
-b2=-0.563430
-b3=-0.000000
-mu_gamma=222.060151
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.38762e+02  & 8.87509e+02  & 2.22060e+02  & 4.58870e+01  & 9.94654e-17  & -9.22249e-18 & 3.99262e+00  & -5.63430e-01 & -1.73558e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/BMatrix.txt
deleted file mode 100644
index faab1ef9f610361cffdc0059f14e4e3f31715186..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.97078368225017275
-1 2 -0.556369464925766444
-1 3 -9.32048369001289406e-18
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/QMatrix.txt
deleted file mode 100644
index 5df80343bf9dfc9e3bcf58d76fd3d7c031902594..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 335.306350973629947
-1 2 45.8394886569432529
-1 3 -1.28505062493844413e-16
-2 1 45.8394886569433737
-2 2 886.559257726907504
-2 3 5.96311194867027439e-19
-3 1 -1.06392420372823648e-16
-3 2 1.24032728532341707e-16
-3 3 220.830700202961594
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/perforated_wood_upper_log.txt
deleted file mode 100644
index f308d41511558d9dac56697c23d7bc4f69b113f1..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/3/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.1825 1.13671e-19 0
-1.13671e-19 0.00874706 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00906937 6.22089e-21 0
-6.22089e-21 0.0536072 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-5.80917e-20 0.00200073 0
-0.00200073 -2.09481e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-335.306 45.8395 -1.28505e-16
-45.8395 886.559 5.96311e-19
--1.06392e-16 1.24033e-16 220.831
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1305.93 -311.236 -2.54972e-15
-Beff_: 3.97078 -0.556369 -9.32048e-18 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=335.306
-q2=886.559
-q3=220.831
-q12=45.8395
-q13=-1.28505e-16
-q23=5.96311e-19
-q_onetwo=45.839489
-b1=3.970784
-b2=-0.556369
-b3=-0.000000
-mu_gamma=220.830700
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.35306e+02  & 8.86559e+02  & 2.20831e+02  & 4.58395e+01  & -1.28505e-16 & 5.96311e-19  & 3.97078e+00  & -5.56369e-01 & -9.32048e-18 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/BMatrix.txt
deleted file mode 100644
index 64d788e9b2bf57804e0ea30efa23689e8dc02971..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.94438143205773395
-1 2 -0.547901184739255753
-1 3 -4.47874406120455803e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/QMatrix.txt
deleted file mode 100644
index 3f164ebaa534826c30ef3493687036a0e21369c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 331.414065437273905
-1 2 45.8424572655846063
-1 3 -3.23397179261691869e-16
-2 1 45.8424572655844003
-2 2 885.454376361429695
-2 3 2.10213248717783241e-16
-3 1 -7.78118346665690463e-17
-3 2 2.77135627814451002e-16
-3 3 219.689155392519297
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/perforated_wood_upper_log.txt
deleted file mode 100644
index be0ea3f61f9e43fd75efab3cb7862f6c1da7a155..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/4/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.178244 1.54067e-19 0
-1.54067e-19 0.00856605 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00913131 -1.01188e-19 0
--1.01188e-19 0.0537782 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--2.96965e-19 0.00267882 0
-0.00267882 -5.31212e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-331.414 45.8425 -3.23397e-16
-45.8425 885.454 2.10213e-16
--7.78118e-17 2.77136e-16 219.689
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1282.11 -304.321 -1.02981e-14
-Beff_: 3.94438 -0.547901 -4.47874e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=331.414
-q2=885.454
-q3=219.689
-q12=45.8425
-q13=-3.23397e-16
-q23=2.10213e-16
-q_onetwo=45.842457
-b1=3.944381
-b2=-0.547901
-b3=-0.000000
-mu_gamma=219.689155
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.31414e+02  & 8.85454e+02  & 2.19689e+02  & 4.58425e+01  & -3.23397e-16 & 2.10213e-16  & 3.94438e+00  & -5.47901e-01 & -4.47874e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/BMatrix.txt
deleted file mode 100644
index 75e9fc8a6197f26f6ef957049d969e5d98c64210..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.92097133914863383
-1 2 -0.540085381245060669
-1 3 -6.32868304100547971e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/QMatrix.txt
deleted file mode 100644
index 0a342cdaac1897ca0f9d11f21d43d6b6f412273d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 327.71805083935061
-1 2 45.7253975106491382
-1 3 -8.34517188425670797e-16
-2 1 45.7253975106488824
-2 2 884.378237235491497
-2 3 -7.08255069176155772e-17
-3 1 3.63470307996292818e-16
-3 2 1.69406589450860068e-17
-3 3 218.200168053860807
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/perforated_wood_upper_log.txt
deleted file mode 100644
index e75eb77e7f1bd78503aebecb4346e24f1ff695f5..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/5/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.174218 4.80035e-19 0
-4.80035e-19 0.00841287 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00905803 4.17841e-20 0
-4.17841e-20 0.0539386 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--5.12678e-19 0.00356092 0
-0.00356092 -3.5313e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-327.718 45.7254 -8.34517e-16
-45.7254 884.378 -7.08255e-17
-3.6347e-16 1.69407e-17 218.2
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1260.28 -298.352 -1.23932e-14
-Beff_: 3.92097 -0.540085 -6.32868e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=327.718
-q2=884.378
-q3=218.2
-q12=45.7254
-q13=-8.34517e-16
-q23=-7.08255e-17
-q_onetwo=45.725398
-b1=3.920971
-b2=-0.540085
-b3=-0.000000
-mu_gamma=218.200168
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.27718e+02  & 8.84378e+02  & 2.18200e+02  & 4.57254e+01  & -8.34517e-16 & -7.08255e-17 & 3.92097e+00  & -5.40085e-01 & -6.32868e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/BMatrix.txt
deleted file mode 100644
index 9e069aa4aeba316d9ab0094172e2f6688dad72ef..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.90142234921865816
-1 2 -0.534276810382432465
-1 3 -2.15544494999674406e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/QMatrix.txt
deleted file mode 100644
index 2203179fa31f11ef6ae0e6b3a42b2d6cb41ff827..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 325.032716633168945
-1 2 45.743787702752492
-1 3 1.33255223262046529e-16
-2 1 45.7437877027524493
-2 2 883.641778144533646
-2 3 4.0467846088021453e-17
-3 1 6.04557907641495307e-16
-3 2 8.70072243419617308e-17
-3 3 217.317881532470125
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/parameter.txt
deleted file mode 100644
index 4dd2428f3e774b36551278b72a914a000870210d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/perforated_wood_upper_log.txt
deleted file mode 100644
index d9aee5ce3d0a94747a691d0790c15f191dae67b6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_0/6/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.171263 -1.31601e-19 0
--1.31601e-19 0.00828488 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00911954 2.29238e-20 0
-2.29238e-20 0.0540531 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--5.52529e-19 0.00408412 0
-0.00408412 -1.89684e-22 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-325.033 45.7438 1.33255e-16
-45.7438 883.642 4.04678e-17
-6.04558e-16 8.70072e-17 217.318
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1243.65 -293.643 -2.37202e-15
-Beff_: 3.90142 -0.534277 -2.15544e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=325.033
-q2=883.642
-q3=217.318
-q12=45.7438
-q13=1.33255e-16
-q23=4.04678e-17
-q_onetwo=45.743788
-b1=3.901422
-b2=-0.534277
-b3=-0.000000
-mu_gamma=217.317882
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.25033e+02  & 8.83642e+02  & 2.17318e+02  & 4.57438e+01  & 1.33255e-16  & 4.04678e-17  & 3.90142e+00  & -5.34277e-01 & -2.15544e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/BMatrix.txt
deleted file mode 100644
index 910cfcd016877f3d866c6eaf21b888ed5a6882e2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.15596094148045392
-1 2 -0.776402193757820269
-1 3 1.7703424517171586e-29
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/QMatrix.txt
deleted file mode 100644
index 2c5d3a2b37ab326494910bb78231fb135d60cb0f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 357.254344081100442
-1 2 42.7769003929809344
-1 3 -3.54062960976149439e-29
-2 1 42.7769003929807212
-2 2 790.334706977815472
-2 3 -2.1239155426702437e-30
-3 1 2.04724547529040308e-28
-3 2 5.65787579245127431e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/perforated_wood_upper_log.txt
deleted file mode 100644
index 2eb85621c635924c36e85dafcc2c2078d3c97e56..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/0/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.214567 9.80362e-30 0
-9.80362e-30 0.0106599 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0104814 2.4435e-30 0
-2.4435e-30 0.0717071 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.07707e-31 8.75336e-20 0
-8.75336e-20 1.54743e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-357.254 42.7769 -3.54063e-29
-42.7769 790.335 -2.12392e-30
-2.04725e-28 5.65788e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1451.52 -435.838 4.77623e-27
-Beff_: 4.15596 -0.776402 1.77034e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=357.254
-q2=790.335
-q3=224.213
-q12=42.7769
-q13=-3.54063e-29
-q23=-2.12392e-30
-q_onetwo=42.776900
-b1=4.155961
-b2=-0.776402
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.57254e+02  & 7.90335e+02  & 2.24213e+02  & 4.27769e+01  & -3.54063e-29 & -2.12392e-30 & 4.15596e+00  & -7.76402e-01 & 1.77034e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/BMatrix.txt
deleted file mode 100644
index 793152d09f66fa8fcb70aa938f03a38379473038..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.13442510329290425
-1 2 -0.761066391549365284
-1 3 -6.10068019675320299e-19
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/QMatrix.txt
deleted file mode 100644
index e1a50a255d8c2e481e11330819b4cf576d25c539..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 352.205529898235284
-1 2 42.6272984833696711
-1 3 6.73526718338729458e-17
-2 1 42.6272984833698629
-2 2 788.115619530062986
-2 3 -1.20414203781671336e-17
-3 1 -2.44538411872316508e-17
-3 2 -5.69477191098011204e-17
-3 3 221.657917731570791
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/perforated_wood_upper_log.txt
deleted file mode 100644
index 6e53f5a64f5fa170850185b6557381c2d2ce46b3..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/1/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.208951 -1.80991e-20 0
--1.80991e-20 0.0104445 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0104296 -1.10549e-20 0
--1.10549e-20 0.0720598 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-4.83005e-20 0.00158443 0
-0.00158443 6.68314e-21 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-352.206 42.6273 6.73527e-17
-42.6273 788.116 -1.20414e-17
--2.44538e-17 -5.69477e-17 221.658
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1423.73 -423.569 -1.92988e-16
-Beff_: 4.13443 -0.761066 -6.10068e-19 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=352.206
-q2=788.116
-q3=221.658
-q12=42.6273
-q13=6.73527e-17
-q23=-1.20414e-17
-q_onetwo=42.627298
-b1=4.134425
-b2=-0.761066
-b3=-0.000000
-mu_gamma=221.657918
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.52206e+02  & 7.88116e+02  & 2.21658e+02  & 4.26273e+01  & 6.73527e-17  & -1.20414e-17 & 4.13443e+00  & -7.61066e-01 & -6.10068e-19 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/BMatrix.txt
deleted file mode 100644
index c6d38d27a08e9a16906b8f8014e8c771e2129254..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.11505098866691288
-1 2 -0.749296713287428751
-1 3 -7.32826357717602112e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/QMatrix.txt
deleted file mode 100644
index cbc3e4b7222e8b3aa9f631006c68426abb2a3210..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 348.190067089190165
-1 2 42.6319483590075663
-1 3 2.4658145534109388e-16
-2 1 42.6319483590077368
-2 2 786.478246888986405
-2 3 7.86724201409794155e-17
-3 1 -1.74847929104021693e-16
-3 2 8.88639205623431572e-17
-3 3 219.764323824433177
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/perforated_wood_upper_log.txt
deleted file mode 100644
index 2edc78c6ded4a240773739d1908ef5ed0702f7ce..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/2/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.204475 -9.62772e-20 0
--9.62772e-20 0.0102534 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0105248 -2.53109e-20 0
--2.53109e-20 0.0723245 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--2.92089e-19 0.00275487 0
-0.00275487 -5.86464e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-348.19 42.6319 2.46581e-16
-42.6319 786.478 7.86724e-17
--1.74848e-16 8.88639e-17 219.764
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1400.88 -413.873 -1.6891e-14
-Beff_: 4.11505 -0.749297 -7.32826e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=348.19
-q2=786.478
-q3=219.764
-q12=42.6319
-q13=2.46581e-16
-q23=7.86724e-17
-q_onetwo=42.631948
-b1=4.115051
-b2=-0.749297
-b3=-0.000000
-mu_gamma=219.764324
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.48190e+02  & 7.86478e+02  & 2.19764e+02  & 4.26319e+01  & 2.46581e-16  & 7.86724e-17  & 4.11505e+00  & -7.49297e-01 & -7.32826e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/BMatrix.txt
deleted file mode 100644
index 62722e6009a92ab9e961e645abb937c09ba98a57..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.08050615456700694
-1 2 -0.73144242244332025
-1 3 -4.20314988069956106e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/QMatrix.txt
deleted file mode 100644
index 97f9779d38dc680fcf4f05d1024e1a6f5c65c0a2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 341.627629555911824
-1 2 42.7674134516251456
-1 3 -9.80525339741578073e-17
-2 1 42.7674134516250319
-2 2 784.093316263540828
-2 3 -1.06089182577706609e-16
-3 1 -1.32611478222133261e-16
-3 2 8.55977615177305751e-17
-3 3 217.009545182652829
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/perforated_wood_upper_log.txt
deleted file mode 100644
index 781ea8f13e5ea08e315b5b6983f36992823eb60a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/3/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.19714 -2.98785e-20 0
--2.98785e-20 0.00992025 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0108136 7.00252e-20 0
-7.00252e-20 0.0727161 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--2.43409e-19 0.00445286 0
-0.00445286 -3.57987e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-341.628 42.7674 -9.80525e-17
-42.7674 784.093 -1.06089e-16
--1.32611e-16 8.55978e-17 217.01
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1362.73 -399.006 -9.72497e-15
-Beff_: 4.08051 -0.731442 -4.20315e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=341.628
-q2=784.093
-q3=217.01
-q12=42.7674
-q13=-9.80525e-17
-q23=-1.06089e-16
-q_onetwo=42.767413
-b1=4.080506
-b2=-0.731442
-b3=-0.000000
-mu_gamma=217.009545
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.41628e+02  & 7.84093e+02  & 2.17010e+02  & 4.27674e+01  & -9.80525e-17 & -1.06089e-16 & 4.08051e+00  & -7.31442e-01 & -4.20315e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/BMatrix.txt
deleted file mode 100644
index 4c1a389a618639e6bbed6ce91290fdc0f3de88cb..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.06266367704278597
-1 2 -0.718825370832016808
-1 3 3.24433259090061982e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/QMatrix.txt
deleted file mode 100644
index 415bdde5de530ff4d3ea4df185d916b31764799c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 337.838538529932919
-1 2 42.6219015262391636
-1 3 -8.75344176483328074e-16
-2 1 42.6219015262392702
-2 2 782.293495386122913
-2 3 1.35958952429682256e-16
-3 1 2.72541321108543677e-17
-3 2 -1.18909873267347699e-16
-3 3 215.014871910282892
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/perforated_wood_upper_log.txt
deleted file mode 100644
index f33b0434496dde3c6f49ca117daa07a0f90e30dc..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/4/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.192887 4.66918e-19 0
-4.66918e-19 0.00976243 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0107474 -1.09949e-19 0
--1.09949e-19 0.0730012 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-3.45406e-19 0.00570009 0
-0.00570009 3.37319e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-337.839 42.6219 -8.75344e-16
-42.6219 782.293 1.35959e-16
-2.72541e-17 -1.1891e-16 215.015
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1341.89 -389.174 7.172e-15
-Beff_: 4.06266 -0.718825 3.24433e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=337.839
-q2=782.293
-q3=215.015
-q12=42.6219
-q13=-8.75344e-16
-q23=1.35959e-16
-q_onetwo=42.621902
-b1=4.062664
-b2=-0.718825
-b3=0.000000
-mu_gamma=215.014872
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.37839e+02  & 7.82293e+02  & 2.15015e+02  & 4.26219e+01  & -8.75344e-16 & 1.35959e-16  & 4.06266e+00  & -7.18825e-01 & 3.24433e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/BMatrix.txt
deleted file mode 100644
index 289c9a7ca93a6648863a970a1a45611457d525bf..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.04288253631956351
-1 2 -0.705185243526694983
-1 3 -6.84585736367396456e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/QMatrix.txt
deleted file mode 100644
index 04c88fc6a10b0e867cdb61d920c05bafd751e35c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 333.524228024803961
-1 2 42.4011555210887678
-1 3 2.12286785372661768e-16
-2 1 42.401155521088441
-2 2 780.338343855242897
-2 3 2.21719344273285657e-16
-3 1 3.67300590983776765e-16
-3 2 2.35813972515597214e-18
-3 3 212.665377706522094
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/perforated_wood_upper_log.txt
deleted file mode 100644
index 6e202f7007f5fb7d7aa6383934a9a437d3bc4d1f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/5/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.188057 -2.46985e-19 0
--2.46985e-19 0.00959183 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0106116 -1.39295e-19 0
--1.39295e-19 0.0733071 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.28709e-18 0.0071551 0
-0.0071551 -8.4942e-21 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-333.524 42.4012 2.12287e-16
-42.4012 780.338 2.21719e-16
-3.67301e-16 2.35814e-18 212.665
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1318.5 -378.86 -1.30755e-14
-Beff_: 4.04288 -0.705185 -6.84586e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=333.524
-q2=780.338
-q3=212.665
-q12=42.4012
-q13=2.12287e-16
-q23=2.21719e-16
-q_onetwo=42.401156
-b1=4.042883
-b2=-0.705185
-b3=-0.000000
-mu_gamma=212.665378
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.33524e+02  & 7.80338e+02  & 2.12665e+02  & 4.24012e+01  & 2.12287e-16  & 2.21719e-16  & 4.04288e+00  & -7.05185e-01 & -6.84586e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/BMatrix.txt
deleted file mode 100644
index 149ddc0dd2c3e2cc7d2abb1db74670bdca7d5ab8..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.01742880383738843
-1 2 -0.689493055535777
-1 3 -1.90486319366914336e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/QMatrix.txt
deleted file mode 100644
index 4e7f7be929ebdd44cae606791c2683c63d65424a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 328.49229649245774
-1 2 42.2259949799839731
-1 3 2.9292432195127116e-16
-2 1 42.2259949799840513
-2 2 778.156393812941815
-2 3 -5.34836931687099337e-16
-3 1 -4.87565716966731344e-16
-3 2 3.49329939974829529e-16
-3 3 210.160266174309385
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/parameter.txt
deleted file mode 100644
index df29ca67fc1a4e1876e08fc54fabc111c35df15c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/perforated_wood_upper_log.txt
deleted file mode 100644
index 8b9f956e24fd7220e687d3a9ddf09d1664393117..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_1/6/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.182388 -1.38955e-19 0
--1.38955e-19 0.00937824 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0105452 -5.7906e-20 0
--5.7906e-20 0.0736528 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.46323e-18 0.00870782 0
-0.00870782 -1.94894e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-328.492 42.226 2.92924e-16
-42.226 778.156 -5.34837e-16
--4.87566e-16 3.4933e-16 210.16
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1290.58 -366.894 -4.22323e-14
-Beff_: 4.01743 -0.689493 -1.90486e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=328.492
-q2=778.156
-q3=210.16
-q12=42.226
-q13=2.92924e-16
-q23=-5.34837e-16
-q_onetwo=42.225995
-b1=4.017429
-b2=-0.689493
-b3=-0.000000
-mu_gamma=210.160266
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.28492e+02  & 7.78156e+02  & 2.10160e+02  & 4.22260e+01  & 2.92924e-16  & -5.34837e-16 & 4.01743e+00  & -6.89493e-01 & -1.90486e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/BMatrix.txt
deleted file mode 100644
index be8657c5a7c7ec0fdcf0db4b7caa753e557a9c73..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.03873445069710524
-1 2 -1.05995320800370529
-1 3 1.36076669459033724e-29
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/QMatrix.txt
deleted file mode 100644
index 655f1ff64c6cb9651d8618f4c60a9a720c897fe2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 362.077597710087787
-1 2 38.6653780788820356
-1 3 7.65965450042136346e-29
-2 1 38.6653780788812682
-2 2 673.576799924798138
-2 3 2.35949529346769039e-29
-3 1 1.91929433331978192e-28
-3 2 5.49556981433154364e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/perforated_wood_upper_log.txt
deleted file mode 100644
index 23e4ac9988a480ac380211e83f971bdf72e55340..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/0/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.228051 8.83488e-30 0
-8.83488e-30 0.0120825 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0119521 2.30937e-30 0
-2.30937e-30 0.0967075 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-7.67493e-32 8.75336e-20 0
-8.75336e-20 1.40158e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-362.078 38.6654 7.65965e-29
-38.6654 673.577 2.3595e-29
-1.91929e-28 5.49557e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1421.35 -557.801 3.76792e-27
-Beff_: 4.03873 -1.05995 1.36077e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=362.078
-q2=673.577
-q3=224.213
-q12=38.6654
-q13=7.65965e-29
-q23=2.3595e-29
-q_onetwo=38.665378
-b1=4.038734
-b2=-1.059953
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.62078e+02  & 6.73577e+02  & 2.24213e+02  & 3.86654e+01  & 7.65965e-29  & 2.35950e-29  & 4.03873e+00  & -1.05995e+00 & 1.36077e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/BMatrix.txt
deleted file mode 100644
index 86ec8a93ba84c84b794702900d4e60d913d41501..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.02377345176769374
-1 2 -1.03211443248861734
-1 3 -7.26474377269934067e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/QMatrix.txt
deleted file mode 100644
index 08f28f4f305c344f3a72ee87156ee97945f0923a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 355.810139303233541
-1 2 38.5862517984604807
-1 3 3.6017534983147359e-16
-2 1 38.5862517984603386
-2 2 669.422764467591037
-2 3 1.63565450246594413e-16
-3 1 -2.22295326677418581e-16
-3 2 2.4947491988891457e-16
-3 3 220.118133157945493
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/perforated_wood_upper_log.txt
deleted file mode 100644
index 861b2c1c280760fff626801400aef70ca3788f89..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/1/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.221215 -1.59445e-19 0
--1.59445e-19 0.0118022 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.012096 -1.08659e-19 0
--1.08659e-19 0.0974249 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--3.89456e-19 0.00270105 0
-0.00270105 -9.359e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-355.81 38.5863 3.60175e-16
-38.5863 669.423 1.63565e-16
--2.22295e-16 2.49475e-16 220.118
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1391.87 -535.659 -1.7143e-14
-Beff_: 4.02377 -1.03211 -7.26474e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=355.81
-q2=669.423
-q3=220.118
-q12=38.5863
-q13=3.60175e-16
-q23=1.63565e-16
-q_onetwo=38.586252
-b1=4.023773
-b2=-1.032114
-b3=-0.000000
-mu_gamma=220.118133
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.55810e+02  & 6.69423e+02  & 2.20118e+02  & 3.85863e+01  & 3.60175e-16  & 1.63565e-16  & 4.02377e+00  & -1.03211e+00 & -7.26474e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/BMatrix.txt
deleted file mode 100644
index 89062208ec04b57f2e9a4d640f4337115a3cbc63..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.99757443016028047
-1 2 -1.00013271605385889
-1 3 -1.14935565289428614e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/QMatrix.txt
deleted file mode 100644
index 73bc0cba954fd29f78a9e01e95843e17ed82a184..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 347.182628314476574
-1 2 38.8187385592631458
-1 3 -7.29356353958154902e-16
-2 1 38.8187385592630108
-2 2 664.845609741155727
-2 3 1.42518375573219558e-16
-3 1 -5.93356743947004439e-16
-3 2 3.05446857043478737e-16
-3 3 215.022217543475278
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/perforated_wood_upper_log.txt
deleted file mode 100644
index 481fa7aad41739107d79f18668a224254ad334e6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/2/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.211687 3.26127e-19 0
-3.26127e-19 0.0113549 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0126416 -4.19497e-20 0
--4.19497e-20 0.098226 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--6.37825e-19 0.00603871 0
-0.00603871 -9.75697e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-347.183 38.8187 -7.29356e-16
-38.8187 664.846 1.42518e-16
--5.93357e-16 3.05447e-16 215.022
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1349.06 -509.753 -2.73912e-14
-Beff_: 3.99757 -1.00013 -1.14936e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=347.183
-q2=664.846
-q3=215.022
-q12=38.8187
-q13=-7.29356e-16
-q23=1.42518e-16
-q_onetwo=38.818739
-b1=3.997574
-b2=-1.000133
-b3=-0.000000
-mu_gamma=215.022218
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.47183e+02  & 6.64846e+02  & 2.15022e+02  & 3.88187e+01  & -7.29356e-16 & 1.42518e-16  & 3.99757e+00  & -1.00013e+00 & -1.14936e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/BMatrix.txt
deleted file mode 100644
index 1108602b7fce80b0a07903c04dbdbf619b24ba1d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.98757882012712583
-1 2 -0.97733387105430658
-1 3 -2.11608364322198754e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/QMatrix.txt
deleted file mode 100644
index 3f19bac74e24fe1cfa8c6372c0eddc1fc9620aa5..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 342.606918624207992
-1 2 38.4769635042124349
-1 3 -8.10007443063920363e-16
-2 1 38.4769635042122005
-2 2 661.441768602280263
-2 3 5.10171332263054111e-16
-3 1 -8.61127575496611897e-16
-3 2 7.03565894780155965e-16
-3 3 211.378527346908072
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/perforated_wood_upper_log.txt
deleted file mode 100644
index b5a87e41d26b30156cff8eeee4406f1ae4d92d7f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/3/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.206599 4.60914e-19 0
-4.60914e-19 0.0111937 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0124401 -3.63618e-19 0
--3.63618e-19 0.0987998 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.17488e-18 0.00845973 0
-0.00845973 -2.34817e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-342.607 38.477 -8.10007e-16
-38.477 661.442 5.10171e-16
--8.61128e-16 7.03566e-16 211.379
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1328.57 -493.02 -4.88509e-14
-Beff_: 3.98758 -0.977334 -2.11608e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=342.607
-q2=661.442
-q3=211.379
-q12=38.477
-q13=-8.10007e-16
-q23=5.10171e-16
-q_onetwo=38.476964
-b1=3.987579
-b2=-0.977334
-b3=-0.000000
-mu_gamma=211.378527
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.42607e+02  & 6.61442e+02  & 2.11379e+02  & 3.84770e+01  & -8.10007e-16 & 5.10171e-16  & 3.98758e+00  & -9.77334e-01 & -2.11608e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/BMatrix.txt
deleted file mode 100644
index 824cd5b5d4ec033901c23ebee14ec03253938d87..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.97974557013765562
-1 2 -0.95737789458995004
-1 3 -8.48359863034261441e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/QMatrix.txt
deleted file mode 100644
index bb2ca72ed3cf9db4de3f655281f296915057d563..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 338.531947870258421
-1 2 38.0781946817730557
-1 3 6.15989464297639344e-16
-2 1 38.0781946817725228
-2 2 658.446948090768501
-2 3 8.23072079242370691e-16
-3 1 1.07273673451147022e-15
-3 2 2.47523355978440662e-16
-3 3 207.261751962500597
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/perforated_wood_upper_log.txt
deleted file mode 100644
index 9c5d777f60d2548d99697c7fdc3a8eb863033228..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/4/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.202073 -3.39597e-19 0
--3.39597e-19 0.0110662 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0121503 -3.70583e-19 0
--3.70583e-19 0.099298 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--2.63287e-18 0.0111751 0
-0.0111751 -2.37248e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-338.532 38.0782 6.15989e-16
-38.0782 658.447 8.23072e-16
-1.07274e-15 2.47523e-16 207.262
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1310.82 -478.841 -1.3551e-14
-Beff_: 3.97975 -0.957378 -8.4836e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=338.532
-q2=658.447
-q3=207.262
-q12=38.0782
-q13=6.15989e-16
-q23=8.23072e-16
-q_onetwo=38.078195
-b1=3.979746
-b2=-0.957378
-b3=-0.000000
-mu_gamma=207.261752
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.38532e+02  & 6.58447e+02  & 2.07262e+02  & 3.80782e+01  & 6.15989e-16  & 8.23072e-16  & 3.97975e+00  & -9.57378e-01 & -8.48360e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/BMatrix.txt
deleted file mode 100644
index 182d4eeecb0a5352b6f3104b5ce5af1943f6b62c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.95446460518779697
-1 2 -0.926667684659633895
-1 3 -1.40441385234805723e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/QMatrix.txt
deleted file mode 100644
index fce7e3d36c15739523f8ce0c6e6ee9e9f428fe9b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 330.831533962576202
-1 2 38.05150103565704
-1 3 1.14616432664305101e-15
-2 1 38.0515010356566137
-2 2 654.161970082551989
-2 3 1.13797860024078545e-15
-3 1 1.05940104778989852e-15
-3 2 7.50213693251344793e-16
-3 3 202.772513340456413
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/perforated_wood_upper_log.txt
deleted file mode 100644
index c219b292a98b4f93906d08685bccef69670cd04b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/5/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.193383 -6.04574e-19 0
--6.04574e-19 0.0106989 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0123916 -6.98207e-19 0
--6.98207e-19 0.100038 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.26523e-18 0.0141215 0
-0.0141215 -1.33292e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-330.832 38.0515 1.14616e-15
-38.0515 654.162 1.13798e-15
-1.0594e-15 7.50214e-16 202.773
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1273 -455.717 -2.49835e-14
-Beff_: 3.95446 -0.926668 -1.40441e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=330.832
-q2=654.162
-q3=202.773
-q12=38.0515
-q13=1.14616e-15
-q23=1.13798e-15
-q_onetwo=38.051501
-b1=3.954465
-b2=-0.926668
-b3=-0.000000
-mu_gamma=202.772513
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.30832e+02  & 6.54162e+02  & 2.02773e+02  & 3.80515e+01  & 1.14616e-15  & 1.13798e-15  & 3.95446e+00  & -9.26668e-01 & -1.40441e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/BMatrix.txt
deleted file mode 100644
index c3b8d1b6b7c9d4444b51fdeaeee7538c7c11850c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.9433016908575671
-1 2 -0.903758032287096058
-1 3 -1.63589735484389128e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/QMatrix.txt
deleted file mode 100644
index 56950f142d6b5039d8a49195591480adc31d04a0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 326.311455994734445
-1 2 37.6594087896928968
-1 3 -8.40541286746543381e-16
-2 1 37.6594087896925203
-2 2 650.843627093951568
-2 3 6.357761539454998e-16
-3 1 1.08311797031301893e-16
-3 2 1.71596677839280787e-15
-3 3 198.773755124234498
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/perforated_wood_upper_log.txt
deleted file mode 100644
index 1bb42bb823ca853d129b3fbd1df832b51972610f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_2/6/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.188276 6.45669e-19 0
-6.45669e-19 0.010546 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0121211 -2.52801e-19 0
--2.52801e-19 0.100595 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--6.5818e-19 0.0167807 0
-0.0167807 -3.08629e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-326.311 37.6594 -8.40541e-16
-37.6594 650.844 6.35776e-16
-1.08312e-16 1.71597e-15 198.774
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1252.71 -439.703 -3.36411e-14
-Beff_: 3.9433 -0.903758 -1.6359e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=326.311
-q2=650.844
-q3=198.774
-q12=37.6594
-q13=-8.40541e-16
-q23=6.35776e-16
-q_onetwo=37.659409
-b1=3.943302
-b2=-0.903758
-b3=-0.000000
-mu_gamma=198.773755
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.26311e+02  & 6.50844e+02  & 1.98774e+02  & 3.76594e+01  & -8.40541e-16 & 6.35776e-16  & 3.94330e+00  & -9.03758e-01 & -1.63590e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/BMatrix.txt
deleted file mode 100644
index 29f046f95765f89baf0b3926693da51f9fa1cd71..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.38385954774598163
-1 2 -1.4580752040276912
-1 3 6.56599696043288159e-30
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/QMatrix.txt
deleted file mode 100644
index e37cbac73f60b005f3262687867e554af818225a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 362.884400627699449
-1 2 33.598217280456808
-1 3 2.66764408456964812e-29
-2 1 33.5982172804586838
-2 2 535.044060612796784
-2 3 -9.76610185849601493e-30
-3 1 1.41209476925862098e-28
-3 2 5.2699761983748409e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/perforated_wood_upper_log.txt
deleted file mode 100644
index a196c459b6f8346156aaddc6c15a94da6e9864e4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/0/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.226315 4.74252e-30 0
-4.74252e-30 0.0133775 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0133074 2.25105e-30 0
-2.25105e-30 0.133677 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-3.78604e-32 8.75336e-20 0
-8.75336e-20 8.16086e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-362.884 33.5982 2.66764e-29
-33.5982 535.044 -9.7661e-30
-1.41209e-28 5.26998e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1178.96 -666.443 1.87317e-27
-Beff_: 3.38386 -1.45808 6.566e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=362.884
-q2=535.044
-q3=224.213
-q12=33.5982
-q13=2.66764e-29
-q23=-9.7661e-30
-q_onetwo=33.598217
-b1=3.383860
-b2=-1.458075
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.62884e+02  & 5.35044e+02  & 2.24213e+02  & 3.35982e+01  & 2.66764e-29  & -9.76610e-30 & 3.38386e+00  & -1.45808e+00 & 6.56600e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/BMatrix.txt
deleted file mode 100644
index b7b96f770fafb314b2705b28efadc67eb10d5522..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.39464385395850465
-1 2 -1.39780905619579343
-1 3 -6.1157192498742141e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/QMatrix.txt
deleted file mode 100644
index f179d0cbf4d877174b2bb097a4953763eb1c5a7b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 350.335508396627233
-1 2 33.6525131410389875
-1 3 -1.37137344665902439e-15
-2 1 33.6525131410388951
-2 2 524.418402685342585
-2 3 5.51967326012370307e-16
-3 1 4.75829228449575758e-17
-3 2 1.72713406076940856e-16
-3 3 215.364975192733624
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/perforated_wood_upper_log.txt
deleted file mode 100644
index 5833696735f9fa9af62f804412d01ee73d7b2543..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/1/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.215069 1.14465e-18 0
-1.14465e-18 0.0128671 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0140776 -3.28962e-19 0
--3.28962e-19 0.135739 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--4.25768e-19 0.00637426 0
-0.00637426 -9.93355e-20 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-350.336 33.6525 -1.37137e-15
-33.6525 524.418 5.51967e-16
-4.75829e-17 1.72713e-16 215.365
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1142.22 -618.798 -1.3251e-14
-Beff_: 3.39464 -1.39781 -6.11572e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=350.336
-q2=524.418
-q3=215.365
-q12=33.6525
-q13=-1.37137e-15
-q23=5.51967e-16
-q_onetwo=33.652513
-b1=3.394644
-b2=-1.397809
-b3=-0.000000
-mu_gamma=215.364975
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.50336e+02  & 5.24418e+02  & 2.15365e+02  & 3.36525e+01  & -1.37137e-15 & 5.51967e-16  & 3.39464e+00  & -1.39781e+00 & -6.11572e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/BMatrix.txt
deleted file mode 100644
index 155abd3c1066188ac9bc92e9c6f99ea00083da04..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.40075937921618188
-1 2 -1.34332250644236861
-1 3 9.00920865929376997e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/QMatrix.txt
deleted file mode 100644
index 00491eb236cbffe212550b04d3b4c9a9cf8d25c8..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 339.958119372016711
-1 2 33.4485153108648063
-1 3 -1.6669879452507752e-15
-2 1 33.4485153108644582
-2 2 515.171934755594293
-2 3 -7.1145346558498801e-16
-3 1 1.53875393330005217e-15
-3 2 -7.21970226658097403e-16
-3 3 206.182025376447143
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/perforated_wood_upper_log.txt
deleted file mode 100644
index 1ea2fd4bb3c9eb374dc6a71b23f28064df4960e6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/2/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.205245 1.11051e-18 0
-1.11051e-18 0.0124684 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0144728 3.31827e-19 0
-3.31827e-19 0.137519 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.80632e-18 0.0130176 0
-0.0130176 3.05636e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-339.958 33.4485 -1.66699e-15
-33.4485 515.172 -7.11453e-16
-1.53875e-15 -7.2197e-16 206.182
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1111.18 -578.292 2.47781e-14
-Beff_: 3.40076 -1.34332 9.00921e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=339.958
-q2=515.172
-q3=206.182
-q12=33.4485
-q13=-1.66699e-15
-q23=-7.11453e-16
-q_onetwo=33.448515
-b1=3.400759
-b2=-1.343323
-b3=0.000000
-mu_gamma=206.182025
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.39958e+02  & 5.15172e+02  & 2.06182e+02  & 3.34485e+01  & -1.66699e-15 & -7.11453e-16 & 3.40076e+00  & -1.34332e+00 & 9.00921e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/BMatrix.txt
deleted file mode 100644
index b24548e7b116cb013c6f4b62e130b29d349264d5..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.40695240408272948
-1 2 -1.28900297488421911
-1 3 -1.70540029873929896e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/QMatrix.txt
deleted file mode 100644
index 7f93b994e293a3872bb0dfe21caded233b364e76..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 330.611925325416792
-1 2 32.8514773147708894
-1 3 1.039207782327356e-16
-2 1 32.8514773147708041
-2 2 506.221137494260461
-2 3 7.37907998593634318e-16
-3 1 -1.15229006891759411e-15
-3 2 8.42858768890231147e-16
-3 3 196.299556573179387
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/perforated_wood_upper_log.txt
deleted file mode 100644
index 8c22240170b107219aa364728032e42e9982ba9d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/3/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.196113 -5.92073e-20 0
--5.92073e-20 0.0121742 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0143594 -4.01451e-19 0
--4.01451e-19 0.139224 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--2.69295e-18 0.0201865 0
-0.0201865 -2.50247e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-330.612 32.8515 1.03921e-16
-32.8515 506.221 7.37908e-16
--1.15229e-15 8.42859e-16 196.3
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1084.03 -540.597 -3.84892e-14
-Beff_: 3.40695 -1.289 -1.7054e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=330.612
-q2=506.221
-q3=196.3
-q12=32.8515
-q13=1.03921e-16
-q23=7.37908e-16
-q_onetwo=32.851477
-b1=3.406952
-b2=-1.289003
-b3=-0.000000
-mu_gamma=196.299557
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.30612e+02  & 5.06221e+02  & 1.96300e+02  & 3.28515e+01  & 1.03921e-16  & 7.37908e-16  & 3.40695e+00  & -1.28900e+00 & -1.70540e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/BMatrix.txt
deleted file mode 100644
index 181de2b009567cd9c82c786e890c3404aac14d24..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.41450724731424904
-1 2 -1.22877476553790377
-1 3 -2.43365513870715063e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/QMatrix.txt
deleted file mode 100644
index 00d3763e25dfab6963bfbf2fe0ab24cac82f0706..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 321.243547030319235
-1 2 31.7759780748884992
-1 3 1.20935976077179985e-15
-2 1 31.7759780748880658
-2 2 496.601023868031064
-2 3 3.64042563455457824e-15
-3 1 1.52850822277006415e-15
-3 2 1.16736047911514262e-15
-3 3 184.812501038148838
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/perforated_wood_upper_log.txt
deleted file mode 100644
index b42aad93a14175aa297693ba5c3e4125af5f4307..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/4/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.186662 -4.92101e-19 0
--4.92101e-19 0.0119553 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0137036 -2.42243e-18 0
--2.42243e-18 0.141038 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--5.86314e-18 0.0285596 0
-0.0285596 -3.67591e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-321.244 31.776 1.20936e-15
-31.776 496.601 3.64043e-15
-1.52851e-15 1.16736e-15 184.813
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1057.84 -501.711 -4.11923e-14
-Beff_: 3.41451 -1.22877 -2.43366e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=321.244
-q2=496.601
-q3=184.813
-q12=31.776
-q13=1.20936e-15
-q23=3.64043e-15
-q_onetwo=31.775978
-b1=3.414507
-b2=-1.228775
-b3=-0.000000
-mu_gamma=184.812501
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.21244e+02  & 4.96601e+02  & 1.84813e+02  & 3.17760e+01  & 1.20936e-15  & 3.64043e-15  & 3.41451e+00  & -1.22877e+00 & -2.43366e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/BMatrix.txt
deleted file mode 100644
index 88ba2b4838bc5dd8d4e2078bb7c55dd769e7a74a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.41540551912849732
-1 2 -1.17764773520423716
-1 3 -5.16818756679569065e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/QMatrix.txt
deleted file mode 100644
index ab413c8561f7c0246b02e22ef2d8bb27d601d430..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 312.04495452059524
-1 2 31.2127302159720621
-1 3 1.10365004895446317e-16
-2 1 31.2127302159718774
-2 2 488.84302442329323
-2 3 2.29840018545202085e-15
-3 1 1.92727778181023268e-15
-3 2 3.80338122107914955e-16
-3 3 175.775898189916944
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/perforated_wood_upper_log.txt
deleted file mode 100644
index fc7e61ced79b9e817c722e0565b74050336b392a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/5/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.177012 3.54168e-20 0
-3.54168e-20 0.0116374 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0135569 -1.0986e-18 0
--1.0986e-18 0.142519 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--3.23897e-18 0.0351179 0
-0.0351179 6.79919e-21 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-312.045 31.2127 1.10365e-16
-31.2127 488.843 2.2984e-15
-1.92728e-15 3.80338e-16 175.776
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1029 -469.081 -2.9499e-15
-Beff_: 3.41541 -1.17765 -5.16819e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=312.045
-q2=488.843
-q3=175.776
-q12=31.2127
-q13=1.10365e-16
-q23=2.2984e-15
-q_onetwo=31.212730
-b1=3.415406
-b2=-1.177648
-b3=-0.000000
-mu_gamma=175.775898
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.12045e+02  & 4.88843e+02  & 1.75776e+02  & 3.12127e+01  & 1.10365e-16  & 2.29840e-15  & 3.41541e+00  & -1.17765e+00 & -5.16819e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/BMatrix.txt
deleted file mode 100644
index a5d953a1821b7bb9d0b2cd0df70cc4956aa8a371..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.4214232290988793
-1 2 -1.12609856275354803
-1 3 -1.54012851387092775e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/QMatrix.txt
deleted file mode 100644
index c34822af4294e9febff4c94041236a619b0dabcf..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 305.383628906016497
-1 2 30.0252173849794275
-1 3 1.23000025963049264e-15
-2 1 30.0252173849790012
-2 2 481.058350591651958
-2 3 1.34224228953705449e-15
-3 1 3.16652086496116425e-15
-3 2 1.25745767964868804e-15
-3 3 164.622781415592755
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/parameter.txt
deleted file mode 100644
index a7297f96dd45c411563af48a17333b00179873f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/perforated_wood_upper_log.txt
deleted file mode 100644
index dacd86f92f1cfacd5b517defb256c18dc4750a1e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_3/6/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.169928 -8.9274e-19 0
--8.9274e-19 0.0115478 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.012549 -7.29558e-19 0
--7.29558e-19 0.143973 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--5.99142e-18 0.0433121 0
-0.0433121 -2.02816e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-305.384 30.0252 1.23e-15
-30.0252 481.058 1.34224e-15
-3.16652e-15 1.25746e-15 164.623
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1011.04 -438.99 -1.5936e-14
-Beff_: 3.42142 -1.1261 -1.54013e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=305.384
-q2=481.058
-q3=164.623
-q12=30.0252
-q13=1.23e-15
-q23=1.34224e-15
-q_onetwo=30.025217
-b1=3.421423
-b2=-1.126099
-b3=-0.000000
-mu_gamma=164.622781
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.05384e+02  & 4.81058e+02  & 1.64623e+02  & 3.00252e+01  & 1.23000e-15  & 1.34224e-15  & 3.42142e+00  & -1.12610e+00 & -1.54013e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/BMatrix.txt
deleted file mode 100644
index cf985a30eec284ccfb47a20e95b7be9188929eda..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.66483564170735132
-1 2 -1.79630256913598552
-1 3 4.21524999060086665e-30
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/QMatrix.txt
deleted file mode 100644
index 4a9637791f9660e319dd9c2c48cf0c28e5488883..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 373.387124642992148
-1 2 30.7757080923943889
-1 3 -2.37028050115625891e-29
-2 1 30.775708092396453
-2 2 448.128969415925155
-2 3 1.50199183761628701e-29
-3 1 1.20071502034347367e-28
-3 2 5.43021142564616303e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/perforated_wood_upper_log.txt
deleted file mode 100644
index f4172fa32c2016934adf939bcc038327f5941ce6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/0/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.210626 4.03909e-30 0
-4.03909e-30 0.0139554 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0139207 2.21589e-30 0
-2.21589e-30 0.165225 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.46285e-32 8.75336e-20 0
-8.75336e-20 5.29448e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-373.387 30.7757 -2.37028e-29
-30.7757 448.129 1.50199e-29
-1.20072e-28 5.43021e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 939.733 -722.963 1.16754e-27
-Beff_: 2.66484 -1.7963 4.21525e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=373.387
-q2=448.129
-q3=224.213
-q12=30.7757
-q13=-2.37028e-29
-q23=1.50199e-29
-q_onetwo=30.775708
-b1=2.664836
-b2=-1.796303
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.73387e+02  & 4.48129e+02  & 2.24213e+02  & 3.07757e+01  & -2.37028e-29 & 1.50199e-29  & 2.66484e+00  & -1.79630e+00 & 4.21525e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/BMatrix.txt
deleted file mode 100644
index 8ef5e785179f54efa5c13e858a8e3b1a088ef731..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.72842834946343116
-1 2 -1.71510501811600702
-1 3 -1.13887732938608317e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/QMatrix.txt
deleted file mode 100644
index 426502388e89fa692c990a53e817cff6760cf7f7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 352.015046544344955
-1 2 30.6506546140377303
-1 3 -1.35385680530980546e-15
-2 1 30.6506546140377729
-2 2 429.414420749313535
-2 3 3.45535232371130263e-16
-3 1 -5.49039980146659445e-16
-3 2 3.08238677637628911e-16
-3 3 210.404710571575862
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/perforated_wood_upper_log.txt
deleted file mode 100644
index 550b504e7db977dd65dcbe5bf9f0c1cb6d8b0ae9..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/1/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.19763 1.01892e-18 0
-1.01892e-18 0.0133576 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0152367 -2.38909e-19 0
--2.38909e-19 0.169308 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.22392e-18 0.0107283 0
-0.0107283 -1.59637e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-352.015 30.6507 -1.35386e-15
-30.6507 429.414 3.45535e-16
--5.4904e-16 3.08239e-16 210.405
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 907.879 -652.863 -2.59892e-14
-Beff_: 2.72843 -1.71511 -1.13888e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=352.015
-q2=429.414
-q3=210.405
-q12=30.6507
-q13=-1.35386e-15
-q23=3.45535e-16
-q_onetwo=30.650655
-b1=2.728428
-b2=-1.715105
-b3=-0.000000
-mu_gamma=210.404711
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.52015e+02  & 4.29414e+02  & 2.10405e+02  & 3.06507e+01  & -1.35386e-15 & 3.45535e-16  & 2.72843e+00  & -1.71511e+00 & -1.13888e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/BMatrix.txt
deleted file mode 100644
index a3c2ce7a70d6f6bdff1ea34e5faafd0080836a0b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.77583637707342934
-1 2 -1.6356527828754206
-1 3 -3.18768078138547899e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/QMatrix.txt
deleted file mode 100644
index 62f938bc5a03f3206409baffc0b8aac369ae40a8..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 335.603958058077353
-1 2 29.6976473848427744
-1 3 9.49042819158030238e-16
-2 1 29.6976473848427034
-2 2 412.587832091221969
-2 3 1.61470229548266175e-15
-3 1 -7.34113290989935052e-16
-3 2 1.73472347597680709e-15
-3 3 193.975426554225066
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/perforated_wood_upper_log.txt
deleted file mode 100644
index 5e11517ccff59a6dbd2950e3500c8c314f611251..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/2/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.186318 -8.78858e-19 0
--8.78858e-19 0.0130091 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0154031 -1.1756e-18 0
--1.1756e-18 0.172928 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--2.87499e-18 0.0236536 0
-0.0236536 -5.1461e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-335.604 29.6976 9.49043e-16
-29.6976 412.588 1.6147e-15
--7.34113e-16 1.73472e-15 193.975
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 883.007 -592.415 -6.67084e-14
-Beff_: 2.77584 -1.63565 -3.18768e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=335.604
-q2=412.588
-q3=193.975
-q12=29.6976
-q13=9.49043e-16
-q23=1.6147e-15
-q_onetwo=29.697647
-b1=2.775836
-b2=-1.635653
-b3=-0.000000
-mu_gamma=193.975427
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.35604e+02  & 4.12588e+02  & 1.93975e+02  & 2.96976e+01  & 9.49043e-16  & 1.61470e-15  & 2.77584e+00  & -1.63565e+00 & -3.18768e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/BMatrix.txt
deleted file mode 100644
index 05dec83692646343db309a7a93bca0e737f55855..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.81639032538744649
-1 2 -1.55208705952154413
-1 3 -9.56667849998420272e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/QMatrix.txt
deleted file mode 100644
index b9c6df1c532cacbdd5ba3601399c45332d5b6f24..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 321.75440547307403
-1 2 28.1515506663391015
-1 3 -5.09070867057981324e-15
-2 1 28.1515506663388173
-2 2 396.439738111100155
-2 3 1.1247513337364623e-15
-3 1 -1.93465035658313411e-15
-3 2 2.38567846033710396e-15
-3 3 177.009809364907568
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/perforated_wood_upper_log.txt
deleted file mode 100644
index 0b6060ff0acc5b5b88a74b7f125326e24dab3363..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/3/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.175919 4.17416e-18 0
-4.17416e-18 0.0128299 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0147476 -6.19557e-19 0
--6.19557e-19 0.176386 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--3.05866e-18 0.037176 0
-0.037176 -3.90345e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-321.754 28.1516 -5.09071e-15
-28.1516 396.44 1.12475e-15
--1.93465e-15 2.38568e-15 177.01
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 862.492 -536.023 -2.60855e-14
-Beff_: 2.81639 -1.55209 -9.56668e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=321.754
-q2=396.44
-q3=177.01
-q12=28.1516
-q13=-5.09071e-15
-q23=1.12475e-15
-q_onetwo=28.151551
-b1=2.816390
-b2=-1.552087
-b3=-0.000000
-mu_gamma=177.009809
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.21754e+02  & 3.96440e+02  & 1.77010e+02  & 2.81516e+01  & -5.09071e-15 & 1.12475e-15  & 2.81639e+00  & -1.55209e+00 & -9.56668e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/BMatrix.txt
deleted file mode 100644
index a8d9aadba3386b9921e5be4add85b81c07d8ed70..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.85479834918858755
-1 2 -1.46601145892171303
-1 3 -1.93770698195683035e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/QMatrix.txt
deleted file mode 100644
index 49d37ffb7b124f9c3fcd3363e754fd33215b4ad4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 307.250229504379888
-1 2 26.6630047664167122
-1 3 -4.76540736125269371e-15
-2 1 26.6630047664166234
-2 2 381.155206059032992
-2 3 1.44914462374412523e-15
-3 1 -3.94454434393676223e-15
-3 2 8.803721640582296e-16
-3 3 159.59134007818102
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/perforated_wood_upper_log.txt
deleted file mode 100644
index 289188b51ec586a1b27906f0a18be43e342a8c6c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/4/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.163896 3.93416e-18 0
-3.93416e-18 0.0125785 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0140495 -9.16052e-19 0
--9.16052e-19 0.179666 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.56641e-18 0.0511248 0
-0.0511248 -3.82233e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-307.25 26.663 -4.76541e-15
-26.663 381.155 1.44914e-15
--3.94454e-15 8.80372e-16 159.591
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 838.049 -482.66 -4.34756e-14
-Beff_: 2.8548 -1.46601 -1.93771e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=307.25
-q2=381.155
-q3=159.591
-q12=26.663
-q13=-4.76541e-15
-q23=1.44914e-15
-q_onetwo=26.663005
-b1=2.854798
-b2=-1.466011
-b3=-0.000000
-mu_gamma=159.591340
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.07250e+02  & 3.81155e+02  & 1.59591e+02  & 2.66630e+01  & -4.76541e-15 & 1.44914e-15  & 2.85480e+00  & -1.46601e+00 & -1.93771e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/BMatrix.txt
deleted file mode 100644
index 2bc890245caa171038bda3207e1ad671f6eb3175..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.88319240044684388
-1 2 -1.39426637648585916
-1 3 1.74906808466104268e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/QMatrix.txt
deleted file mode 100644
index d0c22f1eb864f8266883b8ef89df2166a15a4bc7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 296.573207401094123
-1 2 25.1122945899925085
-1 3 -6.58408874296134705e-16
-2 1 25.1122945899920857
-2 2 369.236802748597881
-2 3 -2.05239471251505989e-15
-3 1 4.17200995972422106e-15
-3 2 -1.15510899456605642e-15
-3 3 144.619279683215865
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/perforated_wood_upper_log.txt
deleted file mode 100644
index a4ea92856943385260496120f62397cd20ce77d1..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/5/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.154396 7.21716e-19 0
-7.21716e-19 0.0124597 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0129253 1.33594e-18 0
-1.33594e-18 0.182201 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--9.74693e-18 0.0631464 0
-0.0631464 7.96082e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-296.573 25.1123 -6.58409e-16
-25.1123 369.237 -2.05239e-15
-4.17201e-15 -1.15511e-15 144.619
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 820.064 -442.411 3.89341e-14
-Beff_: 2.88319 -1.39427 1.74907e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=296.573
-q2=369.237
-q3=144.619
-q12=25.1123
-q13=-6.58409e-16
-q23=-2.05239e-15
-q_onetwo=25.112295
-b1=2.883192
-b2=-1.394266
-b3=0.000000
-mu_gamma=144.619280
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.96573e+02  & 3.69237e+02  & 1.44619e+02  & 2.51123e+01  & -6.58409e-16 & -2.05239e-15 & 2.88319e+00  & -1.39427e+00 & 1.74907e-16  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/BMatrix.txt
deleted file mode 100644
index e9e567790e16123aede7f6ac0a6bac93645dca9f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.91359694498981536
-1 2 -1.30765195122041744
-1 3 5.14673481338230188e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/QMatrix.txt
deleted file mode 100644
index 2b66e09e47671b92442629ea03408a58c3e7a9cc..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 282.830748165004252
-1 2 23.5800196165115423
-1 3 -2.72850318727702046e-15
-2 1 23.5800196165115956
-2 2 355.940441861028489
-2 3 -6.73506389547995354e-16
-3 1 1.76649059963063237e-15
-3 2 -2.01444763647806724e-16
-3 3 127.850912313532632
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/parameter.txt
deleted file mode 100644
index 0b7599f37fe80b4c5af8039d95a431bedeb42057..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/perforated_wood_upper_log.txt
deleted file mode 100644
index b940fa689a82235d0cd74619f4a74a77a5a78cbd..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_4/6/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.141195 2.29074e-18 0
-2.29074e-18 0.0121828 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.011898 4.46199e-19 0
-4.46199e-19 0.185053 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--4.0585e-18 0.076655 0
-0.076655 4.45182e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-282.831 23.58 -2.7285e-15
-23.58 355.94 -6.73506e-16
-1.76649e-15 -2.01445e-16 127.851
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 793.22 -396.744 1.19904e-14
-Beff_: 2.9136 -1.30765 5.14673e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=282.831
-q2=355.94
-q3=127.851
-q12=23.58
-q13=-2.7285e-15
-q23=-6.73506e-16
-q_onetwo=23.580020
-b1=2.913597
-b2=-1.307652
-b3=0.000000
-mu_gamma=127.850912
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.82831e+02  & 3.55940e+02  & 1.27851e+02  & 2.35800e+01  & -2.72850e-15 & -6.73506e-16 & 2.91360e+00  & -1.30765e+00 & 5.14673e-17  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/BMatrix.txt
deleted file mode 100644
index fe91116a66419140efcfa10e10a57b8649f812fe..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.16105074507935901
-1 2 -1.98344337231396772
-1 3 2.57091952786952586e-30
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/QMatrix.txt
deleted file mode 100644
index 4b39868fc16ffde1fb3c56a29652891f988e3867..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 392.349438313312987
-1 2 30.0048996530020879
-1 3 7.23841510298498723e-30
-2 1 30.0048996530034842
-2 2 408.259132159441322
-2 3 1.7046791123760302e-29
-3 1 9.62934661366485363e-29
-3 2 5.3155620009550965e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/perforated_wood_upper_log.txt
deleted file mode 100644
index 7b23e855a378beb2a618a6c315b373a59da5242f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/0/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.194908 4.70518e-30 0
-4.70518e-30 0.0140927 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0140835 1.635e-30 0
-1.635e-30 0.184932 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.58978e-32 8.75336e-20 0
-8.75336e-20 2.01554e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-392.349 30.0049 7.23842e-30
-30.0049 408.259 1.70468e-29
-9.62935e-29 5.31556e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 788.374 -744.917 6.79097e-28
-Beff_: 2.16105 -1.98344 2.57092e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=392.349
-q2=408.259
-q3=224.213
-q12=30.0049
-q13=7.23842e-30
-q23=1.70468e-29
-q_onetwo=30.004900
-b1=2.161051
-b2=-1.983443
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.92349e+02  & 4.08259e+02  & 2.24213e+02  & 3.00049e+01  & 7.23842e-30  & 1.70468e-29  & 2.16105e+00  & -1.98344e+00 & 2.57092e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/BMatrix.txt
deleted file mode 100644
index 092530f0d8c71a4f91e5f22374713c0b00c60af0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.23160521945286439
-1 2 -1.91334790361761331
-1 3 -7.57149462266542763e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/QMatrix.txt
deleted file mode 100644
index bb0929eca7011e40491feefdf4a82f846e2c5668..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 362.687769809739336
-1 2 29.6990270195989297
-1 3 -2.60322362624632042e-15
-2 1 29.6990270196001767
-2 2 383.000901065517837
-2 3 1.29215214916822418e-15
-3 1 -2.2488521461694333e-15
-3 2 5.51804695686497482e-16
-3 3 205.866189919680295
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/perforated_wood_upper_log.txt
deleted file mode 100644
index 79bf6df91b2b34ab01ea5990f56154613e059089..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/1/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.176945 2.14973e-18 0
-2.14973e-18 0.013266 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0151414 -7.43633e-19 0
--7.43633e-19 0.190607 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.73746e-20 0.0139975 0
-0.0139975 -3.326e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-362.688 29.699 -2.60322e-15
-29.699 383.001 1.29215e-15
--2.24885e-15 5.51805e-16 205.866
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 752.551 -666.537 -2.16615e-14
-Beff_: 2.23161 -1.91335 -7.57149e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=362.688
-q2=383.001
-q3=205.866
-q12=29.699
-q13=-2.60322e-15
-q23=1.29215e-15
-q_onetwo=29.699027
-b1=2.231605
-b2=-1.913348
-b3=-0.000000
-mu_gamma=205.866190
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.62688e+02  & 3.83001e+02  & 2.05866e+02  & 2.96990e+01  & -2.60322e-15 & 1.29215e-15  & 2.23161e+00  & -1.91335e+00 & -7.57149e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/BMatrix.txt
deleted file mode 100644
index bf7272113e186f8ae4f6a6fdd49e94b624861519..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.29011587124539995
-1 2 -1.8401643988405223
-1 3 -1.18820375265033187e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/QMatrix.txt
deleted file mode 100644
index 0246e2c0bab9d2aa41aed8f41f995caf0b358682..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 339.803415812414471
-1 2 28.2115964246570137
-1 3 -5.16478678401488533e-15
-2 1 28.2115964246582394
-2 2 360.569431146881982
-2 3 2.10432799657711556e-15
-3 1 -6.18862600054725931e-16
-3 2 1.20248862950367297e-15
-3 3 185.664934323018571
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/perforated_wood_upper_log.txt
deleted file mode 100644
index 1d35c9643034926672b026cf5b7f899c34789182..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/2/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.161941 4.4991e-18 0
-4.4991e-18 0.0128443 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0150536 -1.26978e-18 0
--1.26978e-18 0.195606 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--5.51053e-19 0.0295837 0
-0.0295837 -2.95435e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-339.803 28.2116 -5.16479e-15
-28.2116 360.569 2.10433e-15
--6.18863e-16 1.20249e-15 185.665
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 726.275 -598.899 -2.56908e-14
-Beff_: 2.29012 -1.84016 -1.1882e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=339.803
-q2=360.569
-q3=185.665
-q12=28.2116
-q13=-5.16479e-15
-q23=2.10433e-15
-q_onetwo=28.211596
-b1=2.290116
-b2=-1.840164
-b3=-0.000000
-mu_gamma=185.664934
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.39803e+02  & 3.60569e+02  & 1.85665e+02  & 2.82116e+01  & -5.16479e-15 & 2.10433e-15  & 2.29012e+00  & -1.84016e+00 & -1.18820e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/BMatrix.txt
deleted file mode 100644
index 555cb38ed87d967fc14a60624ae0a857a40ad62b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.3448199646108252
-1 2 -1.7665448201501821
-1 3 3.0247750366783579e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/QMatrix.txt
deleted file mode 100644
index 0851292487e9a731c67341cd1b732c20d30554c1..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 320.217438744446383
-1 2 26.0781487507539786
-1 3 9.4629165614534827e-16
-2 1 26.0781487507546998
-2 2 340.992179310037841
-2 3 2.63677968348474678e-15
-3 1 2.86966631013463314e-15
-3 2 6.82071586710630839e-16
-3 3 165.887254477211002
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/perforated_wood_upper_log.txt
deleted file mode 100644
index d79bb2155bedd0c29977883a51dd78eb22820ece..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/3/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.148307 -3.91889e-19 0
--3.91889e-19 0.0126372 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0141936 -1.88981e-18 0
--1.88981e-18 0.199947 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--7.53193e-19 0.0449477 0
-0.0449477 1.98722e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-320.217 26.0781 9.46292e-16
-26.0781 340.992 2.63678e-15
-2.86967e-15 6.82072e-16 165.887
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 704.784 -541.229 5.57011e-14
-Beff_: 2.34482 -1.76654 3.02478e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=320.217
-q2=340.992
-q3=165.887
-q12=26.0781
-q13=9.46292e-16
-q23=2.63678e-15
-q_onetwo=26.078149
-b1=2.344820
-b2=-1.766545
-b3=0.000000
-mu_gamma=165.887254
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.20217e+02  & 3.40992e+02  & 1.65887e+02  & 2.60781e+01  & 9.46292e-16  & 2.63678e-15  & 2.34482e+00  & -1.76654e+00 & 3.02478e-16  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/BMatrix.txt
deleted file mode 100644
index 50c1a2898b87323595656810c87a64677d47ef23..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.40244279357842849
-1 2 -1.68421839310098331
-1 3 -4.12497472918141648e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/QMatrix.txt
deleted file mode 100644
index cd4b947072bdbe27b769541a753981f390fb74b4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 300.975714043243556
-1 2 23.6706831991565068
-1 3 -7.60619323601774422e-15
-2 1 23.6706831991571427
-2 2 321.705081650932982
-2 3 -4.24139889876329335e-16
-3 1 -1.87935604578637339e-15
-3 2 6.73289549113498254e-16
-3 3 143.901203683265294
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/perforated_wood_upper_log.txt
deleted file mode 100644
index dd26e7f03028c75b7ad4e109521b16655778a8f4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/4/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.134157 5.97128e-18 0
-5.97128e-18 0.0124762 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0130103 3.23521e-19 0
-3.23521e-19 0.204218 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--6.29971e-19 0.0620681 0
-0.0620681 -4.26503e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-300.976 23.6707 -7.60619e-15
-23.6707 321.705 -4.2414e-16
--1.87936e-15 6.7329e-16 143.901
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 683.21 -484.954 -6.50079e-14
-Beff_: 2.40244 -1.68422 -4.12497e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=300.976
-q2=321.705
-q3=143.901
-q12=23.6707
-q13=-7.60619e-15
-q23=-4.2414e-16
-q_onetwo=23.670683
-b1=2.402443
-b2=-1.684218
-b3=-0.000000
-mu_gamma=143.901204
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.00976e+02  & 3.21705e+02  & 1.43901e+02  & 2.36707e+01  & -7.60619e-15 & -4.24140e-16 & 2.40244e+00  & -1.68422e+00 & -4.12497e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/BMatrix.txt
deleted file mode 100644
index 49315929ffb0f1285aef019206f76b44532ea1ac..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.45121389338952334
-1 2 -1.61528346762097952
-1 3 -9.88204600694902147e-17
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/QMatrix.txt
deleted file mode 100644
index 5bd5b338917e27ff4d84e2a1a4eb4f454b1c107f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 285.741904809618518
-1 2 21.6885814533246162
-1 3 8.69866245006845062e-15
-2 1 21.6885814533249679
-2 2 307.331680445533266
-2 3 3.56550726443582988e-15
-3 1 4.69687223142445376e-15
-3 2 3.95083271653717816e-16
-3 3 127.328917972637129
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/perforated_wood_upper_log.txt
deleted file mode 100644
index 9b884e122046d98e9eaae0f90e43509c954507fd..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/5/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.12242 -5.90961e-18 0
--5.90961e-18 0.0123474 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0118873 -2.33307e-18 0
--2.33307e-18 0.207407 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--4.80897e-18 0.0751002 0
-0.0751002 1.34901e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-285.742 21.6886 8.69866e-15
-21.6886 307.332 3.56551e-15
-4.69687e-15 3.95083e-16 127.329
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 665.381 -443.264 -1.70784e-15
-Beff_: 2.45121 -1.61528 -9.88205e-17 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=285.742
-q2=307.332
-q3=127.329
-q12=21.6886
-q13=8.69866e-15
-q23=3.56551e-15
-q_onetwo=21.688581
-b1=2.451214
-b2=-1.615283
-b3=-0.000000
-mu_gamma=127.328918
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.85742e+02  & 3.07332e+02  & 1.27329e+02  & 2.16886e+01  & 8.69866e-15  & 3.56551e-15  & 2.45121e+00  & -1.61528e+00 & -9.88205e-17 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/BMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/BMatrix.txt
deleted file mode 100644
index 178608f68e5fd5c4a67d8cbbc40dbc4b1bf33cd5..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.53436002218693135
-1 2 -1.51902586283187846
-1 3 -3.49427326769003352e-16
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/QMatrix.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/QMatrix.txt
deleted file mode 100644
index ec528163072730a8f8a05208d3996a971b25db58..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 261.043359656164114
-1 2 19.263569495098789
-1 3 1.29380013647040215e-14
-2 1 19.2635694950995493
-2 2 289.207872157255906
-2 3 1.15565109565229918e-14
-3 1 1.44054012425273714e-14
-3 2 3.89380368226444062e-15
-3 3 108.717343442563958
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/parameter.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/parameter.txt
deleted file mode 100644
index 912bdbaa5ad1102b3520cf79a0d2781a8b2bef3c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/perforated_wood_upper_log.txt b/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/perforated_wood_upper_log.txt
deleted file mode 100644
index dba0c00eda2479a6fc95bdffde53b21778d13908..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/perforated-bilayer/results_upper_5/6/perforated_wood_upper_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.102381 -9.27855e-18 0
--9.27855e-18 0.0119339 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0105774 -8.68316e-18 0
--8.68316e-18 0.211433 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.34791e-17 0.0896179 0
-0.0896179 -3.6337e-19 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-261.043 19.2636 1.2938e-14
-19.2636 289.208 1.15565e-14
-1.44054e-14 3.8938e-15 108.717
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 632.316 -390.493 -7.39513e-15
-Beff_: 2.53436 -1.51903 -3.49427e-16 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=261.043
-q2=289.208
-q3=108.717
-q12=19.2636
-q13=1.2938e-14
-q23=1.15565e-14
-q_onetwo=19.263569
-b1=2.534360
-b2=-1.519026
-b3=-0.000000
-mu_gamma=108.717343
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 2.61043e+02  & 2.89208e+02  & 1.08717e+02  & 1.92636e+01  & 1.29380e-14  & 1.15565e-14  & 2.53436e+00  & -1.51903e+00 & -3.49427e-16 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/runWoodSimulations.py b/experiment/micro-problem/compWood/runWoodSimulations.py
index 99fd093b823a9c5b1c3e54fdd436bff796482d9d..2cfe2d2cf70e88cc2d781b62ebd5bab428b12580 100644
--- a/experiment/micro-problem/compWood/runWoodSimulations.py
+++ b/experiment/micro-problem/compWood/runWoodSimulations.py
@@ -13,15 +13,22 @@ import codecs
 import sys
 import threading
 # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-def SetParameterMaterialFunction(inputFunction, parameterName, parameterValue):
-    with open(inputFunction+'.py', 'r') as file:
+def SetParameterMaterialFunction(parameterFile, parameterName, parameterValue):
+    """"
+        Overwrite parameter 'parameterName' in the 'parameterFile'
+        with new value: 'parameterValue.
+    """
+    with open(parameterFile +'.py', 'r') as file:
         filedata = file.read()
-        filedata = re.sub('(?m)^'+str(parameterName)+'\s?=.*',str(parameterName)+' = '+str(parameterValue),filedata)
-        f = open(inputFunction+'.py','w')
+        filedata = re.sub('(?m)'+str(parameterName)+'\s?=.*',str(parameterName)+' = '+str(parameterValue),filedata)
+        f = open(parameterFile +'.py','w')
         f.write(filedata)
         f.close()
 
 
+
+
+
 # Read effective quantites
 def ReadEffectiveQuantities(QFilePath = os.path.dirname(os.getcwd()) + '/outputs/QMatrix.txt', BFilePath = os.path.dirname(os.getcwd())+ '/outputs/BMatrix.txt'):
     # Read Output Matrices (effective quantities)
@@ -186,13 +193,13 @@ materialFunctionParameter_2=[
 ### DATASET Experiment 3
 materialFunctionParameter_3=[
 [  # Dataset Ratio r = 0.12
-[0.12, 0.0047, 17.32986047, 9.005046347, np.pi/12.0, 4.312080261],
-[0.12, 0.0047, 17.32986047, 9.005046347, np.pi/6.0, 4.312080261],
-[0.12, 0.0047, 17.32986047, 9.005046347, np.pi/4.0, 4.312080261],
-[0.12, 0.0047, 17.32986047, 9.005046347, np.pi/3.0, 4.312080261],
-[0.12, 0.0047, 17.32986047, 9.005046347, 5.0*np.pi/12.0, 4.312080261],
-[0.12, 0.0047, 17.32986047, 9.005046347, np.pi/2.0, 4.312080261],
-[0.12, 0.0047, 17.32986047, 9.005046347, 7.0*np.pi/12.0, 4.312080261]
+# [0.12, 0.0047, 17.32986047, 9.005046347, np.pi/12.0, 4.312080261],
+# [0.12, 0.0047, 17.32986047, 9.005046347, np.pi/6.0, 4.312080261],
+[0.12, 0.0047, 17.32986047, 9.005046347, np.pi/4.0, 4.312080261]
+# [0.12, 0.0047, 17.32986047, 9.005046347, np.pi/3.0, 4.312080261],
+# [0.12, 0.0047, 17.32986047, 9.005046347, 5.0*np.pi/12.0, 4.312080261],
+# [0.12, 0.0047, 17.32986047, 9.005046347, np.pi/2.0, 4.312080261],
+# [0.12, 0.0047, 17.32986047, 9.005046347, 7.0*np.pi/12.0, 4.312080261]
 ]
 ]
 # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -204,15 +211,21 @@ materialFunctionParameter_3=[
 
 
 # 1. material, 2.  material-parameters, 3. ExperimentPathExtension  4. Perforation 5. perforatedLayer  6. Dataset-numbers
-scenarios = [["wood_european_beech"   ,   materialFunctionParameter_1  , "/wood-bilayer"              , False , ''       , [5]],    
-            #  ["wood_european_beech"   ,   materialFunctionParameter_1  , "/wood-bilayer"              , False , ''       , [0, 1, 2, 3, 4, 5]],    
-             ["perforated_wood_upper" ,   materialFunctionParameter_2  , "/perforated-bilayer"        , True  , 'upper'  , [0, 1, 2, 3, 4, 5]],  
-             ["perforated_wood_lower" ,   materialFunctionParameter_2  , "/perforated-bilayer"        , True  , 'lower'  , [0, 1, 2, 3, 4, 5]],  
+# scenarios = [["wood_european_beech"   ,   materialFunctionParameter_1  , "/wood-bilayer"              , False , ''       , [5]],    
+#             #  ["wood_european_beech"   ,   materialFunctionParameter_1  , "/wood-bilayer"              , False , ''       , [0, 1, 2, 3, 4, 5]],    
+#              ["perforated_wood_upper" ,   materialFunctionParameter_2  , "/perforated-bilayer"        , True  , 'upper'  , [0, 1, 2, 3, 4, 5]],  
+#              ["perforated_wood_lower" ,   materialFunctionParameter_2  , "/perforated-bilayer"        , True  , 'lower'  , [0, 1, 2, 3, 4, 5]],  
+#              ["wood_european_beech"   ,   materialFunctionParameter_3  , "/wood-bilayer-rotatedLayer" , False , ''       , [0]]
+#              ]
+
+scenarios = [
+             ["wood_european_beech"   ,   materialFunctionParameter_3  , "/wood-bilayer-rotatedLayer" , False , ''       , [0]],
              ["wood_european_beech"   ,   materialFunctionParameter_3  , "/wood-bilayer-rotatedLayer" , False , ''       , [0]]
              ]
 
 
 
+
 print('sys.argv[0]', sys.argv[0])
 print('sys.argv[1]', sys.argv[1])
 print('sys.argv[2]', sys.argv[2])  
@@ -242,7 +255,7 @@ for slurm_array_task_id in scenarioNumbers:
     if CONTAINER:
         #--- Taurus  version
         # print('CONTAINER SETUP USED')
-        pythonPath = "/dune/dune-microstructure/experiment/compWood" + pathExtension
+        pythonPath = "/dune/dune-microstructure/experiment/micro-problem/compWood" + pathExtension
         # instrumentedPath = "/dune/dune-gfe/instrumented"
         # resultPath = "/dune/dune-gfe/outputs"
         resultBasePath = "results_"  + scenarios[slurm_array_task_id][0]
@@ -255,12 +268,12 @@ for slurm_array_task_id in scenarioNumbers:
     else :
         #--- Local version
         # print('LOCAL SETUP USED')
-        pythonPath = "/home/klaus/Desktop/Dune_release/dune-microstructure/experiment/compWood" + pathExtension 
+        pythonPath = "/home/klaus/Desktop/Dune_TestTest/dune-microstructure/experiment/micro-problem/compWood" + pathExtension 
         # instrumentedPath = '/home/klaus/Desktop/harmonicmapBenchmark/dune-gfe/instrumented'
         # resultPath = '/home/klaus/Desktop/harmonicmapBenchmark/dune-gfe/outputs' + "_" + scenarios[slurm_array_task_id][0]
-        resultBasePath = '/home/klaus/Desktop/Dune_release/dune-microstructure/experiment/compWood'  + pathExtension 
+        resultBasePath = '/home/klaus/Desktop/Dune_TestTest/dune-microstructure/experiment/micro-problem/compWood'  + pathExtension 
 
-        executablePath = '/home/klaus/Desktop/Dune_release/dune-microstructure/build-cmake/src'
+        executablePath = '/home/klaus/Desktop/Dune_TestTest/dune-microstructure/build-cmake/src'
 
         try:
             os.mkdir(resultBasePath)
@@ -269,7 +282,8 @@ for slurm_array_task_id in scenarioNumbers:
             print(error)
 
 
-    executable = executablePath + '/Cell-Problem'
+    # executable = executablePath + '/Cell-Problem'
+    executable = executablePath + '/micro-problem'
     gamma = 1.0
 
 
@@ -318,6 +332,7 @@ for slurm_array_task_id in scenarioNumbers:
             SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_omega_flat",materialFunctionParameter[dataset_number][i][2])
             SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_omega_target",materialFunctionParameter[dataset_number][i][3])
             SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_theta",materialFunctionParameter[dataset_number][i][4]) 
+
             if perforation:
                 SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_beta",materialFunctionParameter[dataset_number][i][5])   
 
diff --git a/experiment/micro-problem/compWood/wood-bilayer-rotatedLayer/wood_european_beech.py b/experiment/micro-problem/compWood/wood-bilayer-rotatedLayer/wood_european_beech.py
index 2c039df3abb94109b8d79f03b9bedef185377270..c980b745e1ff2e18827512bfccfc755c9d683471 100644
--- a/experiment/micro-problem/compWood/wood-bilayer-rotatedLayer/wood_european_beech.py
+++ b/experiment/micro-problem/compWood/wood-bilayer-rotatedLayer/wood_european_beech.py
@@ -25,169 +25,169 @@ parameterSet.baseName= 'wood_european_beech'   #(needed for Output-Filename)
 
 #---------------------------------------------------------------
 # Wooden bilayer, https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6191116/#pone.0205607.ref015
-#--- define indicator function
-# x[0] : y1-component -1/2 to 1/2
-# x[1] : y2-component -1/2 to 1/2
-# x[2] : x3-component range -1/2 to 1/2
-#--- define indicator function
-def indicatorFunction(x):
-    factor=1
-    if (x[2]>=(0.5-param_r)):
-        return 1  #Phase1
-    else :
-        return 2   #Phase2
-
-# --- Number of material phases
-parameterSet.Phases=2
-
-# Parameters of the model
-# -- (thickness upper layer) / (thickness)
-param_r = 0.12
-# -- thickness [meter]
-param_h = 0.0047
-# -- moisture content in the flat state [%]
-param_omega_flat = 17.32986047
-# -- moisture content in the target state [%]
-param_omega_target = 9.005046347
-# -- Drehwinkel
-param_theta = 1.832595714594046
-
-#
-#
-#
-# -- increment of the moisture content
-delta_omega=param_omega_target-param_omega_flat
-# moisture content for material law
-omega=param_omega_target
-
-# --- Material properties from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6191116/#pone.0205607.ref015
-# --- for European beech, moisture content omega = 15%
-# --- L=direction orthogonal to layering and fibres = orthogonal to wood stem cross-section
-# --- T=tangential zu layering
-# --- R=orthogonal zu layering
-# --- in MPa
-# --- Properties are defined by affine function in dependence of moisture content omega via property = b_0+b_1 \omega
-# --- coefficients of affine function are contained in the following array 
-# --- data taken from http://dx.doi.org/10.1016/j.cma.2014.10.031
-
-properties_coefficients=np.array([
-    # [b_0, b_1]    
-    [2565.6,-59.7], # E_R [MPa]
-    [885.4, -23.4], # E_T [MPa]
-    [17136.7,-282.4], # E_L [MPa]
-    [667.8, -15.19], # G_RT [MPa]
-    [1482, -15.26], # G_RL [MPa]
-    [1100, -17.72], # G_TL [MPa]
-    [0.2933, -0.001012], # nu_TR [1]
-    [0.383, -0.008722], # nu_LR [1]
-    [0.3368, -0.009071] # nu_LT [1]
-    ])
-# Compute actual material properties
-E_R = properties_coefficients[0,0]+properties_coefficients[0,1]*omega
-E_T = properties_coefficients[1,0]+properties_coefficients[1,1]*omega
-E_L = properties_coefficients[2,0]+properties_coefficients[2,1]*omega
-G_RT = properties_coefficients[3,0]+properties_coefficients[3,1]*omega
-G_LR = properties_coefficients[4,0]+properties_coefficients[4,1]*omega
-G_LT  = properties_coefficients[5,0]+properties_coefficients[5,1]*omega
-nu_TR  = properties_coefficients[6,0]+properties_coefficients[6,1]*omega
-nu_LR  = properties_coefficients[7,0]+properties_coefficients[7,1]*omega
-nu_LT  = properties_coefficients[8,0]+properties_coefficients[8,1]*omega
-# Compute the remaining Poisson ratios
-nu_TL=nu_LT*E_T/E_L
-nu_RT=nu_TR*E_R/E_T
-nu_RL=nu_LR*E_R/E_L
-#
-# --- differential swelling strain
-# --- relation to swelling strain eps: eps=alpha* delta_omega with delta_omega = change of water content in %
-alpha_L=0.00011 # PLOS paper
-alpha_R=0.00191 # PLOS paper
-alpha_T=0.00462 # PLOS paper
-# Umrechnen
-#alpha_L=(1-1/(1+delta_omega*alpha_L))/delta_omega
-#alpha_R=(1-1/(1+delta_omega*alpha_R))/delta_omega
-#alpha_T=(1-1/(1+delta_omega*alpha_T))/delta_omega
-# --- define geometry
-
-
-
-# # --- PHASE 1
-# # y_1-direction: L
-# # y_2-direction: T
-# # x_3-direction: R
-# # phase1_type="orthotropic"
-# # materialParameters_phase1 = [E_L,E_T,E_R,G_TL,G_RT,G_RL,nu_LT,nu_LR,nu_TR]
-# parameterSet.phase1_type="general_anisotropic"
-# [E_1,E_2,E_3]=[E_L,E_T,E_R]
-# [nu_12,nu_13,nu_23]=[nu_LT,nu_LR,nu_TR]
-# [nu_21,nu_31,nu_32]=[nu_TL,nu_RL,nu_RT]
-# [G_12,G_31,G_23]=[G_LT,G_LR,G_RT]
-# compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
-#                        [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
-#                        [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
-#                        [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
-#                        [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
-#                        [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
-# materialParameters_phase1 = compliance_S
-
-# def prestrain_phase1(x):
-#     # hB=delta_omega * alpha with delta_omega increment of moisture content and alpha swelling factor.
-#     return [[1/param_h*delta_omega*alpha_L, 0, 0], [0,1/param_h*delta_omega*alpha_T,0], [0,0,1/param_h*delta_omega*alpha_R]]
-
-
-#Nun mit R und T vertauscht:
-
-# y_1-direction: L
-# y_2-direction: R
-# x_3-direction: T
-# phase1_type="orthotropic"
-# materialParameters_phase1 = [E_L,E_T,E_R,G_TL,G_RT,G_RL,nu_LT,nu_LR,nu_TR]
-parameterSet.phase1_type="general_anisotropic"
-[E_1,E_2,E_3]=[E_L,E_R,E_T]
-[nu_12,nu_13,nu_23]=[nu_LR,nu_LT,nu_RT]
-[nu_21,nu_31,nu_32]=[nu_RL,nu_TL,nu_TR]
-[G_12,G_31,G_23]=[G_LR,G_LT,G_RT]
-compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
-                       [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
-                       [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
-                       [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
-                       [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
-                       [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
-materialParameters_phase1 = compliance_S
-
-def prestrain_phase1(x):
-    # hB=delta_omega * alpha with delta_omega increment of moisture content and alpha swelling factor.
-    return [[1/param_h*delta_omega*alpha_L, 0, 0], [0,1/param_h*delta_omega*alpha_R,0], [0,0,1/param_h*delta_omega*alpha_T]]
-
-
-
-# --- PHASE 2
-# y_1-direction: R
-# y_2-direction: L
-# x_3-direction: T
-parameterSet.phase2_type="general_anisotropic"
-[E_1,E_2,E_3]=[E_R,E_L,E_T]
-[nu_12,nu_13,nu_23]=[nu_RL,nu_RT,nu_LT]
-[nu_21,nu_31,nu_32]=[nu_LR,nu_TR,nu_TL]
-[G_12,G_31,G_23]=[G_LR,G_RT,G_LT]
-compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
-                       [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
-                       [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
-                       [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
-                       [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
-                       [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
-materialParameters_phase2 = compliance_S
-def prestrain_phase2(x):
-    return [[1/param_h*delta_omega*alpha_R, 0, 0], [0,1/param_h*delta_omega*alpha_L,0], [0,0,1/param_h*delta_omega*alpha_T]]
-
-#Rotation um 2. Achse (= L) 
-# parameterSet.phase2_axis = 1
-parameterSet.phase2_axis = 2
-# phase2_angle = param_theta
-# -- Drehwinkel
-parameterSet.phase2_angle = param_theta
-# parameterSet.phase2_angle = 4*np.pi/12
 
 
+class Microstructure:
+    def __init__(self):
+        # self.macroPoint = macroPoint
+        self.gamma = 1.0    #in the future this might change depending on macroPoint.
+        self.phases = 2     #in the future this might change depending on macroPoint.
+
+
+        # Parameters of the model
+        # -- (thickness upper layer) / (thickness)
+        self.param_r = 0.12
+        # -- thickness [meter]
+        self.param_h = 0.0047
+        # -- moisture content in the flat state [%]
+        self.param_omega_flat = 17.32986047
+        # -- moisture content in the target state [%]
+        self.param_omega_target = 9.005046347
+        # -- Drehwinkel
+        param_theta = 0.7853981633974483
+        # -- increment of the moisture content
+        self.delta_omega=self.param_omega_target-self.param_omega_flat
+        # moisture content for material law
+        self.omega=self.param_omega_target
+
+        # --- Material properties from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6191116/#pone.0205607.ref015
+        # --- for European beech, moisture content omega = 15%
+        # --- L=direction orthogonal to layering and fibres = orthogonal to wood stem cross-section
+        # --- T=tangential zu layering
+        # --- R=orthogonal zu layering
+        # --- in MPa
+        # --- Properties are defined by affine function in dependence of moisture content omega via property = b_0+b_1 \omega
+        # --- coefficients of affine function are contained in the following array 
+        # --- data taken from http://dx.doi.org/10.1016/j.cma.2014.10.031
+        self.properties_coefficients=np.array([
+            # [b_0, b_1]    
+            [2565.6,-59.7], # E_R [MPa]
+            [885.4, -23.4], # E_T [MPa]
+            [17136.7,-282.4], # E_L [MPa]
+            [667.8, -15.19], # G_RT [MPa]
+            [1482, -15.26], # G_RL [MPa]
+            [1100, -17.72], # G_TL [MPa]
+            [0.2933, -0.001012], # nu_TR [1]
+            [0.383, -0.008722], # nu_LR [1]
+            [0.3368, -0.009071] # nu_LT [1]
+            ])
+
+        # Compute actual material properties
+        self.E_R    = self.properties_coefficients[0,0]+self.properties_coefficients[0,1]*self.omega
+        self.E_T    = self.properties_coefficients[1,0]+self.properties_coefficients[1,1]*self.omega
+        self.E_L    = self.properties_coefficients[2,0]+self.properties_coefficients[2,1]*self.omega
+        self.G_RT   = self.properties_coefficients[3,0]+self.properties_coefficients[3,1]*self.omega
+        self.G_LR   = self.properties_coefficients[4,0]+self.properties_coefficients[4,1]*self.omega
+        self.G_LT   = self.properties_coefficients[5,0]+self.properties_coefficients[5,1]*self.omega
+        self.nu_TR  = self.properties_coefficients[6,0]+self.properties_coefficients[6,1]*self.omega
+        self.nu_LR  = self.properties_coefficients[7,0]+self.properties_coefficients[7,1]*self.omega
+        self.nu_LT  = self.properties_coefficients[8,0]+self.properties_coefficients[8,1]*self.omega
+        # Compute the remaining Poisson ratios
+        self.nu_TL=self.nu_LT*self.E_T/self.E_L
+        self.nu_RT=self.nu_TR*self.E_R/self.E_T
+        self.nu_RL=self.nu_LR*self.E_R/self.E_L
+        #
+        # --- differential swelling strain
+        # --- relation to swelling strain eps: eps=alpha* delta_omega with delta_omega = change of water content in %
+        self.alpha_L=0.00011 # PLOS paper
+        self.alpha_R=0.00191 # PLOS paper
+        self.alpha_T=0.00462 # PLOS paper
+        # Umrechnen
+        #alpha_L=(1-1/(1+delta_omega*alpha_L))/delta_omega
+        #alpha_R=(1-1/(1+delta_omega*alpha_R))/delta_omega
+        #alpha_T=(1-1/(1+delta_omega*alpha_T))/delta_omega
+
+
+
+        # # --- PHASE 1
+        # # y_1-direction: L
+        # # y_2-direction: T
+        # # x_3-direction: R
+        # # phase1_type="orthotropic"
+        # # materialParameters_phase1 = [E_L,E_T,E_R,G_TL,G_RT,G_RL,nu_LT,nu_LR,nu_TR]
+        # parameterSet.phase1_type="general_anisotropic"
+        # [E_1,E_2,E_3]=[E_L,E_T,E_R]
+        # [nu_12,nu_13,nu_23]=[nu_LT,nu_LR,nu_TR]
+        # [nu_21,nu_31,nu_32]=[nu_TL,nu_RL,nu_RT]
+        # [G_12,G_31,G_23]=[G_LT,G_LR,G_RT]
+        # compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
+        #                        [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
+        #                        [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
+        #                        [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
+        #                        [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
+        #                        [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
+        # materialParameters_phase1 = compliance_S
+
+        # def prestrain_phase1(x):
+        #     # hB=delta_omega * alpha with delta_omega increment of moisture content and alpha swelling factor.
+        #     return [[1/param_h*delta_omega*alpha_L, 0, 0], [0,1/param_h*delta_omega*alpha_T,0], [0,0,1/param_h*delta_omega*alpha_R]]
+
+
+        #Nun mit R und T vertauscht:
+
+        # y_1-direction: L
+        # y_2-direction: R
+        # x_3-direction: T
+        # phase1_type="orthotropic"
+        # materialParameters_phase1 = [E_L,E_T,E_R,G_TL,G_RT,G_RL,nu_LT,nu_LR,nu_TR]
+        self.phase1_type="general_anisotropic"
+        [E_1,E_2,E_3]=[self.E_L,self.E_R,self.E_T]
+        [nu_12,nu_13,nu_23]=[self.nu_LR,self.nu_LT,self.nu_RT]
+        [nu_21,nu_31,nu_32]=[self.nu_RL,self.nu_TL,self.nu_TR]
+        [G_12,G_31,G_23]=[self.G_LR,self.G_LT,self.G_RT]
+        compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
+                            [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
+                            [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
+                            [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
+                            [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
+                            [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
+        self.materialParameters_phase1 = compliance_S
+
+        # --- PHASE 2
+        # y_1-direction: R
+        # y_2-direction: L
+        # x_3-direction: T
+        self.phase2_type="general_anisotropic"
+        [E_1,E_2,E_3]=[self.E_R,self.E_L,self.E_T]
+        [nu_12,nu_13,nu_23]=[self.nu_RL,self.nu_RT,self.nu_LT]
+        [nu_21,nu_31,nu_32]=[self.nu_LR,self.nu_TR,self.nu_TL]
+        [G_12,G_31,G_23]=[self.G_LR,self.G_RT,self.G_LT]
+        compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
+                            [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
+                            [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
+                            [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
+                            [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
+                            [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
+        self.materialParameters_phase2 = compliance_S
+
+        #Rotation um 3. Achse (= T) note that axis starts from 0 
+        # parameterSet.phase2_axis = 1
+        self.phase2_axis = 2
+        # phase2_angle = param_theta
+        # -- Drehwinkel
+        self.phase2_angle = param_theta
+        # parameterSet.phase2_angle = 4*np.pi/12
+
+
+    def prestrain_phase1(self,x):
+        # hB=delta_omega * alpha with delta_omega increment of moisture content and alpha swelling factor.
+        return [[1/self.param_h*self.delta_omega*self.alpha_L, 0, 0], [0,1/self.param_h*self.delta_omega*self.alpha_R,0], [0,0,1/self.param_h*self.delta_omega*self.alpha_T]]
+
+    def prestrain_phase2(self,x):
+        return [[1/self.param_h*self.delta_omega*self.alpha_R, 0, 0], [0,1/self.param_h*self.delta_omega*self.alpha_L,0], [0,0,1/self.param_h*self.delta_omega*self.alpha_T]]
+
+    #--- define indicator function
+    # x[0] : y1-component -1/2 to 1/2
+    # x[1] : y2-component -1/2 to 1/2
+    # x[2] : x3-component range -1/2 to 1/2
+    #--- define indicator function
+    def indicatorFunction(self,x):
+        factor=1
+        if (x[2]>=(0.5-self.param_r)):
+            return 1  #Phase1
+        else :
+            return 2   #Phase2
+
 
 # # --- PHASE 3 = Phase 1 gedreht
 # # y_1-direction: L
@@ -204,36 +204,33 @@ parameterSet.phase2_angle = param_theta
 
 
 
-# --- Choose scale ratio gamma:
-parameterSet.gamma=1.0
 
 
 
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+
 
 #############################################
 #  Grid parameters
 #############################################
-## 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
-#----------------------------------------------------
-# parameterSet.numLevels= '3 3'      # computes all levels from first to second entry
-parameterSet.numLevels= '4 4'      # computes all levels from first to second entry
-
+parameterSet.microGridLevel = 4
 
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER (default), #4: UMFPACK - SOLVER
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4       # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
@@ -241,35 +238,16 @@ parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for sol
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
 parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
+parameterSet.MaterialSubsamplingRefinement= 2
 # --- Write Correctos to VTK-File:  
-parameterSet.write_VTK = 0
-
-# The grid can be refined several times for a higher resolution in the VTK-file.
-parameterSet.subsamplingRefinement = 0
+parameterSet.writeCorrectorsVTK = 0
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
 
-
-
-# The assembly uses a cache for element matrices this can be turned on/off
-# parameterSet.cacheElementMatrices = 1
-
-# --- (Optional output) L2Error, integral mean: 
-#parameterSet.write_L2Error = 1
-#parameterSet.write_IntegralMean = 1      
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
-# --- Write corrector-coefficients to log-File:
-#parameterSet.write_corrector_phi1 = 1
-#parameterSet.write_corrector_phi2 = 1
-#parameterSet.write_corrector_phi3 = 1
-
-# --- Print Condition number of matrix (can be expensive):
-#parameterSet.print_conditionNumber= 1  #(default=false)
-
-# --- write effective quantities to Matlab-folder for symbolic minimization:
-parameterSet.write_toMATLAB = 1  # writes effective quantities to .txt-files QMatrix.txt and BMatrix.txt
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
\ No newline at end of file
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/0/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/0/BMatrix.txt
deleted file mode 100644
index 1d064c0444d7f52f7eb82a1300f5de9103d808f2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.30957793337868611
-1 2 -0.16799616054069974
-1 3 -3.49364675888413947e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/0/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/0/QMatrix.txt
deleted file mode 100644
index c5af3f6a33ca9875c9df9c79c0185ad2e74ac759..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 291.65125028076119
-1 2 31.5914277949655009
-1 3 -5.63265175255268547e-29
-2 1 31.5914277949653055
-2 2 783.465935671704187
-2 3 2.90083568223605464e-30
-3 1 -2.02055995549057814e-28
-3 2 -7.37074541371326025e-29
-3 3 209.608425967589852
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/0/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/0/parameter.txt
deleted file mode 100644
index bd45649a7a6806013717afa08fcd0b14ae88daad..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.32986047
-omega_target = 14.70179844
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/0/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/0/wood_european_beech_log.txt
deleted file mode 100644
index 99f7b04aed50a6f5f8b809662c422788b272d41a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/0/wood_european_beech_log.txt
+++ /dev/null
@@ -1 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/1/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/1/BMatrix.txt
deleted file mode 100644
index cad9d10bd080653dabf6065da16c86bc4d431be6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.84025869320214608
-1 2 -0.241409881003110893
-1 3 8.74700097788480588e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/1/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/1/QMatrix.txt
deleted file mode 100644
index 3ae1d7f010ee58a0ffa14d0b96dab839e176ee0c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 301.544403021167
-1 2 34.0854771606682121
-1 3 2.59461282107848414e-30
-2 1 34.0854771606677929
-2 2 803.183286976336035
-2 3 -1.74628882882451643e-30
-3 1 1.95447414833141715e-28
-3 2 4.5428166061398123e-29
-3 3 212.348100666669637
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/1/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/1/parameter.txt
deleted file mode 100644
index 3f5914283d52269acd40f7348784827fd093e61e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.32986047
-omega_target = 13.6246
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/1/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/1/wood_european_beech_log.txt
deleted file mode 100644
index 4cf884733e0df42685175a7881cba84c1355323b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/1/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.198639 5.89621e-31 0
-5.89621e-31 0.00776103 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00776103 -2.90924e-31 0
--2.90924e-31 0.0535593 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.39735e-31 1.27546e-17 0
-1.27546e-17 1.38333e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-301.544 34.0855 2.59461e-30
-34.0855 803.183 -1.74629e-30
-1.95447e-28 4.54282e-29 212.348
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 546.691 -131.17 2.20612e-27
-Beff_: 1.84026 -0.24141 8.747e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=301.544
-q2=803.183
-q3=212.348
-q12=34.0855
-q13=2.59461e-30
-q23=-1.74629e-30
-q_onetwo=34.085477
-b1=1.840259
-b2=-0.241410
-b3=0.000000
-mu_gamma=212.348101
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.01544e+02  & 8.03183e+02  & 2.12348e+02  & 3.40855e+01  & 2.59461e-30  & -1.74629e-30 & 1.84026e+00  & -2.41410e-01 & 8.74700e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/2/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/2/BMatrix.txt
deleted file mode 100644
index 9dcf95339cd4cafbf49af7ed31be99b5012d77e2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.42497835969141029
-1 2 -0.325737200491554135
-1 3 1.4268463918470752e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/2/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/2/QMatrix.txt
deleted file mode 100644
index 521bd8cd90125114b2c3a4a3a2f70f6e6a424acb..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 312.519242246794022
-1 2 36.9667738045496321
-1 3 9.85074647955183394e-30
-2 1 36.9667738045513019
-2 2 825.119122698170941
-2 3 1.86832537975061363e-29
-3 1 2.29567371412312849e-28
-3 2 5.57429379889294185e-29
-3 3 215.386506346531121
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/2/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/2/parameter.txt
deleted file mode 100644
index b2961f62035e900f0367c01d0b8bc85c54fa966e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.32986047
-omega_target = 12.42994508
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/2/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/2/wood_european_beech_log.txt
deleted file mode 100644
index ec9bc460e3b9f03997cdb2df866f09537a4db5f1..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/2/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.196895 3.87756e-30 0
-3.87756e-30 0.00811353 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00811353 7.30271e-31 0
-7.30271e-31 0.0534549 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.68676e-31 5.46724e-18 0
-5.46724e-18 1.70292e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-312.519 36.9668 9.85075e-30
-36.9668 825.119 1.86833e-29
-2.29567e-28 5.57429e-29 215.387
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 745.811 -179.128 3.61177e-27
-Beff_: 2.42498 -0.325737 1.42685e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=312.519
-q2=825.119
-q3=215.387
-q12=36.9668
-q13=9.85075e-30
-q23=1.86833e-29
-q_onetwo=36.966774
-b1=2.424978
-b2=-0.325737
-b3=0.000000
-mu_gamma=215.386506
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.12519e+02  & 8.25119e+02  & 2.15387e+02  & 3.69668e+01  & 9.85075e-30  & 1.86833e-29  & 2.42498e+00  & -3.25737e-01 & 1.42685e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/3/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/3/BMatrix.txt
deleted file mode 100644
index cd96ffc0d92e915ec8499455c65b7511614bfa4d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.78145732352313413
-1 2 -0.378880335298565851
-1 3 4.10783387181023803e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/3/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/3/QMatrix.txt
deleted file mode 100644
index 87467ee032ec1860fc5960c7d00239e733f6a093..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 319.248761807926712
-1 2 38.7929603649761248
-1 3 -1.94726924817104643e-29
-2 1 38.7929603649761248
-2 2 838.600683836862345
-2 3 -1.91100398731823478e-30
-3 1 4.51418520301082312e-28
-3 2 6.33065043420398845e-29
-3 3 217.248762862696651
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/3/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/3/parameter.txt
deleted file mode 100644
index c994c4c8a64b05115e74b088be6f4090c312fa2c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.32986047
-omega_target = 11.69773413
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/3/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/3/wood_european_beech_log.txt
deleted file mode 100644
index 84ccce1188b2f1719bd1940c7435f12ce40246ad..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/3/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.195885 0 0
-0 0.00832989 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00832989 0 0
-0 0.053395 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-3.94138e-31 -1.95736e-18 0
--1.95736e-18 4.47411e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-319.249 38.793 -1.94727e-29
-38.793 838.601 -1.911e-30
-4.51419e-28 6.33065e-29 217.249
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 873.279 -209.828 1.01558e-26
-Beff_: 2.78146 -0.37888 4.10783e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=319.249
-q2=838.601
-q3=217.249
-q12=38.793
-q13=-1.94727e-29
-q23=-1.911e-30
-q_onetwo=38.792960
-b1=2.781457
-b2=-0.378880
-b3=0.000000
-mu_gamma=217.248763
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.19249e+02  & 8.38601e+02  & 2.17249e+02  & 3.87930e+01  & -1.94727e-29 & -1.91100e-30 & 2.78146e+00  & -3.78880e-01 & 4.10783e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/4/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/4/BMatrix.txt
deleted file mode 100644
index 4507389cbfbe6c35f7899a726a6b450d9a0920a0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.05128342151052845
-1 2 -0.419963670790280019
-1 3 -6.7274670078047127e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/4/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/4/QMatrix.txt
deleted file mode 100644
index 5e78d05f7696a4476977c6fca6b886508514fcc7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 324.362101137586365
-1 2 40.2107071602111006
-1 3 1.44978228423637953e-29
-2 1 40.2107071602082726
-2 2 848.859633290990359
-2 3 -4.10049744459486385e-30
-3 1 -6.51075415763388712e-28
-3 2 -9.66795967527863043e-29
-3 3 218.663197663963047
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/4/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/4/parameter.txt
deleted file mode 100644
index 8b5b4696dc1893163238150d0242c8f44c80dcf2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.32986047
-omega_target = 11.14159987
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/4/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/4/wood_european_beech_log.txt
deleted file mode 100644
index abbd2b7ae6a3221ec01b761cf14ff43701dc3e26..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/4/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.195147 0 0
-0 0.00849438 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00849438 0 0
-0 0.0533516 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--5.8642e-31 -5.62466e-18 0
--5.62466e-18 -6.55118e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-324.362 40.2107 1.44978e-29
-40.2107 848.86 -4.1005e-30
--6.51075e-28 -9.66796e-29 218.663
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 972.834 -233.796 -1.66565e-26
-Beff_: 3.05128 -0.419964 -6.72747e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=324.362
-q2=848.86
-q3=218.663
-q12=40.2107
-q13=1.44978e-29
-q23=-4.1005e-30
-q_onetwo=40.210707
-b1=3.051283
-b2=-0.419964
-b3=-0.000000
-mu_gamma=218.663198
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.24362e+02  & 8.48860e+02  & 2.18663e+02  & 4.02107e+01  & 1.44978e-29  & -4.10050e-30 & 3.05128e+00  & -4.19964e-01 & -6.72747e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/5/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/5/BMatrix.txt
deleted file mode 100644
index a9f764bfc92f2b939450c022f98313e98d0677f9..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.84294705196740471
-1 2 -0.544690224125797706
-1 3 2.61477368966447197e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/5/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/5/QMatrix.txt
deleted file mode 100644
index 09a7dc9867dfcfc37c8cdb2d15732ac768cf706c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 339.46321808419026
-1 2 44.5491962625941937
-1 3 2.20634534429001739e-30
-2 1 44.5491962625928366
-2 2 879.230358021768325
-2 3 -8.91455193358519859e-30
-3 1 2.9028399508855626e-28
-3 2 8.47924719082015293e-29
-3 3 222.836628592952195
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/5/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/5/parameter.txt
deleted file mode 100644
index a14b4fa7d671b0f483d3d229ad7d92fa8f488141..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.32986047
-omega_target = 9.500670278
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/5/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/5/wood_european_beech_log.txt
deleted file mode 100644
index f2ffc0033fe36e7972dacd86e69544a8039d36e5..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/5/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.193101 -1.48756e-30 0
--1.48756e-30 0.00898057 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00898057 -2.04379e-31 0
--2.04379e-31 0.053233 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.86632e-31 -4.31564e-18 0
--4.31564e-18 2.11692e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-339.463 44.5492 2.20635e-30
-44.5492 879.23 -8.91455e-30
-2.90284e-28 8.47925e-29 222.837
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1280.27 -307.708 6.89603e-27
-Beff_: 3.84295 -0.54469 2.61477e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=339.463
-q2=879.23
-q3=222.837
-q12=44.5492
-q13=2.20635e-30
-q23=-8.91455e-30
-q_onetwo=44.549196
-b1=3.842947
-b2=-0.544690
-b3=0.000000
-mu_gamma=222.836629
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.39463e+02  & 8.79230e+02  & 2.22837e+02  & 4.45492e+01  & 2.20635e-30  & -8.91455e-30 & 3.84295e+00  & -5.44690e-01 & 2.61477e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/6/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/6/BMatrix.txt
deleted file mode 100644
index 7c61f6e1f77e064db13e9f5a8a8cf9c5a679891b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.08079095797733249
-1 2 -0.583363076166479533
-1 3 2.85775978363957378e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/6/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/6/QMatrix.txt
deleted file mode 100644
index 582af45ebbf97a6dd09cd0bb32f3b7bb1c2c5a32..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 344.029188416625061
-1 2 45.9054122338217852
-1 3 9.47865681429621997e-30
-2 1 45.90541223382656
-2 2 888.433975916668828
-2 3 -3.61535569160371914e-30
-3 1 6.40920762052510879e-29
-3 2 -5.71160128097841747e-29
-3 3 224.097165457464655
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/6/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/6/parameter.txt
deleted file mode 100644
index e6e12711388c45f982819a5a91d18faea6c2bd00..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.12
-h = 0.0047
-omega_flat = 17.32986047
-omega_target = 9.005046347
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_0/6/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_0/6/wood_european_beech_log.txt
deleted file mode 100644
index 8d0d6af46a3c45077965ffd613e028d77551768f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_0/6/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.192519 7.20329e-32 0
-7.20329e-32 0.00912767 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00912767 -2.33924e-31 0
--2.33924e-31 0.0532 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.59148e-31 -1.86835e-18 0
--1.86835e-18 2.18407e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-344.029 45.9054 9.47866e-30
-45.9054 888.434 -3.61536e-30
-6.40921e-29 -5.7116e-29 224.097
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1377.13 -330.949 6.69902e-27
-Beff_: 4.08079 -0.583363 2.85776e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=344.029
-q2=888.434
-q3=224.097
-q12=45.9054
-q13=9.47866e-30
-q23=-3.61536e-30
-q_onetwo=45.905412
-b1=4.080791
-b2=-0.583363
-b3=0.000000
-mu_gamma=224.097165
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.44029e+02  & 8.88434e+02  & 2.24097e+02  & 4.59054e+01  & 9.47866e-30  & -3.61536e-30 & 4.08079e+00  & -5.83363e-01 & 2.85776e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/0/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/0/BMatrix.txt
deleted file mode 100644
index 1dce0991991bc1b209d09f2ade87f24beb506210..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.29752030545534569
-1 2 -0.22064583149339706
-1 3 5.77592973758246185e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/0/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/0/QMatrix.txt
deleted file mode 100644
index 2b21a4a46691222c38848728db0289f1e7705641..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 301.469198503229222
-1 2 29.1190124599649494
-1 3 3.94430452610505903e-31
-2 1 29.1190124599661502
-2 2 693.959113110051476
-2 3 -3.40966637354316235e-30
-3 1 9.93104511931752164e-29
-3 2 -1.89403173673628836e-29
-3 3 209.474297561760352
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/0/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/0/parameter.txt
deleted file mode 100644
index 8c7e42ed8815ae515c983da42c5a95ba9aae5ffa..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.28772791
-omega_target = 14.75453569
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/0/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/0/wood_european_beech_log.txt
deleted file mode 100644
index e4ba84954859345b00663e98cc9e60e521bcdf72..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/0/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.222151 1.45463e-32 0
-1.45463e-32 0.0086233 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00836305 -9.45314e-33 0
--9.45314e-33 0.0723745 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.04806e-31 1.34292e-18 0
-1.34292e-18 1.59846e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-301.469 29.119 3.9443e-31
-29.119 693.959 -3.40967e-30
-9.93105e-29 -1.89403e-29 209.474
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 384.737 -115.337 1.34295e-27
-Beff_: 1.29752 -0.220646 5.77593e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=301.469
-q2=693.959
-q3=209.474
-q12=29.119
-q13=3.9443e-31
-q23=-3.40967e-30
-q_onetwo=29.119012
-b1=1.297520
-b2=-0.220646
-b3=0.000000
-mu_gamma=209.474298
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.01469e+02  & 6.93959e+02  & 2.09474e+02  & 2.91190e+01  & 3.94430e-31  & -3.40967e-30 & 1.29752e+00  & -2.20646e-01 & 5.77593e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/1/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/1/BMatrix.txt
deleted file mode 100644
index 51e95b75a2f354c67a4c369b1adadee77bd5d0b8..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.82704644820739048
-1 2 -0.316520389633071719
-1 3 -2.32578838926937533e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/1/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/1/QMatrix.txt
deleted file mode 100644
index b864a516c5b04575d8728aec77709151173cc245..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 311.495612033295629
-1 2 31.3746169055476329
-1 3 2.19894977330357041e-29
-2 1 31.3746169055493915
-2 2 711.180546897385966
-2 3 -4.8023063163295726e-30
-3 1 -1.17190056554606093e-27
-3 2 -4.54434240643236942e-28
-3 3 212.125110381436087
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/1/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/1/parameter.txt
deleted file mode 100644
index 74be9cd75e7de037ac66ef17537213f8ff37a123..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.28772791
-omega_target = 13.71227639
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/1/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/1/wood_european_beech_log.txt
deleted file mode 100644
index 3180a0700f614c0367c79c835eb6174be3162aac..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/1/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.220595 0 0
-0 0.00898797 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00874334 0 0
-0 0.0722346 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--4.37856e-31 1.41866e-18 0
-1.41866e-18 -3.84461e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-311.496 31.3746 2.19895e-29
-31.3746 711.181 -4.80231e-30
--1.1719e-27 -4.54434e-28 212.125
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 559.186 -167.78 -6.93086e-27
-Beff_: 1.82705 -0.31652 -2.32579e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=311.496
-q2=711.181
-q3=212.125
-q12=31.3746
-q13=2.19895e-29
-q23=-4.80231e-30
-q_onetwo=31.374617
-b1=1.827046
-b2=-0.316520
-b3=-0.000000
-mu_gamma=212.125110
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.11496e+02  & 7.11181e+02  & 2.12125e+02  & 3.13746e+01  & 2.19895e-29  & -4.80231e-30 & 1.82705e+00  & -3.16520e-01 & -2.32579e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/2/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/2/BMatrix.txt
deleted file mode 100644
index b0489cf2465cfc77f8b3755756cee2f73226333b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.41486954141673316
-1 2 -0.426713983496025018
-1 3 9.97876487122218751e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/2/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/2/QMatrix.txt
deleted file mode 100644
index 458046f1ed124ba015a14e4c7a085c7ade8042f5..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 322.679479524483497
-1 2 33.9938655476088911
-1 3 1.25840262566261991e-29
-2 1 33.9938655476077045
-2 2 730.444621428729647
-2 3 -2.13547112233656711e-30
-3 1 2.16107010167487616e-28
-3 2 5.65973073341019462e-29
-3 3 215.081802194802265
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/2/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/2/parameter.txt
deleted file mode 100644
index c2cb9086be0c779e97a6cb3461eab04da1fa2f83..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.28772791
-omega_target = 12.54975012
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/2/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/2/wood_european_beech_log.txt
deleted file mode 100644
index a5b0e74e3227e777a48c0e2deb4d33d59f8ceaa6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/2/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.218967 1.70747e-30 0
-1.70747e-30 0.00939555 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00916787 -3.68532e-31 0
--3.68532e-31 0.0720895 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.13233e-31 -1.18625e-18 0
--1.18625e-18 1.41587e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-322.679 33.9939 1.2584e-29
-33.9939 730.445 -2.13547e-30
-2.16107e-28 5.65973e-29 215.082
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 764.723 -229.6 2.64397e-27
-Beff_: 2.41487 -0.426714 9.97876e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=322.679
-q2=730.445
-q3=215.082
-q12=33.9939
-q13=1.2584e-29
-q23=-2.13547e-30
-q_onetwo=33.993866
-b1=2.414870
-b2=-0.426714
-b3=0.000000
-mu_gamma=215.081802
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.22679e+02  & 7.30445e+02  & 2.15082e+02  & 3.39939e+01  & 1.25840e-29  & -2.13547e-30 & 2.41487e+00  & -4.26714e-01 & 9.97876e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/3/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/3/BMatrix.txt
deleted file mode 100644
index d397753607f8bbf758aebc5d4af52c4deee8d16f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.77508060298853554
-1 2 -0.496140746694544832
-1 3 -3.51719672988597282e-46
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/3/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/3/QMatrix.txt
deleted file mode 100644
index 3d2247077c0c39a89e739b9d1443b250f137a377..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 329.561454885542219
-1 2 35.6596265578670426
-1 3 -1.96121298096841001e-29
-2 1 35.6596265578661544
-2 2 742.326125001064497
-2 3 -4.73162468737056104e-30
-3 1 -6.81258281384692346e-45
-3 2 -1.7954103463951185e-45
-3 3 216.900770109434205
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/3/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/3/parameter.txt
deleted file mode 100644
index 69db3b5cb3f1ed9c971972d61284aa10d683f23f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.28772791
-omega_target = 11.83455959
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/3/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/3/wood_european_beech_log.txt
deleted file mode 100644
index dec30376a0cfa5b7cf09a0de40ffdebfce47b6e0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/3/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.218018 2.33857e-31 0
-2.33857e-31 0.00964673 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00942924 4.16336e-32 0
-4.16336e-32 0.0720056 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--3.43304e-48 6.06246e-18 0
-6.06246e-18 -4.52175e-49 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-329.561 35.6596 -1.96121e-29
-35.6596 742.326 -4.73162e-30
--6.81258e-45 -1.79541e-45 216.901
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 896.867 -269.34 -9.4303e-44
-Beff_: 2.77508 -0.496141 -3.5172e-46 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=329.561
-q2=742.326
-q3=216.901
-q12=35.6596
-q13=-1.96121e-29
-q23=-4.73162e-30
-q_onetwo=35.659627
-b1=2.775081
-b2=-0.496141
-b3=-0.000000
-mu_gamma=216.900770
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.29561e+02  & 7.42326e+02  & 2.16901e+02  & 3.56596e+01  & -1.96121e-29 & -4.73162e-30 & 2.77508e+00  & -4.96141e-01 & -3.51720e-46 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/4/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/4/BMatrix.txt
deleted file mode 100644
index 2c89878b6f6ae5a9abbe21d6f212a7dbb4e93cf6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.04819746864895968
-1 2 -0.549722239723354544
-1 3 -1.5661476142943759e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/4/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/4/QMatrix.txt
deleted file mode 100644
index 082860093fd48be595b0bcecafdc4205173e1deb..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 334.794275071445611
-1 2 36.9537023835250196
-1 3 4.07249442320347345e-29
-2 1 36.9537023835256875
-2 2 751.373908322565285
-2 3 7.30312634911639835e-31
-3 1 -1.65894852274599059e-28
-3 2 -6.88883408567756262e-30
-3 3 218.283489849225845
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/4/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/4/parameter.txt
deleted file mode 100644
index 7bf61ea17f062559dcabef0a25f53d6f43ba8142..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.28772791
-omega_target = 11.29089521
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/4/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/4/wood_european_beech_log.txt
deleted file mode 100644
index d53ae938bee11b6c018d0479e9adf5244d292469..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/4/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.217322 0 0
-0 0.0098379 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00962801 0 0
-0 0.0719445 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.20419e-31 5.21486e-18 0
-5.21486e-18 -1.93821e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-334.794 36.9537 4.07249e-29
-36.9537 751.374 7.30313e-31
--1.65895e-28 -6.88883e-30 218.283
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1000.2 -300.405 -3.92053e-27
-Beff_: 3.0482 -0.549722 -1.56615e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=334.794
-q2=751.374
-q3=218.283
-q12=36.9537
-q13=4.07249e-29
-q23=7.30313e-31
-q_onetwo=36.953702
-b1=3.048197
-b2=-0.549722
-b3=-0.000000
-mu_gamma=218.283490
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.34794e+02  & 7.51374e+02  & 2.18283e+02  & 3.69537e+01  & 4.07249e-29  & 7.30313e-31  & 3.04820e+00  & -5.49722e-01 & -1.56615e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/5/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/5/BMatrix.txt
deleted file mode 100644
index fff538b84525108bf3913a54017cf453fa89f2e0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.88360589206635165
-1 2 -0.718524153096883778
-1 3 -3.64042134077714142e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/5/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/5/QMatrix.txt
deleted file mode 100644
index c369f7357b6fb73b0c7b63733427cc17d5aec854..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 350.881684034111856
-1 2 41.08045251248992
-1 3 6.36943551207746641e-30
-2 1 41.0804525124909432
-2 2 779.259994526643936
-2 3 -2.07846359598270493e-30
-3 1 -3.98049900527083252e-28
-3 2 -8.21904929898942036e-29
-3 3 222.531584654428428
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/5/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/5/parameter.txt
deleted file mode 100644
index f54d4a21ac1dc4db1133101807e54df44f71b2eb..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.28772791
-omega_target = 9.620608917
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/5/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/5/wood_european_beech_log.txt
deleted file mode 100644
index 7037f895e2e1e81caba0ecb39d63ebdf2d6797c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/5/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.215312 0 0
-0 0.0104264 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0102393 0 0
-0 0.0717706 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--2.30192e-31 -7.20259e-18 0
--7.20259e-18 -3.46946e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-350.882 41.0805 6.36944e-30
-41.0805 779.26 -2.07846e-30
--3.9805e-28 -8.21905e-29 222.532
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1333.17 -400.377 -9.5879e-27
-Beff_: 3.88361 -0.718524 -3.64042e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=350.882
-q2=779.26
-q3=222.532
-q12=41.0805
-q13=6.36944e-30
-q23=-2.07846e-30
-q_onetwo=41.080453
-b1=3.883606
-b2=-0.718524
-b3=-0.000000
-mu_gamma=222.531585
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.50882e+02  & 7.79260e+02  & 2.22532e+02  & 4.10805e+01  & 6.36944e-30  & -2.07846e-30 & 3.88361e+00  & -7.18524e-01 & -3.64042e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/6/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/6/BMatrix.txt
deleted file mode 100644
index fa861cb33cf03fd8208fde7ece1f14b3f08f9556..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.14205856116698445
-1 2 -0.772209514335703617
-1 3 -2.24064806627448823e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/6/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/6/QMatrix.txt
deleted file mode 100644
index 46f45c98366cab20fdcf398eefe627f737a9c088..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 355.884063208915393
-1 2 42.4091720984219052
-1 3 1.16018019849887088e-29
-2 1 42.4091720984202141
-2 2 787.952048308325288
-2 3 -1.61134854727102475e-29
-3 1 -2.92480416439338895e-28
-3 2 -8.72219224656324881e-29
-3 3 223.851414869513405
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/6/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/6/parameter.txt
deleted file mode 100644
index ffb14c1a55fe9061a7a309f7af461af58cccba44..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.17
-h = 0.0049
-omega_flat = 17.28772791
-omega_target = 9.101671742
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_1/6/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_1/6/wood_european_beech_log.txt
deleted file mode 100644
index 2179fd47db4b7f8eb67b1c4b5a34eaa0b0de128f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_1/6/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.214725 0 0
-0 0.0106097 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0104293 0 0
-0 0.0717205 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.39357e-31 -2.338e-19 0
--2.338e-19 -2.01766e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-355.884 42.4092 1.16018e-29
-42.4092 787.952 -1.61135e-29
--2.9248e-28 -8.72219e-29 223.851
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1441.34 -432.803 -6.15984e-27
-Beff_: 4.14206 -0.77221 -2.24065e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=355.884
-q2=787.952
-q3=223.851
-q12=42.4092
-q13=1.16018e-29
-q23=-1.61135e-29
-q_onetwo=42.409172
-b1=4.142059
-b2=-0.772210
-b3=-0.000000
-mu_gamma=223.851415
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.55884e+02  & 7.87952e+02  & 2.23851e+02  & 4.24092e+01  & 1.16018e-29  & -1.61135e-29 & 4.14206e+00  & -7.72210e-01 & -2.24065e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/0/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/0/BMatrix.txt
deleted file mode 100644
index 61d6ab546848473f72ea90896e5693793d75f655..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.21307686572728635
-1 2 -0.295167273983245715
-1 3 9.93151852571420649e-31
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/0/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/0/QMatrix.txt
deleted file mode 100644
index 611f3f1716f7bfc37c3867bd045fa094862fb469..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 305.333970272295403
-1 2 26.280029011200611
-1 3 -3.74061817518666496e-29
-2 1 26.2800290111988346
-2 2 589.543718551700977
-2 3 -1.69867021094954202e-31
-3 1 2.8924560814186473e-29
-3 2 1.07299643213611696e-31
-3 3 209.544838005396343
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/0/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/0/parameter.txt
deleted file mode 100644
index ee7ee08fcca4bcbcac93d88a2edf8ee1497033da..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 14.72680026
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/0/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/0/wood_european_beech_log.txt
deleted file mode 100644
index 239685d24d33e5c150b4de5b2a9681ff78666547..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/0/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.234702 2.7313e-30 0
-2.7313e-30 0.00973024 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00954138 4.80797e-31 0
-4.80797e-31 0.0977184 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.76617e-32 -7.86751e-18 0
--7.86751e-18 3.39807e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-305.334 26.28 -3.74062e-29
-26.28 589.544 -1.69867e-31
-2.89246e-29 1.073e-31 209.545
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 362.637 -142.134 2.43166e-28
-Beff_: 1.21308 -0.295167 9.93152e-31 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=305.334
-q2=589.544
-q3=209.545
-q12=26.28
-q13=-3.74062e-29
-q23=-1.69867e-31
-q_onetwo=26.280029
-b1=1.213077
-b2=-0.295167
-b3=0.000000
-mu_gamma=209.544838
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.05334e+02  & 5.89544e+02  & 2.09545e+02  & 2.62800e+01  & -3.74062e-29 & -1.69867e-31 & 1.21308e+00  & -2.95167e-01 & 9.93152e-31  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/1/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/1/BMatrix.txt
deleted file mode 100644
index b27ac9109230e0ff4122bd65cea10b60c94b1073..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.74721683094474689
-1 2 -0.431854985698120308
-1 3 -5.84630560666126324e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/1/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/1/QMatrix.txt
deleted file mode 100644
index fbda5fc359f97b1c0eb6dc0efed2f1cddad73e7b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 315.986734638774749
-1 2 28.4165214680945937
-1 3 1.32658054569392806e-30
-2 1 28.4165214680950413
-2 2 605.235748478189748
-2 3 4.68809867062740951e-30
-3 1 -1.51932315987481074e-28
-3 2 -2.05530334109993845e-29
-3 3 212.300314307290364
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/1/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/1/parameter.txt
deleted file mode 100644
index 23cacfffe7ac1743e8de3970520ef790b1d315ab..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 13.64338887
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/1/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/1/wood_european_beech_log.txt
deleted file mode 100644
index 1145352d652c0926571c2539622be70255a17a95..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/1/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.233284 9.69058e-30 0
-9.69058e-30 0.0101698 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.00999254 1.11162e-30 0
-1.11162e-30 0.0974998 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--7.56699e-32 -3.01988e-18 0
--3.01988e-18 -1.36803e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-315.987 28.4165 1.32658e-30
-28.4165 605.236 4.6881e-30
--1.51932e-28 -2.0553e-29 212.3
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 539.826 -211.724 -1.49776e-27
-Beff_: 1.74722 -0.431855 -5.84631e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=315.987
-q2=605.236
-q3=212.3
-q12=28.4165
-q13=1.32658e-30
-q23=4.6881e-30
-q_onetwo=28.416521
-b1=1.747217
-b2=-0.431855
-b3=-0.000000
-mu_gamma=212.300314
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.15987e+02  & 6.05236e+02  & 2.12300e+02  & 2.84165e+01  & 1.32658e-30  & 4.68810e-30  & 1.74722e+00  & -4.31855e-01 & -5.84631e-30 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/2/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/2/BMatrix.txt
deleted file mode 100644
index 82712b2d6b47b5d07f5973ce3e1db1a3c438ba28..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.35190162820338777
-1 2 -0.591227643058709118
-1 3 4.38024227344357821e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/2/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/2/QMatrix.txt
deleted file mode 100644
index 58aa21077b08d0cdce72f97be11d3721334c4689..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 328.085006014902774
-1 2 30.9488820417910553
-1 3 -4.35568316222617261e-30
-2 1 30.9488820417903092
-2 2 623.10614499795588
-2 3 4.60451331104100348e-30
-3 1 7.43002619664811867e-28
-3 2 6.39535455360702413e-29
-3 3 215.429464009525645
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/2/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/2/parameter.txt
deleted file mode 100644
index 1b0b796f34fbcecdcb056432bd2b48af88d3876a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 12.41305478
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/2/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/2/wood_european_beech_log.txt
deleted file mode 100644
index b46ce23e7e3e114a72daa39735e0a4cdbedcd35b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/2/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.231775 0 0
-0 0.0106703 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0105059 0 0
-0 0.0972686 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-3.99152e-31 -2.4294e-19 0
--2.4294e-19 7.87597e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-328.085 30.9489 -4.35568e-30
-30.9489 623.106 4.60451e-30
-7.43003e-28 6.39535e-29 215.429
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 753.326 -295.609 1.1146e-26
-Beff_: 2.3519 -0.591228 4.38024e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=328.085
-q2=623.106
-q3=215.429
-q12=30.9489
-q13=-4.35568e-30
-q23=4.60451e-30
-q_onetwo=30.948882
-b1=2.351902
-b2=-0.591228
-b3=0.000000
-mu_gamma=215.429464
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.28085e+02  & 6.23106e+02  & 2.15429e+02  & 3.09489e+01  & -4.35568e-30 & 4.60451e-30  & 2.35190e+00  & -5.91228e-01 & 4.38024e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/3/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/3/BMatrix.txt
deleted file mode 100644
index 253485faeba3ed1031a9d2f869bde4cf0af17e5e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.71866845877622554
-1 2 -0.690194332731962734
-1 3 -2.08049887556767705e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/3/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/3/QMatrix.txt
deleted file mode 100644
index d9e7197922b55ba9f09d23b48fc07d4b372362d2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 335.44443009692975
-1 2 32.5443746778594871
-1 3 -2.06074504049434236e-29
-2 1 32.5443746778596577
-2 2 634.001301001279444
-2 3 -2.59461282107848414e-30
-3 1 -1.62487302355124666e-29
-3 2 4.82491991388277131e-30
-3 3 217.332450788238617
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/3/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/3/parameter.txt
deleted file mode 100644
index 3ab41d62a901caa341c63e0f671904b3fff6ca30..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 11.66482931
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/3/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/3/wood_european_beech_log.txt
deleted file mode 100644
index 093e4a03d6f0b72a45954bbaa082edc44006ace0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/3/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.230907 0 0
-0 0.0109753 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0108185 0 0
-0 0.0971364 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.47517e-32 -3.31117e-19 0
--3.31117e-19 -3.24018e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-335.444 32.5444 -2.06075e-29
-32.5444 634.001 -2.59461e-30
--1.62487e-29 4.82492e-30 217.332
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 889.5 -349.107 -4.99665e-28
-Beff_: 2.71867 -0.690194 -2.0805e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=335.444
-q2=634.001
-q3=217.332
-q12=32.5444
-q13=-2.06075e-29
-q23=-2.59461e-30
-q_onetwo=32.544375
-b1=2.718668
-b2=-0.690194
-b3=-0.000000
-mu_gamma=217.332451
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.35444e+02  & 6.34001e+02  & 2.17332e+02  & 3.25444e+01  & -2.06075e-29 & -2.59461e-30 & 2.71867e+00  & -6.90194e-01 & -2.08050e-30 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/4/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/4/BMatrix.txt
deleted file mode 100644
index 482e2c2a77fcabaa54eca178a97c739a8e4c1705..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.9961249524663085
-1 2 -0.766178724462287963
-1 3 2.02452020099075162e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/4/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/4/QMatrix.txt
deleted file mode 100644
index 809c0b2bff057ee7879388decdf5030252bde973..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 341.023009642631223
-1 2 33.781494341820931
-1 3 6.83445129714976451e-30
-2 1 33.7814943418196947
-2 2 642.272014006948893
-2 3 1.33235833552708976e-29
-3 1 4.31449620244680706e-28
-3 2 1.31969118789025237e-28
-3 3 218.77455792090413
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/4/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/4/parameter.txt
deleted file mode 100644
index 391a2bf4441d18b9c73c1769757935cd7b532d0d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 11.09781471
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/4/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/4/wood_european_beech_log.txt
deleted file mode 100644
index a86495ab512d0d7d3ba6d8ae5f5b0ca84b91442a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/4/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.230273 0 0
-0 0.0112068 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0110557 0 0
-0 0.0970403 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.65521e-31 9.24008e-18 0
-9.24008e-18 2.63001e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-341.023 33.7815 6.83445e-30
-33.7815 642.272 1.33236e-29
-4.3145e-28 1.31969e-28 218.775
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 995.865 -390.882 5.6207e-27
-Beff_: 2.99612 -0.766179 2.02452e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=341.023
-q2=642.272
-q3=218.775
-q12=33.7815
-q13=6.83445e-30
-q23=1.33236e-29
-q_onetwo=33.781494
-b1=2.996125
-b2=-0.766179
-b3=0.000000
-mu_gamma=218.774558
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.41023e+02  & 6.42272e+02  & 2.18775e+02  & 3.37815e+01  & 6.83445e-30  & 1.33236e-29  & 2.99612e+00  & -7.66179e-01 & 2.02452e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/5/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/5/BMatrix.txt
deleted file mode 100644
index b25bfb12028de7d2d3e09eebffe079b5e27ef270..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.80702510779013625
-1 2 -0.99356874581675747
-1 3 4.17782921610859132e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/5/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/5/QMatrix.txt
deleted file mode 100644
index cc9c32f26654e2219ccf440aac91b840a59236c9..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 357.385455166212182
-1 2 37.5476183903305625
-1 3 1.19338323074010682e-28
-2 1 37.547618390329994
-2 2 666.588358047611791
-2 3 -1.73951918506999529e-29
-3 1 5.50300887202620269e-28
-3 2 1.09745228114263782e-28
-3 3 223.001625544819092
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/5/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/5/parameter.txt
deleted file mode 100644
index 861b07bc1e875136fb5095ba4ff5be4e8a86befe..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 9.435795985
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/5/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/5/wood_european_beech_log.txt
deleted file mode 100644
index 24fff293a64462021f90580e0d34ce77760bf31f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/5/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.228524 0 0
-0 0.0118871 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0117522 0 0
-0 0.0967777 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.36843e-31 -3.93107e-18 0
--3.93107e-18 4.84859e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-357.385 37.5476 1.19338e-28
-37.5476 666.588 -1.73952e-29
-5.50301e-28 1.09745e-28 223.002
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1323.27 -519.357 1.13026e-26
-Beff_: 3.80703 -0.993569 4.17783e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=357.385
-q2=666.588
-q3=223.002
-q12=37.5476
-q13=1.19338e-28
-q23=-1.73952e-29
-q_onetwo=37.547618
-b1=3.807025
-b2=-0.993569
-b3=0.000000
-mu_gamma=223.001626
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.57385e+02  & 6.66588e+02  & 2.23002e+02  & 3.75476e+01  & 1.19338e-28  & -1.73952e-29 & 3.80703e+00  & -9.93569e-01 & 4.17783e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/6/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/6/BMatrix.txt
deleted file mode 100644
index be8657c5a7c7ec0fdcf0db4b7caa753e557a9c73..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 4.03873445069710524
-1 2 -1.05995320800370529
-1 3 1.36076669459033724e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/6/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/6/QMatrix.txt
deleted file mode 100644
index 655f1ff64c6cb9651d8618f4c60a9a720c897fe2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 362.077597710087787
-1 2 38.6653780788820356
-1 3 7.65965450042136346e-29
-2 1 38.6653780788812682
-2 2 673.576799924798138
-2 3 2.35949529346769039e-29
-3 1 1.91929433331978192e-28
-3 2 5.49556981433154364e-29
-3 3 224.212841852790206
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/6/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/6/parameter.txt
deleted file mode 100644
index 4dc714627ad1059b77194447695b20aaa3a0c7c6..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.22
-h = 0.0053
-omega_flat = 17.17547062
-omega_target = 8.959564147
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_2/6/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_2/6/wood_european_beech_log.txt
deleted file mode 100644
index 23e4ac9988a480ac380211e83f971bdf72e55340..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_2/6/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.228051 8.83488e-30 0
-8.83488e-30 0.0120825 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0119521 2.30937e-30 0
-2.30937e-30 0.0967075 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-7.67493e-32 8.75336e-20 0
-8.75336e-20 1.40158e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-362.078 38.6654 7.65965e-29
-38.6654 673.577 2.3595e-29
-1.91929e-28 5.49557e-29 224.213
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1421.35 -557.801 3.76792e-27
-Beff_: 4.03873 -1.05995 1.36077e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=362.078
-q2=673.577
-q3=224.213
-q12=38.6654
-q13=7.65965e-29
-q23=2.3595e-29
-q_onetwo=38.665378
-b1=4.038734
-b2=-1.059953
-b3=0.000000
-mu_gamma=224.212842
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.62078e+02  & 6.73577e+02  & 2.24213e+02  & 3.86654e+01  & 7.65965e-29  & 2.35950e-29  & 4.03873e+00  & -1.05995e+00 & 1.36077e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/0/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/0/BMatrix.txt
deleted file mode 100644
index 5975624257523d290a4cdf64017543d968dfda4f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 0.888018894288113203
-1 2 -0.363071170868670634
-1 3 -6.8393725826953037e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/0/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/0/QMatrix.txt
deleted file mode 100644
index 5f2dce579015187f26e09b702421e55ee6b4700c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 303.750850362798019
-1 2 22.2901008761475694
-1 3 -5.33097408606386884e-29
-2 1 22.2901008761482515
-2 2 461.524556065935087
-2 3 9.07883375784142981e-31
-3 1 -2.66640803580283758e-28
-3 2 3.57211764959721557e-29
-3 3 208.891179720402704
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/0/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/0/parameter.txt
deleted file mode 100644
index 2bbd2fe2c4362735dafe912c705b19c7bba9c3a7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.14061081
-omega_target = 14.98380876
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/0/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/0/wood_european_beech_log.txt
deleted file mode 100644
index 9926aef480c9c69e9d498cfd7f3ee6580b16640d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/0/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.231779 0 0
-0 0.0105971 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0104946 0 0
-0 0.135415 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.17439e-31 5.38669e-18 0
-5.38669e-18 -4.27837e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-303.751 22.2901 -5.33097e-29
-22.2901 461.525 9.07883e-31
--2.66641e-28 3.57212e-29 208.891
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 261.644 -147.772 -1.67844e-27
-Beff_: 0.888019 -0.363071 -6.83937e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=303.751
-q2=461.525
-q3=208.891
-q12=22.2901
-q13=-5.33097e-29
-q23=9.07883e-31
-q_onetwo=22.290101
-b1=0.888019
-b2=-0.363071
-b3=-0.000000
-mu_gamma=208.891180
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.03751e+02  & 4.61525e+02  & 2.08891e+02  & 2.22901e+01  & -5.33097e-29 & 9.07883e-31  & 8.88019e-01  & -3.63071e-01 & -6.83937e-30 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/1/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/1/BMatrix.txt
deleted file mode 100644
index 6e3917e83769661595e63f238cdd7d90aa75424e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.30508274038096705
-1 2 -0.538889045251408572
-1 3 -1.51367430075867004e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/1/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/1/QMatrix.txt
deleted file mode 100644
index 716636d4afa159e954eebc7faeb369d6766ccab2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 313.675435374170945
-1 2 24.020025141600911
-1 3 2.54407641933776307e-29
-2 1 24.0200251416029893
-2 2 473.811929529085603
-2 3 5.95921243392298518e-30
-3 1 -7.28007590171598279e-29
-3 2 -2.4535429994642681e-29
-3 3 211.465693328505836
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/1/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/1/parameter.txt
deleted file mode 100644
index a5ae665d6a39cc9cd835ff01d7dc5d75cd84acbd..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.14061081
-omega_target = 13.97154915
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/1/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/1/wood_european_beech_log.txt
deleted file mode 100644
index b06fdf82e687f03805c8d572f48d297e0cf24a6e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/1/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.23073 4.76847e-30 0
-4.76847e-30 0.0110612 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0109644 5.28137e-31 0
-5.28137e-31 0.135078 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--2.46557e-32 -3.09367e-18 0
--3.09367e-18 -3.53433e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-313.675 24.02 2.54408e-29
-24.02 473.812 5.95921e-30
--7.28008e-29 -2.45354e-29 211.466
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 396.428 -223.984 -4.01879e-28
-Beff_: 1.30508 -0.538889 -1.51367e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=313.675
-q2=473.812
-q3=211.466
-q12=24.02
-q13=2.54408e-29
-q23=5.95921e-30
-q_onetwo=24.020025
-b1=1.305083
-b2=-0.538889
-b3=-0.000000
-mu_gamma=211.465693
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.13675e+02  & 4.73812e+02  & 2.11466e+02  & 2.40200e+01  & 2.54408e-29  & 5.95921e-30  & 1.30508e+00  & -5.38889e-01 & -1.51367e-30 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/2/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/2/BMatrix.txt
deleted file mode 100644
index 76a2d8bb2756a6dae3c275afa2088a259e2c6911..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.79892448477151423
-1 2 -0.751085958674864496
-1 3 1.01442609214623335e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/2/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/2/QMatrix.txt
deleted file mode 100644
index ae38f6adc223678f0cab5728d05978a9b984c23e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 325.429115093306848
-1 2 26.1565314786407512
-1 3 -2.34655304424140816e-30
-2 1 26.1565314786419343
-2 2 488.391939970416161
-2 3 1.20332102925314496e-30
-3 1 2.68140351019715306e-28
-3 2 3.13149909473036588e-29
-3 3 214.513767998696522
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/2/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/2/parameter.txt
deleted file mode 100644
index 9c040f67472caf2803ca81b355822d38d96134de..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.14061081
-omega_target = 12.77309253
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/2/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/2/wood_european_beech_log.txt
deleted file mode 100644
index 9ad5c49ccd7b4a5e1abdfb198d69f1c45b025856..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/2/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.229562 0 0
-0 0.0116123 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0115222 0 0
-0 0.134705 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-9.59546e-32 -1.13449e-17 0
--1.13449e-17 2.77514e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-325.429 26.1565 -2.34655e-30
-26.1565 488.392 1.20332e-30
-2.6814e-28 3.1315e-29 214.514
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 565.777 -319.771 2.63493e-27
-Beff_: 1.79892 -0.751086 1.01443e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=325.429
-q2=488.392
-q3=214.514
-q12=26.1565
-q13=-2.34655e-30
-q23=1.20332e-30
-q_onetwo=26.156531
-b1=1.798924
-b2=-0.751086
-b3=0.000000
-mu_gamma=214.513768
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.25429e+02  & 4.88392e+02  & 2.14514e+02  & 2.61565e+01  & -2.34655e-30 & 1.20332e-30  & 1.79892e+00  & -7.51086e-01 & 1.01443e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/3/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/3/BMatrix.txt
deleted file mode 100644
index 57869a01ede1f26f105466559d5f9d6a7dd155a8..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.11351306952047935
-1 2 -0.888405173079592658
-1 3 1.27346347145998165e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/3/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/3/QMatrix.txt
deleted file mode 100644
index cfecff5418397025001ab7c0646b8e1c396379b1..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 332.92013010337962
-1 2 27.5678040586021424
-1 3 -2.57735648877677451e-29
-2 1 27.5678040586032189
-2 2 497.699616739978637
-2 3 -4.68078013683873802e-30
-3 1 2.0332860867890775e-28
-3 2 -5.94813750941514078e-29
-3 3 216.455585805768351
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/3/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/3/parameter.txt
deleted file mode 100644
index 63062a787f7fc26cf1e771e4083314a1625cc4c7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.14061081
-omega_target = 12.00959929
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/3/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/3/wood_european_beech_log.txt
deleted file mode 100644
index 9ce87f94c4598cff0873aaae538c507c0b139a77..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/3/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.228857 0 0
-0 0.0119644 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0118784 0 0
-0 0.13448 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-8.21459e-32 -4.23129e-19 0
--4.23129e-19 3.87368e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-332.92 27.5678 -2.57736e-29
-27.5678 497.7 -4.68078e-30
-2.03329e-28 -5.94814e-29 216.456
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 679.14 -383.894 3.23906e-27
-Beff_: 2.11351 -0.888405 1.27346e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=332.92
-q2=497.7
-q3=216.456
-q12=27.5678
-q13=-2.57736e-29
-q23=-4.68078e-30
-q_onetwo=27.567804
-b1=2.113513
-b2=-0.888405
-b3=0.000000
-mu_gamma=216.455586
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.32920e+02  & 4.97700e+02  & 2.16456e+02  & 2.75678e+01  & -2.57736e-29 & -4.68078e-30 & 2.11351e+00  & -8.88405e-01 & 1.27346e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/4/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/4/BMatrix.txt
deleted file mode 100644
index 13370ca94877308c0c0510c005f7ca0528ef863e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.3564106106421594
-1 2 -0.995521307111207787
-1 3 -2.12264293066437136e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/4/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/4/QMatrix.txt
deleted file mode 100644
index 1523c4900e69d37adfea019d45aa3dcec6d83112..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 338.707013847318535
-1 2 28.6844379761628403
-1 3 -1.57833810802422753e-29
-2 1 28.6844379761595007
-2 2 504.897845624664797
-2 3 -5.67764147605357129e-31
-3 1 -2.95919385724138452e-28
-3 2 2.78381721795209232e-29
-3 3 217.955089308235671
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/4/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/4/parameter.txt
deleted file mode 100644
index e8cb7a45c217a7bb28edc05d138cc423e8d1adcf..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.14061081
-omega_target = 11.42001731
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/4/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/4/wood_european_beech_log.txt
deleted file mode 100644
index 91c1a8c8b4d661efdf67628071f35a2b820cb63b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/4/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.228333 0 0
-0 0.0122367 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0121538 0 0
-0 0.134314 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.37125e-31 -6.12318e-18 0
--6.12318e-18 -4.75814e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-338.707 28.6844 -1.57834e-29
-28.6844 504.898 -5.67764e-31
--2.95919e-28 2.78382e-29 217.955
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 769.577 -435.044 -5.35143e-27
-Beff_: 2.35641 -0.995521 -2.12264e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=338.707
-q2=504.898
-q3=217.955
-q12=28.6844
-q13=-1.57834e-29
-q23=-5.67764e-31
-q_onetwo=28.684438
-b1=2.356411
-b2=-0.995521
-b3=-0.000000
-mu_gamma=217.955089
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.38707e+02  & 5.04898e+02  & 2.17955e+02  & 2.86844e+01  & -1.57834e-29 & -5.67764e-31 & 2.35641e+00  & -9.95521e-01 & -2.12264e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/5/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/5/BMatrix.txt
deleted file mode 100644
index baed026d232ba9bfe5c71063ab41e14520e51d8a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.12178458865361863
-1 2 -1.33892605865016301
-1 3 -2.0384347807883082e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/5/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/5/QMatrix.txt
deleted file mode 100644
index 9566ac548eaf3de462fcba748c13eb5c68adf54e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 356.965337739626762
-1 2 32.358214893228201
-1 3 3.64786538906497568e-29
-2 1 32.3582148932296008
-2 2 527.65317561488132
-2 3 1.20713437054303169e-29
-3 1 -3.64801232397803751e-28
-3 2 -7.50719002137871569e-29
-3 3 222.682052674732489
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/5/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/5/parameter.txt
deleted file mode 100644
index 8b245b8da67121dc4d1cfec47ff8b843887ec54b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.14061081
-omega_target = 9.561447179
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/5/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/5/wood_european_beech_log.txt
deleted file mode 100644
index adb0eb4917eb0b4f1f600a8960ab7d716dc19bc3..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/5/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.226784 0 0
-0 0.0130978 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0130246 0 0
-0 0.133824 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.13515e-31 -1.02825e-18 0
--1.02825e-18 -3.19398e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-356.965 32.3582 3.64787e-29
-32.3582 527.653 1.20713e-29
--3.64801e-28 -7.50719e-29 222.682
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1071.04 -605.473 -5.57754e-27
-Beff_: 3.12178 -1.33893 -2.03843e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=356.965
-q2=527.653
-q3=222.682
-q12=32.3582
-q13=3.64787e-29
-q23=1.20713e-29
-q_onetwo=32.358215
-b1=3.121785
-b2=-1.338926
-b3=-0.000000
-mu_gamma=222.682053
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.56965e+02  & 5.27653e+02  & 2.22682e+02  & 3.23582e+01  & 3.64787e-29  & 1.20713e-29  & 3.12178e+00  & -1.33893e+00 & -2.03843e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/6/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/6/BMatrix.txt
deleted file mode 100644
index 858649a03b6a27bf2ec88ce309d84b3e4974810a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 3.36738648827831799
-1 2 -1.45092034536636327
-1 3 -1.07391758819950018e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/6/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/6/QMatrix.txt
deleted file mode 100644
index 9ab41623803ce00c1faf628ace7895134e488307..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 362.833829920313804
-1 2 33.5875215742998847
-1 3 4.7676780959294901e-29
-2 1 33.5875215743010713
-2 2 534.980886738369691
-2 3 3.85494137668549128e-30
-3 1 -1.13869304902897546e-28
-3 2 7.24868712730886917e-30
-3 3 224.199767028830422
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/6/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/6/parameter.txt
deleted file mode 100644
index ca8d7ec33acd010f4ca19579d432cd3ad586d9d1..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.34
-h = 0.0063
-omega_flat = 17.14061081
-omega_target = 8.964704969
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_3/6/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_3/6/wood_european_beech_log.txt
deleted file mode 100644
index 888c505aac624ccdf71d7f8678163256711c7773..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_3/6/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.226319 0 0
-0 0.0133752 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.013305 0 0
-0 0.133678 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--4.73317e-32 6.06935e-18 0
-6.06935e-18 -1.78063e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-362.834 33.5875 4.76768e-29
-33.5875 534.981 3.85494e-30
--1.13869e-28 7.24869e-30 224.2
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 1173.07 -663.112 -2.80168e-27
-Beff_: 3.36739 -1.45092 -1.07392e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=362.834
-q2=534.981
-q3=224.2
-q12=33.5875
-q13=4.76768e-29
-q23=3.85494e-30
-q_onetwo=33.587522
-b1=3.367386
-b2=-1.450920
-b3=-0.000000
-mu_gamma=224.199767
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.62834e+02  & 5.34981e+02  & 2.24200e+02  & 3.35875e+01  & 4.76768e-29  & 3.85494e-30  & 3.36739e+00  & -1.45092e+00 & -1.07392e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/0/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/0/BMatrix.txt
deleted file mode 100644
index 8f40abe6c5826721cd6107196ca8ca42a2383138..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 0.629334607532929691
-1 2 -0.413228766006793202
-1 3 -6.54889290933756321e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/0/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/0/QMatrix.txt
deleted file mode 100644
index 3f1abb9def5f57ff965d3cfb05c0caba17cf7590..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 312.84066156510022
-1 2 20.1442519996664871
-1 3 -3.86603473316516176e-29
-2 1 20.1442519996660145
-2 2 381.577433311366065
-2 3 -1.56847734670896488e-30
-3 1 -2.61950844478257189e-28
-3 2 8.13012202048741462e-29
-3 3 208.562187778097865
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/0/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/0/parameter.txt
deleted file mode 100644
index eeb849b30c553b5d422fd328cdc52ff1a2cb9d3b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.07559686
-omega_target = 15.11316339
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/0/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/0/wood_european_beech_log.txt
deleted file mode 100644
index b4ba1730bca6193f9a72e691a6f366d9c46d1780..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/0/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.214951 -4.39831e-34 0
--4.39831e-34 0.0109616 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0109105 7.68912e-33 0
-7.68912e-33 0.167779 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--1.10851e-31 1.20451e-17 0
-1.20451e-17 -6.1768e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-312.841 20.1443 -3.86603e-29
-20.1443 381.577 -1.56848e-30
--2.61951e-28 8.13012e-29 208.562
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 188.557 -145.001 -1.5643e-27
-Beff_: 0.629335 -0.413229 -6.54889e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=312.841
-q2=381.577
-q3=208.562
-q12=20.1443
-q13=-3.86603e-29
-q23=-1.56848e-30
-q_onetwo=20.144252
-b1=0.629335
-b2=-0.413229
-b3=-0.000000
-mu_gamma=208.562188
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.12841e+02  & 3.81577e+02  & 2.08562e+02  & 2.01443e+01  & -3.86603e-29 & -1.56848e-30 & 6.29335e-01  & -4.13229e-01 & -6.54889e-30 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/1/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/1/BMatrix.txt
deleted file mode 100644
index 7889302eda9e328c724af1d4167ddc20a65be6d5..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 0.930568829859895752
-1 2 -0.613780762609916541
-1 3 5.36799267402824536e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/1/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/1/QMatrix.txt
deleted file mode 100644
index 2bf6643eb7bcd2c3a5660b22e930273c2340e83a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 322.002694849312206
-1 2 21.6038821691577247
-1 3 4.61144665884079753e-30
-2 1 21.6038821691562859
-2 2 391.625995128890054
-2 3 -2.83959111000454054e-30
-3 1 9.6934339262027579e-29
-3 2 -6.95957489636903426e-29
-3 3 210.935607547800174
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/1/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/1/parameter.txt
deleted file mode 100644
index 5540a8f8bba7b5972e6fd7bdd031236ddb6908dd..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.07559686
-omega_target = 14.17997082
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/1/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/1/wood_european_beech_log.txt
deleted file mode 100644
index 5cda8f5153c115b893b025dfe849698075d77869..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/1/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.214198 0 0
-0 0.0114122 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0113637 0 0
-0 0.167333 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-5.74701e-32 1.02348e-18 0
-1.02348e-18 3.533e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-322.003 21.6039 4.61145e-30
-21.6039 391.626 -2.83959e-30
-9.69343e-29 -6.95957e-29 210.936
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 286.386 -220.269 1.26522e-27
-Beff_: 0.930569 -0.613781 5.36799e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=322.003
-q2=391.626
-q3=210.936
-q12=21.6039
-q13=4.61145e-30
-q23=-2.83959e-30
-q_onetwo=21.603882
-b1=0.930569
-b2=-0.613781
-b3=0.000000
-mu_gamma=210.935608
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.22003e+02  & 3.91626e+02  & 2.10936e+02  & 2.16039e+01  & 4.61145e-30  & -2.83959e-30 & 9.30569e-01  & -6.13781e-01 & 5.36799e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/2/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/2/BMatrix.txt
deleted file mode 100644
index e47f7b8029cff8f18dfce3bfa25de6e903d89653..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.29434817154833848
-1 2 -0.858121606718679097
-1 3 4.59552118470703921e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/2/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/2/QMatrix.txt
deleted file mode 100644
index 618bb356e49323a9bb394b4f5efd803f33d99610..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 333.031417165489643
-1 2 23.4315932635608029
-1 3 2.3222092897443535e-29
-2 1 23.4315932635636557
-2 2 403.732812298977763
-2 3 2.47308664158764956e-30
-3 1 1.17707081570013008e-28
-3 2 -6.92749354405336637e-30
-3 3 213.790683300929572
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/2/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/2/parameter.txt
deleted file mode 100644
index 0502ee63b23145e6f367455c753d942f65608b11..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.07559686
-omega_target = 13.05739844
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/2/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/2/wood_european_beech_log.txt
deleted file mode 100644
index c0b182f029e108ad326feefd5efd293f43da53c5..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/2/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.213342 0 0
-0 0.011956 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0119106 0 0
-0 0.166826 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-4.07853e-32 -1.25461e-18 0
--1.25461e-18 1.95459e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-333.031 23.4316 2.32221e-29
-23.4316 403.733 2.47309e-30
-1.17707e-28 -6.92749e-30 213.791
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 410.951 -316.123 1.14078e-27
-Beff_: 1.29435 -0.858122 4.59552e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=333.031
-q2=403.733
-q3=213.791
-q12=23.4316
-q13=2.32221e-29
-q23=2.47309e-30
-q_onetwo=23.431593
-b1=1.294348
-b2=-0.858122
-b3=0.000000
-mu_gamma=213.790683
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.33031e+02  & 4.03733e+02  & 2.13791e+02  & 2.34316e+01  & 2.32221e-29  & 2.47309e-30  & 1.29435e+00  & -8.58122e-01 & 4.59552e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/3/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/3/BMatrix.txt
deleted file mode 100644
index 5193934400406562aa8ba93113178f7d1f1894e8..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.53304778949421516
-1 2 -1.01964423760620693
-1 3 1.18963511285505427e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/3/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/3/QMatrix.txt
deleted file mode 100644
index dbd6df0bba945718c4724535657a08aa43c570ee..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 340.250810371440707
-1 2 24.6697846682606716
-1 3 -5.01974380705089153e-29
-2 1 24.669784668261002
-2 2 411.664198549653975
-2 3 -1.77512962974171529e-30
-3 1 2.63133591347105406e-28
-3 2 -9.56099395610442216e-30
-3 3 215.658269117771624
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/3/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/3/parameter.txt
deleted file mode 100644
index cc114cdcbee67e72ce25863ab4c8d4b3cb004d4f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.07559686
-omega_target = 12.32309209
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/3/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/3/wood_european_beech_log.txt
deleted file mode 100644
index 4dae878763552007b78fd2e935e4def4a0ae21e2..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/3/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.21281 -2.66081e-30 0
--2.66081e-30 0.0123126 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0122692 2.37775e-31 0
-2.37775e-31 0.166512 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-8.8982e-32 1.06173e-17 0
-1.06173e-17 4.29173e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-340.251 24.6698 -5.01974e-29
-24.6698 411.664 -1.77513e-30
-2.63134e-28 -9.56099e-30 215.658
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 496.466 -381.931 2.97869e-27
-Beff_: 1.53305 -1.01964 1.18964e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=340.251
-q2=411.664
-q3=215.658
-q12=24.6698
-q13=-5.01974e-29
-q23=-1.77513e-30
-q_onetwo=24.669785
-b1=1.533048
-b2=-1.019644
-b3=0.000000
-mu_gamma=215.658269
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.40251e+02  & 4.11664e+02  & 2.15658e+02  & 2.46698e+01  & -5.01974e-29 & -1.77513e-30 & 1.53305e+00  & -1.01964e+00 & 1.18964e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/4/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/4/BMatrix.txt
deleted file mode 100644
index c9db3e03c9ad3b60bd8cacb8adb52355da0d504e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.72098482922552654
-1 2 -1.14744657779775872
-1 3 3.91825309510527099e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/4/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/4/QMatrix.txt
deleted file mode 100644
index ccea1bdd7273e9e9e9062263a6d35740211cd985..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 345.926976950185121
-1 2 25.6664796283641685
-1 3 2.08401027422254017e-29
-2 1 25.6664796283634722
-2 2 417.903558759234386
-2 3 -1.57155883461998446e-30
-3 1 4.44003335674174342e-28
-3 2 -2.59958830228052177e-28
-3 3 217.125790025531217
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/4/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/4/parameter.txt
deleted file mode 100644
index 432ce2be318a17bdc10e3fd17f599981c7fc0712..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.07559686
-omega_target = 11.74608518
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/4/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/4/wood_european_beech_log.txt
deleted file mode 100644
index bf6089333681bccd265676d7b911340fb01b02f7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/4/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.212406 0 0
-0 0.0125934 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0125515 0 0
-0 0.166273 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-2.2583e-31 -9.09933e-18 0
--9.09933e-18 1.43314e-31 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-345.927 25.6665 2.08401e-29
-25.6665 417.904 -1.57156e-30
-4.44003e-28 -2.59959e-28 217.126
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 565.884 -435.35 9.56995e-27
-Beff_: 1.72098 -1.14745 3.91825e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=345.927
-q2=417.904
-q3=217.126
-q12=25.6665
-q13=2.08401e-29
-q23=-1.57156e-30
-q_onetwo=25.666480
-b1=1.720985
-b2=-1.147447
-b3=0.000000
-mu_gamma=217.125790
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.45927e+02  & 4.17904e+02  & 2.17126e+02  & 2.56665e+01  & 2.08401e-29  & -1.57156e-30 & 1.72098e+00  & -1.14745e+00 & 3.91825e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/5/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/5/BMatrix.txt
deleted file mode 100644
index 674e2ddf1da6e148efe2eded2b80af0be11f209a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.35288504646399543
-1 2 -1.58094620095160066
-1 3 -1.45140493978968462e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/5/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/5/QMatrix.txt
deleted file mode 100644
index afbc9f1b09e7736bd78753ec6c9caa6c1931b8d7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 364.973667574458489
-1 2 29.1597737399917705
-1 3 2.48152221474406565e-29
-2 1 29.159773739991568
-2 2 438.861265726750389
-2 3 1.17705134481170306e-29
-3 1 -2.08570636398829079e-28
-3 2 8.41465803799723714e-30
-3 3 222.043866028139036
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/5/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/5/parameter.txt
deleted file mode 100644
index 4c4941fedec79ce486526cddfbd8a6d467e1ca0e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.07559686
-omega_target = 9.812372466
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/5/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/5/wood_european_beech_log.txt
deleted file mode 100644
index 054f8db86088c55ecaaaa67bb1c552734953c45c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/5/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.211143 -3.41888e-31 0
--3.41888e-31 0.0135375 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0135007 3.94723e-32 0
-3.94723e-32 0.165529 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--6.88618e-32 3.77125e-18 0
-3.77125e-18 -3.55924e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-364.974 29.1598 2.48152e-29
-29.1598 438.861 1.17705e-29
--2.08571e-28 8.41466e-30 222.044
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 812.641 -625.206 -3.7268e-27
-Beff_: 2.35289 -1.58095 -1.4514e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=364.974
-q2=438.861
-q3=222.044
-q12=29.1598
-q13=2.48152e-29
-q23=1.17705e-29
-q_onetwo=29.159774
-b1=2.352885
-b2=-1.580946
-b3=-0.000000
-mu_gamma=222.043866
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.64974e+02  & 4.38861e+02  & 2.22044e+02  & 2.91598e+01  & 2.48152e-29  & 1.17705e-29  & 2.35289e+00  & -1.58095e+00 & -1.45140e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/6/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/6/BMatrix.txt
deleted file mode 100644
index 15dbbfeae71d005fa53223fcff8f72785d66b053..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.58466945364569956
-1 2 -1.74132517676458631
-1 3 3.26160858382710013e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/6/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/6/QMatrix.txt
deleted file mode 100644
index 2d7c8ad2867e9b71a805f3dd67fe6a01586c3fa4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 371.949765502413925
-1 2 30.4964857903768802
-1 3 2.94466984777030813e-29
-2 1 30.4964857903752353
-2 2 446.545241351734717
-2 3 -7.35320052767046649e-30
-3 1 3.20809705973873481e-29
-3 2 -1.02525233530851167e-29
-3 3 223.84245697482865
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/6/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/6/parameter.txt
deleted file mode 100644
index e55a742522e93d4e884e8ccb19be9f57ed83ec5e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.43
-h = 0.0073
-omega_flat = 17.07559686
-omega_target = 9.10519385
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_4/6/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_4/6/wood_european_beech_log.txt
deleted file mode 100644
index d3fc190c554b76e56a608e5630e998fe11e23e4a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_4/6/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.210713 -2.01199e-30 0
--2.01199e-30 0.013884 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0138489 1.0203e-30 0
-1.0203e-30 0.165276 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.29985e-32 -1.01999e-17 0
--1.01999e-17 7.85856e-33 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-371.95 30.4965 2.94467e-29
-30.4965 446.545 -7.3532e-30
-3.2081e-29 -1.02525e-29 223.842
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 908.263 -698.757 8.30858e-28
-Beff_: 2.58467 -1.74133 3.26161e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=371.95
-q2=446.545
-q3=223.842
-q12=30.4965
-q13=2.94467e-29
-q23=-7.3532e-30
-q_onetwo=30.496486
-b1=2.584669
-b2=-1.741325
-b3=0.000000
-mu_gamma=223.842457
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.71950e+02  & 4.46545e+02  & 2.23842e+02  & 3.04965e+01  & 2.94467e-29  & -7.35320e-30 & 2.58467e+00  & -1.74133e+00 & 3.26161e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/0/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/0/BMatrix.txt
deleted file mode 100644
index 61bf4c02de7349b920df34927596b2ea8dc6d283..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/0/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 0.439924156703411118
-1 2 -0.401353478359851856
-1 3 -1.33917713774311741e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/0/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/0/QMatrix.txt
deleted file mode 100644
index 0573239c940e97e54ff7aea5abd7349a52dac632..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/0/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 328.656957590727984
-1 2 19.3307033947678626
-1 3 2.16486081328791633e-29
-2 1 19.3307033947683422
-2 2 343.27522247238096
-2 3 -9.07344115399714555e-30
-3 1 -1.1380929756198016e-28
-3 2 -1.41723767576839792e-29
-3 3 208.07137340394371
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/0/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/0/parameter.txt
deleted file mode 100644
index d0b8e76dd1b2ed8f051b6acb14c347d78a5c3428..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/0/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.01520754
-omega_target = 15.30614414
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/0/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/0/wood_european_beech_log.txt
deleted file mode 100644
index 4005139d3bf9a5ce1f2672a9e8f9e299d7a095b0..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/0/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.198603 0 0
-0 0.0109617 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0109478 0 0
-0 0.188228 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--3.06281e-32 -1.4463e-18 0
--1.4463e-18 -1.32067e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-328.657 19.3307 2.16486e-29
-19.3307 343.275 -9.07344e-30
--1.13809e-28 -1.41724e-29 208.071
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 136.826 -129.271 -3.23024e-28
-Beff_: 0.439924 -0.401353 -1.33918e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=328.657
-q2=343.275
-q3=208.071
-q12=19.3307
-q13=2.16486e-29
-q23=-9.07344e-30
-q_onetwo=19.330703
-b1=0.439924
-b2=-0.401353
-b3=-0.000000
-mu_gamma=208.071373
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.28657e+02  & 3.43275e+02  & 2.08071e+02  & 1.93307e+01  & 2.16486e-29  & -9.07344e-30 & 4.39924e-01  & -4.01353e-01 & -1.33918e-30 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/1/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/1/BMatrix.txt
deleted file mode 100644
index 9e9590303632ffce0ce014ddc566c70a36438144..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/1/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 0.650970125236008834
-1 2 -0.594416405999156905
-1 3 3.48694300476661071e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/1/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/1/QMatrix.txt
deleted file mode 100644
index aba9b1599f2fc6c95227fbd96ad9f91d0e0389fe..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/1/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 336.775668188409043
-1 2 20.5576645525588759
-1 3 1.12674605466430846e-29
-2 1 20.5576645525585455
-2 2 351.554256318237776
-2 3 7.74917172423648218e-30
-3 1 1.21263679753312909e-28
-3 2 -3.18041240931078951e-29
-3 3 210.135302315968403
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/1/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/1/parameter.txt
deleted file mode 100644
index b0d2c55fd2d771fe89952ee2a9d7950154e2f9b4..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/1/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.01520754
-omega_target = 14.49463867
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/1/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/1/wood_european_beech_log.txt
deleted file mode 100644
index f932bde557e428ab3df47b4d231c622f1a195b77..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/1/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.198056 0 0
-0 0.0113588 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0113456 0 0
-0 0.187739 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-4.43007e-32 7.09823e-18 0
-7.09823e-18 3.07893e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-336.776 20.5577 1.12675e-29
-20.5577 351.554 7.74917e-30
-1.21264e-28 -3.18041e-29 210.135
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 207.011 -195.587 8.30574e-28
-Beff_: 0.65097 -0.594416 3.48694e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=336.776
-q2=351.554
-q3=210.135
-q12=20.5577
-q13=1.12675e-29
-q23=7.74917e-30
-q_onetwo=20.557665
-b1=0.650970
-b2=-0.594416
-b3=0.000000
-mu_gamma=210.135302
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.36776e+02  & 3.51554e+02  & 2.10135e+02  & 2.05577e+01  & 1.12675e-29  & 7.74917e-30  & 6.50970e-01  & -5.94416e-01 & 3.48694e-30  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/2/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/2/BMatrix.txt
deleted file mode 100644
index 2d2ef9f9781cfd1c5eb667068cea04fc95ac037b..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/2/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 0.920172747390642365
-1 2 -0.841121624353958652
-1 3 1.18942225067663841e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/2/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/2/QMatrix.txt
deleted file mode 100644
index b81882e3e562c134c9c183d9430a76e42187d887..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/2/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 347.072689494949373
-1 2 22.1701727096316503
-1 3 2.62373288183761915e-29
-2 1 22.1701727096318493
-2 2 362.056508873997416
-2 3 3.94584527006056882e-30
-3 1 3.76458164879766929e-28
-3 2 -1.91446370346706928e-29
-3 3 212.750716895134673
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/2/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/2/parameter.txt
deleted file mode 100644
index 050ee47ec1030d87c9702622b517e8a1f97d9837..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/2/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.01520754
-omega_target = 13.46629742
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/2/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/2/wood_european_beech_log.txt
deleted file mode 100644
index 3949bbded0b8b0f0c282355bd0f530ef7271d90f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/2/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.197396 2.8545e-30 0
-2.8545e-30 0.0118635 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.011851 -3.30222e-31 0
--3.30222e-31 0.187151 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-1.14677e-31 4.82773e-18 0
-4.82773e-18 6.89019e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-347.073 22.1702 2.62373e-29
-22.1702 362.057 3.94585e-30
-3.76458e-28 -1.91446e-29 212.751
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 300.719 -284.133 2.89301e-27
-Beff_: 0.920173 -0.841122 1.18942e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=347.073
-q2=362.057
-q3=212.751
-q12=22.1702
-q13=2.62373e-29
-q23=3.94585e-30
-q_onetwo=22.170173
-b1=0.920173
-b2=-0.841122
-b3=0.000000
-mu_gamma=212.750717
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.47073e+02  & 3.62057e+02  & 2.12751e+02  & 2.21702e+01  & 2.62373e-29  & 3.94585e-30  & 9.20173e-01  & -8.41122e-01 & 1.18942e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/3/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/3/BMatrix.txt
deleted file mode 100644
index 8c520a8b7bb89acd1df77393bbf23e922adff722..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/3/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.09981717181125194
-1 2 -1.0060095222047456
-1 3 1.1129634830271552e-28
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/3/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/3/QMatrix.txt
deleted file mode 100644
index 5b9b5d35efc1ba760cd232593bad2d4619486769..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/3/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 353.912010679764023
-1 2 23.2759790076002773
-1 3 1.64459009811114844e-29
-2 1 23.2759790075993571
-2 2 369.033280851314771
-2 3 -8.32540996359714315e-30
-3 1 2.33091146878111801e-27
-3 2 -6.01444150150604479e-28
-3 3 214.486325915278201
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/3/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/3/parameter.txt
deleted file mode 100644
index 92eb0b4bac35f2decac8339fa42884e36b31dd84..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/3/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.01520754
-omega_target = 12.78388234
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/3/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/3/wood_european_beech_log.txt
deleted file mode 100644
index cb723bea063bdf42de3ca636cc48e103eda4dc53..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/3/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.196979 -7.05512e-31 0
--7.05512e-31 0.0121993 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0121873 5.01799e-31 0
-5.01799e-31 0.186778 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-8.3234e-31 -8.23528e-18 0
--8.23528e-18 5.91048e-31 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-353.912 23.276 1.64459e-29
-23.276 369.033 -8.32541e-30
-2.33091e-27 -6.01444e-28 214.486
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 365.823 -345.652 2.70402e-26
-Beff_: 1.09982 -1.00601 1.11296e-28 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=353.912
-q2=369.033
-q3=214.486
-q12=23.276
-q13=1.64459e-29
-q23=-8.32541e-30
-q_onetwo=23.275979
-b1=1.099817
-b2=-1.006010
-b3=0.000000
-mu_gamma=214.486326
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.53912e+02  & 3.69033e+02  & 2.14486e+02  & 2.32760e+01  & 1.64459e-29  & -8.32541e-30 & 1.09982e+00  & -1.00601e+00 & 1.11296e-28  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/4/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/4/BMatrix.txt
deleted file mode 100644
index c4f90cafe0b44639789f26859db0bee5b1c4d125..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/4/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.24601613780542619
-1 2 -1.14034184949737205
-1 3 -5.56274868992305688e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/4/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/4/QMatrix.txt
deleted file mode 100644
index b89cf8ca6c6c10345c7bd3c2ae2be3a1fccc8cb7..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/4/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 359.461266865855634
-1 2 24.1935687071423047
-1 3 -1.79774004728882143e-29
-2 1 24.1935687071398782
-2 2 374.694710914329562
-2 3 -7.77266806955800646e-30
-3 1 -1.0385872795169322e-27
-3 2 2.48082284039166116e-28
-3 3 215.893565448499913
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/4/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/4/parameter.txt
deleted file mode 100644
index de3cf45338146cc687c275e484e04203ac26b97c..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/4/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.01520754
-omega_target = 12.23057715
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/4/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/4/wood_european_beech_log.txt
deleted file mode 100644
index f1747012bca1b1a8f4361d297e94ed7f11bb258e..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/4/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.196652 0 0
-0 0.012472 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0124604 0 0
-0 0.186487 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--3.67324e-31 1.09088e-18 0
-1.09088e-18 -2.60864e-31 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-359.461 24.1936 -1.79774e-29
-24.1936 374.695 -7.77267e-30
--1.03859e-27 2.48082e-28 215.894
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 420.306 -397.134 -1.35866e-26
-Beff_: 1.24602 -1.14034 -5.56275e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=359.461
-q2=374.695
-q3=215.894
-q12=24.1936
-q13=-1.79774e-29
-q23=-7.77267e-30
-q_onetwo=24.193569
-b1=1.246016
-b2=-1.140342
-b3=-0.000000
-mu_gamma=215.893565
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.59461e+02  & 3.74695e+02  & 2.15894e+02  & 2.41936e+01  & -1.79774e-29 & -7.77267e-30 & 1.24602e+00  & -1.14034e+00 & -5.56275e-29 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/5/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/5/BMatrix.txt
deleted file mode 100644
index 15cb2b552a732fd65bdfbe2dca2f3a5487a2fd5a..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/5/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 1.78134022927832869
-1 2 -1.63322079509065432
-1 3 -9.22326172522742552e-30
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/5/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/5/QMatrix.txt
deleted file mode 100644
index 99bb345dd7509905e9e8d47874dea6d6c105833d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/5/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 379.673394129127701
-1 2 27.6895846892567299
-1 3 -1.86283647940911001e-29
-2 1 27.6895846892586732
-2 2 395.32017570776992
-2 3 6.30472426594605529e-30
-3 1 -1.12615676524030904e-28
-3 2 4.01302962758947862e-29
-3 3 221.010876128094736
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/5/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/5/parameter.txt
deleted file mode 100644
index 8bb31a3266867396524dcaa72685b079b930087d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/5/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.01520754
-omega_target = 10.21852839
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/5/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/5/wood_european_beech_log.txt
deleted file mode 100644
index ffb48f4e262c769fba10166a4ce9b6ce9dbb39fc..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/5/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.195543 0 0
-0 0.0134673 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0134571 0 0
-0 0.185497 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
--4.0418e-32 9.62019e-18 0
-9.62019e-18 -3.27252e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-379.673 27.6896 -1.86284e-29
-27.6896 395.32 6.30472e-30
--1.12616e-28 4.01303e-29 221.011
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 631.104 -596.321 -2.30459e-27
-Beff_: 1.78134 -1.63322 -9.22326e-30 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=379.673
-q2=395.32
-q3=221.011
-q12=27.6896
-q13=-1.86284e-29
-q23=6.30472e-30
-q_onetwo=27.689585
-b1=1.781340
-b2=-1.633221
-b3=-0.000000
-mu_gamma=221.010876
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.79673e+02  & 3.95320e+02  & 2.21011e+02  & 2.76896e+01  & -1.86284e-29 & 6.30472e-30  & 1.78134e+00  & -1.63322e+00 & -9.22326e-30 & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/6/BMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/6/BMatrix.txt
deleted file mode 100644
index 60f803635315c5f708ac1c621cdf059635e2c93d..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/6/BMatrix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-1 1 2.01623688784649513
-1 2 -1.84995173859702033
-1 3 1.83523047826535922e-29
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/6/QMatrix.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/6/QMatrix.txt
deleted file mode 100644
index 8dcdbd2ade45a6ed89181f3c5b88afeceb681ddc..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/6/QMatrix.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-1 1 388.499002728981282
-1 2 29.2916250098108364
-1 3 -9.65584236917984567e-30
-2 1 29.2916250098084028
-2 2 404.328541633218379
-2 3 3.02563594263234753e-31
-3 1 3.47951730227354385e-28
-3 2 5.37822581451953635e-29
-3 3 223.240865161292078
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/6/parameter.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/6/parameter.txt
deleted file mode 100644
index d346b36383690b8262327fc2dfd64991e2c0af4f..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/6/parameter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-r = 0.49
-h = 0.008
-omega_flat = 17.01520754
-omega_target = 9.341730605
diff --git a/experiment/micro-problem/compWood/wood-bilayer/results_5/6/wood_european_beech_log.txt b/experiment/micro-problem/compWood/wood-bilayer/results_5/6/wood_european_beech_log.txt
deleted file mode 100644
index 3cc58b5d9fd9cddb87c0190dffa7e5baec8b7854..0000000000000000000000000000000000000000
--- a/experiment/micro-problem/compWood/wood-bilayer/results_5/6/wood_european_beech_log.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Number of Grid-Elements in each direction: [16,16,16]
-solveLinearSystems: We use UMFPACK solver.
-Solver-type used:  UMFPACK-Solver
----------- OUTPUT ----------
- --------------------
-Corrector-Matrix M_1: 
--0.195096 0 0
-0 0.0139027 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_2: 
--0.0138931 0 0
-0 0.185099 0
-0 0 0
-
- --------------------
-Corrector-Matrix M_3: 
-8.60627e-32 -1.35096e-17 0
--1.35096e-17 4.55113e-32 0
-0 0 0
-
- --------------------
---- Effective moduli --- 
-Qeff_: 
-388.499 29.2916 -9.65584e-30
-29.2916 404.329 3.02564e-31
-3.47952e-28 5.37823e-29 223.241
-
------------------------- 
---- Prestrain Output --- 
-Bhat_: 729.118 -688.929 4.69904e-27
-Beff_: 2.01624 -1.84995 1.83523e-29 (Effective Prestrain)
------------------------- 
-size of FiniteElementBasis: 13056
-q1=388.499
-q2=404.329
-q3=223.241
-q12=29.2916
-q13=-9.65584e-30
-q23=3.02564e-31
-q_onetwo=29.291625
-b1=2.016237
-b2=-1.849952
-b3=0.000000
-mu_gamma=223.240865
-------------------------------------------------------------------------------------------------------------------------------------------------------
-  Levels     |      q1      |      q2      |      q3      |     q12      |     q13      |     q23      |      b1      |      b2      |      b3      | 
-------------------------------------------------------------------------------------------------------------------------------------------------------
-     4       & 3.88499e+02  & 4.04329e+02  & 2.23241e+02  & 2.92916e+01  & -9.65584e-30 & 3.02564e-31  & 2.01624e+00  & -1.84995e+00 & 1.83523e-29  & 
-------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/experiment/micro-problem/compWood/wood-bilayer/wood_european_beech.py b/experiment/micro-problem/compWood/wood-bilayer/wood_european_beech.py
index 3f3e00ca1b1a7e51d8138cb6b21b19189b192b33..ec8525d5d972cb9d0c965c692b392ef4e2dec2fd 100644
--- a/experiment/micro-problem/compWood/wood-bilayer/wood_european_beech.py
+++ b/experiment/micro-problem/compWood/wood-bilayer/wood_european_beech.py
@@ -17,7 +17,7 @@ parameterSet = ParameterSet()
 #  Paths
 #############################################
 # Path for results and logfile
-parameterSet.outputPath='/home/klaus/Desktop/Dune_release/dune-microstructure/experiment/wood-bilayer/results'
+parameterSet.outputPath='/home/klaus/Desktop/Dune_TestTest/dune-microstructure/experiment/wood-bilayer/results'
 parameterSet.baseName= 'wood_european_beech'   #(needed for Output-Filename)
 
 # Path for material description
@@ -25,182 +25,153 @@ parameterSet.baseName= 'wood_european_beech'   #(needed for Output-Filename)
 
 #---------------------------------------------------------------
 # Wooden bilayer, https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6191116/#pone.0205607.ref015
-#--- define indicator function
-# x[0] : y1-component -1/2 to 1/2
-# x[1] : y2-component -1/2 to 1/2
-# x[2] : x3-component range -1/2 to 1/2
-#--- define indicator function
-def indicatorFunction(x):
-    factor=1
-    if (x[2]>=(0.5-param_r)):
-        return 1  #Phase1
-    else :
-        return 2   #Phase2
-
-# --- Number of material phases
-parameterSet.Phases=2
-
-# Parameters of the model
-# -- (thickness upper layer) / (thickness)
-param_r = 0.12
-# -- thickness [meter]
-param_h = 0.0047
-# -- moisture content in the flat state [%]
-param_omega_flat = 17.32986047
-# -- moisture content in the target state [%]
-param_omega_target = 14.70179844
-# -- Drehwinkel
-param_theta = 0
-
-#
-#
-#
-# -- increment of the moisture content
-delta_omega=param_omega_target-param_omega_flat
-# moisture content for material law
-omega=param_omega_target
-
-# --- Material properties from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6191116/#pone.0205607.ref015
-# --- for European beech, moisture content omega = 15%
-# --- L=direction orthogonal to layering and fibres = orthogonal to wood stem cross-section
-# --- T=tangential zu layering
-# --- R=orthogonal zu layering
-# --- in MPa
-# --- Properties are defined by affine function in dependence of moisture content omega via property = b_0+b_1 \omega
-# --- coefficients of affine function are contained in the following array 
-# --- data taken from http://dx.doi.org/10.1016/j.cma.2014.10.031
-
-properties_coefficients=np.array([
-    # [b_0, b_1]    
-    [2565.6,-59.7], # E_R [MPa]
-    [885.4, -23.4], # E_T [MPa]
-    [17136.7,-282.4], # E_L [MPa]
-    [667.8, -15.19], # G_RT [MPa]
-    [1482, -15.26], # G_RL [MPa]
-    [1100, -17.72], # G_TL [MPa]
-    [0.2933, -0.001012], # nu_TR [1]
-    [0.383, -0.008722], # nu_LR [1]
-    [0.3368, -0.009071] # nu_LT [1]
-    ])
-# Compute actual material properties
-E_R = properties_coefficients[0,0]+properties_coefficients[0,1]*omega
-E_T = properties_coefficients[1,0]+properties_coefficients[1,1]*omega
-E_L = properties_coefficients[2,0]+properties_coefficients[2,1]*omega
-G_RT = properties_coefficients[3,0]+properties_coefficients[3,1]*omega
-G_LR = properties_coefficients[4,0]+properties_coefficients[4,1]*omega
-G_LT  = properties_coefficients[5,0]+properties_coefficients[5,1]*omega
-nu_TR  = properties_coefficients[6,0]+properties_coefficients[6,1]*omega
-nu_LR  = properties_coefficients[7,0]+properties_coefficients[7,1]*omega
-nu_LT  = properties_coefficients[8,0]+properties_coefficients[8,1]*omega
-# Compute the remaining Poisson ratios
-nu_TL=nu_LT*E_T/E_L
-nu_RT=nu_TR*E_R/E_T
-nu_RL=nu_LR*E_R/E_L
-#
-# --- differential swelling strain
-# --- relation to swelling strain eps: eps=alpha* delta_omega with delta_omega = change of water content in %
-alpha_L=0.00011 # PLOS paper
-alpha_R=0.00191 # PLOS paper
-alpha_T=0.00462 # PLOS paper
-# Umrechnen
-#alpha_L=(1-1/(1+delta_omega*alpha_L))/delta_omega
-#alpha_R=(1-1/(1+delta_omega*alpha_R))/delta_omega
-#alpha_T=(1-1/(1+delta_omega*alpha_T))/delta_omega
-# --- define geometry
-
-
-
-# --- PHASE 1
-# y_1-direction: L
-# y_2-direction: T
-# x_3-direction: R
-# phase1_type="orthotropic"
-# materialParameters_phase1 = [E_L,E_T,E_R,G_TL,G_RT,G_RL,nu_LT,nu_LR,nu_TR]
-# parameterSet.phase1_type="general_anisotropic"
-# [E_1,E_2,E_3]=[E_L,E_T,E_R]
-# [nu_12,nu_13,nu_23]=[nu_LT,nu_LR,nu_TR]
-# [nu_21,nu_31,nu_32]=[nu_TL,nu_RL,nu_RT]
-# [G_12,G_31,G_23]=[G_LT,G_LR,G_RT]
-# compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
-#                        [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
-#                        [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
-#                        [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
-#                        [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
-#                        [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
-# materialParameters_phase1 = compliance_S
-
-# def prestrain_phase1(x):
-#     # hB=delta_omega * alpha with delta_omega increment of moisture content and alpha swelling factor.
-#     return [[1/param_h*delta_omega*alpha_L, 0, 0], [0,1/param_h*delta_omega*alpha_T,0], [0,0,1/param_h*delta_omega*alpha_R]]
-
-#Nun mit R und T vertauscht:
-
-# y_1-direction: L
-# y_2-direction: R
-# x_3-direction: T
-# phase1_type="orthotropic"
-# materialParameters_phase1 = [E_L,E_T,E_R,G_TL,G_RT,G_RL,nu_LT,nu_LR,nu_TR]
-parameterSet.phase1_type="general_anisotropic"
-[E_1,E_2,E_3]=[E_L,E_R,E_T]
-[nu_12,nu_13,nu_23]=[nu_LR,nu_LT,nu_RT]
-[nu_21,nu_31,nu_32]=[nu_RL,nu_TL,nu_TR]
-[G_12,G_31,G_23]=[G_LR,G_LT,G_RT]
-compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
-                       [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
-                       [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
-                       [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
-                       [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
-                       [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
-materialParameters_phase1 = compliance_S
-
-def prestrain_phase1(x):
-    # hB=delta_omega * alpha with delta_omega increment of moisture content and alpha swelling factor.
-    return [[1/param_h*delta_omega*alpha_L, 0, 0], [0,1/param_h*delta_omega*alpha_R,0], [0,0,1/param_h*delta_omega*alpha_T]]
-
-# --- PHASE 2
-# y_1-direction: R
-# y_2-direction: L
-# x_3-direction: T
-parameterSet.phase2_type="general_anisotropic"
-[E_1,E_2,E_3]=[E_R,E_L,E_T]
-[nu_12,nu_13,nu_23]=[nu_RL,nu_RT,nu_LT]
-[nu_21,nu_31,nu_32]=[nu_LR,nu_TR,nu_TL]
-[G_12,G_31,G_23]=[G_LR,G_RT,G_LT]
-compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
-                       [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
-                       [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
-                       [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
-                       [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
-                       [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
-materialParameters_phase2 = compliance_S
-def prestrain_phase2(x):
-    return [[1/param_h*delta_omega*alpha_R, 0, 0], [0,1/param_h*delta_omega*alpha_L,0], [0,0,1/param_h*delta_omega*alpha_T]]
-
-#Rotation um 2. Achse (= L) 
-parameterSet.phase2_axis = 2
-# phase2_angle = param_theta
-# -- Drehwinkel
-parameterSet.phase2_angle = param_theta
-
-
-
-# # --- PHASE 3 = Phase 1 gedreht
-# # y_1-direction: L
-# # y_2-direction: R
-# # x_3-direction: T
-# parameterSet.phase3_type="general_anisotropic"
-# # Drehung um theta um Achse 2 = x_3-Achse
-# N=elast.rotation_matrix_compliance(2,param_theta)
-# materialParameters_phase3 = np.dot(np.dot(N,materialParameters_phase1),N.T)
-# materialParameters_phase3 = 0.5*(materialParameters_phase3.T+materialParameters_phase3)
-# # rotation of strain
-# def prestrain_phase3(x):
-#     return elast.voigt_to_strain(np.dot(elast.rotation_matrix_compliance(2,param_theta),np.dot(elast.strain_to_voigt(np.array(prestrain_phase1(x))),N.T))).tolist()
-
-
-
-# --- Choose scale ratio gamma:
-parameterSet.gamma=1.0
+
+class Microstructure:
+    def __init__(self):
+        # self.macroPoint = macroPoint
+        self.gamma = 1.0    #in the future this might change depending on macroPoint.
+        self.phases = 2     #in the future this might change depending on macroPoint.
+        #--- Define different material phases:
+
+        # ########### Options for material phases: #################################
+        # #     1. "isotropic"     2. "orthotropic"      3. "transversely_isotropic"   4. "general_anisotropic"
+        # #########################################################################
+        # ## Notation - Parameter input :
+        # # isotropic (Lame parameters) : [mu , lambda]
+        # #         orthotropic         : [E1,E2,E3,G12,G23,G31,nu12,nu13,nu23]   # see https://en.wikipedia.org/wiki/Poisson%27s_ratio with x=1,y=2,z=3
+        # # transversely_isotropic      : [E1,E2,G12,nu12,nu23]
+        # # general_anisotropic         : full compliance matrix C
+        # ######################################################################
+        # Parameters of the model
+        # -- (thickness upper layer) / (thickness)
+        self.param_r = 0.49
+        # -- thickness [meter]
+        self.param_h = 0.008
+        # -- moisture content in the flat state [%]
+        self.param_omega_flat = 17.01520754
+        # -- moisture content in the target state [%]
+        self.param_omega_target = 9.341730605
+        # -- Drehwinkel
+        self.param_theta = np.pi/4.0
+        # -- increment of the moisture content
+        self.delta_omega=self.param_omega_target-self.param_omega_flat
+        # moisture content for material law
+        self.omega=self.param_omega_target
+
+        # --- Material properties from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6191116/#pone.0205607.ref015
+        # --- for European beech, moisture content omega = 15%
+        # --- L=direction orthogonal to layering and fibres = orthogonal to wood stem cross-section
+        # --- T=tangential zu layering
+        # --- R=orthogonal zu layering
+        # --- in MPa
+        # --- Properties are defined by affine function in dependence of moisture content omega via property = b_0+b_1 \omega
+        # --- coefficients of affine function are contained in the following array 
+        # --- data taken from http://dx.doi.org/10.1016/j.cma.2014.10.031
+        self.properties_coefficients=np.array([
+            # [b_0, b_1]    
+            [2565.6,-59.7], # E_R [MPa]
+            [885.4, -23.4], # E_T [MPa]
+            [17136.7,-282.4], # E_L [MPa]
+            [667.8, -15.19], # G_RT [MPa]
+            [1482, -15.26], # G_RL [MPa]
+            [1100, -17.72], # G_TL [MPa]
+            [0.2933, -0.001012], # nu_TR [1]
+            [0.383, -0.008722], # nu_LR [1]
+            [0.3368, -0.009071] # nu_LT [1]
+            ])
+        # Compute actual material properties
+        self.E_R    = self.properties_coefficients[0,0]+self.properties_coefficients[0,1]*self.omega
+        self.E_T    = self.properties_coefficients[1,0]+self.properties_coefficients[1,1]*self.omega
+        self.E_L    = self.properties_coefficients[2,0]+self.properties_coefficients[2,1]*self.omega
+        self.G_RT   = self.properties_coefficients[3,0]+self.properties_coefficients[3,1]*self.omega
+        self.G_LR   = self.properties_coefficients[4,0]+self.properties_coefficients[4,1]*self.omega
+        self.G_LT   = self.properties_coefficients[5,0]+self.properties_coefficients[5,1]*self.omega
+        self.nu_TR  = self.properties_coefficients[6,0]+self.properties_coefficients[6,1]*self.omega
+        self.nu_LR  = self.properties_coefficients[7,0]+self.properties_coefficients[7,1]*self.omega
+        self.nu_LT  = self.properties_coefficients[8,0]+self.properties_coefficients[8,1]*self.omega
+        self# Compute the remaining Poisson ratios
+        self.nu_TL=self.nu_LT*self.E_T/self.E_L
+        self.nu_RT=self.nu_TR*self.E_R/self.E_T
+        self.nu_RL=self.nu_LR*self.E_R/self.E_L
+        #
+        # --- differential swelling strain
+        # --- relation to swelling strain eps: eps=alpha* delta_omega with delta_omega = change of water content in %
+        self.alpha_L=0.00011 # PLOS paper
+        self.alpha_R=0.00191 # PLOS paper
+        self.alpha_T=0.00462 # PLOS paper
+
+        # y_1-direction: L
+        # y_2-direction: R
+        # x_3-direction: T
+        # phase1_type="orthotropic"
+        # materialParameters_phase1 = [E_L,E_T,E_R,G_TL,G_RT,G_RL,nu_LT,nu_LR,nu_TR]
+        self.phase1_type="general_anisotropic"
+        [E_1,E_2,E_3]=[self.E_L,self.E_R,self.E_T]
+        [nu_12,nu_13,nu_23]=[self.nu_LR,self.nu_LT,self.nu_RT]
+        [nu_21,nu_31,nu_32]=[self.nu_RL,self.nu_TL,self.nu_TR]
+        [G_12,G_31,G_23]=[self.G_LR,self.G_LT,self.G_RT]
+        compliance_S=np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
+                            [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
+                            [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
+                            [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
+                            [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
+                            [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
+        self.materialParameters_phase1 = compliance_S
+
+        # --- PHASE 2
+        # y_1-direction: R
+        # y_2-direction: L
+        # x_3-direction: T
+        self.phase2_type="general_anisotropic"
+        [E_1,E_2,E_3]=[self.E_R,self.E_L,self.E_T]
+        [nu_12,nu_13,nu_23]=[self.nu_RL,self.nu_RT,self.nu_LT]
+        [nu_21,nu_31,nu_32]=[self.nu_LR,self.nu_TR,self.nu_TL]
+        [G_12,G_31,G_23]=[self.G_LR,self.G_RT,self.G_LT]
+        self.materialParameters_phase2 =np.array([[1/E_1,         -nu_21/E_2,     -nu_31/E_3,   0.0,         0.0,  0.0],
+                                                [-nu_12/E_1,      1/E_2,        -nu_32/E_3,   0.0,         0.0,  0.0],
+                                                [-nu_13/E_1,     -nu_23/E_2,         1/E_3,   0.0,         0.0,  0.0],
+                                                [0.0,                0.0,              0.0,   1/G_23,         0.0,  0.0],
+                                                [0.0,                0.0,              0.0,   0.0,         1/G_31,  0.0],
+                                                [0.0,                0.0,              0.0,   0.0,         0.0,  1/G_12]]);
+        #Rotation um 2. Achse (= L) 
+        self.phase2_axis = 2
+        # phase2_angle = param_theta
+        # -- Drehwinkel
+        self.phase2_angle = self.param_theta
+
+    def prestrain_phase1(self,x):
+        # hB=delta_omega * alpha with delta_omega increment of moisture content and alpha swelling factor.
+        return [[1/self.param_h*self.delta_omega*self.alpha_L, 0, 0], [0,1/self.param_h*self.delta_omega*self.alpha_R,0], [0,0,1/self.param_h*self.delta_omega*self.alpha_T]]
+
+
+
+    def prestrain_phase2(self,x):
+        return [[1/self.param_h*self.delta_omega*self.alpha_R, 0, 0], [0,1/self.param_h*self.delta_omega*self.alpha_L,0], [0,0,1/self.param_h*self.delta_omega*self.alpha_T]]
+
+
+        
+    #--- define indicator function
+    # x[0] : y1-component -1/2 to 1/2
+    # x[1] : y2-component -1/2 to 1/2
+    # x[2] : x3-component range -1/2 to 1/2
+    #--- define indicator function
+    def indicatorFunction(self,x):
+        factor=1
+        if (x[2]>=(0.5-self.param_r)):
+            return 1  #Phase1
+        else :
+            return 2   #Phase2
+
+
+
+
+
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+
+
+
+
 
 
 
@@ -208,61 +179,40 @@ parameterSet.gamma=1.0
 #############################################
 #  Grid parameters
 #############################################
-## 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
-#----------------------------------------------------
-# parameterSet.numLevels= '3 3'      # computes all levels from first to second entry
-parameterSet.numLevels= '4 4'   
+parameterSet.microGridLevel = 4
 
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER (default), #4: UMFPACK - SOLVER
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
-parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
+parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
+parameterSet.MaterialSubsamplingRefinement= 2
 # --- Write Correctos to VTK-File:  
-parameterSet.write_VTK = 0
+parameterSet.writeCorrectorsVTK = 1
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
 
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# The grid can be refined several times for a higher resolution in the VTK-file.
-parameterSet.subsamplingRefinement = 0
-
-# --- (Optional output) L2Error, integral mean: 
-#parameterSet.write_L2Error = 1
-#parameterSet.write_IntegralMean = 1      
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
-# --- Write corrector-coefficients to log-File:
-#parameterSet.write_corrector_phi1 = 1
-#parameterSet.write_corrector_phi2 = 1
-#parameterSet.write_corrector_phi3 = 1
-
-# --- Print Condition number of matrix (can be expensive):
-#parameterSet.print_conditionNumber= 1  #(default=false)
-
-# --- write effective quantities to Matlab-folder for symbolic minimization:
-parameterSet.write_toMATLAB = 1  # writes effective quantities to .txt-files QMatrix.txt and BMatrix.txt
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
\ No newline at end of file
diff --git a/experiment/micro-problem/fibreRotation_microproblem.py b/experiment/micro-problem/fibreRotation_microproblem.py
new file mode 100644
index 0000000000000000000000000000000000000000..1e4505dbb90b2858d599948487daadee488f7cc0
--- /dev/null
+++ b/experiment/micro-problem/fibreRotation_microproblem.py
@@ -0,0 +1,107 @@
+import math
+import numpy as np
+
+class ParameterSet(dict):
+    def __init__(self, *args, **kwargs):
+        super(ParameterSet, self).__init__(*args, **kwargs)
+        self.__dict__ = self
+
+parameterSet = ParameterSet()
+
+""""
+    Experiment: Microstructure 
+                featuring prestrained isotopic fibres located 
+                in the top layer aligned diagonally with an angle alpha
+
+    theta: fibreRadius
+
+"""
+
+#############################################
+#  Paths
+#############################################
+parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_buckling_microproblem'
+parameterSet.baseName= 'fibreRotation_microproblem'
+
+##################### MICROSCALE PROBLEM ####################
+class Microstructure:
+    def __init__(self):
+        # self.macroPoint = macroPoint
+        self.gamma = 2
+        self.phases = 2     #in the future this might change depending on macroPoint.
+        #--- Define different material phases:
+        #- PHASE 1
+        self.phase1_type="isotropic"
+        # self.materialParameters_phase1 = [200, 1.0]   
+        self.materialParameters_phase1 = [28.7,22.5]  # glass (Fibre)
+
+        #- PHASE 2
+        self.phase2_type="isotropic"
+        # self.materialParameters_phase2 = [100, 1.0]    
+        self.materialParameters_phase2 = [1.2,2.58]    #Matrix-material: polystyrene
+
+
+        self.theta = 0.2
+        self.alpha = 1.0471975511965976
+
+    #--- Indicator function for material phases
+    def indicatorFunction(self,x):
+        if (abs(-np.cos(self.alpha)*x[0] + np.sin(self.alpha)*x[1] ) < self.theta and x[2] >= 0 ):
+            return 1    #Phase1   
+        else :
+            return 2    #Phase2
+        
+    #--- Define prestrain function for each phase
+    def prestrain_phase1(self,x):
+        rho = 1.0
+        return [[rho*1.0, 0, 0], [0,rho*1.0,0], [0,0,rho*1.0]]
+
+    def prestrain_phase2(self,x):
+        return [[0, 0, 0], [0,0,0], [0,0,0]]
+
+
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+#############################################
+#  Grid parameters
+#############################################
+parameterSet.microGridLevel = 4
+
+#############################################
+#  Assembly options
+#############################################
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
+
+#############################################
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
+#############################################
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
+
+#############################################
+#  Write/Output options      #(default=false)
+#############################################
+# --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
+parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
+#parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
+parameterSet.MaterialSubsamplingRefinement= 2
+# --- Write Correctos to VTK-File:  
+parameterSet.writeCorrectorsVTK = 1
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
+
+
+
diff --git a/experiment/micro-problem/material_orthotropic.py b/experiment/micro-problem/material_orthotropic.py
index be1611ca1492f21bc192282ad1f747be3ffed52c..ecb33bf4748abe64b69e193fd2d6a36abfbc1386 100644
--- a/experiment/micro-problem/material_orthotropic.py
+++ b/experiment/micro-problem/material_orthotropic.py
@@ -73,30 +73,28 @@ def prestrain_phase2(x):
 def prestrain_phase3(x):
     return [[0, 0, 0], [0,0,0], [0,0,0]]
 
-
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
 #  Grid parameters
 #############################################
-## 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
-#----------------------------------------------------
-parameterSet.numLevels= '3 3'      # computes all levels from first to second entry
+parameterSet.microGridLevel = 3
 
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER (default), #4: UMFPACK - SOLVER
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 3        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
@@ -104,30 +102,16 @@ parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for sol
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
 parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
+parameterSet.MaterialSubsamplingRefinement= 2
 # --- Write Correctos to VTK-File:  
-parameterSet.write_VTK = 1
-
-# The grid can be refined several times for a higher resolution in the VTK-file.
-parameterSet.subsamplingRefinement = 2
-
-# --- (Optional output) L2Error, integral mean: 
-#parameterSet.write_L2Error = 1
-#parameterSet.write_IntegralMean = 1      
+parameterSet.writeCorrectorsVTK = 1
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
 
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 1
-
-# --- Write corrector-coefficients to log-File:
-#parameterSet.write_corrector_phi1 = 1
-#parameterSet.write_corrector_phi2 = 1
-#parameterSet.write_corrector_phi3 = 1
-
-# --- Print Condition number of matrix (can be expensive):
-#parameterSet.print_conditionNumber= 1  #(default=false)
-
-# --- write effective quantities to Matlab-folder for symbolic minimization:
-#parameterSet.write_toMATLAB = 0  # writes effective quantities to .txt-files QMatrix.txt and BMatrix.txt
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/experiment/micro-problem/parametrized_laminate.py b/experiment/micro-problem/parametrized_laminate.py
index 7c89d3693da98d48f4862d4de5ac581907ae2dc4..318c1d8d698afd594d65e8a11bed26f75fd59cb2 100644
--- a/experiment/micro-problem/parametrized_laminate.py
+++ b/experiment/micro-problem/parametrized_laminate.py
@@ -17,7 +17,7 @@ parameterSet = ParameterSet()
 
     theta: width of center material
     theta_rho: ratio between the prestrain of the fibres.
-    theta_mu: ratio between lema 
+    theta_mu: ratio between lame parameters
 
 """
 
@@ -38,12 +38,10 @@ parameterSet.baseName= 'parametrized_laminate'   #(needed for Output-Filename)
 # theta_mu = 10.0
 # mu_2 = theta_mu * mu_1;
 # rho_1 = 1.0;
-# theta_rho = 10.0
+# theta_rho = 0.1
 # rho_2 = rho_1*theta_rho;
 
     
-
-
 class Microstructure:
     def __init__(self):
         # self.macroPoint = macroPoint
@@ -94,7 +92,7 @@ class Microstructure:
 
     #--- Define prestrain function for each phase (also works with non-constant values)
     def prestrain_phase1(self,x):
-        theta_rho = 10.0
+        theta_rho = 0.1
         return [[theta_rho*1.0, 0, 0], [0,theta_rho*1.0,0], [0,0,theta_rho*1.0]]
 
     def prestrain_phase2(self,x):
@@ -107,25 +105,28 @@ class Microstructure:
         return [[0, 0, 0], [0,0,0], [0,0,0]]
 
 
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
 #############################################
 #  Grid parameters
 #############################################
-parameterSet.microGridLevel = 3
+parameterSet.microGridLevel = 2
 
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
@@ -134,23 +135,15 @@ parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for sol
 parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-
-parameterSet.write_EffectiveQuantitiesToTxt= True
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
 # --- write effective quantities (Qhom.Beff) to .txt-files
-parameterSet.write_EffectiveQuantitiesToTxt = True
\ No newline at end of file
+parameterSet.write_EffectiveQuantitiesToTxt = True
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
\ No newline at end of file
diff --git a/experiment/micro-problem/prestrainedFibre.py b/experiment/micro-problem/prestrainedFibre.py
index 8b4d90d0ffc0072e02de0fd3b4b073e8535d64d0..477bf3c54e8346e8a112f4dca4fda0d2b6da07ba 100644
--- a/experiment/micro-problem/prestrainedFibre.py
+++ b/experiment/micro-problem/prestrainedFibre.py
@@ -22,6 +22,8 @@ parameterSet = ParameterSet()
 parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_prestrainedFibre'
 parameterSet.baseName= 'prestrainedFibre'
 
+
+
 ##################### MICROSCALE PROBLEM ####################
 class Microstructure:
     def __init__(self):
@@ -30,15 +32,23 @@ class Microstructure:
         #--- Define different material phases:
         #- PHASE 1
         self.phase1_type="isotropic"
-        mu_phase1 = 100
 
-        self.materialParameters_phase1 = [mu_phase1, 1.0]   
+        mu_phase1 = 1.5
+        # mu_phase1 = 1.5
+        # lambda_phase1 = 100
+
+        # self.materialParameters_phase1 = [mu_phase1, 1.0]   
         # self.materialParameters_phase1 = [63.89, 0.2] #carbon fibre
+        # self.materialParameters_phase1 = [mu_phase1, 54] #aluminium
+        # self.materialParameters_phase1 = [1.2, lambda_phase1] #aluminium
+        self.materialParameters_phase1 = [mu_phase1,2.58]    #Matrix-material: polystyrene
         
         # #- PHASE 2
         self.phase2_type="isotropic"
-        self.materialParameters_phase2 = [100.0, 1.0]    
+        # self.materialParameters_phase2 = [100.0, 1.0]    
         # self.materialParameters_phase2 = [1.48, 0.26]   #epoxy resin
+        # self.materialParameters_phase2 = [27.8, 54] #aluminium
+        self.materialParameters_phase2 = [1.2,2.58]    #Matrix-material: polystyrene
         
     def indicatorFunction(self,x):
         verticalMidpointPosition = 0.25
@@ -61,26 +71,28 @@ class Microstructure:
         return [[0, 0, 0], [0,0,0], [0,0,0]]
 
 
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
 #  Grid parameters
 #############################################
-parameterSet.microGridLevel = 4
+parameterSet.microGridLevel = 3
 
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
@@ -89,23 +101,17 @@ parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for sol
 parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
 # --- write effective quantities (Qhom.Beff) to .txt-files
 parameterSet.write_EffectiveQuantitiesToTxt = True
 
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
 
 
diff --git a/experiment/micro-problem/prestrainedFibre_anisotropicB.py b/experiment/micro-problem/prestrainedFibre_anisotropicB.py
index 1c06a934d7e74c69ea66ed1dbfd8b0eb1fdf6cdd..8e196b70d7230126cd20456bbf7c8fb5d20abb2b 100644
--- a/experiment/micro-problem/prestrainedFibre_anisotropicB.py
+++ b/experiment/micro-problem/prestrainedFibre_anisotropicB.py
@@ -30,15 +30,17 @@ class Microstructure:
         #--- Define different material phases:
         #- PHASE 1
         self.phase1_type="isotropic"
-        mu_phase1 = 100
+        # mu_phase1 = 100
 
-        self.materialParameters_phase1 = [mu_phase1, 1.0]   
+        # self.materialParameters_phase1 = [mu_phase1, 1.0]   
         # self.materialParameters_phase1 = [63.89, 0.2] #carbon fibre
+        self.materialParameters_phase1 = [1.2,2.58]    #(Matrix-material: polystyrene
         
         # #- PHASE 2
         self.phase2_type="isotropic"
-        self.materialParameters_phase2 = [100.0, 1.0]    
+        # self.materialParameters_phase2 = [100.0, 1.0]    
         # self.materialParameters_phase2 = [1.48, 0.26]   #epoxy resin
+        self.materialParameters_phase2 = [1.2,2.58]    #(Matrix-material: polystyrene
         
     def indicatorFunction(self,x):
         verticalMidpointPosition = 0.25
@@ -55,12 +57,12 @@ class Microstructure:
     #--- Define prestrain function for each phase (also works with non-constant values)
     def prestrain_phase1(self,x):
         rho =  1.0
-        return [[rho*1.0, -2.0, 0], [-2.0,rho*1.0,0], [0,0,rho*1.0]]
+        return [[rho*1.0, 2.0, 0], [2.0,rho*1.0,0], [0,0,rho*1.0]]
 
     def prestrain_phase2(self,x):
         return [[0, 0, 0], [0,0,0], [0,0,0]]
 
-
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
 #  Grid parameters
@@ -70,17 +72,18 @@ parameterSet.microGridLevel = 4
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
@@ -89,23 +92,17 @@ parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for sol
 parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
 # --- write effective quantities (Qhom.Beff) to .txt-files
 parameterSet.write_EffectiveQuantitiesToTxt = True
 
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
 
 
diff --git a/experiment/micro-problem/prestrainedFibre_anisotropicQ.py b/experiment/micro-problem/prestrainedFibre_anisotropicQ.py
index 19cf8026ea80a9652b95f8bc5ede46c13115cd1b..f540a9c49edc00ca08e74595498c3f45bf645fc3 100644
--- a/experiment/micro-problem/prestrainedFibre_anisotropicQ.py
+++ b/experiment/micro-problem/prestrainedFibre_anisotropicQ.py
@@ -29,9 +29,11 @@ class Microstructure:
         self.phases = 2     #in the future this might change depending on macroPoint.
         #--- Define different material phases:
         #- PHASE 1
-        # self.phase1_type="isotropic"
+        self.phase1_type="isotropic"
         # mu_phase1 = 100
 
+        # self.materialParameters_phase1 = [1.2, 2.58]   #epoxy resin
+
         # self.materialParameters_phase1 = [mu_phase1, 1.0]   
 
         self.phase1_type="general_anisotropic"
@@ -63,12 +65,39 @@ class Microstructure:
         #                                         [0.0,       0.0,  0.0,     0.0,    0.0,   5]]);
         
 
-        self.materialParameters_phase1 =np.array([   [ 9.13e-01,  -5.45e-03,  -2.62e-01,   0.00e+00,   0.00e+00,   0.00e+00],
-                                                [-5.45e-03,  -1.29e-04,  -1.30e-02,  -0.00e+00,  -0.00e+00,  -0.00e+00],
-                                                [-2.62e-01,  -1.30e-02,  -7.31e-01,  -0.00e+00,  -0.00e+00,  -0.00e+00],
-                                                [ 0.00e+00,   0.00e+00,   0.00e+00,   1.00e+00,   0.00e+00,   0.00e+00],
-                                                [ 0.00e+00,   0.00e+00,   0.00e+00,   0.00e+00,   1.00e-04,   0.00e+00],
-                                                [ 0.00e+00,   0.00e+00,   0.00e+00,   0.00e+00,   0.00e+00,   2.00e-01]])
+        # self.materialParameters_phase1 =np.array([   [ 9.13e-01,  -5.45e-03,  -2.62e-01,   0.00e+00,   0.00e+00,   0.00e+00],
+        #                                         [-5.45e-03,  -1.29e-04,  -1.30e-02,  -0.00e+00,  -0.00e+00,  -0.00e+00],
+        #                                         [-2.62e-01,  -1.30e-02,  -7.31e-01,  -0.00e+00,  -0.00e+00,  -0.00e+00],
+        #                                         [ 0.00e+00,   0.00e+00,   0.00e+00,   1.00e+00,   0.00e+00,   0.00e+00],
+        #                                         [ 0.00e+00,   0.00e+00,   0.00e+00,   0.00e+00,   1.00e-04,   0.00e+00],
+        #                                         [ 0.00e+00,   0.00e+00,   0.00e+00,   0.00e+00,   0.00e+00,   2.00e-01]])
+
+        # self.materialParameters_phase1 =np.array([[ 4.98e-04,  -2.08e-05,  -4.26e-04,   0.00e+00,   0.00e+00,   0.00e+00],
+        #                                           [-2.08e-05,   6.90e-05,  -1.74e-05,   0.00e+00,   0.00e+00,   0.00e+00],
+        #                                           [-4.26e-04,  -1.74e-05,   1.50e-03,   0.00e+00,   0.00e+00,   0.00e+00],
+        #                                           [ 0.00e+00,   0.00e+00,   0.00e+00,   1.07e-03,   0.00e+00,   0.00e+00],
+        #                                           [ 0.00e+00,   0.00e+00,   0.00e+00,   0.00e+00,   1.90e-03,   0.00e+00],
+        #                                           [ 0.00e+00,   0.00e+00,   0.00e+00,   0.00e+00,   0.00e+00,   7.47e-04]])
+
+
+
+        # WOOD_European_BEECH (rotated np.pi/4.0) - # Dataset Ratio r = 0.49 with parameters [0.49, 0.008,  17.01520754, 15.30614414, np.pi/4.0, 0.357615902],
+        # self.materialParameters_phase1 =np.array([[ 3.18e-04,  -5.53e-05,  -2.22e-04,   0.00e+00,   0.00e+00,   2.15e-04],
+        #                                             [-5.53e-05,   3.18e-04,  -2.22e-04,   0.00e+00,   0.00e+00,   2.15e-04],
+        #                                             [-2.22e-04,  -2.22e-04,   1.50e-03,   0.00e+00,   0.00e+00,  -4.08e-04],
+        #                                             [ 0.00e+00,   0.00e+00,   0.00e+00,   1.49e-03,   4.16e-04,   0.00e+00],
+        #                                             [ 0.00e+00,   0.00e+00,   0.00e+00,   4.16e-04,   1.49e-03,   0.00e+00],
+        #                                             [ 2.15e-04,   2.15e-04,  -4.08e-04,   0.00e+00,   0.00e+00,   6.09e-04]])
+        # WOOD_European_BEECH (rotated np.pi/4.0) Dataset (RotatedLayer) [0.12, 0.0047, 17.32986047, 9.005046347, np.pi/4.0, 4.312080261]
+        self.materialParameters_phase1 =np.array([
+                                                [ 3.16e-04,  -5.60e-05,  -2.19e-04,   0.00e+00,   0.00e+00,   2.12e-04],
+                                                [-5.60e-05,   3.16e-04,  -2.19e-04,   0.00e+00,   0.00e+00,   2.12e-04],
+                                                [-2.19e-04,  -2.19e-04,   1.48e-03,   0.00e+00,   0.00e+00,  -4.04e-04],
+                                                [ 0.00e+00,   0.00e+00,   0.00e+00,   1.47e-03,   4.10e-04,   0.00e+00],
+                                                [ 0.00e+00,   0.00e+00,   0.00e+00,   4.10e-04,   1.47e-03,   0.00e+00],
+                                                [ 2.12e-04,   2.12e-04,  -4.04e-04,   0.00e+00,   0.00e+00,   6.03e-04]])
+
+
     
         # self.materialParameters_phase1 =np.array([[ 2.80e-01,  -2.26e-02,  -9.18e-03,   0.00e+00,   0.00e+00,   0.00e+00],
         #                                         [-2.26e-02,   2.83e-03,   1.37e-03,  -0.00e+00,  -0.00e+00,  -0.00e+00],
@@ -124,8 +153,9 @@ class Microstructure:
         
         # #- PHASE 2
         self.phase2_type="isotropic"
-        self.materialParameters_phase2 = [100.0, 1.0]    
+        # self.materialParameters_phase2 = [100.0, 1.0]    
         # self.materialParameters_phase2 = [1.48, 0.26]   #epoxy resin
+        self.materialParameters_phase2 = [1.2,2.58]    #(Matrix-material: polystyrene
         
     def indicatorFunction(self,x):
         verticalMidpointPosition = 0.25
@@ -141,13 +171,13 @@ class Microstructure:
         
     #--- Define prestrain function for each phase (also works with non-constant values)
     def prestrain_phase1(self,x):
-        rho =  1.0
+        rho =  5.0
         return [[rho*1.0, 0.0, 0], [0.0,rho*1.0,0], [0,0,rho*1.0]]
 
     def prestrain_phase2(self,x):
         return [[0, 0, 0], [0,0,0], [0,0,0]]
 
-
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
 
 #############################################
 #  Grid parameters
@@ -157,17 +187,18 @@ parameterSet.microGridLevel = 4
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
@@ -176,23 +207,17 @@ parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for sol
 parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
 # --- write effective quantities (Qhom.Beff) to .txt-files
 parameterSet.write_EffectiveQuantitiesToTxt = True
 
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
 
 
diff --git a/experiment/micro-problem/three-phase-composite.py b/experiment/micro-problem/three-phase-composite.py
index ddf57e8b949e309ca0edd54b80a6fe96f287e58b..ad3329487fc2de407371ae554ac6afcb4759480e 100644
--- a/experiment/micro-problem/three-phase-composite.py
+++ b/experiment/micro-problem/three-phase-composite.py
@@ -28,22 +28,31 @@ parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/
 parameterSet.baseName= 'thee-phase-composite'
 
 ##################### MICROSCALE PROBLEM ####################
-
 class Microstructure:
     def __init__(self):
         self.gamma = 1.0    #in the future this might change depending on macroPoint.
         self.phases = 3     #in the future this might change depending on macroPoint.
         
         #--- Define different material phases:
+        # #- PHASE 1
+        # self.phase1_type="isotropic"
+        # self.materialParameters_phase1 = [200, 1.0]   
+        # #- PHASE 2
+        # self.phase2_type="isotropic"
+        # self.materialParameters_phase2 = [200, 1.0]    
+        # #- PHASE 3
+        # self.phase3_type="isotropic"
+        # self.materialParameters_phase3 = [100, 1.0]    #(Matrix-material)
+
         #- PHASE 1
         self.phase1_type="isotropic"
-        self.materialParameters_phase1 = [200, 1.0]   
+        self.materialParameters_phase1 = [28.7,22.5]  # glass 
         #- PHASE 2
         self.phase2_type="isotropic"
-        self.materialParameters_phase2 = [200, 1.0]    
+        self.materialParameters_phase2 = [28.7,22.5]  # glass 
         #- PHASE 3
         self.phase3_type="isotropic"
-        self.materialParameters_phase3 = [100, 1.0]    #(Matrix-material)
+        self.materialParameters_phase3 = [1.2,2.58]    #(Matrix-material: polystyrene
         # self.materialParameters_phase3 = [100, 0.1]    #(Matrix-material)
 
     #--- Three-phase composite phase indicator
@@ -87,17 +96,21 @@ class Microstructure:
     # prestrained fibre in top layer , e2-aligned
     def prestrain_phase1(self,x):
         return [[1.0, 0, 0], [0,1.0,0], [0,0,1.0]]
+        # return [[0.5, 0, 0], [0,0.5,0], [0,0,0.5]]
 
     # prestrained fibre in bottom layer , e1-aligned
     def prestrain_phase2(self,x):
         #prestrain ratio
-        rho = 1.0
+        rho = 0.95
         return [[rho*1.0, 0, 0], [0,rho*1.0,0], [0,0,rho*1.0]]
 
     # no prestrain in matrix-material
     def prestrain_phase3(self,x):
         return [[0, 0, 0], [0,0,0], [0,0,0]]
 
+
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
 #############################################
 #  Grid parameters
 #############################################
@@ -106,17 +119,18 @@ parameterSet.microGridLevel = 3
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER, #4: UMFPACK - SOLVER (default)
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 4        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
@@ -125,20 +139,15 @@ parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for sol
 parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
 parameterSet.MaterialSubsamplingRefinement= 2
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
-parameterSet.print_corrector_matrices = 0
-
 # --- Write Correctos to VTK-File:  
 parameterSet.writeCorrectorsVTK = 1
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 0
-
 # --- write effective quantities (Qhom.Beff) to .txt-files
 parameterSet.write_EffectiveQuantitiesToTxt = True
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
\ No newline at end of file
diff --git a/experiment/micro-problem/validation_microproblem.py b/experiment/micro-problem/validation_microproblem.py
new file mode 100644
index 0000000000000000000000000000000000000000..ffd02657c827bab479ee74e2746d7ad6ef7cd128
--- /dev/null
+++ b/experiment/micro-problem/validation_microproblem.py
@@ -0,0 +1,142 @@
+import math
+
+class ParameterSet(dict):
+    def __init__(self, *args, **kwargs):
+        super(ParameterSet, self).__init__(*args, **kwargs)
+        self.__dict__ = self
+
+parameterSet = ParameterSet()
+
+
+""""
+    This is just a dummy parameterFile - we actually only use it to create to appropriate folders automatically 
+    and adjust the 'QMatrix' and 'BMatrix' .txt files to plot the energy landscape.
+
+"""
+
+#############################################
+#  Paths
+#############################################
+parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_validation_microproblem'
+parameterSet.baseName= 'validation_microproblem'   #(needed for Output-Filename)
+
+#############################################
+#  Material Setup
+#############################################
+
+
+#Parameters used for analytical solutions:
+# theta = 0.5
+# mu_1 = 1.0;
+# theta_mu = 10.0
+# mu_2 = theta_mu * mu_1;
+# rho_1 = 1.0;
+# theta_rho = 0.1
+# rho_2 = rho_1*theta_rho;
+
+    
+class Microstructure:
+    def __init__(self):
+        # self.macroPoint = macroPoint
+        self.gamma = 1.0    #in the future this might change depending on macroPoint.
+        self.phases = 4     #in the future this might change depending on macroPoint.
+        #--- Define different material phases:
+
+        # ########### Options for material phases: #################################
+        # #     1. "isotropic"     2. "orthotropic"      3. "transversely_isotropic"   4. "general_anisotropic"
+        # #########################################################################
+        # ## Notation - Parameter input :
+        # # isotropic (Lame parameters) : [mu , lambda]
+        # #         orthotropic         : [E1,E2,E3,G12,G23,G31,nu12,nu13,nu23]   # see https://en.wikipedia.org/wiki/Poisson%27s_ratio with x=1,y=2,z=3
+        # # transversely_isotropic      : [E1,E2,G12,nu12,nu23]
+        # # general_anisotropic         : full compliance matrix C
+        # ######################################################################
+
+        # theta_mu = 10.0
+        theta_mu = 2.0
+        #- PHASE 1
+        self.phase1_type="isotropic"
+        self.materialParameters_phase1 = [theta_mu*1.0, 0]   
+        #- PHASE 2
+        self.phase2_type="isotropic"
+        self.materialParameters_phase2 = [1.0, 0]   
+        #- PHASE 3
+        self.phase3_type="isotropic"
+        self.materialParameters_phase3 = [theta_mu*1.0, 0]
+        #- PHASE 4
+        self.phase4_type="isotropic"
+        self.materialParameters_phase4 = [1.0, 0]
+
+
+
+    #--- Indicator function for material phases
+    def indicatorFunction(self,x):
+        theta = 0.5
+        if (abs(x[0]) < (theta/2) and x[2] < 0 ):
+            return 1    #Phase1
+        elif (abs(x[0]) > (theta/2) and x[2] > 0 ):
+            return 2    #Phase2
+        elif (abs(x[0]) < (theta/2) and x[2] > 0 ):
+            return 3    #Phase3
+        else :
+            return 4    #Phase4
+        
+        
+
+    #--- Define prestrain function for each phase (also works with non-constant values)
+    def prestrain_phase1(self,x):
+        theta_rho = 0.1
+        return [[theta_rho*1.0, 0, 0], [0,theta_rho*1.0,0], [0,0,theta_rho*1.0]]
+
+    def prestrain_phase2(self,x):
+        return [[1, 0, 0], [0,1,0], [0,0,1]]
+
+    def prestrain_phase3(self,x):
+        return [[0, 0, 0], [0,0,0], [0,0,0]]
+
+    def prestrain_phase4(self,x):
+        return [[0, 0, 0], [0,0,0], [0,0,0]]
+
+
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+#############################################
+#  Grid parameters
+#############################################
+parameterSet.microGridLevel = 2
+
+#############################################
+#  Assembly options
+#############################################
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
+
+#############################################
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
+#############################################
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
+
+#############################################
+#  Write/Output options      #(default=false)
+#############################################
+# --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
+parameterSet.write_materialFunctions = 1   # VTK indicator function for material/prestrain definition
+#parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
+parameterSet.MaterialSubsamplingRefinement= 2
+# --- Write Correctos to VTK-File:  
+parameterSet.writeCorrectorsVTK = 1
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
\ No newline at end of file
diff --git a/macroSim_Container/Containerfile b/macroSim_Container/Containerfile
index 75097aa8a7bb9479ebffeb34bb0daf41f8022d77..d2a09602ff75fea104dd664daae5f804ed2bf860 100644
--- a/macroSim_Container/Containerfile
+++ b/macroSim_Container/Containerfile
@@ -26,8 +26,8 @@ RUN apt-get update && apt-get install -y ssh rsh-client && apt-get install -y li
     libmetis-dev \
     # libopenblas-base \   #causes problem with Suitesparse!
     # libopenblas-dev \
-    # intel-mkl \         
-    # intel-mkl-cluster \
+    intel-mkl \         
+    intel-mkl-cluster \
     liblapack-dev \
     libparmetis-dev \
     libsuitesparse-dev \
@@ -66,33 +66,36 @@ RUN \
   && git clone https://gitlab.dune-project.org/core/dune-grid.git \
   && git clone https://gitlab.dune-project.org/core/dune-istl.git \
   && git clone https://gitlab.dune-project.org/core/dune-localfunctions.git \
-  # && git clone https://gitlab.dune-project.org/staging/dune-functions.git --branch bugfix/reducedcubichermite-local \
-  && git clone https://gitlab.dune-project.org/klaus.boehnlein/dune-functions.git --branch bugfix/reducedcubichermite-local \
+  # && git clone https://gitlab.dune-project.org/klaus.boehnlein/dune-functions.git --branch bugfix/reducedcubichermite-local \
+  && git clone https://gitlab.dune-project.org/staging/dune-functions \
   && git clone https://gitlab.dune-project.org/staging/dune-uggrid.git \
   && git clone https://gitlab.dune-project.org/staging/dune-typetree.git \
   && git clone https://gitlab.dune-project.org/fufem/dune-matrix-vector.git \
-  && git clone https://gitlab.dune-project.org/fufem/dune-fufem.git --branch releases/2.9  \
+  && git clone https://gitlab.dune-project.org/fufem/dune-fufem.git  \
+  # && git clone https://gitlab.dune-project.org/fufem/dune-fufem.git --branch releases/2.9  \
   # && git clone https://gitlab.dune-project.org/extensions/dune-vtk.git --branch releases/2.9 \
   && git clone https://gitlab.dune-project.org/extensions/dune-vtk.git \
   && git clone https://git.imp.fu-berlin.de/agnumpde/dune-solvers.git \
-  && git clone https://gitlab.mn.tu-dresden.de/iwr/dune-gmsh4.git --branch releases/2.9 \
-  && git clone https://gitlab.mn.tu-dresden.de/ag-sander/dune/dune-elasticity.git --branch releases/2.9 \
-  && git clone https://gitlab.mn.tu-dresden.de/osander/dune-gfe.git --branch feature/bendingIsometries \
-  && git clone https://gitlab.mn.tu-dresden.de/s7603593/dune-microstructure.git
+  # && git clone https://gitlab.mn.tu-dresden.de/iwr/dune-gmsh4.git --branch releases/2.9 \
+  && git clone https://gitlab.mn.tu-dresden.de/iwr/dune-gmsh4.git \
+  # && git clone https://gitlab.mn.tu-dresden.de/ag-sander/dune/dune-elasticity.git --branch releases/2.9 \
+  # && git clone https://gitlab.mn.tu-dresden.de/osander/dune-gfe.git --branch feature/bendingIsometries \
+  && git clone https://gitlab.mn.tu-dresden.de/osander/dune-gfe.git --branch feature/ARRN-mod \
+  && git clone https://gitlab.mn.tu-dresden.de/s7603593/dune-microstructure.git --branch feature/newHermiteBasis
 
 # For the sake of reproducibility:
 # Set HEAD to particular commits wherever we are not using release branches.
-RUN cd dune-common             && git checkout faaf4e7fffbd25b872380d3307f4f7fa886773ea
-RUN cd dune-geometry           && git checkout 1a4f504d95f1a5ccb46b380c316da421b770c091 
-RUN cd dune-grid               && git checkout 17b91684cff69b2e10c52f922434b61888a9ecf7
-RUN cd dune-istl               && git checkout 28997ea7ddd6b1be1ecaefa04c7813dfa7df213f
-RUN cd dune-localfunctions     && git checkout 8f1cb33575204e5a245e9e6088e7a6471d3903a9 
-RUN cd dune-uggrid             && git checkout 68094a7154287db0b10ffe07667d175cdd3eacff
-RUN cd dune-typetree           && git checkout d3345d13804d9b6a26973272d799ca345abfd49c
-RUN cd dune-matrix-vector      && git checkout c073d2a0d8feb3de23a48668219895ffcfb7e53c
-RUN cd dune-solvers            && git checkout 532830e4051f14bae06127e0ca6373519d65601a
-RUN cd dune-vtk                && git checkout 98be9d9ad314e0b51647912c2755e03a2ca32ca6
-RUN cd dune-microstructure     && git checkout 0c4ebef7f7bea724ab7a602fb8d3619246bfa06b
+# RUN cd dune-common             && git checkout faaf4e7fffbd25b872380d3307f4f7fa886773ea
+# RUN cd dune-geometry           && git checkout 1a4f504d95f1a5ccb46b380c316da421b770c091 
+# RUN cd dune-grid               && git checkout 17b91684cff69b2e10c52f922434b61888a9ecf7
+# RUN cd dune-istl               && git checkout 28997ea7ddd6b1be1ecaefa04c7813dfa7df213f
+# RUN cd dune-localfunctions     && git checkout 8f1cb33575204e5a245e9e6088e7a6471d3903a9 
+# RUN cd dune-uggrid             && git checkout 68094a7154287db0b10ffe07667d175cdd3eacff
+# RUN cd dune-typetree           && git checkout d3345d13804d9b6a26973272d799ca345abfd49c
+# RUN cd dune-matrix-vector      && git checkout c073d2a0d8feb3de23a48668219895ffcfb7e53c
+# RUN cd dune-solvers            && git checkout 532830e4051f14bae06127e0ca6373519d65601a
+# RUN cd dune-vtk                && git checkout 98be9d9ad314e0b51647912c2755e03a2ca32ca6
+# RUN cd dune-microstructure     && git checkout 0c4ebef7f7bea724ab7a602fb8d3619246bfa06b
 
 # RUN cd dune-microstructure     && git checkout fb8326aadfeabd6e8c4cb2022c8f228479b420ef
 
diff --git a/macroSim_Container/build_SingularityContainer.sh b/macroSim_Container/build_SingularityContainer.sh
index d520ab9b8fda9b3152bd8cc951bf5e2d9e268f5d..3be0b975845a0ef54785b735649220daba49a158 100755
--- a/macroSim_Container/build_SingularityContainer.sh
+++ b/macroSim_Container/build_SingularityContainer.sh
@@ -37,14 +37,14 @@ singularity build  macrosim_container.sif docker-archive://macrosim_image.tar
 # ./macrosim_container.sif python3 /dune/dune-microstructure/microstructure_testsuite/macro-problem-testsuite.py 1 #EXPERIMENT_id
 
 
-# (Optional) Move Container to Barnard.
-echo "Move to Barnard(HPC) ? " 
+# # (Optional) Move Container to Barnard.
+# echo "Move to Barnard(HPC) ? " 
 
-read HPC_flag 
+# read HPC_flag 
 
-if [ "$HPC_flag" == "true" ] || [ $HPC_flag -eq 1 ] || [ "$HPC_flag" == "yes" ]
-then
-    echo "Moving to Barnard..." 
-    rsync macrosim_container.sif s7603593@dataport1.hpc.tu-dresden.de:/data/horse/ws/s7603593-microstructure
-    rsync macrosim.batch  s7603593@dataport1.hpc.tu-dresden.de:/data/horse/ws/s7603593-microstructure
-fi
\ No newline at end of file
+# if [ "$HPC_flag" == "true" ] || [ $HPC_flag -eq 1 ] || [ "$HPC_flag" == "yes" ]
+# then
+#     echo "Moving to Barnard..." 
+#     rsync macrosim_container.sif s7603593@dataport1.hpc.tu-dresden.de:/data/horse/ws/s7603593-microstructure
+#     rsync macrosim.batch  s7603593@dataport1.hpc.tu-dresden.de:/data/horse/ws/s7603593-microstructure
+# fi
\ No newline at end of file
diff --git a/macroSim_Container/getBarnardResults.sh b/macroSim_Container/getBarnardResults.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cf58afbe0a4ad8381cca8dbfcc082a64212f4318
--- /dev/null
+++ b/macroSim_Container/getBarnardResults.sh
@@ -0,0 +1,3 @@
+echo "get results from Barnard ... "
+echo "directory to store results: " $(pwd)
+rsync -r s7603593@dataport1.hpc.tu-dresden.de:/home/s7603593/* $(pwd)
\ No newline at end of file
diff --git a/macroSim_Container/get_from_barnard.sh b/macroSim_Container/get_from_barnard.sh
deleted file mode 100644
index eecc342a5039e52d10dbc309b8d5c0476d8fa0a3..0000000000000000000000000000000000000000
--- a/macroSim_Container/get_from_barnard.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-# build with "chmod +x build_SingularityContainer.sh"
-# run via "./build_SingularityContainer.sh"
-
-# Define your local path for simulation results and figures
-echo "Define output path on your host machine: " 
-# LOCALPATH='/home/klaus/Desktop/test'
-read LOCALPATH
-
-IMAGE_NAME = macrosim_image
-CONTAINER_NAME = macrosim_container
-echo "IMAGE_NAME: $IMAGE_NAME"
-
-# docker build --no-cache=true -t macrosim_image -f Containerfile .
-docker build --no-cache=true -t IMAGE_NAME -f Containerfile .
-
-# docker rm macrosim_container
-
-image_id=$(docker images --quiet | head -1)
-
-echo "image ID used: $image_id"
-
-# Save docker image in .tar-file
-# docker save $image_id -o macrosim_image.tar
-docker save $image_id -o IMAGE_NAME.tar
-
-# Convert docker .tar-file to singularity container
-# singularity build  macrosim_container.sif docker-archive://macrosim_image.tar
-singularity build  CONTAINER_NAME.sif docker-archive://IMAGE_NAME.tar
-
-#Run Singularity Container via:
-# ./macrosim_container.sif python3 /dune/dune-microstructure/microstructure_testsuite/macro-problem-testsuite.py 1 #EXPERIMENT_id
-
-
-# (Optional) Move Container to Barnard.
-echo "Move to Barnard(HPC) ? " 
-
-read HPC_flag 
-
-if [ "$HPC_flag" == "true" ] || [ $HPC_flag -eq 1 ] || [ "$HPC_flag" == "yes" ]
-then
-    echo "Moving to Barnard..." 
-    rsync CONTAINER_NAME.sif s7603593@dataport1.hpc.tu-dresden.de:/data/horse/ws/s7603593-microstructure
-    rsync macrosim.batch  s7603593@dataport1.hpc.tu-dresden.de:/data/horse/ws/s7603593-microstructure
-fi
\ No newline at end of file
diff --git a/macroSim_Container/macrosim.batch b/macroSim_Container/macrosim.batch
index 8ffe52a9c3cb5c47a6226e354943d3839c3cbdca..5f06f48296512f808ea0bedf43f014b633684cca 100644
--- a/macroSim_Container/macrosim.batch
+++ b/macroSim_Container/macrosim.batch
@@ -5,12 +5,11 @@
 #SBATCH --job-name=macro-problem
 #SBATCH --nodes=1
 #SBATCH --ntasks=1
-#SBATCH --time=1:00:00
-#SBATCH --exclusive             # ensure that nobody spoils my measurement
+#SBATCH --time=72:00:00
 #SBATCH --comment=no_monitoring
-#SBATCH --chdir=/data/horse/ws/s7603593-microstructure/experiments
+#SBATCH --chdir=/data/horse/ws/s7603593-microstructure
 #SBATCH --output=macro-problem-log_%a.txt
 #SBATCH --error=simulation-%a.err
-#SBATCH --array=0-1
+#SBATCH --array=0-5
 
 ./macrosim_container.sif python3 /dune/dune-microstructure/testsuite/macro-problem-testsuite.py 1 $SLURM_ARRAY_TASK_ID
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 22120f5558336c143b90180c9b18f1832701e30d..1528e2f5e6dec56e83a57ed0c55d6b637d345893 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,21 +1,18 @@
-#add_executable("dune-microstructure" dune-microstructure.cc)
-#target_link_dune_default_libraries("dune-microstructure")
-#set(CMAKE_BUILD_TYPE Debug)#
-
-
 set(programs Cell-Problem
-             micro-problem
-             macro-problem)
-
+             micro-problem)
 
 foreach(_program ${programs})
   add_executable(${_program} ${_program}.cc)
-  target_link_dune_default_libraries(${_program})
-  add_dune_pythonlibs_flags(${_program})
-  target_link_libraries(${_program})
-#  target_link_libraries(${_program} tinyxml2)
-#  target_compile_options(${_program} PRIVATE "-fpermissive")
 endforeach()
+           
 
+if(dune-functions_VERSION VERSION_GREATER_EQUAL 2.11.0)
+  add_executable("macro-problem" macro-problem.cc)
+  set(programs macro-problem ${programs})
+endif()
 
-# set(CMAKE_BUILD_TYPE Debug)
+foreach(_program ${programs})
+  target_link_dune_default_libraries(${_program})
+  add_dune_pythonlibs_flags(${_program})
+  target_link_libraries(${_program} PUBLIC tinyxml2)
+endforeach()
\ No newline at end of file
diff --git a/src/Cell-Problem.cc b/src/Cell-Problem.cc
index 68946e5526256a437a2ce22f5a1b3d168e144d4b..9e7670004e88063f3251e53eafa9ec5605eea0d9 100644
--- a/src/Cell-Problem.cc
+++ b/src/Cell-Problem.cc
@@ -12,7 +12,7 @@
 #include <dune/common/float_cmp.hh>
 #include <dune/common/math.hh>
 #include <dune/common/fvector.hh>
-#include <dune/common/fmatrix.hh> 
+#include <dune/common/fmatrix.hh>
 
 #include <dune/geometry/quadraturerules.hh>
 
@@ -29,7 +29,7 @@
 #include <dune/istl/spqr.hh>
 #include <dune/istl/preconditioners.hh>
 #include <dune/istl/io.hh>
-#include <dune/istl/eigenvalue/test/matrixinfo.hh> // TEST: compute condition Number 
+#include <dune/istl/eigenvalue/test/matrixinfo.hh> // TEST: compute condition Number
 
 #include <dune/functions/functionspacebases/interpolate.hh>
 #include <dune/functions/backends/istlvectorbackend.hh>
@@ -45,11 +45,11 @@
 #include <dune/fufem/dunepython.hh>
 
 #include <dune/microstructure/matrix_operations.hh>
-#include <dune/microstructure/CorrectorComputer.hh>    
-#include <dune/microstructure/EffectiveQuantitiesComputer.hh>  
-#include <dune/microstructure/prestrainedMaterial.hh>  
+#include <dune/microstructure/CorrectorComputer.hh>
+#include <dune/microstructure/EffectiveQuantitiesComputer.hh>
+#include <dune/microstructure/prestrainedMaterial.hh>
 
-#include <dune/solvers/solvers/umfpacksolver.hh>   //TEST 
+#include <dune/solvers/solvers/umfpacksolver.hh>   //TEST
 
 #include <any>
 #include <variant>
@@ -60,7 +60,7 @@ using namespace Dune;
 using namespace MatrixOperations;
 
 
-using GridView = Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, 3>>::LeafGridView;
+using GridView = Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, 3> >::LeafGridView;
 
 //////////////////////////////////////////////////////////////////////
 // Helper functions for Table-Output
@@ -68,28 +68,28 @@ using GridView = Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, 3>
 /*! Center-aligns string within a field of width w. Pads with blank spaces
     to enforce alignment. */
 std::string center(const std::string s, const int w) {
-    std::stringstream ss, spaces;
-    int padding = w - s.size();                 // count excess room to pad
-    for(int i=0; i<padding/2; ++i)
-        spaces << " ";
-    ss << spaces.str() << s << spaces.str();    // format with padding
-    if(padding>0 && padding%2!=0)               // if odd #, add 1 space
-        ss << " ";
-    return ss.str();
+  std::stringstream ss, spaces;
+  int padding = w - s.size();                   // count excess room to pad
+  for(int i=0; i<padding/2; ++i)
+    spaces << " ";
+  ss << spaces.str() << s << spaces.str();      // format with padding
+  if(padding>0 && padding%2!=0)                 // if odd #, add 1 space
+    ss << " ";
+  return ss.str();
 }
 
 /* Convert double to string with specified number of places after the decimal
    and left padding. */
 template<class type>
 std::string prd(const type x, const int decDigits, const int width) {
-    std::stringstream ss;
-//     ss << std::fixed << std::right;
-    ss << std::scientific << std::right;                     // Use scientific Output!
-    ss.fill(' ');        // fill space around displayed #
-    ss.width(width);     // set  width around displayed #
-    ss.precision(decDigits); // set # places after decimal
-    ss << x;
-    return ss.str();
+  std::stringstream ss;
+  //     ss << std::fixed << std::right;
+  ss << std::scientific << std::right;                       // Use scientific Output!
+  ss.fill(' ');          // fill space around displayed #
+  ss.width(width);       // set  width around displayed #
+  ss.precision(decDigits);   // set # places after decimal
+  ss << x;
+  return ss.str();
 }
 
 /**
@@ -97,12 +97,12 @@ std::string prd(const type x, const int decDigits, const int width) {
  *         Check whether two points are equal on R/Z x R/Z x R
  */
 auto equivalent = [](const FieldVector<double,3>& x, const FieldVector<double,3>& y)
-                {
+                  {
                     return ( (FloatCmp::eq(x[0],y[0]) or FloatCmp::eq(x[0]+1,y[0]) or FloatCmp::eq(x[0]-1,y[0]))
-                            and (FloatCmp::eq(x[1],y[1]) or FloatCmp::eq(x[1]+1,y[1]) or FloatCmp::eq(x[1]-1,y[1]))
-                            and (FloatCmp::eq(x[2],y[2]))
-                        );
-                };
+                             and (FloatCmp::eq(x[1],y[1]) or FloatCmp::eq(x[1]+1,y[1]) or FloatCmp::eq(x[1]-1,y[1]))
+                             and (FloatCmp::eq(x[2],y[2]))
+                             );
+                  };
 
 
 
@@ -110,30 +110,30 @@ auto equivalent = [](const FieldVector<double,3>& x, const FieldVector<double,3>
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 int main(int argc, char *argv[])
 {
-    feenableexcept(FE_INVALID);
-    MPIHelper::instance(argc, argv);
-    
-    Dune::Timer globalTimer;
-
-    if (argc < 3)
-        DUNE_THROW(Exception, "Usage: ./Cell-Problem <python path> <python module without extension>");
-
-    // Start Python interpreter
-    Python::start();
-    auto pyMain = Python::main();
-    pyMain.runStream()
-        << std::endl << "import math"
-        << std::endl << "import sys"
-        << std::endl << "sys.path.append('" << argv[1] << "')"  << std::endl;
-    auto pyModule = pyMain.import(argv[2]);
-
-    ParameterTree parameterSet;
-    pyModule.get("parameterSet").toC(parameterSet);
-    // read possible further parameters from the command line
-    ParameterTreeParser::readOptions(argc, argv, parameterSet);
-    // Print all parameters, to make them appear in the log file
-    std::cout << "Input parameters:" << std::endl;
-    parameterSet.report();
+  feenableexcept(FE_INVALID);
+  MPIHelper::instance(argc, argv);
+
+  Dune::Timer globalTimer;
+
+  if (argc < 3)
+    DUNE_THROW(Exception, "Usage: ./Cell-Problem <python path> <python module without extension>");
+
+  // Start Python interpreter
+  Python::start();
+  auto pyMain = Python::main();
+  pyMain.runStream()
+    << std::endl << "import math"
+    << std::endl << "import sys"
+    << std::endl << "sys.path.append('" << argv[1] << "')"  << std::endl;
+  auto pyModule = pyMain.import(argv[2]);
+
+  ParameterTree parameterSet;
+  pyModule.get("parameterSet").toC(parameterSet);
+  // read possible further parameters from the command line
+  ParameterTreeParser::readOptions(argc, argv, parameterSet);
+  // Print all parameters, to make them appear in the log file
+  std::cout << "Input parameters:" << std::endl;
+  parameterSet.report();
 
   //--- Output setter
   std::string baseName = parameterSet.get("baseName", "CellProblem-result");
@@ -144,32 +144,32 @@ int main(int argc, char *argv[])
 
   constexpr int dim = 3;
 
-  // Debug/Print Options 
+  // Debug/Print Options
   bool print_debug = parameterSet.get<bool>("print_debug", false);
   // VTK-write options
   // bool write_prestrainFunctions  = parameterSet.get<bool>("write_prestrainFunctions", false);  //Not implemented yet.
 
   /**
-  * @brief Generate the grid.
-  *        Corrector Problem Domain (-1/2,1/2)^3.
-  */
+   * @brief Generate the grid.
+   *        Corrector Problem Domain (-1/2,1/2)^3.
+   */
   FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
   FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
 
-  std::array<int,2> numLevels = parameterSet.get<std::array<int,2>>("numLevels", {3,3});
+  std::array<int,2> numLevels = parameterSet.get<std::array<int,2> >("numLevels", {3,3});
   int levelCounter = 0;
-   
-  
+
+
   ///////////////////////////////////
   // 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:: | level | q1 | q2 | q3 | q12 | q13 | q23 | b1 | b2 | b3 |           
-  std::vector<std::variant<std::string, size_t , double>> Storage_Quantities;         
+  //std::vector<std::variant<std::string, size_t , double>> Storage_Error;
+  //--- Storage:: | level | q1 | q2 | q3 | q12 | q13 | q23 | b1 | b2 | b3 |
+  std::vector<std::variant<std::string, size_t , double> > Storage_Quantities;
 
   //--- GridLevel-Loop:
-  for(size_t level = numLevels[0] ; level <= numLevels[1]; level++)     
+  for(size_t level = numLevels[0] ; level <= numLevels[1]; level++)
   {
     std::cout << " ----------------------------------" << std::endl;
     std::cout << "GridLevel: " << level << std::endl;
@@ -186,7 +186,7 @@ int main(int argc, char *argv[])
     using GridView = CellGridType::LeafGridView;
     const GridView gridView_CE = grid_CE.leafGridView();
     if(print_debug)
-       std::cout << "Host grid has " << gridView_CE.size(dim) << " vertices." << std::endl;
+      std::cout << "Host grid has " << gridView_CE.size(dim) << " vertices." << std::endl;
 
     //--- Choose a finite element space for Cell Problem
     using namespace Functions::BasisFactory;
@@ -194,25 +194,25 @@ int main(int argc, char *argv[])
 
     //--- Get PeriodicIndices for periodicBasis (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))
-        for (const auto& v2 : vertices(gridView_CE))
-            if (equivalent(v1.geometry().corner(0), v2.geometry().corner(0)))
-            {
-                periodicIndices.unifyIndexPair({gridView_CE.indexSet().index(v1)}, {gridView_CE.indexSet().index(v2)});
-            }
+      for (const auto& v2 : vertices(gridView_CE))
+        if (equivalent(v1.geometry().corner(0), v2.geometry().corner(0)))
+        {
+          periodicIndices.unifyIndexPair({gridView_CE.indexSet().index(v1)}, {gridView_CE.indexSet().index(v2)});
+        }
 
     Dune::Timer basisSetupTimer;
     //--- Setup first order periodic Lagrange-Basis
     auto Basis_CE = makeBasis(
-        gridView_CE,
-        power<dim>(                                  
+      gridView_CE,
+      power<dim>(
         Functions::BasisFactory::Experimental::periodic(lagrange<1>(), periodicIndices),
         flatLexicographic()
         //blockedInterleaved()   // Not Implemented
-        ));     
+        ));
     std::cout << "Basis setup took " << basisSetupTimer.elapsed() << " seconds " << std::endl;
 
     if(print_debug)
-       std::cout << "power<periodic> basis has " << Basis_CE.dimension() << " degrees of freedom" << std::endl;
+      std::cout << "power<periodic> basis has " << Basis_CE.dimension() << " degrees of freedom" << std::endl;
 
 
 
@@ -239,28 +239,28 @@ int main(int argc, char *argv[])
     std::shared_ptr<MaterialType> material = std::make_shared<MaterialType>(gridView_CE,microstructure,parameterSet,pyModule);
     std::cout << "Material setup took " << materialSetupTimer.elapsed() << " seconds " << std::endl;
 
-    // --- Get scale ratio 
-    // double gamma = parameterSet.get<double>("gamma",1.0); 
+    // --- Get scale ratio
+    // double gamma = parameterSet.get<double>("gamma",1.0);
     std::cout << "scale ratio (gamma) set to : " << material->gamma_ << std::endl;
 
     //--- Compute Correctors
     // auto correctorComputer = CorrectorComputer(Basis_CE, material, log, parameterSet);
     // auto correctorComputer = CorrectorComputer(Basis_CE, materialPointer, log, parameterSet);
-    std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType>>(Basis_CE, material, parameterSet);
+    std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType> >(Basis_CE, material, parameterSet);
     correctorComputer->assemble();
     correctorComputer->solve();
 
     //--- Check Correctors (options):
     if(parameterSet.get<bool>("write_L2Error", false))
-         correctorComputer->computeNorms();
+      correctorComputer->computeNorms();
     if(parameterSet.get<bool>("write_VTK", false))
-         correctorComputer->writeCorrectorsVTK(level);
+      correctorComputer->writeCorrectorsVTK(level);
     //--- Additional Test: check orthogonality (75) from paper:
     if(parameterSet.get<bool>("write_checkOrthogonality", false))
-        correctorComputer->check_Orthogonality();
+      correctorComputer->check_Orthogonality();
     //--- Check symmetry of stiffness matrix
     if(print_debug)
-        correctorComputer->checkSymmetry();
+      correctorComputer->checkSymmetry();
 
     //--- Compute effective quantities
     // auto effectiveQuantitiesComputer = EffectiveQuantitiesComputer(correctorComputer,material);
@@ -269,7 +269,7 @@ int main(int argc, char *argv[])
 
     //--- Write material indicator function to VTK
     if (parameterSet.get<bool>("write_materialFunctions", false))
-        material->writeVTKMaterialFunctions(level);
+      material->writeVTKMaterialFunctions(level);
 
     //--- Get effective quantities
     auto Qeff = effectiveQuantitiesComputer.getQeff();
@@ -281,7 +281,7 @@ int main(int argc, char *argv[])
     //--- Write effective quantities to matlab folder (for symbolic minimization)
     Dune::Timer txtOutputTimer;
     if(parameterSet.get<bool>("EffectiveQuantitiesToTxt", true))
-        effectiveQuantitiesComputer.writeEffectiveQuantitiesToTxt(outputPath);
+      effectiveQuantitiesComputer.writeEffectiveQuantitiesToTxt(outputPath);
     std::cout << "Time to write effective quantities to .txt-files:" << txtOutputTimer.elapsed() << std::endl;
 
 
@@ -318,56 +318,60 @@ int main(int argc, char *argv[])
     log << "mu_gamma=" << Qeff[2][2] << std::endl;           // added for Python-Script
 
 
-  levelCounter++; 
+    levelCounter++;
   } // GridLevel-Loop End
 
-    //////////////////////////////////////////
-    //--- Print Storage
-    //////////////////////////////////////////
-    // Dune::Timer writeTableTimer;
-    int tableWidth = 12;
-    std::cout << center("Levels ",tableWidth)   << " | "
-              << center("q1",tableWidth)        << " | "
-              << center("q2",tableWidth)        << " | "
-              << center("q3",tableWidth)        << " | "
-              << center("q12",tableWidth)       << " | "
-              << center("q13",tableWidth)       << " | "
-              << center("q23",tableWidth)       << " | "
-              << center("b1",tableWidth)        << " | "
-              << center("b2",tableWidth)        << " | "
-              << center("b3",tableWidth)        << " | " << "\n";
-    std::cout << std::string(tableWidth*10 + 3*10, '-')    << "\n";
-    log       << std::string(tableWidth*10 + 3*10, '-')    << "\n";   
-    log       << center("Levels ",tableWidth)   << " | "
-              << center("q1",tableWidth)        << " | "
-              << center("q2",tableWidth)        << " | "
-              << center("q3",tableWidth)        << " | "
-              << center("q12",tableWidth)       << " | "
-              << center("q13",tableWidth)       << " | "
-              << center("q23",tableWidth)       << " | "
-              << center("b1",tableWidth)        << " | "
-              << center("b2",tableWidth)        << " | "
-              << center("b3",tableWidth)        << " | " << "\n";
-    log       << std::string(tableWidth*10 + 3*10, '-')    << "\n";   
-  
-    int StorageCount2 = 0;
-    for(auto& v: Storage_Quantities) 
+  //////////////////////////////////////////
+  //--- Print Storage
+  //////////////////////////////////////////
+  // Dune::Timer writeTableTimer;
+  int tableWidth = 12;
+  std::cout << center("Levels ",tableWidth)   << " | "
+            << center("q1",tableWidth)        << " | "
+            << center("q2",tableWidth)        << " | "
+            << center("q3",tableWidth)        << " | "
+            << center("q12",tableWidth)       << " | "
+            << center("q13",tableWidth)       << " | "
+            << center("q23",tableWidth)       << " | "
+            << center("b1",tableWidth)        << " | "
+            << center("b2",tableWidth)        << " | "
+            << center("b3",tableWidth)        << " | " << "\n";
+  std::cout << std::string(tableWidth*10 + 3*10, '-')    << "\n";
+  log << std::string(tableWidth*10 + 3*10, '-')    << "\n";
+  log << center("Levels ",tableWidth)   << " | "
+      << center("q1",tableWidth)        << " | "
+      << center("q2",tableWidth)        << " | "
+      << center("q3",tableWidth)        << " | "
+      << center("q12",tableWidth)       << " | "
+      << center("q13",tableWidth)       << " | "
+      << center("q23",tableWidth)       << " | "
+      << center("b1",tableWidth)        << " | "
+      << center("b2",tableWidth)        << " | "
+      << center("b3",tableWidth)        << " | " << "\n";
+  log << std::string(tableWidth*10 + 3*10, '-')    << "\n";
+
+  int StorageCount2 = 0;
+  for(auto& v: Storage_Quantities)
+  {
+    std::visit([tableWidth](auto&& arg){
+      std::cout << center(prd(arg,5,1),tableWidth)      << " | ";
+    }, v);
+    std::visit([tableWidth, &log](auto&& arg){
+      log << center(prd(arg,5,1),tableWidth)      << " & ";
+    }, v);
+    StorageCount2++;
+    if(StorageCount2 % 10 == 0 )
     {
-        std::visit([tableWidth](auto&& arg){std::cout << center(prd(arg,5,1),tableWidth)      << " | ";}, v);
-        std::visit([tableWidth, &log](auto&& arg){log << center(prd(arg,5,1),tableWidth)      << " & ";}, v);
-        StorageCount2++;
-        if(StorageCount2 % 10 == 0 )
-        {
-            std::cout << std::endl;
-            log << std::endl;
-        }
+      std::cout << std::endl;
+      log << std::endl;
     }
-    std::cout << std::string(tableWidth*10 + 3*10, '-') << "\n";
-    log       << std::string(tableWidth*10 + 3*10, '-') << "\n";  
+  }
+  std::cout << std::string(tableWidth*10 + 3*10, '-') << "\n";
+  log << std::string(tableWidth*10 + 3*10, '-') << "\n";
 
-    // std::cout << "Time to write table:" << writeTableTimer.elapsed() << std::endl;
+  // std::cout << "Time to write table:" << writeTableTimer.elapsed() << std::endl;
 
-    log.close();
+  log.close();
 
-    std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
+  std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
 }
diff --git a/src/Compute_MuGamma.cc b/src/Compute_MuGamma.cc
index 8d15b40160437f6893b3beb537a8a351cd426a67..13cf84d7eeb8ce637f458a42279ab564d3a011a2 100644
--- a/src/Compute_MuGamma.cc
+++ b/src/Compute_MuGamma.cc
@@ -58,9 +58,9 @@ using namespace Dune;
 // ------------------------------------------------------------------------
 //
 // Solving the 2D "Poisson-Type" Equation ( (38) in the draft)
-// in order to compute mu_Gamma in a faster manner 
+// in order to compute mu_Gamma in a faster manner
 //
-// ------------------------------------------------------------------------ 
+// ------------------------------------------------------------------------
 
 
 
@@ -69,115 +69,115 @@ void assembleElementStiffnessMatrix(const LocalView& localView,
                                     Matrix& elementMatrix,
                                     const LocalFunction& mu,
                                     const double gamma
-                                   )
+                                    )
 {
-    using Element = typename LocalView::Element;
-    constexpr int dim = Element::dimension;
-    const Element element = localView.element();
-    auto geometry = element.geometry();
+  using Element = typename LocalView::Element;
+  constexpr int dim = Element::dimension;
+  const Element element = localView.element();
+  auto geometry = element.geometry();
 
 
-    const auto& localFiniteElement = localView.tree().finiteElement();
-    const auto nSf = localFiniteElement.localBasis().size();
-    
-    
-//     std::cout << "nSf:" << nSf << std::endl;
-    
-    elementMatrix.setSize(localView.size(),localView.size());
-    elementMatrix = 0;
-
-//     int orderQR = 2 * (dim*localFiniteElement.localBasis().order()-1) + 5;   // doesnt change anything
-    int orderQR = 2 * (dim*localFiniteElement.localBasis().order()-1);
-//     int orderQR = 2 * (localFiniteElement.localBasis().order()-1);
-    const auto& quadRule = QuadratureRules<double, dim>::rule(element.type(),orderQR);
-    
-//     std::cout << "QuadRule-Order:" << orderQR << std::endl;
-    
-//     double muValue = 0.0;
-//     std::cout << " ------------------------- one ELEMENT ------------------------" << std::endl;
-
-    for (const auto& quadPoint : quadRule)
+  const auto& localFiniteElement = localView.tree().finiteElement();
+  const auto nSf = localFiniteElement.localBasis().size();
+
+
+  //     std::cout << "nSf:" << nSf << std::endl;
+
+  elementMatrix.setSize(localView.size(),localView.size());
+  elementMatrix = 0;
+
+  //     int orderQR = 2 * (dim*localFiniteElement.localBasis().order()-1) + 5;   // doesnt change anything
+  int orderQR = 2 * (dim*localFiniteElement.localBasis().order()-1);
+  //     int orderQR = 2 * (localFiniteElement.localBasis().order()-1);
+  const auto& quadRule = QuadratureRules<double, dim>::rule(element.type(),orderQR);
+
+  //     std::cout << "QuadRule-Order:" << orderQR << std::endl;
+
+  //     double muValue = 0.0;
+  //     std::cout << " ------------------------- one ELEMENT ------------------------" << std::endl;
+
+  for (const auto& quadPoint : quadRule)
+  {
+
+
+    const auto& quadPos = quadPoint.position();
+
+    //         std::cout << " quadPOS: " << quadPos << std::endl;
+    // TEST
+    //         double muValue = mu(quadPos);
+    //         std::cout << "muValue:" << muValue << std::endl;
+
+    const auto jacobian = geometry.jacobianInverseTransposed(quadPos);
+    const double integrationElement = geometry.integrationElement(quadPos);
+
+
+
+    std::vector<FieldMatrix<double,1,dim> > referenceGradients;
+    localFiniteElement.localBasis().evaluateJacobian(quadPos,referenceGradients);
+
+    // Compute the shape function gradients on the grid element
+    std::vector<FieldVector<double,dim> > gradients(referenceGradients.size());
+
+    for (size_t i=0; i<gradients.size(); i++)
+      jacobian.mv(referenceGradients[i][0], gradients[i]);                                     //TODO ? passt..
+
+
+    //         // print all gradients  //TEST
+    //         FieldVector<double,dim> tmp = {0.0 , 0.0};
+    //         for (size_t i=0; i < nSf; i++)
+    //         {
+    //             printvector(std::cout, gradients[i], "gradients[i]", "--" );
+    //
+    //
+    //             tmp[0] += gradients[i][0];
+    //             tmp[1] += gradients[i][1];
+    //
+    // //         tmp[0] += coeffVector[globalIdx]*gradients[i][0]; // 3D-Version
+    // //         tmp[1] += coeffVector[globalIdx]*gradients[i][2];
+    // //         printvector(std::cout, tmp, "tmp", "--" );
+    //
+    //         }
+    //         printvector(std::cout, tmp, "sum of basisfunction Gradients", "--" );
+
+    for (size_t p=0; p<elementMatrix.N(); p++)
     {
-        
-    
-        const auto& quadPos = quadPoint.position();
-        
-//         std::cout << " quadPOS: " << quadPos << std::endl;
-                // TEST 
-//         double muValue = mu(quadPos);
-//         std::cout << "muValue:" << muValue << std::endl;
-
-        const auto jacobian = geometry.jacobianInverseTransposed(quadPos);
-        const double integrationElement = geometry.integrationElement(quadPos);
-
-
-        
-        std::vector<FieldMatrix<double,1,dim> > referenceGradients;
-        localFiniteElement.localBasis().evaluateJacobian(quadPos,referenceGradients);
-        
-        // Compute the shape function gradients on the grid element
-        std::vector<FieldVector<double,dim> > gradients(referenceGradients.size());
-        
-        for (size_t i=0; i<gradients.size(); i++)
-          jacobian.mv(referenceGradients[i][0], gradients[i]);                                 //TODO ? passt..
-   
-        
-//         // print all gradients  //TEST 
-//         FieldVector<double,dim> tmp = {0.0 , 0.0};
-//         for (size_t i=0; i < nSf; i++)
-//         {
-//             printvector(std::cout, gradients[i], "gradients[i]", "--" ); 
-// 
-//         
-//             tmp[0] += gradients[i][0];
-//             tmp[1] += gradients[i][1];
-//         
-// //         tmp[0] += coeffVector[globalIdx]*gradients[i][0]; // 3D-Version
-// //         tmp[1] += coeffVector[globalIdx]*gradients[i][2];
-// //         printvector(std::cout, tmp, "tmp", "--" ); 
-// 
-//         }
-//         printvector(std::cout, tmp, "sum of basisfunction Gradients", "--" ); 
-        
-        for (size_t p=0; p<elementMatrix.N(); p++)
-        {
-            for (size_t q=0; q<elementMatrix.M(); q++)
-            {
-//                 auto localRow = localView.tree().localIndex(p);  // VERTAUSCHT?!?!
-//                 auto localCol = localView.tree().localIndex(q);
-                auto localRow = localView.tree().localIndex(q);
-                auto localCol = localView.tree().localIndex(p);
-                
-//                 auto value = mu(quadPos)*(2.0* gradients[p][0] * gradients[q][0])+ mu(quadPos)*((1.0/(std::pow(gamma,2)))*(gradients[p][1] * gradients[q][1]));
-//                 auto value = (mu(quadPos)*gradients[p][0] * gradients[q][0])+ ((1.0/gamma)*(gradients[p][1] * gradients[q][1]));
-                
-
-                
-//                 std::cout << "gradients[p][0]" << gradients[p][0] << std::endl; 
-//                 std::cout << "gradients[q][0]" << gradients[q][0] << std::endl; 
-//                 std::cout << "(1.0/std::pow(gamma,2))*gradients[p][1]" << (1.0/std::pow(gamma,2))*gradients[p][1]<< std::endl; 
-                
-                
-
-//                 auto value3 = mu(quadPos)*(1.0/gamma)*gradients[p][2];   // 3D-Version
-//                 auto value4 = value3*gradients[q][2];                    // 3D-Version
-                
-                auto value1 = 2.0*mu(quadPos)* gradients[p][0] *gradients[q][0];         //#1 
-//                 auto value1 = 2.0*mu(quadPos)*sqrt(2.0)* gradients[p][0] *gradients[q][0];                          // TEST TODO warum passt es damit besser bei gamma = 1.0 ??? 
-//                 auto value2 = mu(quadPos)*(1.0/std::pow(gamma,2))*gradients[p][1] * gradients[q][1] ;  
-                
-                
-            
-                
-                
-                auto value2 = 2.0*mu(quadPos)*(1.0/std::pow(gamma,2))*gradients[p][1] * gradients[q][1] ;  //#1  TEST FAKTOR 2 hat hier gefehlt?!?! 
-                
-                auto value = value1 + value2;
-                
-                elementMatrix[localRow][localCol] += value * quadPoint.weight() * integrationElement;
-            }
-        }
+      for (size_t q=0; q<elementMatrix.M(); q++)
+      {
+        //                 auto localRow = localView.tree().localIndex(p);  // VERTAUSCHT?!?!
+        //                 auto localCol = localView.tree().localIndex(q);
+        auto localRow = localView.tree().localIndex(q);
+        auto localCol = localView.tree().localIndex(p);
+
+        //                 auto value = mu(quadPos)*(2.0* gradients[p][0] * gradients[q][0])+ mu(quadPos)*((1.0/(std::pow(gamma,2)))*(gradients[p][1] * gradients[q][1]));
+        //                 auto value = (mu(quadPos)*gradients[p][0] * gradients[q][0])+ ((1.0/gamma)*(gradients[p][1] * gradients[q][1]));
+
+
+
+        //                 std::cout << "gradients[p][0]" << gradients[p][0] << std::endl;
+        //                 std::cout << "gradients[q][0]" << gradients[q][0] << std::endl;
+        //                 std::cout << "(1.0/std::pow(gamma,2))*gradients[p][1]" << (1.0/std::pow(gamma,2))*gradients[p][1]<< std::endl;
+
+
+
+        //                 auto value3 = mu(quadPos)*(1.0/gamma)*gradients[p][2];   // 3D-Version
+        //                 auto value4 = value3*gradients[q][2];                    // 3D-Version
+
+        auto value1 = 2.0*mu(quadPos)* gradients[p][0] *gradients[q][0];                 //#1
+        //                 auto value1 = 2.0*mu(quadPos)*sqrt(2.0)* gradients[p][0] *gradients[q][0];                          // TEST TODO warum passt es damit besser bei gamma = 1.0 ???
+        //                 auto value2 = mu(quadPos)*(1.0/std::pow(gamma,2))*gradients[p][1] * gradients[q][1] ;
+
+
+
+
+
+        auto value2 = 2.0*mu(quadPos)*(1.0/std::pow(gamma,2))*gradients[p][1] * gradients[q][1] ;          //#1  TEST FAKTOR 2 hat hier gefehlt?!?!
+
+        auto value = value1 + value2;
+
+        elementMatrix[localRow][localCol] += value * quadPoint.weight() * integrationElement;
+      }
     }
+  }
 }
 
 
@@ -190,114 +190,114 @@ void assembleElementVolumeTerm(const LocalView& localView,
                                LocalFunction& mu,
                                const Force& forceTerm)
 {
-    using Element = typename LocalView::Element;
-    auto element = localView.element();
-    auto geometry = element.geometry();
-    
+  using Element = typename LocalView::Element;
+  auto element = localView.element();
+  auto geometry = element.geometry();
 
-    constexpr int dim = Element::dimension;
-    // Set of shape functions for a single element
-    const auto& localFiniteElement = localView.tree().finiteElement();
-    const auto nSf = localFiniteElement.localBasis().size();
-    // Set all entries to zero
-    elementRhs.resize(localFiniteElement.size());
-    elementRhs = 0;
-    
-    // A quadrature rule
-//     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;
-    int orderQR = 2 * (dim*localFiniteElement.localBasis().order()-1);
-//     int orderQR = 2 * (localFiniteElement.localBasis().order()-1);
-    
-//     std::cout << "elementRhs.size():" << elementRhs.size() << std::endl;
-    
-    
-    
-    const auto& quadRule = QuadratureRules<double,dim>::rule(element.type(), orderQR);
-
-    for (const auto& quadPoint : quadRule)
+
+  constexpr int dim = Element::dimension;
+  // Set of shape functions for a single element
+  const auto& localFiniteElement = localView.tree().finiteElement();
+  const auto nSf = localFiniteElement.localBasis().size();
+  // Set all entries to zero
+  elementRhs.resize(localFiniteElement.size());
+  elementRhs = 0;
+
+  // A quadrature rule
+  //     int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;
+  int orderQR = 2 * (dim*localFiniteElement.localBasis().order()-1);
+  //     int orderQR = 2 * (localFiniteElement.localBasis().order()-1);
+
+  //     std::cout << "elementRhs.size():" << elementRhs.size() << std::endl;
+
+
+
+  const auto& quadRule = QuadratureRules<double,dim>::rule(element.type(), orderQR);
+
+  for (const auto& quadPoint : quadRule)
+  {
+    const FieldVector<double,dim>& quadPos = quadPoint.position();
+
+    const double integrationElement = element.geometry().integrationElement(quadPos);
+    //         double functionValue = forceTerm(element.geometry().global(quadPos));
+
+    // Evaluate all shape function values at this point
+    //         std::vector<FieldVector<double,1> > shapeFunctionValues;
+    //         localFiniteElement.localBasis().evaluateFunction(quadPos, shapeFunctionValues);
+
+    const auto jacobian = geometry.jacobianInverseTransposed(quadPos);
+
+    std::vector<FieldMatrix<double,1,dim> > referenceGradients;
+    localFiniteElement.localBasis().evaluateJacobian(quadPos,referenceGradients);
+
+    // Compute the shape function gradients on the grid element
+    std::vector<FieldVector<double,dim> > gradients(referenceGradients.size());
+    for (size_t i=0; i<gradients.size(); i++)
+      jacobian.mv(referenceGradients[i][0], gradients[i]);
+
+
+
+    // Actually compute the vector entries
+    for (size_t p=0; p<nSf; p++)
     {
-        const FieldVector<double,dim>& quadPos = quadPoint.position();
-        
-        const double integrationElement = element.geometry().integrationElement(quadPos);
-//         double functionValue = forceTerm(element.geometry().global(quadPos));
-
-        // Evaluate all shape function values at this point
-//         std::vector<FieldVector<double,1> > shapeFunctionValues;
-//         localFiniteElement.localBasis().evaluateFunction(quadPos, shapeFunctionValues);
-        
-        const auto jacobian = geometry.jacobianInverseTransposed(quadPos);
-        
-        std::vector<FieldMatrix<double,1,dim> > referenceGradients;
-        localFiniteElement.localBasis().evaluateJacobian(quadPos,referenceGradients);
-        
-        // Compute the shape function gradients on the grid element
-        std::vector<FieldVector<double,dim> > gradients(referenceGradients.size());
-        for (size_t i=0; i<gradients.size(); i++)
-          jacobian.mv(referenceGradients[i][0], gradients[i]);
-        
-        
-        
-        // Actually compute the vector entries
-        for (size_t p=0; p<nSf; p++)
-        {
-            auto localIndex = localView.tree().localIndex(p);
-//             elementRhs[localIndex] += shapeFunctionValues[p] *  forceTerm(quadPos) * quadPoint.weight() * integrationElement;
-//             auto value = shapeFunctionValues[p]*  (sqrt(2.0)*mu(quadPos) *forceTerm(quadPos));
-//             auto value = -1.0*gradients[p][0] *  (sqrt(2.0)*mu(quadPos) *forceTerm(quadPos));             //NEGATIVE!!! TODO
-//             auto value = -2.0*mu(quadPos)*(sqrt(2.0)*forceTerm(quadPos))*gradients[p][0]  ;   
-//             auto value = -1.0*mu(quadPos)*forceTerm(quadPos)*gradients[p][0]  ;
-            
-            
-            
-            
-//             auto value = -2.0*sqrt(2.0)*mu(quadPos)*forceTerm(quadPos)*gradients[p][0];   //#1
-            
-            
-            auto value = 2.0*sqrt(2.0)*mu(quadPos)*forceTerm(quadPos)*gradients[p][0];  // TEST
-
-            
-            
-            
-            
-//             auto value = 2.0*mu(quadPos)*sqrt(2.0)*forceTerm(quadPos)*gradients[p][0]; 
-//             auto value = -2.0*mu(quadPos)*sqrt(2.0)*quadPos[1]*gradients[p][0];    //TEST
-//             std::cout << "value:" << value << std::endl;
-            
-//             std::cout << "forceTerm(quadPos):" << forceTerm(quadPos) << std::endl;
-//             std::cout << "quadPos:" << quadPos << std::endl;
-//             std::cout << "integrationElement:" << integrationElement << std::endl;
-            
-//             auto value = -1.0*sqrt(2.0)*forceTerm(quadPos)*gradients[p][0]  ;   //TEST
-            
-//             auto value = -1.0*mu(quadPos)*sqrt(2.0)*forceTerm(quadPos)*forceTerm(quadPos)*gradients[p][0]; //TEST
-            
-            elementRhs[localIndex] += value * quadPoint.weight() * integrationElement;
-        }
+      auto localIndex = localView.tree().localIndex(p);
+      //             elementRhs[localIndex] += shapeFunctionValues[p] *  forceTerm(quadPos) * quadPoint.weight() * integrationElement;
+      //             auto value = shapeFunctionValues[p]*  (sqrt(2.0)*mu(quadPos) *forceTerm(quadPos));
+      //             auto value = -1.0*gradients[p][0] *  (sqrt(2.0)*mu(quadPos) *forceTerm(quadPos));             //NEGATIVE!!! TODO
+      //             auto value = -2.0*mu(quadPos)*(sqrt(2.0)*forceTerm(quadPos))*gradients[p][0]  ;
+      //             auto value = -1.0*mu(quadPos)*forceTerm(quadPos)*gradients[p][0]  ;
+
+
+
+
+      //             auto value = -2.0*sqrt(2.0)*mu(quadPos)*forceTerm(quadPos)*gradients[p][0];   //#1
+
+
+      auto value = 2.0*sqrt(2.0)*mu(quadPos)*forceTerm(quadPos)*gradients[p][0];        // TEST
+
+
+
+
+
+      //             auto value = 2.0*mu(quadPos)*sqrt(2.0)*forceTerm(quadPos)*gradients[p][0];
+      //             auto value = -2.0*mu(quadPos)*sqrt(2.0)*quadPos[1]*gradients[p][0];    //TEST
+      //             std::cout << "value:" << value << std::endl;
+
+      //             std::cout << "forceTerm(quadPos):" << forceTerm(quadPos) << std::endl;
+      //             std::cout << "quadPos:" << quadPos << std::endl;
+      //             std::cout << "integrationElement:" << integrationElement << std::endl;
+
+      //             auto value = -1.0*sqrt(2.0)*forceTerm(quadPos)*gradients[p][0]  ;   //TEST
+
+      //             auto value = -1.0*mu(quadPos)*sqrt(2.0)*forceTerm(quadPos)*forceTerm(quadPos)*gradients[p][0]; //TEST
+
+      elementRhs[localIndex] += value * quadPoint.weight() * integrationElement;
     }
+  }
 }
 // Get the occupation pattern of the stiffness matrix
 template<class Basis>
 void getOccupationPattern(const Basis& basis, MatrixIndexSet& nb)
 {
-    nb.resize(basis.size(), basis.size());
-    auto gridView = basis.gridView();
-    // A loop over all elements of the grid
-    auto localView = basis.localView();
-    for (const auto& element : elements(gridView))
+  nb.resize(basis.size(), basis.size());
+  auto gridView = basis.gridView();
+  // A loop over all elements of the grid
+  auto localView = basis.localView();
+  for (const auto& element : elements(gridView))
+  {
+    localView.bind(element);
+    for (size_t i=0; i<localView.size(); i++)
     {
-        localView.bind(element);
-        for (size_t i=0; i<localView.size(); i++)
-        {
-            // The global index of the i-th vertex of the element
-            auto row = localView.index(i);
-            for (size_t j=0; j<localView.size(); j++ )
-            {
-                // The global index of the j-th vertex of the element
-                auto col = localView.index(j);
-                nb.add(row,col);
-            }
-        }
+      // The global index of the i-th vertex of the element
+      auto row = localView.index(i);
+      for (size_t j=0; j<localView.size(); j++ )
+      {
+        // The global index of the j-th vertex of the element
+        auto col = localView.index(j);
+        nb.add(row,col);
+      }
     }
+  }
 }
 /** \brief Assemble the Laplace stiffness matrix on the given grid view */
 template<class Basis, class Matrix, class Vector, class LocalFunction, class Force>
@@ -308,61 +308,61 @@ void assemblePoissonProblem(const Basis& basis,
                             const Force& forceTerm,
                             const double gamma)
 {
-    auto gridView = basis.gridView();
+  auto gridView = basis.gridView();
+
+
+  MatrixIndexSet occupationPattern;
+  getOccupationPattern(basis, occupationPattern);
+  occupationPattern.exportIdx(matrix);
+  matrix = 0;
+
+
+  auto loadGVF  = Dune::Functions::makeGridViewFunction(forceTerm, basis.gridView());
+  auto loadFunctional = localFunction(loadGVF);
 
+  b.resize(basis.dimension());
+  b = 0;
+
+  auto localView = basis.localView();
+
+  for (const auto& element : elements(gridView))
+  {
+
+    localView.bind(element);
+    muLocal.bind(element);
+    loadFunctional.bind(element);
 
-    MatrixIndexSet occupationPattern;
-    getOccupationPattern(basis, occupationPattern);
-    occupationPattern.exportIdx(matrix);
-    matrix = 0;
-    
-    
-    auto loadGVF  = Dune::Functions::makeGridViewFunction(forceTerm, basis.gridView());
-    auto loadFunctional = localFunction(loadGVF);      
 
-    b.resize(basis.dimension());
-    b = 0;
+    //         Dune::Matrix<double> elementMatrix;
+    Dune::Matrix<FieldMatrix<double,1,1> > elementMatrix;
+    //         Dune::Matrix<FieldMatrix<double,1,1> > elementMatrix;
+    assembleElementStiffnessMatrix(localView, elementMatrix, muLocal, gamma);
 
-    auto localView = basis.localView();
-    
-    for (const auto& element : elements(gridView))
+    //         std::cout << "elementMatrix.N() "<<  elementMatrix.N() << std::endl;
+    //         std::cout << "elementMatrix.M() "  << elementMatrix.M() << std::endl;
+
+
+    for(size_t p=0; p<elementMatrix.N(); p++)
     {
+      auto row = localView.index(p);
+      for (size_t q=0; q<elementMatrix.M(); q++ )
+      {
+        auto col = localView.index(q);
+        matrix[row][col] += elementMatrix[p][q];
+      }
+    }
 
-        localView.bind(element);
-        muLocal.bind(element);
-        loadFunctional.bind(element);
-        
-        
-//         Dune::Matrix<double> elementMatrix;
-        Dune::Matrix<FieldMatrix<double,1,1> > elementMatrix;
-//         Dune::Matrix<FieldMatrix<double,1,1> > elementMatrix;
-        assembleElementStiffnessMatrix(localView, elementMatrix, muLocal, gamma);
-
-//         std::cout << "elementMatrix.N() "<<  elementMatrix.N() << std::endl;
-//         std::cout << "elementMatrix.M() "  << elementMatrix.M() << std::endl;
-        
-        
-        for(size_t p=0; p<elementMatrix.N(); p++)
-        {
-            auto row = localView.index(p);
-            for (size_t q=0; q<elementMatrix.M(); q++ )
-            {
-                auto col = localView.index(q);
-                matrix[row][col] += elementMatrix[p][q];
-            }
-        }
 
-        
-//         BlockVector<double> elementRhs;
-        BlockVector<FieldVector<double,1> > elementRhs;
-        assembleElementVolumeTerm(localView, elementRhs, muLocal, loadFunctional);
-        for (size_t p=0; p<elementRhs.size(); p++)
-        {
-            // The global index of the p-th vertex of the element
-            auto row = localView.index(p);
-            b[row] += elementRhs[p];
-        }
+    //         BlockVector<double> elementRhs;
+    BlockVector<FieldVector<double,1> > elementRhs;
+    assembleElementVolumeTerm(localView, elementRhs, muLocal, loadFunctional);
+    for (size_t p=0; p<elementRhs.size(); p++)
+    {
+      // The global index of the p-th vertex of the element
+      auto row = localView.index(p);
+      b[row] += elementRhs[p];
     }
+  }
 }
 
 
@@ -372,145 +372,145 @@ void assemblePoissonProblem(const Basis& basis,
 template<class Basis, class Vector, class LocalFunc1, class LocalFunc2>
 double computeMuGamma(const Basis& basis,
                       Vector& coeffVector,
-                      const double gamma, 
+                      const double gamma,
                       LocalFunc1& mu,
                       LocalFunc2& Func
-                     )
+                      )
 {
 
 
-//   constexpr int dim = Basis::LocalView::Element::dimension;
-  
+  //   constexpr int dim = Basis::LocalView::Element::dimension;
+
   double output = 0.0;
   double Term1 = 0.0;
   double Term2 = 0.0;
   double Term11 = 0.0;
   constexpr int dim = 2;
-//   constexpr int dim = 3;
+  //   constexpr int dim = 3;
   auto localView = basis.localView();
-  
-//   auto solutionFunction = Functions::makeDiscreteGlobalBasisFunction<double>(basis, coeffVector);
-//   auto localSol = localFunction(solutionFunction);
-  
-//   auto loadGVF  = Dune::Functions::makeGridViewFunction(x3Fun, basis.gridView());
-//   auto x3Functional = localFunction(loadGVF);  
-  
-  
-  
-  
+
+  //   auto solutionFunction = Functions::makeDiscreteGlobalBasisFunction<double>(basis, coeffVector);
+  //   auto localSol = localFunction(solutionFunction);
+
+  //   auto loadGVF  = Dune::Functions::makeGridViewFunction(x3Fun, basis.gridView());
+  //   auto x3Functional = localFunction(loadGVF);
+
+
+
+
   double area = 0.0;
-  
+
   for(const auto& element : elements(basis.gridView()))
   {
-      
-//         std::cout << " ------------------------- one ELEMENT ------------------------" << std::endl;
-        double elementEnergy1 = 0.0;
-        double elementEnergy2 = 0.0;
-        
-        localView.bind(element);
-        mu.bind(element);
+
+    //         std::cout << " ------------------------- one ELEMENT ------------------------" << std::endl;
+    double elementEnergy1 = 0.0;
+    double elementEnergy2 = 0.0;
+
+    localView.bind(element);
+    mu.bind(element);
     //     x3Functional.bind(element);
-        Func.bind(element);
-        
-        auto geometry = element.geometry();
-        const auto& localFiniteElement = localView.tree().finiteElement();
-        const auto nSf = localFiniteElement.localBasis().size();
+    Func.bind(element);
 
-//         int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;
-        int orderQR = 2 * (dim*localFiniteElement.localBasis().order()-1);
+    auto geometry = element.geometry();
+    const auto& localFiniteElement = localView.tree().finiteElement();
+    const auto nSf = localFiniteElement.localBasis().size();
+
+    //         int orderQR = 2*(dim*localFiniteElement.localBasis().order()-1)+5;
+    int orderQR = 2 * (dim*localFiniteElement.localBasis().order()-1);
     //     int orderQR = 2 * (localFiniteElement.localBasis().order()-1);
-        const auto& quad = QuadratureRules<double, dim>::rule(element.type(), orderQR);            // TODO WARUM HIER KEINE COLOR ?? ERROR
-        
+    const auto& quad = QuadratureRules<double, dim>::rule(element.type(), orderQR);                // TODO WARUM HIER KEINE COLOR ?? ERROR
+
     //     std::cout << " ------------------------- one ELEMENT ------------------------" << std::endl;
 
-        for(const auto& quadPoint : quad)
-        {
-            const auto& quadPos = quadPoint.position();
-            //       const FieldVector<double,dim>& quadPos = quadPoint.position();
-            //       std::cout << " quadPOS: " << quadPos << std::endl;
+    for(const auto& quadPoint : quad)
+    {
+      const auto& quadPos = quadPoint.position();
+      //       const FieldVector<double,dim>& quadPos = quadPoint.position();
+      //       std::cout << " quadPOS: " << quadPos << std::endl;
 
-            
-            const auto jacobianInverseTransposed = geometry.jacobianInverseTransposed(quadPos);
-            const double integrationElement = geometry.integrationElement(quadPos);
-            
-            area += quadPoint.weight() * integrationElement;
-            
-            std::vector< FieldMatrix<double, 1, dim>> referenceGradients;
-            localFiniteElement.localBasis().evaluateJacobian(quadPos,referenceGradients);
-            
-            // Compute the shape function gradients on the grid element
-            std::vector<FieldVector<double,dim>> gradients(referenceGradients.size());
-            
-            for (size_t i=0; i<gradients.size(); i++)
-                jacobianInverseTransposed.mv(referenceGradients[i][0], gradients[i]);
-            
-            FieldVector<double,dim> tmp(0.0);
-        //       std::cout << "integrationElement :" << integrationElement << std::endl;
-        //       std::cout << "quadPoint.weight() :" << quadPoint.weight() << std::endl;
-            
-            for (size_t i=0; i < nSf; i++)
-            {
-                size_t localIdx = localView.tree().localIndex(i);  // hier i:leafIdx
-                size_t globalIdx = localView.index(localIdx);
-        //         printvector(std::cout, gradients[i], "gradients[i]", "--" ); 
+
+      const auto jacobianInverseTransposed = geometry.jacobianInverseTransposed(quadPos);
+      const double integrationElement = geometry.integrationElement(quadPos);
+
+      area += quadPoint.weight() * integrationElement;
+
+      std::vector< FieldMatrix<double, 1, dim> > referenceGradients;
+      localFiniteElement.localBasis().evaluateJacobian(quadPos,referenceGradients);
+
+      // Compute the shape function gradients on the grid element
+      std::vector<FieldVector<double,dim> > gradients(referenceGradients.size());
+
+      for (size_t i=0; i<gradients.size(); i++)
+        jacobianInverseTransposed.mv(referenceGradients[i][0], gradients[i]);
+
+      FieldVector<double,dim> tmp(0.0);
+      //       std::cout << "integrationElement :" << integrationElement << std::endl;
+      //       std::cout << "quadPoint.weight() :" << quadPoint.weight() << std::endl;
+
+      for (size_t i=0; i < nSf; i++)
+      {
+        size_t localIdx = localView.tree().localIndex(i);          // hier i:leafIdx
+        size_t globalIdx = localView.index(localIdx);
+        //         printvector(std::cout, gradients[i], "gradients[i]", "--" );
         //         std::cout << "coeffVector[globalIdx]:" << coeffVector[globalIdx] << std::endl;
-                tmp[0] += coeffVector[globalIdx]*gradients[i][0];
-                tmp[1] += coeffVector[globalIdx]*gradients[i][1];
+        tmp[0] += coeffVector[globalIdx]*gradients[i][0];
+        tmp[1] += coeffVector[globalIdx]*gradients[i][1];
         //         tmp[0] += coeffVector[globalIdx]*gradients[i][0]; // 3D-Version
         //         tmp[1] += coeffVector[globalIdx]*gradients[i][2];
-        //         printvector(std::cout, tmp, "tmp", "--" ); 
-            }
-        //       printvector(std::cout, tmp, "gradient_w", "--" );
-            
-        //       auto value1 = std::pow( ((quadPos[1]/sqrt(2.0))+ (tmp[0]/2.0)) ,2); //TEST
-            
-            
-            
-            auto q1 = (Func(quadPos)/sqrt(2.0));   //#1
-            auto q2 = (tmp[0]/2.0);                //#1
-            
-            
-//             auto q2 = (tmp[0]/sqrt(2.0));  // TEST !!!!!!!!!!
-            
-            
-            
-            
+        //         printvector(std::cout, tmp, "tmp", "--" );
+      }
+      //       printvector(std::cout, tmp, "gradient_w", "--" );
 
-            // CHECK : BEITRÄGE CHECKEN!!!!
-            
-//             std::cout << "Beitrag1: " << q2 << std::endl;
-//             std::cout << "Beitrag2: " << (tmp[1]/(2.0*gamma))  << std::endl;
-//             
-//             
-//             
-            
-            auto q3 = q1 - q2;              // TEST
-            
-//             auto q3 = q1 + q2;              // #1      
-            auto value1 = std::pow(q3,2);
+      //       auto value1 = std::pow( ((quadPos[1]/sqrt(2.0))+ (tmp[0]/2.0)) ,2); //TEST
 
-            
-            
-//             auto value2 = std::pow( (tmp[1]/(2.0*gamma) )  , 2);
-            auto value2 = std::pow( (tmp[1]/(sqrt(2.0)*gamma) )  , 2);
 
-            
-            
-//             auto value = 2.0*mu(quadPos)*(2.0*value1 + value2);
-            
 
-            
-            elementEnergy1 +=  2.0*mu(quadPos)* 2.0*value1  * quadPoint.weight() * integrationElement;
-            elementEnergy2 +=  2.0*mu(quadPos)* value2  * quadPoint.weight() * integrationElement;
-        //       std::cout << "output:" << output << std::endl;
-        }
-//         std::cout << "elementEnergy:" << elementEnergy << std::endl;
+      auto q1 = (Func(quadPos)/sqrt(2.0));         //#1
+      auto q2 = (tmp[0]/2.0);                      //#1
+
+
+      //             auto q2 = (tmp[0]/sqrt(2.0));  // TEST !!!!!!!!!!
+
+
+
+
+
+      // CHECK : BEITRÄGE CHECKEN!!!!
+
+      //             std::cout << "Beitrag1: " << q2 << std::endl;
+      //             std::cout << "Beitrag2: " << (tmp[1]/(2.0*gamma))  << std::endl;
+      //
+      //
+      //
+
+      auto q3 = q1 - q2;                    // TEST
+
+      //             auto q3 = q1 + q2;              // #1
+      auto value1 = std::pow(q3,2);
+
+
+
+      //             auto value2 = std::pow( (tmp[1]/(2.0*gamma) )  , 2);
+      auto value2 = std::pow( (tmp[1]/(sqrt(2.0)*gamma) )  , 2);
+
 
-        Term1 += elementEnergy1;
-        Term2 += elementEnergy2;
-        
-//         std::cout << "output: " << output << std::endl;
-  } 
+
+      //             auto value = 2.0*mu(quadPos)*(2.0*value1 + value2);
+
+
+
+      elementEnergy1 +=  2.0*mu(quadPos)* 2.0*value1  * quadPoint.weight() * integrationElement;
+      elementEnergy2 +=  2.0*mu(quadPos)* value2  * quadPoint.weight() * integrationElement;
+      //       std::cout << "output:" << output << std::endl;
+    }
+    //         std::cout << "elementEnergy:" << elementEnergy << std::endl;
+
+    Term1 += elementEnergy1;
+    Term2 += elementEnergy2;
+
+    //         std::cout << "output: " << output << std::endl;
+  }
   std::cout << "Term1: " << Term1 << std::endl;
   std::cout << "Term2: " << Term2  << std::endl;
   output = Term1 + Term2;
@@ -522,45 +522,45 @@ double computeMuGamma(const Basis& basis,
 
 // //  -----------------------------------------------------------
 /*
-template<class Basis, class Vector, class LocalFunc1, class LocalFunc2>
-double computeMuGamma(const Basis& basis,
+   template<class Basis, class Vector, class LocalFunc1, class LocalFunc2>
+   double computeMuGamma(const Basis& basis,
                       Vector& coeffVector,
-                      const double gamma, 
+                      const double gamma,
                       LocalFunc1& mu,
                       LocalFunc2& Func
                      )
-{
+   {
 
 
-//   constexpr int dim = Basis::LocalView::Element::dimension;
-  
-  double output = 0.0;
-  constexpr int dim = 2;
-//   constexpr int dim = 3;
-  auto localView = basis.localView();
-  
-//   auto solutionFunction = Functions::makeDiscreteGlobalBasisFunction<double>(basis, coeffVector);
-//   auto localSol = localFunction(solutionFunction);
-  
-//   auto loadGVF  = Dune::Functions::makeGridViewFunction(x3Fun, basis.gridView());
-//   auto x3Functional = localFunction(loadGVF);  
-  
-  
-  
-  
-  double area = 0.0;
-  
-  for(const auto& element : elements(basis.gridView()))
-  {
-      
-//         std::cout << " ------------------------- one ELEMENT ------------------------" << std::endl;
+   //   constexpr int dim = Basis::LocalView::Element::dimension;
+
+   double output = 0.0;
+   constexpr int dim = 2;
+   //   constexpr int dim = 3;
+   auto localView = basis.localView();
+
+   //   auto solutionFunction = Functions::makeDiscreteGlobalBasisFunction<double>(basis, coeffVector);
+   //   auto localSol = localFunction(solutionFunction);
+
+   //   auto loadGVF  = Dune::Functions::makeGridViewFunction(x3Fun, basis.gridView());
+   //   auto x3Functional = localFunction(loadGVF);
+
+
+
+
+   double area = 0.0;
+
+   for(const auto& element : elements(basis.gridView()))
+   {
+
+   //         std::cout << " ------------------------- one ELEMENT ------------------------" << std::endl;
         double elementEnergy = 0.0;
-        
+
         localView.bind(element);
         mu.bind(element);
     //     x3Functional.bind(element);
         Func.bind(element);
-        
+
         auto geometry = element.geometry();
         const auto& localFiniteElement = localView.tree().finiteElement();
         const auto nSf = localFiniteElement.localBasis().size();
@@ -569,92 +569,92 @@ double computeMuGamma(const Basis& basis,
         int orderQR = 2 * (dim*localFiniteElement.localBasis().order()-1);
     //     int orderQR = 2 * (localFiniteElement.localBasis().order()-1);
         const auto& quad = QuadratureRules<double, dim>::rule(element.type(), orderQR);            // TODO WARUM HIER KEINE COLOR ?? ERROR
-        
+
     //     std::cout << " ------------------------- one ELEMENT ------------------------" << std::endl;
 
         for(const auto& quadPoint : quad)
         {
-            
+
             const auto& quadPos = quadPoint.position();
             //       const FieldVector<double,dim>& quadPos = quadPoint.position();
             //       std::cout << " quadPOS: " << quadPos << std::endl;
 
-            
+
             const auto jacobianInverseTransposed = geometry.jacobianInverseTransposed(quadPos);
             const double integrationElement = geometry.integrationElement(quadPos);
-            
+
             area += quadPoint.weight() * integrationElement;
-            
+
             std::vector< FieldMatrix<double, 1, dim>> referenceGradients;
             localFiniteElement.localBasis().evaluateJacobian(quadPos,referenceGradients);
-            
+
             // Compute the shape function gradients on the grid element
             std::vector<FieldVector<double,dim>> gradients(referenceGradients.size());
-            
+
             for (size_t i=0; i<gradients.size(); i++)
                 jacobianInverseTransposed.mv(referenceGradients[i][0], gradients[i]);
-            
-//             FieldVector<double,dim> tmp = {0.0 , 0.0};
+
+   //             FieldVector<double,dim> tmp = {0.0 , 0.0};
             FieldVector<double,dim> tmp(0.0);
-        //       FieldVector<double,dim> tmp = {0.0 ,0.0,  0.0};  //3D-Version 
-            
+        //       FieldVector<double,dim> tmp = {0.0 ,0.0,  0.0};  //3D-Version
+
         //       std::cout << "integrationElement :" << integrationElement << std::endl;
         //       std::cout << "quadPoint.weight() :" << quadPoint.weight() << std::endl;
-            
+
             for (size_t i=0; i < nSf; i++)
             {
                 size_t localIdx = localView.tree().localIndex(i);  // hier i:leafIdx
                 size_t globalIdx = localView.index(localIdx);
-                
-        //         printvector(std::cout, gradients[i], "gradients[i]", "--" ); 
+
+        //         printvector(std::cout, gradients[i], "gradients[i]", "--" );
         //         std::cout << "coeffVector[globalIdx]:" << coeffVector[globalIdx] << std::endl;
-                
+
                 tmp[0] += coeffVector[globalIdx]*gradients[i][0];
                 tmp[1] += coeffVector[globalIdx]*gradients[i][1];
-                
+
         //         tmp[0] += coeffVector[globalIdx]*gradients[i][0]; // 3D-Version
         //         tmp[1] += coeffVector[globalIdx]*gradients[i][2];
-        //         printvector(std::cout, tmp, "tmp", "--" ); 
+        //         printvector(std::cout, tmp, "tmp", "--" );
 
             }
         //       printvector(std::cout, tmp, "gradient_w", "--" );
-            
-            
+
+
         //       auto value1 = std::pow( ((quadPos[1]/sqrt(2.0))+ (tmp[0]/2.0)) ,2); //TEST
-            
-            
-            
+
+
+
             auto q1 = (Func(quadPos)/sqrt(2.0));
             auto q2 = (tmp[0]/2.0);
-            
-            
-//             auto q2 = (tmp[0]/sqrt(2.0));  // TEST !!!!!!!!!!
-            
-            
-            
-            
+
+
+   //             auto q2 = (tmp[0]/sqrt(2.0));  // TEST !!!!!!!!!!
+
+
+
+
 
             // CHECK : BEITRÄGE CHECKEN!!!!
-            
+
             std::cout << "Beitrag1: " << q2 << std::endl;
             std::cout << "Beitrag2: " << (tmp[1]/(2.0*gamma))  << std::endl;
-            
-            
-            
-            
+
+
+
+
             auto q3 = q1 + q2;
             auto value1 = std::pow(q3,2);
-//             auto value1 = std::pow( ((Func(quadPos)/sqrt(2.0)) + (tmp[0]/2.0)) , 2);
-            
-            
+   //             auto value1 = std::pow( ((Func(quadPos)/sqrt(2.0)) + (tmp[0]/2.0)) , 2);
+
+
             auto value2 = std::pow( (tmp[1]/(2.0*gamma) )  , 2);
-//             auto value2 = std::pow( (tmp[1]/(sqrt(2.0)*gamma) )  , 2);   //TEST 
-            
-            
+   //             auto value2 = std::pow( (tmp[1]/(sqrt(2.0)*gamma) )  , 2);   //TEST
+
+
         //       auto value2 =  (1.0/(std::pow(gamma,2)))* std::pow(tmp[1],2)/4.0 ; //TEST
-            
+
             auto value = 2.0*mu(quadPos)*(2.0*value1 + value2);
-            
+
         //       std::cout << "quadPos[1]:" << quadPos[1]<< std::endl;
         //       std::cout << "Func(quadPos):" << Func(quadPos) << std::endl;
         //       std::cout << "sqrt(2.0):" << sqrt(2.0) << std::endl;
@@ -663,38 +663,38 @@ double computeMuGamma(const Basis& basis,
         //       std::cout << "value1:" << value1 << std::endl;
         //       std::cout << "value2:" << value2 << std::endl;
         //       std::cout << "value:" << value << std::endl;
-            
-            
+
+
         //       auto value = 2.0*mu(quadPos)*(2.0*std::pow( ((x3Functional(quadPos)/sqrt(2.0))+ (tmp[0]/2.0)) ,2) + std::pow( (tmp[1]/(2.0*gamma) ) ,2) );
-            
-            
-            
+
+
+
         //       auto value = 2.0*mu(quadPos)*(2.0* (((x3Functional(quadPos)*x3Functional(quadPos))/2.0) + std::pow( (tmp[0]/2.0) ,2)) + std::pow( (tmp[1]/(2.0*gamma) ) ,2) ); //TEST
-            
+
         //       auto value = 2.0*mu(quadPos)*(2.0*std::pow( ((x3Functional(quadPos)/sqrt(2.0))+ (tmp[0]/2.0)) ,2) ) + std::pow( (tmp[1]/(2.0*gamma) ) ,2) ; //TEST
         //       auto value = 2.0*mu(quadPos)*(2.0*std::pow( ((x3Functional(quadPos)/sqrt(2.0))+ (tmp[0]/2.0)) ,2)) + (1.0/gamma)*std::pow( (tmp[1]/2.0) ,2) ;  //TEST
         //       auto value = 2.0*mu(quadPos)*(2.0*std::pow( ((x3Functional(quadPos)/sqrt(2.0))+ (tmp[0]/2.0)) ,2)  + (1.0/gamma)*std::pow( (tmp[1]/2.0) ,2) ) ;  //TEST
-            
+
             elementEnergy +=  value * quadPoint.weight() * integrationElement;
         //       std::cout << "output:" << output << std::endl;
         }
-//         std::cout << "elementEnergy:" << elementEnergy << std::endl;
+   //         std::cout << "elementEnergy:" << elementEnergy << std::endl;
         output += elementEnergy;
-//         std::cout << "output: " << output << std::endl;
-  }
-  std::cout << "Domain-Area: " << area << std::endl;
-  return (1.0/area) * output;
-}
-// -------------------------------------------------------------------------
-*/
+   //         std::cout << "output: " << output << std::endl;
+   }
+   std::cout << "Domain-Area: " << area << std::endl;
+   return (1.0/area) * output;
+   }
+   // -------------------------------------------------------------------------
+ */
 
 
-  // Check whether two points are equal on R/Z x R/Z
-  auto equivalent = [](const FieldVector<double,2>& x, const FieldVector<double,2>& y)
-  {
-    return ( (FloatCmp::eq(x[0],y[0]) or FloatCmp::eq(x[0]+1,y[0]) or FloatCmp::eq(x[0]-1,y[0]))
-           and (FloatCmp::eq(x[1],y[1])) );
-  };
+// Check whether two points are equal on R/Z x R/Z
+auto equivalent = [](const FieldVector<double,2>& x, const FieldVector<double,2>& y)
+                  {
+                    return ( (FloatCmp::eq(x[0],y[0]) or FloatCmp::eq(x[0]+1,y[0]) or FloatCmp::eq(x[0]-1,y[0]))
+                             and (FloatCmp::eq(x[1],y[1])) );
+                  };
 
 
 
@@ -703,8 +703,8 @@ int main(int argc, char *argv[])
 
   MPIHelper::instance(argc, argv);
 
-    
-    
+
+
   ParameterTree parameterSet;
   if (argc < 2)
     ParameterTreeParser::readINITree("../../inputs/computeMuGamma.parset", parameterSet);
@@ -713,260 +713,262 @@ int main(int argc, char *argv[])
     ParameterTreeParser::readINITree(argv[1], parameterSet);
     ParameterTreeParser::readOptions(argc, argv, parameterSet);
   }
-    /////////////////////////////////
-    // SET OUTPUT 
-    /////////////////////////////////
-    std::string outputPath = parameterSet.get("outputPath", "/home/klaus/Desktop/DUNE/dune-microstructure/outputs");
-    std::fstream log;
-    log.open(outputPath + "/outputMuGamma.txt" ,std::ios::out);
-    std::cout << "outputPath:" << outputPath << std::endl;
-  
-  
-    //////////////////////////////////
-    // Generate the grid
-    //////////////////////////////////
-    constexpr int dim = 2;
-    
-    // QUAD-GRID
-    FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0});
-    FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0});
-//     std::array<int, dim> nElements = {16,16};
-    
-    std::array<int,2> nElements = parameterSet.get<std::array<int,2>>("nElements", {32,32});
-    std::cout << "Number of Elements in each direction: " << nElements << std::endl;
-    log << "Number of Elements in each direction: " << nElements << std::endl;
-    
-    
-    using CellGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
-    CellGridType grid_CE(lower,upper,nElements);
-    using GridView = CellGridType::LeafGridView;
-    const GridView gridView = grid_CE.leafGridView();
-    using Domain = GridView::Codim<0>::Geometry::GlobalCoordinate;
-    
-    // ----------- INPUT PARAMETERS -----------------------------
-    std::string imp = parameterSet.get<std::string>("material_prestrain_imp", "parametrized_Laminate");
-    log << "material_prestrain used: "<< imp  << std::endl;
-    double gamma   = parameterSet.get<double>("gamma", 1.0);   
-    double theta   = parameterSet.get<double>("theta", 1.0/4.0); 
-    double mu1     = parameterSet.get<double>("mu1", 1.0);
-    double beta    = parameterSet.get<double>("beta", 2.0); 
-    double mu2     = beta*mu1;
-    std::cout << "Gamma:" << gamma << std::endl;
-    std::cout << "Theta:" << theta  << std::endl;
-    std::cout << "mu1:" << mu1 << std::endl;
-    std::cout << "mu2:" << mu2 << std::endl;
-    std::cout << "beta:" << beta  << std::endl;
-    log << "----- Input Parameters -----: " << std::endl;
-    log << "gamma: " << gamma << std::endl;
-    log << "theta: " << theta << std::endl;
-    log << "beta: " << beta << std::endl;
-    log << "material parameters: " << std::endl;
-    log << "mu1: " << mu1 << "\nmu2: " << mu2 << std::endl;
-
-//     auto muTerm = [mu1, mu2, theta] (const Domain& z) {
-// 
-// //             if (abs(z[0]) > (theta/2.0)) 
-//             if (abs(z[0]) >= (theta/2.0))   
-//                 return mu1;
-//             else
-//                 return mu2;
-//             };
-
-    auto materialImp = IsotropicMaterialImp<dim>();
-    auto muTerm = materialImp.getMu(parameterSet);
-    auto muGridF  = Dune::Functions::makeGridViewFunction(muTerm, gridView);
-    auto muLocal  = localFunction(muGridF);
-    
-
-    /////////////////////////////////////////////////////////
-    // Stiffness matrix and right hand side vector
-    /////////////////////////////////////////////////////////
-    using Vector = BlockVector<FieldVector<double,1> >; 
-    using Matrix = BCRSMatrix<FieldMatrix<double,1,1> >;
-    Matrix stiffnessMatrix;
-    Vector b;
-
-    /////////////////////////////////////////////////////////
-    // Assemble the system
-    /////////////////////////////////////////////////////////
-    using namespace Functions::BasisFactory;
-    Functions::BasisFactory::Experimental::PeriodicIndexSet periodicIndices;
-
-    // Don't do the following in real life: It has quadratic run-time in the number of vertices.
-    for (const auto& v1 : vertices(gridView))
-      for (const auto& v2 : vertices(gridView))
-        if (equivalent(v1.geometry().corner(0), v2.geometry().corner(0)))                                      
-          periodicIndices.unifyIndexPair({gridView.indexSet().index(v1)}, {gridView.indexSet().index(v2)});
-
-    auto basis = makeBasis(gridView, Functions::BasisFactory::Experimental::periodic(lagrange<1>(), periodicIndices)); // flatLexicographic()?
-
-
-    auto forceTerm = [](const FieldVector<double,dim>& x){return x[1];}; //2D-Version
-    auto ForceGridF  = Dune::Functions::makeGridViewFunction(forceTerm, gridView);
-    auto ForceLocal  = localFunction(ForceGridF);
-    
-    assemblePoissonProblem(basis, stiffnessMatrix, b, muLocal, forceTerm, gamma);
-//     printmatrix(std::cout, stiffnessMatrix, "StiffnessMatrix", "--");
-//     printvector(std::cout, b, "b", "--");
-
-
-
-
-
-
-    ///////////////////////////
-    // Compute solution
-    ///////////////////////////
-
-    Vector x(basis.size());
-    x = b;
-    
-     std::cout << "------------ CG - Solver ------------" << std::endl;
-    MatrixAdapter<Matrix, Vector, Vector> op(stiffnessMatrix);
-
-
-
-    // Sequential incomplete LU decomposition as the preconditioner
-    SeqILU<Matrix, Vector, Vector> ilu0(stiffnessMatrix,1.0);
-    int iter = parameterSet.get<double>("iterations_CG", 999);
-    // Preconditioned conjugate-gradient solver
-    CGSolver<Vector> solver(op,
-                            ilu0, //NULL,
-                            1e-8, // desired residual reduction factorlack
-                            iter,   // maximum number of iterations
-                            2);   // verbosity of the solver
-    InverseOperatorResult statistics;
-    // Solve!
-    solver.apply(x, b, statistics);
-    
-//     std::cout << "------------ GMRES - Solver ------------" << std::endl;
-//     // Turn the matrix into a linear operator
-//     MatrixAdapter<Matrix, Vector, Vector> op(stiffnessMatrix);
-// 
-//     // Fancy (but only) way to not have a preconditioner at all
-//     Richardson<Vector,Vector> preconditioner(1.0);
-// 
-//     // Construct the iterative solver
-//     RestartedGMResSolver<Vector> solver(
-//         op, // Operator to invert
-//         preconditioner,    // Preconditioner
-//         1e-10,             // Desired residual reduction factor
-//         500,               // Number of iterations between restarts,
-//                         // here: no restarting
-//         500,               // Maximum number of iterations
-//         2);                // Verbosity of the solver
-// 
-//     // Object storing some statistics about the solving process
-//     InverseOperatorResult statistics;
-// 
-//     // solve for different Correctors (alpha = 1,2,3)
-//     solver.apply(x, b, statistics);
-//     
-    
-// -----------------------------------------------------------------------------------------------------
-    
-    
-    using SolutionRange = double;
-    auto solutionFunction = Functions::makeDiscreteGlobalBasisFunction<SolutionRange>(basis, x);
-    
-    
-    //  -------- PRINT OUTPUT --------
-//     printvector(std::cout, x, "coeffVector", "--" );
-    std::cout << "Gamma:" << gamma << std::endl;
-    double mu_gamma = computeMuGamma(basis, x, gamma, muLocal, ForceLocal);
-    std::cout << "mu_gamma:" << mu_gamma << std::endl;
-    log << "----- OUTPUT: -----: " << std::endl;
-    log << "mu_gamma=" << mu_gamma << std::endl;   
-    log << "q3=" << mu_gamma << std::endl;   
-    
-//     std::cout.precision(10);
-//     std::cout << "mu_gamma:" << std::fixed << mu_gamma  << std::endl;
-    
-    
-
-//     Vector zeroVec(basis.size());
-//     zeroVec = 0;
-//     std::cout << "TEST computeMuGamma:" << computeMuGamma(basis, zeroVec, gamma, muLocal, ForceLocal)<< std::endl;
-    std::cout << " --- print analytic solutions(if possible) --- " << std::endl;
-    if (imp == "analytical_Example")
+  /////////////////////////////////
+  // SET OUTPUT
+  /////////////////////////////////
+  std::string outputPath = parameterSet.get("outputPath", "/home/klaus/Desktop/DUNE/dune-microstructure/outputs");
+  std::fstream log;
+  log.open(outputPath + "/outputMuGamma.txt" ,std::ios::out);
+  std::cout << "outputPath:" << outputPath << std::endl;
+
+
+  //////////////////////////////////
+  // Generate the grid
+  //////////////////////////////////
+  constexpr int dim = 2;
+
+  // QUAD-GRID
+  FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0});
+  FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0});
+  //     std::array<int, dim> nElements = {16,16};
+
+  std::array<int,2> nElements = parameterSet.get<std::array<int,2> >("nElements", {32,32});
+  std::cout << "Number of Elements in each direction: " << nElements << std::endl;
+  log << "Number of Elements in each direction: " << nElements << std::endl;
+
+
+  using CellGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
+  CellGridType grid_CE(lower,upper,nElements);
+  using GridView = CellGridType::LeafGridView;
+  const GridView gridView = grid_CE.leafGridView();
+  using Domain = GridView::Codim<0>::Geometry::GlobalCoordinate;
+
+  // ----------- INPUT PARAMETERS -----------------------------
+  std::string imp = parameterSet.get<std::string>("material_prestrain_imp", "parametrized_Laminate");
+  log << "material_prestrain used: "<< imp  << std::endl;
+  double gamma   = parameterSet.get<double>("gamma", 1.0);
+  double theta   = parameterSet.get<double>("theta", 1.0/4.0);
+  double mu1     = parameterSet.get<double>("mu1", 1.0);
+  double beta    = parameterSet.get<double>("beta", 2.0);
+  double mu2     = beta*mu1;
+  std::cout << "Gamma:" << gamma << std::endl;
+  std::cout << "Theta:" << theta  << std::endl;
+  std::cout << "mu1:" << mu1 << std::endl;
+  std::cout << "mu2:" << mu2 << std::endl;
+  std::cout << "beta:" << beta  << std::endl;
+  log << "----- Input Parameters -----: " << std::endl;
+  log << "gamma: " << gamma << std::endl;
+  log << "theta: " << theta << std::endl;
+  log << "beta: " << beta << std::endl;
+  log << "material parameters: " << std::endl;
+  log << "mu1: " << mu1 << "\nmu2: " << mu2 << std::endl;
+
+  //     auto muTerm = [mu1, mu2, theta] (const Domain& z) {
+  //
+  // //             if (abs(z[0]) > (theta/2.0))
+  //             if (abs(z[0]) >= (theta/2.0))
+  //                 return mu1;
+  //             else
+  //                 return mu2;
+  //             };
+
+  auto materialImp = IsotropicMaterialImp<dim>();
+  auto muTerm = materialImp.getMu(parameterSet);
+  auto muGridF  = Dune::Functions::makeGridViewFunction(muTerm, gridView);
+  auto muLocal  = localFunction(muGridF);
+
+
+  /////////////////////////////////////////////////////////
+  // Stiffness matrix and right hand side vector
+  /////////////////////////////////////////////////////////
+  using Vector = BlockVector<FieldVector<double,1> >;
+  using Matrix = BCRSMatrix<FieldMatrix<double,1,1> >;
+  Matrix stiffnessMatrix;
+  Vector b;
+
+  /////////////////////////////////////////////////////////
+  // Assemble the system
+  /////////////////////////////////////////////////////////
+  using namespace Functions::BasisFactory;
+  Functions::BasisFactory::Experimental::PeriodicIndexSet periodicIndices;
+
+  // Don't do the following in real life: It has quadratic run-time in the number of vertices.
+  for (const auto& v1 : vertices(gridView))
+    for (const auto& v2 : vertices(gridView))
+      if (equivalent(v1.geometry().corner(0), v2.geometry().corner(0)))
+        periodicIndices.unifyIndexPair({gridView.indexSet().index(v1)}, {gridView.indexSet().index(v2)});
+
+  auto basis = makeBasis(gridView, Functions::BasisFactory::Experimental::periodic(lagrange<1>(), periodicIndices));   // flatLexicographic()?
+
+
+  auto forceTerm = [](const FieldVector<double,dim>& x){
+                     return x[1];
+                   };                                                    //2D-Version
+  auto ForceGridF  = Dune::Functions::makeGridViewFunction(forceTerm, gridView);
+  auto ForceLocal  = localFunction(ForceGridF);
+
+  assemblePoissonProblem(basis, stiffnessMatrix, b, muLocal, forceTerm, gamma);
+  //     printmatrix(std::cout, stiffnessMatrix, "StiffnessMatrix", "--");
+  //     printvector(std::cout, b, "b", "--");
+
+
+
+
+
+
+  ///////////////////////////
+  // Compute solution
+  ///////////////////////////
+
+  Vector x(basis.size());
+  x = b;
+
+  std::cout << "------------ CG - Solver ------------" << std::endl;
+  MatrixAdapter<Matrix, Vector, Vector> op(stiffnessMatrix);
+
+
+
+  // Sequential incomplete LU decomposition as the preconditioner
+  SeqILU<Matrix, Vector, Vector> ilu0(stiffnessMatrix,1.0);
+  int iter = parameterSet.get<double>("iterations_CG", 999);
+  // Preconditioned conjugate-gradient solver
+  CGSolver<Vector> solver(op,
+                          ilu0,   //NULL,
+                          1e-8,   // desired residual reduction factorlack
+                          iter,     // maximum number of iterations
+                          2);     // verbosity of the solver
+  InverseOperatorResult statistics;
+  // Solve!
+  solver.apply(x, b, statistics);
+
+  //     std::cout << "------------ GMRES - Solver ------------" << std::endl;
+  //     // Turn the matrix into a linear operator
+  //     MatrixAdapter<Matrix, Vector, Vector> op(stiffnessMatrix);
+  //
+  //     // Fancy (but only) way to not have a preconditioner at all
+  //     Richardson<Vector,Vector> preconditioner(1.0);
+  //
+  //     // Construct the iterative solver
+  //     RestartedGMResSolver<Vector> solver(
+  //         op, // Operator to invert
+  //         preconditioner,    // Preconditioner
+  //         1e-10,             // Desired residual reduction factor
+  //         500,               // Number of iterations between restarts,
+  //                         // here: no restarting
+  //         500,               // Maximum number of iterations
+  //         2);                // Verbosity of the solver
+  //
+  //     // Object storing some statistics about the solving process
+  //     InverseOperatorResult statistics;
+  //
+  //     // solve for different Correctors (alpha = 1,2,3)
+  //     solver.apply(x, b, statistics);
+  //
+
+  // -----------------------------------------------------------------------------------------------------
+
+
+  using SolutionRange = double;
+  auto solutionFunction = Functions::makeDiscreteGlobalBasisFunction<SolutionRange>(basis, x);
+
+
+  //  -------- PRINT OUTPUT --------
+  //     printvector(std::cout, x, "coeffVector", "--" );
+  std::cout << "Gamma:" << gamma << std::endl;
+  double mu_gamma = computeMuGamma(basis, x, gamma, muLocal, ForceLocal);
+  std::cout << "mu_gamma:" << mu_gamma << std::endl;
+  log << "----- OUTPUT: -----: " << std::endl;
+  log << "mu_gamma=" << mu_gamma << std::endl;
+  log << "q3=" << mu_gamma << std::endl;
+
+  //     std::cout.precision(10);
+  //     std::cout << "mu_gamma:" << std::fixed << mu_gamma  << std::endl;
+
+
+
+  //     Vector zeroVec(basis.size());
+  //     zeroVec = 0;
+  //     std::cout << "TEST computeMuGamma:" << computeMuGamma(basis, zeroVec, gamma, muLocal, ForceLocal)<< std::endl;
+  std::cout << " --- print analytic solutions(if possible) --- " << std::endl;
+  if (imp == "analytical_Example")
+  {
+    std::cout<< "analytical_Example" << std::endl;
+    double q1 = ((mu1*mu2)/6.0)/(theta*mu1+ (1.0- theta)*mu2);
+    double q2 = ((1.0-theta)*mu1+theta*mu2)/6.0;
+    double hm = mu1*(beta/(theta+(1-theta)*beta)) *(1.0/6.0);
+    double am = mu1*((1-theta)+theta*beta)     *(1.0/6.0);
+    std::cout << "q1 : "     << q1 << std::endl;
+    std::cout << "q2 : "     << q2 << std::endl;
+    std::cout << "q3 should be between q1 and q2"  << std::endl;
+    std::cout << "hm : "     << hm << std::endl;
+    std::cout << "am : "     << am << std::endl;
+    if(mu_gamma > q2)
     {
-        std::cout<< "analytical_Example" << std::endl;
-        double q1 = ((mu1*mu2)/6.0)/(theta*mu1+ (1.0- theta)*mu2);
-        double q2 = ((1.0-theta)*mu1+theta*mu2)/6.0;
-        double hm = mu1*(beta/(theta+(1-theta)*beta)) *(1.0/6.0);  
-        double am = mu1*((1-theta)+theta*beta)     *(1.0/6.0);
-        std::cout << "q1 : "     << q1 << std::endl;
-        std::cout << "q2 : "     << q2 << std::endl;
-        std::cout << "q3 should be between q1 and q2"  << std::endl;
-        std::cout << "hm : "     << hm << std::endl;
-        std::cout << "am : "     << am << std::endl;
-        if(mu_gamma > q2)
-        {
-            std::cout << "mu_gamma > q2!!.. (39) not satisfied" << std::endl;
-        }
+      std::cout << "mu_gamma > q2!!.. (39) not satisfied" << std::endl;
     }
-    if (imp == "parametrized_Laminate")
+  }
+  if (imp == "parametrized_Laminate")
+  {
+    std::cout<< "parametrized_Laminate" << std::endl;
+    double hm = mu1*(beta/(theta+(1-theta)*beta));
+    double am = mu1*((1-theta)+theta*beta);
+    double q1 = (1.0/6.0)*hm;
+    double q2 = (1.0/6.0)*am;
+    std::cout << "q1 : "     << q1 << std::endl;
+    std::cout << "q2 : "     << q2 << std::endl;
+    std::cout << "q3 should be between q1 and q2"  << std::endl;
+    std::cout << "hm : "     << hm << std::endl;
+    std::cout << "am : "     << am << std::endl;
+    if(mu_gamma > q2)
     {
-        std::cout<< "parametrized_Laminate" << std::endl;
-        double hm = mu1*(beta/(theta+(1-theta)*beta));  
-        double am = mu1*((1-theta)+theta*beta);
-        double q1 = (1.0/6.0)*hm;
-        double q2 = (1.0/6.0)*am;
-        std::cout << "q1 : "     << q1 << std::endl;
-        std::cout << "q2 : "     << q2 << std::endl;
-        std::cout << "q3 should be between q1 and q2"  << std::endl;
-        std::cout << "hm : "     << hm << std::endl;
-        std::cout << "am : "     << am << std::endl;
-        if(mu_gamma > q2)
-        {
-            std::cout << "mu_gamma > q2!!.. (39) not satisfied" << std::endl;
-        }
+      std::cout << "mu_gamma > q2!!.. (39) not satisfied" << std::endl;
     }
-    
-    
-    
-    std::cout << "beta : "     << beta << std::endl;
-    std::cout << "theta : "     << theta << std::endl;
-    std::cout << "Gamma : "     << gamma << std::endl;
-    std::cout << "mu_gamma:" << mu_gamma << std::endl;
-    
-    
-    // Output result
-
-    std::string VTKOutputName =  outputPath + "/Compute_MuGamma-Result";
-    
-    VTKWriter<GridView> vtkWriter(gridView);
-//     vtkWriter.addVertexData(x, "solution");                      //--- Anpassen für P2
-    vtkWriter.addVertexData(
-        solutionFunction,
-        VTK::FieldInfo("solution", VTK::FieldInfo::Type::scalar, 1));
-//         VTK::FieldInfo("solution", VTK::FieldInfo::Type::vector, dim));
-
-    vtkWriter.write( VTKOutputName );
-    std::cout << "wrote data to file: " + VTKOutputName  << std::endl;     
-    
-    
-    
-    using VTKGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
-    VTKGridType grid_VTK({-1.0/2.0, -1.0/2.0},{1.0/2.0, 1.0/2.0},{64,64});
-    using GridViewVTK = VTKGridType::LeafGridView;
-    const GridViewVTK gridView_VTK = grid_VTK.leafGridView();
-    
-    auto scalarP0FeBasis = makeBasis(gridView_VTK,lagrange<0>());
-    
-    std::vector<double> mu_CoeffP0;
-    Functions::interpolate(scalarP0FeBasis, mu_CoeffP0, muTerm);
-    auto mu_DGBF_P0 = Functions::makeDiscreteGlobalBasisFunction<double>(scalarP0FeBasis, mu_CoeffP0);
-        
-     VTKWriter<GridView> MaterialVtkWriter(gridView_VTK);
-
-       MaterialVtkWriter.addCellData(
-            mu_DGBF_P0,
-            VTK::FieldInfo("mu_P0", VTK::FieldInfo::Type::scalar, 1));  
-     
-     MaterialVtkWriter.write(outputPath + "/MaterialFunctions" );
-        std::cout << "wrote data to file:" + outputPath  +  "/MaterialFunctions" << std::endl;  
-        
-    log.close();
-     
+  }
+
+
+
+  std::cout << "beta : "     << beta << std::endl;
+  std::cout << "theta : "     << theta << std::endl;
+  std::cout << "Gamma : "     << gamma << std::endl;
+  std::cout << "mu_gamma:" << mu_gamma << std::endl;
+
+
+  // Output result
+
+  std::string VTKOutputName =  outputPath + "/Compute_MuGamma-Result";
+
+  VTKWriter<GridView> vtkWriter(gridView);
+  //     vtkWriter.addVertexData(x, "solution");                      //--- Anpassen für P2
+  vtkWriter.addVertexData(
+    solutionFunction,
+    VTK::FieldInfo("solution", VTK::FieldInfo::Type::scalar, 1));
+  //         VTK::FieldInfo("solution", VTK::FieldInfo::Type::vector, dim));
+
+  vtkWriter.write( VTKOutputName );
+  std::cout << "wrote data to file: " + VTKOutputName  << std::endl;
+
+
+
+  using VTKGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
+  VTKGridType grid_VTK({-1.0/2.0, -1.0/2.0},{1.0/2.0, 1.0/2.0},{64,64});
+  using GridViewVTK = VTKGridType::LeafGridView;
+  const GridViewVTK gridView_VTK = grid_VTK.leafGridView();
+
+  auto scalarP0FeBasis = makeBasis(gridView_VTK,lagrange<0>());
+
+  std::vector<double> mu_CoeffP0;
+  Functions::interpolate(scalarP0FeBasis, mu_CoeffP0, muTerm);
+  auto mu_DGBF_P0 = Functions::makeDiscreteGlobalBasisFunction<double>(scalarP0FeBasis, mu_CoeffP0);
+
+  VTKWriter<GridView> MaterialVtkWriter(gridView_VTK);
+
+  MaterialVtkWriter.addCellData(
+    mu_DGBF_P0,
+    VTK::FieldInfo("mu_P0", VTK::FieldInfo::Type::scalar, 1));
+
+  MaterialVtkWriter.write(outputPath + "/MaterialFunctions" );
+  std::cout << "wrote data to file:" + outputPath  +  "/MaterialFunctions" << std::endl;
+
+  log.close();
+
 }
diff --git a/src/macro-problem.cc b/src/macro-problem.cc
index 6e10eac924f89d57400e74dfb2e9bc248626b687..7c5388ecbb81c7cc2c810e20ae4120ae0a070f06 100644
--- a/src/macro-problem.cc
+++ b/src/macro-problem.cc
@@ -1,10 +1,8 @@
 #include <config.h>
 #include <signal.h>
 #include <memory>
-
 #include <fenv.h>
 #include <array>
-
 #include <math.h>
 
 // Includes for the ADOL-C automatic differentiation library
@@ -13,7 +11,6 @@
 #include <dune/fufem/utilities/adolcnamespaceinjections.hh>
 
 #include <dune/common/typetraits.hh>
-
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/parametertree.hh>
 #include <dune/common/parametertreeparser.hh>
@@ -21,20 +18,22 @@
 #include <dune/grid/uggrid.hh>
 #include <dune/grid/utility/structuredgridfactory.hh>
 
+// #include <dune/alugrid/grid.hh>
+
 #include <dune/grid/io/file/gmshreader.hh>
 #include <dune/grid/io/file/vtk.hh>
 
 #include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>
 #include <dune/functions/gridfunctions/composedgridfunction.hh>
+#include <dune/functions/functionspacebases/cubichermitebasis.hh>
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 #include <dune/functions/functionspacebases/powerbasis.hh>
 #include <dune/functions/functionspacebases/interpolate.hh>
-#include <dune/functions/functionspacebases/reducedcubichermitetrianglebasis.hh>
+// #include <dune/functions/functionspacebases/reducedcubichermitetrianglebasis.hh>
 
 #include <dune/fufem/boundarypatch.hh>
 #include <dune/fufem/functiontools/boundarydofs.hh>
 #include <dune/fufem/dunepython.hh>
-
 #include <dune/fufem/discretizationerror.hh>
 
 #include <dune/solvers/solvers/iterativesolver.hh>
@@ -43,35 +42,42 @@
 #include <dune/gfe/spaces/productmanifold.hh>
 #include <dune/gfe/spaces/realtuple.hh>
 #include <dune/gfe/spaces/rotation.hh>
-#include <dune/gfe/localdiscretekirchhoffbendingisometry.hh>
+// #include <dune/gfe/localdiscretekirchhoffbendingisometry.hh>
+// #include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
+// #include <dune/gfe/assemblers/harmonicenergy.hh>
+// #include <dune/gfe/assemblers/geodesicfeassembler.hh>
+// #include <dune/gfe/bendingisometryhelper.hh>
+// #include <dune/gfe/riemannianpnsolver.hh>
+// #include <dune/gfe/embeddedglobalgfefunction.hh>
+// #include <dune/gfe/discretekirchhoffbendingenergy.hh>
+// #include <dune/gfe/energies/discretekirchhoffbendingenergyconforming.hh>
+// #include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewicz.hh>
+// #include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewiczprojected.hh>
+#include <dune/gfe/functions/discretekirchhoffbendingisometry.hh>
+#include <dune/gfe/functions/embeddedglobalgfefunction.hh>
+#include <dune/gfe/functions/localprojectedfefunction.hh>
 #include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
-#include <dune/gfe/assemblers/harmonicenergy.hh>
 #include <dune/gfe/assemblers/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/discretekirchhoffbendingenergy.hh>
+#include <dune/gfe/assemblers/forceenergy.hh>
+#include <dune/gfe/assemblers/sumenergy.hh>
 #include <dune/gfe/bendingisometryhelper.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
-#include <dune/gfe/embeddedglobalgfefunction.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergy.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyconforming.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewicz.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewiczprojected.hh>
+#include <dune/gfe/riemanniantrsolver.hh>
 
+#include <dune/microstructure/bendingisometryaddons.hh>
 #include <dune/microstructure/energies/discretekirchhoffbendingenergyprestrained.hh>
 #include <dune/microstructure/microproblem.hh>
 
-#include <dune/gfe/spaces/stiefelmanifold.hh>
+// #include <dune/gfe/spaces/stiefelmanifold.hh>
 // #include <dune/gfe/spaces/stiefelmatrix.hh>
 
 #include <dune/gmsh4/gmsh4reader.hh>
 #include <dune/gmsh4/gridcreators/lagrangegridcreator.hh>
 
-//TEST 
-#include <dune/gfe/riemanniantrsolver.hh>
-
-
-//TEST dune-vtk
 // #include <dune/vtk/function.hh>
-#include <dune/vtk/vtkwriter.hh>
 // #include <dune/vtk/vtkwriterbase.hh>
+#include <dune/vtk/vtkwriter.hh>
 #include <dune/vtk/writers/unstructuredgridwriter.hh>
 #include <dune/vtk/datacollectors/continuousdatacollector.hh>
 #include <dune/vtk/datacollectors/discontinuousdatacollector.hh>
@@ -84,110 +90,16 @@ const int dim = 2;
 using namespace Dune;
 
 
-  // template <class T>
-  // constexpr std::string_view type_name()
-  // {
-  //     using namespace std;
-  // #ifdef __clang__
-  //     string_view p = __PRETTY_FUNCTION__;
-  //     return string_view(p.data() + 34, p.size() - 34 - 1);
-  // #elif defined(__GNUC__)
-  //     string_view p = __PRETTY_FUNCTION__;
-  // #  if __cplusplus < 201402
-  //     return string_view(p.data() + 36, p.size() - 36 - 1);
-  // #  else
-  //     return string_view(p.data() + 49, p.find(';', 49) - 49);
-  // #  endif
-  // #elif defined(_MSC_VER)
-  //     string_view p = __FUNCSIG__;
-  //     return string_view(p.data() + 84, p.size() - 84 - 7);
-  // #endif
-  // }
-
-// struct Difference2
-// {
-
-//   double operator()(Dune::FieldMatrix<double, 3, 2> x, Dune::FieldMatrix<double, 2, 2> I) const
-//   {
-//     return ((x.transposed()*x)-I).frobenius_norm();
-//   }
-// };
-
-
-// // Wrapper for global-coordinate functions F
-// template <class GridView, class F>
-// class GlobalKirchhoffFunction
-// {
-//   using Element = typename GridView::template Codim<0>::Entity;
-//   using Geometry = typename Element::Geometry;
-
-// public:
-//   GlobalKirchhoffFunction (GridView const& gridView, F const& f)
-//     : gridView_(gridView)
-//     , f_(f)
-//   {}
-
-//   void bind(Element const& element) { 
-//     geometry_.emplace(element.geometry());
-//     f_.bind(element);  // we need to bind kirchhoff function to the element
-//   }
-//   void unbind() { geometry_.reset(); }
-
-//   auto operator() (typename Geometry::LocalCoordinate const& local) const
-//   {
-//     assert(!!geometry_);
-//     return f_(geometry_->global(local));
-//   }
-
-// private:
-//   GridView gridView_;
-//   F f_;
-//   std::optional<Geometry> geometry_;
-// };
-
-// // Wrapper for global-coordinate functions F
-// template <class GridView, class F>
-// class GlobalFunction
-// {
-//   using Element = typename GridView::template Codim<0>::Entity;
-//   using Geometry = typename Element::Geometry;
-
-// public:
-//   GlobalFunction (GridView const& gridView, F const& f)
-//     : gridView_(gridView)
-//     , f_(f)
-//   {}
-
-//   void bind(Element const& element) { geometry_.emplace(element.geometry()); }
-//   void unbind() { geometry_.reset(); }
-
-//   auto operator() (typename Geometry::LocalCoordinate const& local) const
-//   {
-//     assert(!!geometry_);
-//     return f_(geometry_->global(local));
-//   }
-
-// private:
-//   GridView gridView_;
-//   F f_;
-//   std::optional<Geometry> geometry_;
-// };
-
-
-
 int main(int argc, char *argv[])
 {
 
   /**
-   * @brief We use this to catch a 'Floating point exception' caused by the 'innerSolver' 
+   * @brief We use this to catch a 'Floating point exception' caused by the 'innerSolver'
    *        in RiemannianProximalNewton
    */
   //   std::shared_ptr<void(int)> handler(
   //       signal(SIGFPE, [](int signum) {throw std::logic_error("FPE"); }),
   //       [](__sighandler_t f) { signal(SIGFPE, f); });
-
-
-
   // feenableexcept(FE_INVALID);
 
   MPIHelper::instance(argc, argv);
@@ -200,9 +112,9 @@ int main(int argc, char *argv[])
   Python::start();
   auto pyMain = Python::main();
   pyMain.runStream()
-      << std::endl << "import math"
-      << std::endl << "import sys"
-      << std::endl << "sys.path.append('" << argv[1] << "')"  << std::endl;
+    << std::endl << "import math"
+    << std::endl << "import sys"
+    << std::endl << "sys.path.append('" << argv[1] << "')"  << std::endl;
   auto pyModule = pyMain.import(argv[2]);
 
 
@@ -232,11 +144,19 @@ int main(int argc, char *argv[])
   std::cout << "Executable: bending-isometries, with parameters:" << std::endl;
   parameterSet.report();
 
+  bool PRINT_DEBUG = parameterSet.get<bool>("print_debug", 0);
+
   /////////////////////////////////////////
   //   Create the grid
   /////////////////////////////////////////
+  // Structured UG-grid
+  std::cout << "Using UGGrid module" << std::endl;
   using GridType = UGGrid<dim>;
 
+  // ALUGrid with structuredGridFactory
+  // std::cout << "Using ALUGRID module" << std::endl;
+  // typedef Dune::ALUGrid<dim, dim, Dune::simplex, Dune::conforming> GridType;
+
   std::shared_ptr<GridType> grid;
   FieldVector<double,dim> lower(0), upper(1);
   std::array<unsigned int,dim> elementsArray;
@@ -276,138 +196,87 @@ int main(int argc, char *argv[])
   ///////////////////////////////////////////////////////
 
   // General coefficient vector of a Discrete Kirchhoff deformation function
-  using VectorSpaceCoefficients = BlockVector<FieldVector<double,3>>;
+  using VectorSpaceCoefficients = BlockVector<FieldVector<double,3> >;
 
-  /**
-   * @brief Coefficient vector of a Discrete Kirchhoff deformation function that is constrained to be an isometry.
-   *        we need both 'double' and 'adouble' versions.
-   */
-  using Coefficient = GFE::ProductManifold<RealTuple<double,3>, Rotation<double,3> >;
+  // Coefficient vector of a Discrete Kirchhoff deformation function that is constrained to be an isometry.
+  // we need both 'double' and 'adouble' versions.
+  using Coefficient = GFE::ProductManifold<GFE::RealTuple<double,3>, GFE::Rotation<double,3> >;
   using IsometryCoefficients = std::vector<Coefficient>;
   using ACoefficient = typename Coefficient::template rebind<adouble>::other;
   using AIsometryCoefficients = std::vector<ACoefficient>;
 
   using namespace Functions::BasisFactory;
   auto deformationBasis = makeBasis(gridView,
-                                    power<3>(reducedCubicHermiteTriangle(),
-                                    blockedInterleaved()));
+                                    power<3>(reducedCubicHermite(),
+                                             blockedInterleaved()));
 
   using DeformationBasis = decltype(deformationBasis);
 
-  /**
-   * @brief The next basis is used to assign (nonlinear) degrees of freedom to the grid vertices.
-   *        The actual basis function values are never used.
-   */
+  // The next basis is used to assign (nonlinear) degrees of freedom to the grid vertices.
+  // The actual basis function values are never used.
   using CoefficientBasis = Functions::LagrangeBasis<GridView, 1>;
   CoefficientBasis coefficientBasis(gridView);
 
   // A basis for the tangent space (used to set DirichletNodes)
   auto tangentBasis = makeBasis(gridView,
                                 power<Coefficient::TangentVector::dimension>(
-                                lagrange<1>(),
-                                blockedInterleaved()));
-
-
-  //TEST
-  // auto tangentBasis = makeBasis(gridView,
-  //                               power<Coefficient::TangentVector::dimension>(  //dim = 6
-  //                               lagrange<1>(),
-  //                               flatInterleaved()));
+                                  lagrange<1>(),
+                                  blockedInterleaved()));
 
 
   std::cout << "Coefficient::TangentVector::dimension: " << Coefficient::TangentVector::dimension<< std::endl;
 
-  // Print some information on the grid and degrees of freedom.                        
+  // Print some information on the grid and degrees of freedom.
   std::cout << "Number of Elements in the grid: " << gridView.size(0)<< std::endl;
   std::cout << "Number of Nodes in the grid: "    << gridView.size(dim)<< std::endl;
   std::cout << "deformationBasis.size(): "        << deformationBasis.size() << std::endl;
   std::cout << "deformationBasis.dimension(): "   << deformationBasis.dimension() << std::endl;
   std::cout << "Degrees of Freedom: "             << deformationBasis.dimension() << std::endl;
 
-  bool PRINT_DEBUG = parameterSet.get<bool>("print_debug", 0);
 
   ///////////////////////////////////////////
-  //   Read Dirichlet values 
+  //   Read Dirichlet values
   ///////////////////////////////////////////
-  BitSetVector<1> dirichletVertices(gridView.size(dim), false);
+  // BitSetVector<1> dirichletVertices(gridView.size(dim), false);
   const typename GridView::IndexSet &indexSet = gridView.indexSet();
-
-
   BitSetVector<Coefficient::TangentVector::dimension> dirichletNodes(tangentBasis.size(), false); //tangentBasis.size()=coefficientBasis.size()
 
-  /**
-   * @brief Make Python function that computes which vertices are on the Dirichlet boundary,
-   *        based on the vertex positions.
-   */
+  // Make Python function that computes which vertices are on the Dirichlet boundary,
+  // based on the vertex positions.
   auto dirichletIndicatorFunction = Python::make_function<bool>(pyModule.get("dirichlet_indicator"));
 
 
 
-  /**
-   * @brief If we want to clamp DOFs inside the domain, we connot use 'BoundaryPatch' 
-   *        and 'constructBoundaryDofs'. This is a workaround for now.
-   *        
-   *
-   */
+  // If we want to clamp DOFs inside the domain, we cannot use 'BoundaryPatch'
+  // and 'constructBoundaryDofs'. This is a workaround for now.
   for (auto &&vertex : vertices(gridView))
   {
-    dirichletVertices[indexSet.index(vertex)] = dirichletIndicatorFunction(vertex.geometry().corner(0));
+    // dirichletVertices[indexSet.index(vertex)] = dirichletIndicatorFunction(vertex.geometry().corner(0));
 
-      if(dirichletIndicatorFunction(vertex.geometry().corner(0)))
-      { 
-        dirichletNodes[indexSet.index(vertex)] = true;
-        if(PRINT_DEBUG)
-          std::cout << "Dirichlet Vertex with coordinates:" << vertex.geometry().corner(0) << std::endl;
-      }
-  
-  }
-    
-  // std::cout << "tangentBasis.size():" << tangentBasis.size() << std::endl;
-  // std::cout << "coefficientBasis.size():" << coefficientBasis.size() << std::endl;
+    if(dirichletIndicatorFunction(vertex.geometry().corner(0)))
+    {
+      dirichletNodes[indexSet.index(vertex)] = true;
+      if(PRINT_DEBUG)
+        std::cout << "Dirichlet Vertex with coordinates:" << vertex.geometry().corner(0) << std::endl;
+    }
 
-  //deprecated: 
+  }
+  // deprecated:
   // BoundaryPatch<GridView> dirichletBoundary(gridView, dirichletVertices);
   // constructBoundaryDofs(dirichletBoundary, tangentBasis, dirichletNodes);
 
 
-
-
-
-
-  // --------------------------------------
-
-
-
-
-  // markBoundaryPatchDofs(dirichletBoundary, tangentBasis, dirichletNodes);
-
-  //TEST with blocksize?
-  // constructBoundaryDofs<GridView,decltype(tangentBasis),Coefficient::TangentVector::dimension>(dirichletBoundary, tangentBasis, dirichletNodes);
-  // constructBoundaryDofs<GridView,decltype(tangentBasis),Coefficient::TangentVector::dimension>(dirichletBoundary, tangentBasis, dirichletNodes);
-
-
-
-    //TEST: print dirichletNodes 
-  // std::cout << "print dirichletVertices:" << std::endl;
-  // std::cout <<  dirichletVertices << std::endl;
-
-  // std::cout << "print dirichletNodes:" << std::endl;
-  // std::cout <<  dirichletNodes << std::endl;
-
-
   ///////////////////////////////////////////
   //   Get initial Iterate
   ///////////////////////////////////////////
   auto pythonInitialIterate = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("f"), pyModule.get("df"));
-
   VectorSpaceCoefficients x(deformationBasis.size());
-  interpolate(deformationBasis, x, pythonInitialIterate); 
-
+  interpolate(deformationBasis, x, pythonInitialIterate);
 
 
-   /**
+  /**
    * @brief TEST: Add boundary-value function
-   * 
+   *
    */
   // auto boundaryValueFunction = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,3>)>(pyModule.get("boundaryValues"), pyModule.get("boundaryValuesDerivative"));
   // auto boundaryValueFunction = Python::make_function<FieldVector<double,3>>(pyModule.get("boundaryValues"));
@@ -416,57 +285,67 @@ int main(int argc, char *argv[])
   // {
   //   if(dirichletIndicatorFunction(vertex.geometry().corner(0)))
   //   {
-  //   isometryCoefficients[indexSet.index(vertex)][_0] = (RealTuple<double, 3>)boundaryValueFunction(vertex.geometry().corner(0));
+  //   isometryCoefficients[indexSet.index(vertex)][_0] = (GFE::RealTuple<double, 3>)boundaryValueFunction(vertex.geometry().corner(0));
   //   // isometryCoefficients[indexSet.index(vertex)][_1].set(derivative(boundaryValueFunction)(vertex.geometry().corner(0)));
-  //   isometryCoefficients_adouble[indexSet.index(vertex)][_0] = (RealTuple<adouble, 3>)boundaryValueFunction(vertex.geometry().corner(0));
+  //   isometryCoefficients_adouble[indexSet.index(vertex)][_0] = (GFE::RealTuple<adouble, 3>)boundaryValueFunction(vertex.geometry().corner(0));
   //   // isometryCoefficients_adouble[indexSet.index(vertex)][_1].set(derivative(boundaryValueFunction)(vertex.geometry().corner(0)));
   //   }
   // }
-    
 
-  /**
-   * @brief We need to setup LocalDiscreteKirchhoffBendingIsometry with a coefficient 
-   * vector of ctype 'adouble' while the solver gets a coefficient vector 
-   * of ctype 'double'.
-   */
+
+  // We need to setup DiscreteKirchhoffBendingIsometry with a coefficient
+  // vector of ctype 'adouble' while the solver gets a coefficient vector
+  // of ctype 'double'.
   IsometryCoefficients isometryCoefficients(coefficientBasis.size());
   AIsometryCoefficients isometryCoefficients_adouble(coefficientBasis.size());
 
+  using namespace Dune::GFE::Impl;
 
-  /**
-   * @brief Copy the current iterate into a data type that encapsulates the isometry constraint
-   *        i. e. convert coefficient data structure from 'VectorSpaceCoefficients' to 'IsometryCoefficients'
-   */
+  // Copy the current iterate into a data type that encapsulates the isometry constraint
+  // i.e. convert coefficient data structure from 'VectorSpaceCoefficients' to 'IsometryCoefficients'
   vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients);
   vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients_adouble);
-
-  /**
-   * @brief TEST: conversion of coefficient vectors (back & forth)
-   */
-  coefficientConversionTest<VectorSpaceCoefficients, DeformationBasis, CoefficientBasis, IsometryCoefficients>(x, deformationBasis, coefficientBasis);
+  // Debug: conversion of coefficient vectors (back & forth)
+  // coefficientConversionTest<VectorSpaceCoefficients, DeformationBasis, CoefficientBasis, IsometryCoefficients>(x, deformationBasis, coefficientBasis);
 
 
-    
-
-  using LocalDKFunction = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, AIsometryCoefficients>;
+  // Create a DiscreteKirchhoffBendingIsometry.
+  // This serves as the deformation function.
+  using LocalDKFunction = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, AIsometryCoefficients>;
   LocalDKFunction localDKFunction(deformationBasis, coefficientBasis, isometryCoefficients_adouble);
 
 
-  /**
-   * @brief TEST: check isometry condition on the nodes of the grid for initial deformation.
-   */
-    // auto initialDeformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x);
-    // nodewiseIsometryTest(initialDeformationFunction);
+  // Debug: check isometry condition on the nodes of the grid for initial deformation.
   nodewiseIsometryTest(localDKFunction, gridView);
+  // auto initialDeformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x);
+  // nodewiseIsometryTest(initialDeformationFunction);
 
 
-  /**
-   * @brief Read force term.
-   */
-  auto pythonForce = Python::make_function<FieldVector<double,3>>(pyModule.get("force"));
+  // Read the force term.
+  auto pythonForce = Python::make_function<FieldVector<double,3> >(pyModule.get("force"));
   auto forceGVF  = Dune::Functions::makeGridViewFunction(pythonForce, gridView);
   auto localForce = localFunction(forceGVF);
 
+
+  //*** NEW UPDATED VERSION  **/
+
+  // Setup nonconforming energy and assembler - only option for this minimal example.
+  // auto forceEnergy = std::make_shared<GFE::ForceEnergy<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient> >(localDKFunction, localForce);
+  // auto localEnergy_nonconforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergy<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient> >(localDKFunction);
+
+  // auto sumEnergy = std::make_shared<GFE::SumEnergy<CoefficientBasis, GFE::RealTuple<adouble,3>, GFE::Rotation<adouble,3> > >();
+  // sumEnergy->addLocalEnergy(localEnergy_nonconforming);
+  // sumEnergy->addLocalEnergy(forceEnergy);
+
+  // auto localGFEADOLCStiffness_nonconforming= std::make_shared<Dune::GFE::LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> >(sumEnergy);
+  // std::shared_ptr<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> > assembler_prestrain;
+  // assembler_prestrain = std::make_shared<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> >(coefficientBasis, localGFEADOLCStiffness_nonconforming);
+
+  // --------------------------------------------
+
+
+
+
   // /**
   //  * @brief Read effective prestrain Tensor
   //  */
@@ -477,7 +356,7 @@ int main(int argc, char *argv[])
 
   // /**
   //  * @brief Get effective quadratic form Qhom
-  //  * 
+  //  *
   //  *  input-vector: [q_1,q_2,q_3,q_12,q_13,q_23]
   //  *  is assembled into a matrix where the off-diagonal entries are divided by 2 (compare with definition in the paper)
   //  *            (   q_1    , 0.5*q_12  ,  0.5*q_13 )
@@ -485,7 +364,7 @@ int main(int argc, char *argv[])
   //  *            ( 0.5*q_13 , 0.5*q_23  ,    q_3    )
   //  */
   // Dune::FieldVector<adouble,6> Qhomvec = parameterSet.get<Dune::FieldVector<adouble,6>>("effectiveQuadraticForm", {1.0, 1.0, 1.0, 0.0, 0.0, 0.0});
-  // Dune::FieldMatrix<adouble,3,3> Qhom = {{(adouble)Qhomvec[0], (adouble)0.5*Qhomvec[3], (adouble)0.5*Qhomvec[4]}, 
+  // Dune::FieldMatrix<adouble,3,3> Qhom = {{(adouble)Qhomvec[0], (adouble)0.5*Qhomvec[3], (adouble)0.5*Qhomvec[4]},
   //                                       {(adouble)0.5*Qhomvec[3], (adouble)Qhomvec[1], (adouble)0.5*Qhomvec[5]},
   //                                       {(adouble)0.5*Qhomvec[4], (adouble)0.5*Qhomvec[5], (adouble)Qhomvec[2]}};
   // printmatrix(std::cout, Qhom, "effective quadratic form (Qhom): ", "--");
@@ -507,101 +386,89 @@ int main(int argc, char *argv[])
    * @brief Setup energy featuring prestrain
    */
   //  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce, Qhom, effectivePrestrain,  parameterSet);
-  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce, parameterSet, pyModule);
+
+
+
 
   // LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_conforming(localEnergy_conforming.get());
   // LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_nonconforming(localEnergy_nonconforming.get());
-  LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_prestrain(localEnergy_prestrain.get());
+  // LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_prestrain(localEnergy_prestrain.get());
   // GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_conforming(coefficientBasis, localGFEADOLCStiffness_conforming);
   // GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_nonconforming(coefficientBasis, localGFEADOLCStiffness_nonconforming);
-  GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_prestrain(coefficientBasis, localGFEADOLCStiffness_prestrain);
+  // GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_prestrain(coefficientBasis, localGFEADOLCStiffness_prestrain);
+
+
+
+
+
+
+  // // Setup prestrained bending energy.
+  // auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient> >(localDKFunction, localForce, parameterSet, pyModule);
+  // auto localGFEADOLCStiffness_prestrain = std::make_shared<Dune::GFE::LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> >(localEnergy_prestrain);
+  // std::shared_ptr<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> > assembler_prestrain;
+  // assembler_prestrain = std::make_shared<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> >(coefficientBasis, localGFEADOLCStiffness_prestrain);
+
+
+  // Setup nonconforming energy and assembler - only option for this minimal example.
 
 
 
 
+  // The energy consists of two parts: 1. A bending energy contribution and 2. Contribution from a force term.
+  auto sumEnergy = std::make_shared<GFE::SumEnergy<CoefficientBasis, GFE::RealTuple<adouble,3>, GFE::Rotation<adouble,3> > >();
+
+  // Setup prestrained bending energy.
+  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction,  ACoefficient> >(localDKFunction, parameterSet, pyModule);
+
+  // Setup force energy.
+  auto forceEnergy = std::make_shared<GFE::ForceEnergy<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient> >(localDKFunction, localForce);
+  sumEnergy->addLocalEnergy(localEnergy_prestrain);
+  sumEnergy->addLocalEnergy(forceEnergy);
+
+  // Setup the assembler.
+  auto localGFEADOLCStiffness_prestrain = std::make_shared<Dune::GFE::LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> >(sumEnergy);
+  std::shared_ptr<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> > assembler_prestrain;
+  assembler_prestrain = std::make_shared<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> >(coefficientBasis, localGFEADOLCStiffness_prestrain);
 
 
 
   /**
-   * @brief Create a solver: 
-   *        - Riemannian Newton with Hessian modification 
-   *        - Riemannian Trust-region 
+   * @brief Create a solver:
+   *        - Adaptively Regularized Riemannian Newton (ARRN) [default]
+   *        - Riemannian Trust-region (RTR)
    */
-  RiemannianProximalNewtonSolver<CoefficientBasis, Coefficient> RNHMsolver;
-  RiemannianTrustRegionSolver<CoefficientBasis, Coefficient> RTRsolver;
+  Dune::GFE::RiemannianProximalNewtonSolver<CoefficientBasis, Coefficient> ARRNsolver;
+  Dune::GFE::RiemannianTrustRegionSolver<CoefficientBasis, Coefficient> RTRsolver;
 
 
-  std::string Solver_name = parameterSet.get<std::string>("Solver", "RNHM");
+  std::string Solver_name = parameterSet.get<std::string>("Solver", "ARRN");
   double numerical_energy; //final discrete energy
 
-  if(Solver_name == "RNHM")
+  if(Solver_name == "ARRN")
   {
-
-    RNHMsolver.setup(*grid,
-          &assembler_prestrain,
-          isometryCoefficients,
-          dirichletNodes,
-          parameterSet);
-
-    RNHMsolver.solve();
-    isometryCoefficients = RNHMsolver.getSol();
-    numerical_energy = RNHMsolver.getStatistics().finalEnergy;
+    std::cout << "Using Adaptively Regularized Riemannian Newton (ARRN) method for energy minimization." << std::endl;
+    ARRNsolver.setup(*grid,
+                     &(*assembler_prestrain),
+                     isometryCoefficients,
+                     dirichletNodes,
+                     parameterSet);
+
+    ARRNsolver.solve();
+    isometryCoefficients = ARRNsolver.getSol();
+    numerical_energy = ARRNsolver.getStatistics().finalEnergy;
   } else if (Solver_name =="RiemannianTR")
   {
     std::cout << "Using Riemannian Trust-region method for energy minimization." << std::endl;
     RTRsolver.setup(*grid,
-            &assembler_prestrain,
-            isometryCoefficients,
-            dirichletNodes,
-            parameterSet);
+                    &(*assembler_prestrain),
+                    isometryCoefficients,
+                    dirichletNodes,
+                    parameterSet);
     RTRsolver.solve();
     isometryCoefficients = RTRsolver.getSol();
     numerical_energy = RTRsolver.getStatistics().finalEnergy;
-  } else 
-      DUNE_THROW(Dune::Exception, "Unknown Solver type for bending isometries.");
-
-
-
-  // TEST
-  // RiemannianTrustRegionSolver<CoefficientBasis, Coefficient> solver;
-  // solver.setup(*grid,
-  //               &assembler_prestrain,
-  //               isometryCoefficients,
-  //               dirichletNodes,
-  //               parameterSet);
-  // RNHMsolver.setup(*grid,
-  //           &assembler_prestrain,
-  //           isometryCoefficients,
-  //           dirichletNodes,
-  //           parameterSet);
-
-
-
-//deprecated:
-  // if (parameterSet.get<bool>("prestrainFlag", 0))  
-  //     solver.setup(*grid,
-  //               &assembler_prestrain,
-  //               isometryCoefficients,
-  //               dirichletNodes,
-  //               parameterSet);
-  // else if (parameterSet.get<bool>("conforming_DiscreteJacobian", 1))
-  //     solver.setup(*grid,
-  //                 &assembler_conforming,
-  //                 isometryCoefficients,
-  //                 dirichletNodes,
-  //                 parameterSet);
-  // else 
-  //     solver.setup(*grid,
-  //               &assembler_nonconforming,
-  //               isometryCoefficients,
-  //               dirichletNodes,
-  //               parameterSet);
-
-  ///////////////////////////////////////////////////////
-  //  Solve!
-  ///////////////////////////////////////////////////////
-  // solver.setInitialIterate(isometryCoefficients);
-
+  } else
+    DUNE_THROW(Dune::Exception, "Unknown Solver type for bending isometries.");
 
 
   // Convert coefficient data structure from 'IsometryCoefficients' to 'VectorSpaceCoefficients'
@@ -612,19 +479,19 @@ int main(int argc, char *argv[])
   //   Output result
   ////////////////////////////////
   std::string baseNameDefault = "bending-isometries-";
-  std::string baseName = parameterSet.get("baseName", baseNameDefault); 
+  std::string baseName = parameterSet.get("baseName", baseNameDefault);
   std::string resultFileName =  parameterSet.get("resultPath", "")
-                                + "/" + baseName
-                                + "_level" + std::to_string(parameterSet.get<int>("macroGridLevel"));
+                               + "/" + baseName
+                               + "_level" + std::to_string(parameterSet.get<int>("macroGridLevel"));
 
   if (parameterSet.get<bool>("conforming_DiscreteJacobian", 1))
     resultFileName = resultFileName + "_C";
-  else 
+  else
     resultFileName = resultFileName + "_NC";
 
 
   // Create a deformation function but this time with double-types.
-  using LocalDKFunctionD = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
+  using LocalDKFunctionD = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
   LocalDKFunctionD localDKFunctionDouble(deformationBasis, coefficientBasis, isometryCoefficients);
 
 
@@ -632,8 +499,7 @@ int main(int argc, char *argv[])
 
   if (parameterSet.get<bool>("writeVTK", 1))
   {
-    std::cout << "write VTK..." << std::endl;
-    std::cout << "to Filename: " << resultFileName << std::endl;
+    std::cout << "write VTK to Filename: " << resultFileName << std::endl;
 
     /**
      * @brief Compute the displacement from the deformation.
@@ -643,27 +509,23 @@ int main(int argc, char *argv[])
     IdentityGridEmbedding<double> identityGridEmbedding;
     interpolate(deformationBasis, identity, identityGridEmbedding);
 
-    // auto identity_tmp = identity;
-
     // Compute the displacement
     auto displacement = x_out;
     displacement -= identity;
 
     // std::cout << "displacement.size():" << displacement.size() << std::endl;
-    auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x_out);
-    auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, displacement);
+    auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, x_out);
+    auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, displacement);
 
-    /**
-     * @brief  We need to subsample, because VTK cannot natively display real third-order functions
-     */
-    int subsamplingRefinement = parameterSet.get<int>("subsamplingRefinement", 2);
-    SubsamplingVTKWriter<GridView> vtkWriter(gridView, Dune::refinementLevels(subsamplingRefinement));
-    // SubsamplingVTKWriter<GridView> vtkWriter(gridView, Dune::refinementLevels(2));
+
+    // We need to subsample, because dune-grid-VTK cannot natively display real third-order functions
+    // int subsamplingRefinement = parameterSet.get<int>("subsamplingRefinement", 2);
+    // SubsamplingVTKWriter<GridView> vtkWriter(gridView, Dune::refinementLevels(subsamplingRefinement));
 
 
     // Use VTK writer from dune-vtk
-    // Setup a DataCollector of order 4.
-    Dune::Vtk::LagrangeDataCollector<GridView, 4> lagrangeDataCollector(gridView);
+    // Setup a DataCollector of order 3.
+    Dune::Vtk::LagrangeDataCollector<GridView, 3> lagrangeDataCollector(gridView);
     Dune::Vtk::DiscontinuousDataCollector<GridView> discontinuousDataCollector(gridView);
     Dune::Vtk::UnstructuredGridWriter duneVTKwriter(lagrangeDataCollector, Dune::Vtk::FormatTypes::ASCII, Vtk::DataTypes::FLOAT32);
     // Dune::Vtk::UnstructuredGridWriter writer(discontinuousDataCollector, Dune::Vtk::FormatTypes::ASCII, Vtk::DataTypes::FLOAT32);
@@ -671,19 +533,12 @@ int main(int argc, char *argv[])
 
     /**
      * @brief Basis used to represent normal vector fields (deprecated)
-     * 
+     *
      */
-    // auto normalBasis = makeBasis(gridView,
-    //                   power<3>(
-    //                   lagrange<1>(),
-    //                   flatLexicographic()));
-
 
     // Write discrete displacement
     duneVTKwriter.addPointData(displacementFunction, Dune::Vtk::FieldInfo{"Displacement dune-VTK",3, Vtk::RangeTypes::VECTOR});
-    vtkWriter.addVertexData(displacementFunction, VTK::FieldInfo("Displacement", VTK::FieldInfo::Type::vector, 3));
-
-
+    // vtkWriter.addVertexData(displacementFunction, VTK::FieldInfo("Displacement", VTK::FieldInfo::Type::vector, 3));
 
     // ComposedGridFunction - approach:
     auto deformationGradientFunction = derivative(deformationFunction);
@@ -694,14 +549,13 @@ int main(int argc, char *argv[])
     FieldMatrix<double,2,2> I = ScaledIdentityMatrix<double,2>(1);
 
     auto isometryErrorFunction =[&](auto M)-> double {
-        return ((M.transposed()*M) - I).frobenius_norm();
-    };
+                                   return ((M.transposed()*M) - I).frobenius_norm();
+                                 };
 
     auto isometryErrorGridFunction = makeComposedGridFunction(isometryErrorFunction,deformationGradientFunction);
-
     duneVTKwriter.addPointData(isometryErrorGridFunction, "IsometryErrorFunction");
-    vtkWriter.addVertexData(isometryErrorGridFunction , VTK::FieldInfo("IsometryErrorFunction", VTK::FieldInfo::Type::scalar, 1));
-    
+    // vtkWriter.addVertexData(isometryErrorGridFunction , VTK::FieldInfo("IsometryErrorFunction", VTK::FieldInfo::Type::scalar, 1));
+
 
 
 
@@ -713,7 +567,7 @@ int main(int argc, char *argv[])
     {
       // auto pythonAnalyticalSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("u"), pyModule.get("du"));
       auto pythonAnalyticalSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("displacement"), pyModule.get("displacementGradient"));
-      vtkWriter.addVertexData((pythonAnalyticalSolution), VTK::FieldInfo("Displacement_analytical", VTK::FieldInfo::Type::vector, 3));
+      // vtkWriter.addVertexData((pythonAnalyticalSolution), VTK::FieldInfo("Displacement_analytical", VTK::FieldInfo::Type::vector, 3));
 
       //dune-vtk:
       auto pythonAnalyticalSolutionGVF = Dune::Functions::makeAnalyticGridViewFunction(pythonAnalyticalSolution ,gridView);
@@ -721,163 +575,108 @@ int main(int argc, char *argv[])
 
 
 
-    
+
 
       /**
-       * @brief Get the normal vector field of the surface parametrized 
+       * @brief Get the normal vector field of the surface parametrized
        *        by the analytical solution.
        *        - We represent the normal vector in a first order Lagrange-Power basis ('normalBasis').
        */
       if (parameterSet.get<bool>("vtkWrite_analyticalSurfaceNormal", 0))
       {
-      // Get the surface normal function.
-      auto pythonSurfaceNormal = Python::make_function<FieldVector<double,3>>(pyModule.get("surfaceNormal"));
-      vtkWriter.addVertexData(pythonSurfaceNormal, VTK::FieldInfo("SurfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
-
+        // Get the surface normal function.
+        auto pythonSurfaceNormal = Python::make_function<FieldVector<double,3> >(pyModule.get("surfaceNormal"));
+        // vtkWriter.addVertexData(pythonSurfaceNormal, VTK::FieldInfo("SurfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
 
-      //dune-vtk 
-      auto pythonSurfaceNormalGVF = Dune::Functions::makeAnalyticGridViewFunction(pythonSurfaceNormal ,gridView);
-      duneVTKwriter.addPointData(pythonSurfaceNormalGVF, Dune::Vtk::FieldInfo{"SurfaceNormal_analytical dune-VTK",3, Dune::Vtk::RangeTypes::VECTOR});
+        //dune-vtk
+        auto pythonSurfaceNormalGVF = Dune::Functions::makeAnalyticGridViewFunction(pythonSurfaceNormal ,gridView);
+        duneVTKwriter.addPointData(pythonSurfaceNormalGVF, Dune::Vtk::FieldInfo{"SurfaceNormal_analytical dune-VTK",3, Dune::Vtk::RangeTypes::VECTOR});
 
       }
     }
-    //-------------------------------------------------------------------------------------    
+    //-------------------------------------------------------------------------------------
     // /**
-    //  * @brief: Compute the discrete normal vector of the surface parametrized 
+    //  * @brief: Compute the discrete normal vector of the surface parametrized
     //  *              by the discrete solution.
     //  */
     auto discreteSurfaceNormalField = [](auto M) -> Dune::FieldVector<double,3> {
-      return {M[1][0]*M[2][1] - M[1][1]*M[2][0],
-              M[2][0]*M[0][1] - M[0][0]*M[2][1], 
-              M[0][0]*M[1][1] - M[1][0]*M[0][1]};
-    };
+                                        return {M[1][0]*M[2][1] - M[1][1]*M[2][0],
+                                                M[2][0]*M[0][1] - M[0][0]*M[2][1],
+                                                M[0][0]*M[1][1] - M[1][0]*M[0][1]};
+                                      };
 
     auto discreteSurfaceNormalFieldGVF = makeComposedGridFunction(discreteSurfaceNormalField ,deformationGradientFunction);
-
-    vtkWriter.addVertexData(discreteSurfaceNormalFieldGVF, VTK::FieldInfo("SurfaceNormalDiscrete", VTK::FieldInfo::Type::vector, 3));
+    // vtkWriter.addVertexData(discreteSurfaceNormalFieldGVF, VTK::FieldInfo("SurfaceNormalDiscrete", VTK::FieldInfo::Type::vector, 3));
     duneVTKwriter.addPointData(discreteSurfaceNormalFieldGVF, Dune::Vtk::FieldInfo{"SurfaceNormalDiscrete",3, Dune::Vtk::RangeTypes::VECTOR});
 
 
-
-    /**
-     * @brief deprecated version using interpolation:
-     * 
-     */
-    //  auto surfaceNormalDiscreteCoefficients = computeDiscreteSurfaceNormal(localDKFunctionDouble, normalBasis); (deprecated)
-    // 
-
-    // // Create DiscreteGlobalBasisFunctions.
-    // auto surfaceNormalDiscrete   = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(normalBasis, surfaceNormalDiscreteCoefficients);
-    
-    // vtkWriter.addVertexData(surfaceNormalDiscrete , VTK::FieldInfo("surfaceNormal_discrete", VTK::FieldInfo::Type::vector, 3));
-    // vtkWriter.write(resultFileName);
-    
-
-
-    
-    // duneVTKwriter.addPointData(surfaceNormalDiscrete, Dune::Vtk::FieldInfo{"surfaceNormal_discrete dune-VTK",3, Vtk::RangeTypes::VECTOR});
-
-    // std::cout << "written discrete Surface Normal Old" << std::endl;
     //-------------------------------------------------------------------------------------
-    vtkWriter.write(resultFileName);
-    duneVTKwriter.write(resultFileName + "_DuneVTK");
+    // vtkWriter.write(resultFileName);
+    // duneVTKwriter.write(resultFileName + "_DuneVTK");
+    duneVTKwriter.write(resultFileName);
   }
 
 
 
-    /**
-     * @brief Measure errors.   
-     *        1.  Compute the Isometry-Error
-     *        2.  Compute the L2-Error and H1-SemiError as well as the energy difference 
-     *            between the discrete deformation u_h and the analytical deformation u .
-     */
-    if (parameterSet.get<bool>("measure_isometryError", 0))
-        auto isometry_errors = isometryError(localDKFunctionDouble, gridView);
-    if (parameterSet.get<bool>("measure_analyticalError", 0))
-    {
-        auto discretization_errors = measureAnalyticalError(localDKFunctionDouble,gridView,pyModule);
-
-
-        /**
-         * @brief Check Quantities
-         * 
-         */
-        // L2 - Discretization error
-        // if(discretization_errors[0] > 1.0)
-        // {
-        //     std::cerr << std::setprecision(9);
-        //     std::cerr << "L2-error is to large! " << std::endl;
-        //     return 1;
-        // }
-        // // H1(semi) - Discretization error
-        // if(discretization_errors[1] > 1.0)
-        // {
-        //     std::cerr << std::setprecision(9);
-        //     std::cerr << "H1-error is to large! " << std::endl;
-        //     return 1;
-        // }
-    }
-        
+  /**
+   * @brief Measure errors.
+   *        1.  Compute the Isometry-Error
+   *        2.  Compute the L2-Error and H1-SemiError as well as the energy difference
+   *            between the discrete deformation u_h and the analytical deformation u .
+   */
+  if (parameterSet.get<bool>("measure_isometryError", 0))
+    auto isometry_errors = isometryError(localDKFunctionDouble, gridView);
+  if (parameterSet.get<bool>("measure_analyticalError", 0))
+  {
+    auto discretization_errors = measureAnalyticalError(localDKFunctionDouble,gridView,pyModule);
+
 
+    std::cout << "L2-Error: " << discretization_errors[0] << std::endl;
+    std::cout << "H1-Error: " << discretization_errors[1] << std::endl;
 
     /**
-     * @brief Write Energy values.
-     * 
+     * @brief Check Quantities
+     *
      */
-    
-    std::cout << "(Final) Energy of discrete solution: " << numerical_energy<< std::endl;
-    if (parameterSet.get<bool>("compare_EnergyValues", 0))
-    {
-      auto analytical_energy = parameterSet.get<double>("analytical_energy");
-      auto energy_difference = analytical_energy - numerical_energy;
-      std::cout << "Analytical energy: " << analytical_energy<< std::endl;  
-      std::cout << "Energy difference: " << energy_difference << std::endl;
-
-      // if(energy_difference > 1.0)
-      // {
-      //   std::cerr << std::setprecision(9);
-      //   std::cerr << "Energy difference: " << energy_difference  << " is to large! " << std::endl;
-      //   return 1;
-      // }
-    }
-
-  // // Write the corresponding coefficient vector: verbatim in binary, to be completely lossless
-  //   char iFilename[200];
-  //   sprintf(iFilename, (resultFileName + ".data").c_str());
-
-  //   FILE* fpIterate = fopen(iFilename, "wb");
-  //   if (!fpIterate)
-  //       DUNE_THROW(SolverError, "Couldn't open file " << iFilename << " for writing");
-
-  //   for (size_t j=0; j<isometryCoefficients.size(); j++)
-  //       fwrite(&isometryCoefficients[j], sizeof(Coefficient), 1, fpIterate);
-
-  //   fclose(fpIterate);
-
+    // L2 - Discretization error
+    // if(discretization_errors[0] > 1.0)
+    // {
+    //     std::cerr << std::setprecision(9);
+    //     std::cerr << "L2-error is to large! " << std::endl;
+    //     return 1;
+    // }
+    // // H1(semi) - Discretization error
+    // if(discretization_errors[1] > 1.0)
+    // {
+    //     std::cerr << std::setprecision(9);
+    //     std::cerr << "H1-error is to large! " << std::endl;
+    //     return 1;
+    // }
+  }
 
-  #if 0
-    // Write the corresponding coefficient vector: verbatim in binary, to be completely lossless
-    typedef BlockVector<typename Coefficient::CoordinateType> EmbeddedVectorType;
-    EmbeddedVectorType xEmbedded(isometryCoefficients.size());
-    for (size_t i = 0; i<isometryCoefficients.size(); i++)
-    {
-      xEmbedded[i] = isometryCoefficients[i].globalCoordinates();
-      std::cout << "isometryCoefficients[i].globalCoordinates():" << isometryCoefficients[i].globalCoordinates() << std::endl;
-
-    }
-    std::ofstream outFile(resultFileName + ".data", std::ios_base::binary);
-    MatrixVector::Generic::writeBinary(outFile, xEmbedded);
-    outFile.close();
-    ///////////////////////////////////////////
-    //  (Option) write Solution(DOF)-vector and vertex coordinates to .txt-File
-    ///////////////////////////////////////////
-    if (parameterSet.get<bool>("writeDOFvector", 0))
-      writeDOFVector(gridView,targetDim, x, "DOFVectorR" + std::to_string(dim) + "_R" + std::to_string(targetDim) + ".txt");
-  #endif
 
 
+  /**
+   * @brief Write Energy values.
+   *
+   */
 
+  std::cout << "(Final) Energy of discrete solution: " << numerical_energy<< std::endl;
+  if (parameterSet.get<bool>("compare_EnergyValues", 0))
+  {
+    auto analytical_energy = parameterSet.get<double>("analytical_energy");
+    auto energy_difference = analytical_energy - numerical_energy;
+    std::cout << "Analytical energy: " << analytical_energy<< std::endl;
+    std::cout << "Energy difference: " << energy_difference << std::endl;
+
+    // if(energy_difference > 1.0)
+    // {
+    //   std::cerr << std::setprecision(9);
+    //   std::cerr << "Energy difference: " << energy_difference  << " is to large! " << std::endl;
+    //   return 1;
+    // }
+  }
 
   std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
   return 0;
-  }
\ No newline at end of file
+}
diff --git a/src/micro-problem.cc b/src/micro-problem.cc
index ca4ccf85f0891da6ff6771c2cd02be38bf432f73..a5e5a55077e285c22f1d95e6fc0b9bbca743510e 100644
--- a/src/micro-problem.cc
+++ b/src/micro-problem.cc
@@ -12,7 +12,7 @@
 #include <dune/common/float_cmp.hh>
 #include <dune/common/math.hh>
 #include <dune/common/fvector.hh>
-#include <dune/common/fmatrix.hh> 
+#include <dune/common/fmatrix.hh>
 
 #include <dune/geometry/quadraturerules.hh>
 
@@ -29,7 +29,7 @@
 #include <dune/istl/spqr.hh>
 #include <dune/istl/preconditioners.hh>
 #include <dune/istl/io.hh>
-#include <dune/istl/eigenvalue/test/matrixinfo.hh> // TEST: compute condition Number 
+#include <dune/istl/eigenvalue/test/matrixinfo.hh> // TEST: compute condition Number
 
 #include <dune/functions/functionspacebases/interpolate.hh>
 #include <dune/functions/backends/istlvectorbackend.hh>
@@ -45,11 +45,11 @@
 #include <dune/fufem/dunepython.hh>
 
 #include <dune/microstructure/matrix_operations.hh>
-#include <dune/microstructure/CorrectorComputer.hh>    
-#include <dune/microstructure/EffectiveQuantitiesComputer.hh>  
-#include <dune/microstructure/prestrainedMaterial.hh>  
+#include <dune/microstructure/CorrectorComputer.hh>
+#include <dune/microstructure/EffectiveQuantitiesComputer.hh>
+#include <dune/microstructure/prestrainedMaterial.hh>
 
-#include <dune/solvers/solvers/umfpacksolver.hh>   //TEST 
+#include <dune/solvers/solvers/umfpacksolver.hh>   //TEST
 
 #include <any>
 #include <variant>
@@ -60,7 +60,7 @@ using namespace Dune;
 using namespace MatrixOperations;
 
 
-using GridView = Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, 3>>::LeafGridView;
+using GridView = Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, 3> >::LeafGridView;
 
 //////////////////////////////////////////////////////////////////////
 // Helper functions for Table-Output
@@ -68,28 +68,28 @@ using GridView = Dune::YaspGrid<3, Dune::EquidistantOffsetCoordinates<double, 3>
 /*! Center-aligns string within a field of width w. Pads with blank spaces
     to enforce alignment. */
 std::string center(const std::string s, const int w) {
-    std::stringstream ss, spaces;
-    int padding = w - s.size();                 // count excess room to pad
-    for(int i=0; i<padding/2; ++i)
-        spaces << " ";
-    ss << spaces.str() << s << spaces.str();    // format with padding
-    if(padding>0 && padding%2!=0)               // if odd #, add 1 space
-        ss << " ";
-    return ss.str();
+  std::stringstream ss, spaces;
+  int padding = w - s.size();                   // count excess room to pad
+  for(int i=0; i<padding/2; ++i)
+    spaces << " ";
+  ss << spaces.str() << s << spaces.str();      // format with padding
+  if(padding>0 && padding%2!=0)                 // if odd #, add 1 space
+    ss << " ";
+  return ss.str();
 }
 
 /* Convert double to string with specified number of places after the decimal
    and left padding. */
 template<class type>
 std::string prd(const type x, const int decDigits, const int width) {
-    std::stringstream ss;
-//     ss << std::fixed << std::right;
-    ss << std::scientific << std::right;                     // Use scientific Output!
-    ss.fill(' ');        // fill space around displayed #
-    ss.width(width);     // set  width around displayed #
-    ss.precision(decDigits); // set # places after decimal
-    ss << x;
-    return ss.str();
+  std::stringstream ss;
+  //     ss << std::fixed << std::right;
+  ss << std::scientific << std::right;                       // Use scientific Output!
+  ss.fill(' ');          // fill space around displayed #
+  ss.width(width);       // set  width around displayed #
+  ss.precision(decDigits);   // set # places after decimal
+  ss << x;
+  return ss.str();
 }
 
 /**
@@ -97,12 +97,12 @@ std::string prd(const type x, const int decDigits, const int width) {
  *         Check whether two points are equal on R/Z x R/Z x R
  */
 auto equivalent = [](const FieldVector<double,3>& x, const FieldVector<double,3>& y)
-                {
+                  {
                     return ( (FloatCmp::eq(x[0],y[0]) or FloatCmp::eq(x[0]+1,y[0]) or FloatCmp::eq(x[0]-1,y[0]))
-                            and (FloatCmp::eq(x[1],y[1]) or FloatCmp::eq(x[1]+1,y[1]) or FloatCmp::eq(x[1]-1,y[1]))
-                            and (FloatCmp::eq(x[2],y[2]))
-                        );
-                };
+                             and (FloatCmp::eq(x[1],y[1]) or FloatCmp::eq(x[1]+1,y[1]) or FloatCmp::eq(x[1]-1,y[1]))
+                             and (FloatCmp::eq(x[2],y[2]))
+                             );
+                  };
 
 
 
@@ -110,30 +110,30 @@ auto equivalent = [](const FieldVector<double,3>& x, const FieldVector<double,3>
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 int main(int argc, char *argv[])
 {
-    feenableexcept(FE_INVALID);
-    MPIHelper::instance(argc, argv);
-    
-    Dune::Timer globalTimer;
-
-    if (argc < 3)
-        DUNE_THROW(Exception, "Usage: ./Cell-Problem <python path> <python module without extension>");
-
-    // Start Python interpreter
-    Python::start();
-    auto pyMain = Python::main();
-    pyMain.runStream()
-        << std::endl << "import math"
-        << std::endl << "import sys"
-        << std::endl << "sys.path.append('" << argv[1] << "')"  << std::endl;
-    auto pyModule = pyMain.import(argv[2]);
-
-    ParameterTree parameterSet;
-    pyModule.get("parameterSet").toC(parameterSet);
-    // read possible further parameters from the command line
-    ParameterTreeParser::readOptions(argc, argv, parameterSet);
-    // Print all parameters, to make them appear in the log file
-    std::cout << "Input parameters:" << std::endl;
-    parameterSet.report();
+  feenableexcept(FE_INVALID);
+  MPIHelper::instance(argc, argv);
+
+  Dune::Timer globalTimer;
+
+  if (argc < 3)
+    DUNE_THROW(Exception, "Usage: ./Cell-Problem <python path> <python module without extension>");
+
+  // Start Python interpreter
+  Python::start();
+  auto pyMain = Python::main();
+  pyMain.runStream()
+    << std::endl << "import math"
+    << std::endl << "import sys"
+    << std::endl << "sys.path.append('" << argv[1] << "')"  << std::endl;
+  auto pyModule = pyMain.import(argv[2]);
+
+  ParameterTree parameterSet;
+  pyModule.get("parameterSet").toC(parameterSet);
+  // read possible further parameters from the command line
+  ParameterTreeParser::readOptions(argc, argv, parameterSet);
+  // Print all parameters, to make them appear in the log file
+  std::cout << "Input parameters:" << std::endl;
+  parameterSet.report();
 
   //--- Output setter
   std::string baseName = parameterSet.get("baseName", "CellProblem-result");
@@ -144,153 +144,153 @@ int main(int argc, char *argv[])
 
   constexpr int dim = 3;
 
-  // Debug/Print Options 
+  // Debug/Print Options
   bool print_debug = parameterSet.get<bool>("print_debug", false);
   // VTK-write options
   // bool write_prestrainFunctions  = parameterSet.get<bool>("write_prestrainFunctions", false);  //Not implemented yet.
 
   /**
-  * @brief Generate the grid.
-  *        Corrector Problem Domain (-1/2,1/2)^3.
-  */
-//   FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
-//   FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
-
-//   std::array<int,2> numLevels = parameterSet.get<std::array<int,2>>("numLevels", {3,3});
-//   int levelCounter = 0;
-
-Dune::FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
-Dune::FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
-int microGridLevel = parameterSet.get<int>("microGridLevel", 1);
-std::array<int, dim> nElements = {(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel)};
-// std::cout << "Number of Grid-Elements in each direction: " << nElements << std::endl;
-std::cout << "Number of Grid-Elements in each direction: " << (int)std::pow(2,microGridLevel) << std::endl;
-   
-  
+   * @brief Generate the grid.
+   *        Corrector Problem Domain (-1/2,1/2)^3.
+   */
+  //   FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
+  //   FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
+
+  //   std::array<int,2> numLevels = parameterSet.get<std::array<int,2>>("numLevels", {3,3});
+  //   int levelCounter = 0;
+
+  Dune::FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
+  Dune::FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
+  int microGridLevel = parameterSet.get<int>("microGridLevel", 1);
+  std::array<int, dim> nElements = {(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel)};
+  // std::cout << "Number of Grid-Elements in each direction: " << nElements << std::endl;
+  std::cout << "Number of Grid-Elements in each direction: " << (int)std::pow(2,microGridLevel) << std::endl;
+
+
   ///////////////////////////////////
   // 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:: | level | q1 | q2 | q3 | q12 | q13 | q23 | b1 | b2 | b3 |           
-//   std::vector<std::variant<std::string, size_t , double>> Storage_Quantities;         
+  //std::vector<std::variant<std::string, size_t , double>> Storage_Error;
+  //--- Storage:: | level | q1 | q2 | q3 | q12 | q13 | q23 | b1 | b2 | b3 |
+  //   std::vector<std::variant<std::string, size_t , double>> Storage_Quantities;
 
   //--- GridLevel-Loop:
-//   for(size_t level = numLevels[0] ; level <= numLevels[1]; level++)     
-//   {
-//     std::cout << " ----------------------------------" << std::endl;
-//     std::cout << "GridLevel: " << level << std::endl;
-//     std::cout << " ----------------------------------" << std::endl;
-
-//     // 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)};
-//     std::cout << "Number of Grid-Elements in each direction: " << nElements << std::endl;
-//     log << "Number of Grid-Elements in each direction: " << nElements << std::endl;
-
-    using CellGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
-    CellGridType grid_CE(lower,upper,nElements);
-    using GridView = CellGridType::LeafGridView;
-    const GridView gridView_CE = grid_CE.leafGridView();
-    if(print_debug)
-       std::cout << "Host grid has " << gridView_CE.size(dim) << " vertices." << std::endl;
-
-    //--- Choose a finite element space for Cell Problem
-    using namespace Functions::BasisFactory;
-    Functions::BasisFactory::Experimental::PeriodicIndexSet periodicIndices;
-
-    //--- Get PeriodicIndices for periodicBasis (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))
-        for (const auto& v2 : vertices(gridView_CE))
-            if (equivalent(v1.geometry().corner(0), v2.geometry().corner(0)))
-            {
-                periodicIndices.unifyIndexPair({gridView_CE.indexSet().index(v1)}, {gridView_CE.indexSet().index(v2)});
-            }
-
-    Dune::Timer basisSetupTimer;
-    //--- Setup first order periodic Lagrange-Basis
-    auto Basis_CE = makeBasis(
-        gridView_CE,
-        power<dim>(                                  
-        Functions::BasisFactory::Experimental::periodic(lagrange<1>(), periodicIndices),
-        flatLexicographic()
-        //blockedInterleaved()   // Not Implemented
-        ));     
-    std::cout << "Basis setup took " << basisSetupTimer.elapsed() << " seconds " << std::endl;
-
-    if(print_debug)
-       std::cout << "power<periodic> basis has " << Basis_CE.dimension() << " degrees of freedom" << std::endl;
-
-
-
-    // -------------------------------------------------------
-    // This needs to be declared as Callable otherwise Class(param) wont work. if _call__(self,x) is not implemented
-    Python::Callable MicrostructureClass  = pyModule.get("Microstructure");
-
-    // Create instance of class
-    // This needs to be a 'Python::Reference' and not 'Python::Callable' since Callable only works if __call__(self,x) is implemented in the python module!!!
-    // Python::Reference microstructure = MicrostructureClass(2);
-
-    //Setup for a constant microstructure.
-    Python::Reference microstructure = MicrostructureClass();
-
-    ///////////////////////////////////
-    //  Create prestrained material object
-    ///////////////////////////////////
-    Dune::Timer materialSetupTimer;
-
-    using MaterialType = prestrainedMaterial<GridView>;
-
-    // auto material = prestrainedMaterial(gridView_CE,parameterSet,pyModule);
-    // auto material = prestrainedMaterial(gridView_CE,microstructure,parameterSet,pyModule);
-    std::shared_ptr<MaterialType> material = std::make_shared<MaterialType>(gridView_CE,microstructure,parameterSet,pyModule);
-    std::cout << "Material setup took " << materialSetupTimer.elapsed() << " seconds " << std::endl;
-
-    // --- Get scale ratio 
-    // double gamma = parameterSet.get<double>("gamma",1.0); 
-    std::cout << "scale ratio (gamma) set to : " << material->gamma_ << std::endl;
-
-    //--- Compute Correctors
-    // auto correctorComputer = CorrectorComputer(Basis_CE, material, log, parameterSet);
-    // auto correctorComputer = CorrectorComputer(Basis_CE, materialPointer, log, parameterSet);
-    std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType>>(Basis_CE, material, parameterSet);
-    correctorComputer->assemble();
-    correctorComputer->solve();
-
-    //--- Check Correctors (options):
-    if(parameterSet.get<bool>("write_L2Error", false))
-         correctorComputer->computeNorms();
-    if(parameterSet.get<bool>("write_VTK", false))
-         correctorComputer->writeCorrectorsVTK(microGridLevel);
-    //--- Additional Test: check orthogonality (75) from paper:
-    if(parameterSet.get<bool>("write_checkOrthogonality", false))
-        correctorComputer->check_Orthogonality();
-    //--- Check symmetry of stiffness matrix
-    if(print_debug)
-        correctorComputer->checkSymmetry();
-
-    //--- Compute effective quantities
-    // auto effectiveQuantitiesComputer = EffectiveQuantitiesComputer(correctorComputer,material);
-    auto effectiveQuantitiesComputer = EffectiveQuantitiesComputer(correctorComputer);
-    effectiveQuantitiesComputer.computeEffectiveQuantities();
-
-    //--- Write material indicator function to VTK
-    if (parameterSet.get<bool>("write_materialFunctions", false))
-        material->writeVTKMaterialFunctions(microGridLevel);
-
-    //--- Get effective quantities
-    auto Qeff = effectiveQuantitiesComputer.getQeff();
-    auto Beff = effectiveQuantitiesComputer.getBeff();
-    printmatrix(std::cout, Qeff, "Matrix Qeff", "--");
-    printvector(std::cout, Beff, "Beff", "--");
-
-
-    //--- Write effective quantities to matlab folder (for symbolic minimization)
-    if(parameterSet.get<bool>("write_EffectiveQuantitiesToTxt", true))
-        effectiveQuantitiesComputer.writeEffectiveQuantitiesToTxt(resultPath);
-
-
-
-
-    std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
+  //   for(size_t level = numLevels[0] ; level <= numLevels[1]; level++)
+  //   {
+  //     std::cout << " ----------------------------------" << std::endl;
+  //     std::cout << "GridLevel: " << level << std::endl;
+  //     std::cout << " ----------------------------------" << std::endl;
+
+  //     // 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)};
+  //     std::cout << "Number of Grid-Elements in each direction: " << nElements << std::endl;
+  //     log << "Number of Grid-Elements in each direction: " << nElements << std::endl;
+
+  using CellGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
+  CellGridType grid_CE(lower,upper,nElements);
+  using GridView = CellGridType::LeafGridView;
+  const GridView gridView_CE = grid_CE.leafGridView();
+  if(print_debug)
+    std::cout << "Host grid has " << gridView_CE.size(dim) << " vertices." << std::endl;
+
+  //--- Choose a finite element space for Cell Problem
+  using namespace Functions::BasisFactory;
+  Functions::BasisFactory::Experimental::PeriodicIndexSet periodicIndices;
+
+  //--- Get PeriodicIndices for periodicBasis (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))
+    for (const auto& v2 : vertices(gridView_CE))
+      if (equivalent(v1.geometry().corner(0), v2.geometry().corner(0)))
+      {
+        periodicIndices.unifyIndexPair({gridView_CE.indexSet().index(v1)}, {gridView_CE.indexSet().index(v2)});
+      }
+
+  Dune::Timer basisSetupTimer;
+  //--- Setup first order periodic Lagrange-Basis
+  auto Basis_CE = makeBasis(
+    gridView_CE,
+    power<dim>(
+      Functions::BasisFactory::Experimental::periodic(lagrange<1>(), periodicIndices),
+      flatLexicographic()
+      //blockedInterleaved()   // Not Implemented
+      ));
+  std::cout << "Basis setup took " << basisSetupTimer.elapsed() << " seconds " << std::endl;
+
+  if(print_debug)
+    std::cout << "power<periodic> basis has " << Basis_CE.dimension() << " degrees of freedom" << std::endl;
+
+
+
+  // -------------------------------------------------------
+  // This needs to be declared as Callable otherwise Class(param) wont work. if _call__(self,x) is not implemented
+  Python::Callable MicrostructureClass  = pyModule.get("Microstructure");
+
+  // Create instance of class
+  // This needs to be a 'Python::Reference' and not 'Python::Callable' since Callable only works if __call__(self,x) is implemented in the python module!!!
+  // Python::Reference microstructure = MicrostructureClass(2);
+
+  //Setup for a constant microstructure.
+  Python::Reference microstructure = MicrostructureClass();
+
+  ///////////////////////////////////
+  //  Create prestrained material object
+  ///////////////////////////////////
+  Dune::Timer materialSetupTimer;
+
+  using MaterialType = prestrainedMaterial<GridView>;
+
+  // auto material = prestrainedMaterial(gridView_CE,parameterSet,pyModule);
+  // auto material = prestrainedMaterial(gridView_CE,microstructure,parameterSet,pyModule);
+  std::shared_ptr<MaterialType> material = std::make_shared<MaterialType>(gridView_CE,microstructure,parameterSet,pyModule);
+  std::cout << "Material setup took " << materialSetupTimer.elapsed() << " seconds " << std::endl;
+
+  // --- Get scale ratio
+  // double gamma = parameterSet.get<double>("gamma",1.0);
+  std::cout << "scale ratio (gamma) set to : " << material->gamma_ << std::endl;
+
+  //--- Compute Correctors
+  // auto correctorComputer = CorrectorComputer(Basis_CE, material, log, parameterSet);
+  // auto correctorComputer = CorrectorComputer(Basis_CE, materialPointer, log, parameterSet);
+  std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType> >(Basis_CE, material, parameterSet);
+  correctorComputer->assemble();
+  correctorComputer->solve();
+
+  //--- Check Correctors (options):
+  if(parameterSet.get<bool>("write_L2Error", false))
+    correctorComputer->computeNorms();
+  if(parameterSet.get<bool>("write_VTK", false))
+    correctorComputer->writeCorrectorsVTK(microGridLevel);
+  //--- Additional Test: check orthogonality (75) from paper:
+  if(parameterSet.get<bool>("write_checkOrthogonality", false))
+    correctorComputer->check_Orthogonality();
+  //--- Check symmetry of stiffness matrix
+  if(print_debug)
+    correctorComputer->checkSymmetry();
+
+  //--- Compute effective quantities
+  // auto effectiveQuantitiesComputer = EffectiveQuantitiesComputer(correctorComputer,material);
+  auto effectiveQuantitiesComputer = EffectiveQuantitiesComputer(correctorComputer);
+  effectiveQuantitiesComputer.computeEffectiveQuantities();
+
+  //--- Write material indicator function to VTK
+  if (parameterSet.get<bool>("write_materialFunctions", false))
+    material->writeVTKMaterialFunctions(microGridLevel);
+
+  //--- Get effective quantities
+  auto Qeff = effectiveQuantitiesComputer.getQeff();
+  auto Beff = effectiveQuantitiesComputer.getBeff();
+  printmatrix(std::cout, Qeff, "Matrix Qeff", "--");
+  printvector(std::cout, Beff, "Beff", "--");
+
+
+  //--- Write effective quantities to matlab folder (for symbolic minimization)
+  if(parameterSet.get<bool>("write_EffectiveQuantitiesToTxt", true))
+    effectiveQuantitiesComputer.writeEffectiveQuantitiesToTxt(resultPath);
+
+
+
+
+  std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
 }
diff --git a/test/analyticalcylindertest.cc b/test/analyticalcylindertest.cc
index 4ced9ed89ae63d2b8d02f08e15b15a9e824f794d..70bb021aad20903e2cd175ab80c2bc3104f16a07 100644
--- a/test/analyticalcylindertest.cc
+++ b/test/analyticalcylindertest.cc
@@ -1,10 +1,8 @@
 #include <config.h>
 #include <signal.h>
 #include <memory>
-
 #include <fenv.h>
 #include <array>
-
 #include <math.h>
 
 // Includes for the ADOL-C automatic differentiation library
@@ -13,22 +11,21 @@
 #include <dune/fufem/utilities/adolcnamespaceinjections.hh>
 
 #include <dune/common/typetraits.hh>
-
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/parametertree.hh>
 #include <dune/common/parametertreeparser.hh>
 
 #include <dune/grid/uggrid.hh>
 #include <dune/grid/utility/structuredgridfactory.hh>
-
 #include <dune/grid/io/file/gmshreader.hh>
 #include <dune/grid/io/file/vtk.hh>
 
 #include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>
+#include <dune/functions/gridfunctions/composedgridfunction.hh>
+#include <dune/functions/functionspacebases/cubichermitebasis.hh>
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 #include <dune/functions/functionspacebases/powerbasis.hh>
 #include <dune/functions/functionspacebases/interpolate.hh>
-#include <dune/functions/functionspacebases/reducedcubichermitetrianglebasis.hh>
 
 #include <dune/fufem/boundarypatch.hh>
 #include <dune/fufem/functiontools/boundarydofs.hh>
@@ -42,25 +39,21 @@
 #include <dune/gfe/spaces/productmanifold.hh>
 #include <dune/gfe/spaces/realtuple.hh>
 #include <dune/gfe/spaces/rotation.hh>
-#include <dune/gfe/localdiscretekirchhoffbendingisometry.hh>
+#include <dune/gfe/functions/discretekirchhoffbendingisometry.hh>
+#include <dune/gfe/functions/embeddedglobalgfefunction.hh>
+#include <dune/gfe/functions/localprojectedfefunction.hh>
 #include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
-#include <dune/gfe/assemblers/harmonicenergy.hh>
 #include <dune/gfe/assemblers/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/discretekirchhoffbendingenergy.hh>
+#include <dune/gfe/assemblers/forceenergy.hh>
+#include <dune/gfe/assemblers/sumenergy.hh>
 #include <dune/gfe/bendingisometryhelper.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
-#include <dune/gfe/embeddedglobalgfefunction.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergy.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyconforming.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewicz.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewiczprojected.hh>
-// #include <dune/gfe/energies/discretekirchhoffbendingenergyprestrained.hh>
+#include <dune/gfe/riemanniantrsolver.hh>
 
+#include <dune/microstructure/bendingisometryaddons.hh>
 #include <dune/microstructure/energies/discretekirchhoffbendingenergyprestrained.hh>
 
-#include <dune/gfe/spaces/stiefelmanifold.hh>
-// #include <dune/gfe/spaces/stiefelmatrix.hh>
-
-
 #include <dune/gmsh4/gmsh4reader.hh>
 #include <dune/gmsh4/gridcreators/lagrangegridcreator.hh>
 
@@ -68,363 +61,36 @@ const int dim = 2;
 
 using namespace Dune;
 
-
 /**
  * @brief Test for the macroscopic simulation:
  *        We consider the special case of a effective prestrain/spontaneous curvature Beff given by
  *         Beff =  [1.0 , 0.0]
  *                 [0.0  ,0.5]
- *        on a rectangular domain (0,2*pi)^2 with clampled boundary conditions. 
- *        In this case there is a known exact solution (deformation) u(x,y) = (sin(x), y , 1-cos(x)) 
- *        The analytical energy is given by E[u_ana] = (pi)^2/2.0  . 
- *        That is used to validate the macroscopic minimization problem. 
+ *        on a rectangular domain (0,2*pi)^2 with clampled boundary conditions.
+ *        In this case there is a known exact solution (deformation) u(x,y) = (sin(x), y , 1-cos(x))
+ *        The analytical energy is given by E[u_ana] = (pi)^2/2.0  .
+ *        That is used to validate the macroscopic minimization problem.
  *        (see Bartels,Bonito,Nochetto - Bilayer Plates: Model Reduction, Γ‐Convergent Finite Element Approximation, and Discrete Gradient Flow, p.25)
  *        We measure/test the L2-error between the exact and discrete solution up to a certain tolerance.
  */
-
-
-// /**
-//  * @brief Comparison of different function definitions for debugging purposes.
-//  * TODO: remove later
-//  */
-// template<class LocalDiscreteKirchhoffFunction,class DeformationFunction, class GridView>
-// auto compare(LocalDiscreteKirchhoffFunction& kirchhoffFunction,
-//              DeformationFunction&  deformationFunction,
-//              GridView& gridView)
-// {
-//     std::cout << "COMPARE:" << std::endl;
-//     auto localDeformation = localFunction(deformationFunction);
-//     auto rotation = derivative(deformationFunction);
-//     auto localRotation = localFunction(rotation);
-//     auto localRotation_2 = derivative(localDeformation);
-//     for (const auto &element :  elements(gridView))
-//     {
-//       auto geometry = element.geometry();
-      
-//       kirchhoffFunction.bind(element);
-//       localDeformation.bind(element);
-//       localRotation.bind(element); 
-//       localRotation_2.bind(element); 
-
-//       //evaluate at nodes:
-//       for (int i=0; i<geometry.corners(); i++)
-//       {
-//          auto kirchhoffOut = kirchhoffFunction.evaluate(geometry.local(geometry.corner(i))).globalCoordinates();
-//          auto KirchhoffRot = kirchhoffFunction.evaluateDerivative(geometry.local(geometry.corner(i)));
-//         //Test
-//         const auto& jacobian = geometry.jacobian(geometry.corner(i));
-//         printmatrix(std::cout, jacobian, "jacobianInverse:", "--");
-
-//         auto defOut = localDeformation(geometry.local(geometry.corner(i)));
-//         auto defRot = localRotation(geometry.local(geometry.corner(i)));
-//         auto defRot_2 = localRotation_2(geometry.local(geometry.corner(i)));
-
-//         printvector(std::cout, kirchhoffOut, "kirchhoffOut:", "--");
-//         printvector(std::cout, defOut, "defOut:", "--");
-//         printmatrix(std::cout, KirchhoffRot, "KirchhoffRot:", "--");
-//         printmatrix(std::cout, defRot, "defRot:", "--");
-//         // printmatrix(std::cout, defRot*jacobian, "defRot*jacobian:", "--");   // deprecated: when ReducedCubicHermite returned values in globalCoordinates, this was actually neccessary to get the right values. 
-//       }
-//     }
-// }
-
-
-// /**
-//  * @brief Test that checks the isometry constraint at the nodes of the Triangulation
-//  */
-// template<class LocalDiscreteKirchhoffFunction, class GridView>
-// auto nodewiseIsometryTest(LocalDiscreteKirchhoffFunction& deformationFunction,
-//                   GridView& gridView)
-// {
-//     for (const auto &element :  elements(gridView))
-//     {
-//       auto geometry = element.geometry();
-//       deformationFunction.bind(element);
-//       // evaluate at nodes:
-//       for (int i=0; i<geometry.corners(); i++)
-//       {
-//         //  auto out = deformationFunction.evaluate(geometry.local(geometry.corner(i))).globalCoordinates();
-//          auto rot = deformationFunction.evaluateDerivative(geometry.local(geometry.corner(i)));
-//         FieldMatrix<double,2,2> I = ScaledIdentityMatrix<double,2>(1);
-//         auto diff = (rot.transposed()*rot) - I;
-//         // std::cout << "diff.frobenius_norm():" << diff.frobenius_norm() << std::endl;
-//         if(diff.frobenius_norm()>1e-8)
-//           DUNE_THROW(Exception, "Nodewise Isometry Test failed! with error"<< diff.frobenius_norm());
-//       }
-//     }
-//     std::cout << "nodewiseIsometryTest passed." << std::endl;
-// }
-
-
-// template<class DeformationFunction>
-// auto nodewiseIsometryTest(DeformationFunction& deformationGridViewFunction)
-// {
-//     auto localDeformation = localFunction(deformationGridViewFunction);
-//     auto localRotation = derivative(localDeformation);
-//     auto gridView = deformationGridViewFunction.basis().gridView();
-//     for (const auto &element :  elements(gridView))
-//     {
-//       auto geometry = element.geometry();
-//       localDeformation.bind(element);
-//       localRotation.bind(element);
-
-//       // evaluate at nodes:
-//       for (int i=0; i<geometry.corners(); i++)
-//       {
-//          auto rot = localRotation(geometry.local(geometry.corner(i)));
-//         auto product = rot.transposed()*rot;
-
-//         FieldMatrix<double,2,2> I = ScaledIdentityMatrix<double,2>(1);
-//         auto diff = (rot.transposed()*rot) - I;
-
-//         if(diff.frobenius_norm()>1e-8)
-//           DUNE_THROW(Exception, "Nodewise Isometry Test failed! with error"<< diff.frobenius_norm());
-//       }
-//     }
-//     std::cout << "nodewiseIsometryTest passed." << std::endl;
-// }
-
-
-
-// /** \brief The identity function in R^d, and its derivative
-//  *
-//  * This is needed to compute the displacement from the deformation (for visualization).
-//  * Since we want to represent it in a Hermite finite element space, we need
-//  * the derivative as well.
-//  *
-//  * Is there no shorter way to implement this?
-//  */
-// template<class K>
-// class IdentityGridEmbedding
-// {
-// public:
-//   //! Evaluate identity
-//   FieldVector<K,3> operator() (const FieldVector<K,2>& x) const
-//   {
-//     return {x[0], x[1], 0.0};
-//   }
-
-//   /**
-//    * \brief Obtain derivative of identity function
-//    */
-//   friend auto derivative(const IdentityGridEmbedding& p)
-//   {
-//     return [](const FieldVector<K,dim>& x) { return FieldMatrix<K,3,2>({{1,0}, {0,1}, {0,0}}); };
-//   }
-// };
-
-// /** \brief Project a vector field onto a product of ReducedHermiteTriangle spaces
-//  *
-//  * \todo This functionality should be provided by dune-functions.  It currently isn't,
-//  * because ReducedHermiteTriangleBasis is not an affine finite element.
-//  */
-// template <class Basis, class Coefficients, class Function>
-// void interpolate(const Basis& basis, Coefficients& coefficients, Function& f)
-// {
-//   coefficients.resize(basis.size());
-//   // coefficients.resize(basis.dimension());
-//   auto localView = basis.localView();
-
-//   for (auto&& e : elements(basis.gridView()))
-//   {
-//     localView.bind(e);
-
-//     // Loop over the corners
-//     for (std::size_t i=0; i<3; i++)
-//     {
-//       auto pos = e.geometry().corner(i);
-//       auto value = f(pos);
-//       auto der = derivative(f)(pos);
-
-//       // printvector(std::cout, value, "value:", "--");
-//       // printmatrix(std::cout, der, "der:", "--");
-
-//       // std::cout << "sin(x):" << sin(pos[0]) << std::endl;
-//       // std::cout << "cos(x):" << cos(pos[0]) << std::endl;
-//       // printvector(std::cout, pos, "pos: ", "--");
-
-//       // Loop over components of power basis
-//       for(std::size_t k=0; k<3 ; k++)
-//       {
-//         auto localIdx_0 = localView.tree().child(k).localIndex(i);    // index for values
-//         auto localIdx_1 = localView.tree().child(k).localIndex(i+3);  // index for partial derivatives w.r.t. x
-//         auto localIdx_2 = localView.tree().child(k).localIndex(i+6);  // index for partial derivatives w.r.t. y
-//         // std::cout << "localIdx_0: " << localIdx_0 << std::endl;
-//         // std::cout << "localIdx_1: " << localIdx_1 << std::endl;
-//         // std::cout << "localIdx_2: " << localIdx_2 << std::endl;
-
-//         auto globalIdx_0 = localView.index(localIdx_0);
-//         auto globalIdx_1 = localView.index(localIdx_1);
-//         auto globalIdx_2 = localView.index(localIdx_2);
-//         // std::cout << "globalIdx_0: " << globalIdx_0 << std::endl;
-//         // std::cout << "globalIdx_1: " << globalIdx_1 << std::endl;
-//         // std::cout << "globalIdx_2: " << globalIdx_2 << std::endl;
-
-//         coefficients[globalIdx_0[0]][globalIdx_0[1]] = value[k];
-//         coefficients[globalIdx_1[0]][globalIdx_1[1]] = der[k][0];
-//         coefficients[globalIdx_2[0]][globalIdx_2[1]] = der[k][1];
-//       }
-//     }
-
-//   }
-// }
-
-// /**
-//  * @brief Data structure conversion from 'VectorSpaceCoefficients' to 'IsometryCoefficients'.
-//  *  TODO: Throw an error if rotation-part is not orthogonal?  (expensive to check)
-//  */
-// template<class DiscreteKirchhoffBasis, class CoefficientBasis, class Coefficients, class IsometryCoefficients>
-// void vectorToIsometryCoefficientMap(const DiscreteKirchhoffBasis& discreteKirchhoffBasis,
-//                              const CoefficientBasis& coefficientBasis,
-//                              const Coefficients& vectorCoefficients,
-//                              IsometryCoefficients& isometryCoefficients)
-// {
-//   std::cout << "calling vectorToIsometryCoefficientMap" << std::endl;
-//   auto localView = discreteKirchhoffBasis.localView();
-//   auto localViewCoefficients = coefficientBasis.localView();
-
-//   using RT = typename IsometryCoefficients::value_type::ctype;
-
-//   for (const auto &element :  elements(coefficientBasis.gridView()))
-//   {
-//     localView.bind(element);
-//     localViewCoefficients.bind(element);
-
-//     // Loop over the corners
-//     for (std::size_t c=0; c<3; c++)
-//     {
-//         size_t localIdxOut = localViewCoefficients.tree().localIndex(c);
-//         size_t globalIdxOut = localViewCoefficients.index(localIdxOut);
-
-//         FieldVector<RT,3> currentDeformation(0);
-//         FieldVector<RT,3> currentDerivative_x(0);
-//         FieldVector<RT,3> currentDerivative_y(0);
-
-//       // Loop over components of power basis
-//       for(std::size_t k=0; k<3 ; k++)
-//       {
-//         auto localIdx_0 = localView.tree().child(k).localIndex(c);    // index for values
-//         auto localIdx_1 = localView.tree().child(k).localIndex(c+3);  // index for partial derivatives w.r.t. x
-//         auto localIdx_2 = localView.tree().child(k).localIndex(c+6);  // index for partial derivatives w.r.t. y
-//         // std::cout << "localIdx_0: " << localIdx_0 << std::endl;
-//         // std::cout << "localIdx_1: " << localIdx_1 << std::endl;
-//         // std::cout << "localIdx_2: " << localIdx_2 << std::endl;
-
-//         auto globalIdx_0 = localView.index(localIdx_0);
-//         auto globalIdx_1 = localView.index(localIdx_1);
-//         auto globalIdx_2 = localView.index(localIdx_2);
-
-//         // blockedInterleaved -- Version
-//         currentDeformation[k]  = vectorCoefficients[globalIdx_0[0]][globalIdx_0[1]];
-//         currentDerivative_x[k] = vectorCoefficients[globalIdx_1[0]][globalIdx_1[1]];
-//         currentDerivative_y[k] = vectorCoefficients[globalIdx_2[0]][globalIdx_2[1]];
-
-//       }
-
-//       //cross product to get last column of rotation matrix
-//       FieldVector<RT,3> cross = {currentDerivative_x[1]*currentDerivative_y[2] - currentDerivative_x[2]*currentDerivative_y[1],
-//                                  currentDerivative_x[2]*currentDerivative_y[0] - currentDerivative_x[0]*currentDerivative_y[2], 
-//                                  currentDerivative_x[0]*currentDerivative_y[1] - currentDerivative_x[1]*currentDerivative_y[0]};
-
-//       FieldMatrix<RT,3,3> rotMatrix(0);
-//       for(std::size_t k=0; k<3 ; k++)
-//       {
-//         rotMatrix[k][0] = currentDerivative_x[k];
-//         rotMatrix[k][1] = currentDerivative_y[k];
-//         rotMatrix[k][2] = cross[k];
-//       }
-//       // printmatrix(std::cout, rotMatrix, "rotMatrix:", "--");
-//       using namespace Dune::Indices;
-//       isometryCoefficients[globalIdxOut][_1].set(rotMatrix);                          //TODO: Throw if matrix is not orthogonal?
-//       isometryCoefficients[globalIdxOut][_0] = (RealTuple<RT, 3>)currentDeformation;
-//     }
-//   }
-// }
-
-
-// /**
-//  * @brief Data structure conversion from 'IsometryCoefficients' to 'VectorSpaceCoefficients'.
-//  */
-// template<class DiscreteKirchhoffBasis, class CoefficientBasis, class Coefficients, class IsometryCoefficients>
-// void isometryToVectorCoefficientMap(const DiscreteKirchhoffBasis& discreteKirchhoffBasis,
-//                              const CoefficientBasis& coefficientBasis,
-//                              Coefficients& coefficients,
-//                              const IsometryCoefficients& isometryCoefficients)
-// {
-//   std::cout << "calling isometryToVectorCoefficientMap" << std::endl;
-//   auto localView = discreteKirchhoffBasis.localView();
-//   auto localViewCoefficients = coefficientBasis.localView();
-
-//   for (const auto &element :  elements(coefficientBasis.gridView()))
-//   {
-//     localView.bind(element);
-//     localViewCoefficients.bind(element);
-
-//     // Loop over the corners
-//     for (std::size_t c=0; c<3; c++)
-//     {
-//       size_t localIdx = localViewCoefficients.tree().localIndex(c);
-//       size_t globalIdx = localViewCoefficients.index(localIdx);
-
-//       // Loop over components of power basis
-//       for(std::size_t k=0; k<3 ; k++)
-//       {
-//         auto localIdx_0 = localView.tree().child(k).localIndex(c);    // index for values
-//         auto localIdx_1 = localView.tree().child(k).localIndex(c+3);  // index for partial derivatives w.r.t. x
-//         auto localIdx_2 = localView.tree().child(k).localIndex(c+6);  // index for partial derivatives w.r.t. y
-//         // std::cout << "localIdx_0: " << localIdx_0 << std::endl;
-//         // std::cout << "localIdx_1: " << localIdx_1 << std::endl;
-//         // std::cout << "localIdx_2: " << localIdx_2 << std::endl;
-
-//         auto globalIdxOut_0 = localView.index(localIdx_0);
-//         auto globalIdxOut_1 = localView.index(localIdx_1);
-//         auto globalIdxOut_2 = localView.index(localIdx_2);
-
-//         using namespace Dune::Indices;
-//         auto deformation = isometryCoefficients[globalIdx][_0].globalCoordinates();
-//         auto rotation1 = isometryCoefficients[globalIdx][_1].director(0);       
-//         auto rotation2 = isometryCoefficients[globalIdx][_1].director(1);
-      
-//         coefficients[globalIdxOut_0[0]][globalIdxOut_0[1]] = deformation[k];
-//         coefficients[globalIdxOut_1[0]][globalIdxOut_1[1]] = rotation1[k];
-//         coefficients[globalIdxOut_2[0]][globalIdxOut_2[1]] = rotation2[k];
-//       }
-//     }
-//   }
-// }
-
-
 int main(int argc, char *argv[])
 {
 
-  /**
-   * @brief We use this to catch a 'Floating point exception' caused by the 'innerSolver' 
-   *        in RiemannianProximalNewton
-   */
-    std::shared_ptr<void(int)> handler(
-        signal(SIGFPE, [](int signum) {throw std::logic_error("FPE"); }),
-        [](__sighandler_t f) { signal(SIGFPE, f); });
 
+  std::shared_ptr<void(int)> handler(
+    signal(SIGFPE, [](int signum) {
+           throw std::logic_error("FPE");
+    }),
+    [](__sighandler_t f) {
+    signal(SIGFPE, f);
+    });
 
 
-  feenableexcept(FE_INVALID);
 
+  feenableexcept(FE_INVALID);
   MPIHelper::instance(argc, argv);
   Dune::Timer globalTimer;
 
-  // if (argc < 3)
-  //   DUNE_THROW(Exception, "Usage: ./bending-isometries <python path> <python module without extension>");
-
-  // Start Python interpreter
-  // Python::start();
-  // auto pyMain = Python::main();
-  // pyMain.runStream()
-  //     << std::endl << "import math"
-  //     << std::endl << "import sys"
-  //     << std::endl << "sys.path.append('" << argv[1] << "')"  << std::endl;
-  // auto pyModule = pyMain.import(argv[2]);
-
-
   std::cout << "Current path is " << std::filesystem::current_path() << '\n';
   std::filesystem::path file_path = (__FILE__);
   std::cout<< "File path: " << file_path<<std::endl;
@@ -435,9 +101,9 @@ int main(int argc, char *argv[])
   Python::start();
   auto pyMain = Python::main();
   pyMain.runStream()
-      << std::endl << "import math"
-      << std::endl << "import sys"
-      << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
+    << std::endl << "import math"
+    << std::endl << "import sys"
+    << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
   auto pyModule = pyMain.import("analyticalcylindertest");
 
   // parse data file
@@ -496,16 +162,16 @@ int main(int argc, char *argv[])
   ///////////////////////////////////////////////////////
 
   // General coefficient vector of a Discrete Kirchhoff deformation function
-  using VectorSpaceCoefficients = BlockVector<FieldVector<double,3>>;
+  using VectorSpaceCoefficients = BlockVector<FieldVector<double,3> >;
 
   // Coefficient vector of a Discrete Kirchhoff deformation function that is constrained to be an isometry
-  using Coefficient = GFE::ProductManifold<RealTuple<double,3>, Rotation<double,3> >;
+  using Coefficient = GFE::ProductManifold<GFE::RealTuple<double,3>, GFE::Rotation<double,3> >;
   using IsometryCoefficients = std::vector<Coefficient>;
 
   using namespace Functions::BasisFactory;
 
   auto deformationBasis = makeBasis(gridView,
-                                    power<3>(reducedCubicHermiteTriangle(),
+                                    power<3>(reducedCubicHermite(),
                                              blockedInterleaved()));
 
 
@@ -517,74 +183,33 @@ int main(int argc, char *argv[])
   // A basis for the tangent space (used to set DirichletNodes)
   auto tangentBasis = makeBasis(gridView,
                                 power<Coefficient::TangentVector::dimension>(
-                                    lagrange<1>(),
-                                    blockedInterleaved()));
-
-
-  // ///////////////////////////////////////////
-  // //   Read Dirichlet values 
-  // ///////////////////////////////////////////
-  // BitSetVector<1> dirichletVertices(gridView.size(dim), false);
-  // const typename GridView::IndexSet &indexSet = gridView.indexSet();
-
-  // // Make Python function that computes which vertices are on the Dirichlet boundary,
-  // // based on the vertex positions.
-  // auto dirichletIndicatorFunction = Python::make_function<bool>(pyModule.get("dirichlet_indicator"));
-
-  // for (auto &&vertex : vertices(gridView))
-  //   dirichletVertices[indexSet.index(vertex)] = dirichletIndicatorFunction(vertex.geometry().corner(0));
-
-  // BoundaryPatch<GridView> dirichletBoundary(gridView, dirichletVertices);
-  // BitSetVector<Coefficient::TangentVector::dimension> dirichletNodes(tangentBasis.size(), false);
-  // constructBoundaryDofs(dirichletBoundary, tangentBasis, dirichletNodes);
-
- ///////////////////////////////////////////
-      //   Read Dirichlet values   (NEW VERSION)
-      ///////////////////////////////////////////
-      BitSetVector<1> dirichletVertices(gridView.size(dim), false);
-      const typename GridView::IndexSet &indexSet = gridView.indexSet();
-
+                                  lagrange<1>(),
+                                  blockedInterleaved()));
 
-      BitSetVector<Coefficient::TangentVector::dimension> dirichletNodes(tangentBasis.size(), false); //tangentBasis.size()=coefficientBasis.size()
-
-      /**
-       * @brief Make Python function that computes which vertices are on the Dirichlet boundary,
-       *        based on the vertex positions.
-       */
-      auto dirichletIndicatorFunction = Python::make_function<bool>(pyModule.get("dirichlet_indicator"));
-
-
-
-      /**
-       * @brief If we want to clamp DOFs inside the domain, we connot use 'BoundaryPatch' 
-       *        and 'constructBoundaryDofs'. This is a workaround for now.
-       *        
-       *
-       */
-      for (auto &&vertex : vertices(gridView))
-      {
-        dirichletVertices[indexSet.index(vertex)] = dirichletIndicatorFunction(vertex.geometry().corner(0));
-
-          if(dirichletIndicatorFunction(vertex.geometry().corner(0)))
-          { 
-            dirichletNodes[indexSet.index(vertex)] = true;
-          }
-      
-      }
-        
-      // std::cout << "tangentBasis.size():" << tangentBasis.size() << std::endl;
-      // std::cout << "coefficientBasis.size():" << coefficientBasis.size() << std::endl;
+  ///////////////////////////////////////////
+  //   Read Dirichlet values
+  ///////////////////////////////////////////
+  const typename GridView::IndexSet &indexSet = gridView.indexSet();
+  BitSetVector<Coefficient::TangentVector::dimension> dirichletNodes(tangentBasis.size(), false); //tangentBasis.size()=coefficientBasis.size()
 
-      // // deprecated: 
-      // // BoundaryPatch<GridView> dirichletBoundary(gridView, dirichletVertices);
-      // // constructBoundaryDofs(dirichletBoundary, tangentBasis, dirichletNodes);
+  /**
+   * @brief Make Python function that computes which vertices are on the Dirichlet boundary,
+   *        based on the vertex positions.
+   */
+  auto dirichletIndicatorFunction = Python::make_function<bool>(pyModule.get("dirichlet_indicator"));
 
-      //     // TEST: print dirichletNodes 
-      // std::cout << "print dirichletVertices:" << std::endl;
-      // std::cout <<  dirichletVertices << std::endl;
+  /**
+   * @brief If we want to clamp DOFs inside the domain, we connot use 'BoundaryPatch'
+   *        and 'constructBoundaryDofs'. This is a workaround for now.
+   */
+  for (auto &&vertex : vertices(gridView))
+  {
+    if(dirichletIndicatorFunction(vertex.geometry().corner(0)))
+    {
+      dirichletNodes[indexSet.index(vertex)] = true;
+    }
 
-      // std::cout << "print dirichletNodes:" << std::endl;
-      // std::cout <<  dirichletNodes << std::endl;
+  }
 
 
 
@@ -595,7 +220,7 @@ int main(int argc, char *argv[])
 
   VectorSpaceCoefficients x(deformationBasis.size());
 
-  IdentityGridEmbedding<double> identityGridEmbedding;
+  Dune::GFE::Impl::IdentityGridEmbedding<double> identityGridEmbedding;
   // interpolate(deformationBasis, x, identityGridEmbedding);
   interpolate(deformationBasis, x, pythonInitialIterate);   // Interpolation on a python function
 
@@ -607,10 +232,9 @@ int main(int argc, char *argv[])
   using ACoefficient = typename Coefficient::template rebind<adouble>::other;
   using AIsometryCoefficients = std::vector<ACoefficient>;
 
-
   /**
-   * @brief We need to setup LocalDiscreteKirchhoffBendingIsometry with a coefficient 
-   * vector of ctype 'adouble' while the solver gets a coefficient vector 
+   * @brief We need to setup LocalDiscreteKirchhoffBendingIsometry with a coefficient
+   * vector of ctype 'adouble' while the solver gets a coefficient vector
    * of ctype 'double'.
    */
   IsometryCoefficients isometryCoefficients(coefficientBasis.size());
@@ -621,48 +245,19 @@ int main(int argc, char *argv[])
   std::cout << "deformationBasis.size():" << deformationBasis.size() << std::endl;
   std::cout << "deformationBasis.dimension():" << deformationBasis.dimension() << std::endl;
 
+  // TEST: compute initial isometry error
+  auto initialDeformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, x);
+  nodewiseIsometryTest(initialDeformationFunction);
 
 
-  // isometryToVectorCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients);
-    /**
-     * @brief Print coefficient vector:
-     */
-    // for(int i=0; i<x.size(); i++)
-    //     std::cout<< "x[i]:" << x[i] << std::endl;
-
-    /**
-     * @brief TEST: compute isometry error
-     */
-    auto initialDeformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x);
-    // nodewiseIsometryTest(initialDeformationFunction);
-
-
-
+  using namespace Dune::GFE::Impl;
   // Convert coefficient data structure from 'VectorSpaceCoefficients' to 'IsometryCoefficients'
   vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients);
   vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients_adouble);
 
 
-
-    /**
-     * @brief TEST: conversion of coefficient vectors (back & forth)
-     */
-    VectorSpaceCoefficients x_convert = x;
-    IsometryCoefficients isometryCoefficientsTMP(coefficientBasis.size());
-    vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x_convert,isometryCoefficientsTMP);
-    isometryToVectorCoefficientMap(deformationBasis,coefficientBasis,x_convert,isometryCoefficientsTMP);
-    //Check difference
-    for(int i=0; i<x.size(); i++)
-    {
-      if((x[i]-x_convert[i]).two_norm() > 1e-4)
-        std::cout << "Coefficient conversion failed! with x[i]-x_convert[i]:" << x[i]-x_convert[i] << std::endl;
-    }
-    
-    
-
-
   using DeformationBasis = decltype(deformationBasis);
-  using LocalDKFunction = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, AIsometryCoefficients>;
+  using LocalDKFunction = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, AIsometryCoefficients>;
   LocalDKFunction localDKFunction(deformationBasis, coefficientBasis, isometryCoefficients_adouble);
   nodewiseIsometryTest(localDKFunction, gridView);
 
@@ -670,99 +265,69 @@ int main(int argc, char *argv[])
   /**
    * @brief Get force term
    */
-  auto pythonForce = Python::make_function<FieldVector<double,3>>(pyModule.get("force"));
-  // auto forceGVF  = Dune::Functions::makeGridViewFunction(dummyForce, gridView);
+  auto pythonForce = Python::make_function<FieldVector<double,3> >(pyModule.get("force"));
   auto forceGVF  = Dune::Functions::makeGridViewFunction(pythonForce, gridView);
   auto localForce = localFunction(forceGVF);
 
 
-  /**
-   * @brief Get effective prestrain Tensor
-   */
-  // Dune::FieldVector<adouble,3> Beffvec = parameterSet.get<Dune::FieldVector<adouble,3>>("effectivePrestrain", {0.0, 0.0, 0.0});
-  // Dune::FieldMatrix<adouble,2,2> effectivePrestrain = {{(adouble)Beffvec[0], (adouble)Beffvec[2]}, {(adouble)Beffvec[2],(adouble)Beffvec[1]} };
-  // printmatrix(std::cout, effectivePrestrain, "effective prestrain (Beff): ", "--");
-
-
-  // /**
-  //  * @brief Get effective quadratic form
-  //  */
-  // Dune::FieldVector<adouble,6> Qhomvec = parameterSet.get<Dune::FieldVector<adouble,6>>("effectiveQuadraticForm", {1.0, 1.0, 1.0, 0.0, 0.0, 0.0});
-  // Dune::FieldMatrix<adouble,3,3> Qhom = {{(adouble)Qhomvec[0], (adouble)Qhomvec[3], (adouble)Qhomvec[4]}, 
-  //                                        {(adouble)Qhomvec[3], (adouble)Qhomvec[1], (adouble)Qhomvec[5]},
-  //                                        {(adouble)Qhomvec[4], (adouble)Qhomvec[5], (adouble)Qhomvec[2]}};
-  // printmatrix(std::cout, Qhom, "effective quadratic form (Qhom): ", "--");
 
 
   ////////////////////////////////////////////////////////////////////////
   //   Create an assembler for the Discrete Kirchhoff Energy Functional  (using ADOL-C)
   ////////////////////////////////////////////////////////////////////////
+  // The energy consists of two parts: 1. A bending energy contribution and 2. Contribution from a force term.
+  auto sumEnergy = std::make_shared<GFE::SumEnergy<CoefficientBasis, GFE::RealTuple<adouble,3>, GFE::Rotation<adouble,3> > >();
 
-  /**
-   * @brief Setup nonconforming energy
-   */
-  // auto localEnergy_nonconforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergy<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce);
-  /**
-   * @brief Setup conforming energy (WIP)
-   */
-  // auto localEnergy_conforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyZienkiewicz<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce);
-  // auto localEnergy_conforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyZienkiewiczProjected<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce);
-  /**
-   * @brief Setup energy featuring prestrain
-   */
-  //  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce, Qhom, effectivePrestrain,  parameterSet);
-  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce, parameterSet, pyModule);
-
-  // LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_conforming(localEnergy_conforming.get());
-  // LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_nonconforming(localEnergy_nonconforming.get());
-  LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_prestrain(localEnergy_prestrain.get());
-  // GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_conforming(coefficientBasis, localGFEADOLCStiffness_conforming);
-  // GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_nonconforming(coefficientBasis, localGFEADOLCStiffness_nonconforming);
-  GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_prestrain(coefficientBasis, localGFEADOLCStiffness_prestrain);
-
-
-
-
+  // Setup prestrained bending energy.
+  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction,  ACoefficient> >(localDKFunction, parameterSet, pyModule);
 
+  // Setup force energy.
+  auto forceEnergy = std::make_shared<GFE::ForceEnergy<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient> >(localDKFunction, localForce);
+  sumEnergy->addLocalEnergy(localEnergy_prestrain);
+  sumEnergy->addLocalEnergy(forceEnergy);
 
+  // Setup the assembler.
+  auto localGFEADOLCStiffness_prestrain = std::make_shared<Dune::GFE::LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> >(sumEnergy);
+  std::shared_ptr<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> > assembler_prestrain;
+  assembler_prestrain = std::make_shared<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> >(coefficientBasis, localGFEADOLCStiffness_prestrain);
 
   /**
-   * @brief Create a solver: 
-   *        - Riemannian Newton with Hessian modification 
-   *        - Riemannian Trust-region 
+   * @brief Create a solver:
+   *        - Riemannian Newton with Hessian modification
+   *        - Riemannian Trust-region
    */
-  RiemannianProximalNewtonSolver<CoefficientBasis, Coefficient> RNHMsolver;
-  RiemannianTrustRegionSolver<CoefficientBasis, Coefficient> RTRsolver;
+  Dune::GFE::RiemannianProximalNewtonSolver<CoefficientBasis, Coefficient> ARRNsolver;
+  Dune::GFE::RiemannianTrustRegionSolver<CoefficientBasis, Coefficient> RTRsolver;
 
 
-  std::string Solver_name = parameterSet.get<std::string>("Solver", "RNHM");
+  std::string Solver_name = parameterSet.get<std::string>("Solver", "ARRN");
   double numerical_energy; //final discrete energy
 
-  if(Solver_name == "RNHM")
+  if(Solver_name == "ARRN")
   {
 
-    RNHMsolver.setup(*grid,
-          &assembler_prestrain,
-          isometryCoefficients,
-          dirichletNodes,
-          parameterSet);
+    ARRNsolver.setup(*grid,
+                     &(*assembler_prestrain),
+                     isometryCoefficients,
+                     dirichletNodes,
+                     parameterSet);
 
-    RNHMsolver.solve();
-    isometryCoefficients = RNHMsolver.getSol();
-    numerical_energy = RNHMsolver.getStatistics().finalEnergy;
+    ARRNsolver.solve();
+    isometryCoefficients = ARRNsolver.getSol();
+    numerical_energy = ARRNsolver.getStatistics().finalEnergy;
   } else if (Solver_name =="RiemannianTR")
   {
     std::cout << "Using Riemannian Trust-region method for energy minimization." << std::endl;
     RTRsolver.setup(*grid,
-            &assembler_prestrain,
-            isometryCoefficients,
-            dirichletNodes,
-            parameterSet);
+                    &(*assembler_prestrain),
+                    isometryCoefficients,
+                    dirichletNodes,
+                    parameterSet);
     RTRsolver.solve();
     isometryCoefficients = RTRsolver.getSol();
     numerical_energy = RTRsolver.getStatistics().finalEnergy;
-  } else 
-      DUNE_THROW(Dune::Exception, "Unknown Solver type for bending isometries.");
+  } else
+    DUNE_THROW(Dune::Exception, "Unknown Solver type for bending isometries.");
 
 
   // Convert coefficient data structure from 'IsometryCoefficients' to 'VectorSpaceCoefficients'
@@ -775,75 +340,44 @@ int main(int argc, char *argv[])
   std::string baseNameDefault = "bending-isometries-";
   std::string baseName = parameterSet.get("baseName", baseNameDefault);
   std::string resultFileName =  parameterSet.get("resultPath", "")
-                                + "/" + baseName
-                                + "_level" + std::to_string(parameterSet.get<int>("numLevels"));
+                               + "/" + baseName
+                               + "_level" + std::to_string(parameterSet.get<int>("numLevels"));
 
   if (parameterSet.get<bool>("conforming_DiscreteJacobian", 1))
     resultFileName = resultFileName + "_C";
-  else 
+  else
     resultFileName = resultFileName + "_NC";
 
 
-    // Create a deformation function but this time with double-types.
-  using LocalDKFunctionD = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
+  // Create a deformation function but this time with double-types.
+  using LocalDKFunctionD = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
   LocalDKFunctionD localDKFunctionDouble(deformationBasis, coefficientBasis, isometryCoefficients);
 
   if (parameterSet.get<bool>("writeVTK", 1))
   {
-    std::cout << "write VTK..." << std::endl;
+    std::cout << "write VTK to Filename: " << resultFileName << std::endl;
 
     /**
      * @brief Compute the displacement from the deformation.
      *        interpolate the identity and substract from the coefficient vector.
      */
     VectorSpaceCoefficients identity(deformationBasis.size());
-    IdentityGridEmbedding<double> identityGridEmbedding;
+    Dune::GFE::Impl::IdentityGridEmbedding<double> identityGridEmbedding;
     interpolate(deformationBasis, identity, identityGridEmbedding);
 
-    // auto identity_tmp = identity;
-
     // Compute the displacement
     auto displacement = x_out;
     displacement -= identity;
 
     // std::cout << "displacement.size():" << displacement.size() << std::endl;
-    auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x_out);
-    auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, displacement);
+    auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, x_out);
+    auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, displacement);
 
     /**
      * @brief  We need to subsample, because VTK cannot natively display real third-order functions
      */
     int subsamplingRefinement = parameterSet.get<int>("subsamplingRefinement", 2);
     SubsamplingVTKWriter<GridView> vtkWriter(gridView, Dune::refinementLevels(subsamplingRefinement));
-    // SubsamplingVTKWriter<GridView> vtkWriter(gridView, Dune::refinementLevels(2));
-
-
-
-    /**
-     * @brief Basis used to represent normal vector fields
-     * 
-     */
-    auto normalBasis = makeBasis(gridView,
-                      power<3>(
-                      lagrange<1>(),
-                      flatLexicographic()));
-    // auto normalBasis = makeBasis(gridView,
-    //                               power<3>(
-    //                               lagrange<1>(),
-    //                               blockedInterleaved()));
-
-
-    // TEST Compute 
-
-
-    // auto normalLambda = [deformationFunction](const FieldVector<double,2>& x)
-    // {
-    //   // deformationfunction.derivative() ... //needs binding?!
-    
-
-    // }
-
-    
 
 
     /**
@@ -851,195 +385,111 @@ int main(int argc, char *argv[])
      */
     if (parameterSet.get<bool>("vtkwrite_analyticalSolution", 0))
     {
-      // auto pythonAnalyticalSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("u"), pyModule.get("du"));
       auto pythonAnalyticalSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("displacement"), pyModule.get("displacementGradient"));
-
-
-      // deprecated: interpolate ...
-      // VectorSpaceCoefficients y(deformationBasis.size());
-      // interpolate(deformationBasis, y, pythonAnalyticalSolution);
-      // // Compute the displacement
-      // auto displacementAnalytical = y;
-      // // displacementAnalytical -= identity_tmp;
-      // displacementAnalytical -= identity;
-
-
-      // auto pythonIdentity =   Python::make_function<FieldVector<double,3>>(IdentityGridEmbedding<double>::operator())
-
-
-      // auto displacementFunctionAnalytical = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, displacementAnalytical);
-      // auto deformationFunctionAnalytical = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, y);
-      // vtkWriter.addVertexData(displacementFunctionAnalytical, VTK::FieldInfo("displacement_analytical", VTK::FieldInfo::Type::vector, 3));
-      // vtkWriter.addVertexData(deformationFunctionAnalytical, VTK::FieldInfo("deformation_analytical", VTK::FieldInfo::Type::vector, 3));
-    
       vtkWriter.addVertexData((pythonAnalyticalSolution), VTK::FieldInfo("displacement_analytical", VTK::FieldInfo::Type::vector, 3));
       /**
-       * @brief Get the normal vector field of the surface parametrized 
+       * @brief Get the normal vector field of the surface parametrized
        *        by the analytical solution.
-       *        - We represent the normal vector in a first order Lagrange-Power basis ('normalBasis').
        */
       if (parameterSet.get<bool>("vtkWrite_analyticalSurfaceNormal", 0))
       {
-      // Get the surface normal function.
-      auto pythonSurfaceNormal = Python::make_function<FieldVector<double,3>>(pyModule.get("surfaceNormal"));
-
-
-      // deprecated: interpolate ...
-      // std::vector<FieldVector<double,3>> normalVectorCoefficients(normalBasis.size());
-      // Dune::Functions::interpolate(normalBasis, normalVectorCoefficients, pythonSurfaceNormal); 
-      // auto surfaceNormalAnalytical = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(normalBasis, normalVectorCoefficients);
-      // vtkWriter.addVertexData(surfaceNormalAnalytical, VTK::FieldInfo("surfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
-
-      vtkWriter.addVertexData(pythonSurfaceNormal, VTK::FieldInfo("surfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
+        // Get the surface normal function.
+        auto pythonSurfaceNormal = Python::make_function<FieldVector<double,3> >(pyModule.get("surfaceNormal"));
+        vtkWriter.addVertexData(pythonSurfaceNormal, VTK::FieldInfo("surfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
       }
     }
-    //-------------------------------------------------------------------------------------    TODO: OUTSOURCE
-    /**
-     * @brief TEST: Compute the discrete normal vector of the surface parametrized 
-     *              by the discrete solution.
-     */
-     auto surfaceNormalDiscreteCoefficients = computeDiscreteSurfaceNormal(localDKFunctionDouble, normalBasis);
     //-------------------------------------------------------------------------------------
-
-    // Create DiscreteGlobalBasisFunctions.
-    auto surfaceNormalDiscrete   = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(normalBasis, surfaceNormalDiscreteCoefficients);
     vtkWriter.addVertexData(displacementFunction, VTK::FieldInfo("displacement", VTK::FieldInfo::Type::vector, 3));
-    vtkWriter.addVertexData(surfaceNormalDiscrete , VTK::FieldInfo("surfaceNormal_discrete", VTK::FieldInfo::Type::vector, 3));
     vtkWriter.write(resultFileName);
   }
 
-
-
   /**
    * @brief Measure errors.
-   *  Compute the L2-Error and H1-SemiError as well as the energy difference 
+   *  Compute the L2-Error and H1-SemiError as well as the energy difference
    *  between the discrete deformation u_h and the analytical deformation u .
    */
 
+  // Read reference solution and its derivative into a Python function
+  auto referenceSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("deformation"), pyModule.get("deformationGradient"));
+  auto referenceDerivative = derivative(referenceSolution);
 
-    // auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x_out);
-    // auto localNumericalSolution = localFunction(deformationFunction);
-    // auto localNumericalSolutionDerivative = derivative(localNumericalSolution);
-
+  using LocalDKFunctionD = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
+  LocalDKFunctionD localDKFunctionD(deformationBasis, coefficientBasis, isometryCoefficients);
 
+  // QuadratureRule for the integral of the L^2 error
+  QuadratureRuleKey quadKey(dim,6);
+  // Trapezoidal-rule:
+  // std::vector<Dune::QuadraturePoint<double,2>> quadRule = { {{0.0,0.0}, 1.0/6.0}, {{1.0,0.0}, 1.0/6.0}, {{0.0,1.0}, 1.0/6.0} };
 
-    // // Read reference solution and its derivative into a Python function
-    // using Domain = FieldVector<double, dim>;
-    // using Range = typename Coefficient::CoordinateType;
-    // using Range = typename FieldVector<double,3>;
-    // auto referenceSolution = Python::makeDifferentiableFunction<Range(Domain)>(pyModule.get("udu"));
-    // auto referenceSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(Domain)>(pyModule.get("udu"));
-    // auto referenceDerivative = derivative(referenceSolution);
-    // auto referenceSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("u"), pyModule.get("du"));
-    auto referenceSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("deformation"), pyModule.get("deformationGradient"));
-    auto referenceDerivative = derivative(referenceSolution);
-
-    using LocalDKFunctionD = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
-    LocalDKFunctionD localDKFunctionD(deformationBasis, coefficientBasis, isometryCoefficients);
-
-    // typedef VirtualDifferentiableFunction<FieldVector<double, dim>, typename Coefficient::CoordinateType> FBase;
-    // auto referenceSolution = pyModule.get("udu").toC<std::shared_ptr<FBase>>();
-
-    // QuadratureRule for the integral of the L^2 error
-    QuadratureRuleKey quadKey(dim,6);
+  // The error to be computed
+  double l2ErrorSquared = 0;
+  double h1ErrorSquared = 0;
 
+  for (auto&& element : elements(gridView))
+  {
+    localDKFunctionD.bind(element);
 
-    // Trapezoidal-rule:
-    // std::vector<Dune::QuadraturePoint<double,2>> quadRule = { {{0.0,0.0}, 1.0/6.0}, {{1.0,0.0}, 1.0/6.0}, {{0.0,1.0}, 1.0/6.0} };
-    // std::cout << "Use Trapezoidal-rule." << std::endl;
+    // Get quadrature formula
+    quadKey.setGeometryType(element.type());
+    const auto& quadRule = QuadratureRuleCache<double, dim>::rule(quadKey);
 
-    // The error to be computed
-    double l2ErrorSquared = 0;
-    double h1ErrorSquared = 0;
 
-    for (auto&& element : elements(gridView))
+    for (auto quadPoint : quadRule)
     {
+      auto quadPos = quadPoint.position();
+      const auto integrationElement = element.geometry().integrationElement(quadPos);
+      const auto weight = quadPoint.weight();
 
-      // localNumericalSolution.bind(element);
-
-      localDKFunctionD.bind(element);
-
-      // Get quadrature formula
-      quadKey.setGeometryType(element.type());
-      const auto& quadRule = QuadratureRuleCache<double, dim>::rule(quadKey);
-
-
-      for (auto quadPoint : quadRule)
-      {
-        auto quadPos = quadPoint.position();
-        const auto integrationElement = element.geometry().integrationElement(quadPos);
-        const auto weight = quadPoint.weight();
-
-        // auto numValue = localNumericalSolution(quadPos);
-        auto refValue = referenceSolution(element.geometry().global(quadPos));
-        auto numValue = localDKFunctionD.evaluate(quadPos).globalCoordinates();
-
-
-        // printvector(std::cout, numValue, "numValue: ", "--");
-        // printvector(std::cout, refValue, "refValue: ", "--");
+      auto refValue = referenceSolution(element.geometry().global(quadPos));
+      auto numValue = localDKFunctionD.evaluate(quadPos).globalCoordinates();
 
-        auto numDir = localDKFunctionD.evaluateDerivative(quadPos);
-        auto refDir = referenceDerivative(element.geometry().global(quadPos));
-        auto diff = numDir - refDir;
+      auto numDir = localDKFunctionD.evaluateDerivative(quadPos);
+      auto refDir = referenceDerivative(element.geometry().global(quadPos));
+      auto diff = numDir - refDir;
 
-      
-        // constexpr int blocksize = Coefficient::CoordinateType::dimension;
-
-        // FieldVector<double, blocksize> refValue;
-        // if (std::dynamic_pointer_cast<const VirtualGridViewFunction<GridView, FieldVector<double, blocksize>>>(referenceSolution))
-        //     std::dynamic_pointer_cast<const VirtualGridViewFunction<GridView, FieldVector<double, blocksize>>>(referenceSolution)->evaluateLocal(element, quadPos, refValue);
-        // else
-        //     referenceSolution->evaluate(element.geometry().global(quadPos), refValue);
-
-        // integrate error
-        l2ErrorSquared += (numValue - refValue)* (numValue - refValue) * weight * integrationElement;
-        h1ErrorSquared += diff.frobenius_norm2() * weight * integrationElement;
-      }
+      // integrate error
+      l2ErrorSquared += (numValue - refValue)* (numValue - refValue) * weight * integrationElement;
+      h1ErrorSquared += diff.frobenius_norm2() * weight * integrationElement;
     }
-    std::cout << "elements: " << gridView.size(0)
-              << "      "
-              << "L^2 error: " << std::sqrt(l2ErrorSquared)
-              << "      ";
-    std::cout << "h^1 error: " << std::sqrt(h1ErrorSquared) << std::endl;
-
-
+  }
+  std::cout << "elements: " << gridView.size(0)
+            << "      "
+            << "L^2 error: " << std::sqrt(l2ErrorSquared)
+            << "      ";
+  std::cout << "h^1 error: " << std::sqrt(h1ErrorSquared) << std::endl;
 
 
+  //Check Quantities
+  if(std::sqrt(l2ErrorSquared) > 1.0)
+  {
+    std::cerr << std::setprecision(9);
+    std::cerr << "L2-error is to large! " << std::endl;
+    return 1;
+  }
+  if(std::sqrt(h1ErrorSquared) > 1.0)
+  {
+    std::cerr << std::setprecision(9);
+    std::cerr << "H1-error is to large! " << std::endl;
+    return 1;
+  }
+  // Compare energy values.
+  std::cout << "(Final) Energy of discrete solution: " << numerical_energy<< std::endl;
+  if (parameterSet.get<bool>("compare_EnergyValues", 0))
+  {
+    auto analytical_energy = parameterSet.get<double>("analytical_energy");
+    auto energy_difference = std::abs(analytical_energy - numerical_energy);
+    std::cout << "Analytical energy:" << analytical_energy<< std::endl;      // (pi^2)/2.0
+    std::cout << "Energy difference: " << energy_difference << std::endl;
 
-    //Check Quantities
-    if(std::sqrt(l2ErrorSquared) > 1.0)
-    {
-        std::cerr << std::setprecision(9);
-        std::cerr << "L2-error is to large! " << std::endl;
-        return 1;
-    }
-    if(std::sqrt(h1ErrorSquared) > 1.0)
-    {
-        std::cerr << std::setprecision(9);
-        std::cerr << "H1-error is to large! " << std::endl;
-        return 1;
-    }
-    // Compare energy values.
-    // auto numerical_energy = solver.getStatistics().finalEnergy;
-    // auto analytical_energy = (M_PI*M_PI)/2.0 ;
-    // auto analytical_energy = (M_PI*M_PI);
-    std::cout << "(Final) Energy of discrete solution: " << numerical_energy<< std::endl;
-    if (parameterSet.get<bool>("compare_EnergyValues", 0))
+    if(energy_difference > 1.0)
     {
-        auto analytical_energy = parameterSet.get<double>("analytical_energy");
-        auto energy_difference = std::abs(analytical_energy - numerical_energy);
-        std::cout << "Analytical energy:" << analytical_energy<< std::endl;  // (pi^2)/2.0 
-        std::cout << "Energy difference: " << energy_difference << std::endl;
-
-        if(energy_difference > 1.0)
-        {
-            std::cerr << std::setprecision(9);
-            std::cerr << "Energy difference: " << energy_difference  << " is to large! " << std::endl;
-            return 1;
-        }
+      std::cerr << std::setprecision(9);
+      std::cerr << "Energy difference: " << energy_difference  << " is to large! " << std::endl;
+      return 1;
     }
+  }
 
   std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
   std::cout << "Test: analyticalcylindertest passed." << std::endl;
   return 0;
-  }
\ No newline at end of file
+}
diff --git a/test/hermitebasis-evaluation-test.cc b/test/hermitebasis-evaluation-test.cc
index 96de70cbe1974dac9681c406d0c25c6d5939c861..3016ce176331c0f4b5e344aa91c81131db556c1c 100644
--- a/test/hermitebasis-evaluation-test.cc
+++ b/test/hermitebasis-evaluation-test.cc
@@ -64,7 +64,7 @@ using namespace Dune;
 /**
  * @brief Test the interpolation in deformation space.
  *        A linear isometry can be represented exactly in that space.
- *        compare energy values / L2-error / H1-error 
+ *        compare energy values / L2-error / H1-error
  *        for die difference | I_h[u] - u | where u is a given analytic linear isometry
  */
 
@@ -84,9 +84,9 @@ int main(int argc, char *argv[])
   Python::start();
   auto pyMain = Python::main();
   pyMain.runStream()
-      << std::endl << "import math"
-      << std::endl << "import sys"
-      << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
+    << std::endl << "import math"
+    << std::endl << "import sys"
+    << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
   auto pyModule = pyMain.import("hermitebasis-evaluation-test");
 
   // parse data file
@@ -105,8 +105,8 @@ int main(int argc, char *argv[])
   /////////////////////////////////////////
   using GridType = UGGrid<dim>;
   std::shared_ptr<GridType> grid;
-//   FieldVector<double,dim> lower(0), upper(1);
-//   std::array<unsigned int,dim> elementsArray;
+  //   FieldVector<double,dim> lower(0), upper(1);
+  //   std::array<unsigned int,dim> elementsArray;
 
   // create unstructured grid.
   std::cout << "Read GMSH grid." << std::endl;
@@ -128,7 +128,7 @@ int main(int argc, char *argv[])
   ///////////////////////////////////////////////////////
 
   // General coefficient vector of a Discrete Kirchhoff deformation function
-  using VectorSpaceCoefficients = BlockVector<FieldVector<double,3>>;
+  using VectorSpaceCoefficients = BlockVector<FieldVector<double,3> >;
 
   using namespace Functions::BasisFactory;
   auto deformationBasis = makeBasis(gridView,
@@ -157,18 +157,18 @@ int main(int argc, char *argv[])
   std::string baseNameDefault = "bending-isometries-";
   std::string baseName = parameterSet.get("baseName", baseNameDefault);
   std::string resultFileName =  parameterSet.get("resultPath", "")
-                                + "/" + baseName
-                                + "_level" + std::to_string(parameterSet.get<int>("numLevels"));
+                               + "/" + baseName
+                               + "_level" + std::to_string(parameterSet.get<int>("numLevels"));
 
   if (parameterSet.get<bool>("conforming_DiscreteJacobian", 1))
     resultFileName = resultFileName + "_C";
-  else 
+  else
     resultFileName = resultFileName + "_NC";
 
   /**
-    * @brief Compute the displacement from the deformation.
-    *        interpolate the identity and substract from the coefficient vector.
-    */
+   * @brief Compute the displacement from the deformation.
+   *        interpolate the identity and substract from the coefficient vector.
+   */
   VectorSpaceCoefficients identity(deformationBasis.size());
   IdentityGridEmbedding<double> identityGridEmbedding;
   interpolate(deformationBasis, identity, identityGridEmbedding);
@@ -176,8 +176,8 @@ int main(int argc, char *argv[])
   auto displacement = x;
   displacement -= identity;
 
-  auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x);
-  auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, displacement);
+  auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, x);
+  auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, displacement);
   auto deformationFunctionLocal = localFunction(deformationFunction);
   auto deformationFunctionLocalDerivative = derivative(deformationFunctionLocal);
 
@@ -211,77 +211,77 @@ int main(int argc, char *argv[])
 
 
   /**
-   * @brief Compute the L2-Error and H1-SemiError between the discrete deformation u_h and the analytical deformation u 
-   * 
+   * @brief Compute the L2-Error and H1-SemiError between the discrete deformation u_h and the analytical deformation u
+   *
    */
-    auto referenceSolution =  Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("deformation"), pyModule.get("deformationGradient"));
-    auto referenceDerivative = derivative(referenceSolution);
+  auto referenceSolution =  Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("deformation"), pyModule.get("deformationGradient"));
+  auto referenceDerivative = derivative(referenceSolution);
 
 
-    // QuadratureRule for the integral of the L^2 error
-    QuadratureRuleKey quadKey(dim,6);
+  // QuadratureRule for the integral of the L^2 error
+  QuadratureRuleKey quadKey(dim,6);
 
-    // The error to be computed
-    double l2ErrorSquared = 0;
-    double h1ErrorSquared = 0;
+  // The error to be computed
+  double l2ErrorSquared = 0;
+  double h1ErrorSquared = 0;
 
-    for (auto&& element : elements(gridView))
-    {
+  for (auto&& element : elements(gridView))
+  {
 
-      deformationFunctionLocal.bind(element);
-      deformationFunctionLocalDerivative.bind(element);
+    deformationFunctionLocal.bind(element);
+    deformationFunctionLocalDerivative.bind(element);
 
-      // Get quadrature formula
-      quadKey.setGeometryType(element.type());
-      const auto& quad = QuadratureRuleCache<double, dim>::rule(quadKey);
+    // Get quadrature formula
+    quadKey.setGeometryType(element.type());
+    const auto& quad = QuadratureRuleCache<double, dim>::rule(quadKey);
 
-      for (auto quadPoint : quad)
-      {
-        auto quadPos = quadPoint.position();
-        const auto integrationElement = element.geometry().integrationElement(quadPos);
-        const auto weight = quadPoint.weight();
+    for (auto quadPoint : quad)
+    {
+      auto quadPos = quadPoint.position();
+      const auto integrationElement = element.geometry().integrationElement(quadPos);
+      const auto weight = quadPoint.weight();
 
-        auto refValue = referenceSolution(element.geometry().global(quadPos));
-        auto numValue = deformationFunctionLocal(quadPos);
+      auto refValue = referenceSolution(element.geometry().global(quadPos));
+      auto numValue = deformationFunctionLocal(quadPos);
 
-        auto numDir = deformationFunctionLocalDerivative(quadPos);
-        auto refDir = referenceDerivative(element.geometry().global(quadPos));
-        auto diff = numDir - refDir;
+      auto numDir = deformationFunctionLocalDerivative(quadPos);
+      auto refDir = referenceDerivative(element.geometry().global(quadPos));
+      auto diff = numDir - refDir;
 
-        // // print evaluation difference
-        // std::cout << "Evaluation difference at quadPoint:(" << element.geometry().global(quadPos) << ") is : "<< numValue-refValue << std::endl;
-        std::cout << "Evaluation difference (of derivative) at quadPoint:(" << element.geometry().global(quadPos) << ") is : "<< diff << std::endl;
-        // print discrete function evaluation
-        // std::cout << "Evaluation of discreteGlobalBasisFunction at quadPoint:(" << element.geometry().global(quadPos) << ") is : "<< numValue << std::endl;
-        std::cout << "Evaluation of discreteGlobalBasisFunction-derivative at quadPoint:(" << element.geometry().global(quadPos) << ") is : "<< numDir << std::endl;
+      // // print evaluation difference
+      // std::cout << "Evaluation difference at quadPoint:(" << element.geometry().global(quadPos) << ") is : "<< numValue-refValue << std::endl;
+      std::cout << "Evaluation difference (of derivative) at quadPoint:(" << element.geometry().global(quadPos) << ") is : "<< diff << std::endl;
+      // print discrete function evaluation
+      // std::cout << "Evaluation of discreteGlobalBasisFunction at quadPoint:(" << element.geometry().global(quadPos) << ") is : "<< numValue << std::endl;
+      std::cout << "Evaluation of discreteGlobalBasisFunction-derivative at quadPoint:(" << element.geometry().global(quadPos) << ") is : "<< numDir << std::endl;
 
 
-        // integrate error
-        l2ErrorSquared += (numValue - refValue)* (numValue - refValue) * weight * integrationElement;
-        h1ErrorSquared += diff.frobenius_norm2() * weight * integrationElement;
-      }
-    }
-    std::cout << "elements: " << gridView.size(0)
-              << "      "
-              << "L^2 error: " << std::sqrt(l2ErrorSquared)
-              << "      ";
-    std::cout << "h^1 error: " << std::sqrt(h1ErrorSquared) << std::endl;
-
-   
-    //Check Quantities
-    if( std::sqrt(l2ErrorSquared) > 1e-12)
-    {
-        std::cerr << std::setprecision(9);
-        std::cerr << "L2-error is to large! " << std::endl;
-        return 1;
-    }
-    if( std::sqrt(h1ErrorSquared) > 1e-12)
-    {
-        std::cerr << std::setprecision(9);
-        std::cerr << "H1-error is to large! " << std::endl;
-        return 1;
+      // integrate error
+      l2ErrorSquared += (numValue - refValue)* (numValue - refValue) * weight * integrationElement;
+      h1ErrorSquared += diff.frobenius_norm2() * weight * integrationElement;
     }
+  }
+  std::cout << "elements: " << gridView.size(0)
+            << "      "
+            << "L^2 error: " << std::sqrt(l2ErrorSquared)
+            << "      ";
+  std::cout << "h^1 error: " << std::sqrt(h1ErrorSquared) << std::endl;
+
+
+  //Check Quantities
+  if( std::sqrt(l2ErrorSquared) > 1e-12)
+  {
+    std::cerr << std::setprecision(9);
+    std::cerr << "L2-error is to large! " << std::endl;
+    return 1;
+  }
+  if( std::sqrt(h1ErrorSquared) > 1e-12)
+  {
+    std::cerr << std::setprecision(9);
+    std::cerr << "H1-error is to large! " << std::endl;
+    return 1;
+  }
   std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
   std::cout << "Test: hermitebasis-evaluation-test passed." << std::endl;
   return 0;
-  }
\ No newline at end of file
+}
diff --git a/test/linearisometrytest.cc b/test/linearisometrytest.cc
index 905119b539397734ca1ea4da9cccf208396bf447..2d55b69846838221f37a53f495fcbdd8668ebc1c 100644
--- a/test/linearisometrytest.cc
+++ b/test/linearisometrytest.cc
@@ -13,27 +13,26 @@
 #include <dune/fufem/utilities/adolcnamespaceinjections.hh>
 
 #include <dune/common/typetraits.hh>
-
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/parametertree.hh>
 #include <dune/common/parametertreeparser.hh>
 
 #include <dune/grid/uggrid.hh>
 #include <dune/grid/utility/structuredgridfactory.hh>
-
 #include <dune/grid/io/file/gmshreader.hh>
 #include <dune/grid/io/file/vtk.hh>
 
 #include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>
+#include <dune/functions/gridfunctions/composedgridfunction.hh>
+#include <dune/functions/functionspacebases/cubichermitebasis.hh>
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 #include <dune/functions/functionspacebases/powerbasis.hh>
 #include <dune/functions/functionspacebases/interpolate.hh>
-#include <dune/functions/functionspacebases/reducedcubichermitetrianglebasis.hh>
+
 
 #include <dune/fufem/boundarypatch.hh>
 #include <dune/fufem/functiontools/boundarydofs.hh>
 #include <dune/fufem/dunepython.hh>
-
 #include <dune/fufem/discretizationerror.hh>
 
 #include <dune/solvers/solvers/iterativesolver.hh>
@@ -42,24 +41,21 @@
 #include <dune/gfe/spaces/productmanifold.hh>
 #include <dune/gfe/spaces/realtuple.hh>
 #include <dune/gfe/spaces/rotation.hh>
-#include <dune/gfe/localdiscretekirchhoffbendingisometry.hh>
+#include <dune/gfe/functions/discretekirchhoffbendingisometry.hh>
+#include <dune/gfe/functions/embeddedglobalgfefunction.hh>
+#include <dune/gfe/functions/localprojectedfefunction.hh>
 #include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
-#include <dune/gfe/assemblers/harmonicenergy.hh>
 #include <dune/gfe/assemblers/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/discretekirchhoffbendingenergy.hh>
+#include <dune/gfe/assemblers/forceenergy.hh>
+#include <dune/gfe/assemblers/sumenergy.hh>
+#include <dune/gfe/bendingisometryhelper.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
-#include <dune/gfe/embeddedglobalgfefunction.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergy.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyconforming.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewicz.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewiczprojected.hh>
-// #include <dune/gfe/energies/discretekirchhoffbendingenergyprestrained.hh>
+#include <dune/gfe/riemanniantrsolver.hh>
 
+#include <dune/microstructure/bendingisometryaddons.hh>
 #include <dune/microstructure/energies/discretekirchhoffbendingenergyprestrained.hh>
 
-#include <dune/gfe/spaces/stiefelmanifold.hh>
-// #include <dune/gfe/spaces/stiefelmatrix.hh>
-
-
 #include <dune/gmsh4/gmsh4reader.hh>
 #include <dune/gmsh4/gridcreators/lagrangegridcreator.hh>
 
@@ -67,341 +63,17 @@ const int dim = 2;
 
 using namespace Dune;
 
-
 /**
  * @brief Test the interpolation in deformation space.
  *        A linear isometry can be represented exactly in that space.
- *        compare energy values / L2-error / H1-error 
+ *        compare energy values / L2-error / H1-error
  *        for die difference | I_h[u] - u | where u is a given analytic linear isometry
  */
 
 
-// /**
-//  * @brief Comparison of different function definitions for debugging purposes.
-//  * TODO: remove later
-//  */
-// template<class LocalDiscreteKirchhoffFunction,class DeformationFunction, class GridView>
-// auto compare(LocalDiscreteKirchhoffFunction& kirchhoffFunction,
-//              DeformationFunction&  deformationFunction,
-//              GridView& gridView)
-// {
-//     std::cout << "COMPARE:" << std::endl;
-//     auto localDeformation = localFunction(deformationFunction);
-//     auto rotation = derivative(deformationFunction);
-//     auto localRotation = localFunction(rotation);
-//     auto localRotation_2 = derivative(localDeformation);
-//     for (const auto &element :  elements(gridView))
-//     {
-//       auto geometry = element.geometry();
-      
-//       kirchhoffFunction.bind(element);
-//       localDeformation.bind(element);
-//       localRotation.bind(element); 
-//       localRotation_2.bind(element); 
-
-//       //evaluate at nodes:
-//       for (int i=0; i<geometry.corners(); i++)
-//       {
-//          auto kirchhoffOut = kirchhoffFunction.evaluate(geometry.local(geometry.corner(i))).globalCoordinates();
-//          auto KirchhoffRot = kirchhoffFunction.evaluateDerivative(geometry.local(geometry.corner(i)));
-//         //Test
-//         const auto& jacobian = geometry.jacobian(geometry.corner(i));
-//         printmatrix(std::cout, jacobian, "jacobianInverse:", "--");
-
-//         auto defOut = localDeformation(geometry.local(geometry.corner(i)));
-//         auto defRot = localRotation(geometry.local(geometry.corner(i)));
-//         auto defRot_2 = localRotation_2(geometry.local(geometry.corner(i)));
-
-//         printvector(std::cout, kirchhoffOut, "kirchhoffOut:", "--");
-//         printvector(std::cout, defOut, "defOut:", "--");
-//         printmatrix(std::cout, KirchhoffRot, "KirchhoffRot:", "--");
-//         printmatrix(std::cout, defRot, "defRot:", "--");
-//         // printmatrix(std::cout, defRot*jacobian, "defRot*jacobian:", "--");   // deprecated: when ReducedCubicHermite returned values in globalCoordinates, this was actually neccessary to get the right values. 
-//       }
-//     }
-// }
-
-
-// /**
-//  * @brief Test that checks the isometry constraint at the nodes of the Triangulation
-//  */
-// template<class LocalDiscreteKirchhoffFunction, class GridView>
-// auto nodewiseIsometryTest(LocalDiscreteKirchhoffFunction& deformationFunction,
-//                   GridView& gridView)
-// {
-//     for (const auto &element :  elements(gridView))
-//     {
-//       auto geometry = element.geometry();
-//       deformationFunction.bind(element);
-//       // evaluate at nodes:
-//       for (int i=0; i<geometry.corners(); i++)
-//       {
-//         //  auto out = deformationFunction.evaluate(geometry.local(geometry.corner(i))).globalCoordinates();
-//          auto rot = deformationFunction.evaluateDerivative(geometry.local(geometry.corner(i)));
-//         FieldMatrix<double,2,2> I = ScaledIdentityMatrix<double,2>(1);
-//         auto diff = (rot.transposed()*rot) - I;
-//         // std::cout << "diff.frobenius_norm():" << diff.frobenius_norm() << std::endl;
-//         if(diff.frobenius_norm()>1e-8)
-//           DUNE_THROW(Exception, "Nodewise Isometry Test failed! with error"<< diff.frobenius_norm());
-//       }
-//     }
-//     std::cout << "nodewiseIsometryTest passed." << std::endl;
-// }
-
-
-// template<class DeformationFunction>
-// auto nodewiseIsometryTest(DeformationFunction& deformationGridViewFunction)
-// {
-//     auto localDeformation = localFunction(deformationGridViewFunction);
-//     auto localRotation = derivative(localDeformation);
-//     auto gridView = deformationGridViewFunction.basis().gridView();
-//     for (const auto &element :  elements(gridView))
-//     {
-//       auto geometry = element.geometry();
-//       localDeformation.bind(element);
-//       localRotation.bind(element);
-
-//       // evaluate at nodes:
-//       for (int i=0; i<geometry.corners(); i++)
-//       {
-//          auto rot = localRotation(geometry.local(geometry.corner(i)));
-//         auto product = rot.transposed()*rot;
-
-//         FieldMatrix<double,2,2> I = ScaledIdentityMatrix<double,2>(1);
-//         auto diff = (rot.transposed()*rot) - I;
-
-//         if(diff.frobenius_norm()>1e-8)
-//           DUNE_THROW(Exception, "Nodewise Isometry Test failed! with error"<< diff.frobenius_norm());
-//       }
-//     }
-//     std::cout << "nodewiseIsometryTest passed." << std::endl;
-// }
-
-
-
-// /** \brief The identity function in R^d, and its derivative
-//  *
-//  * This is needed to compute the displacement from the deformation (for visualization).
-//  * Since we want to represent it in a Hermite finite element space, we need
-//  * the derivative as well.
-//  *
-//  * Is there no shorter way to implement this?
-//  */
-// template<class K>
-// class IdentityGridEmbedding
-// {
-// public:
-//   //! Evaluate identity
-//   FieldVector<K,3> operator() (const FieldVector<K,2>& x) const
-//   {
-//     return {x[0], x[1], 0.0};
-//   }
-
-//   /**
-//    * \brief Obtain derivative of identity function
-//    */
-//   friend auto derivative(const IdentityGridEmbedding& p)
-//   {
-//     return [](const FieldVector<K,dim>& x) { return FieldMatrix<K,3,2>({{1,0}, {0,1}, {0,0}}); };
-//   }
-// };
-
-// /** \brief Project a vector field onto a product of ReducedHermiteTriangle spaces
-//  *
-//  * \todo This functionality should be provided by dune-functions.  It currently isn't,
-//  * because ReducedHermiteTriangleBasis is not an affine finite element.
-//  */
-// template <class Basis, class Coefficients, class Function>
-// void interpolate(const Basis& basis, Coefficients& coefficients, Function& f)
-// {
-//   coefficients.resize(basis.size());
-//   // coefficients.resize(basis.dimension());
-//   auto localView = basis.localView();
-
-//   for (auto&& e : elements(basis.gridView()))
-//   {
-//     localView.bind(e);
-
-//     // Loop over the corners
-//     for (std::size_t i=0; i<3; i++)
-//     {
-//       auto pos = e.geometry().corner(i);
-//       auto value = f(pos);
-//       auto der = derivative(f)(pos);
-
-//       // printvector(std::cout, value, "value:", "--");
-//       // printmatrix(std::cout, der, "der:", "--");
-
-//       // std::cout << "sin(x):" << sin(pos[0]) << std::endl;
-//       // std::cout << "cos(x):" << cos(pos[0]) << std::endl;
-//       // printvector(std::cout, pos, "pos: ", "--");
-
-//       // Loop over components of power basis
-//       for(std::size_t k=0; k<3 ; k++)
-//       {
-//         auto localIdx_0 = localView.tree().child(k).localIndex(i);    // index for values
-//         auto localIdx_1 = localView.tree().child(k).localIndex(i+3);  // index for partial derivatives w.r.t. x
-//         auto localIdx_2 = localView.tree().child(k).localIndex(i+6);  // index for partial derivatives w.r.t. y
-//         // std::cout << "localIdx_0: " << localIdx_0 << std::endl;
-//         // std::cout << "localIdx_1: " << localIdx_1 << std::endl;
-//         // std::cout << "localIdx_2: " << localIdx_2 << std::endl;
-
-//         auto globalIdx_0 = localView.index(localIdx_0);
-//         auto globalIdx_1 = localView.index(localIdx_1);
-//         auto globalIdx_2 = localView.index(localIdx_2);
-//         // std::cout << "globalIdx_0: " << globalIdx_0 << std::endl;
-//         // std::cout << "globalIdx_1: " << globalIdx_1 << std::endl;
-//         // std::cout << "globalIdx_2: " << globalIdx_2 << std::endl;
-
-//         coefficients[globalIdx_0[0]][globalIdx_0[1]] = value[k];
-//         coefficients[globalIdx_1[0]][globalIdx_1[1]] = der[k][0];
-//         coefficients[globalIdx_2[0]][globalIdx_2[1]] = der[k][1];
-//       }
-//     }
-
-//   }
-// }
-
-// /**
-//  * @brief Data structure conversion from 'VectorSpaceCoefficients' to 'IsometryCoefficients'.
-//  *  TODO: Throw an error if rotation-part is not orthogonal?  (expensive to check)
-//  */
-// template<class DiscreteKirchhoffBasis, class CoefficientBasis, class Coefficients, class IsometryCoefficients>
-// void vectorToIsometryCoefficientMap(const DiscreteKirchhoffBasis& discreteKirchhoffBasis,
-//                              const CoefficientBasis& coefficientBasis,
-//                              const Coefficients& vectorCoefficients,
-//                              IsometryCoefficients& isometryCoefficients)
-// {
-//   std::cout << "calling vectorToIsometryCoefficientMap" << std::endl;
-//   auto localView = discreteKirchhoffBasis.localView();
-//   auto localViewCoefficients = coefficientBasis.localView();
-
-//   using RT = typename IsometryCoefficients::value_type::ctype;
-
-//   for (const auto &element :  elements(coefficientBasis.gridView()))
-//   {
-//     localView.bind(element);
-//     localViewCoefficients.bind(element);
-
-//     // Loop over the corners
-//     for (std::size_t c=0; c<3; c++)
-//     {
-//         size_t localIdxOut = localViewCoefficients.tree().localIndex(c);
-//         size_t globalIdxOut = localViewCoefficients.index(localIdxOut);
-
-//         FieldVector<RT,3> currentDeformation(0);
-//         FieldVector<RT,3> currentDerivative_x(0);
-//         FieldVector<RT,3> currentDerivative_y(0);
-
-//       // Loop over components of power basis
-//       for(std::size_t k=0; k<3 ; k++)
-//       {
-//         auto localIdx_0 = localView.tree().child(k).localIndex(c);    // index for values
-//         auto localIdx_1 = localView.tree().child(k).localIndex(c+3);  // index for partial derivatives w.r.t. x
-//         auto localIdx_2 = localView.tree().child(k).localIndex(c+6);  // index for partial derivatives w.r.t. y
-//         // std::cout << "localIdx_0: " << localIdx_0 << std::endl;
-//         // std::cout << "localIdx_1: " << localIdx_1 << std::endl;
-//         // std::cout << "localIdx_2: " << localIdx_2 << std::endl;
-
-//         auto globalIdx_0 = localView.index(localIdx_0);
-//         auto globalIdx_1 = localView.index(localIdx_1);
-//         auto globalIdx_2 = localView.index(localIdx_2);
-
-//         // blockedInterleaved -- Version
-//         currentDeformation[k]  = vectorCoefficients[globalIdx_0[0]][globalIdx_0[1]];
-//         currentDerivative_x[k] = vectorCoefficients[globalIdx_1[0]][globalIdx_1[1]];
-//         currentDerivative_y[k] = vectorCoefficients[globalIdx_2[0]][globalIdx_2[1]];
-
-//       }
-
-//       //cross product to get last column of rotation matrix
-//       FieldVector<RT,3> cross = {currentDerivative_x[1]*currentDerivative_y[2] - currentDerivative_x[2]*currentDerivative_y[1],
-//                                  currentDerivative_x[2]*currentDerivative_y[0] - currentDerivative_x[0]*currentDerivative_y[2], 
-//                                  currentDerivative_x[0]*currentDerivative_y[1] - currentDerivative_x[1]*currentDerivative_y[0]};
-
-//       FieldMatrix<RT,3,3> rotMatrix(0);
-//       for(std::size_t k=0; k<3 ; k++)
-//       {
-//         rotMatrix[k][0] = currentDerivative_x[k];
-//         rotMatrix[k][1] = currentDerivative_y[k];
-//         rotMatrix[k][2] = cross[k];
-//       }
-//       // printmatrix(std::cout, rotMatrix, "rotMatrix:", "--");
-//       using namespace Dune::Indices;
-//       isometryCoefficients[globalIdxOut][_1].set(rotMatrix);                          //TODO: Throw if matrix is not orthogonal?
-//       isometryCoefficients[globalIdxOut][_0] = (RealTuple<RT, 3>)currentDeformation;
-//     }
-//   }
-// }
-
-
-// /**
-//  * @brief Data structure conversion from 'IsometryCoefficients' to 'VectorSpaceCoefficients'.
-//  */
-// template<class DiscreteKirchhoffBasis, class CoefficientBasis, class Coefficients, class IsometryCoefficients>
-// void isometryToVectorCoefficientMap(const DiscreteKirchhoffBasis& discreteKirchhoffBasis,
-//                              const CoefficientBasis& coefficientBasis,
-//                              Coefficients& coefficients,
-//                              const IsometryCoefficients& isometryCoefficients)
-// {
-//   std::cout << "calling isometryToVectorCoefficientMap" << std::endl;
-//   auto localView = discreteKirchhoffBasis.localView();
-//   auto localViewCoefficients = coefficientBasis.localView();
-
-//   for (const auto &element :  elements(coefficientBasis.gridView()))
-//   {
-//     localView.bind(element);
-//     localViewCoefficients.bind(element);
-
-//     // Loop over the corners
-//     for (std::size_t c=0; c<3; c++)
-//     {
-//       size_t localIdx = localViewCoefficients.tree().localIndex(c);
-//       size_t globalIdx = localViewCoefficients.index(localIdx);
-
-//       // Loop over components of power basis
-//       for(std::size_t k=0; k<3 ; k++)
-//       {
-//         auto localIdx_0 = localView.tree().child(k).localIndex(c);    // index for values
-//         auto localIdx_1 = localView.tree().child(k).localIndex(c+3);  // index for partial derivatives w.r.t. x
-//         auto localIdx_2 = localView.tree().child(k).localIndex(c+6);  // index for partial derivatives w.r.t. y
-//         // std::cout << "localIdx_0: " << localIdx_0 << std::endl;
-//         // std::cout << "localIdx_1: " << localIdx_1 << std::endl;
-//         // std::cout << "localIdx_2: " << localIdx_2 << std::endl;
-
-//         auto globalIdxOut_0 = localView.index(localIdx_0);
-//         auto globalIdxOut_1 = localView.index(localIdx_1);
-//         auto globalIdxOut_2 = localView.index(localIdx_2);
-
-//         using namespace Dune::Indices;
-//         auto deformation = isometryCoefficients[globalIdx][_0].globalCoordinates();
-//         auto rotation1 = isometryCoefficients[globalIdx][_1].director(0);       
-//         auto rotation2 = isometryCoefficients[globalIdx][_1].director(1);
-      
-//         coefficients[globalIdxOut_0[0]][globalIdxOut_0[1]] = deformation[k];
-//         coefficients[globalIdxOut_1[0]][globalIdxOut_1[1]] = rotation1[k];
-//         coefficients[globalIdxOut_2[0]][globalIdxOut_2[1]] = rotation2[k];
-//       }
-//     }
-//   }
-// }
-
-
 int main(int argc, char *argv[])
 {
 
-  /**
-   * @brief We use this to catch a 'Floating point exception' caused by the 'innerSolver' 
-   *        in RiemannianProximalNewton
-   */
-    std::shared_ptr<void(int)> handler(
-        signal(SIGFPE, [](int signum) {throw std::logic_error("FPE"); }),
-        [](__sighandler_t f) { signal(SIGFPE, f); });
-
-
-
-  feenableexcept(FE_INVALID);
-
   MPIHelper::instance(argc, argv);
   Dune::Timer globalTimer;
 
@@ -415,9 +87,9 @@ int main(int argc, char *argv[])
   Python::start();
   auto pyMain = Python::main();
   pyMain.runStream()
-      << std::endl << "import math"
-      << std::endl << "import sys"
-      << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
+    << std::endl << "import math"
+    << std::endl << "import sys"
+    << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
   auto pyModule = pyMain.import("linearisometrytest");
 
   // parse data file
@@ -436,9 +108,6 @@ int main(int argc, char *argv[])
   /////////////////////////////////////////
   using GridType = UGGrid<dim>;
   std::shared_ptr<GridType> grid;
-//   FieldVector<double,dim> lower(0), upper(1);
-//   std::array<unsigned int,dim> elementsArray;
-
   // create unstructured grid.
   std::cout << "Read GMSH grid." << std::endl;
   GridFactory<GridType> factory;
@@ -459,16 +128,16 @@ int main(int argc, char *argv[])
   ///////////////////////////////////////////////////////
 
   // General coefficient vector of a Discrete Kirchhoff deformation function
-  using VectorSpaceCoefficients = BlockVector<FieldVector<double,3>>;
+  using VectorSpaceCoefficients = BlockVector<FieldVector<double,3> >;
 
   // Coefficient vector of a Discrete Kirchhoff deformation function that is constrained to be an isometry
-  using Coefficient = GFE::ProductManifold<RealTuple<double,3>, Rotation<double,3> >;
+  using Coefficient = GFE::ProductManifold<GFE::RealTuple<double,3>, GFE::Rotation<double,3> >;
   using IsometryCoefficients = std::vector<Coefficient>;
 
   using namespace Functions::BasisFactory;
 
   auto deformationBasis = makeBasis(gridView,
-                                    power<3>(reducedCubicHermiteTriangle(),
+                                    power<3>(reducedCubicHermite(),
                                              blockedInterleaved()));
 
 
@@ -480,36 +149,40 @@ int main(int argc, char *argv[])
   // A basis for the tangent space (used to set DirichletNodes)
   auto tangentBasis = makeBasis(gridView,
                                 power<Coefficient::TangentVector::dimension>(
-                                    lagrange<1>(),
-                                    blockedInterleaved()));
+                                  lagrange<1>(),
+                                  blockedInterleaved()));
 
 
   ///////////////////////////////////////////
-  //   Read Dirichlet values 
+  //   Read Dirichlet values
   ///////////////////////////////////////////
-  BitSetVector<1> dirichletVertices(gridView.size(dim), false);
   const typename GridView::IndexSet &indexSet = gridView.indexSet();
+  BitSetVector<Coefficient::TangentVector::dimension> dirichletNodes(tangentBasis.size(), false); //tangentBasis.size()=coefficientBasis.size()
 
   // Make Python function that computes which vertices are on the Dirichlet boundary,
   // based on the vertex positions.
   auto dirichletIndicatorFunction = Python::make_function<bool>(pyModule.get("dirichlet_indicator"));
 
+  // If we want to clamp DOFs inside the domain, we cannot use 'BoundaryPatch'
+  // and 'constructBoundaryDofs'. This is a workaround for now.
   for (auto &&vertex : vertices(gridView))
-    dirichletVertices[indexSet.index(vertex)] = dirichletIndicatorFunction(vertex.geometry().corner(0));
+  {
+    if(dirichletIndicatorFunction(vertex.geometry().corner(0)))
+    {
+      dirichletNodes[indexSet.index(vertex)] = true;
+    }
 
-  BoundaryPatch<GridView> dirichletBoundary(gridView, dirichletVertices);
-  BitSetVector<Coefficient::TangentVector::dimension> dirichletNodes(tangentBasis.size(), false);
-  constructBoundaryDofs(dirichletBoundary, tangentBasis, dirichletNodes);
+  }
+  // deprecated:
+  // BoundaryPatch<GridView> dirichletBoundary(gridView, dirichletVertices);
+  // constructBoundaryDofs(dirichletBoundary, tangentBasis, dirichletNodes);
 
   ///////////////////////////////////////////
   //   Get initial Iterate
   ///////////////////////////////////////////
   auto pythonInitialIterate = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("f"), pyModule.get("df"));
-
   VectorSpaceCoefficients x(deformationBasis.size());
-
-  IdentityGridEmbedding<double> identityGridEmbedding;
-  // interpolate(deformationBasis, x, identityGridEmbedding);
+  Dune::GFE::Impl::IdentityGridEmbedding<double> identityGridEmbedding;
   interpolate(deformationBasis, x, pythonInitialIterate);   // Interpolation on a python function
 
   ////////////////////////////////////////////////////////////////////////
@@ -522,8 +195,8 @@ int main(int argc, char *argv[])
 
 
   /**
-   * @brief We need to setup LocalDiscreteKirchhoffBendingIsometry with a coefficient 
-   * vector of ctype 'adouble' while the solver gets a coefficient vector 
+   * @brief We need to setup LocalDiscreteKirchhoffBendingIsometry with a coefficient
+   * vector of ctype 'adouble' while the solver gets a coefficient vector
    * of ctype 'double'.
    */
   IsometryCoefficients isometryCoefficients(coefficientBasis.size());
@@ -535,40 +208,19 @@ int main(int argc, char *argv[])
   std::cout << "deformationBasis.dimension():" << deformationBasis.dimension() << std::endl;
 
 
-    /**
-     * @brief TEST: compute isometry error
-     */
-    auto initialDeformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x);
-    // nodewiseIsometryTest(initialDeformationFunction);
-
+  // Test TEST: compute isometry error
+  auto initialDeformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, x);
+  nodewiseIsometryTest(initialDeformationFunction);
 
 
 
+  using namespace Dune::GFE::Impl;
   // Convert coefficient data structure from 'VectorSpaceCoefficients' to 'IsometryCoefficients'
   vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients);
   vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients_adouble);
 
-
-    /**
-     * @brief TEST: conversion of coefficient vectors (back & forth)
-     */
-    VectorSpaceCoefficients x_convert = x;
-    IsometryCoefficients isometryCoefficientsTMP(coefficientBasis.size());
-    vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x_convert,isometryCoefficientsTMP);
-    isometryToVectorCoefficientMap(deformationBasis,coefficientBasis,x_convert,isometryCoefficientsTMP);
-    //Check difference
-    for(int i=0; i<x.size(); i++)
-    {
-      if((x[i]-x_convert[i]).two_norm() > 1e-4)
-        std::cout << "Coefficient conversion failed! with x[i]-x_convert[i]:" << x[i]-x_convert[i] << std::endl;
-    }
-      
-
-
-
-
   using DeformationBasis = decltype(deformationBasis);
-  using LocalDKFunction = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, AIsometryCoefficients>;
+  using LocalDKFunction = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, AIsometryCoefficients>;
   LocalDKFunction localDKFunction(deformationBasis, coefficientBasis, isometryCoefficients_adouble);
   nodewiseIsometryTest(localDKFunction, gridView);
 
@@ -577,7 +229,7 @@ int main(int argc, char *argv[])
   /**
    * @brief Get force term
    */
-  auto pythonForce = Python::make_function<FieldVector<double,3>>(pyModule.get("force"));
+  auto pythonForce = Python::make_function<FieldVector<double,3> >(pyModule.get("force"));
   // auto forceGVF  = Dune::Functions::makeGridViewFunction(dummyForce, gridView);
   auto forceGVF  = Dune::Functions::makeGridViewFunction(pythonForce, gridView);
   auto localForce = localFunction(forceGVF);
@@ -586,7 +238,7 @@ int main(int argc, char *argv[])
   /**
    * @brief Get effective prestrain Tensor
    */
-  Dune::FieldVector<adouble,3> Beffvec = parameterSet.get<Dune::FieldVector<adouble,3>>("effectivePrestrain", {0.0, 0.0, 0.0});
+  Dune::FieldVector<adouble,3> Beffvec = parameterSet.get<Dune::FieldVector<adouble,3> >("effectivePrestrain", {0.0, 0.0, 0.0});
   Dune::FieldMatrix<adouble,2,2> effectivePrestrain = {{(adouble)Beffvec[0], (adouble)Beffvec[2]}, {(adouble)Beffvec[2],(adouble)Beffvec[1]} };
   printmatrix(std::cout, effectivePrestrain, "effective prestrain (Beff): ", "--");
 
@@ -594,69 +246,51 @@ int main(int argc, char *argv[])
   /**
    * @brief Get effective quadratic form
    */
-  Dune::FieldVector<adouble,6> Qhomvec = parameterSet.get<Dune::FieldVector<adouble,6>>("effectiveQuadraticForm", {1.0, 1.0, 1.0, 0.0, 0.0, 0.0});
-  Dune::FieldMatrix<adouble,3,3> Qhom = {{(adouble)Qhomvec[0], (adouble)Qhomvec[3], (adouble)Qhomvec[4]}, 
-                                         {(adouble)Qhomvec[3], (adouble)Qhomvec[1], (adouble)Qhomvec[5]},
-                                         {(adouble)Qhomvec[4], (adouble)Qhomvec[5], (adouble)Qhomvec[2]}};
+  Dune::FieldVector<adouble,6> Qhomvec = parameterSet.get<Dune::FieldVector<adouble,6> >("effectiveQuadraticForm", {1.0, 1.0, 1.0, 0.0, 0.0, 0.0});
+  Dune::FieldMatrix<adouble,3,3> Qhom = {{(adouble)Qhomvec[0], (adouble)Qhomvec[3], (adouble)Qhomvec[4]},
+    {(adouble)Qhomvec[3], (adouble)Qhomvec[1], (adouble)Qhomvec[5]},
+    {(adouble)Qhomvec[4], (adouble)Qhomvec[5], (adouble)Qhomvec[2]}};
   printmatrix(std::cout, Qhom, "effective quadratic form (Qhom): ", "--");
 
 
-  // Assembler using ADOL-C
-  /**
-   * @brief Setup nonconforming energy
-   */
-  auto localEnergy_nonconforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergy<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce);
-  /**
-   * @brief Setup conforming energy (WIP)
-   */
-  auto localEnergy_conforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyZienkiewicz<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce);
-  // auto localEnergy_conforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyZienkiewiczProjected<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce);
-  /**
-   * @brief Setup energy featuring prestrain
-   */
-  //  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce, Qhom, effectivePrestrain);
-  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce, parameterSet, pyModule);
+  // The energy consists of two parts: 1. A bending energy contribution and 2. Contribution from a force term.
+  auto sumEnergy = std::make_shared<GFE::SumEnergy<CoefficientBasis, GFE::RealTuple<adouble,3>, GFE::Rotation<adouble,3> > >();
+
+  // Setup prestrained bending energy.
+  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction,  ACoefficient> >(localDKFunction, parameterSet, pyModule);
 
+  // Setup force energy.
+  auto forceEnergy = std::make_shared<GFE::ForceEnergy<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient> >(localDKFunction, localForce);
+  sumEnergy->addLocalEnergy(localEnergy_prestrain);
+  sumEnergy->addLocalEnergy(forceEnergy);
+
+  // Setup the assembler.
+  auto localGFEADOLCStiffness_prestrain = std::make_shared<Dune::GFE::LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> >(sumEnergy);
+  std::shared_ptr<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> > assembler_prestrain;
+  assembler_prestrain = std::make_shared<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> >(coefficientBasis, localGFEADOLCStiffness_prestrain);
 
-  LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_conforming(localEnergy_conforming.get());
-  LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_nonconforming(localEnergy_nonconforming.get());
-  LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_prestrain(localEnergy_prestrain.get());
-  GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_conforming(coefficientBasis, localGFEADOLCStiffness_conforming);
-  GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_nonconforming(coefficientBasis, localGFEADOLCStiffness_nonconforming);
-  GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_prestrain(coefficientBasis, localGFEADOLCStiffness_prestrain);
 
   // /////////////////////////////////////////////////
   //   Create a Riemannian trust-region solver
   // /////////////////////////////////////////////////
-  RiemannianProximalNewtonSolver<CoefficientBasis, Coefficient> solver;
-
-
-
-  if (parameterSet.get<bool>("prestrainFlag", 0))
-      solver.setup(*grid,
-                &assembler_prestrain,
-                isometryCoefficients,
-                dirichletNodes,
-                parameterSet);
-  else if (parameterSet.get<bool>("conforming_DiscreteJacobian", 1))
-      solver.setup(*grid,
-                  &assembler_conforming,
-                  isometryCoefficients,
-                  dirichletNodes,
-                  parameterSet);
-  else 
-      solver.setup(*grid,
-                &assembler_nonconforming,
-                isometryCoefficients,
-                dirichletNodes,
-                parameterSet);
+  /**
+   * @brief Create a solver:
+   *        - Adaptively Regularized Riemannian Newton (ARRN) [default]
+   */
+  Dune::GFE::RiemannianProximalNewtonSolver<CoefficientBasis, Coefficient> ARRNsolver;
+
+
+  ARRNsolver.setup(*grid,
+                   &(*assembler_prestrain),
+                   isometryCoefficients,
+                   dirichletNodes,
+                   parameterSet);
 
   // /////////////////////////////////////////////////////
   //   Solve!
   // /////////////////////////////////////////////////////
-  // solver.setInitialIterate(isometryCoefficients);
-  solver.solve();
-  isometryCoefficients = solver.getSol();
+  ARRNsolver.solve();
+  isometryCoefficients = ARRNsolver.getSol();
 
   // Convert coefficient data structure from 'IsometryCoefficients' to 'VectorSpaceCoefficients'
   VectorSpaceCoefficients x_out(deformationBasis.size());
@@ -668,16 +302,16 @@ int main(int argc, char *argv[])
   std::string baseNameDefault = "bending-isometries-";
   std::string baseName = parameterSet.get("baseName", baseNameDefault);
   std::string resultFileName =  parameterSet.get("resultPath", "")
-                                + "/" + baseName
-                                + "_level" + std::to_string(parameterSet.get<int>("numLevels"));
+                               + "/" + baseName
+                               + "_level" + std::to_string(parameterSet.get<int>("numLevels"));
 
   if (parameterSet.get<bool>("conforming_DiscreteJacobian", 1))
     resultFileName = resultFileName + "_C";
-  else 
+  else
     resultFileName = resultFileName + "_NC";
 
-    // Create a deformation function but this time with double-types.
-  using LocalDKFunctionD = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
+  // Create a deformation function but this time with double-types.
+  using LocalDKFunctionD = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
   LocalDKFunctionD localDKFunctionDouble(deformationBasis, coefficientBasis, isometryCoefficients);
 
 
@@ -690,7 +324,7 @@ int main(int argc, char *argv[])
      *        interpolate the identity and substract from the coefficient vector.
      */
     VectorSpaceCoefficients identity(deformationBasis.size());
-    IdentityGridEmbedding<double> identityGridEmbedding;
+    Dune::GFE::Impl::IdentityGridEmbedding<double> identityGridEmbedding;
     interpolate(deformationBasis, identity, identityGridEmbedding);
 
     // auto identity_tmp = identity;
@@ -700,8 +334,8 @@ int main(int argc, char *argv[])
     displacement -= identity;
 
     // std::cout << "displacement.size():" << displacement.size() << std::endl;
-    auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x_out);
-    auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, displacement);
+    auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, x_out);
+    auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, displacement);
 
     /**
      * @brief  We need to subsample, because VTK cannot natively display real third-order functions
@@ -712,31 +346,6 @@ int main(int argc, char *argv[])
 
 
 
-    /**
-     * @brief Basis used to represent normal vector fields
-     * 
-     */
-    auto normalBasis = makeBasis(gridView,
-                      power<3>(
-                      lagrange<1>(),
-                      flatLexicographic()));
-    // auto normalBasis = makeBasis(gridView,
-    //                               power<3>(
-    //                               lagrange<1>(),
-    //                               blockedInterleaved()));
-
-
-    // TEST Compute 
-
-
-    // auto normalLambda = [deformationFunction](const FieldVector<double,2>& x)
-    // {
-    //   // deformationfunction.derivative() ... //needs binding?!
-    
-
-    // }
-
-    
 
 
     /**
@@ -744,147 +353,108 @@ int main(int argc, char *argv[])
      */
     if (parameterSet.get<bool>("vtkwrite_analyticalSolution", 0))
     {
-      // auto pythonAnalyticalSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("u"), pyModule.get("du"));
       auto pythonAnalyticalSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("displacement"), pyModule.get("displacementGradient"));
-
-
-      // deprecated: interpolate ...
-      // VectorSpaceCoefficients y(deformationBasis.size());
-      // interpolate(deformationBasis, y, pythonAnalyticalSolution);
-      // // Compute the displacement
-      // auto displacementAnalytical = y;
-      // // displacementAnalytical -= identity_tmp;
-      // displacementAnalytical -= identity;
-
-
-      // auto pythonIdentity =   Python::make_function<FieldVector<double,3>>(IdentityGridEmbedding<double>::operator())
-
-
-      // auto displacementFunctionAnalytical = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, displacementAnalytical);
-      // auto deformationFunctionAnalytical = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, y);
-      // vtkWriter.addVertexData(displacementFunctionAnalytical, VTK::FieldInfo("displacement_analytical", VTK::FieldInfo::Type::vector, 3));
-      // vtkWriter.addVertexData(deformationFunctionAnalytical, VTK::FieldInfo("deformation_analytical", VTK::FieldInfo::Type::vector, 3));
-    
       vtkWriter.addVertexData((pythonAnalyticalSolution), VTK::FieldInfo("displacement_analytical", VTK::FieldInfo::Type::vector, 3));
       /**
-       * @brief Get the normal vector field of the surface parametrized 
+       * @brief Get the normal vector field of the surface parametrized
        *        by the analytical solution.
-       *        - We represent the normal vector in a first order Lagrange-Power basis ('normalBasis').
        */
       if (parameterSet.get<bool>("vtkWrite_analyticalSurfaceNormal", 0))
       {
-      // Get the surface normal function.
-      auto pythonSurfaceNormal = Python::make_function<FieldVector<double,3>>(pyModule.get("surfaceNormal"));
-
-
-      // deprecated: interpolate ...
-      // std::vector<FieldVector<double,3>> normalVectorCoefficients(normalBasis.size());
-      // Dune::Functions::interpolate(normalBasis, normalVectorCoefficients, pythonSurfaceNormal); 
-      // auto surfaceNormalAnalytical = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(normalBasis, normalVectorCoefficients);
-      // vtkWriter.addVertexData(surfaceNormalAnalytical, VTK::FieldInfo("surfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
-
-      vtkWriter.addVertexData(pythonSurfaceNormal, VTK::FieldInfo("surfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
+        // Get the surface normal function.
+        auto pythonSurfaceNormal = Python::make_function<FieldVector<double,3> >(pyModule.get("surfaceNormal"));
+        vtkWriter.addVertexData(pythonSurfaceNormal, VTK::FieldInfo("surfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
       }
     }
-    //-------------------------------------------------------------------------------------    TODO: OUTSOURCE
-    /**
-     * @brief TEST: Compute the discrete normal vector of the surface parametrized 
-     *              by the discrete solution.
-     */
-     auto surfaceNormalDiscreteCoefficients = computeDiscreteSurfaceNormal(localDKFunctionDouble, normalBasis);
     //-------------------------------------------------------------------------------------
-
     // Create DiscreteGlobalBasisFunctions.
-    auto surfaceNormalDiscrete   = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(normalBasis, surfaceNormalDiscreteCoefficients);
+    // auto surfaceNormalDiscrete   = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(normalBasis, surfaceNormalDiscreteCoefficients);
     vtkWriter.addVertexData(displacementFunction, VTK::FieldInfo("displacement", VTK::FieldInfo::Type::vector, 3));
-    vtkWriter.addVertexData(surfaceNormalDiscrete , VTK::FieldInfo("surfaceNormal_discrete", VTK::FieldInfo::Type::vector, 3));
     vtkWriter.write(resultFileName);
   }
 
   /**
-   * @brief Compute the L2-Error and H1-SemiError between the discrete deformation u_h and the analytical deformation u 
-   * 
+   * @brief Compute the L2-Error and H1-SemiError between the discrete deformation u_h and the analytical deformation u
+   *
    */
-    // Read reference solution and its derivative into a Python function
-    // auto referenceSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("u"), pyModule.get("du"));
-    // auto referenceSolution =  Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("displacement"), pyModule.get("displacementGradient"));
-    auto referenceSolution =  Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("deformation"), pyModule.get("deformationGradient"));
-    auto referenceDerivative = derivative(referenceSolution);
+  // Read reference solution and its derivative into a Python function
+  auto referenceSolution =  Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("deformation"), pyModule.get("deformationGradient"));
+  auto referenceDerivative = derivative(referenceSolution);
 
-    using LocalDKFunctionD = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
-    LocalDKFunctionD localDKFunctionD(deformationBasis, coefficientBasis, isometryCoefficients);
+  using LocalDKFunctionD = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
+  LocalDKFunctionD localDKFunctionD(deformationBasis, coefficientBasis, isometryCoefficients);
 
 
-    // QuadratureRule for the integral of the L^2 error
-    QuadratureRuleKey quadKey(dim,6);
+  // QuadratureRule for the integral of the L^2 error
+  QuadratureRuleKey quadKey(dim,6);
 
-    // The error to be computed
-    double l2ErrorSquared = 0;
-    double h1ErrorSquared = 0;
+  // The error to be computed
+  double l2ErrorSquared = 0;
+  double h1ErrorSquared = 0;
 
-    for (auto&& element : elements(gridView))
-    {
+  for (auto&& element : elements(gridView))
+  {
 
     //   localNumericalSolution.bind(element);
 
-      localDKFunctionD.bind(element);
+    localDKFunctionD.bind(element);
 
-      // Get quadrature formula
-      quadKey.setGeometryType(element.type());
-      const auto& quad = QuadratureRuleCache<double, dim>::rule(quadKey);
+    // Get quadrature formula
+    quadKey.setGeometryType(element.type());
+    const auto& quad = QuadratureRuleCache<double, dim>::rule(quadKey);
 
-      for (auto quadPoint : quad)
-      {
-        auto quadPos = quadPoint.position();
-        const auto integrationElement = element.geometry().integrationElement(quadPos);
-        const auto weight = quadPoint.weight();
+    for (auto quadPoint : quad)
+    {
+      auto quadPos = quadPoint.position();
+      const auto integrationElement = element.geometry().integrationElement(quadPos);
+      const auto weight = quadPoint.weight();
 
-        // auto numValue = localNumericalSolution(quadPos);
-        auto refValue = referenceSolution(element.geometry().global(quadPos));
-        auto numValue = localDKFunctionD.evaluate(quadPos).globalCoordinates();
+      // auto numValue = localNumericalSolution(quadPos);
+      auto refValue = referenceSolution(element.geometry().global(quadPos));
+      auto numValue = localDKFunctionD.evaluate(quadPos).globalCoordinates();
 
-        auto numDir = localDKFunctionD.evaluateDerivative(quadPos);
-        auto refDir = referenceDerivative(element.geometry().global(quadPos));
-        auto diff = numDir - refDir;
+      auto numDir = localDKFunctionD.evaluateDerivative(quadPos);
+      auto refDir = referenceDerivative(element.geometry().global(quadPos));
+      auto diff = numDir - refDir;
 
 
-        // integrate error
-        l2ErrorSquared += (numValue - refValue)* (numValue - refValue) * weight * integrationElement;
-        h1ErrorSquared += diff.frobenius_norm2() * weight * integrationElement;
-      }
-    }
-    std::cout << "elements: " << gridView.size(0)
-              << "      "
-              << "L^2 error: " << std::sqrt(l2ErrorSquared)
-              << "      ";
-    std::cout << "h^1 error: " << std::sqrt(h1ErrorSquared) << std::endl;
-
-   
-    //Check Quantities
-    if( std::sqrt(l2ErrorSquared) > 1e-12)
-    {
-        std::cerr << std::setprecision(9);
-        std::cerr << "L2-error is to large! " << std::endl;
-        return 1;
-    }
-    if( std::sqrt(h1ErrorSquared) > 1e-12)
-    {
-        std::cerr << std::setprecision(9);
-        std::cerr << "H1-error is to large! " << std::endl;
-        return 1;
-    }
-    // Compare energy values.
-    auto numerical_energy = solver.getStatistics().finalEnergy;
-    auto analytical_energy = 0.0;
-    std::cout << "Energy difference: " << std::abs(analytical_energy - numerical_energy)  << std::endl;
-    if( std::abs(analytical_energy - numerical_energy) > 1e-12)
-    {
-        std::cerr << std::setprecision(9);
-        std::cerr << "Energy difference: " << std::abs(analytical_energy - numerical_energy)  << " is to large! " << std::endl;
-        return 1;
+      // integrate error
+      l2ErrorSquared += (numValue - refValue)* (numValue - refValue) * weight * integrationElement;
+      h1ErrorSquared += diff.frobenius_norm2() * weight * integrationElement;
     }
+  }
+  std::cout << "elements: " << gridView.size(0)
+            << "      "
+            << "L^2 error: " << std::sqrt(l2ErrorSquared)
+            << "      ";
+  std::cout << "h^1 error: " << std::sqrt(h1ErrorSquared) << std::endl;
+
+
+  //Check Quantities
+  if( std::sqrt(l2ErrorSquared) > 1e-12)
+  {
+    std::cerr << std::setprecision(9);
+    std::cerr << "L2-error is to large! " << std::endl;
+    return 1;
+  }
+  if( std::sqrt(h1ErrorSquared) > 1e-12)
+  {
+    std::cerr << std::setprecision(9);
+    std::cerr << "H1-error is to large! " << std::endl;
+    return 1;
+  }
+  // Compare energy values.
+  auto numerical_energy = ARRNsolver.getStatistics().finalEnergy;
+  auto analytical_energy = 0.0;
+  std::cout << "Energy difference: " << std::abs(analytical_energy - numerical_energy)  << std::endl;
+  if( std::abs(analytical_energy - numerical_energy) > 1e-12)
+  {
+    std::cerr << std::setprecision(9);
+    std::cerr << "Energy difference: " << std::abs(analytical_energy - numerical_energy)  << " is to large! " << std::endl;
+    return 1;
+  }
 
   std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
   std::cout << "Test: linearisometrytest passed." << std::endl;
   return 0;
-  }
\ No newline at end of file
+}
diff --git a/test/orthotropicrotation_1.py b/test/orthotropicrotation_1.py
index 40ec1a779524e1f01cf855720c45e6275cdb31b2..bf9503dcd6cde176a67954bd37fe23581b470171 100644
--- a/test/orthotropicrotation_1.py
+++ b/test/orthotropicrotation_1.py
@@ -103,3 +103,48 @@ class Microstructure:
     def prestrain_phase3(self,x):
         return [[0, 0, 0], [0,0,0], [0,0,0]]
 
+
+# parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+#############################################
+#  Grid parameters
+#############################################
+parameterSet.microGridLevel = 3
+
+#############################################
+#  Assembly options
+#############################################
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
+
+#############################################
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
+#############################################
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
+
+#############################################
+#  Write/Output options      #(default=false)
+#############################################
+# --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
+parameterSet.write_materialFunctions = 0  # VTK indicator function for material/prestrain definition
+#parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
+parameterSet.MaterialSubsamplingRefinement= 2
+# --- Write Correctos to VTK-File:  
+parameterSet.writeCorrectorsVTK = 0
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = True
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
+
+
diff --git a/test/orthotropicrotationtest.cc b/test/orthotropicrotationtest.cc
index 9c99eb440abdc759e632c902274095ddd49cee7f..dabd68c40c90d79b516f4bc8dda1bb55bb803dd1 100644
--- a/test/orthotropicrotationtest.cc
+++ b/test/orthotropicrotationtest.cc
@@ -63,9 +63,9 @@ using namespace MatrixOperations;
 
 /**
  * @brief  Compute effective quantities for a trilayer setup with 3 orthotropic phases:
- *         Once with a canonical orthonormal material frame and once with a material frame 
+ *         Once with a canonical orthonormal material frame and once with a material frame
  *         that is rotated pi(180 degree) around different axes.
- *         Aim of the test is to check the correctness of the material frame transformation.   
+ *         Aim of the test is to check the correctness of the material frame transformation.
  */
 
 
@@ -87,7 +87,7 @@ int main(int argc, char *argv[])
   MPIHelper::instance(argc, argv);
 
   Dune::Timer globalTimer;
-  //--- setup Log-File 
+  //--- setup Log-File
   std::fstream log;
 
   std::cout << "Current path is " << std::filesystem::current_path() << '\n';
@@ -96,42 +96,22 @@ int main(int argc, char *argv[])
   std::cout << "dir_path: " << file_path.parent_path() << std::endl;
   std::string dir_path  = file_path.parent_path();
 
-  // ParameterTree parameterSet;
-  // if (argc < 2)
-  //   ParameterTreeParser::readINITree(dir_path + "/orthotropicrotation_1.parset", parameterSet);
-  // else
-  // {
-  //   ParameterTreeParser::readINITree(argv[1], parameterSet);
-  //   ParameterTreeParser::readOptions(argc, argv, parameterSet);
-  // }
-
-  // //--- Start Python interpreter
-  // Python::start();
-  // Python::Reference main = Python::import("__main__");
-  // Python::run("import math");
-  // Python::runStream()
-  //   << std::endl << "import sys"
-  //   << std::endl << "sys.path.append('" << dir_path  << "')"
-  //   << std::endl;
-
-
-   // Start Python interpreter
-    Python::start();
-    auto pyMain = Python::main();
-    pyMain.runStream()
-        << std::endl << "import math"
-        << std::endl << "import sys"
-        << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
-    auto pyModule = pyMain.import("orthotropicrotation_1");
-
-    ParameterTree parameterSet;
-    pyModule.get("parameterSet").toC(parameterSet);
-    // read possible further parameters from the command line
-    ParameterTreeParser::readOptions(argc, argv, parameterSet);
-    // Print all parameters, to make them appear in the log file
-    std::cout << "Input parameters:" << std::endl;
-    parameterSet.report();
+  // Start Python interpreter
+  Python::start();
+  auto pyMain = Python::main();
+  pyMain.runStream()
+    << std::endl << "import math"
+    << std::endl << "import sys"
+    << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
+  auto pyModule = pyMain.import("orthotropicrotation_1");
 
+  ParameterTree parameterSet;
+  pyModule.get("parameterSet").toC(parameterSet);
+  // read possible further parameters from the command line
+  ParameterTreeParser::readOptions(argc, argv, parameterSet);
+  // Print all parameters, to make them appear in the log file
+  std::cout << "Input parameters:" << std::endl;
+  parameterSet.report();
 
 
   constexpr int dim = 3;
@@ -143,10 +123,9 @@ int main(int argc, char *argv[])
   FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
   FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
 
-  int gridLevel = 3;
-
-  std::array<int, dim> nElements = {(int)std::pow(2,gridLevel) ,(int)std::pow(2,gridLevel) ,(int)std::pow(2,gridLevel)};
-  std::cout << "Number of Grid-Elements in each direction: " << nElements << std::endl;
+  int microGridLevel = parameterSet.get<int>("microGridLevel", 1);
+  std::array<int, dim> nElements = {(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel)};
+  std::cout << "Number of Grid-Elements in each direction: " << (int)std::pow(2,microGridLevel) << std::endl;
 
   using CellGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
   CellGridType grid_CE(lower,upper,nElements);
@@ -178,22 +157,12 @@ int main(int argc, char *argv[])
   Python::Callable MicrostructureClass  = pyModule.get("Microstructure");
   Python::Reference microstructure = MicrostructureClass(); //Setup a constant microstructure
 
-  ///////////////////////////////////
   //  Create prestrained material object
-  ///////////////////////////////////
   using MaterialType = prestrainedMaterial<GridView>;
   std::shared_ptr<MaterialType> material = std::make_shared<MaterialType>(gridView_CE,microstructure,parameterSet,pyModule);
-  // auto material_ = prestrainedMaterial(gridView_CE,microstructure,parameterSet,pyModule);
-
-  // --- Get scale ratio
-  // double gamma = parameterSet.get<double>("gamma",1.0);
 
-  //------------------------------------------------------------------------------------------------
-  //--- Compute Correctors
-  // auto correctorComputer = CorrectorComputer(Basis_CE, material_, log, parameterSet);
-  // correctorComputer.assemble();
-  // correctorComputer.solve();
-  std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType>>(Basis_CE, material, parameterSet);
+  // Compute Correctors
+  std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType> >(Basis_CE, material, parameterSet);
   correctorComputer->assemble();
   correctorComputer->solve();
 
@@ -204,16 +173,12 @@ int main(int argc, char *argv[])
   //--- get effective quantities
   auto Qeff = effectiveQuantitiesComputer.getQeff();
   auto Beff = effectiveQuantitiesComputer.getBeff();
-//   printmatrix(std::cout, Qeff, "Matrix Qeff", "--");
-//   printvector(std::cout, Beff, "Beff", "--");
-
+  //   printmatrix(std::cout, Qeff, "Matrix Qeff", "--");
+  //   printvector(std::cout, Beff, "Beff", "--");
 
   /**
    * @brief Compute "rotated" effective quantitites
-   *
    */
-//  ParameterTreeParser::readINITree("../test/orthotropicrotation_2.parset", parameterSet);
-//  ParameterTreeParser::readINITree(dir_path + "/orthotropicrotation_2.parset", parameterSet);
   pyModule = pyMain.import("orthotropicrotation_2");
   pyModule.get("parameterSet").toC(parameterSet);
 
@@ -221,10 +186,7 @@ int main(int argc, char *argv[])
   Python::Callable MicrostructureClass_2  = pyModule.get("Microstructure");
   Python::Reference microstructure_2 = MicrostructureClass_2(); //Setup a constant microstructure
 
-
-
-
-  //-- Alternative: 
+  //-- Alternative:
   material->updateMicrostructure(microstructure_2);
   correctorComputer->updateMaterial(material);
   effectiveQuantitiesComputer.updateCorrectorComputer(correctorComputer);
@@ -237,34 +199,6 @@ int main(int argc, char *argv[])
   // correctorComputer->updateMaterial(material_2);
   // effectiveQuantitiesComputer.updateCorrectorComputer(correctorComputer);
 
-
-
-  /**
-   * @brief Old way:
-   * 
-   */
-  // auto material_2 = prestrainedMaterial(gridView_CE,microstructure_2,parameterSet,pyModule);
-  // std::shared_ptr<MaterialType> material_2 = std::make_shared<MaterialType>(gridView_CE,microstructure_2,parameterSet,pyModule);
-
-
-  //--- Compute Correctors
-  // auto correctorComputer_2 = CorrectorComputer(Basis_CE, material_2, log, parameterSet);
-  // correctorComputer_2.assemble();
-  // correctorComputer_2.solve();
-
-
-  // std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer_2 = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType>>(Basis_CE, material_2, parameterSet);
-  // correctorComputer_2->assemble();
-  // correctorComputer_2->solve();
-
-  // //--- Compute effective quantities
-  // auto effectiveQuantitiesComputer_2 = EffectiveQuantitiesComputer(correctorComputer_2);
-  // effectiveQuantitiesComputer_2.computeEffectiveQuantities();
-
-  // //--- get effective quantities
-  // auto Qeff_2 = effectiveQuantitiesComputer_2.getQeff();
-  // auto Beff_2 = effectiveQuantitiesComputer_2.getBeff();
-
   /**
    * @brief  Compare results.
    *
diff --git a/test/parametrizedlaminatetest.cc b/test/parametrizedlaminatetest.cc
index 4aa89738903ec5711bebd995bf147db0165283e4..3bbeb3c22d87105155d8ac4b5e3d2b96cf1469a7 100644
--- a/test/parametrizedlaminatetest.cc
+++ b/test/parametrizedlaminatetest.cc
@@ -60,7 +60,6 @@
 using namespace Dune;
 using namespace MatrixOperations;
 
-
 /**
  * @brief In the special case of a parametrized laminate (Lemma 4.5) in
  *        [Böhnlein,Neukamm,Padilla-Garza,Sander - A homogenized bending theory for prestrained plates]
@@ -68,7 +67,6 @@ using namespace MatrixOperations;
  *        This test compares the analytical quantities with numerical results.
  */
 
-
 //////////////////////////////////////////////////
 //   Infrastructure for handling periodicity
 //////////////////////////////////////////////////
@@ -87,7 +85,7 @@ int main(int argc, char *argv[])
   MPIHelper::instance(argc, argv);
 
   Dune::Timer globalTimer;
-  //--- setup Log-File 
+  //--- setup Log-File
   std::fstream log;
 
   std::cout << "Current path is " << std::filesystem::current_path() << '\n';
@@ -96,64 +94,22 @@ int main(int argc, char *argv[])
   std::cout << "dir_path: " << file_path.parent_path() << std::endl;
   std::string dir_path  = file_path.parent_path();
 
-  // ParameterTree parameterSet;
-  // if (argc < 2)
-  //   ParameterTreeParser::readINITree(dir_path + "/parametrizedlaminate.parset", parameterSet);
-  // else
-  // {
-  //   ParameterTreeParser::readINITree(argv[1], parameterSet);
-  //   ParameterTreeParser::readOptions(argc, argv, parameterSet);
-  // }
-
-  // ParameterTree parameterSet;
-  // if (argc < 2)
-  //   ParameterTreeParser::readINITree("parset/parametrizedlaminate.parset", parameterSet);
-  // else
-  // {
-  //   ParameterTreeParser::readINITree(argv[1], parameterSet);
-  //   ParameterTreeParser::readOptions(argc, argv, parameterSet);
-  // }
-
-  // ParameterTree parameterSet;
-  // if (argc < 2)
-  //   ParameterTreeParser::readINITree("/parset/parametrizedlaminate.parset", parameterSet);
-  // else
-  // {
-  //   ParameterTreeParser::readINITree(argv[1], parameterSet);
-  //   ParameterTreeParser::readOptions(argc, argv, parameterSet);
-  // }
-
-  //--- Start Python interpreter
-  // Python::start();
-  // Python::Reference main = Python::import("__main__");
-  // Python::run("import math");
-  // Python::runStream()
-  //   << std::endl << "import sys"
-  //   << std::endl << "sys.path.append('" << dir_path  << "')"
-  //   << std::endl;
-
-
-
-   // Start Python interpreter
-    Python::start();
-    auto pyMain = Python::main();
-    pyMain.runStream()
-        << std::endl << "import math"
-        << std::endl << "import sys"
-        << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
-    auto pyModule = pyMain.import("parametrized_laminate");
-
-    ParameterTree parameterSet;
-    pyModule.get("parameterSet").toC(parameterSet);
-    // read possible further parameters from the command line
-    ParameterTreeParser::readOptions(argc, argv, parameterSet);
-    // Print all parameters, to make them appear in the log file
-    std::cout << "Input parameters:" << std::endl;
-    parameterSet.report();
-
-
-
+  // Start Python interpreter
+  Python::start();
+  auto pyMain = Python::main();
+  pyMain.runStream()
+    << std::endl << "import math"
+    << std::endl << "import sys"
+    << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
+  auto pyModule = pyMain.import("parametrizedlaminatetest");
 
+  ParameterTree parameterSet;
+  pyModule.get("parameterSet").toC(parameterSet);
+  // read possible further parameters from the command line
+  ParameterTreeParser::readOptions(argc, argv, parameterSet);
+  // Print all parameters, to make them appear in the log file
+  std::cout << "Input parameters:" << std::endl;
+  parameterSet.report();
 
 
 
@@ -166,10 +122,9 @@ int main(int argc, char *argv[])
   FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
   FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
 
-  int gridLevel = 3;
-
-  std::array<int, dim> nElements = {(int)std::pow(2,gridLevel) ,(int)std::pow(2,gridLevel) ,(int)std::pow(2,gridLevel)};
-  std::cout << "Number of Grid-Elements in each direction: " << nElements << std::endl;
+  int microGridLevel = parameterSet.get<int>("microGridLevel", 1);
+  std::array<int, dim> nElements = {(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel)};
+  std::cout << "Number of Grid-Elements in each direction: " << (int)std::pow(2,microGridLevel) << std::endl;
 
   using CellGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
   CellGridType grid_CE(lower,upper,nElements);
@@ -197,30 +152,17 @@ int main(int argc, char *argv[])
       ));
 
 
-
-
-
   // Create Microstructure object.
   Python::Callable MicrostructureClass = pyModule.get("Microstructure");
   Python::Reference microstructure = MicrostructureClass(); //Setup a constant microstructure
 
 
-  ///////////////////////////////////
   //  Create prestrained material object
-  ///////////////////////////////////
-  // auto material = prestrainedMaterial(gridView_CE,microstructure,parameterSet,pyModule);
-
   using MaterialType = prestrainedMaterial<GridView>;
   std::shared_ptr<MaterialType> material = std::make_shared<MaterialType>(gridView_CE,microstructure,parameterSet,pyModule);
 
-
-
-  //------------------------------------------------------------------------------------------------
-  //--- Compute Correctors
-  // auto correctorComputer = CorrectorComputer(Basis_CE, material, log, parameterSet);
-  // correctorComputer.assemble();
-  // correctorComputer.solve();
-  std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType>>(Basis_CE, material, parameterSet);
+  //--- Compute correctors
+  std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType> >(Basis_CE, material, parameterSet);
   correctorComputer->assemble();
   correctorComputer->solve();
 
diff --git a/test/parametrized_laminate.py b/test/parametrizedlaminatetest.py
similarity index 67%
rename from test/parametrized_laminate.py
rename to test/parametrizedlaminatetest.py
index 0260b8c391e8f44d08b5c9c067ed2916a395e551..008c5fc4f24c1fbe3272c54af9e3c75805c60db5 100644
--- a/test/parametrized_laminate.py
+++ b/test/parametrizedlaminatetest.py
@@ -24,7 +24,7 @@ parameterSet = ParameterSet()
 #  Paths
 #############################################
 # parameterSet.resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs_parametrized_laminate'
-parameterSet.baseName= 'parametrized_laminate'   #(needed for Output-Filename)
+parameterSet.baseName= 'parametrizedlaminatetest'   #(needed for Output-Filename)
 
 #############################################
 #  Material Setup
@@ -91,56 +91,45 @@ class Microstructure:
         return [[0, 0, 0], [0,0,0], [0,0,0]]
 
 
+parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
 #############################################
 #  Grid parameters
 #############################################
-## 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
-#----------------------------------------------------
-parameterSet.numLevels= '3 3'      # computes all levels from first to second entry
+parameterSet.microGridLevel = 3
 
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER (default), #4: UMFPACK - SOLVER
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 3        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
-
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
-parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
+parameterSet.write_materialFunctions = 0  # VTK indicator function for material/prestrain definition
 #parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
+parameterSet.MaterialSubsamplingRefinement= 2
 # --- Write Correctos to VTK-File:  
-parameterSet.write_VTK = 0
-
-# --- (Optional output) L2Error, integral mean: 
-#parameterSet.write_L2Error = 1
-#parameterSet.write_IntegralMean = 1      
-
-# --- check orthogonality (75) from paper: 
-parameterSet.write_checkOrthogonality = 1
-
-# --- Write corrector-coefficients to log-File:
-#parameterSet.write_corrector_phi1 = 1
-#parameterSet.write_corrector_phi2 = 1
-#parameterSet.write_corrector_phi3 = 1
-
-# --- Print Condition number of matrix (can be expensive):
-#parameterSet.print_conditionNumber= 1  #(default=false)
-
+parameterSet.writeCorrectorsVTK = 0
 # --- write effective quantities (Qhom.Beff) to .txt-files
-parameterSet.write_EffectiveQuantitiesToTxt = False
+parameterSet.write_EffectiveQuantitiesToTxt = True
+
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/test/properties-shape-test.cc b/test/properties-shape-test.cc
index d7ea1b89c4278d0ffe27b05d40f00685574b976f..2cff3e6713cf8403980d214b260df33eaf9a0aed 100644
--- a/test/properties-shape-test.cc
+++ b/test/properties-shape-test.cc
@@ -1,10 +1,8 @@
 #include <config.h>
 #include <signal.h>
 #include <memory>
-
 #include <fenv.h>
 #include <array>
-
 #include <math.h>
 
 // Includes for the ADOL-C automatic differentiation library
@@ -13,22 +11,21 @@
 #include <dune/fufem/utilities/adolcnamespaceinjections.hh>
 
 #include <dune/common/typetraits.hh>
-
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/parametertree.hh>
 #include <dune/common/parametertreeparser.hh>
 
 #include <dune/grid/uggrid.hh>
 #include <dune/grid/utility/structuredgridfactory.hh>
-
 #include <dune/grid/io/file/gmshreader.hh>
 #include <dune/grid/io/file/vtk.hh>
 
 #include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>
+#include <dune/functions/gridfunctions/composedgridfunction.hh>
+#include <dune/functions/functionspacebases/cubichermitebasis.hh>
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 #include <dune/functions/functionspacebases/powerbasis.hh>
 #include <dune/functions/functionspacebases/interpolate.hh>
-#include <dune/functions/functionspacebases/reducedcubichermitetrianglebasis.hh>
 
 #include <dune/fufem/boundarypatch.hh>
 #include <dune/fufem/functiontools/boundarydofs.hh>
@@ -41,40 +38,35 @@
 #include <dune/gfe/spaces/productmanifold.hh>
 #include <dune/gfe/spaces/realtuple.hh>
 #include <dune/gfe/spaces/rotation.hh>
-#include <dune/gfe/localdiscretekirchhoffbendingisometry.hh>
+#include <dune/gfe/functions/discretekirchhoffbendingisometry.hh>
+#include <dune/gfe/functions/embeddedglobalgfefunction.hh>
+#include <dune/gfe/functions/localprojectedfefunction.hh>
 #include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
-#include <dune/gfe/assemblers/harmonicenergy.hh>
 #include <dune/gfe/assemblers/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/discretekirchhoffbendingenergy.hh>
+#include <dune/gfe/assemblers/forceenergy.hh>
+#include <dune/gfe/assemblers/sumenergy.hh>
 #include <dune/gfe/bendingisometryhelper.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
-#include <dune/gfe/embeddedglobalgfefunction.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergy.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyconforming.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewicz.hh>
-#include <dune/gfe/energies/discretekirchhoffbendingenergyzienkiewiczprojected.hh>
-// #include <dune/gfe/energies/discretekirchhoffbendingenergyprestrained.hh>
+#include <dune/gfe/riemanniantrsolver.hh>
 
+#include <dune/microstructure/bendingisometryaddons.hh>
 #include <dune/microstructure/energies/discretekirchhoffbendingenergyprestrained.hh>
 
-#include <dune/gfe/spaces/stiefelmanifold.hh>
-// #include <dune/gfe/spaces/stiefelmatrix.hh>
-
 #include <dune/gmsh4/gmsh4reader.hh>
 #include <dune/gmsh4/gridcreators/lagrangegridcreator.hh>
 
-
 #include <filesystem>
 
 const int dim = 2;
 
 using namespace Dune;
 
-
 int main(int argc, char *argv[])
 {
 
   /**
-   * @brief We use this to catch a 'Floating point exception' caused by the 'innerSolver' 
+   * @brief We use this to catch a 'Floating point exception' caused by the 'innerSolver'
    *        in RiemannianProximalNewton
    */
   //   std::shared_ptr<void(int)> handler(
@@ -82,7 +74,6 @@ int main(int argc, char *argv[])
   //       [](__sighandler_t f) { signal(SIGFPE, f); });
 
 
-
   // feenableexcept(FE_INVALID);
 
   std::vector<double> Energy_threshold       = {1.0,   0.5, 2.0  };
@@ -94,617 +85,424 @@ int main(int argc, char *argv[])
   for(size_t experimentNumber = 1; experimentNumber<4; experimentNumber++)
   {
 
-      MPIHelper::instance(argc, argv);
-      Dune::Timer globalTimer;
-
-      // if (argc < 3)
-      //   DUNE_THROW(Exception, "Usage: ./bending-isometries <python path> <python module without extension>");
-
-      // Start Python interpreter
-      // Python::start();
-      // auto pyMain = Python::main();
-      // pyMain.runStream()
-      //     << std::endl << "import math"
-      //     << std::endl << "import sys"
-      //     << std::endl << "sys.path.append('" << argv[1] << "')"  << std::endl;
-      // auto pyModule = pyMain.import(argv[2]);
-
+    MPIHelper::instance(argc, argv);
+    Dune::Timer globalTimer;
 
-      std::cout << "Current path is " << std::filesystem::current_path() << '\n';
-      std::filesystem::path file_path = (__FILE__);
-      std::cout<< "File path: " << file_path<<std::endl;
-      std::cout << "dir_path: " << file_path.parent_path() << std::endl;
-      std::string dir_path  = file_path.parent_path();
+    std::cout << "Current path is " << std::filesystem::current_path() << '\n';
+    std::filesystem::path file_path = (__FILE__);
+    std::cout<< "File path: " << file_path<<std::endl;
+    std::cout << "dir_path: " << file_path.parent_path() << std::endl;
+    std::string dir_path  = file_path.parent_path();
 
 
-      std::string experiment = "properties-shape-test-" + std::to_string(experimentNumber);
+    std::string experiment = "properties-shape-test-" + std::to_string(experimentNumber);
 
-      // Start Python interpreter
-      Python::start();
-      auto pyMain = Python::main();
-      pyMain.runStream()
-          << std::endl << "import math"
-          << std::endl << "import sys"
-          << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
-      // auto pyModule = pyMain.import("properties-shape-test-2");
-      auto pyModule = pyMain.import(experiment);
+    // Start Python interpreter
+    Python::start();
+    auto pyMain = Python::main();
+    pyMain.runStream()
+      << std::endl << "import math"
+      << std::endl << "import sys"
+      << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
+    // auto pyModule = pyMain.import("properties-shape-test-2");
+    auto pyModule = pyMain.import(experiment);
 
-      // parse data file
-      ParameterTree parameterSet;
-      pyModule.get("parameterSet").toC(parameterSet);
+    // parse data file
+    ParameterTree parameterSet;
+    pyModule.get("parameterSet").toC(parameterSet);
 
-      // read possible further parameters from the command line
-      ParameterTreeParser::readOptions(argc, argv, parameterSet);
+    // read possible further parameters from the command line
+    ParameterTreeParser::readOptions(argc, argv, parameterSet);
 
-      // Print all parameters, to make them appear in the log file
-      std::cout << "Executable: bending-isometries, with parameters:" << std::endl;
-      parameterSet.report();
+    // Print all parameters, to make them appear in the log file
+    std::cout << "Executable: bending-isometries, with parameters:" << std::endl;
+    parameterSet.report();
 
-      /////////////////////////////////////////
-      //   Create the grid
-      /////////////////////////////////////////
-      using GridType = UGGrid<dim>;
+    /////////////////////////////////////////
+    //   Create the grid
+    /////////////////////////////////////////
+    using GridType = UGGrid<dim>;
 
-      std::shared_ptr<GridType> grid;
-      FieldVector<double,dim> lower(0), upper(1);
-      std::array<unsigned int,dim> elementsArray;
+    std::shared_ptr<GridType> grid;
+    FieldVector<double,dim> lower(0), upper(1);
+    std::array<unsigned int,dim> elementsArray;
 
-      std::string structuredGridType = parameterSet["structuredGrid"];
-      if (structuredGridType != "false" )
-      {
-        lower = parameterSet.get<FieldVector<double,dim> >("lower");
-        upper = parameterSet.get<FieldVector<double,dim> >("upper");
-        elementsArray = parameterSet.get<std::array<unsigned int,dim> >("elements");
-
-        if (structuredGridType == "simplex")
-          grid = StructuredGridFactory<GridType>::createSimplexGrid(lower, upper, elementsArray);
-        else if (structuredGridType == "cube")
-          grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elementsArray);
-        else
-          DUNE_THROW(Exception, "Unknown structured grid type '" << structuredGridType << "' found!");
-      } else {
-        std::cout << "Read GMSH grid." << std::endl;
-        std::string gridPath                = parameterSet.get<std::string>("gridPath");
-        std::string gridFile                = parameterSet.get<std::string>("gridFile");
-        GridFactory<GridType> factory;
-        Gmsh4::LagrangeGridCreator creator{factory};
-        Gmsh4Reader reader{creator};
-        reader.read(gridPath + "/" + gridFile);
-        grid = factory.createGrid();
-      }
+    std::string structuredGridType = parameterSet["structuredGrid"];
+    if (structuredGridType != "false" )
+    {
+      lower = parameterSet.get<FieldVector<double,dim> >("lower");
+      upper = parameterSet.get<FieldVector<double,dim> >("upper");
+      elementsArray = parameterSet.get<std::array<unsigned int,dim> >("elements");
+
+      if (structuredGridType == "simplex")
+        grid = StructuredGridFactory<GridType>::createSimplexGrid(lower, upper, elementsArray);
+      else if (structuredGridType == "cube")
+        grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elementsArray);
+      else
+        DUNE_THROW(Exception, "Unknown structured grid type '" << structuredGridType << "' found!");
+    } else {
+      std::cout << "Read GMSH grid." << std::endl;
+      std::string gridPath                = parameterSet.get<std::string>("gridPath");
+      std::string gridFile                = parameterSet.get<std::string>("gridFile");
+      GridFactory<GridType> factory;
+      Gmsh4::LagrangeGridCreator creator{factory};
+      Gmsh4Reader reader{creator};
+      reader.read(gridPath + "/" + gridFile);
+      grid = factory.createGrid();
+    }
 
-      const int macroGridLevel = parameterSet.get<int>("macroGridLevel");
-      grid->globalRefine(macroGridLevel-1);
+    const int macroGridLevel = parameterSet.get<int>("macroGridLevel");
+    grid->globalRefine(macroGridLevel-1);
 
-      using GridView = typename GridType::LeafGridView;
-      GridView gridView = grid->leafGridView();
+    using GridView = typename GridType::LeafGridView;
+    GridView gridView = grid->leafGridView();
 
-      ///////////////////////////////////////////////////////
-      //  Set up the function spaces
-      ///////////////////////////////////////////////////////
+    ///////////////////////////////////////////////////////
+    //  Set up the function spaces
+    ///////////////////////////////////////////////////////
 
-      // General coefficient vector of a Discrete Kirchhoff deformation function
-      using VectorSpaceCoefficients = BlockVector<FieldVector<double,3>>;
+    // General coefficient vector of a Discrete Kirchhoff deformation function
+    using VectorSpaceCoefficients = BlockVector<FieldVector<double,3> >;
 
-      /**
-       * @brief Coefficient vector of a Discrete Kirchhoff deformation function that is constrained to be an isometry.
-       *        we need both 'double' and 'adouble' versions.
-       */
-      using Coefficient = GFE::ProductManifold<RealTuple<double,3>, Rotation<double,3> >;
-      using IsometryCoefficients = std::vector<Coefficient>;
-      using ACoefficient = typename Coefficient::template rebind<adouble>::other;
-      using AIsometryCoefficients = std::vector<ACoefficient>;
+    /**
+     * @brief Coefficient vector of a Discrete Kirchhoff deformation function that is constrained to be an isometry.
+     *        we need both 'double' and 'adouble' versions.
+     */
+    using Coefficient = GFE::ProductManifold<GFE::RealTuple<double,3>, GFE::Rotation<double,3> >;
+    using IsometryCoefficients = std::vector<Coefficient>;
+    using ACoefficient = typename Coefficient::template rebind<adouble>::other;
+    using AIsometryCoefficients = std::vector<ACoefficient>;
 
-      using namespace Functions::BasisFactory;
-      auto deformationBasis = makeBasis(gridView,
-                                        power<3>(reducedCubicHermiteTriangle(),
-                                        blockedInterleaved()));
+    using namespace Functions::BasisFactory;
+    auto deformationBasis = makeBasis(gridView,
+                                      power<3>(reducedCubicHermite(),
+                                               blockedInterleaved()));
 
-      using DeformationBasis = decltype(deformationBasis);
+    using DeformationBasis = decltype(deformationBasis);
 
-      /**
-       * @brief The next basis is used to assign (nonlinear) degrees of freedom to the grid vertices.
-       *        The actual basis function values are never used.
-       */
-      using CoefficientBasis = Functions::LagrangeBasis<GridView, 1>;
-      CoefficientBasis coefficientBasis(gridView);
+    /**
+     * @brief The next basis is used to assign (nonlinear) degrees of freedom to the grid vertices.
+     *        The actual basis function values are never used.
+     */
+    using CoefficientBasis = Functions::LagrangeBasis<GridView, 1>;
+    CoefficientBasis coefficientBasis(gridView);
 
-      // A basis for the tangent space (used to set DirichletNodes)
-      auto tangentBasis = makeBasis(gridView,
-                                    power<Coefficient::TangentVector::dimension>(
+    // A basis for the tangent space (used to set DirichletNodes)
+    auto tangentBasis = makeBasis(gridView,
+                                  power<Coefficient::TangentVector::dimension>(
                                     lagrange<1>(),
                                     blockedInterleaved()));
 
-      // Print some information on the grid and degrees of freedom.                        
-      std::cout << "Number of Elements in the grid: " << gridView.size(0)<< std::endl;
-      std::cout << "Number of Nodes in the grid: "    << gridView.size(dim)<< std::endl;
-      std::cout << "deformationBasis.size(): "        << deformationBasis.size() << std::endl;
-      std::cout << "deformationBasis.dimension(): "   << deformationBasis.dimension() << std::endl;
-      std::cout << "Degrees of Freedom: "             << deformationBasis.dimension() << std::endl;
+    // Print some information on the grid and degrees of freedom.
+    std::cout << "Number of Elements in the grid: " << gridView.size(0)<< std::endl;
+    std::cout << "Number of Nodes in the grid: "    << gridView.size(dim)<< std::endl;
+    std::cout << "deformationBasis.size(): "        << deformationBasis.size() << std::endl;
+    std::cout << "deformationBasis.dimension(): "   << deformationBasis.dimension() << std::endl;
+    std::cout << "Degrees of Freedom: "             << deformationBasis.dimension() << std::endl;
 
 
-      ///////////////////////////////////////////
-      //   Read Dirichlet values   (NEW VERSION)
-      ///////////////////////////////////////////
-      BitSetVector<1> dirichletVertices(gridView.size(dim), false);
-      const typename GridView::IndexSet &indexSet = gridView.indexSet();
+    ///////////////////////////////////////////
+    //   Read Dirichlet values   (NEW VERSION)
+    ///////////////////////////////////////////
+    const typename GridView::IndexSet &indexSet = gridView.indexSet();
+    BitSetVector<Coefficient::TangentVector::dimension> dirichletNodes(tangentBasis.size(), false);   //tangentBasis.size()=coefficientBasis.size()
 
+    // Make Python function that computes which vertices are on the Dirichlet boundary, based on the vertex positions.
+    auto dirichletIndicatorFunction = Python::make_function<bool>(pyModule.get("dirichlet_indicator"));
 
-      BitSetVector<Coefficient::TangentVector::dimension> dirichletNodes(tangentBasis.size(), false); //tangentBasis.size()=coefficientBasis.size()
+    /**
+     * @brief If we want to clamp DOFs inside the domain, we connot use 'BoundaryPatch'
+     *        and 'constructBoundaryDofs'. This is a workaround for now.
+     */
+    for (auto &&vertex : vertices(gridView))
+    {
+      if(dirichletIndicatorFunction(vertex.geometry().corner(0)))
+      {
+        dirichletNodes[indexSet.index(vertex)] = true;
+      }
+    }
 
-      /**
-       * @brief Make Python function that computes which vertices are on the Dirichlet boundary,
-       *        based on the vertex positions.
-       */
-      auto dirichletIndicatorFunction = Python::make_function<bool>(pyModule.get("dirichlet_indicator"));
+    ///////////////////////////////////////////
+    //   Get initial Iterate
+    ///////////////////////////////////////////
+    auto pythonInitialIterate = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("f"), pyModule.get("df"));
+    VectorSpaceCoefficients x(deformationBasis.size());
+    interpolate(deformationBasis, x, pythonInitialIterate);
 
 
+    /**
+     * @brief We need to setup LocalDiscreteKirchhoffBendingIsometry with a coefficient
+     * vector of ctype 'adouble' while the solver gets a coefficient vector
+     * of ctype 'double'.
+     */
+    IsometryCoefficients isometryCoefficients(coefficientBasis.size());
+    AIsometryCoefficients isometryCoefficients_adouble(coefficientBasis.size());
 
-      /**
-       * @brief If we want to clamp DOFs inside the domain, we connot use 'BoundaryPatch' 
-       *        and 'constructBoundaryDofs'. This is a workaround for now.
-       *        
-       *
-       */
-      for (auto &&vertex : vertices(gridView))
-      {
-        dirichletVertices[indexSet.index(vertex)] = dirichletIndicatorFunction(vertex.geometry().corner(0));
 
-          if(dirichletIndicatorFunction(vertex.geometry().corner(0)))
-          { 
-            dirichletNodes[indexSet.index(vertex)] = true;
-          }
-      
-      }
-        
-      // std::cout << "tangentBasis.size():" << tangentBasis.size() << std::endl;
-      // std::cout << "coefficientBasis.size():" << coefficientBasis.size() << std::endl;
+    /**
+     * @brief Copy the current iterate into a data type that encapsulates the isometry constraint
+     *        i. e. convert coefficient data structure from 'VectorSpaceCoefficients' to 'IsometryCoefficients'
+     */
+    using namespace Dune::GFE::Impl;
+    vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients);
+    vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients_adouble);
+
+    /**
+     * @brief TEST: conversion of coefficient vectors (back & forth)
+     */
+    coefficientConversionTest<VectorSpaceCoefficients, DeformationBasis, CoefficientBasis, IsometryCoefficients>(x, deformationBasis, coefficientBasis);
 
-      // // deprecated: 
-      // // BoundaryPatch<GridView> dirichletBoundary(gridView, dirichletVertices);
-      // // constructBoundaryDofs(dirichletBoundary, tangentBasis, dirichletNodes);
 
-      //     // TEST: print dirichletNodes 
-      // std::cout << "print dirichletVertices:" << std::endl;
-      // std::cout <<  dirichletVertices << std::endl;
+    using LocalDKFunction = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, AIsometryCoefficients>;
+    LocalDKFunction localDKFunction(deformationBasis, coefficientBasis, isometryCoefficients_adouble);
 
-      // std::cout << "print dirichletNodes:" << std::endl;
-      // std::cout <<  dirichletNodes << std::endl;
+    /**
+     * @brief TEST: check isometry condition on the nodes of the grid for initial deformation.
+     */
+    // auto initialDeformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x);
+    // nodewiseIsometryTest(initialDeformationFunction);
+    nodewiseIsometryTest(localDKFunction, gridView);
 
 
+    /**
+     * @brief Read force term.
+     */
+    auto pythonForce = Python::make_function<FieldVector<double,3> >(pyModule.get("force"));
+    auto forceGVF  = Dune::Functions::makeGridViewFunction(pythonForce, gridView);
+    auto localForce = localFunction(forceGVF);
 
-      // ///////////////////////////////////////////
-      // //   Read Dirichlet values  (OLD VERSION)
-      // ///////////////////////////////////////////
-      // BitSetVector<1> dirichletVertices(gridView.size(dim), false);
-      // const typename GridView::IndexSet &indexSet = gridView.indexSet();
 
-      // /**
-      //  * @brief Make Python function that computes which vertices are on the Dirichlet boundary,
-      //  *        based on the vertex positions.
-      //  */
-      // auto dirichletIndicatorFunction = Python::make_function<bool>(pyModule.get("dirichlet_indicator"));
+    /**
+     * @brief Read effective prestrain Tensor
+     */
+    // Dune::FieldVector<adouble,3> Beffvec = parameterSet.get<Dune::FieldVector<adouble,3>>("effectivePrestrain", {0.0, 0.0, 0.0});
+    // Dune::FieldMatrix<adouble,2,2> effectivePrestrain = {{(adouble)Beffvec[0], (adouble)Beffvec[2]}, {(adouble)Beffvec[2],(adouble)Beffvec[1]} };
+    // printmatrix(std::cout, effectivePrestrain, "effective prestrain (Beff): ", "--");
 
-      // for (auto &&vertex : vertices(gridView))
-      // {
-      //   dirichletVertices[indexSet.index(vertex)] = dirichletIndicatorFunction(vertex.geometry().corner(0));
-      //   // if(dirichletIndicatorFunction(vertex.geometry().corner(0)))
-      //   // {
-      //   //   std::cout << "Dirichlet Vertex with coordinates:" << vertex.geometry().corner(0) << std::endl;
-      //   // }
-      // }
 
-      // BoundaryPatch<GridView> dirichletBoundary(gridView, dirichletVertices);
-      // BitSetVector<Coefficient::TangentVector::dimension> dirichletNodes(tangentBasis.size(), false);
-      // constructBoundaryDofs(dirichletBoundary, tangentBasis, dirichletNodes);
+    /**
+     * @brief Get effective quadratic form Qhom
+     *
+     *  input-vector: [q_1,q_2,q_3,q_12,q_13,q_23]
+     *  is assembled into a matrix where the off-diagonal entries are divided by 2 (compare with definition in the paper)
+     *            (   q_1    , 0.5*q_12  ,  0.5*q_13 )
+     *     Q =    ( 0.5*q_12 ,   q_2     ,  0.5*q_23 )
+     *            ( 0.5*q_13 , 0.5*q_23  ,    q_3    )
+     */
+    // Dune::FieldVector<adouble,6> Qhomvec = parameterSet.get<Dune::FieldVector<adouble,6>>("effectiveQuadraticForm", {1.0, 1.0, 1.0, 0.0, 0.0, 0.0});
+    // Dune::FieldMatrix<adouble,3,3> Qhom = {{(adouble)Qhomvec[0], (adouble)0.5*Qhomvec[3], (adouble)0.5*Qhomvec[4]},
+    //                                       {(adouble)0.5*Qhomvec[3], (adouble)Qhomvec[1], (adouble)0.5*Qhomvec[5]},
+    //                                       {(adouble)0.5*Qhomvec[4], (adouble)0.5*Qhomvec[5], (adouble)Qhomvec[2]}};
+    // printmatrix(std::cout, Qhom, "effective quadratic form (Qhom): ", "--");
 
-      ///////////////////////////////////////////
-      //   Get initial Iterate
-      ///////////////////////////////////////////
-      auto pythonInitialIterate = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("f"), pyModule.get("df"));
+    ////////////////////////////////////////////////////////////////////////
+    //   Create an assembler for the Discrete Kirchhoff Energy Functional  (using ADOL-C)
+    ////////////////////////////////////////////////////////////////////////
+    // The energy consists of two parts: 1. A bending energy contribution and 2. Contribution from a force term.
+    auto sumEnergy = std::make_shared<GFE::SumEnergy<CoefficientBasis, GFE::RealTuple<adouble,3>, GFE::Rotation<adouble,3> > >();
 
-      VectorSpaceCoefficients x(deformationBasis.size());
-      interpolate(deformationBasis, x, pythonInitialIterate); 
+    // Setup prestrained bending energy.
+    auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction,  ACoefficient> >(localDKFunction, parameterSet, pyModule);
 
+    // Setup force energy.
+    auto forceEnergy = std::make_shared<GFE::ForceEnergy<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient> >(localDKFunction, localForce);
+    sumEnergy->addLocalEnergy(localEnergy_prestrain);
+    sumEnergy->addLocalEnergy(forceEnergy);
 
+    // Setup the assembler.
+    auto localGFEADOLCStiffness_prestrain = std::make_shared<Dune::GFE::LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> >(sumEnergy);
+    std::shared_ptr<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> > assembler_prestrain;
+    assembler_prestrain = std::make_shared<Dune::GFE::GeodesicFEAssembler<CoefficientBasis, Coefficient> >(coefficientBasis, localGFEADOLCStiffness_prestrain);
 
 
+    /**
+     * @brief Create a solver:
+     *        - Riemannian Newton with Hessian modification
+     *        - Riemannian Trust-region
+     */
+    Dune::GFE::RiemannianProximalNewtonSolver<CoefficientBasis, Coefficient> ARRNsolver;
+    Dune::GFE::RiemannianTrustRegionSolver<CoefficientBasis, Coefficient> RTRsolver;
 
 
-      /**
-       * @brief We need to setup LocalDiscreteKirchhoffBendingIsometry with a coefficient 
-       * vector of ctype 'adouble' while the solver gets a coefficient vector 
-       * of ctype 'double'.
-       */
-      IsometryCoefficients isometryCoefficients(coefficientBasis.size());
-      AIsometryCoefficients isometryCoefficients_adouble(coefficientBasis.size());
+    std::string Solver_name = parameterSet.get<std::string>("Solver", "ARRN");
+    double numerical_energy;   //final discrete energy
 
+    if(Solver_name == "ARRN")
+    {
 
-      /**
-       * @brief Copy the current iterate into a data type that encapsulates the isometry constraint
-       *        i. e. convert coefficient data structure from 'VectorSpaceCoefficients' to 'IsometryCoefficients'
-       */
-      vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients);
-      vectorToIsometryCoefficientMap(deformationBasis,coefficientBasis,x,isometryCoefficients_adouble);
+      ARRNsolver.setup(*grid,
+                       &(*assembler_prestrain),
+                       isometryCoefficients,
+                       dirichletNodes,
+                       parameterSet);
 
-      /**
-       * @brief TEST: conversion of coefficient vectors (back & forth)
-       */
-      coefficientConversionTest<VectorSpaceCoefficients, DeformationBasis, CoefficientBasis, IsometryCoefficients>(x, deformationBasis, coefficientBasis);
+      ARRNsolver.solve();
+      isometryCoefficients = ARRNsolver.getSol();
+      numerical_energy = ARRNsolver.getStatistics().finalEnergy;
+    } else if (Solver_name =="RiemannianTR")
+    {
+      std::cout << "Using Riemannian Trust-region method for energy minimization." << std::endl;
+      RTRsolver.setup(*grid,
+                      &(*assembler_prestrain),
+                      isometryCoefficients,
+                      dirichletNodes,
+                      parameterSet);
+      RTRsolver.solve();
+      isometryCoefficients = RTRsolver.getSol();
+      numerical_energy = RTRsolver.getStatistics().finalEnergy;
+    } else
+      DUNE_THROW(Dune::Exception, "Unknown Solver type for bending isometries.");
 
 
-        
 
-      using LocalDKFunction = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, AIsometryCoefficients>;
-      LocalDKFunction localDKFunction(deformationBasis, coefficientBasis, isometryCoefficients_adouble);
+    // Convert coefficient data structure from 'IsometryCoefficients' to 'VectorSpaceCoefficients'
+    VectorSpaceCoefficients x_out(deformationBasis.size());
+    isometryToVectorCoefficientMap(deformationBasis,coefficientBasis,x_out,isometryCoefficients);
 
+    ////////////////////////////////
+    //   Output result
+    ////////////////////////////////
+    std::string baseNameDefault = "bending-isometries-";
+    std::string baseName = parameterSet.get("baseName", baseNameDefault);
+    std::string resultFileName =  parameterSet.get("resultPath", "")
+                                 + "/" + baseName
+                                 + "_level" + std::to_string(parameterSet.get<int>("macroGridLevel"));
 
-      /**
-       * @brief TEST: check isometry condition on the nodes of the grid for initial deformation.
-       */
-        // auto initialDeformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x);
-        // nodewiseIsometryTest(initialDeformationFunction);
-      nodewiseIsometryTest(localDKFunction, gridView);
+    if (parameterSet.get<bool>("conforming_DiscreteJacobian", 1))
+      resultFileName = resultFileName + "_C";
+    else
+      resultFileName = resultFileName + "_NC";
 
 
-      /**
-       * @brief Read force term.
-       */
-      auto pythonForce = Python::make_function<FieldVector<double,3>>(pyModule.get("force"));
-      auto forceGVF  = Dune::Functions::makeGridViewFunction(pythonForce, gridView);
-      auto localForce = localFunction(forceGVF);
+    // Create a deformation function but this time with double-types.
+    using LocalDKFunctionD = Dune::GFE::DiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
+    LocalDKFunctionD localDKFunctionDouble(deformationBasis, coefficientBasis, isometryCoefficients);
 
 
-      /**
-       * @brief Read effective prestrain Tensor
-       */
-      // Dune::FieldVector<adouble,3> Beffvec = parameterSet.get<Dune::FieldVector<adouble,3>>("effectivePrestrain", {0.0, 0.0, 0.0});
-      // Dune::FieldMatrix<adouble,2,2> effectivePrestrain = {{(adouble)Beffvec[0], (adouble)Beffvec[2]}, {(adouble)Beffvec[2],(adouble)Beffvec[1]} };
-      // printmatrix(std::cout, effectivePrestrain, "effective prestrain (Beff): ", "--");
 
+    if (parameterSet.get<bool>("writeVTK", 1))
+    {
+      std::cout << "write VTK..." << std::endl;
 
       /**
-       * @brief Get effective quadratic form Qhom
-       * 
-       *  input-vector: [q_1,q_2,q_3,q_12,q_13,q_23]
-       *  is assembled into a matrix where the off-diagonal entries are divided by 2 (compare with definition in the paper)
-       *            (   q_1    , 0.5*q_12  ,  0.5*q_13 )
-       *     Q =    ( 0.5*q_12 ,   q_2     ,  0.5*q_23 )
-       *            ( 0.5*q_13 , 0.5*q_23  ,    q_3    )
+       * @brief Compute the displacement from the deformation.
+       *        interpolate the identity and substract from the coefficient vector.
        */
-      // Dune::FieldVector<adouble,6> Qhomvec = parameterSet.get<Dune::FieldVector<adouble,6>>("effectiveQuadraticForm", {1.0, 1.0, 1.0, 0.0, 0.0, 0.0});
-      // Dune::FieldMatrix<adouble,3,3> Qhom = {{(adouble)Qhomvec[0], (adouble)0.5*Qhomvec[3], (adouble)0.5*Qhomvec[4]}, 
-      //                                       {(adouble)0.5*Qhomvec[3], (adouble)Qhomvec[1], (adouble)0.5*Qhomvec[5]},
-      //                                       {(adouble)0.5*Qhomvec[4], (adouble)0.5*Qhomvec[5], (adouble)Qhomvec[2]}};
-      // printmatrix(std::cout, Qhom, "effective quadratic form (Qhom): ", "--");
+      VectorSpaceCoefficients identity(deformationBasis.size());
+      IdentityGridEmbedding<double> identityGridEmbedding;
+      interpolate(deformationBasis, identity, identityGridEmbedding);
 
-      ////////////////////////////////////////////////////////////////////////
-      //   Create an assembler for the Discrete Kirchhoff Energy Functional  (using ADOL-C)
-      ////////////////////////////////////////////////////////////////////////
+      // Compute the displacement
+      auto displacement = x_out;
+      displacement -= identity;
+
+      // std::cout << "displacement.size():" << displacement.size() << std::endl;
+      auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, x_out);
+      auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(deformationBasis, displacement);
 
       /**
-       * @brief Setup nonconforming energy
+       * @brief  We need to subsample, because VTK cannot natively display real third-order functions
        */
-      // auto localEnergy_nonconforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergy<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce);
+      int subsamplingRefinement = parameterSet.get<int>("subsamplingRefinement", 2);
+      SubsamplingVTKWriter<GridView> vtkWriter(gridView, Dune::refinementLevels(subsamplingRefinement));
+
       /**
-       * @brief Setup conforming energy (WIP)
+       * @brief Interpolate and VTK-write analytical solution "u" from ParamterFile.
        */
-      // auto localEnergy_conforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyZienkiewicz<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce);
-      // auto localEnergy_conforming = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyZienkiewiczProjected<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce);
+      if (parameterSet.get<bool>("vtkwrite_analyticalSolution", 0))
+      {
+        auto pythonAnalyticalSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("displacement"), pyModule.get("displacementGradient"));
+        vtkWriter.addVertexData((pythonAnalyticalSolution), VTK::FieldInfo("displacement_analytical", VTK::FieldInfo::Type::vector, 3));
+        /**
+         * @brief Get the normal vector field of the surface parametrized
+         *        by the analytical solution.
+         */
+        if (parameterSet.get<bool>("vtkWrite_analyticalSurfaceNormal", 0))
+        {
+          // Get the surface normal function.
+          auto pythonSurfaceNormal = Python::make_function<FieldVector<double,3> >(pyModule.get("surfaceNormal"));
+          vtkWriter.addVertexData(pythonSurfaceNormal, VTK::FieldInfo("surfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
+        }
+      }
+      //-------------------------------------------------------------------------------------    TODO: OUTSOURCE
       /**
-       * @brief Setup energy featuring prestrain
+       * @brief TEST: Compute the discrete normal vector of the surface parametrized
+       *              by the discrete solution.
        */
-      //  auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce, Qhom, effectivePrestrain,  parameterSet);
-      auto localEnergy_prestrain = std::make_shared<GFE::DiscreteKirchhoffBendingEnergyPrestrained<CoefficientBasis, LocalDKFunction, decltype(localForce), ACoefficient>>(localDKFunction, localForce, parameterSet, pyModule);
-
-      // LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_conforming(localEnergy_conforming.get());
-      // LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_nonconforming(localEnergy_nonconforming.get());
-      LocalGeodesicFEADOLCStiffness<CoefficientBasis, Coefficient> localGFEADOLCStiffness_prestrain(localEnergy_prestrain.get());
-      // GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_conforming(coefficientBasis, localGFEADOLCStiffness_conforming);
-      // GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_nonconforming(coefficientBasis, localGFEADOLCStiffness_nonconforming);
-      GeodesicFEAssembler<CoefficientBasis, Coefficient> assembler_prestrain(coefficientBasis, localGFEADOLCStiffness_prestrain);
-
-
-
-
+      // auto surfaceNormalDiscreteCoefficients = computeDiscreteSurfaceNormal(localDKFunctionDouble, normalBasis);
+      //-------------------------------------------------------------------------------------
+      // auto surfaceNormalDiscrete   = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3> >(normalBasis, surfaceNormalDiscreteCoefficients);
+      vtkWriter.addVertexData(displacementFunction, VTK::FieldInfo("displacement", VTK::FieldInfo::Type::vector, 3));
+      // vtkWriter.addVertexData(surfaceNormalDiscrete , VTK::FieldInfo("surfaceNormal_discrete", VTK::FieldInfo::Type::vector, 3));
+      vtkWriter.write(resultFileName);
+    }
 
+    /**
+     * @brief Measure errors.
+     *        1.  Compute the Isometry-Error
+     *        2.  Compute the L2-Error and H1-SemiError as well as the energy difference
+     *            between the discrete deformation u_h and the analytical deformation u .
+     */
+    if (parameterSet.get<bool>("measure_isometryError", 0))
+    {
+      auto isometry_errors = isometryError(localDKFunctionDouble, gridView);
+      if(isometry_errors[1] > Isometry_threshold[experimentNumber-1])        // Isometry-L2-error
+      {
+        std::cerr << std::setprecision(9);
+        std::cerr << "Isometry-L2-error is to large! " << std::endl;
+        std::cerr << "Isometry-L2-error is to large: "<< isometry_errors[1] << " but threshold is " << Isometry_threshold[experimentNumber-1] << std::endl;
+        return 1;
+      }
 
+    }
 
+    if (parameterSet.get<bool>("measure_analyticalError", 0))
+    {
+      auto discretization_errors = measureAnalyticalError(localDKFunctionDouble,gridView,pyModule);
       /**
-       * @brief Create a solver: 
-       *        - Riemannian Newton with Hessian modification 
-       *        - Riemannian Trust-region 
+       * @brief Check Quantities
+       *
        */
-      RiemannianProximalNewtonSolver<CoefficientBasis, Coefficient> RNHMsolver;
-      RiemannianTrustRegionSolver<CoefficientBasis, Coefficient> RTRsolver;
-
-
-      std::string Solver_name = parameterSet.get<std::string>("Solver", "RNHM");
-      double numerical_energy; //final discrete energy
-
-      if(Solver_name == "RNHM")
+      // L2 - Discretization error
+      if(discretization_errors[0] > L2_threshold[experimentNumber-1])
       {
-
-        RNHMsolver.setup(*grid,
-              &assembler_prestrain,
-              isometryCoefficients,
-              dirichletNodes,
-              parameterSet);
-
-        RNHMsolver.solve();
-        isometryCoefficients = RNHMsolver.getSol();
-        numerical_energy = RNHMsolver.getStatistics().finalEnergy;
-      } else if (Solver_name =="RiemannianTR")
+        std::cerr << std::setprecision(9);
+        std::cerr << "L2-error is to large: "<<discretization_errors[0] << " but threshold is " << L2_threshold[experimentNumber-1] << std::endl;
+        return 1;
+      }
+      // H1(semi) - Discretization error
+      if(discretization_errors[1] > H1_threshold[experimentNumber-1])
       {
-        std::cout << "Using Riemannian Trust-region method for energy minimization." << std::endl;
-        RTRsolver.setup(*grid,
-                &assembler_prestrain,
-                isometryCoefficients,
-                dirichletNodes,
-                parameterSet);
-        RTRsolver.solve();
-        isometryCoefficients = RTRsolver.getSol();
-        numerical_energy = RTRsolver.getStatistics().finalEnergy;
-      } else 
-          DUNE_THROW(Dune::Exception, "Unknown Solver type for bending isometries.");
-
-
-
-      // Convert coefficient data structure from 'IsometryCoefficients' to 'VectorSpaceCoefficients'
-      VectorSpaceCoefficients x_out(deformationBasis.size());
-      isometryToVectorCoefficientMap(deformationBasis,coefficientBasis,x_out,isometryCoefficients);
-
-      ////////////////////////////////
-      //   Output result
-      ////////////////////////////////
-      std::string baseNameDefault = "bending-isometries-";
-      std::string baseName = parameterSet.get("baseName", baseNameDefault);
-      std::string resultFileName =  parameterSet.get("resultPath", "")
-                                    + "/" + baseName
-                                    + "_level" + std::to_string(parameterSet.get<int>("macroGridLevel"));
-
-      if (parameterSet.get<bool>("conforming_DiscreteJacobian", 1))
-        resultFileName = resultFileName + "_C";
-      else 
-        resultFileName = resultFileName + "_NC";
-
-
-      // Create a deformation function but this time with double-types.
-      using LocalDKFunctionD = GFE::LocalDiscreteKirchhoffBendingIsometry<DeformationBasis, CoefficientBasis, IsometryCoefficients>;
-      LocalDKFunctionD localDKFunctionDouble(deformationBasis, coefficientBasis, isometryCoefficients);
-
-
-
-
-
-  if (parameterSet.get<bool>("writeVTK", 1))
-  {
-    std::cout << "write VTK..." << std::endl;
-
-    /**
-     * @brief Compute the displacement from the deformation.
-     *        interpolate the identity and substract from the coefficient vector.
-     */
-    VectorSpaceCoefficients identity(deformationBasis.size());
-    IdentityGridEmbedding<double> identityGridEmbedding;
-    interpolate(deformationBasis, identity, identityGridEmbedding);
-
-    // auto identity_tmp = identity;
-
-    // Compute the displacement
-    auto displacement = x_out;
-    displacement -= identity;
-
-    // std::cout << "displacement.size():" << displacement.size() << std::endl;
-    auto deformationFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, x_out);
-    auto displacementFunction = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, displacement);
-
-    /**
-     * @brief  We need to subsample, because VTK cannot natively display real third-order functions
-     */
-    int subsamplingRefinement = parameterSet.get<int>("subsamplingRefinement", 2);
-    SubsamplingVTKWriter<GridView> vtkWriter(gridView, Dune::refinementLevels(subsamplingRefinement));
-    // SubsamplingVTKWriter<GridView> vtkWriter(gridView, Dune::refinementLevels(2));
-
-
-
-    /**
-     * @brief Basis used to represent normal vector fields
-     * 
-     */
-    auto normalBasis = makeBasis(gridView,
-                      power<3>(
-                      lagrange<1>(),
-                      flatLexicographic()));
-    // auto normalBasis = makeBasis(gridView,
-    //                               power<3>(
-    //                               lagrange<1>(),
-    //                               blockedInterleaved()));
-
-
-    // TEST Compute 
-
-
-    // auto normalLambda = [deformationFunction](const FieldVector<double,2>& x)
-    // {
-    //   // deformationfunction.derivative() ... //needs binding?!
-    
-
-    // }
-
-    
-
+        std::cerr << std::setprecision(9);
+        std::cerr << "H1-error is to large: "<< discretization_errors[1] << " but threshold is " << H1_threshold[experimentNumber-1] << std::endl;
+        return 1;
+      }
+    }
 
     /**
-     * @brief Interpolate and VTK-write analytical solution "u" from ParamterFile.
+     * @brief Write Energy values.
+     *
      */
-    if (parameterSet.get<bool>("vtkwrite_analyticalSolution", 0))
+    // auto numerical_energy = solver.getStatistics().finalEnergy;
+    std::cout << "(Final) Energy of discrete solution: " << numerical_energy<< std::endl;
+    if (parameterSet.get<bool>("compare_EnergyValues", 0))
     {
-      // auto pythonAnalyticalSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("u"), pyModule.get("du"));
-      auto pythonAnalyticalSolution = Python::makeDifferentiableFunction<FieldVector<double,3>(FieldVector<double,2>)>(pyModule.get("displacement"), pyModule.get("displacementGradient"));
-
-
-      // deprecated: interpolate ...
-      // VectorSpaceCoefficients y(deformationBasis.size());
-      // interpolate(deformationBasis, y, pythonAnalyticalSolution);
-      // // Compute the displacement
-      // auto displacementAnalytical = y;
-      // // displacementAnalytical -= identity_tmp;
-      // displacementAnalytical -= identity;
-
+      auto analytical_energy = parameterSet.get<double>("analytical_energy");
+      auto energy_difference = analytical_energy - numerical_energy;
+      std::cout << "Analytical energy: " << analytical_energy<< std::endl;
+      std::cout << "Energy difference: " << energy_difference << std::endl;
 
-      // auto pythonIdentity =   Python::make_function<FieldVector<double,3>>(IdentityGridEmbedding<double>::operator())
-
-
-      // auto displacementFunctionAnalytical = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, displacementAnalytical);
-      // auto deformationFunctionAnalytical = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(deformationBasis, y);
-      // vtkWriter.addVertexData(displacementFunctionAnalytical, VTK::FieldInfo("displacement_analytical", VTK::FieldInfo::Type::vector, 3));
-      // vtkWriter.addVertexData(deformationFunctionAnalytical, VTK::FieldInfo("deformation_analytical", VTK::FieldInfo::Type::vector, 3));
-    
-      vtkWriter.addVertexData((pythonAnalyticalSolution), VTK::FieldInfo("displacement_analytical", VTK::FieldInfo::Type::vector, 3));
-      /**
-       * @brief Get the normal vector field of the surface parametrized 
-       *        by the analytical solution.
-       *        - We represent the normal vector in a first order Lagrange-Power basis ('normalBasis').
-       */
-      if (parameterSet.get<bool>("vtkWrite_analyticalSurfaceNormal", 0))
+      if(energy_difference > Energy_threshold[experimentNumber-1] )
       {
-      // Get the surface normal function.
-      auto pythonSurfaceNormal = Python::make_function<FieldVector<double,3>>(pyModule.get("surfaceNormal"));
-
-
-      // deprecated: interpolate ...
-      // std::vector<FieldVector<double,3>> normalVectorCoefficients(normalBasis.size());
-      // Dune::Functions::interpolate(normalBasis, normalVectorCoefficients, pythonSurfaceNormal); 
-      // auto surfaceNormalAnalytical = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(normalBasis, normalVectorCoefficients);
-      // vtkWriter.addVertexData(surfaceNormalAnalytical, VTK::FieldInfo("surfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
-
-      vtkWriter.addVertexData(pythonSurfaceNormal, VTK::FieldInfo("surfaceNormal_analytical", VTK::FieldInfo::Type::vector, 3));
+        std::cerr << std::setprecision(9);
+        std::cerr << "Energy difference is to large:" << energy_difference  << " but threshold is " << Energy_threshold[experimentNumber-1] << std::endl;
+        return 1;
       }
     }
-    //-------------------------------------------------------------------------------------    TODO: OUTSOURCE
-    /**
-     * @brief TEST: Compute the discrete normal vector of the surface parametrized 
-     *              by the discrete solution.
-     */
-     auto surfaceNormalDiscreteCoefficients = computeDiscreteSurfaceNormal(localDKFunctionDouble, normalBasis);
-    //-------------------------------------------------------------------------------------
-
-    // Create DiscreteGlobalBasisFunctions.
-    auto surfaceNormalDiscrete   = Functions::makeDiscreteGlobalBasisFunction<FieldVector<double,3>>(normalBasis, surfaceNormalDiscreteCoefficients);
-    vtkWriter.addVertexData(displacementFunction, VTK::FieldInfo("displacement", VTK::FieldInfo::Type::vector, 3));
-    vtkWriter.addVertexData(surfaceNormalDiscrete , VTK::FieldInfo("surfaceNormal_discrete", VTK::FieldInfo::Type::vector, 3));
-    vtkWriter.write(resultFileName);
-  }
-
-
-        /**
-         * @brief Measure errors.   
-         *        1.  Compute the Isometry-Error
-         *        2.  Compute the L2-Error and H1-SemiError as well as the energy difference 
-         *            between the discrete deformation u_h and the analytical deformation u .
-         */
-        if (parameterSet.get<bool>("measure_isometryError", 0))
-        {
-            auto isometry_errors = isometryError(localDKFunctionDouble, gridView);
-            if(isometry_errors[1] > Isometry_threshold[experimentNumber-1])  // Isometry-L2-error
-            {
-                std::cerr << std::setprecision(9);
-                std::cerr << "Isometry-L2-error is to large! " << std::endl;
-                std::cerr << "Isometry-L2-error is to large: "<< isometry_errors[1] << " but threshold is " << Isometry_threshold[experimentNumber-1] << std::endl;
-                return 1;
-            }
-
-        }
-            
-        if (parameterSet.get<bool>("measure_analyticalError", 0))
-        {
-            auto discretization_errors = measureAnalyticalError(localDKFunctionDouble,gridView,pyModule);
-
-
-            /**
-             * @brief Check Quantities
-             * 
-             */
-            // L2 - Discretization error
-            if(discretization_errors[0] > L2_threshold[experimentNumber-1])
-            {
-                std::cerr << std::setprecision(9);
-                std::cerr << "L2-error is to large: "<<discretization_errors[0] << " but threshold is " << L2_threshold[experimentNumber-1] << std::endl;
-                return 1;
-            }
-            // H1(semi) - Discretization error
-            if(discretization_errors[1] > H1_threshold[experimentNumber-1])
-            {
-                std::cerr << std::setprecision(9);
-                std::cerr << "H1-error is to large: "<< discretization_errors[1] << " but threshold is " << H1_threshold[experimentNumber-1] << std::endl;
-                return 1;
-            }
-        }
-            
-
-
-        /**
-         * @brief Write Energy values.
-         * 
-         */
-        // auto numerical_energy = solver.getStatistics().finalEnergy;
-        std::cout << "(Final) Energy of discrete solution: " << numerical_energy<< std::endl;
-        if (parameterSet.get<bool>("compare_EnergyValues", 0))
-        {
-          auto analytical_energy = parameterSet.get<double>("analytical_energy");
-          auto energy_difference = analytical_energy - numerical_energy;
-          std::cout << "Analytical energy: " << analytical_energy<< std::endl;  
-          std::cout << "Energy difference: " << energy_difference << std::endl;
-
-          if(energy_difference > Energy_threshold[experimentNumber-1] )
-          {
-            std::cerr << std::setprecision(9);
-            std::cerr << "Energy difference is to large:" << energy_difference  << " but threshold is " << Energy_threshold[experimentNumber-1] << std::endl;
-            return 1;
-          }
-        }
-
-      // // Write the corresponding coefficient vector: verbatim in binary, to be completely lossless
-      //   char iFilename[200];
-      //   sprintf(iFilename, (resultFileName + ".data").c_str());
-
-      //   FILE* fpIterate = fopen(iFilename, "wb");
-      //   if (!fpIterate)
-      //       DUNE_THROW(SolverError, "Couldn't open file " << iFilename << " for writing");
-
-      //   for (size_t j=0; j<isometryCoefficients.size(); j++)
-      //       fwrite(&isometryCoefficients[j], sizeof(Coefficient), 1, fpIterate);
-
-      //   fclose(fpIterate);
-
-
-      #if 0
-        // Write the corresponding coefficient vector: verbatim in binary, to be completely lossless
-        typedef BlockVector<typename Coefficient::CoordinateType> EmbeddedVectorType;
-        EmbeddedVectorType xEmbedded(isometryCoefficients.size());
-        for (size_t i = 0; i<isometryCoefficients.size(); i++)
-        {
-          xEmbedded[i] = isometryCoefficients[i].globalCoordinates();
-          std::cout << "isometryCoefficients[i].globalCoordinates():" << isometryCoefficients[i].globalCoordinates() << std::endl;
-
-        }
-        std::ofstream outFile(resultFileName + ".data", std::ios_base::binary);
-        MatrixVector::Generic::writeBinary(outFile, xEmbedded);
-        outFile.close();
-        ///////////////////////////////////////////
-        //  (Option) write Solution(DOF)-vector and vertex coordinates to .txt-File
-        ///////////////////////////////////////////
-        if (parameterSet.get<bool>("writeDOFvector", 0))
-          writeDOFVector(gridView,targetDim, x, "DOFVectorR" + std::to_string(dim) + "_R" + std::to_string(targetDim) + ".txt");
-      #endif
-
-
-
-      std::cout << "TEST - " << experiment << "passed." <<  std::endl;
-      std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
+    std::cout << "TEST - " << experiment << "passed." <<  std::endl;
+    std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl;
   }
 
   std::cout << "Properties-shape-test passed." <<  std::endl;
   return 0;
-  }
\ No newline at end of file
+}
diff --git a/test/readmicrostructuretest.cc b/test/readmicrostructuretest.cc
index 0e728264ed1c943b9e2180e5fe12bedacadd7235..54ede70707107292a4913526de07a9d273355859 100644
--- a/test/readmicrostructuretest.cc
+++ b/test/readmicrostructuretest.cc
@@ -85,7 +85,7 @@ int main(int argc, char *argv[])
   MPIHelper::instance(argc, argv);
 
   Dune::Timer globalTimer;
-  //--- setup Log-File 
+  //--- setup Log-File
   std::fstream log;
 
   std::cout << "Current path is " << std::filesystem::current_path() << '\n';
@@ -94,26 +94,13 @@ int main(int argc, char *argv[])
   std::cout << "dir_path: " << file_path.parent_path() << std::endl;
   std::string dir_path  = file_path.parent_path();
 
-  // if (argc < 3)
-  //     DUNE_THROW(Exception, "Usage: ./Cell-Problem <python path> <python module without extension>");
-
-  // Start Python interpreter
-  // Python::start();
-  // auto pyMain = Python::main();
-  // pyMain.runStream()
-  //     << std::endl << "import math"
-  //     << std::endl << "import sys"
-  //     << std::endl << "sys.path.append('" << argv[1] << "')"  << std::endl;
-  // auto pyModule = pyMain.import(argv[2]);
-
-
   // Relative path/Test version:
   Python::start();
   auto pyMain = Python::main();
   pyMain.runStream()
-      << std::endl << "import math"
-      << std::endl << "import sys"
-      << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
+    << std::endl << "import math"
+    << std::endl << "import sys"
+    << std::endl << "sys.path.append('" << dir_path << "')"  << std::endl;
   auto pyModule = pyMain.import("readmicrostructuretest");
 
   ParameterTree parameterSet;
@@ -135,10 +122,9 @@ int main(int argc, char *argv[])
   FieldVector<double,dim> lower({-1.0/2.0, -1.0/2.0, -1.0/2.0});
   FieldVector<double,dim> upper({1.0/2.0, 1.0/2.0, 1.0/2.0});
 
-  int gridLevel = 3;
-
-  std::array<int, dim> nElements = {(int)std::pow(2,gridLevel) ,(int)std::pow(2,gridLevel) ,(int)std::pow(2,gridLevel)};
-  std::cout << "Number of Grid-Elements in each direction: " << nElements << std::endl;
+  int microGridLevel = parameterSet.get<int>("microGridLevel", 1);
+  std::array<int, dim> nElements = {(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel) ,(int)std::pow(2,microGridLevel)};
+  std::cout << "Number of Grid-Elements in each direction: " << (int)std::pow(2,microGridLevel) << std::endl;
 
   using CellGridType = YaspGrid<dim, EquidistantOffsetCoordinates<double, dim> >;
   CellGridType grid_CE(lower,upper,nElements);
@@ -175,9 +161,9 @@ int main(int argc, char *argv[])
 
   /**
    * @brief Create instance of class
-   *        This needs to be a 'Python::Reference' and not 'Python::Callable' 
+   *        This needs to be a 'Python::Reference' and not 'Python::Callable'
    *        since Callable only works if __call__(self,x) is implemented in the python module!!!
-   * 
+   *
    */
   Python::Reference microstructure = MicrostructureClass(); //Setup a constant microstructure
 
@@ -200,7 +186,7 @@ int main(int argc, char *argv[])
   std::cout << "microstructure phaseType:" << phaseType << std::endl;
 
   Dune::FieldVector<double,2> materialParameters(0);
-  microstructure.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,2>>(materialParameters);
+  microstructure.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,2> >(materialParameters);
   std::cout << "Lame-Parameters (mu,lambda): (" << materialParameters[0] << "," << materialParameters[1] << ") " << std::endl;
 
 
@@ -219,24 +205,24 @@ int main(int argc, char *argv[])
   std::cout << "orthotropic material with material rotation axis: " << axis << std::endl;
   std::cout << "orthotropic material with material rotation angle: " << angle << std::endl;
 
-  
 
-  microstructure.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,9>>(materialParameters_orthotropic);
+
+  microstructure.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldVector<double,9> >(materialParameters_orthotropic);
   printvector(std::cout, materialParameters_orthotropic, "materialParameters_orthotropic: ", "--");
 
 
   // anisotropic material setup
-  Dune::FieldMatrix<double,6,6> materialParameters_anisotropic(0); 
+  Dune::FieldMatrix<double,6,6> materialParameters_anisotropic(0);
   phase = 4;
   microstructure.get("phase" + std::to_string(phase) + "_type").toC<std::string>(phaseType);
   std::cout << "microstructure phaseType:" << phaseType << std::endl;
-  microstructure.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldMatrix<double,6,6>>(materialParameters_anisotropic);
+  microstructure.get("materialParameters_phase" + std::to_string(phase)).toC<Dune::FieldMatrix<double,6,6> >(materialParameters_anisotropic);
   printmatrix(std::cout, materialParameters_anisotropic, "materialParameters_anisotropic: ", "--");
 
 
 
-  //Get prestrain of phase 
-  auto prestrain1 = Python::make_function<Dune::FieldMatrix<double,3,3>>(Python::Callable(microstructure.get("prestrain_phase" + std::to_string(phase))));
+  //Get prestrain of phase
+  auto prestrain1 = Python::make_function<Dune::FieldMatrix<double,3,3> >(Python::Callable(microstructure.get("prestrain_phase" + std::to_string(phase))));
   auto localPrestrain1 = localFunction(Dune::Functions::makeGridViewFunction(prestrain1, gridView_CE));
 
 
@@ -275,7 +261,7 @@ int main(int argc, char *argv[])
   // auto correctorComputer = CorrectorComputer(Basis_CE, material, log, parameterSet);
   // correctorComputer.assemble();
   // correctorComputer.solve();
-  std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType>>(Basis_CE, material, parameterSet);
+  std::shared_ptr<CorrectorComputer<decltype(Basis_CE),MaterialType> > correctorComputer = std::make_shared<CorrectorComputer<decltype(Basis_CE),MaterialType> >(Basis_CE, material, parameterSet);
   correctorComputer->assemble();
   correctorComputer->solve();
 
diff --git a/test/readmicrostructuretest.py b/test/readmicrostructuretest.py
index 68899911c22b20570598a0e8b5b8087a6d114c26..0b6295b80826ec019ae5b9cbb2a128cccae1da3f 100644
--- a/test/readmicrostructuretest.py
+++ b/test/readmicrostructuretest.py
@@ -74,35 +74,45 @@ class Microstructure:
 
 
 
+# parameterSet.printMicroOutput = 1 # Flag that allows to supress the output of the micro-problem.
+
+#############################################
+#  Grid parameters
+#############################################
+# parameterSet.microGridLevel = 2
+
 #############################################
 #  Assembly options
 #############################################
-parameterSet.set_IntegralZero = 1            #(default = false)
-parameterSet.set_oneBasisFunction_Zero = 1   #(default = false)
-#parameterSet.arbitraryLocalIndex = 7            #(default = 0)
-#parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.set_IntegralZero = 1                 #(default = false, This overwrites the option 'set_oneBasisFunction_Zero')
+parameterSet.set_oneBasisFunction_Zero = 1        #(default = false)
+# parameterSet.arbitraryLocalIndex = 7            #(default = 0)
+# parameterSet.arbitraryElementNumber = 3         #(default = 0)
+parameterSet.cacheElementMatrices = 1 # Use caching of element matrices
 
 #############################################
-#  Solver Options, Type: #1: CG - SOLVER , #2: GMRES - SOLVER, #3: QR - SOLVER (default), #4: UMFPACK - SOLVER
+#  Solver Options, Type: #1: CHOLMOD (default) | #2: UMFPACK | #3: GMRES | #4 CG | #5 QR: 
+# (maybe switch to an iterative solver (e.g. GMRES) if direct solver (CHOLMOD/UMFPACK) runs out of memory for too fine grids)
 #############################################
-parameterSet.Solvertype = 3        # recommended to use iterative solver (e.g GMRES) for finer grid-levels
-parameterSet.Solver_verbosity = 0  #(default = 2)  degree of information for solver output
+parameterSet.Solvertype = 1
+parameterSet.Solver_verbosity = 0  # (default = 2)  degree of information for solver output
 
 #############################################
 #  Write/Output options      #(default=false)
 #############################################
 # --- (Optional output) write Material / prestrain / Corrector functions to .vtk-Files:
 parameterSet.write_materialFunctions = 0   # VTK indicator function for material/prestrain definition
-
-# --- (Additional debug output)
-parameterSet.print_debug = 0  #(default=false)
-
+#parameterSet.write_prestrainFunctions = 1  # VTK norm of B (currently not implemented)
+parameterSet.MaterialSubsamplingRefinement= 2
 # --- Write Correctos to VTK-File:  
-parameterSet.write_VTK = 0
-
-# --- Use caching of element matrices:  
-parameterSet.cacheElementMatrices = 1
-
-# The grid can be refined several times for a higher resolution in the VTK-file.
-parameterSet.subsamplingRefinement = 0
+parameterSet.writeCorrectorsVTK = 0
+# --- write effective quantities (Qhom.Beff) to .txt-files
+parameterSet.write_EffectiveQuantitiesToTxt = False
 
+#############################################
+#  Debug options
+#############################################
+parameterSet.print_debug = 0  #(default=false)
+parameterSet.print_conditionNumber = 0
+parameterSet.print_corrector_matrices = 0
+parameterSet.write_checkOrthogonality = 0   #Check orthogonality (75) from the paper.
diff --git a/testsuite/energylandscape.mplstyle b/testsuite/energylandscape.mplstyle
new file mode 100644
index 0000000000000000000000000000000000000000..9d9b7d454224b815c1c283d2733cf1fa66349558
--- /dev/null
+++ b/testsuite/energylandscape.mplstyle
@@ -0,0 +1,62 @@
+text.usetex :  True
+#text.latex.preamble = r'\usepackage{amsfonts}' # Makes Use of \mathbb possible.
+
+
+font.family : "serif"
+font.size : 9
+
+
+xtick.bottom :  True
+xtick.major.size :  2
+xtick.minor.size : 1.5
+xtick.major.width : 0.75
+xtick.labelsize :  9
+xtick.major.pad : 1
+
+
+ytick.left : True
+ytick.major.size : 1
+ytick.minor.size : 1.5
+ytick.major.width : 0.2
+ytick.labelsize : 9
+ytick.major.pad : 1
+ytick.labelcolor : white
+
+#axes.tick_params.grid_alpha : 0.1
+
+
+axes.titlesize : 9
+axes.titlepad : 1
+axes.labelsize : 9
+axes.labelpad : 0.5
+axes.autolimit_mode : round_numbers
+
+
+axes.grid.axis : y
+
+
+#Adjust Legend:
+legend.frameon : True       # Use frame for legend
+legend.framealpha : 0.5
+legend.fontsize : 9         # fontsize of legend
+#Adjust grid:
+axes.grid : True 
+#axes.grid : False
+
+#axes.Axis.grid : True
+
+
+
+#axes.axisbelow : False
+
+
+
+
+grid.linewidth : 0.7
+grid.alpha : 1.0
+
+#grid.color : 'lightgray' 
+grid.color : 'black' 
+
+
+
diff --git a/testsuite/macro-problem-testsuite.py b/testsuite/macro-problem-testsuite.py
index 52e1dd45335ad589d9e19ffe6f00fc5318454745..9e3ef8de32880fca72b286dced5603d6c9724695 100644
--- a/testsuite/macro-problem-testsuite.py
+++ b/testsuite/macro-problem-testsuite.py
@@ -4,356 +4,275 @@ import sys
 import re
 import numpy as np
 from prettytable import PrettyTable
-# import latextable
-# from texttable import Texttable
 from tabulate import tabulate
-# import time
 import importlib
-# import fileinput
-
-
-####################################################################
-# Usage:
-#
-#   python3 macro-problem-testsuite.py  CONTAINER_PATH_Flag  <slurm_array_task_id>
-#
-#   e.g. python3 /home/klaus/Desktop/Dune_master/dune-gfe/bending-isometries-testsuite/bending-isometries-testsuite.py 0 2
-#
-####################################################################
-
+import shutil
+from microstructure_PythonAddons import*
+# import time
 
-def SetParameterMaterialFunction(inputFunction, parameterName, parameterValue):
-    with open(inputFunction+'.py', 'r') as file:
-        filedata = file.read()
-        filedata = re.sub('(?m)'+str(parameterName)+'\s?=.*',str(parameterName)+' = '+str(parameterValue),filedata)
-        f = open(inputFunction+'.py','w')
-        f.write(filedata)
-        f.close()
-  
+"""
+     Usage:
 
-# parameterArray=np.array([ ["rho", np.array([0, 1,2])], ["parameterSet.maxProximalNewtonSteps", [0, 10, 100]] ], dtype=object)
+       python3 macro-problem-testsuite.py  CONTAINER_PATH_Flag  <slurm_array_task_id>
 
-# Python list version:
-# parameterArray=[ ["rho", [0, 1,2]], ["parameterSet.maxProximalNewtonSteps", [0, 10, 100]] ]
+       For example: 
+       python3 /home/klaus/Desktop/Dune_microsim/dune-microstructure/testsuite/macro-problem-testsuite 0 2
 
-# parameterArray=[ ["rho", [0,1,2,5]]]
+       0: running on local machine (as opposed to a Container 1)
+       2: run the second experiment in the 'scenarios' list.
+"""
 
-# ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-compute_BendingIsometry = True
+solve_MacroProblem = True
 create_outputTable = False
 
-
 # 1. Experiment   2. ExperimentPathExtension   3. MacroGridLevels, 4. Executable 5.(additional) parameterArray: [["ParameterName", ParameterValue], ...]
 scenarios = [
-                    #  ["buckling_experiment" ,              "/buckling_experiment",  [3,3], "/macro-problem" , [["rho", [0,1,2,3,4,5]]] ],   
-                    ["cylindrical_2variableBC" ,          "/macro-problem/variableBC",           [3,3], "/macro-problem" , [["delta", [0.75]]] ],   
-                    ["cylindrical_2variableBC" ,          "/macro-problem/variableBC",           [3,3], "/macro-problem" , [["delta", [0.0]]] ],   
-                    ["cylindrical_2variableBC_wood" ,     "/macro-problem/variableBC",           [3,3], "/macro-problem" , [["delta", [0.1,0.25,0.5,1.0,1.5,2.0]]] ],   
-                    ["buckling_experiment" ,              "/macro-problem/buckling_experiment",  [3,3], "/macro-problem" , [["rho", [1.0]]] ],   
-                    ["buckling_experiment_Top" ,          "/macro-problem/buckling_experiment",  [3,3], "/macro-problem" , [["rho", [3,4,5]]] ],   
-                    ["buckling_experiment_xAlignedTop" ,  "/macro-problem/buckling_experiment",  [3,3], "/macro-problem" , [["rho", [5]]] ],   
-                    ["buckling_experiment_xAlignedLow" ,  "/macro-problem/buckling_experiment",  [3,3], "/macro-problem" , [["rho", [5]]] ],   
-                    ["self-folding-box",                  "/macro-problem/self-folding-box",     [5,5], "/macro-problem" , [["rho", [500]]]            ],
-                    ["twisted-valley",                    "/macro-problem/Rumpf-Experiments",  [2,2], "/macro-problem" , [["test", [1.0]]]            ],
-                    ["diagonal-trusses",                  "/macro-problem/Rumpf-Experiments",  [2,2], "/macro-problem" ,  [["test", [1.0]]]            ],
-                    ["cylindrical_1",                                         "",  [0,0], "/micro-problem"  , [["mu_phase1", [90,100,110]]] ],
-                    ["parametrized_laminate",                                 "",  [0,0], "/micro-problem"  ,         []            ],
+            ["buckling_experiment" ,              "/macro-problem/buckling_experiment",  [3,4,5],            [["rho", [5.0]]]                         ], 
+            ["cylindrical_2variableBC" ,          "/macro-problem/variableBC",           [2],                  [["delta", [1.5]]]  ],   
+            ["buckling_experiment" ,              "/macro-problem/buckling_experiment",  [3,4,5,6],            []                         ],   
+            ["cylindrical_2variableBC" ,          "/macro-problem/variableBC",           [2],                  [["delta", [0.25,0.5,1.0,1.5,2.0]]]  ],             
+            ["fibreRotation",                     "/macro-problem",                      [1,2,3],              []                        ],
+            ["MVM_infinitynorm",                  "/macro-problem",                      [3],                  []                        ],
+            ["MVM_onenorm",                       "/macro-problem",                      [2],                  []                        ],
+            ["MVM_infinitynorm",                  "/macro-problem",                      [2],                  []                        ],
+            ["validation",                        "/macro-problem/validation",           list(range(1,13,1)),  []                                       ],
+            ["buckling_experiment_rho_0" ,        "/macro-problem/buckling_experiment",  list(range(3,7,1)),   []                         ],   
+            ["buckling_experiment_rho_1" ,        "/macro-problem/buckling_experiment",  list(range(3,7,1)),   []                         ],   
+            ["cylindrical_2variableBC_delta025" , "/macro-problem/variableBC",           [2],                  [] ],              #4
+            ["cylindrical_2variableBC_delta20" , "/macro-problem/variableBC",            [2],                  [] ],              #4
+            ["buckling_experiment" ,              "/macro-problem/buckling_experiment",  [1,3],                [["rho", [0.0]]]                         ],   
+            ["buckling_experiment" ,              "/macro-problem/buckling_experiment",  list(range(3,7,1)),   [["rho", [1.0]]]                         ],   
+            ["buckling_experiment" ,              "/macro-problem/buckling_experiment",  [3],                  [["rho", [0.805,0.81,0.8105]]]                         ],      #3
+            ["cylindrical_2variableBC" ,          "/macro-problem/variableBC",           [3],                  [["delta", [1.3,1.35,1.4,1.45]]]  ],  
+            ["cylindrical_2variableBC" ,          "/macro-problem/variableBC",           [3],                  [["delta", [0.1,0.25,0.5,0.75,1.0,1.5,2.0]]]  ],              #4
+            ["buckling_experiment" ,              "/macro-problem/buckling_experiment",  [3],                  [["rho", [0.1,0.25,0.5,0.75,1.0,1.5]]]                         ],   
+            ["cylindrical_2variableBC" ,          "/macro-problem/variableBC",           [3],                  [["delta", [2.0]]]  ],  
+            ["cylindrical_2variableBC" ,          "/macro-problem/variableBC",           [3],                  [["delta", [0.25]]]                       ],   
+            ["cylindrical_2variableBC_wood" ,     "/macro-problem/variableBC",           [3],                  [["delta", [0.1,0.25,0.5,1.0,1.5,2.0]]]  ],   
+            ["buckling_experiment_Top" ,          "/macro-problem/buckling_experiment",  [3],                  [["rho", [3,4,5]]]                       ],   
+            ["buckling_experiment_xAlignedTop" ,  "/macro-problem/buckling_experiment",  [3],                  [["rho", [5]]]                           ],   
+            ["buckling_experiment_xAlignedLow" ,  "/macro-problem/buckling_experiment",  [3],                  [["rho", [5]]]                           ],   
+            ["self-folding-box",                  "/macro-problem/self-folding-box",     [5],                  [["rho", [500]]]                         ],
+            ["twisted-valley",                    "/macro-problem/Rumpf-Experiments",    [2],                  [["test", [1.0]]]                        ],
+            ["diagonal-trusses",                  "/macro-problem/Rumpf-Experiments",    [2],                  [["test", [1.0]]]                        ]
              ]
 
 
-print('sys.argv[0]', sys.argv[0])
-print('sys.argv[1]', sys.argv[1])
-print('sys.argv[2]', sys.argv[2])
-
+# print('sys.argv[0]', sys.argv[0])
+# print('sys.argv[1]', sys.argv[1])
+# print('sys.argv[2]', sys.argv[2])
+# print('list(range(3,7,1)):',list(range(3,7,1)))
 
 CONTAINER = int(sys.argv[1])
 slurm_array_task_id = int(sys.argv[2])
-
 parameterFile  = scenarios[slurm_array_task_id][0]
 pathExtension  = scenarios[slurm_array_task_id][1]
 gridLevels     = scenarios[slurm_array_task_id][2]
-executable     = scenarios[slurm_array_task_id][3]
-parameterArray = scenarios[slurm_array_task_id][4]
-
-#Test 
-# parameterArray = [[" -rho ", [4.0]]] 
-
-
+executable     = "/macro-problem" 
+# executable     = scenarios[slurm_array_task_id][3]
+parameterArray = scenarios[slurm_array_task_id][3]
+#Get current working directory:
+cwd = os.getcwd()
+modulePath = os.path.abspath(os.path.join(cwd, os.pardir))
 print('pathExtension: ', pathExtension)
+print("Parent Directory is: ", modulePath)
 
+#gridLevels = [1]
 
-
-
-
-# conforming_DiscreteJacobian = scenarios[slurm_array_task_id][1]
-# INSTRUMENTED = scenarios[slurm_array_task_id][3]
-
-
-#Todo conforming option.
+#--- (Todo) conforming/Instrumented option.
 conformity = ""
 INSTRUMENTED = 0
 conforming_DiscreteJacobian = 0
-
 # if conforming_DiscreteJacobian:
 #     conformity = "_conforming"
 # else:
 #     conformity = "_nonconforming"
 
 
-#Get current working directory:
-cwd = os.getcwd()
-
-modulePath = os.path.abspath(os.path.join(cwd, os.pardir))
-print("Parent Directory is: ", modulePath)
-
-
-# for experiment in scenarios: ..
-
 
-#Path for parameterFile
+"""
+    Define relevant paths.
+"""
 if CONTAINER:
-
+    #--- Container version
     # Barnard_Workspace = "/data/horse/ws/s7603593-microstructure/"
 
-    #--- Barnard/CONTAINER version
+    
     pythonPath = "/dune/dune-microstructure/experiment" + pathExtension
-    # resultPath = "outputs" + "_" + scenarios[slurm_array_task_id][0]
-    # resultPath = Barnard_Workspace + "outputs" + "_" + scenarios[slurm_array_task_id][0]
-
 
+    # resultPath = Barnard_Workspace + "outputs" + "_" + scenarios[slurm_array_task_id][0]
     resultPath = "outputs" + "_" + scenarios[slurm_array_task_id][0]
-
-
     instrumentedPath =  resultPath + "/instrumented" 
     executablePath = "/dune/dune-microstructure/build-cmake/src"
-    # try:
-    #   os.mkdir(resultPath)
-    #   os.mkdir(instrumentedPath)
-    # except OSError as error:
-    #   print(error)
-    
-    # resultPath = "/" + resultPath
-    # instrumentedPath = "/"
+
+    # Path used for copying experiment parameter files (for safe modification)
+    new_ParameterPath = "tmp_experiments"
+    original_ParameterPath = pythonPath + "/" + parameterFile +'.py'
+
 else :
     #--- Local version
-    # pythonPath = "/home/klaus/Desktop/Dune_bendIso/dune-microstructure/experiment" + pathExtension
-    # resultPath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/outputs' + "_" + scenarios[slurm_array_task_id][0]
-    # instrumentedPath = resultPath + "/instrumented"
-    # executablePath = '/home/klaus/Desktop/Dune_bendIso/dune-microstructure/build-cmake/src'
     pythonPath =  modulePath + "/experiment" + pathExtension
     resultPath = modulePath + "/outputs" + "_" + scenarios[slurm_array_task_id][0]
     instrumentedPath = resultPath + "/instrumented"
     executablePath = modulePath + '/build-cmake/src'
 
-    # try:
-    #     os.mkdir(resultPath)
-    #     os.mkdir(instrumentedPath)
-    # except OSError as error:
-    #     print(error)
-
-try:
-    os.mkdir(resultPath)
-    os.mkdir(instrumentedPath)
-except OSError as error:
-    print(error)
-    
+    # Path used for copying experiment parameter files (for safe modification)
+    # tmp_ExpPath = "/home/klaus"
+    new_ParameterPath = "/home/klaus"
+    original_ParameterPath = pythonPath + "/" + parameterFile +'.py'
+
+# Create output directories if non existent
+os.makedirs(resultPath, exist_ok=True)
+os.makedirs(instrumentedPath, exist_ok=True)
+
+executable = executablePath + executable
+path = os.getcwd()
+# print("Path: ", path)
+# print('new_ParameterPath : ', new_ParameterPath)
+# print('pythonPath: ', pythonPath)
 
-print('pythonPath: ', pythonPath)
+"""
+    Create a copy of the parameter-file.
+"""
+CreateParameterCopy(original_ParameterPath,new_ParameterPath,parameterFile)
 
 
-### Access ParameterFile variables.
+
+"""
+    Access ParameterFile variables.
+"""
 sys.path.insert(0, pythonPath)
 __import__(parameterFile, fromlist=['parameterSet'])
 imported_module = importlib.import_module(parameterFile)
 parameterSet = getattr(imported_module, "parameterSet")
 
-
-
-#--- Set update grid path if unstructured/GMSH-grid is used.
+# Check if unstructured grid is used & Update grid-path.
 if( parameterSet.structuredGrid == 'false'):
-    print('Update gridPath')
-    SetParameterMaterialFunction(pythonPath + "/" + scenarios[slurm_array_task_id][0], 'gridPath' , "'" + str(pythonPath) + "'")
+    print('Update unstructured grid-Path.')
+    ModifyParameterFile(os.path.join(new_ParameterPath, parameterFile), 'gridPath' , "'" + str(pythonPath) + "'")
 
 
-# dim = parameterSet.dim
-# maxSolverSteps = parameterSet.maxProximalNewtonSteps
 
+# pathArray = [resultPath,instrumentedPath,new_ParameterPath,pythonPath]
 
-# executable = executablePath + "/macro-problem"
-executable = executablePath + executable
+"""
+    Solve the macroscopic minimization problem 
+    for the given parameters.
+"""
+if solve_MacroProblem:
+    SolveMacroProblem(executable,parameterFile,gridLevels,parameterArray,conforming_DiscreteJacobian,resultPath,instrumentedPath,new_ParameterPath,pythonPath,INSTRUMENTED)
 
 
 
-path = os.getcwd()
-print("Path: ", path)
-############################################
-
-print('parameterArray:', parameterArray)
-print('len(parameterArray):',           len(parameterArray))
-print('len(parameterArray[0][1]): ', len(parameterArray[0][1]))
-print('Number of different additional parameters:', len(parameterArray))
-# print('len(parameterArray)[1]:',        len(parameterArray[1]))
-# print('len(parameterArray[0][1]):',     len(parameterArray[0][1]))
-# print('parameterArray[0][1][1]:',       parameterArray[0][1][1])
-
-# print('np.shape(parameterArray)[1]:', np.shape(parameterArray)[1])
-# print('np.shape(parameterArray[0][1]):', np.shape(parameterArray[0][1]))
-# print('np.shape(parameterArray[0][1])[1]:', np.shape(parameterArray[0][1])[1])
-
-
-
-# if len(parameterArray) == 0:
-#     nParams = 1
-# else: 
-#     nParams = len(parameterArray)
-
-    # if len(parameterArray) == 0:
-    #     paramValues = 1
-    # else: 
-    #     paramValues = len(parameterArray[i][1])
-
-# ------ Loops through Parameters for Material Function -----------
-# for i in range(0, np.shape(parameterArray)[1]):
-#     for v in range(0,np.shape(parameterArray[i][1])[1]):
-for i in range(0, len(parameterArray)):
-    for v in range(0,len(parameterArray[i][1])):
-        print("------------------")
-        print("New Loop")
-        print("------------------")
-        print('i:', i)
-        print('v:', v)
-        print('len(parameterArray[i][1]):', len(parameterArray[i][1]))
-        # print('parameterArray[i][v]:', parameterArray[i][v])
-
-        print('parameterName:'  , parameterArray[i][0])
-        print('parameterValue: ', parameterArray[i][1][v])
-        # print('np.shape(parameterArray)[1]:', np.shape(parameterArray)[1])
-        # print('np.shape(parameterArray[i][1]):', np.shape(parameterArray[i][1]))
-        # print('np.shape(parameterArray[i][1])[1]:', np.shape(parameterArray[i][1])[1])
-        parameterName =  parameterArray[i][0]
-        parameterValue = parameterArray[i][1][v]
-
-
-        
-
-        ## Alternative version: actually changing the parset file..
-        # Change Parameters:
-        print('...change input parameter:' , parameterName)
-        SetParameterMaterialFunction(pythonPath + "/" + scenarios[slurm_array_task_id][0], parameterName , parameterValue)
-
-
-
-        baseName = scenarios[slurm_array_task_id][0] + "_" + parameterArray[i][0] + str(parameterArray[i][1][v])
-
-        #--- Compute discrete bending isometries
-        if compute_BendingIsometry:
-            processList = []
-            for macroGridLevel in range(gridLevels[0],gridLevels[1]+1):
-                # if conforming_DiscreteJacobian:
-                #     conformity = "_conforming"
-                # else:
-                #     conformity = "_nonconforming"
-
-                # LOGFILE = resultPath + "/" + parameterFile + conformity + "_macroGridLevel" + str(macroGridLevel) + parameterName  + ".log"
-                LOGFILE = resultPath + "/" + parameterFile  + "_macroGridLevel" + str(macroGridLevel) + "_" + parameterName + "_" + str(parameterValue) + ".log"
-
-                print('LOGFILE:', LOGFILE)
-                print('executable:', executable)
-                print('parameterFile:', parameterFile)
-                print('resultPath:', resultPath)
-
-                # testArray = [ " -rho " + str(8.0), " -beta " + str(0.10) ]
-
-                # start_time = time.time()
-                p = subprocess.Popen(executable + " " + pythonPath + " " + parameterFile
-                                                + " -macroGridLevel " + str(macroGridLevel)
-                                                + " -resultPath " + str(resultPath)
-                                                + " -baseName " + str(baseName)
-                                                + " -instrumentedPath " + str(instrumentedPath)
-                                                + " -conforming_DiscreteJacobian " + str(conforming_DiscreteJacobian)
-                                                + " -instrumented " + str(INSTRUMENTED)
-                                                # + " -" + parameterName + " " + str(parameterValue)
-                                                + " | tee " + LOGFILE, shell=True)
-
-                p.wait() # wait
-                # print("--- %s seconds ---" % (time.time() - start_time))
-                print('------FINISHED PROGRAM on macroGridLevel:' + str(macroGridLevel))
-                processList.append(p)
-
-                # Wait for all simulation subprocesses before proceeding to the error measurement step
-                exit_codes = [p.wait() for p in processList]
-
-
-# ------------  Create Output Table  -----------------------------------------------------------------------------
+
+"""
+    Create Table with computational results.
+"""
 if create_outputTable:
-    #Setup Output-Table:
-    x = PrettyTable()
-    constraintError = 0.0
-
-    x.title = parameterFile
-    x.field_names = ["r", "#Triang/#DOF", "#Steps", "Energy difference", "discrete energy", "L2-Error" , "H1-Error", "L2-Isometry-Error", "wall-time" ]
-    x.align["k"] = "l" # Left align
-    x.padding_width = 1 # One space between column edges and contents (default)
-
-    rows = []
-    rows.append(["r", "#Triang/#DOF", "#Steps",r"$\lvert \cI(u) - \cI^h(u_h) \rvert$", "$\cI^h(u_h)$", r"$\lVert u - u_h_{L^2}\rVert_0$" , "wall-time" ])
-
-    for macroGridLevel in range(gridLevels[0],gridLevels[1]+1):
-        
-        LOGFILE = resultPath + "/" + parameterFile + conformity + "_macroGridLevel" + str(macroGridLevel) + ".log"
-        # Read Energy Values:
-        with open(LOGFILE, 'r') as file:
-            output  = file.read()
-
-
-        tmp_energyDiff = re.findall(r'(?m)Energy difference: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
-        tmp_energyAnalytical = re.findall(r'(?m)Analytical energy: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
-        tmp_energyDiscrete = re.findall(r'(?m)Energy of discrete solution: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
-        tmp_step = re.findall(r'(?m)Step Number: (\d+)',output)
-        tmp_reg = re.findall(r'(?m)regularization parameter: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)' ,output)
-        tmp_dofs = re.findall(r'(?m)Degrees of Freedom: (\d+)',output)
-        tmp_time = re.findall(r'(?m)Total time elapsed: (-?\d+\.?\d+\d?)',output)
-        tmp_isoErrorL2 = re.findall(r'(?m)L2-Isometry-error: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
-        tmp_isoErrorL1 = re.findall(r'(?m)L1-Isometry-error: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
-        tmp_L2Error = re.findall(r'(?m)L2-error: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
-        tmp_H1Error = re.findall(r'(?m)H1-error: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
-        tmp_elements = re.findall(r'(?m)elements: (\d+)',output)
-
-        # print('tmp_step:',tmp_step)
-        print('tmp_step last:', int(tmp_step[-1]))
-        print('tmp_dofs:',tmp_dofs)
-        print('tmp_dofs last:', int(tmp_dofs[-1]))
-        # print('type tmp_energy:', type(tmp_energy))
-        print('tmp_energyDiscrete:', tmp_energyDiscrete)
-        print('tmp_energyDiff:', tmp_energyDiff)
-        print('tmp_energyAnalytical:', tmp_energyAnalytical)
-        # print('tmp_energy last:', tmp_energy[-1])
-        print('tmp_time:', tmp_time)
-        print('tmp_isoErrorL2 :', tmp_isoErrorL2 )
-        print('tmp_isoErrorL1 :', tmp_isoErrorL1 )
-        print('tmp_L2Error :', tmp_L2Error )
-        print('tmp_H1Error :', tmp_H1Error )
-        print('tmp_elements :', tmp_elements )
-
-
-        x.add_row([macroGridLevel, tmp_elements[-1], int(tmp_step[-1]), tmp_energyDiff[-1], tmp_energyDiscrete[-1], tmp_L2Error[-1],tmp_H1Error[-1], tmp_isoErrorL2[-1], tmp_time[-1]])
-        # rows.append.([macroGridLevel, tmp_elements[-1], int(tmp_step[-1]), tmp_energyDiff[-1], tmp_energyDiscrete[-1], tmp_L2Error[-1],tmp_H1Error[-1], tmp_isoErrorL2[-1], tmp_time[-1]])
-
-
-
-    # Write Table to text-file.
-    tablefile = open(resultPath + "/" + parameterFile + conformity   + "_table"   + ".txt", "w")
-    tablefile.write(str(x))
-    tablefile.write('\n')
-    # tablefile.write(str(tabulate(rows, headers='firstrow', tablefmt='latex_raw')))
-    # tablefile.write(str(tabulate(rows, headers='firstrow')))
-    tablefile.close()
-
-
-    # Print Table
-    print(x)
-    # print(tabulate(rows, headers='firstrow', tablefmt='latex_raw'))
-    # print(tabulate(rows, headers='firstrow'))
+    """
+        Create Table for each parameter in 'parameterArray' unless none is given 
+        - Then create just one.
+    """
+    # ------ Loops through Parameters -----------
+    for i in range(0, len(parameterArray)) if len(parameterArray)>0 else [1]:
+        for v in range(0,len(parameterArray[i][1])) if len(parameterArray)>0 else [1]:
+
+            #Setup Output-Table:
+            prettyTable = PrettyTable()
+            constraintError = 0.0
+
+            parameterName =  parameterArray[i][0]
+            parameterValue = parameterArray[i][1][v]
+
+            if len(parameterArray)>0:
+                prettyTable.title = parameterFile + "_" + parameterName + "_" + str(parameterValue)
+            else: 
+                prettyTable.title = parameterFile
+
+
+            prettyTable.field_names = ["r", r"#Triang/#DOF", r"#Steps", r"discrete energy", r"Energy difference",  r"L2-Error" , r"H1-Error", r"L2-Isometry-Error", r"wall-time" ]
+            prettyTable.align["k"] = "l" # Left align
+            prettyTable.padding_width = 1 # One space between column edges and contents (default)
+
+            # Create another Table which outputs Latex-Synthax.
+            latexTable = []
+            latexTable.append(["r", r"#Triang/#DOF", r"#Steps", r"$\cI^h(u_h)$", r"$\lvert \cI(u) - \cI^h(u_h) \rvert$",  r"$\lVert u - u_h_{L^2}\rVert_0$" , r"wall-time" ])
+
+            for macroGridLevel in gridLevels:
+                
+
+                if len(parameterArray)>0:
+                    LOGFILE = resultPath + "/" + parameterFile  + "_macroGridLevel" + str(macroGridLevel) + "_" + parameterName + "_" + str(parameterValue) + ".log"
+                else: 
+                    LOGFILE = resultPath + "/" + parameterFile  + "_macroGridLevel" + str(macroGridLevel) + ".log"
+
+                print('LOGFILE usef for Table:', LOGFILE)
+                # Read Energy Values:
+                with open(LOGFILE, 'r') as file:
+                    output  = file.read()
+
+
+                tmp_energyAnalytical = re.findall(r'(?m)Analytical energy: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
+                tmp_energyDiscrete = re.findall(r'(?m)Energy of discrete solution: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
+                tmp_step = re.findall(r'(?m)Step Number: (\d+)',output)
+                tmp_reg = re.findall(r'(?m)regularization parameter: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)' ,output)
+                tmp_dofs = re.findall(r'(?m)Degrees of Freedom: (\d+)',output)
+                tmp_time = re.findall(r'(?m)Total time elapsed: (-?\d+\.?\d+\d?)',output)
+                tmp_elements = re.findall(r'(?m)Number of Elements in the grid:\s*(\d+)',output)
+                tmp_isoErrorL2 = ['-']
+                tmp_isoErrorL1 = ['-']
+                tmp_L2Error = ['-']
+                tmp_H1Error = ['-']
+                tmp_energyDiff = ['-']
+
+                """
+                    Check is isometry-error is measured.
+                """
+                if( parameterSet.measure_isometryError == 'true'):
+                    tmp_isoErrorL2 = re.findall(r'(?m)L2-Isometry-error: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
+                    tmp_isoErrorL1 = re.findall(r'(?m)L1-Isometry-error: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
+
+
+                if( parameterSet.measure_analyticalError == 'true'):
+                    tmp_L2Error = re.findall(r'(?m)L2-error: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
+                    tmp_H1Error = re.findall(r'(?m)H1-error: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
+                    tmp_energyDiff = re.findall(r'(?m)Energy difference: (-?\d?\d?\d?\.?\d+[Ee]?[+\-]?\d?\d?)',output)
+                
+
+                # print('LOGFILE:',LOGFILE)
+                # print('tmp_step:',tmp_step)
+                print('tmp_step last:', int(tmp_step[-1]))
+                print('tmp_dofs:',tmp_dofs)
+                print('tmp_dofs last:', int(tmp_dofs[-1]))
+                # print('type tmp_energy:', type(tmp_energy))
+                print('tmp_energyDiscrete:', tmp_energyDiscrete)
+                print('tmp_energyDiff:', tmp_energyDiff)
+                print('tmp_energyAnalytical:', tmp_energyAnalytical)
+                # print('tmp_energy last:', tmp_energy[-1])
+                print('tmp_time:', tmp_time)
+                print('tmp_isoErrorL2 :', tmp_isoErrorL2 )
+                print('tmp_isoErrorL1 :', tmp_isoErrorL1 )
+                print('tmp_L2Error :', tmp_L2Error )
+                print('tmp_H1Error :', tmp_H1Error )
+                print('tmp_elements :', tmp_elements )
+
+                # Add Table rows.
+                prettyTable.add_row([macroGridLevel, tmp_elements[-1], int(tmp_step[-1]),tmp_energyDiscrete[-1], tmp_energyDiff[-1],  tmp_L2Error[-1],tmp_H1Error[-1], tmp_isoErrorL2[-1], tmp_time[-1]])
+                latexTable.append([macroGridLevel, tmp_elements[-1], int(tmp_step[-1])  ,tmp_energyDiscrete[-1],  tmp_energyDiff[-1], tmp_L2Error[-1],tmp_H1Error[-1], tmp_isoErrorL2[-1], tmp_time[-1]])
+
+
+            # Write Tables to text-file.
+            tablefile = open(resultPath + "/" + parameterFile + conformity + "_table"   + ".txt", "w")
+            tablefile.write(str(prettyTable))
+            tablefile.write('\n')
+            # Write Latex-Table
+            tablefile.write(str(tabulate(latexTable, headers='firstrow', tablefmt='latex_raw')))
+            tablefile.close()
+
+            # Print Table
+            print(prettyTable)
+            print(tabulate(latexTable, headers='firstrow', tablefmt='latex_raw'))
+            # print(tabulate(latexTable, headers='firstrow',tablefmt='pipe'))
+            # print(tabulate(latexTable, headers='firstrow',tablefmt='grid'))
 
 
diff --git a/testsuite/microstructure-testsuite.py b/testsuite/microstructure-testsuite.py
index 2cab32f5cea24463efff70a17b6bbdd5d692d0e1..3aa58e7cbd8345119c9cb426979a6b26d2a453ba 100644
--- a/testsuite/microstructure-testsuite.py
+++ b/testsuite/microstructure-testsuite.py
@@ -6,12 +6,11 @@ import matplotlib as mpl
 import matplotlib.pyplot as plt
 import matplotlib.colors as colors
 from matplotlib import cm
+from matplotlib.cm import get_cmap
 from matplotlib.colors import ListedColormap, LinearSegmentedColormap
-
-
 from matplotlib.ticker import LogLocator
+from scipy.interpolate import CubicSpline #Test
 import codecs
-
 import json
 import math
 import subprocess
@@ -19,537 +18,66 @@ import fileinput
 from matplotlib.ticker import MultipleLocator,FormatStrFormatter,MaxNLocator
 from scipy.optimize import minimize_scalar 
 import importlib
-
 from microstructure_PythonAddons import *
-
-
-
-
-# --------------------- Helper functions----------------------------------------------------------
-# def energy(kappa,alpha,Q,B)  :
-#     """
-#         Energy evaluation for given effective quantities Q and B 
-#         with input:
-#         * curvature: kappa 
-#         * angle: alpha
-#     """
-#     # --- TEST (This energy should be zero):
-#     # B = np.array([1.0,0.0,0])
-#     # kappa = 1.0
-#     # alpha = 0
-    
-#     # print('Q:', Q)
-#     # print('B:',B)
-#     # print('kappa*np.array([[np.cos(alpha)**2],[np.sin(alpha)**2],[np.sqrt(2)*np.cos(alpha)*np.sin(alpha)]]):', kappa*np.array([[np.cos(alpha)**2],[np.sin(alpha)**2],[np.sqrt(2)*np.cos(alpha)*np.sin(alpha)]]))
-
-#     # # G=(kappa*np.array([[np.cos(alpha)**2],[np.sin(alpha)**2],[np.sqrt(2)*np.cos(alpha)*np.sin(alpha)]]))-B
-#     # G=kappa*np.array([[np.cos(alpha)**2],[np.sin(alpha)**2],[np.sqrt(2)*np.cos(alpha)*np.sin(alpha)]])-B
-#     # print('G:',G)
-#     # print('np.transpose(G):',np.transpose(G))
-#     # print('np.matmul(Q,G)',np.matmul(Q,G))
-#     # print('QUANTITY:', np.matmul(np.transpose(G),np.matmul(Q,G)))
-#     # print('energy:', np.matmul(np.transpose(G),np.matmul(Q,G))[0,0])
-#     # # return np.matmul(np.transpose(G),np.matmul(Q,G))[0,0]               #BUG: This is wrong!
-
-
-
-#     #--- New Version (13-5-24)
-#     # write kappa/alpha as minimizer which is a symmetric 2x2 matrix
-#     # expressed in the canonical basis: 
-#     # G = np.array(kappa*np.array([np.cos(alpha)**2, np.sin(alpha)**2, np.sqrt(2)*np.cos(alpha)*np.sin(alpha)]))
-#     G = kappa*np.array([np.cos(alpha)**2, np.sin(alpha)**2, np.sqrt(2)*np.cos(alpha)*np.sin(alpha)])
-#     print('G:',G)
-#     G = G - B;
-
-
-#     G_transposed = np.transpose(G);
-#     # print('G:',G)
-#     # print('G - B', G-B)
-#     # print('G tranposed:', G_transposed)
-#     # energyValue = G_transposed.dot((Q.dot(G)))
-#     # # print('G_transposed.dot((Q.dot(G))): ', G_transposed.dot((Q.dot(G))))
-#     # print('type(energyValue)', type(energyValue[0]))
-    
-#     return G_transposed.dot((Q.dot(G)));
-
-
-#alternative version:
-# def energy(kappa,alpha,Q,B)  :
-#     G = np.array(kappa*np.array([np.cos(alpha)**2, np.sin(alpha)**2, np.sqrt(2)*np.cos(alpha)*np.sin(alpha)]))
-#     G = G - B;
-
-#     energy = 0.0
-
-#     for i in range(0,2):
-#         for j in range (0,2):
-#             energy += Q[i][j]*G[i]*G[j]
-
-#     print('energy: ', energy)
-#     print('energy[0]: ', energy[0]) 
-#     # print('type new: ', type(energy[0]))
-#     return energy[0]
-
-
-
-
-
-# def energy(kappa,alpha,Q,B)  :
-#     """
-#         Energy evaluation for given effective quantities Q and B 
-#         with input:
-#         * curvature: kappa 
-#         * angle: alpha
-#     """
-#     # Compute cylindrical minimizer coefficients from angle & curvature
-#     G = kappa*np.array([np.cos(alpha)**2, np.sin(alpha)**2, np.sqrt(2)*np.cos(alpha)*np.sin(alpha)])
-#     # Subtract the effective prestrain
-#     G = G - B;
-#     # Compute the energy
-#     energy =  (np.transpose(G)).dot((Q.dot(G)));
-#     return energy
-
-# def xytokappaalpha(x,y):
-   
-#     if y>0:
-#         return [np.sqrt(x**2+y**2), np.abs(np.arctan2(y,x))]
-#     else:
-#         return [-np.sqrt(x**2+y**2), np.abs(np.arctan2(y,x))]
-
-# # Read effective quantites
-# def ReadEffectiveQuantities(QFilePath, BFilePath):
-#     # Read Output Matrices (effective quantities)
-#     # From Cell-Problem output Files : ../outputs/Qmatrix.txt , ../outputs/Bmatrix.txt
-#     # -- Read Matrix Qhom
-#     X = []
-#     # with codecs.open(path + '/outputs/QMatrix.txt', encoding='utf-8-sig') as f:
-#     with codecs.open(QFilePath, encoding='utf-8-sig') as f:
-#         for line in f:
-#             s = line.split()
-#             X.append([float(s[i]) for i in range(len(s))])
-#     Q = np.array([[X[0][2], X[1][2], X[2][2]],
-#                   [X[3][2], X[4][2], X[5][2]],
-#                   [X[6][2], X[7][2], X[8][2]] ])
-
-#     # -- Read Beff (as Vector)
-#     X = []
-#     # with codecs.open(path + '/outputs/BMatrix.txt', encoding='utf-8-sig') as f:
-#     with codecs.open(BFilePath, encoding='utf-8-sig') as f:
-#         for line in f:
-#             s = line.split()
-#             X.append([float(s[i]) for i in range(len(s))])
-#     B = np.array([X[0][2], X[1][2], X[2][2]])       # Beff is written as Coefficients to .txt-file
-#     return Q, B
-
-
-
-#     #--- Select specific experiment [x, y] with date from results_x/y
-# def get_Q_B(basePath, index,perforation=False, perforatedLayer='upper'):
-#     # results_index[0]/index[1]/...
-#     #DataPath = './experiment/wood-bilayer_PLOS/results_'  + str(data[0]) + '/' +str(data[1])
-#     # DataPath = './results_'  + str(index[0]) + '/' +str(index[1])
-#     # DataPath = '.' + dirname + orientation + gridLevel + '/results_'  + str(index[0]) + '/' +str(index[1])
-#     # DataPath = dirname + orientation + gridLevel + '/results_'  + str(index[0]) + '/' +str(index[1])
-#     if perforation:
-#         DataPath = basePath + '/results_'  +  perforatedLayer + '_'   + str(index[0]) + '/' +str(index[1])
-#     else : 
-#         DataPath = basePath + '/results_'  + str(index[0]) + '/' +str(index[1])
-
-#     QFilePath = DataPath + '/QMatrix.txt'
-#     BFilePath = DataPath + '/BMatrix.txt'
-#     # Read Q and B
-#     Q, B = ReadEffectiveQuantities(QFilePath,BFilePath)
-#     Q=0.5*(np.transpose(Q)+Q) # symmetrize
-#     B=np.transpose([B])
-#     return (Q,B)
-
-
-
-
-# def SetParameterMaterialFunction(inputFunction, parameterName, parameterValue):
-#     with open(inputFunction+'.py', 'r') as file:
-#         filedata = file.read()
-#         filedata = re.sub('(?m)'+str(parameterName)+'\s?=.*',str(parameterName)+' = '+str(parameterValue),filedata)
-#         f = open(inputFunction+'.py','w')
-#         f.write(filedata)
-#         f.close()
-
-
-
-
-
-
-
-# def createEnergyValues(r,theta,Q,B):
-#     """
-#         Compute energy values for a given meshgrid of curvature(r) and angle(theta) values
-#         associated to the effective quantities Q and B.
-
-#         the curvature array 'r' only features positive values. However the energy is also 
-#         evaluated for the corresponding negative values.
-#     """
-            
-#     # Get number of sample points.
-#     N = r.shape[0]
-
-#     E=np.zeros(np.shape(r))
-#     for k in range(0,N): 
-#         for l in range(0,N):     
-#             if theta[k,l]<np.pi:
-#                 E[k,l]=energy(r[k,l],theta[k,l],Q,B)
-#             else:
-#                 E[k,l]=energy(-r[k,l],theta[k,l],Q,B)
-
-#     return E
-
-
-# def getMinimizers(r,theta,E):
-#     """"
-#         Compute global minimizer (by Sampling method)
-#         as well as the minimizer on the opposite sign - curvature scale
-
-#         E: meshgrid evaluation of energy.
-#     """
-#     kappa=0
-#     kappa_pos=0
-#     kappa_neg=0
-
-
-#     N = E.shape[0]
-#     # Compute global Minimizer 
-#     [kmin,lmin]=np.unravel_index(E.argmin(),(N,N))
-#     kappamin=r[kmin,lmin]
-#     alphamin=theta[kmin,lmin]
-#     Emin = E[kmin,lmin]
-
-#     # Get minimizer in Positive curvature region
-#     N_mid=int(N/2)
-#     [kmin,lmin]=np.unravel_index(E[:N_mid,:].argmin(),(N_mid,N))
-#     kappamin_pos=r[kmin,lmin]
-#     alphamin_pos=theta[kmin,lmin]
-#     Emin_pos=E[kmin,lmin]
-#     # Get minimizer in Negative curvature region
-#     [kmin,lmin]=np.unravel_index(E[N_mid:,:].argmin(),(N_mid,N))
-#     kappamin_neg=r[kmin+N_mid,lmin]
-#     alphamin_neg=theta[kmin+N_mid,lmin]
-#     Emin_neg=E[kmin+N_mid,lmin]
-
-#     print('Emin:', Emin)
-#     print('Emin_pos:', Emin_pos)
-#     print('Emin_neg:', Emin_neg)
-#     print('energy in origin (0,0):' ,energy(0,0,Q,B))
-#     print('E.min(): ',E.min())
-#     print('E.max(): ',E.max())
-
-#     minimizer_sign = 'positive'
-
-#     if(abs(Emin_pos - Emin_neg)<1e-5):
-#         print('Both minimizers have nearly the same energy - likely two minimizers.')
-#     elif(Emin_pos < Emin_neg):
-#         print('Global Minimizer has positive curvature.')
-#         energyDifference = Emin_neg-Emin_pos
-#     else:
-#         print('Global Minimizer has negative curvature.')
-#         minimizer_sign = 'negative'
-#         energyDifference = Emin_pos-Emin_neg
-
-
-#     if (minimizer_sign == 'positive'):
-#         alpha_globalmin = alphamin
-#         kappa_globalmin = kappamin
-#         kappa_localmin = (-1)*kappamin_neg 
-#         alpha_localmin = alphamin_neg
-#     else :
-#         alpha_globalmin = alphamin
-#         kappa_globalmin = (-1)*kappamin
-#         kappa_localmin = kappamin_pos
-#         alpha_localmin = alphamin_pos
-
-#     print('kappa_globalmin: ', kappa_globalmin)
-#     print('alpha_globalmin: ', alpha_globalmin)
-#     print('kappa_localmin: ',  kappa_localmin)
-#     print('alpha_localmin: ',  alpha_localmin)
-#     print('energy (global minimizer)', energy(kappa_globalmin,alpha_globalmin,Q,B))
-#     print('energy (local minimizer)', energy(kappa_localmin,alpha_localmin,Q,B))
-
-#     return [kappa_globalmin,alpha_globalmin,kappa_localmin,alpha_localmin,energyDifference,minimizer_sign];
-
-
-
-
-# def createEnergyLandscapeFigure(r,theta,E,title_string='',normalize=True):
-#     """
-#         Create an energy landscape plot.
-#     """
-#     print('create energy landscape ...')
-
-#     #Get Minimzers from sampled energy values.
-#     [kappa_globalmin,alpha_globalmin,kappa_localmin,alpha_localmin,energyDifference,minimizer_sign] = getMinimizers(E) 
-
-#     # Normalize minimum energy to zero:
-#     if normalize:
-#         E=E-E.min()
-#         print('E.min(): (after normalization): ',E.min())
-#         print('E.max(): (after normalization): ',E.max())
-
-#     levs=np.geomspace(0.01,E.max(),300)  # Return numbers spaced evenly on a log scale (a geometric progression).
- 
-#     fig, ax1 = plt.subplots(ncols=1,nrows=1, figsize=(width,height), subplot_kw=dict(polar=True),gridspec_kw={'hspace': 0.4}, zorder=1)
-#     fig.subplots_adjust(left=.1, bottom=0.01, right=.9, top=0.9)  #adjust placement inside figure
-
-#     """
-#         Define new custom colormap (Test)
-#         define top and bottom colormaps 
-#     """
-#     # top = cm.get_cmap('Oranges_r', 128) # r means reversed version
-#     # bottom = cm.get_cmap('Blues', 128)# combine it all
-#     # newcolors = np.vstack((top(np.linspace(0, 1, 128)),
-#     #                     bottom(np.linspace(0, 1, 128))))
-#     # orange_blue = colors.ListedColormap(newcolors, name='OrangeBlue')
-#     # bi_pride = LinearSegmentedColormap.from_list("", ["#D60270", "#9B4F96", "#0038A8"])
-#     # testColor = LinearSegmentedColormap.from_list("", ["#380282","#0343DF","#FF7F50",  "#FE420F"])
-
-#     """
-#         Plot with 'contourf':
-#         Its important to hide the Contour LineStroke (remove white lines between contour levels) using set_edgecolor("face")
-#     """
-#     # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.5,vmin=E.min(),vmax=E.max()), cmap='brg', zorder=0)
-#     # for c in pcm.collections:
-#     #   c.set_edgecolor("face")
-
-#     """
-#         Plot with 'pcolormesh'
-#         * Reducing the image-quality/file-size by using rasterized option:
-#         * Looks much smoother without 'rasterize' option however file-size gets out of hand..: 
-#         * Together with the 'dpi=..' option of figsave we can control the file-size
-#         * Advantage: Text etc. is still vectorized without having too large files.
-
-#         Problem: How to get the Colorbarticks  in a uniform spacing when using PowerNorm (unclear)
-#     """
-#     pcm=ax1.pcolormesh(theta, r, E, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()) ,cmap='plasma', edgecolors='face', zorder=0, rasterized=True, alpha=0.8) 
-
-
-
-#     print('0.025*E.max():',0.025*E.max())
-#     print('energyDifference: ', energyDifference)
-
-#     """"
-#         Create additional contour-line plot in the range between
-#         zero and the energyDifference between both minimizers.
-#     """
-#     contour_levs = np.linspace(0.0001,energyDifference*1.0,6) # contour only from zero (Minimizer) to energyDifference between global/local Minimizer.
-#     print('contour_levs:', contour_levs)
-#     contours = plt.contour(theta, r, E, contour_levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), colors='ivory',linewidths=0.65, linestyles="dashed", alpha=0.8, zorder=2)
-#     contours_min = plt.contour(theta, r, E, [contour_levs[1]], norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), colors='yellow',linewidths=0.65, linestyles="solid", alpha=0.9, zorder=2)
-
-#     # Set Title.
-#     ax1.set_title(title_string,pad=6)
-#     # ax1.set_title(r"ratio $r=0.12$",pad=6)
-#     # ax1.set_title(r""+parameterName + ": " + str(parameterValue),pad=20)
-
-
-#     # Create a string if the minimal angle,curvature values used to label the global minimizer.
-#     Minimizer_string = ': (' + str(np.round(np.rad2deg(alpha_globalmin),decimals=1)) + '°,' + str(np.round(abs(kappa_globalmin),decimals=2))+ ')'
-
-
-#     # Mark Global Minimizer.
-#     gmin = ax1.plot(alpha_globalmin, abs(kappa_globalmin),
-#                     markerfacecolor='cornflowerblue',
-#                     markeredgecolor='white',            # marker edgecolor
-#                     marker='o',                         # each marker will be rendered as a circle
-#                     markersize=6,                       # marker size
-#                     markeredgewidth=1.0,                  # marker edge width
-#                     linewidth=0,
-#                     zorder=3,
-#                     alpha=1,                           # Change opacity
-#                     label = Minimizer_string)   
-    
-
-#     plot_minimizerInOppositeCurvatureRegion = False     #Note: this is not necessarily a local minimizer!
-        
-
-#     if plot_minimizerInOppositeCurvatureRegion:
-#             ax1.plot(alpha_localmin, abs(kappa_localmin),   # We need to take abs(kappa) since negative curvatures are still plotted with a positive kappa!
-#                         markerfacecolor='green',    
-#                         markeredgecolor='white',            # marker edgecolor
-#                         marker='D',                         # each marker will be rendered as a circle
-#                         markersize=4,                       # marker size
-#                         markeredgewidth=0.5,                  # marker edge width
-#                         linewidth=0,                      # line width
-#                         zorder=3,
-#                         alpha=1)
-            
-
-#             # #--- annotate local minimizer
-#             # ax1.annotate( '('+ str(np.round(360-np.rad2deg(alpha_localmin),decimals=1)) + '°' + ',' + str(np.round(kappa_localmin,decimals=2))+ ')' ,
-#             #             xy = (alpha_localmin,abs(kappa_localmin)),
-#             #             # xytext=(-1.6, np.round(kappa_localmin,decimals=2)+0.9),
-#             #             # xytext=(-1.6, np.round(kappa_localmin,decimals=2)),
-#             #             xytext=(alpha_localmin,abs(kappa_localmin)),
-#             #             color='ivory',
-#             #             # zorder=5,
-#             #             fontsize='8')
-
-#     print('Global Minimizer (alphamin, kappamin):' , '('+ str(np.round(np.rad2deg(alpha_globalmin),decimals=1)) + ',' + str(np.round(abs(kappa_globalmin),decimals=2))+ ')' ) 
-#     print('Local Minimizer opposite curvature (alphamin, kappamin):' , '('+ str(np.round(360-np.rad2deg(alpha_localmin),decimals=1)) + ',' + str(np.round(abs(kappa_localmin),decimals=2))+ ')' ) 
-
-#     #### Colorbar for Contourf-Plot:
-#     # colorbarticks=np.geomspace(0.00001,E.max(),10)
-#     # cbar = plt.colorbar(pcm, ax=[ax1], extend='max', ticks=colorbarticks, pad=0.1, orientation="horizontal")
-
-#     # Colorbar for pcolormesh-Plot:
-#     cbar = fig.colorbar(pcm, ax=ax1, pad=0.1,  orientation="horizontal") 
-
-
-#     """
-#         Set Tick labels
-#         x: Angle 
-#         y: Radius
-    
-#     """
-#     anglelabel=["0°","45°", "90°", "135°", "180°","-135°","-90°","-45°"]
-#     # anglelabel=["0°","45°", "90°", "135°",r"$\pm180$° ","-135°","-90°","-45°"]
-#     ax1.set_xticks(np.array([.0,1/4,2/4,3/4,1,5/4,6/4,7/4])*np.pi)
-#     ax1.set_xticklabels(anglelabel)
-#     # ax1.xaxis.grid(True, color='white')
-#     ax1.xaxis.grid(True)
-#     # We want to grid-axis to be on top of the contour lines to hide confusing contours on the grid-axis.
-#     ax1.set_axisbelow(False)
-
-#     # Adjust pad of xticklabels:
-#     ax1.tick_params(pad=0.5)
-
-#     # rotate radius axis labels.
-#     ax1.set_rlabel_position(225)
-
-#     # Adjust radial ticks.
-#     radiusTickLength = 0.5
-#     ax1.yaxis.set_major_locator(plt.FixedLocator(np.arange(radiusTickLength,curvatureLength,radiusTickLength)))
-#     # (Alternative used fixed values)
-#     # ax1.set_yticks(np.array([1,2,3]))
-#     # ax1.set_yticklabels(["1","2","3"], zorder=20, color="white")
-#     ax1.yaxis.set_tick_params(color='white', pad = 1.0)
-#     ax1.yaxis.grid(True)
-
-#     # Create Minor ticks manually as polar coordinates does not have the option.
-#     tick = [ax1.get_rmax(),ax1.get_rmax()*0.97]
-#     for t  in np.deg2rad(np.arange(0,360,5)):
-#         ax1.plot([t,t], tick, lw=0.1, color="k")
-
-
-#     # Create a Legend.
-#     legend = ax1.legend(bbox_to_anchor=[0.75, 0.15],loc='lower center',borderaxespad=0.1,frameon=True,bbox_transform=fig.transFigure,handletextpad=0.1)
-#     frame = legend.get_frame()
-#     frame.set_edgecolor('black')
-
-#     # Save Figure as png.
-#     # fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + '.png', dpi=100)
-#     # Save Figure as pdf.
-#     fig.set_size_inches(width, height)
-#     fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + '.pdf', dpi=500) #dpi on
-#     return
-
-
-# -------------------------- Matplotlib - parameters.--------------------------------------------------------------
-# plt.style.use("seaborn")
-# plt.style.use('paperstyle.mplstyle')
-
-#reset to default style-sheet_
-# plt.style.use('default')
-
-
-# plt.style.use("seaborn")
-
-# mpl.rcParams['text.usetex'] = True
-# mpl.rcParams["font.family"] = "serif"
-# mpl.rcParams["font.size"] = "8"
-# mpl.rcParams['xtick.bottom'] = True
-# mpl.rcParams['xtick.major.size'] = 2
-# mpl.rcParams['xtick.minor.size'] = 1.5
-# mpl.rcParams['xtick.major.width'] = 0.75
-# # mpl.rcParams['xtick.labelsize'] = 8
-# mpl.rcParams['xtick.major.pad'] = 0.1
-# mpl.rcParams['ytick.left'] = True
-# mpl.rcParams['ytick.major.size'] = 2
-# mpl.rcParams['ytick.minor.size'] = 1.5
-# mpl.rcParams['ytick.major.width'] = 0.75
-# mpl.rcParams['ytick.labelsize'] = 8
-# mpl.rcParams['ytick.major.pad'] = 1
-# mpl.rcParams['axes.titlesize'] = 8
-# mpl.rcParams['axes.titlepad'] = 1
-# # mpl.rcParams['axes.labelsize'] = 8
-# #Adjust Legend:
-# mpl.rcParams['legend.frameon'] = True       # Use frame for legend
-# # mpl.rcParams['legend.framealpha'] = 0.5 
-# mpl.rcParams['legend.fontsize'] = 8         # fontsize of legend
-# #Adjust grid:
-# # mpl.rcParams.update({"axes.grid" : True}) # Add grid
-# mpl.rcParams.update({"axes.grid" : False}) # Add grid
-# mpl.rcParams['axes.labelpad'] = 3
-# mpl.rcParams['grid.linewidth'] = 0.25
-# mpl.rcParams['grid.alpha'] = 0.75 # 0.75
-# mpl.rcParams['grid.linestyle'] = '-'
-# mpl.rcParams['grid.color']   = 'lightgray'#'black'
-# mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsfonts}' # Makes Use of \mathbb possible.
-
-
-# plt.style.use("seaborn")
-# plt.style.use('paperstyle.mplstyle')
-# textwidth = 6.26894 #textwidth in inch
-# width = textwidth * 0.5
-# # width = textwidth * 0.33
-# # width = textwidth 
-# # height = width/1.618 # The golden ratio.
-# height = textwidth/1.618 # The golden ratio.
-# # height = width
-# # height = width*1.618
-# ------------------------------------------------------------------------------------------------------------------
-
-
-# ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
 computeEffectiveQuantities = True
-computeEffectiveQuantities = False
+# computeEffectiveQuantities = False
 plotEnergyLandscape_flag = True
 plotEnergyLandscape_flag = False
 displayMinimizer = False 
 displayMinimizer = True
 
 plotContourLines = True
-# plotContourLines = False
-
+plotContourLines = False
 
 plotCurvatureAngleParameterDependence_flag = True
-# plotCurvatureAngleParameterDependence_flag = False
+plotCurvatureAngleParameterDependence_flag = False
+
 
 plotPrestrainParameterDependence_flag = True
 plotPrestrainParameterDependence_flag = False
 
+plotEffectiveQuantitiesParameterDependence_flag = True 
+plotEffectiveQuantitiesParameterDependence_flag = False
+
+
 N=2000 #Number of Sampling Points
 curvatureLength=2.5
 # N=1000 #Number of Sampling Points
 N=500 #Number of Sampling Points
+# N=100 #Number of Sampling Points
 # curvatureLength=5
 
 # 1. Experiment   2. ExperimentPathExtension   3. MicroGridLevels, 4. Executable 5.(additional) parameterArray: [["ParameterName", ParameterValue], ...]
 scenarios = [
-                ["prestrainedFibre",            "/micro-problem",  [3,3], "/micro-problem"  , [["verticalMidpointPosition", [0,0.05,0.1,0.15,0.2,0.25]]] ],  #0
-                ["prestrainedFibre",            "/micro-problem",  [3,3], "/micro-problem"  , [["fibreRadius", [0,0.05,0.1,0.15,0.2,0.25]]] ],               #1
-                ["prestrainedFibre_anisotropicB","/micro-problem",  [3,3], "/micro-problem"  , [["mu_phase1", [100]]] ],                                     #2
-                ["prestrainedFibre_anisotropicQ","/micro-problem",  [3,3], "/micro-problem"  , [["mu_phase1", [100]]] ],                                     #3
-                ["prestrainedFibre",            "/micro-problem",  [3,3], "/micro-problem"  , [["mu_phase1", [100]]] ],                                      #4
-                ["prestrainedFibre",            "/micro-problem",  [3,3], "/micro-problem"  , [["mu_phase1", [50,150]]] ],                                   #5
-                ["prestrainedFibre",            "/micro-problem",  [3,3], "/micro-problem"  , [["mu_phase1", [75]]] ],                                       #6
-                # ["three-phase-composite",                                  "",  [3,3], "/micro-problem"  , [["mu_phase1", [0.1,1,63.89,200]]] ],
-                ["three-phase-composite",       "/micro-problem",  [3,3], "/micro-problem"  , [["rho", [0,0.25,0.5,0.75,1.0,2.0]]] ], #Figure:...            #7
-                ["three-phase-composite",       "/micro-problem",  [3,3], "/micro-problem"  , [["rho", [0.95]]] ], #Figure:...                               #8
-                ["three-phase-composite",       "/micro-problem",  [3,3], "/micro-problem"  , [["rho", [1.0]]] ], #Figure:...                                #9
-                ["two-phase-composite",         "/micro-problem",  [3,3], "/micro-problem"  , [["rho", [0.5]]] ], #Figure:...                                #10
-                ["buckling_microproblem",       "/micro-problem",  [3,3], "/micro-problem"  , [["rho", [0.0]]] ], #Figure:...                        #11
-                ["buckling_microproblem",       "/micro-problem",  [3,3], "/micro-problem"  , [["rho", [x/10.0 for x in range(1,11,1)]]] ], #Figure:...      #12
-                # ["three-phase-composite",                                             "",  [4,4], "/micro-problem"  ,         [["rho", [1.0]]]    ],
-                ["parametrized_laminate",       "/micro-problem",  [3,3], "/micro-problem"  ,  [["theta_mu", [0.5,1.0,10.0]]]            ],
-                ["parametrized_laminate",       "/micro-problem",  [3,3], "/micro-problem"  ,  [["theta_rho", [0.1,0.2,0.25,0.5,1.0,2.0,10.0]]]],
-                ["parametrized_laminate",       "/micro-problem",  [3,3], "/micro-problem"  ,  [["theta_rho", [0.1]]]            ]
+            ["prestrainedFibre",               "/micro-problem",  [3],                  [["mu_phase1", [0.9,1.2,1.5,2.0,3.0]]] ],     
+            ["MVM_infinitynorm_microproblem",  "/micro-problem",  [1],                  []            ],  
+            ["fibreRotation_microproblem",     "/micro-problem",  [4],                  [["alpha", [(np.pi/12.0)+ (x/10.0)*(np.pi/3.0-np.pi/12.0) for x in range(0,11,1)]]] ],  
+            ["fibreRotation_microproblem",     "/micro-problem",  [4],                  [["theta", [x/10.0 for x in range(1,6,1)]]] ],  #0
+            ["fibreRotation_microproblem",     "/micro-problem",  [3],                  [["alpha", [np.pi/12.0]]] ],  #0
+            ["prestrainedFibre",               "/micro-problem",  [3],                  [["verticalMidpointPosition", [0,0.05,0.1,0.15,0.2,0.25]]] ],  
+            ["prestrainedFibre",               "/micro-problem",  [3],                  [["fibreRadius", [0,0.05,0.1,0.15,0.2,0.25]]] ],               
+            ["prestrainedFibre_anisotropicB",  "/micro-problem",  [3],                  []                      ],                                    
+            ["prestrainedFibre_anisotropicQ",  "/micro-problem",  [3],                  []                     ],                                     
+            ["prestrainedFibre",               "/micro-problem",  [3],                  [["mu_phase1", [0.9,1.5]]] ],                            
+            ["prestrainedFibre",               "/micro-problem",  [1,3],                []  ],  
+            ["prestrainedFibre",               "/micro-problem",  list(range(1,3,1)),   []  ],  
+            ["three-phase-composite",          "/micro-problem",  [3],                  [["rho", [0,0.25,0.5,0.75,1.0,2.0]]] ], #Figure:...            
+            ["three-phase-composite",          "/micro-problem",  [3],                  [["rho", [0.95]]] ], #Figure:...                               
+            ["three-phase-composite",          "/micro-problem",  [3],                  [["rho", [1.0]]] ], #Figure:...                                
+            ["two-phase-composite",            "/micro-problem",  [3],                  [["rho", [0.5]]] ], #Figure:...                               
+            ["buckling_microproblem",          "/micro-problem",  [3],                  [["rho", [0.0]]] ], #Figure:...                               
+            ["buckling_microproblem",          "/micro-problem",  [3],                  [["rho", [x/10.0 for x in range(0,11,1)]]] ], #Figure:...     
+            ["parametrized_laminate",          "/micro-problem",  [3],                  [["theta_mu", [0.5,1.0,10.0]]]            ],                 
+            ["parametrized_laminate",          "/micro-problem",  [3],                  [["theta_rho", [0.1,0.2,0.25,0.5,1.0,2.0,10.0]]]],           
+            ["parametrized_laminate",          "/micro-problem",  [3],                  [["theta_rho", [0.1]]]],                                     
+            ["validation_microproblem",        "/micro-problem",  [3],                  [["theta_rho", [0.1]]]]                               
+            # ["prestrainedFibre",            "/micro-problem",  [3], [["mu_phase1", [1.2]]] ],                                  
+            # ["prestrainedFibre",            "/micro-problem",  [3], [["mu_phase1", [0.9,1.2,1.5]]] ],                          
+            # ["prestrainedFibre",            "/micro-problem",  [3], [["mu_phase1", [20]]] ],                    
+            #  ["prestrainedFibre",           "/micro-problem",  [3], [["mu_phase1", [20,27.8,35]]] ],            
+            # ["three-phase-composite",       "",                [3], [["mu_phase1", [0.1,1,63.89,200]]] ],
             ]
 
 
@@ -557,10 +85,8 @@ print('sys.argv[0]', sys.argv[0])
 print('sys.argv[1]', sys.argv[1])
 print('sys.argv[2]', sys.argv[2])
 
-
-print('list(range(0,1,0.1)):',[x/10.0 for x in range(0,11,1)])
-
-
+# print('list(range(0,1,0.1)):',[x/10.0 for x in range(0,11,1)])
+# print('list(range(0,2,0.1)):',[x/10.0 for x in range(0,6,1)])
 
 CONTAINER = int(sys.argv[1])
 slurm_array_task_id = int(sys.argv[2])
@@ -568,14 +94,12 @@ slurm_array_task_id = int(sys.argv[2])
 parameterFile  = scenarios[slurm_array_task_id][0]
 pathExtension  = scenarios[slurm_array_task_id][1]
 gridLevels     = scenarios[slurm_array_task_id][2]
-executable     = scenarios[slurm_array_task_id][3]
-parameterArray = scenarios[slurm_array_task_id][4]
+executable     = "/micro-problem" 
+# executable     = scenarios[slurm_array_task_id][3]
+parameterArray = scenarios[slurm_array_task_id][3]
+print('len(parameterArray)',len(parameterArray))
+print('parameterArray:',parameterArray)
 
-#Test 
-# parameterArray = [[" -rho ", [4.0]]] 
-
-
-print('pathExtension: ', pathExtension)
 
 
 
@@ -583,7 +107,7 @@ print('pathExtension: ', pathExtension)
 # cwd = os.getcwd()
 modulePath = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
 print("Parent Directory is: ", modulePath)
-
+print('pathExtension: ', pathExtension)
 
 #Path for parameterFile
 if CONTAINER:
@@ -592,124 +116,54 @@ if CONTAINER:
     resultPath = "outputs" + "_" + scenarios[slurm_array_task_id][0]
     instrumentedPath =  resultPath + "/instrumented" 
     executablePath = "/dune/dune-microstructure/build-cmake/src"
+    # Path used for copying experiment parameter files (for safe modification)
+
+    new_ParameterPath = "tmp_experiments"
+    original_ParameterPath = pythonPath + "/" + parameterFile +'.py'
 else :
     #--- Local version
     pythonPath =  modulePath + "/experiment" + pathExtension
     resultPath = modulePath + "/outputs" + "_" + scenarios[slurm_array_task_id][0]
     instrumentedPath = resultPath + "/instrumented"
     executablePath = modulePath + '/build-cmake/src'
+    # Path used for copying experiment parameter files (for safe modification)
+    new_ParameterPath = "/home/klaus"
+    original_ParameterPath = pythonPath + "/" + parameterFile +'.py'
 
-try:
-    os.mkdir(resultPath)
-    os.mkdir(instrumentedPath)
-except OSError as error:
-    print(error)
-
-print('pythonPath: ', pythonPath)
-
-
-### Access ParameterFile variables.
-sys.path.insert(0, pythonPath)
-__import__(parameterFile, fromlist=['parameterSet'])
-imported_module = importlib.import_module(parameterFile)
-parameterSet = getattr(imported_module, "parameterSet")
+    
+# Create output directories if non existent
+os.makedirs(resultPath, exist_ok=True)
+os.makedirs(instrumentedPath, exist_ok=True)
 
 executable = executablePath + executable
-
 resultPathBase = resultPath
+# print('pythonPath: ', pythonPath)
 
 
 
 
 
+"""
+    Access ParameterFile variables.
+"""
+# sys.path.insert(0, pythonPath)
+# __import__(parameterFile, fromlist=['parameterSet'])
+# imported_module = importlib.import_module(parameterFile)
+# parameterSet = getattr(imported_module, "parameterSet")
 
-#----------------------------------------------------------------------------------------------------------------------
-if computeEffectiveQuantities: 
-    print('Computing effective quantities... ')
-    for i in range(0, len(parameterArray)):
-        for v in range(0,len(parameterArray[i][1])):
-            print("------------------")
-            print("New Loop")
-            print("------------------")
-            print('i:', i)
-            print('v:', v)
-            print('len(parameterArray[i][1]):', len(parameterArray[i][1]))
-            # print('parameterArray[i][v]:', parameterArray[i][v])
 
-            print('parameterName:'  , parameterArray[i][0])
-            print('parameterValue: ', parameterArray[i][1][v])
-            # print('np.shape(parameterArray)[1]:', np.shape(parameterArray)[1])
-            # print('np.shape(parameterArray[i][1]):', np.shape(parameterArray[i][1]))
-            # print('np.shape(parameterArray[i][1])[1]:', np.shape(parameterArray[i][1])[1])
-            parameterName =  parameterArray[i][0]
-            parameterValue = parameterArray[i][1][v]
 
 
-            resultPath_parent = resultPathBase + "/" + parameterName
-            resultPath = resultPath_parent + "/value_" + str(parameterValue)
-            try:
-                os.mkdir(resultPath_parent)
-            except OSError as error:
-                print("")
-                # print(error)
-            try:
-                os.mkdir(resultPath)
-            except OSError as error:
-                print("")
-                # print(error)
-            
-
-
-
-            ## Alternative version: actually changing the parset file..
-            # Change Parameters:
-            print('...change input parameter:' , parameterName)
-            SetParameterMaterialFunction(pythonPath + "/" + scenarios[slurm_array_task_id][0], parameterName , parameterValue)
-
-
-            baseName = scenarios[slurm_array_task_id][0] + "_" + parameterArray[i][0] + "_" +  str(parameterArray[i][1][v])
-
-            #--- Compute 
-            processList = []
-            for microGridLevel in range(gridLevels[0],gridLevels[1]+1):
-                # if conforming_DiscreteJacobian:
-                #     conformity = "_conforming"
-                # else:
-                #     conformity = "_nonconforming"
-
-                # LOGFILE = resultPath + "/" + parameterFile + conformity + "_macroGridLevel" + str(macroGridLevel) + parameterName  + ".log"
-                LOGFILE = resultPath + "/" + parameterFile  + "_microGridLevel" + str(microGridLevel) + "_" + parameterName + "_" + str(parameterValue) + ".log"
-
-                print('LOGFILE:', LOGFILE)
-                print('executable:', executable)
-                print('parameterFile:', parameterFile)
-                print('resultPath:', resultPath)
-
-                # testArray = [ " -rho " + str(8.0), " -beta " + str(0.10) ]
-
-                # start_time = time.time()
-                p = subprocess.Popen(executable + " " + pythonPath + " " + parameterFile
-                                                + " -microGridLevel " + str(microGridLevel)
-                                                + " -resultPath " + str(resultPath)
-                                                + " -baseName " + str(baseName)
-                                                # + " -" + parameterName + " " + str(parameterValue)
-                                                + " | tee " + LOGFILE, shell=True)
-
-                p.wait() # wait
-                # print("--- %s seconds ---" % (time.time() - start_time))
-                print('------FINISHED PROGRAM on macroGridLevel:' + str(microGridLevel))
-                processList.append(p)
-
-                # Wait for all simulation subprocesses before proceeding to the error measurement step
-                exit_codes = [p.wait() for p in processList]
-
+if computeEffectiveQuantities: 
+    """
+    Create a copy of the parameter-file.
+    """
+    CreateParameterCopy(original_ParameterPath,new_ParameterPath,parameterFile)
+    print('Parameter copying done.')
+    SolveMicroProblem(executable,parameterFile,gridLevels,parameterArray,resultPath,new_ParameterPath,pythonPath)
 
 
 
-# print('parameterArray:', parameterArray)
-# print('len(parameterArray):',           len(parameterArray))
-# print('len(parameterArray[0][1]): ', len(parameterArray[0][1]))
-# print('Number of different additional parameters:', len(parameterArray))
 
 #----------------------------------------------------------------------------------------------------------------------
 if plotPrestrainParameterDependence_flag:
@@ -733,7 +187,7 @@ if plotPrestrainParameterDependence_flag:
             parameterValue = parameterArray[i][1][v]
 
             resultPath_parent = resultPathBase + "/" + parameterName
-            resultPath = resultPath_parent + "/value_" + str(parameterValue)
+            resultPath = resultPath_parent + "/value_" + str(np.round(parameterValue,3))
 
 
             try:
@@ -758,59 +212,21 @@ if plotPrestrainParameterDependence_flag:
             # Test: symmetrize Qhom
             # Q=0.5*(np.transpose(Q)+Q) # symmetrize
 
-
-            # N=1000 #Number of Sampling Points
-            # curvatureLength=1
-            # r, theta = np.meshgrid(np.linspace(0,curvatureLength,N),np.radians(np.linspace(0, 360, N)))
-
-            # E = createEnergyValues(r,theta,Q,B)
-
-            # """"
-            #     Create the energy landscape from the dataset E.
-            #     If 'Normalize' is set to true the energy is normalized via
-            #     E=E-E.min()
-            # """
-            # # title_string = r"ratio $r=0.12$"
-            # # title_string = r""+parameterName + ": " + str(parameterValue)
-            # # title_string = ''
-            # # createEnergyLandscapeFigure(r,theta,E,curvatureLength,Q,B,resultPath,parameterName,parameterValue,title_string,True)
-            # # createEnergyLandscapeFigure(r,theta,E,resultPath,parameterName,parameterValue,title_string,True)
-            # # createEnergyLandscapeFigure(r,theta,E,resultPath,parameterName,parameterValue,title_string,True,displayMinimizer)
-
-            # [kappa_globalmin,alpha_globalmin,kappa_localmin,alpha_localmin,energyDifference,minimizer_sign] = getMinimizers(r,theta,E) 
-
             inputValues.append(parameterValue)
-
             outputValues_b1.append(B[0])
             outputValues_b2.append(B[1])
             outputValues_b3.append(B[2])
             # ---------------------------------------------------------------------------------------------------------
 
-
-
         #--- Create Plot ...
-        # Setup Plot style.
-        plt.style.use("seaborn")
-        # plt.style.use('paperstyle.mplstyle')
         # Set correct Figure size (width/height) to make the figure fit the text without scaling.
         textwidth = 6.26894      # textwidth in inch
         width = textwidth * 0.5
-        # height = textwidth/1.618 # The golden ratio.
-        # height = width/1.618 # The golden ratio.
-        height = width
-
+        height = width/1.618 # The golden ratio.
 
-        #---------TEST
         # Styling
-        plt.style.use("seaborn-darkgrid")
-        # plt.style.use("seaborn-whitegrid")
-        # plt.style.use("seaborn")
-        # plt.style.use("seaborn-paper")
-        # plt.style.use('ggplot')
-        # plt.rcParams["font.family"] = "Avenir"
-        # plt.rcParams["font.size"] = 16
+        plt.style.use("seaborn-v0_8-darkgrid")
 
-        # plt.style.use("seaborn-darkgrid")
         mpl.rcParams['text.usetex'] = True
         mpl.rcParams["font.family"] = "serif"
         mpl.rcParams["font.size"] = "10"
@@ -825,20 +241,101 @@ if plotPrestrainParameterDependence_flag:
         mpl.rcParams['ytick.major.size'] = 3
         mpl.rcParams['ytick.minor.size'] = 1.5
         mpl.rcParams['ytick.major.width'] = 0.75
-
         mpl.rcParams.update({'font.size': 10})
         mpl.rcParams['axes.labelpad'] = 3
         #---------------------
 
+        # fig, axs = plt.subplots(ncols=2,nrows=1, figsize=(width,height), constrained_layout=True)
+        
+        # # title_string = r"$B_1$" + "-" r""+parameterName 
+        # title_string = ''
+
+
+        # print('plot curvature over parameter : '+ parameterName)
+        # print('inputValues:', inputValues)
+
+
+        # dataSets = [(outputValues_b1, r"$\widehat{B}^h_1$", r"$\widehat{B}^h_1$"),
+        #             (outputValues_b2, r"$\widehat{B}^h_2$", r"$\widehat{B}^h_2$"),
+        #             # (outputValues_b3, r"$\widehat{B}^h_3$", r"$\widehat{B}^h_3$")
+        #            ]
+
+        # # Get a color map with distinct colors
+        # cmap = get_cmap('tab10')  # Using matplotlib's qualitative color map
+
+
+
+        # """
+        #     Plot each function in its own subplot with different colors.
+        #     axs is a 2x3 grid of subplots (from plt.subplots(2, 3)).
+        #     '.flat': converts this 2D grid into a 1D iterator, allowing you to loop through subplots sequentially (row-wise order):
+        #     Subplot order: [axs[0,0], axs[0,1], axs[0,2], axs[1,0], axs[1,1], axs[1,2]]
+        #     'zip': pairs elements from two iterables:
+        #         The first iterable: subplots (axs.flat)
+        #         The second iterable: dataSet list 
+        #     This creates tuples of matched pairs: (axs[0,0], functions[0]), (axs[0,1], functions[1]), ..., (axs[1,2], functions[5])
+        #     'enumerate': Wraps around the zip result to add an index counter i.
+        #                 for each iteration it returns (index, (subplot, function_data))
+        # """
+        # for i, (ax, (y, title, label)) in enumerate(zip(axs.flat, dataSets)):
+        #     color = cmap(i / len(dataSets))  # Get unique color from colormap
+        #     ax.plot(inputValues, y, label=label, lw=1.5, color=color, marker='o', markersize=5 )
+            
+        #     ax.set_ylabel('')
+        #     ax.set_xlabel(r"$\rho$",labelpad=4)
+
+        #     # ax.xticks(np.arange(0, 1, step=0.2))
+        #     ax.set_yticks(np.arange(0, 1.2, step=0.2))
+        #     ax.set_xticks(np.arange(0, 1.2, step=0.5))
+
+
+        
+        #     # #TEST (Spline interpolation)
+        #     # # Create cubic spline interpolation
+        #     # interp_function = CubicSpline(inputValues, y)
+
+        #     # #create "continuous" values 
+        #     # x_continuous = np.linspace(min(inputValues), max(inputValues), 100)
+        #     # y_interp = interp_function(x_continuous)
+
+
+        #     # ax.scatter(inputValues, y, color=color, s=35, zorder=5, edgecolor='black')
+        #     # ax.plot(x_continuous, y_interp, color=color, lw=2,  label=label)
+
+        #     ax.legend()
+
+        #     # Set square aspect ratio
+        #     ax.set_aspect(1/1.618)
+
+        #     ax.set_ylim(-0.1, 1.1)
+        #     ax.set_xlim(-0.1, 1.1)
+
+        #     # # Set axis limits with padding
+        #     # # ax.set_xlim(min(inputValues)-0.01, max(inputValues)+0.01)
+        #     # ax.set_xlim(min(inputValues)-0.05, max(inputValues)+0.05)
+        #     # y_min, y_max = np.nanmin(y), np.nanmax(y)
+        #     # # x_min, x_max = np.nanmin(y), np.nanmax(y)
+        #     # ax.set_ylim(y_min - 0.1*(y_max - y_min), 
+        #     #         y_max + 0.1*(y_max - y_min))
+
+
+
+
+
+        # Single Plot: 
         # Create a figure & axes object
         # fig, ax1 = plt.subplots(ncols=1,nrows=1, figsize=(width,height),gridspec_kw={'hspace': 0.4}, zorder=1)
         fig, ax1 = plt.subplots(ncols=1,nrows=1, figsize=(width,height), zorder=1)
         # title_string = r"$B_1$" + "-" r""+parameterName 
         title_string = ''
-        # ax1.set_title(title_string,pad=6)
 
+        x_label = r"$\rho$"
+        ax1.set_xlabel(x_label, labelpad=4)
+
+        ax1.set_ylim(-0.1, 1.0)
 
-        print('plot curvature over parameter -'+ parameterName)
+
+        print('plot curvature over parameter :'+ parameterName)
         print('inputValues:', inputValues)
         print('outputValues:', outputValues_b1)
         print('outputValues:', outputValues_b2)
@@ -847,27 +344,27 @@ if plotPrestrainParameterDependence_flag:
         l1 = ax1.plot(inputValues,outputValues_b1 ,
                         label=r"$\widehat{B}^h_1$" ,
                         markerfacecolor='orange',
-                        markeredgecolor='white',            # marker edgecolor
+                        markeredgecolor='gray',            # marker edgecolor
                         marker='o',                         # each marker will be rendered as a circle
-                        markersize=6,                       # marker size
+                        markersize=4,                       # marker size
                         markeredgewidth=1.0,                  # marker edge width)
                         linewidth=1.5
                      )
         l2 = ax1.plot(inputValues,outputValues_b2 ,
                       label=r"$\widehat{B}^h_2$",
                     #   markerfacecolor='orange',
-                      markeredgecolor='white',            # marker edgecolor
+                      markeredgecolor='gray',            # marker edgecolor
                       marker='s',                         # each marker will be rendered as a circle
-                      markersize=6,                       # marker size
+                      markersize=4,                       # marker size
                       markeredgewidth=1.0,                  # marker edge width)
                       linewidth=1.5
                      )
         l3 = ax1.plot(inputValues,outputValues_b3 , 
                       label=r"$\widehat{B}^h_3$",
                     #   markerfacecolor='orange',
-                      markeredgecolor='white',            # marker edgecolor
+                      markeredgecolor='gray',            # marker edgecolor
                       marker='^',                         # each marker will be rendered as a circle
-                      markersize=6,                       # marker size
+                      markersize=4,                       # marker size
                       markeredgewidth=1.0,                  # marker edge width)
                       linewidth=1.5
                      )
@@ -925,7 +422,7 @@ if plotCurvatureAngleParameterDependence_flag:
             parameterValue = parameterArray[i][1][v]
 
             resultPath_parent = resultPathBase + "/" + parameterName
-            resultPath = resultPath_parent + "/value_" + str(parameterValue)
+            resultPath = resultPath_parent + "/value_" + str(np.round(parameterValue,3))
 
 
             try:
@@ -991,19 +488,21 @@ if plotCurvatureAngleParameterDependence_flag:
 
     #--- Create Plot ...
     # Setup Plot style.
-    plt.style.use("seaborn")
+    # plt.style.use("seaborn")
+    # plt.style.use("seaborn-v0_8")
     # plt.style.use('paperstyle.mplstyle')
     # Set correct Figure size (width/height) to make the figure fit the text without scaling.
     textwidth = 6.26894      # textwidth in inch
     width = textwidth * 0.5
     # height = textwidth/1.618 # The golden ratio.
-    # height = width/1.618 # The golden ratio.
-    height = width
+    height = width/1.618 # The golden ratio.
+    # height = width
 
 
     #---------TEST
     # Styling
-    plt.style.use("seaborn-darkgrid")
+    # plt.style.use("seaborn-darkgrid")
+    plt.style.use("seaborn-v0_8-darkgrid")
     # plt.style.use("seaborn-whitegrid")
     # plt.style.use("seaborn")
     # plt.style.use("seaborn-paper")
@@ -1041,12 +540,30 @@ if plotCurvatureAngleParameterDependence_flag:
     # plt.subplots_adjust(wspace=0.4, hspace=0)
 
     # title_string = outputQuantity + "-" r""+parameterName 
-    title_string = "curvature" + "-" r""+parameterName 
-    # title_string = ''
+    # title_string = "curvature" + "-" r""+parameterName 
+    title_string = ''
     ax1.set_title(title_string,pad=6)
 
+    if parameterName == "verticalMidpointPosition":
+        x_label = r"Vertical position $\ell$"
+    else :
+        x_label = r"Fibre width $r$"
+    
+    # ax1.set_xlabel(r"Vertical position $\ell$", labelpad=4)
+    # # ax1.set_xlabel(r"Cross section radius $r$", labelpad=4)
+    ax1.set_xlabel(x_label, labelpad=4)
+    ax1.set_ylabel(r"Curvature $\kappa$", labelpad=4)
+
+    ax1.set_ylim(-0.03, 0.6)
+    ax1.set_xlim(-0.03, 0.3)
+    
+
+    ax1.xaxis.set_major_locator(MultipleLocator(0.1))
+    # ax.xaxis.set_minor_locator(MultipleLocator(0.5))    
+    ax1.yaxis.set_major_locator(MultipleLocator(0.2))
 
-    print('plot curvature over parameter -'+ parameterName)
+
+    print('plot curvature over parameter : '+ parameterName)
     print('inputValues:', inputValues)
     print('outputValues_curvature:', outputValues_curvature)
 
@@ -1071,12 +588,15 @@ if plotCurvatureAngleParameterDependence_flag:
     # plt.subplots_adjust(wspace=0.4, hspace=0)
 
     # title_string = outputQuantity + "-" r""+parameterName 
-    title_string = "angle" + "-" r""+parameterName 
-    # title_string = ''
+    # title_string = "angle" + "-" r""+parameterName 
+    title_string = ''
     ax1.set_title(title_string,pad=6)
+    ax1.set_xlabel(r"Vertical position $\ell$", labelpad=4)
+    # ax1.set_xlabel(r"Cross section radius $r$", labelpad=4)
+    ax1.set_ylabel(r"Bending angle $\alpha$", labelpad=4)
 
 
-    print('plot curvature over parameter -'+ parameterName)
+    print('plot curvature over parameter : '+ parameterName)
     print('inputValues:', inputValues)
     print('outputValues_angle:', outputValues_angle)
 
@@ -1095,6 +615,132 @@ if plotCurvatureAngleParameterDependence_flag:
 #----------------------------------------------------------------------------------------------------------------------
 if plotEnergyLandscape_flag:
     print('Plot Energy landscape ...')
+
+    #Check if parameterArray is empty.
+    if not parameterArray:
+        print("parameterArray is empty")
+        resultPath_parent = resultPathBase
+        resultPath = resultPath_parent
+        try:
+            os.mkdir(resultPath_parent)
+        except OSError as error:
+            print("")
+        try:
+            os.mkdir(resultPath)
+        except OSError as error:
+            print("")
+
+        plot_minimizerInOppositeCurvatureRegion = False #this is not necessarily a local minimizer...
+        # Set Path for effective quantitites.
+        QFilePath = resultPath + "/QMatrix.txt"
+        BFilePath = resultPath + "/BMatrix.txt"
+
+        # Read the effective quantities from .txt-File
+        Q, B = ReadEffectiveQuantities(QFilePath,BFilePath)
+        print('Qhom: \n', Q)
+        print('Beff: \n', B)
+        # Test: symmetrize Qhom
+        # Q=0.5*(np.transpose(Q)+Q) # symmetrize
+
+
+        r, theta = np.meshgrid(np.linspace(0,curvatureLength,N),np.radians(np.linspace(0, 360, N)))
+        E = createEnergyValues(r,theta,Q,B)
+
+        """"
+            Create the energy landscape from the dataset E.
+            If 'Normalize' is set to true the energy is normalized via
+            E=E-E.min()
+        """
+        # title_string = r"ratio $r=0.12$"
+        title_string = ''
+
+        createEnergyLandscapeFigure(r,theta,E,resultPath,'','',title_string,True,displayMinimizer,plotContourLines)
+    else:
+        for i in range(0, len(parameterArray)):
+            for v in range(0,len(parameterArray[i][1])):
+                print("------------------")
+                print("New Loop")
+                print("------------------")
+                print('i:', i)
+                print('v:', v)
+                print('len(parameterArray[i][1]):', len(parameterArray[i][1]))
+                # print('parameterArray[i][v]:', parameterArray[i][v])
+                print('parameterName:'  , parameterArray[i][0])
+                print('parameterValue: ', parameterArray[i][1][v])
+
+                parameterName =  parameterArray[i][0]
+                parameterValue = parameterArray[i][1][v]
+
+                resultPath_parent = resultPathBase + "/" + parameterName
+                resultPath = resultPath_parent + "/value_" + str(np.round(parameterValue,3))
+                try:
+                    os.mkdir(resultPath_parent)
+                except OSError as error:
+                    print("")
+                    # print(error)
+                try:
+                    os.mkdir(resultPath)
+                except OSError as error:
+                    print("")
+                    # print(error)
+
+
+                plot_minimizerInOppositeCurvatureRegion = False #this is not necessarily a local minimizer...
+                
+
+                # Set Path for effective quantitites.
+                QFilePath = resultPath + "/QMatrix.txt"
+                BFilePath = resultPath + "/BMatrix.txt"
+
+                # Read the effective quantities from .txt-File
+                Q, B = ReadEffectiveQuantities(QFilePath,BFilePath)
+                print('Qhom: \n', Q)
+                print('Beff: \n', B)
+                # Test: symmetrize Qhom
+                # Q=0.5*(np.transpose(Q)+Q) # symmetrize
+
+
+                # N=2000 #Number of Sampling Points
+                
+                # curvatureLength=2
+                
+                r, theta = np.meshgrid(np.linspace(0,curvatureLength,N),np.radians(np.linspace(0, 360, N)))
+
+                E = createEnergyValues(r,theta,Q,B)
+
+                """"
+                    Create the energy landscape from the dataset E.
+                    If 'Normalize' is set to true the energy is normalized via
+                    E=E-E.min()
+                """
+                # title_string = r"ratio $r=0.12$"
+                title_string = r""+parameterName + ": " + str(parameterValue)
+                title_string = ''
+                # createEnergyLandscapeFigure(r,theta,E,curvatureLength,Q,B,resultPath,parameterName,parameterValue,title_string,True)
+                # createEnergyLandscapeFigure(r,theta,E,resultPath,parameterName,parameterValue,title_string,True)
+
+                
+                createEnergyLandscapeFigure(r,theta,E,resultPath,parameterName,parameterValue,title_string,True,displayMinimizer,plotContourLines)
+            #--------------------------------------------------------------------------
+
+#----------------------------------------------------------------------------------------------------------------------
+if plotEffectiveQuantitiesParameterDependence_flag:
+    print('Plot Prestrain - Parameter dependence ...')
+
+
+    reduced = False
+
+    inputValues = []
+    outputValues_q1 = []
+    outputValues_q2 = []
+    outputValues_q3 = []
+    outputValues_q12 = []
+    outputValues_q23 = []
+    outputValues_q13 = []
+    outputValues_b1 = []
+    outputValues_b2 = []
+    outputValues_b3 = []
+    # outputValues_b3 = []
     for i in range(0, len(parameterArray)):
         for v in range(0,len(parameterArray[i][1])):
             print("------------------")
@@ -1103,16 +749,16 @@ if plotEnergyLandscape_flag:
             print('i:', i)
             print('v:', v)
             print('len(parameterArray[i][1]):', len(parameterArray[i][1]))
-            # print('parameterArray[i][v]:', parameterArray[i][v])
 
             print('parameterName:'  , parameterArray[i][0])
             print('parameterValue: ', parameterArray[i][1][v])
-
             parameterName =  parameterArray[i][0]
             parameterValue = parameterArray[i][1][v]
 
             resultPath_parent = resultPathBase + "/" + parameterName
-            resultPath = resultPath_parent + "/value_" + str(parameterValue)
+            resultPath = resultPath_parent + "/value_" + str(np.round(parameterValue,3))
+
+
             try:
                 os.mkdir(resultPath_parent)
             except OSError as error:
@@ -1124,10 +770,6 @@ if plotEnergyLandscape_flag:
                 print("")
                 # print(error)
 
-
-            plot_minimizerInOppositeCurvatureRegion = False #this is not necessarily a local minimizer...
-            
-
             # Set Path for effective quantitites.
             QFilePath = resultPath + "/QMatrix.txt"
             BFilePath = resultPath + "/BMatrix.txt"
@@ -1140,848 +782,257 @@ if plotEnergyLandscape_flag:
             # Q=0.5*(np.transpose(Q)+Q) # symmetrize
 
 
-            # N=2000 #Number of Sampling Points
-            
-            # curvatureLength=2
-            
-            r, theta = np.meshgrid(np.linspace(0,curvatureLength,N),np.radians(np.linspace(0, 360, N)))
-
-            E = createEnergyValues(r,theta,Q,B)
-
-            """"
-                Create the energy landscape from the dataset E.
-                If 'Normalize' is set to true the energy is normalized via
-                E=E-E.min()
-            """
-            # title_string = r"ratio $r=0.12$"
-            title_string = r""+parameterName + ": " + str(parameterValue)
-            title_string = ''
-            # createEnergyLandscapeFigure(r,theta,E,curvatureLength,Q,B,resultPath,parameterName,parameterValue,title_string,True)
-            # createEnergyLandscapeFigure(r,theta,E,resultPath,parameterName,parameterValue,title_string,True)
-
-            
-            createEnergyLandscapeFigure(r,theta,E,resultPath,parameterName,parameterValue,title_string,True,displayMinimizer,plotContourLines)
-
-
-
-
-            #--------------------------------------------------------------------------
-
-            # (Test): eff quantities with x-axial minimizer.
-            # B = np.array([1.0, 1.0, 0.0]);
-
-            # Q = np.array([[3.0, 0.5, 0.0],
-            #             [0.5, 0.33, 0.0],
-            #             [0.0, 0.0, 1.0]]);
-            
-            # Q = np.array([[1.0, 0.0, 0.0],
-            # [0.0, 2.0, 0.0],
-            # [0.0, 0.0, 1.0]]);
-
-            # B = np.array([0.0, 0.5, 0.0]);
-
-
-            # (TEST) y-axial minimizer
-            # Q = np.array([[1.0, 0.0, 0.0],
-            #             [0.0, 1.0, 0.0],
-            #             [0.0, 0.0, 1.0]]);
-
-            # B = np.array([0.0, 5.0, 0.0]);
-
-
-            # (TEST) pi/4 minimizer (NPG1 - Fig10)
-            # Q = np.array([[1.0, 0.0, 0.0],
-            #             [0.0, 2.0, 0.0],
-            #             [0.0, 0.0, 1.0]]);
-
-            # B = np.array([2.0, 1.5, 0.0]);
-
-
-
-
-
-
-            # Compute local and global minimizer (by Sampling method)
-            # kappa=0
-            # kappa_pos=0
-            # kappa_neg=0
-            #
-            # N=500 #Number of Sampling Points
-            # # N=1500
-            # # length=5
-            # curvatureLength=2
+            # N=1000 #Number of Sampling Points
+            # curvatureLength=1
             # r, theta = np.meshgrid(np.linspace(0,curvatureLength,N),np.radians(np.linspace(0, 360, N)))
 
-            # # ----------------------------------------------------
-            # # print('r.shape[0]', r.shape[0])
-            # # # r, theta = np.meshgrid(np.linspace(0,curvatureLength,N),np.radians(np.linspace(0, 360, N,  endpoint=False)))
-            # # E=np.zeros(np.shape(r))
-            # # for k in range(0,N): 
-            # #     for l in range(0,N):     
-            # #         if theta[k,l]<np.pi:
-            # #             E[k,l]=energy(r[k,l],theta[k,l],Q,B)
-            # #         else:
-            # #             E[k,l]=energy(-r[k,l],theta[k,l],Q,B)
-            # # ----------------------------------------------------
-
-
             # E = createEnergyValues(r,theta,Q,B)
 
-            # # [kappa_globalmin,alpha_globalmin,kappa_localmin,alpha_localmin,energyDifference,minimizer_sign] = getMinimizers(E) 
-
-
             # """"
             #     Create the energy landscape from the dataset E.
             #     If 'Normalize' is set to true the energy is normalized via
             #     E=E-E.min()
             # """
             # # title_string = r"ratio $r=0.12$"
-            # title_string = r""+parameterName + ": " + str(parameterValue)
-            # # createEnergyLandscapeFigure(r,theta,E,title_string,True);
+            # # title_string = r""+parameterName + ": " + str(parameterValue)
+            # # title_string = ''
             # # createEnergyLandscapeFigure(r,theta,E,curvatureLength,Q,B,resultPath,parameterName,parameterValue,title_string,True)
-            # createEnergyLandscapeFigure(r,theta,E,resultPath,parameterName,parameterValue,title_string,True)
-
-
-
-
-            
-            # print('E.argmin():',E.argmin())
-            # Compute local and global minimizer (by Sampling method)
-
-            # print('E.shape[0]', E.shape[0])
-
-            # ----------------------------------------------------
-            # Compute Minimizer 
-            # [kmin,lmin]=np.unravel_index(E.argmin(),(N,N))
-            # kappamin=r[kmin,lmin]
-            # alphamin=theta[kmin,lmin]
-
-            # Emin = E[kmin,lmin]
-
-            # # Positive curvature region
-            # N_mid=int(N/2)
-            # [kmin,lmin]=np.unravel_index(E[:N_mid,:].argmin(),(N_mid,N))
-            # kappamin_pos=r[kmin,lmin]
-            # alphamin_pos=theta[kmin,lmin]
-            # Emin_pos=E[kmin,lmin]
-            # # Negative curvature region
-            # [kmin,lmin]=np.unravel_index(E[N_mid:,:].argmin(),(N_mid,N))
-            # kappamin_neg=r[kmin+N_mid,lmin]
-            # alphamin_neg=theta[kmin+N_mid,lmin]
-            # Emin_neg=E[kmin+N_mid,lmin]
-            # #
-
-            # # print('r:', r)
-            # # print('theta:', theta)
-            # # print('E:', E)
-
-
-            # print('Emin:', Emin)
-            # print('Emin_pos:', Emin_pos)
-            # print('Emin_neg:', Emin_neg)
-
-            # print('energy in origin (0,0):' ,energy(0,0,Q,B))
-
-            # if(abs(Emin_pos - Emin_neg)<1e-5):
-            #     print('Both minimizers have nearly the same energy - likely two minimizers.')
-
-            # if(Emin_pos < Emin_neg):
-            #     print('Global Minimizer has positive curvature.')
-            #     minimizer = 'positive'
-            #     energyDifference = Emin_neg-Emin_pos
-            # else:
-            #     print('Global Minimizer has negative curvature.')
-            #     minimizer = 'negative'
-            #     energyDifference = Emin_pos-Emin_neg
-
-            # print('E.min(): ',E.min())
-            # print('E.max(): ',E.max())
-
-            # # Normalize minimum energy to zero:
-            # E=E-E.min()
-
-
-            # print('E.min(): (after normalization): ',E.min())
-            # print('E.max(): (after normalization): ',E.max())
-
-
-            # if (minimizer == 'positive'):
-            #     alpha_globalmin = alphamin
-            #     kappa_globalmin = kappamin
-            #     kappa_localmin = (-1)*kappamin_neg 
-            #     alpha_localmin = alphamin_neg
-            # else :
-            #     alpha_globalmin = alphamin
-            #     kappa_globalmin = (-1)*kappamin
-            #     kappa_localmin = kappamin_pos
-            #     alpha_localmin = alphamin_pos
-
-            # # print('kappamin_pos: ', kappamin_pos)
-            # # print('alphamin_pos: ', alphamin_pos)
-            # # print('kappamin_neg: ', kappamin_neg)
-            # # print('alphamin_neg: ', alphamin_neg)
-
-            # print('kappa_globalmin: ', kappa_globalmin)
-            # print('alpha_globalmin: ', alpha_globalmin)
-            # print('kappa_localmin: ',  kappa_localmin)
-            # print('alpha_localmin: ',  alpha_localmin)
-
-
-            # #evaluate energy on minimizers
-            # # print('energy (kappa_pos)', energy(kappamin_pos,alphamin_pos,Q,B))
-            # # print('energy (kappa_neg)', energy(-kappamin_neg,alphamin_neg,Q,B))
-
-            # print('energy (global minimizer)', energy(kappa_globalmin,alpha_globalmin,Q,B))
-            # print('energy (local minimizer)', energy(kappa_localmin,alpha_localmin,Q,B))
-
-            # ----------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------------------
-
-
-        #     # Emax=100
-        #     Emax = E.max()
-        #     # levs=np.geomspace(1,E.max()*0.5,50)
-        #     # levs=np.geomspace(1,Emax,50)
-        #     # levs=np.geomspace(0.1,Emax,100)
-        #     # print('np.round(E.min(),decimals=2):', np.round(E.min(),decimals=2))
-        #     # levs=np.geomspace(0.01,Emax,100)
-
-        #     levs=np.geomspace(0.01,E.max(),300)  # Return numbers spaced evenly on a log scale (a geometric progression).
- 
-           
-        #     # print('levs:', levs)
-
-        #     # levs=np.geomspace(E.min(),E.max(),400)  #(np.geomspace: Return numbers spaced evenly on a log scale) 
-        #     # levs=np.geomspace(0,E.max(),400)
-        #     # levs=np.geomspace(1,Emax,400)
-
-        #     ## Create Figure
-        #     # fig, (ax1) = plt.subplots( nrows=1,figsize=(3,3.5),subplot_kw=dict(projection='polar'), gridspec_kw={'hspace': 0.4})
-
-        #     # fig, ax1 = plt.subplots( figsize=(width,height),subplot_kw=dict(projection='polar'), gridspec_kw={'hspace': 0.4})
-        #     # fig, ax1 = plt.subplots(ncols=1,nrows=1, figsize=(width,height),subplot_kw=dict(projection='polar'))
-        #     fig, ax1 = plt.subplots(ncols=1,nrows=1, figsize=(width,height), subplot_kw=dict(polar=True),gridspec_kw={'hspace': 0.4}, zorder=1)
-        #     fig.subplots_adjust(left=.1, bottom=0.01, right=.9, top=0.9)  #adjust placement inside figure
-
-        #     # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.75), cmap='brg', zorder=0)
-        #     # pcm=ax1.contourf(theta, r, E,100 , norm=colors.PowerNorm(gamma=0.4), cmap='brg', zorder=0)
-        #     # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=1.0), cmap='brg', zorder=0)
-        #     # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.5), cmap='brg', zorder=0)
-        #     # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.mins(),vmax=E.max()), cmap='brg', zorder=0)
-
-
-            
-        #     """
-        #         ---Test: Define new custom colormap
-        #         define top and bottom colormaps 
-        #     """
-        #     top = cm.get_cmap('Oranges_r', 128) # r means reversed version
-        #     bottom = cm.get_cmap('Blues', 128)# combine it all
-        #     newcolors = np.vstack((top(np.linspace(0, 1, 128)),
-        #                         bottom(np.linspace(0, 1, 128))))# create a new colormaps with a name of OrangeBlue
-        #     orange_blue = colors.ListedColormap(newcolors, name='OrangeBlue')
-
-
-        #     # bi_pride = LinearSegmentedColormap.from_list("", ["#D60270", "#9B4F96", "#0038A8"])
-        #     # testColor = LinearSegmentedColormap.from_list("", ["#4B0082",  "#FF7F50"])
-        #     testColor = LinearSegmentedColormap.from_list("", ["#380282","#0343DF","#FF7F50",  "#FE420F"])
-
-        #     """
-        #         Plot with Contourf:
-        #     """
-        #     # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.5,vmin=E.min(),vmax=E.max()), cmap='brg', zorder=0)
-        #     # # # # # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), cmap=mpl.cm.magma, zorder=0)
-        #     # # # # ###--- Hide Contour LineStroke (remove white lines between contour levels)
-        #     # for c in pcm.collections:
-        #     #   c.set_edgecolor("face")
-        #     # pcm.collections.set_edgecolor("face")
-
-        #     #Test imshow
-        #     # pcm=ax1.imshow(E,extent=[r.min(), r.max(), np.degrees(theta.min()),np.degrees(theta.max())],  norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), cmap=mpl.cm.magma, origin='lower')
-
-        #     ### 
-        #     """
-        #         Test Pcolormesh
-        #         * Reducing the image-quality/file-size by using rasterized option:
-        #         * Looks much smoother without 'rasterize' option however file-size gets out of hand..: 
-        #         * Together with the 'dpi=..' option of figsave we can control the file-size
-        #         * Advantage: Text etc. is still vectorized without having too large files.
-
-        #         Problem: How to get the Colorbarticks right (uniform spacing) when using PowerNorm (unclear)
-        #     """
-        #     pcm=ax1.pcolormesh(theta, r, E, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()) ,cmap='plasma', edgecolors='face', zorder=0, rasterized=True, alpha=0.8) 
-
-        #     # pcm=ax1.pcolormesh(theta, r, E, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()) ,cmap=testColor, edgecolors='face', zorder=0, rasterized=True, alpha=0.7) 
-        #     # pcm=ax1.pcolormesh(theta, r, E, norm=colors.PowerNorm(gamma=0.2,vmin=E.min(),vmax=E.max()) ,cmap='gray', edgecolors='face', zorder=0, rasterized=True, alpha=0.8) 
-        #     # pcm=ax1.pcolormesh(theta, r, E, norm=colors.PowerNorm(gamma=0.5,vmin=E.min(),vmax=E.max()) ,cmap=orange_blue, edgecolors='face', zorder=0, rasterized=True, alpha=0.8) 
-
-
-        #     # colormaptest=mpl.cm.get_cmap('viridis')
-        #     # colormaptest.set_under("k")
-
-        #     # pcm=ax1.pcolormesh(theta, r, E, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()) ,cmap=colormaptest, edgecolors='face', zorder=0, rasterized=True, shading='auto') 
-
-
-        #     #--Test Approach from : https://stackoverflow.com/questions/61897393/unevenly-irregularly-spaced-data-for-colorbar-with-evenly-spaced-colors
-        #     # energyRange=np.linspace(E.min(),E.max(),10)
-        #     # cmap_vir = plt.get_cmap('viridis')
-        #     # colors = cmap_vir(np.linspace(0, 1, len(energyRange) - 1))
-        #     # cmap, norm = mpl.colors.from_levels_and_colors(energyRange, colors)
-        #     # pcm=ax1.pcolormesh(theta, r, E, cmap=cmap, norm=norm, rasterized=True) 
-
-
-        #     # ColorNorm = colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max())
-
-            
-        #     # pcm=ax1.pcolormesh(theta, r, E, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), cmap='viridis', edgecolors='face')
-        #     # pcm=ax1.pcolormesh(theta, r, E, norm=ColorNorm ,cmap='brg', edgecolors='face', zorder=0, rasterized=True, shading='auto') 
-
-        #     # mpl.rcParams.update({"axes.grid" : False}) # Add grid
-
-        #     # pcm=ax1.pcolormesh(theta, r, E, norm=ColorNorm ,cmap='brg', edgecolors='face', zorder=0, rasterized=True) 
-        #     #Test tricontour:
-        #     # pcm=ax1.tricontourf(theta, r, E)
-
-        #     # print('ColorNorm:', ColorNorm)
-        #     # print('ColorNorm(E.min()):',ColorNorm(E.min()))
-        #     # print('ColorNorm(E.max()/2.0):',ColorNorm(E.max()/2.0))
-        #     # print('ColorNorm(E.max()):',ColorNorm(E.max()))
-
-
-        #     print('0.025*E.max():',0.025*E.max())
-        #     print('energyDifference: ', energyDifference)
-        #     ### Create additional contour-line plot:
-        #     contour_levs=np.geomspace(0.01,E.max(),1)  # levels used for an additional contour-plot
-        #     contour_levs = [0.1]
-        #     # contour_levs = np.linspace(0.001,0.5,4)
-        #     # contour_levs = np.linspace(0.001,0.25*E.max(),10)
-        #     # contour_levs = np.linspace(0.001,energyDifference*1.0,10) # contour only from zero (Minimizer) to energyDifference between global/local Minimizer.
-
-        #     # contour_levs_minimizer = np.linspace(0.001,energyDifference*0.5,6)
-        #     # contour_levs = np.linspace(0.0001,energyDifference*0.75,6) # contour only from zero (Minimizer) to energyDifference between global/local Minimizer.
-        #     contour_levs = np.linspace(0.0001,energyDifference*1.0,6) # contour only from zero (Minimizer) to energyDifference between global/local Minimizer.
-        #     print('contour_levs:', contour_levs)
-        #     contours = plt.contour(theta, r, E, contour_levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), colors='ivory',linewidths=0.65, linestyles="dashed", alpha=0.8, zorder=2)
-        #     contours_min = plt.contour(theta, r, E, [contour_levs[1]], norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), colors='yellow',linewidths=0.65, linestyles="solid", alpha=0.9, zorder=2)
-        #     # contours = plt.contour(theta, r, E, contour_levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), ,linewidths=0.1, linestyles="dashdot")
-        #     # contours = plt.contour(theta, r, E, contour_levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), cmap='plasma',linewidths=0.1, linestyles="dashdot")
-        #     # ax1.clabel(contours, inline=True, fontsize=4)
-        #     # contours = plt.contour(theta, r, E, contour_levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), colors='black',linewidths=0.1, linestyles="dashed")
-        #     # contours = plt.contour(theta, r, E, levs,norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), linewidths=0.1, linestyles="dashed", locator=mpl.ticker.LogLocator())
-        #     # plt.clabel(contours, inline=True, fontsize=4)
-
-            
-        #     # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), cmap='terrain', zorder=0)
-        #     # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.5,vmin=E.min(),vmax=E.max()), cmap=plt.cm.bone, zorder=0)
-
-
-        #     ###--- Set Title
-        #     ax1.set_title(r"ratio $r=0.12$",pad=6)
-        #     # ax1.set_title(r"ratio $r=0.12$",pad=10)
-        #     # ax1.set_title(r""+parameterName + ": " + str(parameterValue),pad=20)
-
-
-
-
-
-
-            
-
-        #     # # Plot global minimizer
-        #     # ax1.plot(alpha_globalmin, abs(kappa_globalmin),
-        #     #             markerfacecolor='blue',
-        #     #             markeredgecolor='white',            # marker edgecolor
-        #     #             marker='s',                         # each marker will be rendered as a circle
-        #     #             markersize=4,                       # marker size
-        #     #             markeredgewidth=0.5,                  # marker edge width
-        #     #             linewidth=0,
-        #     #             zorder=3,
-        #     #             alpha=1,                           # Change opacity
-        #     #             label = r"$\kappa_{0^\circ}(m^{-1})$")        
-        #     # Plot global minimizer
-
-
-        #     Minimizer_string = ': ('+ str(np.round(np.rad2deg(alpha_globalmin),decimals=1)) + '°' + ',' + str(np.round(abs(kappa_globalmin),decimals=2))+ ')'
-
-
-        #     # Mark Global Minimizer with a dot.
-        #     gmin = ax1.plot(alpha_globalmin, abs(kappa_globalmin),
-        #                     markerfacecolor='cornflowerblue',
-        #                     markeredgecolor='white',            # marker edgecolor
-        #                     marker='o',                         # each marker will be rendered as a circle
-        #                     markersize=6,                       # marker size
-        #                     markeredgewidth=1.0,                  # marker edge width
-        #                     linewidth=0,
-        #                     zorder=3,
-        #                     alpha=1,                           # Change opacity
-        #                     label = Minimizer_string)   
-        #                     # label = r"$\kappa_{0^\circ}(m^{-1})$")      
-                
-
-        #     # # #TEST: For Annotation
-        #     # ax1.plot(np.deg2rad(290), curvatureLength+1,
-        #     #             markerfacecolor='cornflowerblue',
-        #     #             markeredgecolor='white',            # marker edgecolor
-        #     #             marker='o',                         # each marker will be rendered as a circle
-        #     #             markersize=6,                       # marker size
-        #     #             markeredgewidth=1.0,                  # marker edge width
-        #     #             linewidth=0,
-        #     #             zorder=3,
-        #     #             alpha=1                           # Change opacity      
-        #     #             )
-            
-        #     if (minimizer_sign == 'positive'):
-        #         horizontal_annotation_alignment = 'left'
-        #         # kappa_sign_string = ""
-        #     else : 
-        #         horizontal_annotation_alignment = 'right'
-        #         # kappa_sign_string = "-"
-        #     #--- annotate global minimizer
-            
-        #     # ax1.annotate( '('+ str(np.round(np.rad2deg(alpha_globalmin),decimals=1)) + '°' + ',' + str(np.round(abs(kappa_globalmin),decimals=2))+ ')' ,
-        #     # # ax1.annotate( r'$(\theta_{m}, \kappa_m)=$' + '('+ str(np.round(np.rad2deg(alphamin),decimals=1)) + '°' + ',' + str(np.round(kappamin,decimals=1))+ ')' ,
-        #     #             # xycoords='polar',
-        #     #             # xy = (alpha_globalmin-0.15,abs(kappa_globalmin)+0.25),
-        #     #             # xy = (alpha_globalmin-0.10,abs(kappa_globalmin)+0.1),
-        #     #             xy = (alpha_globalmin,abs(kappa_globalmin)),
-        #     #             # xytext=(0.10, np.round(kappa_globalmin,decimals=2)-0.25),
-        #     #             # textcoords='polar',
-        #     #             # textcoords='offset points',
-        #     #             # xytext = (alpha_globalmin-0.10,abs(kappa_globalmin)+0.1),
-        #     #             # textcoords='figure fraction',
-        #     #             xycoords=ax1.get_xaxis_transform(),
-        #     #             # xytext = (0.5,0.5),
-        #     #             # xytext=(alpha_globalmin-0.25,abs(kappa_globalmin)+0.15), #Position of Text-annotation
-        #     #             # rotation=np.rad2deg(alpha_globalmin),
-        #     #             horizontalalignment=horizontal_annotation_alignment, 
-        #     #             verticalalignment="bottom",
-        #     #             color='ivory',
-        #     #             zorder=4,
-        #     #             fontsize='9')
-            
-
-
-            
-        #     if plot_minimizerInOppositeCurvatureRegion:
-        #             # Plot local minimizer
-        #             # ax1.plot(alphamin_neg, kappamin_neg,
-        #             ax1.plot(alpha_localmin, abs(kappa_localmin),   # We need to take abs(kappa) since negative curvatures are still plotted with a positive kappa!
-        #                         markerfacecolor='green',    
-        #                         markeredgecolor='white',            # marker edgecolor
-        #                         marker='D',                         # each marker will be rendered as a circle
-        #                         markersize=4,                       # marker size
-        #                         markeredgewidth=0.5,                  # marker edge width
-        #                         linewidth=0,                      # line width
-        #                         zorder=3,
-        #                         alpha=1)
-                    
-
-        #             #--- annotate local minimizer
-        #             ax1.annotate( '('+ str(np.round(360-np.rad2deg(alpha_localmin),decimals=1)) + '°' + ',' + str(np.round(kappa_localmin,decimals=2))+ ')' ,
-        #                         xy = (alpha_localmin,abs(kappa_localmin)),
-        #                         # xytext=(-1.6, np.round(kappa_localmin,decimals=2)+0.9),
-        #                         # xytext=(-1.6, np.round(kappa_localmin,decimals=2)),
-        #                         xytext=(alpha_localmin,abs(kappa_localmin)),
-        #                         color='ivory',
-        #                         # zorder=5,
-        #                         fontsize='8')
-
-
-        #     # print('alphamin: ' , alphamin ) 
-        #     # print('kappamin: ' , kappamin ) 
-        #     # print('Global Minimizer (alphamin, kappamin):' , '('+ str(np.round(np.rad2deg(alphamin),decimals=1)) + ',' + str(np.round(kappamin,decimals=1))+ ')' ) 
-        #     print('Global Minimizer (alphamin, kappamin):' , '('+ str(np.round(np.rad2deg(alpha_globalmin),decimals=1)) + ',' + str(np.round(abs(kappa_globalmin),decimals=2))+ ')' ) 
-        #     # print('Local Minimizer (alphamin, kappamin):' , '('+ str(np.round(360-np.rad2deg(alphamin_neg),decimals=1)) + ',' + str(np.round(-kappamin_neg,decimals=1))+ ')' ) 
-
-
-        #     print('Local Minimizer opposite curvature (alphamin, kappamin):' , '('+ str(np.round(360-np.rad2deg(alpha_localmin),decimals=1)) + ',' + str(np.round(abs(kappa_localmin),decimals=2))+ ')' ) 
-        #     # ax1.annotate(alphamin, (alphamin,kappamin))
-
-
-
-
-        #     # rotate radius axis labels.
-        #     # ax1.set_rlabel_position(135)
-
-        #     colorbarticks=np.geomspace(0.00001,E.max(),10)
-        #     # # colorbarticks=np.geomspace(0.00001,Emax,4)
-        #     # colorbarticks=np.linspace(E.min(),E.max(),10)
-        #     # # colorbarticks=np.geomspace(0.00001,E.max(),14)
-
-        #     # linSeq = np.linspace(E.min(),E.max(),10)
-        #     # linSeq = np.geomspace(0.00001,Emax,10)
-
-        #     # colorbarticks = ColorNorm.inverse(((linSeq - E.min())/(E.max()-E.min()))**0.4)
-
-
-        #     # colorbarticks=ColorNorm(np.linspace(E.min(),E.max(),4)) * E.max()
-
-
-
-        #     #TEST: evenly sample values from E:
-        #     # numElems = 3
-        #     # idx = np.round(np.linspace(0, len(E) - 1, numElems)).astype(int)
-        #     # colorbarticks = E[0][idx]
-        #     print('colorbarticks:', colorbarticks)
-
-
-
-        #     # We need to map those colorbarticks to the colorbar.
-
-        #     #---Test
-        #     # axins = inset_axes( ax1,
-        #     #                     width="100%",  
-        #     #                     height="5%",
-        #     #                     loc='lower center',
-        #     #                     borderpad=-5
-        #     #                    )
-            
-
-        #     #-------------------
-
-
-        #     # cbar = fig.colorbar(pcm,ticks=energyRange)
-
-
-        #     # Colorbar for Contourf-Plot:
-        #     # cbar = plt.colorbar(pcm, ax=[ax1], extend='max', ticks=colorbarticks, pad=0.1, orientation="horizontal")
-
-        #     # Colorbar for pcolormesh-Plot:
-        #     # cbar = fig.colorbar(pcm, ax=ax1, pad=0.075,  orientation="horizontal") # so far best with pcolormesh.
-        #     cbar = fig.colorbar(pcm, ax=ax1, pad=0.1,  orientation="horizontal") # so far best with pcolormesh.
-
-        #     # cbar = plt.colorbar(pcm, ax=[ax1], extend='max', pad=0.1, orientation="horizontal")
-
-        #     # cbar = plt.colorbar(pcm, ax=[ax1], norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), extend='max', ticks=colorbarticks, pad=0.1, orientation="horizontal")
-        #     # fig.colorbar(pcm, ax=ax1, pad=0.1, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), ticks=colorbarticks,  orientation="horizontal")
-        #     # cbar = plt.colorbar(pcm, ax=[ax1], extend='max', pad=0.2, orientation="horizontal")
-        #     # cbar = plt.colorbar(pcm, ax=[ax1], extend='max',norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), ticks=colorbarticks, pad=0.2, orientation="horizontal")
-        #     # fig.colorbar(pcm, ax=ax1, pad=0.1, ticks=colorbarticks,  orientation="horizontal", spacing='proportional')
-
-        #     # fig.colorbar(pcm, ax=ax1, pad=0.1,  orientation="horizontal", spacing='proportional')
-
-
+            # # createEnergyLandscapeFigure(r,theta,E,resultPath,parameterName,parameterValue,title_string,True)
+            # # createEnergyLandscapeFigure(r,theta,E,resultPath,parameterName,parameterValue,title_string,True,displayMinimizer)
 
+            # [kappa_globalmin,alpha_globalmin,kappa_localmin,alpha_localmin,energyDifference,minimizer_sign] = getMinimizers(r,theta,E) 
 
-        #     # cbar = fig.colorbar(pcm, ax=ax1, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()),ticks=colorbarticks, pad=0.1,  orientation="horizontal")
-        #     # cbar.ax.set_xscale('linear') 
-        #     # cbar.ax.set_xscale('log') 
+            inputValues.append(parameterValue)
+            # outputValues_b1.append(B[0])
+            # outputValues_b2.append(B[1])
+            # outputValues_b3.append(B[2])
+            outputValues_q1.append(Q[0][0])
+            outputValues_q2.append(Q[1][1])
+            outputValues_q3.append(Q[2][2])
+            outputValues_q12.append(Q[0][1])
+            outputValues_q23.append(Q[1][2])
+            outputValues_q13.append(Q[0][2])
+            outputValues_b1.append(B[0])
+            outputValues_b2.append(B[1])
+            outputValues_b3.append(B[2])
+            # ---------------------------------------------------------------------------------------------------------
 
-        #     # cbar = mpl.colorbar.ColorbarBase()
 
-        #     # fig.colorbar(pcm, ax=[ax1], extend='max', ticks=colorbarticks, pad=0.1, orientation="horizontal", cax=axins)
-        #     # cbar = plt.colorbar(pcm, ax=[ax1], ticks=colorbarticks, pad=0.2, orientation="horizontal", location = 'bottom', fraction=0.1)
-        #     # cbar.ax.tick_params(labelsize=8)
 
-        #     """
-        #         Set Tick labels
-        #         x: Angle 
-        #         y: Radius
-            
-        #     """
+        #--- Create Plot ...
+        # Setup Plot style.
+        # plt.style.use("seaborn")
+        # plt.style.use("seaborn-v0_8")
+        # plt.style.use('paperstyle.mplstyle')
+        # Set correct Figure size (width/height) to make the figure fit the text without scaling.
+        textwidth = 6.26894      # textwidth in inch
+        width = textwidth 
+        # height = textwidth/1.618 # The golden ratio.
+        height = width/1.618 # The golden ratio.
+        # height = width
 
-        #     # plt.rcParams["axes.axisbelow"] = False
+        plt.style.use("seaborn-v0_8-darkgrid")
+        # plt.style.use("seaborn-darkgrid")
+        mpl.rcParams['text.usetex'] = True
+        mpl.rcParams["font.family"] = "serif"
+        mpl.rcParams["font.size"] = "10"
+        mpl.rcParams['xtick.bottom'] = True
+        mpl.rcParams['xtick.major.size'] = 3
+        mpl.rcParams['xtick.minor.size'] = 1.5
+        mpl.rcParams['xtick.major.width'] = 0.75
+        mpl.rcParams['ytick.left'] = True
+        mpl.rcParams['ytick.major.size'] = 3
+        mpl.rcParams['ytick.minor.size'] = 1.5
+        mpl.rcParams['ytick.major.width'] = 0.75
+        mpl.rcParams.update({'font.size': 10})
+        mpl.rcParams['axes.labelpad'] = 3
+        #---------------------
 
-        #     anglelabel=["0°","45°", "90°", "135°", "180°","-135°","-90°","-45°"]
-        #     # anglelabel=["0°","45°", "90°", "135°",r"$\pm180$° ","-135°","-90°","-45°"]
-        #     ax1.set_xticks(np.array([.0,1/4,2/4,3/4,1,5/4,6/4,7/4])*np.pi)
-        #     # ax1.set_xticks(np.pi/180. * np.linspace(180,  -180, 8, endpoint=False))
-        #     ax1.set_xticklabels(anglelabel)
-        #     # ax1.xaxis.grid(True, color='white')
-        #     ax1.xaxis.grid(True)
-        #     # ax1.zorder=4
-        #     # ax1.set_zorder(ax1.get_zorder()+4); 
-        #     # ax1.grid(zorder=10)
-        #     # ax1.patch.set_visible(False)
+        # Create a figure & axes object
+        # fig, ax1 = plt.subplots(ncols=1,nrows=1, figsize=(width,height),gridspec_kw={'hspace': 0.4}, zorder=1)
+        # fig, ax1 = plt.subplots(ncols=1,nrows=1, figsize=(width,height), zorder=1)
+        # fig, axs = plt.subplots(ncols=2,nrows=3, figsize=(width,height), zorder=1)
 
-        #     # We want to grid-axis to be on top of the contour lines to hide confusing contours on the grid-axis.
-        #     ax1.set_axisbelow(False)
+        if reduced:
+            fig, axs = plt.subplots(ncols=2,nrows=3, figsize=(width,height), constrained_layout=True)
+        else : 
+            fig, axs = plt.subplots(ncols=3,nrows=3, figsize=(width,height), constrained_layout=True)
+        
+        # title_string = r"$B_1$" + "-" r""+parameterName 
+        title_string = ''
 
-        #     # tick locations
-        #     # thetaticks = np.arange(0,360,45)
-        #     # # set ticklabels location at 1.3 times the axes' radius
-        #     # ax1.set_thetagrids(thetaticks, frac=1.3)
+        # x_label = r"$\rho$"
+        # x_label = r"$\theta$"
+        # axs.set_xlabel(x_label, labelpad=4)
 
-        #     # Adjust pad of xticklabels:
-        #     ax1.tick_params(pad=0.5)
+        # ax1.set_ylim(-0.1, 1.0)
 
-        #     #rotate radius axis labels.
-        #     # ax1.set_rlabel_position(135)
-        #     ax1.set_rlabel_position(225)
-        #     # ax1.set_rlabel_position(235)
 
-        #     # ax1.set_rticks([0.5, 1, 1.5, 2])  # Less radial ticks
+        print('plot curvature over parameter : '+ parameterName)
+        print('inputValues:', inputValues)
+        # print('outputValues:', outputValues_q1)
+        # print('outputValues:', outputValues_q2)
+        # print('outputValues:', outputValues_q3)
+        # print('outputValues:', outputValues_q12)
+
+        if reduced:
+            dataSets = [
+                        (outputValues_q1, r"$\widehat{Q}^h_{11}$", r"$\widehat{Q}^h_{11}$"),
+                        (outputValues_q2, r"$\widehat{Q}^h_{22}$", r"$\widehat{Q}^h_{22}$"),
+                        (outputValues_q3, r"$\widehat{Q}^h_{33}$", r"$\widehat{Q}^h_{33}$"),
+                        (outputValues_q12, r"$\widehat{Q}^h_{12}$", r"$\widehat{Q}^h_{12}$"),
+                        (outputValues_b1, r"$\widehat{B}^h_1$", r"$\widehat{B}^h_1$"),
+                        (outputValues_b2, r"$\widehat{B}^h_2$", r"$\widehat{B}^h_2$"),
+                        ]
+        else : 
+            dataSets = [
+                    (outputValues_q1, r"$\widehat{Q}^h_{11}$", r"$\widehat{Q}^h_{11}$"),
+                    (outputValues_q2, r"$\widehat{Q}^h_{22}$", r"$\widehat{Q}^h_{22}$"),
+                    (outputValues_q3, r"$\widehat{Q}^h_{33}$", r"$\widehat{Q}^h_{33}$"),
+                    (outputValues_q12, r"$\widehat{Q}^h_{12}$", r"$\widehat{Q}^h_{12}$"),
+                    (outputValues_q23, r"$\widehat{Q}^h_{23}$", r"$\widehat{Q}^h_{23}$"),
+                    (outputValues_q13, r"$\widehat{Q}^h_{13}$", r"$\widehat{Q}^h_{13}$"),
+                    (outputValues_b1, r"$\widehat{B}^h_1$", r"$\widehat{B}^h_1$"),
+                    (outputValues_b2, r"$\widehat{B}^h_2$", r"$\widehat{B}^h_2$"),
+                    (outputValues_b3, r"$\widehat{B}^h_3$", r"$\widehat{B}^h_3$")
+                    ]
+
+        # Get a color map with distinct colors
+        cmap = get_cmap('tab10')  # Using matplotlib's qualitative color map
+
+
+
+        """
+            Plot each function in its own subplot with different colors.
+            axs is a 2x3 grid of subplots (from plt.subplots(2, 3)).
+            '.flat': converts this 2D grid into a 1D iterator, allowing you to loop through subplots sequentially (row-wise order):
+            Subplot order: [axs[0,0], axs[0,1], axs[0,2], axs[1,0], axs[1,1], axs[1,2]]
+            'zip': pairs elements from two iterables:
+                The first iterable: subplots (axs.flat)
+                The second iterable: dataSet list 
+            This creates tuples of matched pairs: (axs[0,0], functions[0]), (axs[0,1], functions[1]), ..., (axs[1,2], functions[5])
+            'enumerate': Wraps around the zip result to add an index counter i.
+                        for each iteration it returns (index, (subplot, function_data))
+        """
+        for i, (ax, (y, title, label)) in enumerate(zip(axs.flat, dataSets)):
+            color = cmap(i / len(dataSets))  # Get unique color from colormap
+            # ax.plot(inputValues, y, label=label, lw=1.5, color=color, marker='o', markersize=5 )
+
+            # ax.set_title(title,fontsize=10)
 
             
-
-
-        #     # ax1.axis.set_major_locator(MultipleLocator(0.5))
-        #     # ax1.yaxis.set_major_locator(MultipleLocator(0.5))
-
-        #     radiusTickLength = 0.5
-        #     ax1.yaxis.set_major_locator(plt.FixedLocator(np.arange(radiusTickLength,curvatureLength,radiusTickLength)))
-
-        #     # ax1.set_yticks(np.array([1,2,3,4]))
-        #     # ax1.set_yticklabels(["1","2","3","4"], zorder=20, color="white")
-        #     # ax1.yxis.set_major_locator
-        #     # ax1.set_yticks(np.array([1,2]))
-        #     # ax1.set_yticklabels(["1","2"], zorder=20, color="white")
-        #     # ax1.set_yticks(np.array([1,1.5]))
-        #     # ax1.set_yticklabels(["1","1.5"], zorder=20, color="white")
-        #     # ax1.set_yticks(np.array([1,2,3]))
-        #     # ax1.set_yticklabels(["1","2","3"], zorder=20, color="white")
-        #     ax1.yaxis.set_tick_params(color='white', pad = 1.0)
-        #     # ax1.yaxis.grid(True, color='white', alpha=0.75)
-        #     ax1.yaxis.grid(True)
-
-        #     # ax1.spines['polar'].set_visible(True)
-        #     # Create Minor ticks manually as polar coordinates does not have the option.
-        #     tick = [ax1.get_rmax(),ax1.get_rmax()*0.97]
-        #     for t  in np.deg2rad(np.arange(0,360,5)):
-        #         ax1.plot([t,t], tick, lw=0.1, color="k")
-
-
-        #     #Test:tight Layout
-        #     # plt.tight_layout()
-
-
-        #     #TEST: Legend
-        #     # ax1.legend(loc="lower center")
-        #     # ax1.legend(loc="lower right",bbox_to_anchor=[1.0, 0.01],frameon=True)
-
-        #     # ax1.legend(bbox_to_anchor=[0.8, -0.05],loc='center',borderaxespad=0.1,frameon=True)
-        #     # ax1.legend(bbox_to_anchor=[0.8, -0.1],loc='lower center',borderaxespad=0.1,frameon=True)
-        #     # ax1.legend(bbox_to_anchor=[0.8, 0.2],borderaxespad=0.1,frameon=True,bbox_transform=fig.transFigure)
-        #     # ax1.legend(loc='best')
-        #     legend = ax1.legend(bbox_to_anchor=[0.75, 0.15],loc='lower center',borderaxespad=0.1,frameon=True,bbox_transform=fig.transFigure,handletextpad=0.1)
-        #     frame = legend.get_frame()
-        #     # frame.set_color('white')
-        #     frame.set_edgecolor('black')
-
-
-
-        #     # axbox = ax1.get_position()
-        #     # legend = fig.legend([gmin], [Minimizer_string], loc='center',bbox_to_anchor=[axbox.x0+0.5*axbox.width, axbox.y0-0.05], bbox_transform=fig.transFigure)
-        #     # fig.legend(gmin, r""+Minimizer_string)
-        # #    labels=line_labels,   # The labels for each line
-        # #    loc="center right",   # Position of legend
-        # #    bbox_to_anchor=[1.35, 0.55],
-        # #    borderaxespad=0.15,    # Small spacing around legend box
-        # #    frameon=True
-        # #    # title="Legend Title"  # Title for the legend
-        # #    )
-
-        #     # Save Figure as png.
-        #     # fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + '.png', dpi=100)
-        #     # Save Figure as pdf.
-        #     fig.set_size_inches(width, height)
-        #     fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + '.pdf', dpi=500) #dpi only has an effect if "rasterize" option is used.
-        #     # fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + 'noDPI' + '.pdf')
-
-
-        #     #Plot Colorbar separately:
-
-
-
-        #     # fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + 'Legend' + '.pdf',
-        #     #              dpi=300,
-        #     #              bbox_inches='tight')
-
-# --------------------------------------------------------------------------------------------------------------
-
-
-
-
-
-# OLD VERSION:
-# plt.style.use("seaborn")
-# plt.style.use('paperstyle.mplstyle')
-
-
-# # plt.style.use("seaborn")
-
-# # mpl.rcParams['text.usetex'] = True
-# # mpl.rcParams["font.family"] = "serif"
-# # mpl.rcParams["font.size"] = "8"
-# # mpl.rcParams['xtick.bottom'] = True
-# # mpl.rcParams['xtick.major.size'] = 2
-# # mpl.rcParams['xtick.minor.size'] = 1.5
-# # mpl.rcParams['xtick.major.width'] = 0.75
-# # # mpl.rcParams['xtick.labelsize'] = 8
-# # mpl.rcParams['xtick.major.pad'] = 1
-# # mpl.rcParams['ytick.left'] = True
-# # mpl.rcParams['ytick.major.size'] = 2
-# # mpl.rcParams['ytick.minor.size'] = 1.5
-# # mpl.rcParams['ytick.major.width'] = 0.75
-# # mpl.rcParams['ytick.labelsize'] = 8
-# # mpl.rcParams['ytick.major.pad'] = 1
-# # mpl.rcParams['axes.titlesize'] = 8
-# # mpl.rcParams['axes.titlepad'] = 1
-# # # mpl.rcParams['axes.labelsize'] = 8
-# # #Adjust Legend:
-# # mpl.rcParams['legend.frameon'] = True       # Use frame for legend
-# # # mpl.rcParams['legend.framealpha'] = 0.5 
-# # mpl.rcParams['legend.fontsize'] = 8         # fontsize of legend
-# # #Adjust grid:
-# # # mpl.rcParams.update({"axes.grid" : True}) # Add grid
-# # mpl.rcParams.update({"axes.grid" : False}) # Add grid
-# # mpl.rcParams['axes.labelpad'] = 3
-# # mpl.rcParams['grid.linewidth'] = 0.25
-# # mpl.rcParams['grid.alpha'] = 0.75 # 0.75
-# # mpl.rcParams['grid.linestyle'] = '-'
-# # mpl.rcParams['grid.color']   = 'lightgray'#'black'
-# # mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsfonts}' # Makes Use of \mathbb possible.
-
-
-
-# textwidth = 6.26894 #textwidth in inch
-# # width = textwidth * 0.5
-# width = textwidth * 0.33
-# # width = textwidth 
-# height = width/1.618 # The golden ratio.
-
-
-#             # Emax=100
-#             Emax = E.max()
-#             # levs=np.geomspace(1,E.max()*0.5,50)
-#             # levs=np.geomspace(1,Emax,50)
-#             # levs=np.geomspace(0.1,Emax,100)
-#             # print('np.round(E.min(),decimals=2):', np.round(E.min(),decimals=2))
-#             # levs=np.geomspace(0.01,Emax,100)
-#             levs=np.geomspace(0.01,Emax,200)
-#             # print('levs:', levs)
-
-#             # levs=np.geomspace(E.min(),E.max(),400)  #(np.geomspace: Return numbers spaced evenly on a log scale) 
-#             # levs=np.geomspace(0,E.max(),400)
-#             # levs=np.geomspace(1,Emax,400)
-
-#             ## Create Figure
-#             # fig, (ax1) = plt.subplots( nrows=1,figsize=(3,3.5),subplot_kw=dict(projection='polar'), gridspec_kw={'hspace': 0.4})
-
-#             # fig, ax1 = plt.subplots( figsize=(width,height),subplot_kw=dict(projection='polar'), gridspec_kw={'hspace': 0.4})
-#             fig, ax1 = plt.subplots(ncols=1,nrows=1, figsize=(width,height),subplot_kw=dict(projection='polar'))
-#             fig.subplots_adjust(left=.1, bottom=.1, right=.95, top=.95)  #adjust placement inside figure
-
-#             # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.75), cmap='brg', zorder=0)
-#             # pcm=ax1.contourf(theta, r, E,100 , norm=colors.PowerNorm(gamma=0.4), cmap='brg', zorder=0)
-#             # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=1.0), cmap='brg', zorder=0)
-#             # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.5), cmap='brg', zorder=0)
-#             pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), cmap='brg', zorder=0)
-#             # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.4,vmin=E.min(),vmax=E.max()), cmap='terrain', zorder=0)
-#             # pcm=ax1.contourf(theta, r, E, levs, norm=colors.PowerNorm(gamma=0.5,vmin=E.min(),vmax=E.max()), cmap=plt.cm.bone, zorder=0)
-
-
-#             ###--- Set Title
-#             # ax1.set_title(r"ratio $r=0.12$",pad=20)
-#             # ax1.set_title(r""+parameterName + ": " + str(parameterValue),pad=20)
-
-
-
-
-
-
             
+            ax.set_ylabel('')
 
-#             # Plot global minimizer
-#             ax1.plot(alpha_globalmin, abs(kappa_globalmin),
-#                         markerfacecolor='blue',
-#                         markeredgecolor='white',            # marker edgecolor
-#                         marker='s',                         # each marker will be rendered as a circle
-#                         markersize=6,                       # marker size
-#                         markeredgewidth=1,                  # marker edge width
-#                         linewidth=0,
-#                         zorder=3,
-#                         alpha=1,                           # Change opacity
-#                         label = r"$\kappa_{0^\circ}(m^{-1})$")        
-            
-#             if (minimizer == 'positive'):
-#                 horizontal_annotation_alignment = 'left'
-#                 # kappa_sign_string = ""
-#             else : 
-#                 horizontal_annotation_alignment = 'right'
-#                 # kappa_sign_string = "-"
-#             #--- annotate global minimizer
-            
-#             ax1.annotate( '('+ str(np.round(np.rad2deg(alpha_globalmin),decimals=1)) + '°' + ',' + str(np.round(kappa_globalmin,decimals=2))+ ')' ,
-#             # ax1.annotate( r'$(\theta_{m}, \kappa_m)=$' + '('+ str(np.round(np.rad2deg(alphamin),decimals=1)) + '°' + ',' + str(np.round(kappamin,decimals=1))+ ')' ,
-#                         # xycoords='polar',
-#                         # xy = (alpha_globalmin-0.15,abs(kappa_globalmin)+0.25),
-#                         xy = (alpha_globalmin-0.10,abs(kappa_globalmin)+0.1),
-#                         # xytext=(0.10, np.round(kappa_globalmin,decimals=2)-0.25),
-#                         # textcoords='figure fraction',
-#                         # xytext = (0.5,0.5),
-#                         # xytext=(alpha_globalmin-0.25,abs(kappa_globalmin)+0.15), #Position of Text-annotation
-#                         # rotation=np.rad2deg(alpha_globalmin),
-#                         ha=horizontal_annotation_alignment, va="bottom",
-#                         color='ivory',
-#                         zorder=4,
-#                         fontsize='8')
-            
+            # x_labelString = "$\" + ParameterName + "$"
+            # print('x_labelString:', x_labelString)
 
+            ax.set_xlabel(r"$\alpha$",labelpad=4)
 
+            if parameterName == "alpha":
+                ax.set_xlabel(r"$\alpha$",labelpad=4)
+            else :
+                ax.set_xlabel(r"$\theta$",labelpad=4)
             
-#             if plot_minimizerInOppositeCurvatureRegion:
-#                     # Plot local minimizer
-#                     # ax1.plot(alphamin_neg, kappamin_neg,
-#                     ax1.plot(alpha_localmin, abs(kappa_localmin),   # We need to take abs(kappa) since negative curvatures are still plotted with a positive kappa!
-#                                 markerfacecolor='green',    
-#                                 markeredgecolor='white',            # marker edgecolor
-#                                 marker='D',                         # each marker will be rendered as a circle
-#                                 markersize=6,                       # marker size
-#                                 markeredgewidth=1,                  # marker edge width
-#                                 linewidth=0,                      # line width
-#                                 zorder=3,
-#                                 alpha=1)
-                    
-
-#                     #--- annotate local minimizer
-#                     ax1.annotate( '('+ str(np.round(360-np.rad2deg(alpha_localmin),decimals=1)) + '°' + ',' + str(np.round(kappa_localmin,decimals=2))+ ')' ,
-#                                 xy = (alpha_localmin,abs(kappa_localmin)),
-#                                 # xytext=(-1.6, np.round(kappa_localmin,decimals=2)+0.9),
-#                                 # xytext=(-1.6, np.round(kappa_localmin,decimals=2)),
-#                                 xytext=(alpha_localmin,abs(kappa_localmin)),
-#                                 color='ivory',
-#                                 # zorder=5,
-#                                 fontsize='8')
 
 
-#             # print('alphamin: ' , alphamin ) 
-#             # print('kappamin: ' , kappamin ) 
-#             # print('Global Minimizer (alphamin, kappamin):' , '('+ str(np.round(np.rad2deg(alphamin),decimals=1)) + ',' + str(np.round(kappamin,decimals=1))+ ')' ) 
-#             print('Global Minimizer (alphamin, kappamin):' , '('+ str(np.round(np.rad2deg(alpha_globalmin),decimals=1)) + ',' + str(np.round(abs(kappa_globalmin),decimals=2))+ ')' ) 
-#             # print('Local Minimizer (alphamin, kappamin):' , '('+ str(np.round(360-np.rad2deg(alphamin_neg),decimals=1)) + ',' + str(np.round(-kappamin_neg,decimals=1))+ ')' ) 
-
+            #TEST (Spline interpolation)
+            # Create cubic spline interpolation
+            interp_function = CubicSpline(inputValues, y)
+
+            #create "continuous" values 
+            x_continuous = np.linspace(min(inputValues), max(inputValues), 100)
+            y_interp = interp_function(x_continuous)
+
+
+            ax.scatter(inputValues, y, color=color, s=35, zorder=5, edgecolor='black')
+            ax.plot(x_continuous, y_interp, color=color, lw=2,  label=label)
+
+            ax.legend()
+
+            # Set square aspect ratio
+            # ax.set_aspect(1/4)
+
+            # Set axis limits with padding
+            # ax.set_xlim(min(inputValues)-0.01, max(inputValues)+0.01)
+            ax.set_xlim(min(inputValues)-0.05, max(inputValues)+0.05)
+            y_min, y_max = np.nanmin(y), np.nanmax(y)
+            # x_min, x_max = np.nanmin(y), np.nanmax(y)
+            ax.set_ylim(y_min - 0.1*(y_max - y_min), 
+                    y_max + 0.1*(y_max - y_min))
+
+
+
+
+        # l1 = ax1.plot(inputValues,outputValues_q1 ,
+        #                 label=r"$\widehat{Q}^h_{11}$" ,
+        #                 markerfacecolor='orange',
+        #                 markeredgecolor='gray',            # marker edgecolor
+        #                 marker='o',                         # each marker will be rendered as a circle
+        #                 markersize=5,                       # marker size
+        #                 markeredgewidth=1.0,                  # marker edge width)
+        #                 linewidth=1.5
+        #              )
+        # l2 = ax1.plot(inputValues,outputValues_q2 ,
+        #               label=r"$\widehat{Q}^h_{22}$",
+        #             #   markerfacecolor='orange',
+        #               markeredgecolor='gray',            # marker edgecolor
+        #               marker='s',                         # each marker will be rendered as a circle
+        #               markersize=5,                       # marker size
+        #               markeredgewidth=1.0,                  # marker edge width)
+        #               linewidth=1.5
+        #              )
+        # l3 = ax1.plot(inputValues,outputValues_q3 , 
+        #               label=r"$\widehat{Q}^h_{33}$",
+        #             #   markerfacecolor='orange',
+        #               markeredgecolor='gray',            # marker edgecolor
+        #               marker='^',                         # each marker will be rendered as a circle
+        #               markersize=5,                       # marker size
+        #               markeredgewidth=1.0,                  # marker edge width)
+        #               linewidth=1.5
+        #              )
+    
+        # l3 = ax1.plot(inputValues,outputValues_q12 , 
+        #         label=r"$\widehat{Q}^h_{12}$",
+        #     #   markerfacecolor='orange',
+        #         markeredgecolor='gray',            # marker edgecolor
+        #         marker='^',                         # each marker will be rendered as a circle
+        #         markersize=5,                       # marker size
+        #         markeredgewidth=1.0,                  # marker edge width)
+        #         linewidth=1.5
+        #         )
 
-#             print('Local Minimizer opposite curvature (alphamin, kappamin):' , '('+ str(np.round(360-np.rad2deg(alpha_localmin),decimals=1)) + ',' + str(np.round(abs(kappa_localmin),decimals=2))+ ')' ) 
-#             # ax1.annotate(alphamin, (alphamin,kappamin))
+        # legend = ax1.legend()
 
 
 
 
-#             # rotate radius axis labels.
-#             # ax1.set_rlabel_position(135)
+        # legend = ax1.legend(bbox_to_anchor=[0.75, 0.15],loc='lower center',borderaxespad=0.1,frameon=True,bbox_transform=fig.transFigure,handletextpad=0.1)
+        # frame = legend.get_frame()
+        # frame.set_edgecolor('black')
 
-#             colorbarticks=np.geomspace(0.00001,Emax,10)
+        ## PUT LEGEND ON BOTTOM /TOP
+        # legend = fig.legend([l1, l2, l3],     # The line objects
+        #         # labels=line_labels,   # The labels for each line
+        #         loc="lower left",   # Position of legend
+        #         # bbox_to_anchor=[1.0, 0.55],
+        #         # bbox_to_anchor=[0.1, 1.0], # TOP
+        #         # bbox_to_anchor=[0.1, -0.15], # BOTTOM
+        #         bbox_to_anchor=[0.125, -0.15], # BOTTOM
+        #         borderaxespad=0.15,    # Small spacing around legend box
+        #         frameon=True,
+        #         ncol = 4
 
+        #         # title="Legend Title"  # Title for the legend
+        #         )
 
-            
-#             cbar = plt.colorbar(pcm, ax=[ax1], extend='max', ticks=colorbarticks, pad=0.1, orientation="horizontal")
-#             cbar.ax.tick_params(labelsize=8)
-
-#             anglelabel=["0°","45°", "90°", "135°","180°","135°","90°","45°"]
-#             ax1.set_xticks(np.array([.0,1/4,2/4,3/4,1,5/4,6/4,7/4])*np.pi)
-#             ax1.set_xticklabels(anglelabel)
-#             ax1.xaxis.grid(True, color='white')
-#             # ax1.set_yticks(np.array([1,2,3,4]))
-#             # ax1.set_yticklabels(["1","2","3","4"], zorder=20, color="white")
-#             ax1.set_yticks(np.array([1,2,3]))
-#             ax1.set_yticklabels(["1","2","3"], zorder=20, color="white")
-#             ax1.yaxis.set_tick_params(color='white')
-#             ax1.yaxis.grid(True, color='white', alpha=0.75)
-#             # Save Figure as pdf.
-#             fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + '.png', dpi=100)
-
-#             fig.set_size_inches(width, height)
-#             fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + '.pdf')
+        # frame = legend.get_frame()
+        # # frame.set_color('white')
+        # frame.set_edgecolor('gray')
 
+        #Test:tight Layout
+        # plt.tight_layout()
+        # plt.tight_layout(pad=3, w_pad=4, h_pad=4) 
+        fig.set_size_inches(width, height)
+        fig.savefig(resultPath_parent + '/ElasticModuliDependence_' + '_' + parameterName +  '.pdf', dpi=1500) #dpi on
+#----------------------------------------------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/testsuite/microstructure_PythonAddons.py b/testsuite/microstructure_PythonAddons.py
index 1e1e993bc4e034707ec3e5bf45f844c91707eac3..ee512da09551728af31ac07600c137ff3a3f7227 100644
--- a/testsuite/microstructure_PythonAddons.py
+++ b/testsuite/microstructure_PythonAddons.py
@@ -8,11 +8,219 @@ import matplotlib.pyplot as plt
 import matplotlib.colors as colors
 from matplotlib import cm
 from matplotlib.colors import ListedColormap, LinearSegmentedColormap
-
+import shutil
 from scipy.optimize import minimize_scalar 
 import importlib
+import subprocess
 #---------------------------------------------------------------------------
 
+
+def SolveMacroProblem(executable,parameterFile,gridLevels,parameterArray,conforming_DiscreteJacobian,resultPath,instrumentedPath,new_ParameterPath,pythonPath,INSTRUMENTED):
+    print('Solve Macro Problem.')
+    
+    """
+        Run for each parameter in 'parameterArray' unless none is given 
+        - Then run once.
+    """
+    if len(parameterArray)>0:
+        print("Compute for a given parameterArray:", parameterArray)
+
+    # ------ Loops through Parameters -----------
+    for i in range(0, len(parameterArray)) if len(parameterArray)>0 else [1]:
+        for v in range(0,len(parameterArray[i][1])) if len(parameterArray)>0 else [1]:
+
+
+            if len(parameterArray)>0:
+                print("------------------")
+                print("New Parameter iteration")
+                print("------------------")
+                # print('[i,v]:', [i,v])
+                print('parameterName:'  , parameterArray[i][0])
+                print('parameterValue: ', parameterArray[i][1][v])
+                parameterName =  parameterArray[i][0]
+                parameterValue = parameterArray[i][1][v]
+
+                """"
+                    remove decimal points from the parameterArray entries.
+                    As the decimal points cause problems with the output name of dune-vtk. 
+                """
+                parameterValueString = (str(parameterArray[i][1][v])).replace('.', '')
+                # print('parameterValueString',parameterValueString)
+
+                """
+                    UPDATE PARAMETERS
+                """
+                # ModifyInputParameters(original_ParameterPath,new_ParameterPath,parameterName,parameterValue)
+                ModifyParameterFile(os.path.join(new_ParameterPath, parameterFile), parameterName , parameterValue)
+                print('Parameter modification done.')
+
+                baseName = parameterFile + "_" + parameterArray[i][0]+ "_" + parameterValueString 
+
+            else :
+                print("------------------")
+                print("Empty parameterArray - run once for default parameter set.")
+                print("------------------")
+                parameterName = '' 
+                parameterValue = ''
+                parameterValueString = ''
+                baseName = parameterFile
+
+            processList = []
+            for macroGridLevel in gridLevels:
+
+                if len(parameterArray)>0:
+                    LOGFILE = resultPath + "/" + parameterFile  + "_macroGridLevel" + str(macroGridLevel) + "_" + parameterName + "_" + str(parameterValue) + ".log"
+                else: 
+                    LOGFILE = resultPath + "/" + parameterFile  + "_macroGridLevel" + str(macroGridLevel) + ".log"
+                print('LOGFILE:', LOGFILE)
+                print('executable:', executable)
+                print('parameterFile:', parameterFile)
+                print('resultPath:', resultPath)
+
+                # start_time = time.time()
+                p = subprocess.Popen(executable + " " + new_ParameterPath + " " + parameterFile
+                                                + " -macroGridLevel " + str(macroGridLevel)
+                                                + " -resultPath " + str(resultPath)
+                                                + " -baseName " + str(baseName)
+                                                + " -instrumentedPath " + str(instrumentedPath)
+                                                + " -conforming_DiscreteJacobian " + str(conforming_DiscreteJacobian)
+                                                + " -instrumented " + str(INSTRUMENTED)
+                                                # + " -" + parameterName + " " + str(parameterValue)
+                                                + " | tee " + LOGFILE, shell=True)
+
+                p.wait() # wait
+                # print("--- %s seconds ---" % (time.time() - start_time))
+                print('------FINISHED PROGRAM on macroGridLevel:' + str(macroGridLevel))
+                processList.append(p)
+                # Wait for all simulation subprocesses before proceeding to the error measurement step
+                exit_codes = [p.wait() for p in processList]
+# ---------------------------------------------------------------------------------------------------------
+
+def SolveMicroProblem(executable,parameterFile,gridLevels,parameterArray,resultPathBase,new_ParameterPath,pythonPath):
+    print('Solve Micro Problem.')
+    
+    """
+        Run for each parameter in 'parameterArray' unless none is given 
+        - Then run once.
+    """
+    if len(parameterArray)>0:
+        print("Compute for a given parameterArray:", parameterArray)
+
+    # ------ Loops through Parameters -----------
+    for i in range(0, len(parameterArray)) if len(parameterArray)>0 else [1]:
+        for v in range(0,len(parameterArray[i][1])) if len(parameterArray)>0 else [1]:
+
+
+            if len(parameterArray)>0:
+                print("------------------")
+                print("New Parameter iteration")
+                print("------------------")
+                # print('[i,v]:', [i,v])
+                print('parameterName:'  , parameterArray[i][0])
+                print('parameterValue: ', parameterArray[i][1][v])
+                parameterName =  parameterArray[i][0]
+                parameterValue = parameterArray[i][1][v]
+
+                """"
+                    remove decimal points from the parameterArray entries.
+                    As the decimal points cause problems with the output name of dune-vtk. 
+                """
+                parameterValueString = (str(parameterArray[i][1][v])).replace('.', '')
+                # print('parameterValueString',parameterValueString)
+
+                """
+                    UPDATE PARAMETERS
+                """
+                # ModifyInputParameters(original_ParameterPath,new_ParameterPath,parameterName,parameterValue)
+                ModifyParameterFile(os.path.join(new_ParameterPath, parameterFile), parameterName , parameterValue)
+                print('Parameter modification done.')
+
+                baseName = parameterFile + "_" + parameterArray[i][0]+ "_" + parameterValueString 
+
+                resultPath_parent = resultPathBase + "/" + parameterName
+                resultPath = resultPath_parent + "/value_" + str(np.round(parameterValue,3)) # round parameter value to three decimals.
+
+                # Create output directories if non existent
+                os.makedirs(resultPath_parent , exist_ok=True)
+                os.makedirs(resultPath, exist_ok=True)
+
+            else :
+                print("------------------")
+                print("Empty parameterArray - run once for default parameter set.")
+                print("------------------")
+                parameterName = '' 
+                parameterValue = ''
+                parameterValueString = ''
+                baseName = parameterFile
+                resultPath = resultPathBase
+
+            processList = []
+            for microGridLevel in gridLevels:
+
+                if len(parameterArray)>0:
+                    LOGFILE = resultPath + "/" + parameterFile  + "_microGridLevel" + str(microGridLevel) + "_" + parameterName + "_" + str(parameterValue) + ".log"
+                else: 
+                    LOGFILE = resultPath + "/" + parameterFile  + "_microGridLevel" + str(microGridLevel) + ".log"
+                print('LOGFILE:', LOGFILE)
+                print('executable:', executable)
+                print('parameterFile:', parameterFile)
+                print('resultPath:', resultPath)
+
+                # start_time = time.time()            
+                p = subprocess.Popen(executable + " " + new_ParameterPath + " " + parameterFile
+                                    + " -microGridLevel " + str(microGridLevel)
+                                    + " -resultPath " + str(resultPath)
+                                    + " -baseName " + str(baseName)
+                                    # + " -" + parameterName + " " + str(parameterValue)
+                                    + " | tee " + LOGFILE, shell=True)
+
+                p.wait() # wait
+                # print("--- %s seconds ---" % (time.time() - start_time))
+                print('------FINISHED PROGRAM on microGridLevel:' + str(microGridLevel))
+                processList.append(p)
+                # Wait for all simulation subprocesses before proceeding to the error measurement step
+                exit_codes = [p.wait() for p in processList]
+# ---------------------------------------------------------------------------------------------------------
+
+
+# """
+#     This method creates a copy of a given (.py) parameter-file 
+#     and overwrites the parameter values given by (parameterName,parameterValue)
+# """
+# def ModifyInputParameters(inputParameterFilePath,outputParameterFilePath, parameterName, parameterValue):
+#     print(' --- Copy python parameter-file to new location. --- ')
+#     # Create writable output directory if it doesn't exist
+#     os.makedirs(outputParameterFilePath, exist_ok=True)
+
+#     # Copy original file to writable location
+#     shutil.copy2(inputParameterFilePath, outputParameterFilePath + '.py')
+
+#     # Update parameters.
+#     ModifyParameterFile(outputParameterFilePath, parameterName , parameterValue)
+
+
+"""
+    This method creates a copy of a given (.py) parameter-file 
+    * Can be used to modify a copy of the parameter-file on 
+    * Read-only file systems.
+"""
+def CreateParameterCopy(inputParameterFilePath,outputParameterFilePath,parameterFile):
+    print(' --- Copy python parameter-file to new location. --- ')
+    # Create writable output directory if it doesn't exist
+    # ParentPath =  os.path.abspath(os.path.join(outputParameterFilePath, os.pardir))
+    # os.makedirs(ParentPath, exist_ok=True)
+    os.makedirs(outputParameterFilePath, exist_ok=True)
+
+    # Copy original file to writable location
+    shutil.copy2(inputParameterFilePath, os.path.join(outputParameterFilePath, parameterFile) + '.py')
+
+    print('Copied Parameter-File to location:', os.path.join(outputParameterFilePath, parameterFile) + '.py')
+
+
+
+
+
+
 def xytokappaalpha(x,y):
     """
         Convert 2-dimensional cartesian coordinates [x,y]
@@ -31,7 +239,7 @@ def ReadEffectiveQuantities(QFilePath, BFilePath):
         (default): '../outputs/Qmatrix.txt' , '../outputs/Bmatrix.txt'
 
         Note: These correspond to the coefficients of Qhom,Beff
-        so Qhom is a 3x3-matrix while Beff is a Vector os size 3
+        so Qhom is a 3x3-matrix while Beff is a Vector of size 3
     """
     # -- Read Matrix Qhom
     X = []
@@ -55,14 +263,14 @@ def ReadEffectiveQuantities(QFilePath, BFilePath):
 
 
 
-def SetParameterMaterialFunction(parameterFile, parameterName, parameterValue):
+def ModifyParameterFile(parameterFile, parameterName, parameterValue):
     """"
         Overwrite parameter 'parameterName' in the 'parameterFile'
         with new value: 'parameterValue.
     """
     with open(parameterFile +'.py', 'r') as file:
         filedata = file.read()
-        filedata = re.sub('(?m)'+str(parameterName)+'\s?=.*',str(parameterName)+' = '+str(parameterValue),filedata)
+        filedata = re.sub('(?m)'+str(parameterName)+r'\s?=.*',str(parameterName)+' = '+str(parameterValue),filedata)
         f = open(parameterFile +'.py','w')
         f.write(filedata)
         f.close()
@@ -218,6 +426,7 @@ def createEnergyLandscapeFigure(r,theta,E,resultPath , parameterName='',paramete
     # Set correct Figure size (width/height) to make the figure fit the text without scaling.
     textwidth = 6.26894      # textwidth in inch
     width = textwidth * 0.5
+    # width = textwidth * 0.33
     height = textwidth/1.618 # The golden ratio.
 
     #Get Minimzers from sampled energy values.
@@ -282,7 +491,7 @@ def createEnergyLandscapeFigure(r,theta,E,resultPath , parameterName='',paramete
     """
     if plotContourLines:
         contour_levs = np.linspace(0.0001,energyDifference*1.0,6) # contour only from zero (Minimizer) to energyDifference between global/local Minimizer.
-        contour_levs = np.linspace(0.0001,1,3) # contour only from zero (Minimizer) to energyDifference between global/local Minimizer.
+        contour_levs = np.linspace(0.0001,1,6) # contour only from zero (Minimizer) to energyDifference between global/local Minimizer.
         # contour_levs = np.linspace(0.0001,energyDifference*1.0,2) # contour only from zero (Minimizer) to energyDifference between global/local Minimizer.
         print('contour_levs:', contour_levs)
         contour_levs = np.sort(contour_levs, axis=None)  
@@ -397,5 +606,5 @@ def createEnergyLandscapeFigure(r,theta,E,resultPath , parameterName='',paramete
     # fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + '.png', dpi=100)
     # Save Figure as pdf.
     fig.set_size_inches(width, height)
-    fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(parameterValue) + '.pdf', dpi=1500) #dpi on
+    fig.savefig(resultPath + '/energy_landscape_'+ parameterName + '_' +str(np.round(parameterValue,3)) + '.pdf', dpi=1500) #dpi on
     return
\ No newline at end of file
diff --git a/testsuite/runMacroExperiments.sh b/testsuite/runMacroExperiments.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0e6bef51c3c2a8e53899bd1805a34f1c4a2085e0
--- /dev/null
+++ b/testsuite/runMacroExperiments.sh
@@ -0,0 +1,17 @@
+echo "run  macro experiments :" 
+
+# echo "first arg: $1"
+# echo "second arg: $2"
+# a=$(($1))
+# b=$(($2))
+
+# echo "a: $a"
+# echo "b: $b"
+# echo "$(seq $1 $2)"
+
+for i in $(seq $1 $2); 
+    do python3 macro-problem-testsuite.py 0 $i; 
+    
+done 
+    # do echo "i: $i"; done
+
diff --git a/testsuite/runMicroExperiments.sh b/testsuite/runMicroExperiments.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ef32a28cfd6fad738f5e3cf79d6eb0b04179cc5b
--- /dev/null
+++ b/testsuite/runMicroExperiments.sh
@@ -0,0 +1,17 @@
+echo "run  micro experiments :" 
+
+# echo "first arg: $1"
+# echo "second arg: $2"
+# a=$(($1))
+# b=$(($2))
+
+# echo "a: $a"
+# echo "b: $b"
+# echo "sequence: $(seq $1 $2)"
+
+for i in $(seq $1 $2); 
+    do python3 microstructure-testsuite.py 0 $i; 
+    
+done 
+    # do echo "i: $i"; done
+