Repository: PyEllips/pyElli (language: python)

Issue:
Reimplement inhomogenius materials
The rewrite broke the calculation of inhomogeneous materials (liquid crystals etc.).

Support for EMA layers
Allow the construction of an EMA layer between two materials. This should support various EMA functions, e.g. at least constant fraction, Bruggeman, Maxwell-Garnett. A variation of fraction along the z-axis should be possible, too.


Discussion / hints:

Fix patch:
diff --git a/examples/Liquid crystals/cholesteric-example.ipynb b/examples/Liquid crystals/cholesteric-example.ipynb
new file mode 100644
index 00000000..96f46a00
--- /dev/null
+++ b/examples/Liquid crystals/cholesteric-example.ipynb
@@ -0,0 +1,330 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "b124bd9a-47cd-4729-a44d-49d19380c92d",
+   "metadata": {},
+   "source": [
+    "# Example of a cholesteric liquid crystal\n",
+    "\n",
+    "Author: O. Castany, C. Molinaro, M. Müller"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "fcb3a689-005b-418e-8e33-f7111ff87de2",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "import berreman4x4 as bm\n",
+    "import berreman4x4.plotter as bmplot\n",
+    "from scipy.constants import c, pi\n",
+    "import matplotlib.pyplot as plt"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "bf72746e-da5a-4cd6-9682-46a937143da9",
+   "metadata": {},
+   "source": [
+    "## Set parameters"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "7b39dc8f-0b15-4586-882c-8db2c6a2c071",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Materials\n",
+    "glass = bm.IsotropicMaterial(bm.DispersionLess(1.55))\n",
+    "front = back = glass\n",
+    "\n",
+    "# Liquid crystal oriented along the x direction\n",
+    "(no, ne) = (1.5, 1.7)\n",
+    "Dn = ne-no\n",
+    "n_med = (ne + no)/2\n",
+    "LC = bm.UniaxialMaterial(bm.DispersionLess(no),\n",
+    "                         bm.DispersionLess(ne))  # ne along z\n",
+    "R = bm.rotation_v_theta(bm.e_y, 90)  # rotation of pi/2 along y\n",
+    "LC.setRotation(R)                          # apply rotation from z to x\n",
+    "# Cholesteric pitch (nm):\n",
+    "p = 650\n",
+    "# One half turn of a right-handed helix:\n",
+    "TN = bm.TwistedLayer(LC, p/2, angle=180, div=35)\n",
+    "\n",
+    "# Inhomogeneous layer, repeated layer, and structure\n",
+    "N = 15      # number half pitch repetitions\n",
+    "h = N * p/2\n",
+    "L = bm.RepeatedLayers([TN], N)\n",
+    "s = bm.Structure(front, [L], back)\n",
+    "\n",
+    "# Calculation parameters\n",
+    "lbda_min, lbda_max = 800, 1200   # (nm)\n",
+    "lbda_B = p * n_med\n",
+    "lbda_list = np.linspace(lbda_min, lbda_max, 100)\n",
+    "k0_list = 2*pi/lbda_list"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d000e660",
+   "metadata": {
+    "lines_to_next_cell": 0
+   },
+   "source": [
+    "## Analytical calculation for the maximal reflection"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "d6ded450",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "R_th = np.tanh(Dn/n_med*pi*h/p)**2\n",
+    "lbda_B1, lbda_B2 = p*no, p*ne"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d6d0d618",
+   "metadata": {
+    "lines_to_next_cell": 0
+   },
+   "source": [
+    "## Calculation with Berreman4x4"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "70d5477d",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "data = s.evaluate(lbda_list, 0)\n",
+    "\n",
+    "T_pp = data.T[:, 0, 0]\n",
+    "T_ps = data.T[:, 0, 1]\n",
+    "T_ss = data.T[:, 1, 1]\n",
+    "T_sp = data.T[:, 1, 0]\n",
+    "\n",
+    "# Transmission coefficients for incident unpolarized light:\n",
+    "T_pn = 0.5 * (T_pp + T_ps)\n",
+    "T_sn = 0.5 * (T_sp + T_ss)\n",
+    "T_nn = T_sn + T_pn\n",
+    "\n",
+    "# Transmission coefficients for 's' and 'p' polarized light, with\n",
+    "# unpolarized measurement.\n",
+    "T_ns = T_ps + T_ss\n",
+    "T_np = T_pp + T_sp\n",
+    "\n",
+    "# Right-circular wave is reflected in the stop-band.\n",
+    "# R_LR, T_LR close to zero.\n",
+    "R_RR = data.Rc[:, 1, 1]\n",
+    "R_LR = data.Rc[:, 0, 1]\n",
+    "T_RR = data.Tc[:, 1, 1]\n",
+    "T_LR = data.Tc[:, 0, 1]\n",
+    "\n",
+    "# Left-circular wave is transmitted in the full spectrum.\n",
+    "# T_RL, R_RL, R_LL close to zero, T_LL close to 1.\n",
+    "T_LL = data.Tc[:, 0, 0]\n",
+    "R_LL = data.Rc[:, 0, 0]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1c15b5af",
+   "metadata": {
+    "lines_to_next_cell": 0
+   },
+   "source": [
+    "## Text output: \n",
+    "eigenvalues and eigenvectors of the transmission matrix for\n",
+    "a wavelength in the middle of the stop-band."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "2705df90",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "Transmission in the middle of the stop-band...\n",
+      "\n",
+      "Eigenvalues of the Jones transmission matrix:\n",
+      "[-0.977-0.21j  -0.105-0.002j]\n",
+      "Corresponding power transmission:\n",
+      "[0.999 0.011]\n",
+      "Corresponding eigenvectors:\n",
+      "[[0.729+0.j    0.026+0.684j]\n",
+      " [0.026+0.684j 0.729+0.j   ]]\n",
+      "Normalization to the 'p' componant:\n",
+      "[[1.   +0.j    1.   +0.j   ]\n",
+      " [0.035+0.939j 0.04 -1.064j]]\n",
+      "Ratio 's'/'p':\n",
+      "[0.939 1.064]\n",
+      "Complex angle (°) (+90°: L, -90°: R)\n",
+      "[ 87.858 -87.858]\n"
+     ]
+    }
+   ],
+   "source": [
+    "i = np.argmin(np.abs(lbda_list-lbda_B))  #  index for stop-band center\n",
+    "T = data.jones_matrix_t[i]  #  transmission matrix\n",
+    "eigenvalues, eigenvectors = np.linalg.eig(T)\n",
+    "np.set_printoptions(precision=3)\n",
+    "print(\"\\nTransmission in the middle of the stop-band...\\n\")\n",
+    "print(\"Eigenvalues of the Jones transmission matrix:\")\n",
+    "print(eigenvalues)\n",
+    "print(\"Corresponding power transmission:\")\n",
+    "print(np.abs(eigenvalues)**2)\n",
+    "print(\"Corresponding eigenvectors:\")\n",
+    "print(eigenvectors)\n",
+    "# Note: the transformation matrix to the eigenvector basis is\n",
+    "# B = numpy.matrix(eigenvectors), and the matrix B⁻¹ T B is diagonal.\n",
+    "print(\"Normalization to the 'p' componant:\")\n",
+    "print(eigenvectors/eigenvectors[0, :])\n",
+    "print(\"Ratio 's'/'p':\")\n",
+    "print(np.abs(eigenvectors[1, :]/eigenvectors[0, :]))\n",
+    "print(\"Complex angle (°) (+90°: L, -90°: R)\")\n",
+    "print(180/pi*np.angle(eigenvectors[1, :]/eigenvectors[0, :]))\n",
+    "# We observe that the eigenvectors are nearly perfectly polarized circular waves"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "66086560",
+   "metadata": {
+    "lines_to_next_cell": 0
+   },
+   "source": [
+    "## Plotting"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "f3dfc88f",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "fig = plt.figure()\n",
+    "ax = fig.add_subplot(1, 1, 1)\n",
+    "\n",
+    "# Draw rectangle for λ ∈ [p·no, p·ne], and T ∈ [0, R_th]\n",
+    "rectangle = plt.Rectangle((lbda_B1, 0), lbda_B2-lbda_B1, R_th, color='cyan')\n",
+    "ax.add_patch(rectangle)\n",
+    "\n",
+    "ax.plot(lbda_list, R_RR, '--', label='R_RR')\n",
+    "ax.plot(lbda_list, T_RR, label='T_RR')\n",
+    "ax.plot(lbda_list, T_nn, label='T_nn')\n",
+    "ax.plot(lbda_list, T_ns, label='T_ns')\n",
+    "ax.plot(lbda_list, T_np, label='T_np')\n",
+    "\n",
+    "ax.legend(loc='center right', bbox_to_anchor=(1.00, 0.50))\n",
+    "\n",
+    "ax.set_title(\"Right-handed Cholesteric Liquid Crystal, aligned along \\n\" +\n",
+    "             \"the $x$ direction, with {:.1f} helix pitches.\".format(N/2.))\n",
+    "ax.set_xlabel(r\"Wavelength $\\lambda_0$ (m)\")\n",
+    "ax.set_ylabel(r\"Power transmission $T$ and reflexion $R$\")\n",
+    "fmt = ax.xaxis.get_major_formatter()\n",
+    "fmt.set_powerlimits((-3, 3))\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "448584be-4111-49fd-b6cd-ba636a501a8e",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<AxesSubplot:xlabel='z (nm)', ylabel=\"n'\">"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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d3pxc8kll+DZZ58FgJh7gCqlUKdOHXTr1g0AULt2baSmpiIuLva3OSkpCW3atEGLFi0AADfeeCNuvPFGlCpVKubYANC7d2/UqFEDAHDPPffgyiuvjDlmVlYWAGD48OEoU6YMAGDQoEGIj4+PuQe8/vvJkyf7to0YMSLguVhj//e///VtmzBhgq2xJ06c6Num/x+7Yr/55pu+bR999JGtsYcMGQLA83l8+eWXAeS9z1aJCKpVq4Z7770XAFCtWjX07ds3pphaYmIiWrRogTZt2gAAmjZtinbt2tly3SQlJaF79+7405/+BADo3Lkz6tevH/P1rkdwDB06FJdeeikA4NFHH0VycnLM51q/j+PHj/dt+9///d+A52KN/eGHH8YUx2mYxIuAatWqAQBeffVVyzG+/fZbrF69GnXq1IFSyre9Zs2acLvdmDRpkuXYc+fOxb59+1C3bt2A7XXr1sXu3bvx2WefWY797rvvAkBA0lZKoXbt2vjmm2/www8/WI79yiuvAAAuv/xy37a4uDhceeWVmD59OtLT0y3H1smkSpW8UR+JiYkAgDfeeCOmYUoPP/wwAKB8+fK+bf43IVZv9nJzczFgwAAAQHJysm97uXLlAAAPPfSQpbgAcOrUKd/nV58HAKhcuTIA4Mknn7Qce9euXZg6dSpq1KgRkKD0+/riiy9ajr1mzRosX74ctWvXDrhu9A3l22+/bTn2okWLkJ6enu+6qVOnDg4fPozZs2dbjj158mRkZWWhZs2avm36Jn7NmjVYuXKl5divv/46AOCKK67wbYuLi0OtWrUwd+5cbNmyxXLsp59+GgCQkpLi25aQkIDk5GSMGzcupqGD/fv3BwBUqFDBcgwnYhIvArp06QIA2LRpk+UYv/76KwDggQceCNj+z3/+EwBiSoZr164FADzyyCMB2/v16wcAWLduneXYq1evBgDcd999Adt79+4NIO91WaG/bDp16hSwXddUpKWlWY69b98+AMBf//rXgO3t27cH4BmnapUe33/ttdf6tlWoUAG1a9cGAMtjjfXY/urVqwfcfDRo0ABKKWRkZFg84rzz8be//S1g+4033ggAOHjwoOXY27dvBwDceeedAds7dOgAANi6davl2Bs3bgQA9OrVK2B7jx49AADff/+95djr168HkJdcNH2ztGbNGsux9fWsrxPtwQcfBABs2LDB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\n",
+      "text/plain": [
+       "<Figure size 576x216 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "bmplot.drawStructure(s)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "b467d50c-e003-4b09-81b8-56eb21ebff27",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "jupytext": {
+   "cell_metadata_filter": "-all",
+   "encoding": "# encoding: utf-8",
+   "executable": "/usr/bin/python",
+   "formats": "ipynb,auto:hydrogen",
+   "main_language": "python",
+   "notebook_metadata_filter": "-all"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.7"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/examples/Liquid crystals/cholesteric-example.py b/examples/Liquid crystals/cholesteric-example.py
index 6b4972c3..4d418a29 100644
--- a/examples/Liquid crystals/cholesteric-example.py
+++ b/examples/Liquid crystals/cholesteric-example.py
@@ -1,64 +1,65 @@
 #!/usr/bin/python
 # encoding: utf-8
-
-# Berreman4x4 example
-# Authors: O. Castany, C. Molinaro
-
-# Example of a cholesteric liquid crystal
-
-import numpy
-import Berreman4x4
-from numpy import sin, sqrt, abs
-from Berreman4x4 import e_y
+# %% [markdown]
+# # Example of a cholesteric liquid crystal
+#
+# Author: O. Castany, C. Molinaro, M. Müller
+
+# %%
+import numpy as np
+import berreman4x4 as bm
+import berreman4x4.plotter as bmplot
 from scipy.constants import c, pi
-import matplotlib.pyplot as pyplot
+import matplotlib.pyplot as plt
 
+# %% [markdown]
+# ## Set parameters
+
+# %%
 # Materials
-glass = Berreman4x4.IsotropicMaterial(Berreman4x4.DispersionLess(1.55))
-front = back = Berreman4x4.IsotropicHalfSpace(glass)
+glass = bm.IsotropicMaterial(bm.DispersionLess(1.55))
+front = back = glass
 
 # Liquid crystal oriented along the x direction
 (no, ne) = (1.5, 1.7)
 Dn = ne-no
 n_med = (ne + no)/2
-LC = Berreman4x4.UniaxialMaterial(Berreman4x4.DispersionLess(no),
-                                  Berreman4x4.DispersionLess(ne))  # ne along z
-R = Berreman4x4.rotation_v_theta(e_y, pi/2)  # rotation of pi/2 along y
+LC = bm.UniaxialMaterial(bm.DispersionLess(no),
+                         bm.DispersionLess(ne))  # ne along z
+R = bm.rotation_v_theta(bm.e_y, 90)  # rotation of pi/2 along y
 LC.setRotation(R)                          # apply rotation from z to x
-# Cholesteric pitch (m):
-p = 0.65e-6
+# Cholesteric pitch (nm):
+p = 650
 # One half turn of a right-handed helix:
-TN = Berreman4x4.TwistedMaterial(LC, p/2, angle=+pi, div=35)
+TN = bm.TwistedLayer(LC, p/2, angle=180, div=35)
 
 # Inhomogeneous layer, repeated layer, and structure
-IL = Berreman4x4.InhomogeneousLayer(TN)
 N = 15      # number half pitch repetitions
 h = N * p/2
-L = Berreman4x4.RepeatedLayers([IL], N)
-s = Berreman4x4.Structure(front, [L], back)
-
-# Normal incidence:
-Kx = 0.0
+L = bm.RepeatedLayers([TN], N)
+s = bm.Structure(front, [L], back)
 
 # Calculation parameters
-lbda_min, lbda_max = 0.8e-6, 1.2e-6   # (m)
+lbda_min, lbda_max = 800, 1200   # (nm)
 lbda_B = p * n_med
-lbda_list = numpy.linspace(lbda_min, lbda_max, 100)
+lbda_list = np.linspace(lbda_min, lbda_max, 100)
 k0_list = 2*pi/lbda_list
 
-############################################################################
-# Analytical calculation for the maximal reflection
-R_th = numpy.tanh(Dn/n_med*pi*h/p)**2
+# %% [markdown]
+# ## Analytical calculation for the maximal reflection
+# %%
+R_th = np.tanh(Dn/n_med*pi*h/p)**2
 lbda_B1, lbda_B2 = p*no, p*ne
 
-############################################################################
-# Calculation with Berreman4x4
-data = Berreman4x4.DataList([s.evaluate(Kx, k0) for k0 in k0_list])
+# %% [markdown]
+# ## Calculation with Berreman4x4
+# %%
+data = s.evaluate(lbda_list, 0)
 
-T_pp = data.get('T_pp')
-T_ps = data.get('T_ps')
-T_ss = data.get('T_ss')
-T_sp = data.get('T_sp')
+T_pp = data.T[:, 0, 0]
+T_ps = data.T[:, 0, 1]
+T_ss = data.T[:, 1, 1]
+T_sp = data.T[:, 1, 0]
 
 # Transmission coefficients for incident unpolarized light:
 T_pn = 0.5 * (T_pp + T_ps)
@@ -70,18 +71,32 @@
 T_ns = T_ps + T_ss
 T_np = T_pp + T_sp
 
-###########################################################################
-# Text output: eigenvalues and eigenvectors of the transmission matrix for
+# Right-circular wave is reflected in the stop-band.
+# R_LR, T_LR close to zero.
+R_RR = data.Rc[:, 1, 1]
+R_LR = data.Rc[:, 0, 1]
+T_RR = data.Tc[:, 1, 1]
+T_LR = data.Tc[:, 0, 1]
+
+# Left-circular wave is transmitted in the full spectrum.
+# T_RL, R_RL, R_LL close to zero, T_LL close to 1.
+T_LL = data.Tc[:, 0, 0]
+R_LL = data.Rc[:, 0, 0]
+
+# %% [markdown]
+# ## Text output: 
+# eigenvalues and eigenvectors of the transmission matrix for
 # a wavelength in the middle of the stop-band.
-i = numpy.argmin(abs(lbda_list-lbda_B))  #  index for stop-band center
-T = data[i].T_ti  #  transmission matrix
-eigenvalues, eigenvectors = numpy.linalg.eig(T)
-numpy.set_printoptions(precision=3)
+# %%
+i = np.argmin(np.abs(lbda_list-lbda_B))  #  index for stop-band center
+T = data.jones_matrix_t[i]  #  transmission matrix
+eigenvalues, eigenvectors = np.linalg.eig(T)
+np.set_printoptions(precision=3)
 print("\nTransmission in the middle of the stop-band...\n")
 print("Eigenvalues of the Jones transmission matrix:")
 print(eigenvalues)
 print("Corresponding power transmission:")
-print(abs(eigenvalues)**2)
+print(np.abs(eigenvalues)**2)
 print("Corresponding eigenvectors:")
 print(eigenvectors)
 # Note: the transformation matrix to the eigenvector basis is
@@ -89,34 +104,19 @@
 print("Normalization to the 'p' componant:")
 print(eigenvectors/eigenvectors[0, :])
 print("Ratio 's'/'p':")
-print(abs(eigenvectors[1, :]/eigenvectors[0, :]))
+print(np.abs(eigenvectors[1, :]/eigenvectors[0, :]))
 print("Complex angle (°) (+90°: L, -90°: R)")
-print(180/pi*numpy.angle(eigenvectors[1, :]/eigenvectors[0, :]))
+print(180/pi*np.angle(eigenvectors[1, :]/eigenvectors[0, :]))
 # We observe that the eigenvectors are nearly perfectly polarized circular waves
 
-###########################################################################
-# Jones matrices for the circular wave basis
-
-# Right-circular wave is reflected in the stop-band.
-# R_LR, T_LR close to zero.
-R_RR = data.get('R_RR')
-R_LR = data.get('R_LR')
-T_RR = data.get('T_RR')
-T_LR = data.get('T_LR')
-
-# Left-circular wave is transmitted in the full spectrum.
-# T_RL, R_RL, R_LL close to zero, T_LL close to 1.
-T_LL = data.get('T_LL')
-R_LL = data.get('R_LL')
-
-
-############################################################################
-# Plotting
-fig = pyplot.figure()
+# %% [markdown]
+# ## Plotting
+# %%
+fig = plt.figure()
 ax = fig.add_subplot(1, 1, 1)
 
 # Draw rectangle for λ ∈ [p·no, p·ne], and T ∈ [0, R_th]
-rectangle = pyplot.Rectangle((lbda_B1, 0), lbda_B2-lbda_B1, R_th, color='cyan')
+rectangle = plt.Rectangle((lbda_B1, 0), lbda_B2-lbda_B1, R_th, color='cyan')
 ax.add_patch(rectangle)
 
 ax.plot(lbda_list, R_RR, '--', label='R_RR')
@@ -133,6 +133,9 @@
 ax.set_ylabel(r"Power transmission $T$ and reflexion $R$")
 fmt = ax.xaxis.get_major_formatter()
 fmt.set_powerlimits((-3, 3))
+plt.show()
+
+# %%
+bmplot.drawStructure(s)
 
-s.drawStructure()
-pyplot.show()
+# %%
diff --git a/examples/Liquid crystals/twisted-nematic.ipynb b/examples/Liquid crystals/twisted-nematic.ipynb
new file mode 100644
index 00000000..249f97da
--- /dev/null
+++ b/examples/Liquid crystals/twisted-nematic.ipynb
@@ -0,0 +1,275 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "f17df1c8-7549-4032-96a6-2b2d5ac12c82",
+   "metadata": {
+    "lines_to_next_cell": 0,
+    "tags": []
+   },
+   "source": [
+    "# Example of a 90° twisted nematic liquid crystal\n",
+    "\n",
+    "Author: O. Castany, M. Müller"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "a595062c-100a-4b33-9243-d6896b9e0489",
+   "metadata": {},
+   "source": [
+    "Consider the following situation:\n",
+    "- twisted liquid crystal with 90° twist between z=0 and z=d\n",
+    "- liquid crystal aligned along x at z=0.\n",
+    "- input and output polarizers aligned parallel to x\n",
+    "\n",
+    "Gooch-Tarry law gives: T_pp = sin²(pi/2·√(1+u²)) / (1+u²),\n",
+    "with u = 2dΔn/λ.\n",
+    "The transmission minima are given by u = ((2m)²-1)^{-1/2} = √(3),√(15),√(35),…\n",
+    "\n",
+    "We consider a birefringence Δn = 0.10 and a thickness d = 4.33 µm. The first\n",
+    "minimum should be at λ = 500 nm, or k0 = 1.257e7 m⁻¹.\n",
+    "\n",
+    "Note: Gooch-Tarry law does not take into account interferences between the two\n",
+    "glass substrates. A glass with n = 1.55 minimizes the interferences."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "60c0a3b9",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "from numpy.lib.scimath import sqrt\n",
+    "import berreman4x4 as bm\n",
+    "import berreman4x4.plotter as bmplot\n",
+    "from scipy.constants import c, pi\n",
+    "import matplotlib.pyplot as plt"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "84f4ce3f-feac-4729-ba27-ff33c1033faf",
+   "metadata": {
+    "tags": []
+   },
+   "source": [
+    "## Set parameters"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "1fb08de5-4eb3-44ed-a585-94da994e31d2",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Materials\n",
+    "glass = bm.IsotropicMaterial(bm.DispersionLess(1.55))\n",
+    "front = back = glass\n",
+    "\n",
+    "# Liquid crystal oriented along the x direction\n",
+    "(no, ne) = (1.5, 1.6)\n",
+    "Dn = ne-no\n",
+    "LC = bm.UniaxialMaterial(bm.DispersionLess(no),\n",
+    "                         bm.DispersionLess(ne))\n",
+    "R = bm.rotation_v_theta(bm.e_y, 90)\n",
+    "LC.setRotation(R)\n",
+    "d = 4330\n",
+    "TN = bm.TwistedLayer(LC, d, 7, 90)\n",
+    "\n",
+    "# Structure\n",
+    "s = bm.Structure(front, [TN], back)\n",
+    "\n",
+    "# Calculation parameters\n",
+    "(lbda_min, lbda_max) = (200e-9, 1)  #  (m)\n",
+    "k0_list = np.linspace(2*pi/lbda_max, 2*pi/lbda_min)\n",
+    "lbda_list = (2*pi)/k0_list*1e9"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "c3a4c0be-16ce-4f1f-ac28-d268539df882",
+   "metadata": {},
+   "source": [
+    "## Calculate theoretical curve with Gooch-Tarry law"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "673afd53-8ca5-40ce-9d2b-08cc70cdd605",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "u = 2*d*Dn/lbda_list\n",
+    "GT = np.sin(pi/2*sqrt(1+u**2))**2 / (1+u**2)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "77af6158-40a7-474f-a208-8769b02507dd",
+   "metadata": {},
+   "source": [
+    "## Simulate with Berreman4x4"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "13752370-0e4a-4e9a-84b0-4be6604a4e7d",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "TN.setDivision(7)\n",
+    "data = s.evaluate(lbda_list, 0)\n",
+    "T7 = np.real(data.T[:, 0, 0])\n",
+    "\n",
+    "TN.setDivision(18)\n",
+    "data2 = s.evaluate(lbda_list, 0)\n",
+    "T18 = np.real(data2.T[:, 0, 0])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "fad5b1f9-6b46-4191-a4f5-5f395bd2c3af",
+   "metadata": {},
+   "source": [
+    "## Plot "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "00525937-cb15-4a42-9c6b-b2d79b85b66b",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEcCAYAAADHiMP9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABVHElEQVR4nO3dd3hU1dbA4d9KKKGDNIEACYK0UEKJUsUGKiiCiigWQBQLCmr0s91rvderRsDeIGBBEQQVFAVEqpQQCCX03nsJvSXr++OchElIG8hkEljv88yTmVPXmZmcdfbeZ/YWVcUYY4wJ8HcAxhhj8gZLCMYYYwBLCMYYY1yWEIwxxgCWEIwxxrgsIRhjjAEsIeQ7IvK5iPwrF/bzmoh85+v9+IqIHBGRGjm4vRx73zOLTUR6isisnNhPbhMRFZGa57nuNBHpk9MxGe9YQkhDROqKyN8ikiAia0WkS5r514vIShE5JiJTRaS6x7yaIrJARDaIyM0ZbP+IxyNJRI57vO6RVXyq+qiqvpmN49goIjdk55i9JSLt3H/+T9NMnyUiPX2xzyziOedkoqrFVXW9l9tpJyJb05uX3fc9O84ntmQiUshN1mtE5Kj7OUeLSEhOxOaxnwzfi/zGfc9WZHY8InKtiCwVkYMisk9EfhaRKh7z3xWRLSJySEQ2ichLuRN97rKE4EFECgC/Ar8BlwGPAN+JyJXu/HLAWOBf7vxY4EePTbwOPAVcBbya3j7ck0FxVS0ObAZu9Zg2wjdH5hNHgftz+kRksvQTcBtwL1AKaAQsAK5Pu6A47H8cngP2ZLHMcqCDqpYGKgNrgM885g8F6qhqSaAl0ENEuvogVr+yL0tqdXC+DINUNVFV/wb+Ae5353cFlqnqaFU9AbwGNBKROu78QKCAx99sEZEgt6RQzn39soicEZGS7us3RWSw+3y4iLzlPi8nIr+5VzX7RWSmiASIyLdANWC8W/J43l3+ahGZ7S6/WETaecQQKiLTReSwiEwGymUR9kFgOBkkPnebvd0rswMiMjFNaUpF5HH3Svewe4xXuPEdEpFRIlLIXbaMe5x73G39JiLB7rz/AG2Aj91j/dhj+zXd50VE5H33yi7BLckUydaHczbelPfdff2ciOwQke3ucXruL1WJRdJUA6VZtqyIjHOPOQa4IpMYbgBuBDqr6nxVPaOqCar6iaoO9dj3f0TkH+AY8KyILEiznWdE5Ff3+S0istz9DLaJSKSIFAP+ACrL2dJrZRGJEJE57vdnh4h8nPwZeUtEbhSnpJ3gfmZyPtvJxn5CgfuAtzNbTlV3qep2j0mJQE2P+atU9ajH/CTP+Wn2eU61X5rPfLiIfCoif7jv7T8icrmIDHa/3ytFJNy7I80ZlhCyJkCY+7w+sDh5hvsFWedOB3gD+BCYB2S7esFNLvOBa9xJ1wCbgFYer6ens+qzwFagPFAReMnZnN5P6tLHu+IUf38H3sIp3UQCY0SkvLut73GuNMu5sT+YjdD/A9whIrXTzhCRzm48Xd34ZgI/pFmsA9AUuBp4HvgS55+3Ks57fo+7XAAwDKiOk+iOAx/jHOzL7rb7ucfaL504o9z9tHSP/Xmcf+jzIiI34bx/NwK1gAupmvsEOAFUAnq7j4zcAMSo6pYstnk/Tum2BM73MVRE6qaZ/437fCjQV1VL4Lznf7vf65uB7R6l1+04J8mncb4jLXBKJY9n+0hdcrak/Yq7rXWc/a6nt/y9bhLK6FEtk919hPM9PJ6NuKqJyEF32Ujg3TTzXxCRIzj/c8Vw/mfOVzfOHv9JYA6w0H39EzDwArZ93iwhpLYK2A08JyIFRaQ9zsm4qDu/OJCQZp0EnH88VHW5qjZS1Wqq+quX+54OXCNOtVVDnH/ka0QkCGgOzEhnndM4J5LqqnpaVWdqxp1T3QdMUNUJqpqkqpNxqrxucf+hmgP/UtWTqjoDGJ9VwKq6E/gcJxGm9SjwtqquUNUzwH+Bxp6lBOBdVT2kqsuAeGCSqq5X1QScK9Rwdz/7VHWMqh5T1cM4iegaskGcKpPeQH9V3eaW/Gar6snsrJ+BbsAwVY13T56vnc9GRCQQuAP4t6oeVdV44OtMVikL7MjGpoer6jK3BHESp1rzPnef9YEQnGpRcL5D9USkpKoeUNWFGW1UVReo6lx3uxuBL8jm55DGLTgl7Z9U9TQwGNiZyX6/V9XSmTw2p7eeOO1/gar6c3aCUtXNbpVROZyT9co08/+H87/eBPiWc88F3vjZfT9PAD8DJ1T1G1VNxPm8rITgb+6X83agI84X9FlgFM4VAcARoGSa1UoCh3Ng99OBdjhftqXAZJx/tquBtaq6L5113gPWApNEZL2IvJDJ9qsDd3leWQGtcRJKZeBAmiLxpmzG/Q7QQUQapbO/Dzz2tR+ntFXFY5ldHs+Pp/O6OICIFBWRL9wqn0M4ybG0e0LNSjkgCOcqNKdUBjyv0rP7XqVVHqdqMbvb2ofzeWUlbQnia+BeERGc0sEoj4R4B84JepM4VYYtMtqoiFwpTnXdTvdz+C9ZVy2mJ9X7517EZFXq8Ypb7fUuTpueV1R1P8579qt7geY5T1U1Duf7+foFhJit735us4SQhqouUdVrVLWsqnYAagAx7uxlOI14QMqX7gp3+oWaDdQGugDTVXU5TvXILaRfXYSqHlbVZ1W1Bk5D4zMikty4mLaksAX4Ns2VVTH3qmcHUMY9nmSZFcM9Y9iHc4WXtopsC05VhOf+iqjq7OxsN41ncd6bq9Rp1GvrTk+ud86sy969OFUyGdbNn4cdONVaydK+V0c5W6oEuDyD7ewBzmSxLU9/ARHitp9kItX7oapzgVM4bS334lzdJs+br6qdgQrALzgXQOdsw/UZzlVzLfdzeInzq/tP9f65iapqRguLSA9JfXde2kd671ktnJLQTBHZiVNFVclNZiHZiLEAznuS9gLQc35m36mUNioRKZWN/eUJlhDSEJGG4jTyFhWRSJwrsuHu7J+BMBG5w63K+TewRFVXZrC5bFPVYzh1+E9wNgHMxql6STchiEgncW51FZziayJn68Z34SSzZN8Bt4pIBxEJdI+xnYgEq+omnOqj18W5Ra81cKsX4Q/EqZ/3rKf+HHjRraJAREqJyF1ebNNTCZyrpoMichnnNmSnPdYUqpoERAMDxWkYDRSRFiJSOKOdue+N5yPtSW8U0FNE6olI0XTiWQR0db9DNYGHMogtEedE9Zq7bD0yabtR1b9wSo4/i0hTESkgIiVE5FERyaztAZw2g4+B06o6yz3OQu7JtpRbOj5E6u9P2TQnsxLuMkfEuZHisYx2Jk7D6sYMZv8O1BeRru4V+FNknDRR1REebRnpPdKrMorHSTKN3Ucf95gak05pxI2ltjg3ZZTH+U7Hqep+d1pfcW5uEBGJwPk/nZJRzEADcRrhA3HaXcBpv8rTLCGc636cK5jdOI1mNyYXr1V1D04R+z/AAZzbS7vn4L6nAwU5WyKZjvNPmF77AThXQX/hVGXNAT5V1anuvLeBV9wqm0h1GiKTG3r34PxTPMfZ78C97vHsxznBfUM2qeohnOL5ZR7TfsapThrpVi/E4zRUno/BOFdce4G5wJ9p5n8A3CnOHRofprN+JE413Hyc43uHjL/7VXCSj+cj1ZWgqv7hxvQ3TpXd32m2MQjninwXTtVDZrcT98OpHtiJc+ExLJNlAe4EJuDUMyfgvK/NcL4HmfkWp9E47Y8N7wc2up/Ro0APAPci5wdgvfsdqozzPt6LU0X6FalvuU6rKs4deudQ1b3AXcD/cKrBamW07Ply2zl2Jj9wPvck93UipPwmqI27ShWc79VhnO9KEk5pPVkXnGrHwzjv4UfuIyPLcW7g2I3T9jOazN+vPEHUBsgx5oKJiOJUpaz1dyzpEec2291AE1Vdkwv7m4TTkL/C1/vKa8T5cWYfVW3t71i8le175Y0x+dpjwPzcSAYAqto+N/ZjcpYlBGMucm5dvuDcQWdMhqzKyBhjDGCNysYYY1yWEIwxxgD5uA2hXLlyGhIS4u8wjDEmX1mwYMFeVS2f3rx8mxBCQkKIjY31dxjGGJOviEiG3aNYlZExxhjAEoIxxhiXJQRjjDFAPm5DMMZfTp8+zdatWzlx4oS/QzEmQ0FBQQQHB1OwYMFsr+PzhCAi0UAnYLeqhqUzX3A6J7sFZ8i/npkN0mGMv23dupUSJUoQEhLCuR2hGuN/qsq+ffvYunUroaGh2V4vN6qMhgM3ZTL/ZpzeDmvhDPv3WSbLnrfo8b2JiRuSalpM3BCix2fVa7AxqZ04cYKyZctaMjB5lohQtmxZr0uxPk8I6gzHuD+TRToD37gjEc3FGQkrO6NCeSUsuCWRiwYzd8FXqCoxcUOIXDSYsOCWliyM1ywZmLzufL6jeaFRuQqpB6zYSuphFnNERHgfohoP4LnFg3n4o5t5Nm4QPS57kIrV7qF+lRZELhqckhQ8k4UxedGuXbu49957qVGjBk2bNqVFixb8/HO2hg7OtpCQEPbu3Zvh/CeeeILGjRtTr149ihQpQuPGjWncuDE//fRTjsbhqXhxv4wsecnIV43KIvIITrUS1apla4THVCLC+3DTij8YGbiaiIPBvL26Hm/PmUalUjVoV/Euno0bRLcNkxmdsIyoxgOICO+T04dgzAVTVW6//XYefPBBvv/+ewA2bdrEuHHjcjWOTz75BICNGzfSqVMnFi1alK31zpw5Q4ECBTJ8bfwnL5QQtpF6PNVgd9o5VPVLVW2mqs3Kl0/3l9eZiokbwsSTq+hbsj5rSm7j044bePP2MJpWL8Pk7a0IPViFLw8v57ZidS0ZmDzr77//plChQjz66KMp06pXr86TTz4JOG0cvXr1okGDBoSHhzN16tRMpycmJhIZGUlYWBgNGzbko4/ODgT20Ucf0aRJExo0aMDKlVmPFLtx40batGlDkyZNaNKkCbNnO0NoT5s2jTZt2nDbbbdRr169c17/+9//ZvDgwSnbefnll/nggw8y3M+RI0e4/vrrU2L79ddfAXjvvff48ENn0Lynn36a6667LuU969GjR5bxX+ryQloeB/QTkZE4QzgmqOqOnN5JcjVQ8pV/RMrrIO6/tw/zFn5F5KJtND8QzC+Jy7nst/fp3enZnA7DXGReH7+M5dsP5eg261Uuyau31s9w/rJly2jSpEmG8z/55BNEhKVLl7Jy5Urat2/P6tWrM5w+bNgwNm7cyKJFiyhQoAD7959t8itXrhwLFy7k008/JSoqiiFDhmS4X4AKFSowefJkgoKCWLNmDffcc09KFzMLFy4kPj6e0NBQpk2blur1xo0b6dq1KwMGDCApKYmRI0cSExOT4X6CgoL4+eefKVmyJHv37uXqq6/mtttuo02bNrz//vs89dRTxMbGcvLkSU6fPs3MmTNp27ZtprGb3Lnt9AegHVBORLbijNdbEEBVP8cZH/YWnLFpjwG9fBFH/NbZqaqBIsL7EOVOB3hu8Qe8H/40VUJ78J8R/yF6dzSxX47j3vB7ad28b8p2YuKGEL91Nr1vjfZFmMZ47YknnmDWrFkUKlSI+fPnM2vWrJTSQp06dahevTqrV6/OcPpff/3Fo48+mlJtc9llZ8eC79q1KwBNmzZl7NixWcZy+vRp+vXrx6JFiwgMDGT16tUp8yIiIlLdAun5OiQkhLJlyxIXF8euXbsIDw+nbNmyGe5HVXnppZeYMWMGAQEBbNu2jV27dtG0aVMWLFjAoUOHKFy4ME2aNCE2NpaZM2emlBxMxnyeEFT1nizmK/CEr+NI7wQeEd6HiPA+RI/vnSpZfPjoGwwcXZSlu3/nhaUf8n/HTnPrNf1SlTKMATK9kveV+vXrM2bMmJTXn3zyCXv37qVZs2Y5vq/ChQsDEBgYyJkzZwDo0KEDu3btolmzZueUGAYNGkTFihVZvHgxSUlJBAUFpcwrVqxYqmXTvu7Tpw/Dhw9n586d9O6d+R1+I0aMYM+ePSxYsICCBQsSEhLCiRMnKFiwIKGhoQwfPpyWLVvSsGFDpk6dytq1a6lbt+55vw+XirzQhuB3vW+NTtVmUCAwgOe7v8Rjt/xK8N6OvLPuM974rmuqKidj/OW6667jxIkTfPbZ2Z/sHDt2LOV5mzZtGDFiBACrV69m8+bN1K5dO8PpN954I1988UXKCd+zyig9EydOZNGiRelWHyUkJFCpUiUCAgL49ttvSUxMzPZxdenShT///JP58+fToUOHTJdNSEigQoUKFCxYkKlTp7Jp09kOPNu0aUNUVBRt27alTZs2fP7554SHh9utwtlgCSETLWuW4+PH36TB8WqMTlxDxyJ1LBkYvxMRfvnlF6ZPn05oaCgRERE8+OCDvPPOOwA8/vjjJCUl0aBBA+6++26GDx9O4cKFM5zep08fqlWrRsOGDWnUqFHKnUvn4/HHH+frr7+mUaNGrFy58pxSQGYKFSrEtddeS7du3QgMDMx02R49ehAbG0uDBg345ptvqFOnTsq8Nm3asGPHDlq0aEHFihUJCgqiTZs2531Ml5J8O6Zys2bNNDfGQ0iuJrrycDAri2/htbr9uKHFYz7fr8m7VqxYYdUPPpCUlESTJk0YPXo0tWrV8nc4F4X0vqsiskBV061ftBJCJjzbDJ69axQVd97E6ys+5p/5X/o7NGMuKsuXL6dmzZpcf/31lgz8KC/cdppnpb0z6bHbn+eDMcqY0xNp0fRhAgKsTtKYnFCvXj3Wr1/v7zAueZYQMpH2zqQb6lVk/d4n+O+ElQRPWcMzN17pp8iMMSbnWZWRlx5uU4NuVwxj6tzP+XXR2R9UW2d4xpj8zhKCl0SEzuHtOVhlIsMmDCRu8wHrDM8Yc1GwKqPz0KrZI7yRqPyLD/n012WsKr7Vfp9gjMn3rIRwnq69qi+3BNVhbslttNQalgxMrgoMDKRx48Y0atQoVSdy+dFtt91GWNg5gylm6KmnnspWN9gjRoxI6ZK7cePGBAQEpNsja7t27ahduzYNGzakTp069OvXj4MHD6bMb9ky85J/bGwsTz31VIbzt2/fzp133pllvHmBJYTzFBM3hD9PruKGk9WZxTomzPzY3yGZvGjWYNgwI/W0DTOc6RegSJEiLFq0iMWLF/P222/z4osvZntdVSUpKSnD17lp7NixXo1xEBsby4EDB7K1bI8ePVi0aBGLFi3i22+/JTQ0lMaNG6e77IgRI1iyZAlLliyhcOHCdO7cOWVeVsm2WbNmmfaTVLlyZZ+OEZGTLCGcB8/fJ7x0zxgq7b6Zt9d8xryFX/k7NJPXVGkCo3ueTQobZjivq2TcW6m3Dh06RJkyZVJev/feezRv3pyGDRvy6quvAk631LVr1+aBBx4gLCyMmTNnpnq9ZcuWDNerU6cOPXv25Morr6RHjx789ddftGrVilq1aqX0SBoTE0OLFi0IDw+nZcuWrFq1CoDhw4fTtWtXbrrpJmrVqsXzzz+fEueRI0cYOHAgr7zySsq0M2fO0Lx5c6ZNmwbAiy++yMsvvww43XQ/99xzvPvuu16/Rz/88APdu3fPcrlChQrx7rvvsnnzZhYvXgycHZSne/fu/P777ynL9uzZk59++olp06bRqVMnAKZPn55SIgkPD+fw4cNs3LgxpQSUURfkGb1PiYmJ9OzZk7CwMBo0aMCgQYO8PnavqGq+fDRt2lT9Zei4Xjpv4Vcpr0fM3aSd3nha3/ruHr/FZHLP8uXLvVth/XTVd0JVp7zl/F0//YJjCAgI0EaNGmnt2rW1ZMmSGhsbq6qqEydO1IcffliTkpI0MTFRO3bsqNOnT9cNGzaoiOicOXNUVc95ndl6gYGBumTJEk1MTNQmTZpor169NCkpSX/55Rft3LmzqqomJCTo6dOnVVV18uTJ2rVrV1VVHTZsmIaGhurBgwf1+PHjWq1aNd28ebOqqg4YMEDHjh2rGzZs0Pr166ccW3x8vNapU0cnT56sjRs31pMnT6qq6uDBg3XgwIGqqlqsWDGv3q8aNWro0qVL0513zTXX6Pz581NN69y5s44cOTLVvsaOHasPPPCAqqqePHlSg4OD9dixYzp16lTt2LGjqqp26tRJZ82apaqqhw8f1tOnT6c6vqioKO3Vq5eqqq5YsUKrVq2qx48fz/B9io2N1RtuuCElrgMHDnh13Ol9V4FYzeC8ao3K5yHt7xO6N6/KmIV3Mmb9UR4/eooyxQr5KTKTJ4W2hWYPwYx3oe3zzusLlFxlBDBnzhweeOAB4uPjmTRpEpMmTSI8PBxwrsLXrFlDtWrVqF69OldffXXKNjxfZ7ZeaGgoDRo0AJyeVq+//npEhAYNGrBx40bA6WzuwQcfZM2aNYgIp0+fTtnP9ddfT6lSpQDnB2ibNm1i3759rFu3jkGDBqVsI1n9+vW5//776dSpE3PmzKFQoUJs376d0aNHp5QcvDFv3jyKFi3qVTuFptOlz80330z//v05efIkf/75J23btqVIkSKplmnVqhXPPPMMPXr0oGvXrgQHB6ean1EX5JD++1S/fn3Wr1/Pk08+SceOHWnfvr1Xx+4tqzLKAQEBwn+6hJFw/DT/+yPrUaXMJWbDDIgd6iSD2KHntilcoBYtWrB371727NmDqvLiiy+m1J2vXbuWhx56CMi8++nM1kvuAhsgICAg5XVAQEBKD6n/+te/uPbaa4mPj2f8+PGcOHEiZR3P9ZO70Z4zZw6xsbGEhITQunVrVq9eTbt27VKWW7p0KaVLl2b37t0AxMXFsXbtWmrWrElISAjHjh2jZs2a2Xp/Ro4cyT33ZNoLfyqJiYksXbr0nD6AgoKCaNeuHRMnTuTHH3/k7rvvPmfdF154gSFDhnD8+HFatWqVrVHmkqX3PpUpU4bFixfTrl07Pv/8c/r08e3NK5YQckidy0vSsskSflo+jZgNZ7sPjtkRQ3S8DaZzyUpuM7hrOFz3svPXs00hB6xcuZLExETKli1Lhw4diI6O5siRIwBs27Yt5aSamfNdL1lCQgJVqlQBnPrwrDz22GNs376djRs3MmvWLK688sqUq/+xY8eyf/9+ZsyYwZNPPsnBgwfp2LEjO3fuZOPGjWzcuJGiRYuydu1aAH7++ecMG9WTkpIYNWpUttoPwBng58UXX6Rq1ao0bNjwnPl33303w4YNY+bMmdx0003nzF+3bh0NGjTg//7v/2jevPk5CSGjLsgzsnfvXpKSkrjjjjt46623WLhwYbaO43xZlVEOerT4PpYFjyFyfBH+evwhFu2JJXJqf6LKt4Hsl1bNxWTbQicJJFcThbZ1Xm9beEFVR8ePH0+5Y0ZV+frrrwkMDKR9+/asWLGCFi1aAE6D6HfffZdld9Lnu16y559/ngcffJC33nqLjh07nvdx7d27lxdeeIEpU6ZQtWpV+vXrR//+/fn6668zXGfdunWULFky3XkzZsygatWq1KhRI9P99ujRg8KFC3Py5EluuOGGlDGa02rfvj33338/nTt3plChc6uGBw8ezNSpUwkICKB+/frcfPPN7NhxdkTgxx9/nMcee4wGDRpQoECBlC7IM7Jt2zZ69eqVchfY22+/nelxXCjr/jonbZjBP2N78UTpMjQuexvrj/1B1K49RNwenSP1xiZvsO6v85b77ruPQYMGUb58eX+HkudY99f+FNqWVl2H8cCRBBYkjOauA/stGRjjY999950lgxxiCSGHxQQFMbZMSfoeSOD7YsWI8RhT1hhj8jJLCDkoZkcMkVP7M3BfAlcW6MybO/bzzN9PEbMjxt+hGWNMliwh5KD4NeNT2gxqdf8fw448wX+37yZ+zXh/h2aMMVmyu4xyUO+AsuC2GYQClRq3Z8gS4dPTWa5qjDF+ZyWEnNR6QKoG5Cevq8k/ifWIOnqz/2IyxphssoTgQ9XLFuPOJsF8H7OZnQknsl7BmGyy7q+z7iF13759XHvttRQvXpx+/fqlmvfDDz/QoEEDGjZsyE033cTevXvPWf+1116jSpUqNG7cmFq1atG1a1eWL1+eMr9Pnz6pXqcnq66zb7nlllRdbfubJQQf63ddTZKSlE+nrfV3KMYPouOjz7mpICd+vW7dX2ctKCiIN998k6ioqFTTz5w5Q//+/Zk6dSpLliyhYcOGfPxx+t3XP/300yxatIg1a9Zw9913c91117Fnzx4AhgwZQr169TKNIatEPWHCBEqXLp2t48kNlhB8rOplRbmrWVVGxmxh28Hj/g7H5LKwsmFETo9MSQoxO2KInB5JWNmc++m6dX+dvmLFitG6dWuC0tz6ndyz59GjR1FVDh06ROXKlbPc3t1330379u35/vvvAWdgndjYWD7//HOee+65lOWGDx+eUiJJTnY7duygbdu2NG7cOOX9BwgJCUkpnQwcOJCwsDDCwsIYPHgw4Lz/devW5eGHH6Z+/fq0b9+e48ed88iHH35IvXr1aNiwYba75shSRt2g5vWHP7u/9tbWA8e05ku/64tjl/g7FJMDvO3+et72edrmhzb60cKPtM0PbXTe9nkXHIN1f5397q+HDRumTzzxRKppo0eP1hIlSujll1+ubdq00TNnzpyz3quvvqrvvfdeqmmDBg3SRx99VFXPdpu9e/duveKKK1KWuemmm3TmzJmp4oyKitK33npLVVXPnDmjhw4dUlXV6tWr6549ezQ2NlbDwsL0yJEjevjwYa1Xr54uXLgw5f2Pi4tTVdW77rpLv/32W1VVrVSpkp44cUJVM+4W29vur62EkAsmznyCHrUXMDp2C1v2HwOcQXaix/f2c2QmN0RUiqBb7W58seQLutXuRkSliAveZnKV0cqVK/nzzz954IEHUNVU3Vg3adKElStXsmbNGoBsd3+ddr3k7q+T++fJqPvru+66i7CwMJ5++mmWLVuWsp/kbp2DgoJSunVetGgR69ato0uXLuccm2f319HR0am6v07uOvpCnD59ms8++4y4uDi2b99Ow4YNs91HkKbT1U/58uWpUaMGc+fOZd++faxcuZJWrVqlWqZ58+YMGzaM1157jaVLl1KiRIlU82fNmkWXLl0oVqwYxYsXp2vXrimlCM+R3po2bZrynjds2JAePXrw3XffUaBAztwwagkhF4QFt+TvxB+pX3QKn0xdmzLiWlhw5g1O5uIQsyOGUatG0bdhX0atGpXjP1S07q+9kzyOxBVXXIGI0K1bt2w3ysfFxaXbj1X37t0ZNWoUY8aMoUuXLohIqvlt27ZlxowZVKlShZ49e/LNN99kO9703j+A33//nSeeeIKFCxfSvHnzlOkXwhJCLogI70NU4wHsq/QnOzZHpgy/GRHu277Njf8ltxlEXRNFv/B+RF0TlapNISdY99cZd3+dnipVqrB8+fKUxuHJkydnq7PCMWPGMGnSpHTHVujSpQu//vprhkN1btq0iYoVK/Lwww/Tp0+fc7qxbtOmDb/88gvHjh3j6NGj/Pzzz7Rp0ybDWJKSktiyZQvXXnst77zzDgkJCSmf3YXIlR+michNwAdAIDBEVf+XZn414GugtLvMC6o6ITdiyy0R4X24fe1Ehgeu5JYzNSwZXCLi98UTdU1USjVRRKUIoq6JIn5f/AVVHVn312dl1v11SEgIhw4d4tSpU/zyyy9MmjSJevXq8eqrr9K2bVsKFixI9erVM0xigwYN4rvvvuPo0aOEhYXx999/p9uRXpkyZahbty7Lly8nIuLcz3XatGm89957FCxYkOLFi59TQmjSpAk9e/ZMWbdPnz6Eh4efM5pcssTERO677z4SEhJQVZ566qkcuVvJ591fi0ggsBq4EdgKzAfuUdXlHst8CcSp6mciUg+YoKohmW03T3Z/nYnkaqImp6oTW3Ajbzd4ijbN+/o7LHMerPvrvMW6v85YXuz+OgJYq6rrVfUUMBLonGYZBZJTfClgey7ElWuSk0FU4wE8cPN3lNnWgZeWfkhM3BB/h2ZMvmfdX+ec3EgIVYAtHq+3utM8vQbcJyJbgQlAurcSiMgjIhIrIrHJ9X/5QfzW2SltBk2qlaFA2TsIPXgrS7fm31+XGmMuPnmlUfkeYLiqBgO3AN+KyDmxqeqXqtpMVZvlpyuC3rdGp2ozeKh1KDN2t6HaFb4dDs8YY7yRGwlhG1DV43WwO83TQ8AoAFWdAwQB5XIhNr+4qf7lVC4VxNBZ6/0dijlPvm57M+ZCnc93NDcSwnygloiEikghoDswLs0ym4HrAUSkLk5CyD91Ql4qEBjAgy1DmLt+P8u2J/g7HOOloKAg9u3bZ0nB5Fmqyr59+87ptiMrPr/tVFXPiEg/YCLOLaXRqrpMRN7A+Qn1OOBZ4CsReRqngbmnXuT/bd0jqvHBlDUMnbWBgd0a+zsc44Xg4GC2bt1KfmrHMpeeoKAggoODvVrH57ed+kp+u+00Pa/+Gs/3MZv55/+uo0JJG3vZGON7/r7t1GSgV6tQziQp387d5O9QjDHGEoI/hZQrxvV1KjJi3mZOnE70dzjGmEtclglBRN7PjUAuVVVC5pKgK/gl7uyNVzkxgIoxxngrOyWEa30exSXsllObKV31Wz6bNxFVdTpDm9qfsB0r/R2aMeYSkyud25mMXVWzEx8uHsMTZb7g//4+wNxdPxO1aw8RLTr5OzRjzCUmOyWERiKyQUTGich/ReQeEWkgIpZMckJoW5rfPpT7Difwx9Zv6XZgPxG3R0NoW39HZoy5xGQnISwBWgEfA/uA9sAwYJ+IxPswtkvGomJFGVO6BH0PJPBjieLEePljEmOMyQnZustIVber6iRVfV9Ve7n3sJYGzh3/zngluc1g0P5DJO69jv/uPkDk1P45PqqWMcZkJTsJ4eP0JrrjNa/J4XguOfFrxhO1aw9Xd4lmXvVHGXWyP+/t2kP8mvH+Ds0Yc4nJMiGo6tDcCORS1TugbEqbwb1XVWP84ZoUajqQ3gFl/R2aMeYSYw3D/tZ6QMrT9vUup1zxQny6sQxfPXCb/2IyxlyS7JfKeUihAgHc2bQqf6/czc6EE/4Oxxhzicl2QhCRwiJyr4i8JCL/Tn74MrhL0T0RVUlMUn6cvyXrhY0xJgd5U0L4FWcs5DPAUY+HyUHVyxajTa1y/Dh/M4lJ+bMnWmNM/uRNG0Kwqt7ks0hMinsjqvHYiIVMW7Wb6+tW9Hc4xphLhDclhNki0sBnkZgUN9SrSPkShfl+3mZ/h2KMuYR4kxBaAwtEZJWILBGRpSKyxFeBXcoKBgbQrVkwU1ftZvvB4/4OxxhzifCmyuhmn0VhzhFYZjoBRU8ycn4tnrnxSsD5VXP8vnh6h/X2c3TGmItRtksIqroJp7uKW91HaXea8YHWCesoXfVbvl88hTOJSdYttjHG57y57bQ/MAKo4D6+E5EnfRXYpS6iZic+2LufM2WG8vyUd4mc2t/pFrumdYttjPENb9oQHgKuUtV/q+q/gauBh30TliG0LVd3iea+wwlM3jHCusU2xvicNwlBAM+BfxPdacZHFhQtYt1iG2NyjTcJYRgwT0ReE5HXgLmAdXznI9YttjEmt3nTqDwQ6A3sdx+9VHWwj+K65Hl2iz2zyiP8kjjAusU2xviUV72dquoCYIGPYjEeegeUBbfNoFuzLTw/5gCP3P4Bvc/YEBTGGN/IsoQgIrPcv4dF5JDH47CIHPJ9iJeo1gNSGpBvaViJIgUDGbataqruso0xJidlZ4Cc1u7fEqpa0uNRQlVL+j5EU7xwATo2rMT4xds5duqMv8MxxlykvPkdwl0iUsJ9/oqIjBWRcN+FZjx1a1aVo6cS+WPpTn+HYoy5SHlzl9G/VPWwiLQGbsC5w+hz34Rl0moeUoaQskUZFWvjJBhjfMObhJD8G4SOwJeq+jtQKOdDMukREe5qVpV5G/azaZ8NQ2GMyXneJIRtIvIFcDcwQUQKZ3d9EbnJ7SV1rYi8kMEy3URkuYgsE5HvvYjrktG1SRUCBH5asNXfoRhjLkLeJIRuwESgg6oeBC4DnstqJREJBD7B6S21HnCPiNRLs0wt4EWglarWBwZ4Edclo1KpIrS9sjw/Ldhqo6kZY3KcNz9MO6aqY1V1jft6h6pOysaqEcBaVV2vqqeAkThDcXp6GPhEVQ+4296d3bguNd2aVWVHwglmrd3r71CMMReZC73LqEk2Vq0CeLaEbnWneboSuFJE/hGRuSJiQ3Vm4Pq6FShdtKA1LhtjctyF3mX0WQ7FUQCoBbQD7gG+EpHSaRcSkUdEJFZEYvfs2ZNDu85fRvzxMF1DY5i8bBcHj50CICZuCNHjbdAcY8yFyY27jLYBVT1eB7vTPG0FxqnqaVXdAKzGSRCpqOqXqtpMVZuVL1/ei9AvHmHBLZl8eiS1gybz66LtxMQNIXLRYMKCW/o7NGNMPudNX0bbRORL4EbgHS/uMpoP1BKRUJxE0B24N80yv+CUDIaJSDmcKqT1XsR2yYgI78P7wLMMYs7CFQwttoWoxgOICO/j79CMMfmcNyWEu4A/gBvdu4zKAJFZraSqZ4B+OHcorQBGqeoyEXlDRG5zF5sI7BOR5cBU4DlV3edFbJeUiPA+tAusxT8lttKpaB1LBsaYHJFlCUFEZrn9Ge0G1J0GzuA4CmTZn5GqTgAmpJn2b4/nCjzjPkwWYuKGMD1pLU0OVmZ8qRW0ixtiScEYc8Gsc7t8JrnNIKrxAIqUe5sqezoSuWgwMXFD/B2aMSaf86bKyOQB8Vtnp7QZ3NE0mLkHrqFvpYeI3zrb36EZY/K5bDcqi0gz4GWgurue4NT2NPRRbCYdvW+NTnnernZ5yhYrxKy9bfnsvqf9GJUx5mLgzV1GI3C6qlgKJPkmHOONgoEB3B5ehW/mbOTA0VOUKWZ9DRpjzp83VUZ7VHWcqm5Q1U3JD59FZrLlzqbBnE5Uxi3e7u9QjDH5nDclhFdFZAgwBTiZPFFVx+Z4VCbb6lYqSf3KJflpwVYebBni73CMMfmYNyWEXkBj4CbgVvfRyQcxGS/d2TSYpdsSWLXzsL9DMcbkY94khOZutxEPqmov92Ed6OQBtzWqTIEAYcxCGyfBGHP+vEkIs9OOY2DyhrLFC3NdnQqMXbiNM4nW3m+MOT/eJISrgUXuyGdLRGSpiCzxVWDGO3c2DWbvkZPMWHNp9gJrjLlw3jQq2xgFedi1dSpQtlghflqwlevqVPR3OMaYfMibEkIEsN+91fR+YBDOMJomD/h2xXBa1D/AX8t3nx0nYUcM0fHRWaxpjDGOCx0g53PfhGW8FbZjJXHHBpJYeA3jF28nZkcMkVP7E7Zjpb9DM8bkE7kxQI7JBRE1OzFoz15KV/2WL5d+RuTU/kTt2kNETbsz2BiTPd4khG0i8gVwNzDBiwFyTG4IbUvE7dHcfySBg4UncOf+/UTcHg2hbf0dmTEmn/DmhN4NZyCbDu4AOZfh9G1k8oiYoCDGlCpB3wMJ/FC8GDFBQf4OyRiTj2Q7IajqMVUdq6pr3Nc7VHWS70Iz3khuM3h/XwIhcitv7TzAs3/3J2ZHjL9DM8bkE950f10YuAMI8VxPVd/I+bCMt+LXjHfaDG6P5q/jtRnyXXX+t/ML4teMJ6JShL/DM8bkA978DuFXIAFYgEfndiZv6B1QFtw2g3aJSbxQtAlzi7/AswFH/R2aMSaf8CYhBKuq/Tgtr2o9IOVpgcAAujapwmezTvFgj+sp57+ojDH5iLd9GTXwWSQmR93VNJgzScovcdv8HYoxJp/wJiG0BhZYX0b5Q62KJWhUtTQ/LdiKqvo7HGNMPuBNldHNPovC+MRdTYN55Zd44rcdokFwKX+HY4zJ47y57XQTcAioCFT3eJg86tZGlSlcIIDRC7b4OxRjTD6Q7YQgIn2AGTg/Tnvd/fuab8IyOaFUkYJ0qH85vy7azonTiVmvYIy5pHnThtAfaA5sUtVrgXDgoC+CMjnnrmbBJBw/zV8rdvk7FGNMHudNQjihqifA+ZGaqq4EavsmLJNTWl5Rjkqlghgda8NrGmMy501C2CoipYFfgMki8iuwyRdBmZwTGCDc0SSYmWv2sDPhhL/DMcbkYdlKCCIiwFOqelBVXwP+hTMewu2+C83khOjxvQkrNoUkhTELnVJCTNwQosf39nNkxpi8JlsJQZ0b2Sd4vJ6uquNU9ZTPIjM5Iiy4Jf9d8ykdq87hpwVbmbfwKyIXDSYsuKW/QzPG5DHe/A5hoYg0V9X5PovG5LiI8D5EAc/GDSL0ZAyRi7bzfvgAIsL7+Ds0Y0we400bwlXAHBFZ5+0vlUXkJvcXzmtF5IVMlrtDRFREmnkRl8lCRHgf7ioVRlzZHTQ/E2LJwBiTLm9KCB3OZwciEgh8AtwIbAXmi8g4VV2eZrkSOLe2zjuf/ZiMxcQN4adDy+iQGMrcAuuZPu8Lrrmqr7/DMsbkMd6UEB5X1U2eD+DxbKwXAaxV1fVum8NIoHM6y70JvAPYrTA5KCZuCJGLBhPVeAA9b/6OMts68MqyD4mJG+Lv0IwxeYw3CeHGdKZlp3+jKoBn3wlb3WkpRKQJUFVVf89sQyLyiIjEikjsnj17srFrE791NlGNnTaDsCql0NJduPLQbSzdOtvfoRlj8pgsq4xE5DGckkCNNG0GJYB/LjQAEQkABgI9s1pWVb8EvgRo1qyZdeGZDb1vjU71unvzarzyS2uevKOVnyIyxuRV2SkhfA/cCoxz/yY/mqrqfdlYfxtQ1eN1sDstWQkgDJgmIhuBq4Fx1rDsG50bV6ZIwUBGxmz2dyjGmDwmy4SgqgmqulFV70nThrA/m/uYD9QSkVARKQR0x0kuntsvp6ohqhoCzAVuU9XY8zgek4USQQXp1LAS4xZv58jJM/4OxxiTh3jThnBeVPUM0A+nd9QVwChVXSYib4jIbb7evzlX94hqHDuVyPjF2/0dijEmD8nWbadu1xXBqnpeHeur6gQ8funsTvt3Bsu2O599mOxrUq00V1YszsiYzdwTUc3f4Rhj8ojz6rrC5G8iQvfm1Vi8NYHl2w/5OxxjTB7hTZXRQhFp7rNITK7q2qQKhQoEMHK+NS4bYxzedl0x93y6rjB5T+mihbgl7HJ+jtvG8VM2mpoxJhe6rjB5V+lK/3BsdRITltbnjqbBAMTsiCF+Xzy9w6x7bGMuNd6UEDYDbYAH3W4rFKjok6hMrrj51GZKBX/L0AWTAScZRE7tT9iOlX6OzBjjD94khE+BFsA97uvDOJ3WmXzqqpqd+GD/PrYHfsIbswYSObU/Ubv2EFGzk79DM8b4gVdtCKr6BG7nc6p6ACjkk6hM7ghtS8NbvqLH4YOMXjeMbgf2E3F7NIS29Xdkxhg/8CYhnHa7slYAESkPJPkkKpNrVpUpwZhSJel7IIEfS5YgJijI3yEZY/zEm4TwIfAzUEFE/gPMAv7rk6hMrkhuMxh04BCJe6/j7V0HiJzan5gdMf4OzRjjB9m+y0hVR4jIAuB6QIDbVXWFzyIzPhe/ZrzTZtAlmv/9HsDmo014b9eHxK8ZT0SlCH+HZ4zJZdkuIYjIdzh3GU1R1Y8tGeR/vQPKprQZPNgyhDEHrqBIs4H0Dijr79CMMX7gTZXRUKAS8JGIrBeRMSLS30dxmdzQekBKA3LHhpUoV7wQH66v7Ew3xlxysp0QVHUq8B/gX8BXQDPgMR/FZXJZ4QKB3BNRjSkrd7Fl/zF/h2OM8QNvqoym4IyQdjewCmiuqnV8FZjJffdeVY0AEb6du8nfoRhj/MCbKqMlwCmc0c0aAmEiUsQnURm/qFSqCDfVv5wf52+x/o2MuQR5U2X0tKq2BboC+4BhwEEfxWX85MGWISQcP82vi7ZlvbAx5qLiTZVRPxH5EYgDOgPRwM2+Csz4R/OQMtS5vATDZ2/EGQbDGHOp8KbKKAgYCNRR1RtU9XVV/dtHcRk/ERF6tgxh5c7DzN94wN/hGGNykTdVRlE4/Rg96pYWGvkuLONPh3e+SvPS0/h69saUaTFxQ4geb11iG3Mx86bK6ClgBFDBfXwnIk/6KjDjP42qtmJnhQls3TCCHQnHiYkbQuSiwYQFt/R3aMYYH/JmgJw+OD2eHgUQkXeAOcBHvgjM+E9EeB9eOXqKN/mED8asYbasJ6rxACLC+/g7NGOMD3nThiCA572Iie40cxHq0Ppxmp4O4ffADdxRsp4lA2MuAd4khGHAPBF5TUReA+bidGdhLkIxcUNYWHAT4fsq8VPCMmLihvg7JGOMj3nTqDwQ6AXsdx+9VHWwj+IyfpTcZvB++ACSSr5J8N6ORC4abEnBmItclm0IIhIEPArUBJYCn6rqGV8HZvwnfuvslDaDx0rspceQa/i/K8sTv3W2VR0ZcxGTrH585P4Y7TQwE+eHaBtVdYDvQ8tcs2bNNDY21t9hXPRUlds/+YeDx0/z97PtCAywZiNj8jMRWaCqzdKbl50qo3qqep+qfgHcCdiAu5cQEeGxdlewad8xJizd4e9wjDE+lJ2EcDr5iVUVXZra17ucK8oX47Np66w7C2MuYtlJCI1E5JD7OAw0TH4uIod8HaDxv4AA4dFrrmD5jkNMX73H3+EYY3wky4SgqoGqWtJ9lFDVAh7PS+ZGkMb/OjeuQqVSQXw6bZ2/QzHG+Ig3v0M4byJyk4isEpG1IvJCOvOfEZHlIrJERKaISPXciMtkX6ECATzcpgYxG/azYNN+f4djjPEBnycEEQkEPsG5Q6kecI+I1EuzWBzQTFUbAj8B7/o6LuO9xP1vEFFmGp95lBKs0ztjLh65UUKIANaq6npVPQWMxBlPIYWqTlXV5IF85wLBuRCX8VKjqq3YUX4Cuzb/wKqdh63TO2MuMt50bne+qgBbPF5vBa7KZPmHgD98GpE5LxHhfXjrVCIv8yGfj1vNgoIbrdM7Yy4iudKGkF0ich/QDHgvg/mPiEisiMTu2WN3u/jDNVf1pRVX8FfhTXQqWseSgTEXkdxICNuAqh6vg91pqYjIDcDLwG2qejK9Danql6raTFWblS9f3ifBmszFxA1hjqyn+YHKjD+6wvo3MuYikhsJYT5QS0RCRaQQ0B0Y57mAiIQDX+Akg925EJM5D8ltBlGNB3B1k08pva0Dz8ZZp3fGXCx8nhDcXzf3AyYCK4BRqrpMRN4Qkdvcxd4DigOjRWSRiIzLYHPGjzw7vXugRQj7C3ai3pHbWLp1tr9DM8bkgCw7t8urrHM7/xuzYCvPjl7MR/eEc2ujyv4OxxiTDRfauZ0x6bo9vAp1Li9B1KRVnDqT5O9wjDEXyBKCOW+BAcL/3VyHTfuO8UPMZn+HY4y5QJYQzAVpd2V5WtQoy4dT1nD4xOmsVzDG5FmWEMwFERFeuLkO+46e4qsZ6/0djjHmAlhCMBdswaJn6FZrPl/N3MDuQycA6+PImPzIEoK5YGHBLZkrP1G78GQGT1ljfRwZk0/lRl9G5iIXEd6HKOBZBrF1w1KePbCd98OtjyNj8hsrIZgcERHehztK1Seu7A7qHQumcQOrLjImv7GEYHJETNwQxh5aTrfAWiwruoWPxrzj75CMMV6yhGAumGcfR/+6byyt9C5+Pvodv8/42N+hXZKi46OJ2RGTalrMjhii46P9FJHJLywhmAvm2ccRwPN3v0jlPbcwYekUEpPyZ9coeV1mJ/16l9XnmWnP8uPSqcRvS2DMsmk8Pe1ZVuzZwJ9rZ7HvyEnOJCalrPPYX49ZAjGA9WVkfOTXRdvoP3IRr3SsS582NfwdTr4VHR9NWNkwIipFpEyL2RHDhA0TmLxpCl2rvMCRhBBWHoxjeeInFN73IPv3VUOD1hJU5XtOH7iKgmXmcWLbvQAEVfmeE9vuRU7UpGLFrRwrNYy6Rbqw9tSvPHTlv+lUuy3bji8lcnokUddEpdqvuThk1peRJQTjE6rKQ1/HMnvdXiYOaEv1ssX8HVK+FLMjhsjpkbzT5l2CEmvzy8rpjNvxLrLnfhKOnSaoyvdwqAWBpecSmtSXK0o05vKSQVxeKoi4wyP5a8cIrrv8Xq6t8ACnE5NYe2gRP2//HzWDbmTl0UmUOdKbXburcjxwVUoCCbpsHk2CnqJUmZ1cH9qMW2u3QURS4onfF0/vMLtpIL/KLCHYbafGJ0SE5qU+5lDR8rwwpgzfP3wVIkJM3BDit86m961WHeEpvZLA3O3zmLh2PvUKPMEjEwdwcr9ztV/iUC9aVL2KJtXLsO70acasH84jDfvSL7xnyroxO2IYMn0CfRv2ZdSqUfRoeL277aqUiNvEF0u+oG/DvvQL74Oqsu9oOwbNP8m4zd8QLLexdF15Dupe/tr+PG/89iCtg6+mZvVd/Ljpv7x/TVTuv0EmV1hCMD7TNKQN3x8YROltSYycX5krCk5KaXw2qYWVDSNyeiTvXfMeRRJrM2T+JKYeGMixrfdS4FRJal55A5vL/8p9tR/i/67uC7MGE1O4OF9t/DXlpB9BEBFHjxBzfDuRe2YSde0HRFSKIOLyCCKn9icqsQyEdWXUqlHnrLP+ipbM3DU+ZfqnfW6jbGAvfowPZUyBt/l71xomH52N7rqPt05P5MYr9tGnWXuKFAoErORwsbCEYHwmIrwPUapEMphJs5exruQ2ouwHa+lqWK4pN1d8jof/HMCJfREUKjOPugUe57W6G9kfspmX182gb23nZH1t4eKwayGRhxamNOZHEJSSbOOTChO1aw8RJ5xuRCJOnCBq1x7+CAlmiruM5zp9itViyOYfz00g5dvw8o3vUsotUXQKvp/Ay67hjzUz+fzU63w2bR3XhrSkYc09jFj/H6Ks5JDvWUIwPnVVk4e5fe0khgeupOXhYOrV6+nvkPwqbdXQrkMneHfa7/y1fj4JO9tQJbQNWv4PHqzbh8iIB4iJG8LL6ZzEr6/cmqgaA4iY/F84sIuI2KFE3fgS8QUD6N32Tah6I4zuCc0egtihRNw1nPija4k63eGcdYZt+YuodecmkPgCqyFuSKoSRVTty3iz3Em+KfomHy97lVl71zPt+GyKHezJP/Gl+WfLF7SqGn5OI7iVHvIHSwjGp2LihvDr0RV0L1ybP4qu5NVv3uC9h14nIED8HZpfJFcNPVH/deYsK82ENbMoVHkEPQvWpfoNa/lo79yUkkDbgsXO3tKbzok/Iqw3HNgFM96Fts+7CcMV2tZJBu48QtvSm7bOvLTrhPeBDTPOSSAcXJ1S6khbCukVfiNHA1bxxZIvuPHyHuyXJnz49xoCi57km6r96X3lv3n0qg7E7Y5NuWPJ5H2WEIzPeP5gLSK8DyXHvsuPB7/m3R8L88I9L/s7PL8omlSbiif78EbMi8ihFpSoPo/XrnqXiscyPvlGhPdJ/8S/YQbEDnVO+LFDIbSNkwgym5fR9HQSSHz82vSTkTuGdqqSQ3g5Pqx6gGg688OSQny+4nWiF/xFgdJz+W+rd+321XzCEoLxmbQ/WOvX5Tn2fHOCZdvm8OuibXRuXMXPEfpO2qqh5dsP8frkXym050dKHbmOZo1uYWGB0fRq0JdbC0H06kxKAumdxMG5or9ruHtCb3P2dUbzWj8DswZmvE6afaRU8aRJRkCGyeuZ8Cvpf30tnp+SwKTt33F013U8MfQQYfXe4q4GLbmn4XUp75FVJeU99jsEk6tOnUnivqHzKHLkv9we3p4u1z2ZMu9iuiU1+fcD/Ru8wV9xJZi0/h+KBn/Pg8U603r7UJ6vWJ5udXswasUIpwH49mjnJP33f85epV/38tmqnOSTePLrurdC2B1nSwTgzNu20Hlepcm58/75EFo9de70pWNg5fhz9+GZXNyqJO4aTvTRtYSdTnKSlzs9Jrn94uAhYooVJ3LVN3Sr3Y0fVv5I+zPtObxlOX9U3EDV04/weIubKFduMy/MfN5+/OYH9jsEk2cUKhDA5/c15anP6vH+xs8pMacAN7R4LFX10sXgyvjptD52Pa/OfQE53IIyoTG8f2UvihxaR2RieScJXJ5AxK49RFYsT1RQUPolgW0Lz56owfl713BnuueJPXle2mlZzQttm/E+0iYKt0TRO/l1OtVYaasJk0sPb93wJCUSujNm69tETl5M4cvm0bnyC8zfsRjAGqHzCCshGL9YufMQL0e/zu7L/+SuUmH8dGhZquql/CC9H5P9tf4fhsbOIHBJAT4M/ICXanXkn8TZ9K12M/3m/0T01T0Iq3UrESsmp5xMY+reSPya8fSeOyL9q/SMTvK+Nmtw+iWNbQud6WlKDoS2dd6T9EoPW2fTO6wnHx1YwpdLv6BCYicqrC1D5eJxTAvexCvN36ZL3WtSSlZWcvAd67rC5EmTl+/i2z/vJ67sDh4qVpcBd47yd0he8Tx51b+sCW/8NY7fd73LyW09uLP+NVxf6R/eWPkJ3UqHMepg/NmEl+aOnpQr/oxOvq0H+OkIM5BRNZZn8kqn6ivml95EelSVvbNzD0sue4WB2w5T4PIRVA64jsOFZjD42ve5uvJV/ju+i1xmCcF6OzV+U+rkeDaU3kaT/ZX46dAyJs3+1N8heSVi3Wzernkf/f56mlZfPM9vO9/llsQOzI04TpcWJ3hj0w9EVbyOfov/IKridUSu+oaYuCFnT57Xvez8Hd3z3GQAzuu8lgwg82osOPdOpg0ziAkKcqrGdu2h34EEonbt4f8uL094leXEdKlH0zK3sDNgPPt3NOWHr+fx2jfdmbpxdqrdWg+svmcJwfhFcl3z++FP0/e277l81828sfITfp3+kb9DO0d6XU3P2TaXl3duot5vb1J8d3USS03m7opX8e6Bbyl75dXE74snqvYDRMT/5tSxx/9GVO0HnFs2MzuZ5getB2ScvDxLCx4JL37NeOeX0I16wYx3iWjUi6hrPyC+cGFWTezLxhN/8HCDRyhbcS63BwxiwabKPPn3Mzw86geWbz+UUhoLKxuW64d7KbEqI+MX0eN7ExbcMqXNYOXOQ7z53VskFp1M55oPck/7ASnL+vvuI8+qoWYVm/PRnD8YuvpNjm65hxvK7GJ5sV+5u0x9Rh1cdm61UF5qE8gNXrY7xAQFOd1k7NpDRKNexCweRmTF8rxc9Gr+SSjD2MQJnNp/FUXKxtC3dBd6lQnkh3Jl0u0S3Bqis8faEEy+sCPhOK8Me4NVJcfRs1wv+twWec5dK34xazBzixRjwMqvCTzSkoMFZnDV4WvpWOkIH+hioko2JiLma2IiHiTy0CKnQXTd7PzTJpAbMkiQWTWyDwzvyrDtE7niaBOG7prC00kDoG4l1uhnDHLbGqwh2juWEEy+cejEaV4e9jpxhX+mpdZgbsCGXEsG6d019M/WuUyY+yPPLfuJrsXbsKfcUm4pfg3/WzeBYVf3IKxE9fTvx7cr1dTO446l5IuB5Eb5Z0L6siDhWsos+pSpgUFsCp5NWImb2HhqCoPqPMCybXMIa/boRVtyyGiwJG+PzxqVTb5RMqgg7z/8Blcn1eCPAhupdagKa0+1Z+j43k6DrIeYuCFEj8+5f/SwHSuJnNqfmB0xJBw/zct//ky/SU9ydOUOnitzP6fLLOaREvWYc2ga8298id5Vb3SSgUd9ecTk/9K7WM0ci+mikVG7Q3IySNPmEBM3hMhV36RqlB+4azS3XnWMfj268VPgWOqdqcfSo2MI2lGVK8e9QeFtB3l6ylPM2zEPcKv6pvYnbMfKXD7Y85fV0KhPT32WwbMmsHHvUZ+0q1gJweQ5yVeGHYvU4bdjKyi9rQMVShRmdcnxvO92n30hVUkZXWktXT2OugtGMqDsZRw70IoCJWYyaO8+doX359P9Y8+tGip7NRE1O1m10IXIoOQQHT/caWPKoPSV/Pl3LVGPMYeW0fT0HezdUoKexT7h+YrlCSlyMzvOTGTQ3n0srxJGWK1Oqb4n/m6Xyug7+Mecd5lyYhtvtRlICa3DH2tn8cuWN7n1QB2C9hdjRsEirK88m6vLdWTN8cnOjQtHj3j1ffN7lZGI3AR8AAQCQ1T1f2nmFwa+AZoC+4C7VXVjZtu0hHBxSnuin7fwKyIXDab6/k4kHD/NwSoTubVYXX47ttLp+3/r7FSN08nbSO6ALb15fywZxpSCSSn9/49dPo135j/PjXuuZN3+hjSp8CXflCnCw4dP8VTHrzLvquEiqIrIkzJplI8JCnLaDNIk6Nev/h+Bq3YQu/IFhpUO4oEDx1m4+xGKVjjA6pLjeLRyHzq2fYLVq75xuhAPqsLNde465/sxbMlX9Gr4sFcJJO1NElltK/k7+M41g6hQKIzfV89kxNpXeTjhcmocW8oz5cty7EAripb5h6g9e5ld7AVCyhbj7o3/IqpxF0bu+Svlx47e3qjg14QgIoHAauBGYCswH7hHVZd7LPM40FBVHxWR7kAXVb07s+1aQrg4ZfSPtXjLP5wu+TLzFz1BbJntXJVQhfLB71E3aDJDdkWnJJC0XWB4JpfkeW9UvIWCK8bwTLmyBJ5ox7ECfxO1ey/zSrxIwQZVGL/5Ve7et4dRZSsQdcOnzjgBl+IdQ/6USZtDdOmSGSbosLJhRP71ON327WbkZeVpW/4VNm2rxLHdo9lz+Z/UOFiF9aW3EXH6DiqULMzvx7/nxVqP06HV4yxYPNQZMKhCC4bsnpPudyqjC5A/Vo5myolt56yTvK1Xaj9OycvvJm5JNN/vH07H4y2IODKFZ8p5nPh372VCwDNUu6woevxdoksV5pHDp+h3y5dIjWtS9uXZrnI+JWR/J4QWwGuq2sF9/SKAqr7tscxEd5k5IlIA2AmU10yCs4Rw6Un+Z2gXUJOpiWuosOtmFiRcS+Pif7Ov8p+04gr+YR13lXyAUpXvplCBAI7sHMU3e4fRUq9gtqyjyp6OzD1wDS0ClqWUBB46dJIHr/uUNZeVTPcWyKjybaxqKC/JoPQQc+NLRK4Yeu7nd+0HNCzXlIGju/HD6dXccLI6K449z9rdR6hb5C8OVJnIFQlVWFdqG/WPdCapdFeq8AdTzozkugK1+PvMGnpX7E2l6j3Yt3Ukn28fwpNVH6ZCtXvYuPZbhu6KpnuZBzl1Jomxh78lIjGUmMAN1D7cmUWHr6WS/sGBKhNTklH5nTdxvGhnOhRdDSecE//Dh0/xaIcvKFSrndM24Ca1lIuSShFn76ZK7642L+6u8nfndlWALR6vtwJpf5eesoyqnhGRBKAssDcX4jP5QNqqpOTX7zWvyoYzD7N+3XJ+L76B8H1VGLg6DFjmrlmXthWqMKHsBlodqUbJK3rQoVJJAooUZsiyUvR1SwItLyvp/HjKo+fRiNA2RP3Sm/jgwkR405Gc8a0MfikdP39g+p/fmvGwcwl/nlxF3+Qr62tW06hBL9bubsXovzYw5rK13HgqlL3Fb2f3/mPEHrqKBsVnMrbsOsIPVuH11XVg5gKgFg2KtedDvqTG0t9ZX3obZbZ14L3V9QFoW6EKk8puotXhapwq1YUbqwZRseSjHNi+nrFl19GzaD2e7hlFQIAQsyOIyL9K0tc98V9dvCi4DeFRew8S0agvEYuHOa+v/eDsjx0n/9f5sWNyF+n74nPsdtt81dupiDwCPAJQrVo1P0djclPasRUiwvsQ5U5vF1yM33ZsoW+J+oxKWsY3rbcSVr8Xp84ksXhpNP9ZvZ1HStRndNIyoq6YD5c3JHLqv3h/b0Lqf7rybc52Qw3OSeX2aCLy06+ILwXplcpC29J720Jo/sw5nx8LhxC57uezPbAmX1y4q/6duOZsomi8xOOCYzu9itbll8QVfNp8AyFXPMCpxCROJ7Zg8uxN/FB2NfcH1eWeJ96iaKFAVq74mhfjt9O3ZBijkuKJarT47La2rE3ZR5vFQ93v4Lkn/uvLNsowqfVOHhbVo/fZiNE9ndHtcoqq+vQBtAAmerx+EXgxzTITgRbu8wI4JQPJbLtNmzZVY+Yt/ErbRNfXeQu/Oud1RvNeG3unzht4her66c5G1k/XeQOv0KHTX/HXYRgfGjquV8p3INm8hV/pa9+3T/f78fVvfTL8Tnm+/mjs3Vl+1zLaVobfwR87n52WbP101ZmDnEdG87wAxGpG5+uMZuTUwz3BrwdCgULAYqB+mmWeAD53n3cHRmW1XUsIRjXjf/ah43plPO/rdjnyj2Xyt4y+H48Oj8jwO5XhRcb37b3blh+/g5klhNy67fQWYDDObafRqvofEXnDDWyciAQB3wLhwH6gu6quz2yb1qhsjMltGd0Fl59G+vP77xB8wRKCMcZ4z7quMMYYkyVLCMYYYwBLCMYYY1yWEIwxxgD5uFFZRPYAm85z9XLk/19B5/djyO/xQ/4/Bovf//xxDNVVtXx6M/JtQrgQIhKbUSt7fpHfjyG/xw/5/xgsfv/La8dgVUbGGGMASwjGGGNcl2pC+NLfAeSA/H4M+T1+yP/HYPH7X546hkuyDcEYY8y5LtUSgjHGmDQsIRhjjAEu8oQgIjeJyCoRWSsiL6Qzv7CI/OjOnyciIX4IM0PZiL+niOwRkUXuw7vBVX1MRKJFZLeIxGcwX0TkQ/f4lohIk9yOMSvZOIZ2IpLg8Rn8O7djzIyIVBWRqSKyXESWiUj/dJbJs59DNuPP659BkIjEiMhi9xheT2eZvHEuyqhf7Pz+wOlqex1Qg7PjMNRLs8zjpB6H4Ud/x+1l/D2Bj/0daybH0BZoAsRnMP8W4A9AgKuBef6O+TyOoR3wm7/jzCT+SkAT93kJYHU636M8+zlkM/68/hkIUNx9XhCYB1ydZpk8cS66mEsIEcBaVV2vqqeAkUDnNMt0Br52n/8EXC8ikosxZiY78edpqjoDZ3yLjHQGvlHHXKC0iFTKneiyJxvHkKep6g5VXeg+PwyswBnD3FOe/RyyGX+e5r6vR9yXBd1H2rt58sS56GJOCFWALR6vt3LuFyllGVU9AyQAZXMluqxlJ36AO9xi/k8iUjV3Qssx2T3GvK6FWx3wh4jU93cwGXGrIcJxrlA95YvPIZP4IY9/BiISKCKLgN3AZFXN8DPw57noYk4Il4LxQIiqNgQmc/YKw+SehTh9wzQCPgJ+8W846ROR4sAYYICqHvJ3PN7KIv48/xmoaqKqNgaCgQgRCfNzSOm6mBPCNsDzijnYnZbuMiJSACgF7MuV6LKWZfyquk9VT7ovhwBNcym2nJKdzyhPU9VDydUBqjoBKCgi5fwcVioiUhDnZDpCVcems0ie/hyyij8/fAbJVPUgMBW4Kc2sPHEuupgTwnygloiEikghnIaacWmWGQc86D6/E/hb3VadPCDL+NPU896GU7+an4wDHnDvcrkaSFDVHf4OyhsicnlyXa+IROD8T+WViwrc2IYCK1R1YAaL5dnPITvx54PPoLyIlHafFwFuBFamWSxPnIsK5PYOc4uqnhGRfsBEnDt2olV1mYi8AcSq6jicL9q3IrIWp+Gwu/8iTi2b8T8lIrcBZ3Di7+m3gNMhIj/g3AFSTkS2Aq/iNKihqp8DE3DucFkLHAN6+SfSjGXjGO4EHhORM8BxoHseuqgAaAXcDyx167ABXgKqQb74HLITf17/DCoBX4tIIE6yGqWqv+XFc5F1XWGMMQa4uKuMjDHGeMESgjHGGMASgjHGGJclBGOMMYAlBGOMyRey6mgxzbKDPDr7Wy0iB7O1D7vLyBhj8j4RaQscwel3Ktu/dBaRJ4FwVe2d1bJWQjDGpCIiNURkqIj85O9YzFnpdbQoIleIyJ8iskBEZopInXRWvQf4ITv7sIRg/MIt0g7weD1RRIZ4vH5fRJ7xS3BeEJGQ7BThvdzm9SLy7XmsV0REprs/gDpvbg+7D6XZdiERmeF2q2Dyji+BJ1W1KRAJfOo5U0SqA6HA39nZmH24xl/+AboBg0UkACgHlPSY3xJ42h+B5Sa3ywVR1SSPyY2AuPPYXG9grKomZnPfDYC3025DVXenXVZVT4nIFOBuYMR5xGZymNvhX0tgtEdP2YXTLNYd+Cm73wkrIRh/mQ20cJ/XB+KBwyJSRkQKA3WBhSLyi1scXiYijySvLCL/E5EnPF6/JiKRInKfOKNTLRKRL5Kvlt0r+RUi8pW7rUnuFXWqK3x3G6+501eKyHC3UW6EiNwgIv+IyBq3z5xkBdz5K8Tphryou63MYlklIt+4x5222/JGQJw4o2gNF5H/JvfVk4UewK/ZjV1Vl6pqpzSPc5KBh1/cfZi8IQA4qKqNPR510yzTnWxWFyVv0Jhcp6rbgTMiUg3nKmcOTj/3LYBmwFJ3YKDebnG4GU7fTcl9xP+IU8JI1s1d/26gldvVcCKpT2C1gE9UtT5wELgjizBrAu8DddzHvUBrnKL5Sx7L1QY+df8ZDwGPi0jdbMTyqarWV9VNafbbEKff/InAX6r6UlZ984jTAWINVd3oZezpbausiHwOhIvIix6z4oHmma1rco/bDfgGEbkLUoZCbZQ8321PKIPzv5UtVmVk/Gk2TjJoCQzEGSSkJc7gIP+4yzwlIl3c51VxTqT7VDVORCqISGWgPHAA58q6KTDfvaAugnNiTbZBVRe5zxcAIcCsTOLboKpLAURkGTBFVVVElrrrJtuiqsnxfgc8BZzIIpZN7uhkqYjT1XMNnKu6vqqa3X/mcjhJztvYz6Gq+4BH05meKCKnRKSEO3qZyUWSfkeLPYDPROQVnE4XR+IMtwtO6WCkNx39WUIw/vQPTgJogHP1uQV4Fucqe5iItANuAFqo6jERmQYEeaw/Gqeny8txSgwCfK2qnle1nk56PE/EOUmfIXVJOSiD5ZM8XieR+n8n7T+cZiOWoxlMr4vT9fllbowAiEgxnAbDU8A0VU1bj3/8PGP3VmGcZGdymarek8GstGMrJC//mrf7sCoj40+zgU7AfndEqf1AaZxqo9k4g4QccJNBHZwB4D39iHMVdCdOcpgC3CkiFQBE5DL3LovM7AIquNUkhd14vFVNRJLbQ+7FKXWcTyzglHJm4xzXMBGp6E7vitM4+DDO2BepqOoBIFBEgtLOyyludd1eVT3tq30Y/7KEYPxpKU5Vx9w00xJUdS/wJ06D7Qrgf2mWQ1WXASWAbe5g7MuBV4BJIrIEZ1jRTAeLd09ubwAx7vJpBy7JjlXAE26cZYDPzicWVyMgXlVXA/8HjHKrkYI5O+5xRneMTMJpJ/CVa4Hffbh942f2S2Vj8gERuR+ntPSbiIxU1XMGUBGRJsDTqnq/j2IYC7zgJitzEbISgjH5w1jgDhH5DBif3gKquhCYKhf4w7T0uHcx/WLJ4OJmJQRjjDGAlRCMMca4LCEYY4wBLCEYY4xxWUIwxhgDWEIwxhjjsoRgjDEGsIRgjDHGZQnBGGMMYAnBGGOM6/8BwkDTT519r0kAAAAASUVORK5CYII=\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "fig = plt.figure()\n",
+    "ax = fig.add_subplot(1, 1, 1)\n",
+    "\n",
+    "# Plot Gooch-Tarry law, for comparison\n",
+    "ax.plot(k0_list, GT, label=\"Gooch-Tarry law\")\n",
+    "\n",
+    "# Two plots are made, with 7 or 18 divisions in the TwistedMaterial\n",
+    "ax.plot(k0_list, T7, 'x', label=\"Berreman4x4, 7 Divisions\")\n",
+    "ax.plot(k0_list, T18, 'x', label=\"Berreman4x4, 18 Divisions\")\n",
+    "\n",
+    "ax.set_title(u\"90° Twisted Nematic Liquid Crystal, \" +\n",
+    "             u\"d = {:.2f} µm\".format(d*1e-3))\n",
+    "ax.set_xlabel(r\"Wavenumber $k_0$ (m$^{-1}$)\")\n",
+    "ax.set_ylabel(r\"Power transmission $T$\")\n",
+    "ax.legend()\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "425fbe96-36ef-4ee4-8610-d08d6f07bb5f",
+   "metadata": {},
+   "source": [
+    "## Plot Structure"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "75aadc65-7106-4dde-9145-b52761d9bf9f",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<AxesSubplot:xlabel='z (nm)', ylabel=\"n'\">"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x216 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x216 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "TN.setDivision(7)\n",
+    "bmplot.drawStructure(s)\n",
+    "TN.setDivision(18)\n",
+    "bmplot.drawStructure(s)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3ff478b5-449a-4521-ad3f-2c7109311c83",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "jupytext": {
+   "cell_metadata_filter": "-all",
+   "encoding": "# encoding: utf-8",
+   "executable": "/usr/bin/python",
+   "formats": "ipynb,auto:hydrogen",
+   "main_language": "python",
+   "notebook_metadata_filter": "-all"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.7"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/examples/Liquid crystals/twisted-nematic.py b/examples/Liquid crystals/twisted-nematic.py
index 01863e41..3f487879 100644
--- a/examples/Liquid crystals/twisted-nematic.py
+++ b/examples/Liquid crystals/twisted-nematic.py
@@ -1,94 +1,106 @@
 #!/usr/bin/python
 # encoding: utf-8
-
-# Berreman4x4 example
-# Author: O. Castany
-
-# Example of a 90° twisted nematic liquid crystal
-
-import numpy
-import Berreman4x4
-from numpy import sin, sqrt
-from Berreman4x4 import e_y
+# %% [markdown]
+# # Example of a 90° twisted nematic liquid crystal
+#
+# Author: O. Castany, M. Müller
+# %% [markdown]
+# Consider the following situation:
+# - twisted liquid crystal with 90° twist between z=0 and z=d
+# - liquid crystal aligned along x at z=0.
+# - input and output polarizers aligned parallel to x
+#
+# Gooch-Tarry law gives: T_pp = sin²(pi/2·√(1+u²)) / (1+u²),
+# with u = 2dΔn/λ.
+# The transmission minima are given by u = ((2m)²-1)^{-1/2} = √(3),√(15),√(35),…
+#
+# We consider a birefringence Δn = 0.10 and a thickness d = 4.33 µm. The first
+# minimum should be at λ = 500 nm, or k0 = 1.257e7 m⁻¹.
+#
+# Note: Gooch-Tarry law does not take into account interferences between the two
+# glass substrates. A glass with n = 1.55 minimizes the interferences.
+
+# %%
+import numpy as np
+from numpy.lib.scimath import sqrt
+import berreman4x4 as bm
+import berreman4x4.plotter as bmplot
 from scipy.constants import c, pi
-import matplotlib.pyplot as pyplot
-
-"""
-Consider the following situation:
-- twisted liquid crystal with 90° twist between z=0 and z=d
-- liquid crystal aligned along x at z=0.
-- input and output polarizers aligned parallel to x
-
-Gooch-Tarry law gives: T_pp = sin²(pi/2·√(1+u²)) / (1+u²),
-with u = 2dΔn/λ.
-The transmission minima are given by u = ((2m)²-1)^{-1/2} = √(3),√(15),√(35),…
-
-We consider a birefringence Δn = 0.10 and a thickness d = 4.33 µm. The first
-minimum should be at λ = 500 nm, or k0 = 1.257e7 m⁻¹.
+import matplotlib.pyplot as plt
 
-Note: Gooch-Tarry law does not take into account interferences between the two
-glass substrates. A glass with n = 1.55 minimizes the interferences.
-"""
+# %% [markdown]
+# ## Set parameters
 
+# %%
 # Materials
-glass = Berreman4x4.IsotropicMaterial(Berreman4x4.DispersionLess(1.55))
-front = back = Berreman4x4.IsotropicHalfSpace(glass)
+glass = bm.IsotropicMaterial(bm.DispersionLess(1.55))
+front = back = glass
 
 # Liquid crystal oriented along the x direction
 (no, ne) = (1.5, 1.6)
 Dn = ne-no
-LC = Berreman4x4.UniaxialMaterial(Berreman4x4.DispersionLess(no),
-                                  Berreman4x4.DispersionLess(ne))
-R = Berreman4x4.rotation_v_theta(e_y, pi/2)
+LC = bm.UniaxialMaterial(bm.DispersionLess(no),
+                         bm.DispersionLess(ne))
+R = bm.rotation_v_theta(bm.e_y, 90)
 LC.setRotation(R)
-d = 4.33e-6
-TN = Berreman4x4.TwistedMaterial(LC, d)
-
-# Inhomogeneous layer
-IL = Berreman4x4.InhomogeneousLayer(TN)
+d = 4330
+TN = bm.TwistedLayer(LC, d, 7, 90)
 
 # Structure
-s = Berreman4x4.Structure(front, [IL], back)
-
-# Normal incidence:
-Kx = 0.0
+s = bm.Structure(front, [TN], back)
 
 # Calculation parameters
 (lbda_min, lbda_max) = (200e-9, 1)  #  (m)
-k0_list = numpy.linspace(2*pi/lbda_max, 2*pi/lbda_min)
+k0_list = np.linspace(2*pi/lbda_max, 2*pi/lbda_min)
+lbda_list = (2*pi)/k0_list*1e9
 
-# Plot setup
-fig = pyplot.figure()
-ax = fig.add_subplot(1, 1, 1)
+# %% [markdown]
+# ## Calculate theoretical curve with Gooch-Tarry law
 
-# Plot Gooch-Tarry law, for comparison
-u = 2*d*Dn*k0_list/(2*pi)
-T = sin(pi/2*sqrt(1+u**2))**2 / (1+u**2)
-ax.plot(k0_list, T, label="Gooch-Tarry law")
+# %%
+u = 2*d*Dn/lbda_list
+GT = np.sin(pi/2*sqrt(1+u**2))**2 / (1+u**2)
+
+# %% [markdown]
+# ## Simulate with Berreman4x4
 
-# Calulation with Berreman4x4 and plotting
+# %%
+TN.setDivision(7)
+data = s.evaluate(lbda_list, 0)
+T7 = np.real(data.T[:, 0, 0])
+
+TN.setDivision(18)
+data2 = s.evaluate(lbda_list, 0)
+T18 = np.real(data2.T[:, 0, 0])
 
+# %% [markdown]
+# ## Plot 
 
-def plotTransmission(label):
-    """Plots power transmission vs. wavenumber."""
-    data = Berreman4x4.DataList([s.evaluate(Kx, k0) for k0 in k0_list])
-    T = data.get('T_pp')
-    ax.plot(k0_list, T, 'x', label=label)
+# %%
+fig = plt.figure()
+ax = fig.add_subplot(1, 1, 1)
 
+# Plot Gooch-Tarry law, for comparison
+ax.plot(k0_list, GT, label="Gooch-Tarry law")
 
 # Two plots are made, with 7 or 18 divisions in the TwistedMaterial
-TN.setDivision(7)
-plotTransmission("Berreman4x4, 7 div")
-TN.setDivision(18)
-plotTransmission("Berreman4x4, 18 div")
+ax.plot(k0_list, T7, 'x', label="Berreman4x4, 7 Divisions")
+ax.plot(k0_list, T18, 'x', label="Berreman4x4, 18 Divisions")
 
-# Titles
 ax.set_title(u"90° Twisted Nematic Liquid Crystal, " +
-             u"d = {:.2f} µm".format(d*1e6))
+             u"d = {:.2f} µm".format(d*1e-3))
 ax.set_xlabel(r"Wavenumber $k_0$ (m$^{-1}$)")
 ax.set_ylabel(r"Power transmission $T$")
 ax.legend()
+plt.show()
+
+# %% [markdown]
+# ## Plot Structure
+
+# %%
+TN.setDivision(7)
+bmplot.drawStructure(s)
+TN.setDivision(18)
+bmplot.drawStructure(s)
 
-ax = s.drawStructure()
-ax.set_title("Index profile along e_x")
-pyplot.show()
+# %%
diff --git a/examples/Liquid crystals/validation-cholesteric.ipynb b/examples/Liquid crystals/validation-cholesteric.ipynb
new file mode 100644
index 00000000..a3dacc3e
--- /dev/null
+++ b/examples/Liquid crystals/validation-cholesteric.ipynb
@@ -0,0 +1,247 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "d5a18d5e-91e5-45b5-afa1-cb993194b278",
+   "metadata": {},
+   "source": [
+    "# Example of a cholesteric liquid crystal\n",
+    "\n",
+    "Author: O. Castany, C. Molinaro, M. Müller"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "65c2b21c",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "from numpy.lib.scimath import sqrt\n",
+    "import berreman4x4 as bm\n",
+    "import berreman4x4.plotter as bmplot\n",
+    "from scipy.constants import c, pi\n",
+    "import matplotlib.pyplot as plt"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "68f65d00",
+   "metadata": {},
+   "source": [
+    "## Set parameters"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "31c30e6e",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Materials\n",
+    "front = back = bm.IsotropicMaterial(bm.DispersionLess(1.6))\n",
+    "\n",
+    "# Liquid crystal oriented along the x direction\n",
+    "(no, ne) = (1.5, 1.7)\n",
+    "Dn = ne-no\n",
+    "n_med = (ne + no)/2\n",
+    "LC = bm.UniaxialMaterial(bm.DispersionLess(no), bm.DispersionLess(ne))  #  ne along z\n",
+    "R = bm.rotation_v_theta(bm.e_y, 90)  #  rotation round y\n",
+    "LC.setRotation(R) #  apply rotation from z to x\n",
+    "# Cholesteric pitch:\n",
+    "p = 650\n",
+    "# One half turn of a right-handed helix:\n",
+    "TN = bm.TwistedLayer(LC, p/2, 25, 180)\n",
+    "\n",
+    "# Inhomogeneous layer, repeated layer, and structure\n",
+    "N = 5  #  number half pitch repetitions\n",
+    "h = N * p/2\n",
+    "L = bm.RepeatedLayers([TN], N)\n",
+    "s = bm.Structure(front, [L], back)\n",
+    "\n",
+    "# Normal incidence:\n",
+    "Kx = 0.0\n",
+    "\n",
+    "# Calculation parameters\n",
+    "lbda_min, lbda_max = 600, 1500  #  (nm)\n",
+    "lbda = np.linspace(lbda_min, lbda_max, 100)\n",
+    "k0 = 2*pi/(lbda*1e-9)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "79dc23b1",
+   "metadata": {
+    "lines_to_next_cell": 0
+   },
+   "source": [
+    "## Analytical calculation for the power reflection coefficient"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "6e07c0cd",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "q = 2*pi/p/1e-9\n",
+    "alpha = q/k0\n",
+    "epsilon = (no**2+ne**2)/2\n",
+    "delta = (no**2-ne**2)/2\n",
+    "n2 = sqrt((alpha**2 + epsilon - sqrt(4*epsilon*alpha**2+delta**2)))\n",
+    "w = 1j*(ne**2-n2**2-alpha**2)/(2*alpha*n2)  # not k0/c\n",
+    "A = -2j*k0*n2*h*1e-9\n",
+    "\n",
+    "R_th = np.abs((w**2+1)*(1-np.exp(-2j*k0*n2*h*1e-9))\n",
+    "           / (2*w*(1+np.exp(-2j*k0*n2*h*1e-9))\n",
+    "              - 1j*(w**2-1)*(1-np.exp(-2j*k0*n2*h*1e-9))))**2"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "836228a7",
+   "metadata": {
+    "lines_to_next_cell": 0
+   },
+   "source": [
+    "## Calculation with Berreman4x4"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "d07f0947",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "data = s.evaluate(lbda, 0)\n",
+    "\n",
+    "# Jones matrices for the circular wave basis\n",
+    "# Right-circular wave is reflected in the stop-band\n",
+    "# R_LR, T_LR close to zero\n",
+    "R_RR = data.Rc[:, 1, 1]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "4f4aa7f7",
+   "metadata": {
+    "lines_to_next_cell": 0
+   },
+   "source": [
+    "## Plotting"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "b2afb496",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "fig = plt.figure()\n",
+    "ax = fig.add_subplot(1, 1, 1)\n",
+    "\n",
+    "ax.plot(lbda, R_RR, label='R_RR')\n",
+    "ax.plot(lbda, R_th, 'r', label='R_th')\n",
+    "\n",
+    "ax.legend(loc='center right', bbox_to_anchor=(1.00, 0.50))\n",
+    "\n",
+    "ax.set_title(\"Right-handed Cholesteric Liquid Crystal, \" +\n",
+    "             \"{:.1f} helix pitches\".format(N/2.))\n",
+    "ax.set_xlabel(r\"Wavelength $\\lambda_0$ (m)\")\n",
+    "ax.set_ylabel(r\"Power reflexion $R$\")\n",
+    "fmt = ax.xaxis.get_major_formatter()\n",
+    "fmt.set_powerlimits((-3, 3))\n",
+    "\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "58f50b36-ac62-45d0-95c4-fe53fa39aa8b",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<AxesSubplot:xlabel='z (nm)', ylabel=\"n'\">"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x216 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "bmplot.drawStructure(s)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "784f3dff-5a1e-48e9-91d2-3fbd837f2751",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "jupytext": {
+   "cell_metadata_filter": "-all",
+   "encoding": "# encoding: utf-8",
+   "executable": "/usr/bin/python",
+   "formats": "ipynb,auto:hydrogen",
+   "main_language": "python",
+   "notebook_metadata_filter": "-all"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.7"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/examples/Liquid crystals/validation-cholesteric.py b/examples/Liquid crystals/validation-cholesteric.py
index 2fecf082..06ea6c16 100644
--- a/examples/Liquid crystals/validation-cholesteric.py
+++ b/examples/Liquid crystals/validation-cholesteric.py
@@ -1,79 +1,80 @@
 #!/usr/bin/python
 # encoding: utf-8
-
-# Berreman4x4 example
-# Author: O. Castany, C. Molinaro
-
-# Example of a cholesteric liquid crystal
-
-import numpy
-import Berreman4x4
-from numpy import sin, sqrt, abs, exp
-from Berreman4x4 import e_y
+# %% [markdown]
+# # Example of a cholesteric liquid crystal
+#
+# Author: O. Castany, C. Molinaro, M. Müller
+
+# %%
+import numpy as np
+from numpy.lib.scimath import sqrt
+import berreman4x4 as bm
+import berreman4x4.plotter as bmplot
 from scipy.constants import c, pi
-import matplotlib.pyplot as pyplot
+import matplotlib.pyplot as plt
 
-############################################################################
-# Structure
+# %% [markdown]
+# ## Set parameters
 
+# %%
 # Materials
-glass = Berreman4x4.IsotropicNonDispersiveMaterial(1.6)
-front = back = Berreman4x4.IsotropicHalfSpace(glass)
+front = back = bm.IsotropicMaterial(bm.DispersionLess(1.6))
 
 # Liquid crystal oriented along the x direction
 (no, ne) = (1.5, 1.7)
 Dn = ne-no
 n_med = (ne + no)/2
-LC = Berreman4x4.UniaxialNonDispersiveMaterial(no, ne)  #  ne along z
-R = Berreman4x4.rotation_v_theta(e_y, pi/2)  #  rotation round y
-LC = LC.rotated(R)  #  apply rotation from z to x
+LC = bm.UniaxialMaterial(bm.DispersionLess(no), bm.DispersionLess(ne))  #  ne along z
+R = bm.rotation_v_theta(bm.e_y, 90)  #  rotation round y
+LC.setRotation(R) #  apply rotation from z to x
 # Cholesteric pitch:
-p = 0.65e-6
+p = 650
 # One half turn of a right-handed helix:
-TN = Berreman4x4.TwistedMaterial(LC, p/2, angle=+pi, div=25)
+TN = bm.TwistedLayer(LC, p/2, 25, 180)
 
 # Inhomogeneous layer, repeated layer, and structure
-IL = Berreman4x4.InhomogeneousLayer(TN)
 N = 5  #  number half pitch repetitions
 h = N * p/2
-L = Berreman4x4.RepeatedLayers([IL], N)
-s = Berreman4x4.Structure(front, [L], back)
+L = bm.RepeatedLayers([TN], N)
+s = bm.Structure(front, [L], back)
 
 # Normal incidence:
 Kx = 0.0
 
 # Calculation parameters
-lbda_min, lbda_max = 0.6e-6, 1.5e-6  #  (m)
-lbda = numpy.linspace(lbda_min, lbda_max, 100)
-k0 = 2*pi/lbda
-
-############################################################################
-# Analytical calculation for the power reflection coefficient
-q = 2*pi/p
+lbda_min, lbda_max = 600, 1500  #  (nm)
+lbda = np.linspace(lbda_min, lbda_max, 100)
+k0 = 2*pi/(lbda*1e-9)
+
+# %% [markdown]
+# ## Analytical calculation for the power reflection coefficient
+# %%
+q = 2*pi/p/1e-9
 alpha = q/k0
 epsilon = (no**2+ne**2)/2
 delta = (no**2-ne**2)/2
-n2 = sqrt((alpha**2 + epsilon
-           - sqrt(4*epsilon*alpha**2+delta**2)).astype(complex))
+n2 = sqrt((alpha**2 + epsilon - sqrt(4*epsilon*alpha**2+delta**2)))
 w = 1j*(ne**2-n2**2-alpha**2)/(2*alpha*n2)  # not k0/c
-A = -2j*k0*n2*h
+A = -2j*k0*n2*h*1e-9
 
-R_th = abs((w**2+1)*(1-exp(-2j*k0*n2*h))
-           / (2*w*(1+exp(-2j*k0*n2*h))
-              - 1j*(w**2-1)*(1-exp(-2j*k0*n2*h))))**2
+R_th = np.abs((w**2+1)*(1-np.exp(-2j*k0*n2*h*1e-9))
+           / (2*w*(1+np.exp(-2j*k0*n2*h*1e-9))
+              - 1j*(w**2-1)*(1-np.exp(-2j*k0*n2*h*1e-9))))**2
 
-############################################################################
-# Calculation with Berreman4x4
-data = Berreman4x4.DataList([s.evaluate(Kx, _k0) for _k0 in k0])
+# %% [markdown]
+# ## Calculation with Berreman4x4
+# %%
+data = s.evaluate(lbda, 0)
 
 # Jones matrices for the circular wave basis
 # Right-circular wave is reflected in the stop-band
 # R_LR, T_LR close to zero
-R_RR = data.get('R_RR')
+R_RR = data.Rc[:, 1, 1]
 
-############################################################################
-# Plotting
-fig = pyplot.figure()
+# %% [markdown]
+# ## Plotting
+# %%
+fig = plt.figure()
 ax = fig.add_subplot(1, 1, 1)
 
 ax.plot(lbda, R_RR, label='R_RR')
@@ -88,5 +89,9 @@
 fmt = ax.xaxis.get_major_formatter()
 fmt.set_powerlimits((-3, 3))
 
-s.drawStructure()
-pyplot.show()
+plt.show()
+
+# %%
+bmplot.drawStructure(s)
+
+# %%
diff --git a/src/berreman4x4/__init__.py b/src/berreman4x4/__init__.py
index 7f4ad8ff..85fcce47 100644
--- a/src/berreman4x4/__init__.py
+++ b/src/berreman4x4/__init__.py
@@ -3,7 +3,7 @@
 from .dispersions import *
 from .experiment import Experiment
 from .materials import *
-from .math import lambda2E, rotation_Euler
+from .math import *
 from .result import Result
 from .solver2x2 import Solver2x2
 from .solver4x4 import *
diff --git a/src/berreman4x4/materials.py b/src/berreman4x4/materials.py
index 6f97f221..1568c05d 100644
--- a/src/berreman4x4/materials.py
+++ b/src/berreman4x4/materials.py
@@ -3,6 +3,7 @@
 import numpy as np
 import numpy.typing as npt
 from numpy.lib.scimath import sqrt
+from typing import List, Tuple
 
 from .dispersions import DispersionLaw
 from .math import rotation_v_theta
@@ -46,11 +47,7 @@ def getTensor(self, lbda: npt.ArrayLike) -> npt.NDArray:
         self.last_lbda_e = lbda
 
         # Check for shape of lbda
-        if type(lbda) == tuple:
-            shape = np.shape(lbda[0])
-        else:
-            shape = np.shape(lbda)
-
+        shape = np.shape(lbda)
         if shape == ():
             i = 1
         else:
@@ -132,100 +129,71 @@ def setDispersion(self, law_x: DispersionLaw, law_y: DispersionLaw, law_z: Dispe
         self.law_z = law_z
 
 
-#########################################################
-# Inhomogeneous materials...
+class MixtureMaterial(Material):
+    """Abstract Class for mixed materials"""
 
+    def __init__(self, host_material: Material, guest_material: Material, fraction: float) -> None:
+        """Creates a material mixture from two materials
 
-class InhomogeneousMaterial:
-    """Base class for inhomogeneous materials (abstract class).
+        'host_material': Host Material
+        'guest_material': Material incorporated in the host
+        'fraction' : Fraction of the guest material (Range 0 - 1) 
+        """
+        self.setConstituents(host_material, guest_material)
+        self.setFraction(fraction)
 
-    Method that should be implemented in derived classes:
-    * getTensor(z, lbda) : permittivity tensor at position z
-    * getSlices() : returns z_i, position of the slices
-    """
+    def setConstituents(self, host_material: Material, guest_material: Material) -> None:
+        """ Sets Materials in the mixture
+        'host_material': Host Material
+        'guest_material': Material incorporated in the host
+        """
+        self.host_material = host_material
+        self.guest_material = guest_material
 
-    def __init__(self):
-        """Creates a new inhomogeneous material -- abstract class"""
-        raise NotImplementedError("Should be implemented in derived classes")
+    def setFraction(self, fraction: float) -> None:
+        """ Sets fraction and checks if fraction is in range from 0 to 1.
+        'fraction' : Fraction of the guest material (Range 0 - 1)
+        """
+        if not 0 <= fraction <= 1:
+            raise ValueError('Fractions not in range from 0 to 1')
 
-    def getTensor(self, z, lbda):
-        """Returns permittivity tensor for position 'z' and wavelength 'lbda'.
+        self.fraction = fraction
 
-        'z' : position where the tensor is evaluated
-        'lbda' : wavelength
-        """
-        raise NotImplementedError("Should be implemented in derived classes")
+    @abstractmethod
+    def getTensor(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        pass
 
-    def getSlices(self):
-        """Returns z slicing (including z0 and zmax).
 
-        Origin of 'z' is not important, only relative positions matter.
-        """
-        raise NotImplementedError("Should be implemented in derived classes")
+class VCAMaterial(MixtureMaterial):
+    """Mixture Material approximated with a simple virtual crystal like average."""
 
+    def getTensor(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        if np.array_equal(self.last_lbda_e, lbda):
+            if isinstance(self.last_e, np.ndarray):
+                return self.last_e
+
+        epsilon = self.host_material.getTensor(lbda) * (1 - self.fraction) \
+            + self.guest_material.getTensor(lbda) * self.fraction
+
+        self.last_e = epsilon
+        return epsilon
 
-class TwistedMaterial(InhomogeneousMaterial):
-    """Twisted material.
 
-    Used to describe twisted nematic or cholesteric liquid crystal for example.
+class MaxwellGarnetEMA(MixtureMaterial):
+    """Mixture Material approximated with the Maxwell Garnet formula.
+       It is valid for spherical inclusions with small volume fraction.
     """
 
-    material = None  # Material for the twisted layer
-    d = None  # Thickness of the layer
-    angle = None  # Angle of the twist
-    div = None  # Number of slices
-
-    def __init__(self, material, d, angle=90, div=25):
-        """Creates a layer with a twisted material.
-
-        'material' : material for the twisted layer
-        'd' : thickness of the layer in nm or tuple (thickness, unit)
-        'angle' : rotation angle for distance 'd'
-        'div' : number of slices
-
-        Note: Let us call h = d / div. It is useful to assess whether k0·h is
-        greater or smaller than 1. If it is greater than 1, evaluation of the
-        exponential for the propagator will not be possible with linear
-        expansion, and may require a Taylor expansion with a very high order
-        for convergence. In this case, use the Padé approximation or the
-        exact result with eigenvector decomposition. On the other hand, if
-        k0·h is small, a linear or Taylor approximation may suffice.
-        """
-        self.setThickness(d)
-        self.setMaterial(material)
-        self.setAngle(np.deg2rad(angle))
-        self.setDivision(div)
-
-    def setDivision(self, div):
-        """Defines the number of slices in this TwistedMaterial."""
-        self.div = div
-
-    def setAngle(self, angle):
-        """Defines the total twist angle of this TwistedMaterial."""
-        self.angle = angle
-
-    def setMaterial(self, material):
-        """Defines the material making this TwistedMaterial."""
-        self.material = material
-
-    def setThickness(self, d):
-        """Defines the thickness of this TwistedMaterial."""
-        self.d = d
-
-    def getTensor(self, z, lbda):
-        """Returns permittivity tensor matrix for position 'z'."""
-        epsilon = self.material.getTensor(lbda)
-        R = rotation_v_theta([0, 0, 1], self.angle * z / self.d)
-        return R @ epsilon @ R.T
-
-    def getSlices(self):
-        """Returns z slicing.
-
-        Returns : array of 'z' positions [z0, z1,... , zmax],
-                  with z0 = 0 and zmax = z{d+1}
-
-        Notes:
-        * The number of divisions is 'div' (see constructor)
-        * Position is relative to this material, not to the whole structure.
-        """
-        return np.linspace(0, self.d, self.div+1)
+    def getTensor(self, lbda: npt.ArrayLike) -> npt.NDArray:
+        if np.array_equal(self.last_lbda_e, lbda):
+            if isinstance(self.last_e, np.ndarray):
+                return self.last_e
+
+        e_h = self.host_material.getTensor(lbda)
+        e_g = self.guest_material.getTensor(lbda)
+
+        epsilon = e_h * (2 * self.fraction * (e_g - e_h) + e_g + 2 * e_h) \
+            / (2 * e_h + e_g - self.fraction * (e_g - e_h))
+
+        self.last_e = epsilon
+        return epsilon
diff --git a/src/berreman4x4/math.py b/src/berreman4x4/math.py
index d391e7e9..dccc63da 100644
--- a/src/berreman4x4/math.py
+++ b/src/berreman4x4/math.py
@@ -10,12 +10,9 @@
 e_y = np.array([0, 1, 0]).reshape((3,))
 e_z = np.array([0, 0, 1]).reshape((3,))
 
-CONV_M_EV = sc.speed_of_light * sc.value('Planck constant in eV/Hz')
-
-
-def lambda2E(value: npt.ArrayLike) -> npt.ArrayLike:
+def lambda2E(lbda: npt.ArrayLike) -> npt.ArrayLike:
     """Returns the Energy in eV of the given wavelength in 'nm'"""
-    return CONV_M_EV / (value * 1e-9)
+    return sc.speed_of_light * sc.value('Planck constant in eV/Hz') / (lbda * 1e-9)
 
 
 #########################################################
diff --git a/src/berreman4x4/result.py b/src/berreman4x4/result.py
index bce4f88c..021c4e9c 100644
--- a/src/berreman4x4/result.py
+++ b/src/berreman4x4/result.py
@@ -41,6 +41,14 @@ def jones_matrix_r(self):
     def jones_matrix_t(self):
         return self.__result.jones_matrix_t
 
+    @property
+    def jones_matrix_rc(self):
+        return self.__result.jones_matrix_rc
+
+    @property
+    def jones_matrix_tc(self):
+        return self.__result.jones_matrix_tc
+
     @property
     def R(self):
         return self.__result.R
@@ -49,6 +57,14 @@ def R(self):
     def T(self):
         return self.__result.T
 
+    @property
+    def Rc(self):
+        return self.__result.Rc
+
+    @property
+    def Tc(self):
+        return self.__result.Tc
+
     def __init__(self, solver: "Solver") -> None:
         """
 
diff --git a/src/berreman4x4/solver.py b/src/berreman4x4/solver.py
index af47972f..76f3e19b 100644
--- a/src/berreman4x4/solver.py
+++ b/src/berreman4x4/solver.py
@@ -21,29 +21,64 @@ class Solver(ABC):
     permProfile = None
 
     @property
-    @abstractmethod
+    def rho(self):
+        raise ValueError('Value not calculated by solver')
+
+    @property
     def psi(self):
-        pass
+        raise ValueError('Value not calculated by solver')
 
     @property
-    @abstractmethod
     def delta(self):
-        pass
+        raise ValueError('Value not calculated by solver')
+
+    @property
+    def rhoMat(self):
+        raise ValueError('Value not calculated by solver')
+
+    @property
+    def psiMat(self):
+        raise ValueError('Value not calculated by solver')
+
+    @property
+    def deltaMat(self):
+        raise ValueError('Value not calculated by solver')
 
     @property
-    @abstractmethod
     def mueller_matrix(self):
-        pass
+        raise ValueError('Value not calculated by solver')
 
     @property
-    @abstractmethod
     def jones_matrix_t(self):
-        pass
+        raise ValueError('Value not calculated by solver')
 
     @property
-    @abstractmethod
     def jones_matrix_r(self):
-        pass
+        raise ValueError('Value not calculated by solver')
+
+    @property
+    def jones_matrix_tc(self):
+        raise ValueError('Value not calculated by solver')
+
+    @property
+    def jones_matrix_rc(self):
+        raise ValueError('Value not calculated by solver')
+
+    @property
+    def R(self):
+        raise ValueError('Value not calculated by solver')
+
+    @property
+    def T(self):
+        raise ValueError('Value not calculated by solver')
+
+    @property
+    def Rc(self):
+        raise ValueError('Value not calculated by solver')
+
+    @property
+    def Tc(self):
+        raise ValueError('Value not calculated by solver')
 
     @abstractmethod
     def calculate(self) -> Result:
diff --git a/src/berreman4x4/solver2x2.py b/src/berreman4x4/solver2x2.py
index e80ba29c..ec7900b9 100644
--- a/src/berreman4x4/solver2x2.py
+++ b/src/berreman4x4/solver2x2.py
@@ -36,18 +36,6 @@ def delta(self):
             return None
         return 180 - np.angle(-self._rtotp / self._rtots, deg=True)
 
-    @property
-    def mueller_matrix(self):
-        return None
-
-    @property
-    def jones_matrix_t(self):
-        return None
-
-    @property
-    def jones_matrix_r(self):
-        return None
-
     @property
     def R(self):
         return np.abs(self._rtotp + self._rtots)
diff --git a/src/berreman4x4/solver4x4.py b/src/berreman4x4/solver4x4.py
index a92c439c..774b6a25 100644
--- a/src/berreman4x4/solver4x4.py
+++ b/src/berreman4x4/solver4x4.py
@@ -302,6 +302,17 @@ def jones_matrix_t(self) -> npt.NDArray:
     def jones_matrix_r(self) -> npt.NDArray:
         return self._jones_matrix_r
 
+    @property
+    def jones_matrix_tc(self) -> npt.NDArray:
+        C = 1 / sqrt(2) * np.array([[1, 1], [1j, -1j]])
+        return np.einsum('ij,...jk,kl->...il', np.linalg.inv(C), self._jones_matrix_t, C)
+
+    @property
+    def jones_matrix_rc(self) -> npt.NDArray:
+        C = 1 / sqrt(2) * np.array([[1, 1], [1j, -1j]])
+        D = 1 / sqrt(2) * np.array([[1, 1], [-1j, 1j]])
+        return np.einsum('ij,...jk,kl->...il', np.linalg.inv(D), self._jones_matrix_r, C)
+
     @property
     def R(self) -> npt.NDArray:
         return np.abs(self._jones_matrix_r) ** 2
@@ -310,6 +321,14 @@ def R(self) -> npt.NDArray:
     def T(self) -> npt.NDArray:
         return np.abs(self._jones_matrix_t) ** 2 * self.powerCorrection[:, None, None]
 
+    @property
+    def Rc(self) -> npt.NDArray:
+        return np.abs(self.jones_matrix_rc) ** 2
+
+    @property
+    def Tc(self) -> npt.NDArray:
+        return np.abs(self.jones_matrix_tc) ** 2 * self.powerCorrection[:, None, None]
+
     def __init__(self, experiment: "Experiment", propagator: Propagator = PropagatorExpmScipy()) -> None:
         super().__init__(experiment)
         self.propagator = propagator
diff --git a/src/berreman4x4/structure.py b/src/berreman4x4/structure.py
index 25c682b3..08016ab5 100644
--- a/src/berreman4x4/structure.py
+++ b/src/berreman4x4/structure.py
@@ -1,50 +1,29 @@
 # Encoding: utf-8
-from .materials import Material
+from abc import ABC, abstractmethod
+from .materials import Material, MixtureMaterial
 import numpy as np
 import numpy.typing as npt
-from typing import List
+from typing import List, Tuple, Callable
 
 from .experiment import Experiment
+from .math import rotation_v_theta
 from .solver import Solver
 from .solver4x4 import Solver4x4
 from .result import Result
 
 
-#########################################################
-# Layer Class...
-
-class Layer:
-    """Homogeneous layer finite of dielectric material."""
-
-    def __init__(self, material: Material, d: float) -> None:
-        """New layer of material 'material', with thickness 'd'
-
-        'material' : Material object
-        'd'        : Thickness of layer in nm or tuple (thickness, unit)
-        """
-        self.setMaterial(material)
-        self.setThickness(d)
-
-    def setMaterial(self, material: Material) -> None:
-        """Defines the material for this layer. """
-        self.material = material
+class AbstractLayer(ABC):
 
     def setThickness(self, d: float) -> None:
         """Defines the thickness of this homogeneous layer in nm."""
         self.d = d
 
-    def getPermittivityProfile(self, lbda: npt.ArrayLike) -> List:
-        """Returns permittivity tensor profile.
-
-        Returns a list containing one tuple: [(d, epsilon)]
-        """
-        return [(self.d, self.material.getTensor(lbda))]
+    @abstractmethod
+    def getPermittivityProfile(self, lbda: npt.ArrayLike) -> List[Tuple[float, npt.NDArray]]:
+        pass
 
 
-#########################################################
-# Repeated layers...
-
-class RepeatedLayers(Layer):
+class RepeatedLayers(AbstractLayer):
     """Repetition of a structure."""
 
     n = None        # Number of repetitions
@@ -52,7 +31,7 @@ class RepeatedLayers(Layer):
     after = None    # additional layers after the last period
     layers = None   # layers to repeat
 
-    def __init__(self, layers: List[Layer], n: int = 2, before: int = 0, after: int = 0) -> None:
+    def __init__(self, layers: List[AbstractLayer], n: int, before: int = 0, after: int = 0) -> None:
         """Repeated structure of layers
 
         'layers' : list of the repeated layers
@@ -76,19 +55,21 @@ def setRepetition(self, n: int, before: int = 0, after: int = 0) -> None:
         self.before = before
         self.after = after
 
-    def setLayers(self, layers: List[Layer]) -> None:
+    def setLayers(self, layers: List[AbstractLayer]) -> None:
         """Set list of layers.
 
         'layers' : list of layers, starting from z=0
         """
         self.layers = layers
 
-    def getPermittivityProfile(self, lbda: npt.ArrayLike) -> List:
+    def getPermittivityProfile(self, lbda: npt.ArrayLike) -> List[Tuple[float, npt.NDArray]]:
         """Returns permittivity tensor profile.
 
         Returns list of tuples [(d1, epsilon1), (d2, epsilon2), ... ]
         """
-        layers = [L.getPermittivityProfile(lbda)[0] for L in self.layers]
+        layers = []
+        for L in self.layers:
+            layers += L.getPermittivityProfile(lbda)
 
         if self.before > 0:
             before = layers[-self.before:]
@@ -97,30 +78,124 @@ def getPermittivityProfile(self, lbda: npt.ArrayLike) -> List:
         return before + self.n * layers + layers[:self.after]
 
 
+class Layer(AbstractLayer):
+    """Homogeneous layer finite of dielectric material."""
+
+    def __init__(self, material: Material, d: float) -> None:
+        """New layer of material 'material', with thickness 'd'
+
+        'material' : Material object
+        'd'        : Thickness of layer in nm
+        """
+        self.setMaterial(material)
+        self.setThickness(d)
+
+    def setMaterial(self, material: Material) -> None:
+        """Defines the material for this layer. """
+        self.material = material
+
+    def getPermittivityProfile(self, lbda: npt.ArrayLike) -> List[Tuple[float, npt.NDArray]]:
+        """Returns permittivity tensor profile.
+
+        Returns a list containing one tuple: [(d, epsilon)]
+        """
+        return [(self.d, self.material.getTensor(lbda))]
+
+
 #########################################################
-# Inhomogeneous layers...
+# Inhomogeneous Layers
 
 class InhomogeneousLayer(Layer):
-    """Inhomogeneous layer.
+    """Abstract base class for 
+    inhomogeneous layers with varying properties in z-direction."""
 
-    Must be fabricated with an InhomogeneousMaterial object.
-    """
+    def setDivision(self, div: int) -> None:
+        """Defines the number of slices to simulate this TwistedLayer"""
+        self.div = div
+
+    def getSlices(self) -> npt.NDArray:
+        """Returns z slicing.
+
+        Returns : array of 'z' positions [z0, z1,... , zmax], 
+                  with z0 = 0 and zmax = z{d+1}
 
-    def getPermittivityProfile(self, lbda):
+        Notes:
+        * The number of divisions is 'div' (see constructor)
+        * Position is relative to this material, not to the whole structure.
+        """
+        return np.linspace(0, self.d, self.div+1)
+
+    @abstractmethod
+    def getTensor(self, z: float, lbda: npt.ArrayLike) -> npt.NDArray:
+        """Returns permittivity tensor matrix for position 'z'."""
+        pass
+
+    def getPermittivityProfile(self, lbda: npt.ArrayLike) -> List:
         """Returns permittivity tensor profile.
 
         Tensor is evaluated in the middle of each slice.
         Returns list [(d1, epsilon1), (d2, epsilon2), ... ]
         """
-        z = self.material.getSlices()
+        z = self.getSlices()
         h = np.diff(z)
         zmid = (z[:-1] + z[1:]) / 2.
-        tensor = [self.material.getTensor(z, lbda) for z in zmid]
+        tensor = [self.getTensor(z, lbda) for z in zmid]
         return list(zip(h, tensor))
 
 
+class TwistedLayer(InhomogeneousLayer):
+    """Twisted layer."""
+
+    def __init__(self, material: Material, d: float, div: int, angle: float) -> None:
+        """Creates a layer with a twisted material.
+
+        'material' : Material object
+        'd'        : Thickness of layer in nm
+        'angle' : rotation angle for distance 'd'
+        'div' : number of slices
+        """
+        self.setMaterial(material)
+        self.setThickness(d)
+        self.setDivision(div)
+        self.setAngle(angle)
+
+    def setAngle(self, angle: float) -> None:
+        """Defines the total twist angle of this TwistedLayer."""
+        self.angle = angle
+
+    def getTensor(self, z: float, lbda: npt.ArrayLike) -> npt.NDArray:
+        """Returns permittivity tensor matrix for position 'z'."""
+        epsilon = self.material.getTensor(lbda)
+        R = rotation_v_theta([0, 0, 1], self.angle * z / self.d)
+        return R @ epsilon @ R.T
+
+
+class VaryingMixtureLayer(InhomogeneousLayer):
+    """Mixture layer, with varying fraction."""
+
+    def __init__(self, material: MixtureMaterial, d: float, div: int, fraction_modulation: Callable[[float], float]) -> None:
+        """Creates a layer with a twisted material.
+
+        'material' : MixtureMaterial object
+        'd'        : Thickness of layer in nm
+        'div'      : number of slices
+        'fraction_modulation' : function to modify the fraction amount, 
+                                takes float from 0 to 1 (top to bottom of layer), returns fraction at that level
+        """
+        self.setMaterial(material)
+        self.setThickness(d)
+        self.setDivision(div)
+        self.fraction_modulation = fraction_modulation
+
+    def getTensor(self, z: float, lbda: npt.ArrayLike) -> npt.NDArray:
+        """Returns permittivity tensor matrix for position 'z'."""
+        self.material.setFraction(self.fraction_modulation(z / self.d))
+        epsilon = self.material.getTensor(lbda)
+        return epsilon
+
+
 #########################################################
-# Structure Class...
+# Structure Class
 
 class Structure:
     """Description of the whole structure.


Test patch:
diff --git a/tests/test_liquid_crystals.py b/tests/test_liquid_crystals.py
new file mode 100644
index 00000000..efaad1ad
--- /dev/null
+++ b/tests/test_liquid_crystals.py
@@ -0,0 +1,95 @@
+#!/usr/bin/python
+# encoding: utf-8
+
+import berreman4x4 as bm
+import numpy as np
+from numpy.lib.scimath import sqrt
+from scipy.constants import pi
+from scipy.signal import argrelmax, argrelmin
+
+
+def test_cholesteric_lc():
+    # Materials
+    front = back = bm.IsotropicMaterial(bm.DispersionLess(1.6))
+
+    # Liquid crystal oriented along the x direction
+    (no, ne) = (1.5, 1.7)
+    Dn = ne-no
+    n_med = (ne + no)/2
+    LC = bm.UniaxialMaterial(bm.DispersionLess(no), bm.DispersionLess(ne))  # ne along z
+    R = bm.rotation_v_theta(bm.e_y, 90)  # rotation round y
+    LC.setRotation(R)  # apply rotation from z to x
+    # Cholesteric pitch:
+    p = 650
+    # One half turn of a right-handed helix:
+    TN = bm.TwistedLayer(LC, p/2, 25, 180)
+
+    # Inhomogeneous layer, repeated layer, and structure
+    N = 5  # number half pitch repetitions
+    h = N * p/2
+    L = bm.RepeatedLayers([TN], N)
+    s = bm.Structure(front, [L], back)
+
+    # Normal incidence:
+    Kx = 0.0
+
+    # Calculation parameters
+    lbda_min, lbda_max = 600, 1500  # (nm)
+    lbda = np.linspace(lbda_min, lbda_max, 100)
+    k0 = 2*pi/(lbda*1e-9)
+
+    # Theoretical calculation
+    q = 2*pi/p/1e-9
+    alpha = q/k0
+    epsilon = (no**2+ne**2)/2
+    delta = (no**2-ne**2)/2
+    n2 = sqrt((alpha**2 + epsilon - sqrt(4*epsilon*alpha**2+delta**2)))
+    w = 1j*(ne**2-n2**2-alpha**2)/(2*alpha*n2)  # not k0/c
+    A = -2j*k0*n2*h*1e-9
+
+    R_th = np.abs((w**2+1)*(1-np.exp(-2j*k0*n2*h*1e-9))
+                  / (2*w*(1+np.exp(-2j*k0*n2*h*1e-9))
+                     - 1j*(w**2-1)*(1-np.exp(-2j*k0*n2*h*1e-9))))**2
+
+    # Berreman simulation
+    data = s.evaluate(lbda, 0)
+    R_RR = data.Rc[:, 1, 1]
+
+    # Checks positions of local extrema
+    np.testing.assert_allclose(argrelmax(R_RR)[0], argrelmax(R_th)[0], atol=2)
+    np.testing.assert_allclose(argrelmin(R_RR)[0], argrelmin(R_th)[0])
+
+
+def test_twisted_nematic_lc():
+    # Materials
+    glass = bm.IsotropicMaterial(bm.DispersionLess(1.55))
+    front = back = glass
+
+    # Liquid crystal oriented along the x direction
+    (no, ne) = (1.5, 1.6)
+    Dn = ne-no
+    LC = bm.UniaxialMaterial(bm.DispersionLess(no),
+                             bm.DispersionLess(ne))
+    R = bm.rotation_v_theta(bm.e_y, 90)
+    LC.setRotation(R)
+    d = 4330
+    TN = bm.TwistedLayer(LC, d, 18, 90)
+
+    # Structure
+    s = bm.Structure(front, [TN], back)
+
+    # Calculation parameters
+    (lbda_min, lbda_max) = (200e-9, 1)  # (m)
+    k0_list = np.linspace(2*pi/lbda_max, 2*pi/lbda_min)
+    lbda_list = (2*pi)/k0_list*1e9
+
+    # Gooch-Tarry law
+    u = 2*d*Dn/lbda_list
+    T_gt = np.sin(pi/2*sqrt(1+u**2))**2 / (1+u**2)
+
+    # Berreman simulation
+    data = s.evaluate(lbda_list, 0)
+    T_bm = np.real(data.T[:, 0, 0])
+
+    # Compare results
+    np.testing.assert_allclose(T_bm, T_gt, rtol=1)