{ "cells": [ { "cell_type": "markdown", "id": "86ea8568", "metadata": {}, "source": [ "# Interactive Notebook: Hybrid MT vs. HT" ] }, { "attachments": {}, "cell_type": "markdown", "id": "9d10cc8d", "metadata": {}, "source": [ "Unfortunately, this Notebook does not render interactively in the docs. If you would like to check out the interactive features, we recommend cloning the repository to your local machine, or using the [Binder](https://mybinder.org/v2/gh/Extraweich/homopy/main?labpath=%2Fexamples%2FHybrid.ipynb) container." ] }, { "cell_type": "code", "execution_count": 1, "id": "9a862200", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from homopy.elasticity import *\n", "from homopy.methods import *\n", "from homopy.stiffness_plot import *\n", "from homopy.tensor import *" ] }, { "cell_type": "code", "execution_count": 2, "id": "9b4250ef", "metadata": {}, "outputs": [], "source": [ "# define fiber and matrix properties for HT\n", "\n", "# carbon (assuming isotropic fiber)\n", "E_carbon = 242e9\n", "G_carbon = 105e9\n", "nu_carbon = 0.1\n", "l_carbon = 1.5e-3\n", "r_carbon = 7.2 / 2 * 1e-6\n", "vol_carbon = 0.25\n", "\n", "# glass (is isotropic)\n", "E_glass = 80e9\n", "nu_glass = 0.22\n", "G_glass = 1 / 2 * E_glass / (1 + nu_glass)\n", "l_glass = 0.8e-3\n", "r_glass = 20 / 2 * 1e-6\n", "vol_glass = 0.25\n", "\n", "# PA6\n", "E_pa6 = 1.18e9\n", "nu_pa6 = 0.35\n", "G_pa6 = 1 / 2 * E_pa6 / (1 + nu_pa6)\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "b1c46fd8", "metadata": {}, "outputs": [], "source": [ "# define fiber and matrix properties for MT\n", "\n", "# carbon\n", "carbon_fiber = Isotropy(E_carbon, nu_carbon)\n", "v_frac_carbon = vol_carbon\n", "a_carbon = l_carbon / (2 * r_carbon)\n", "\n", "# glass\n", "glass_fiber = Isotropy(E_glass, nu_glass)\n", "v_frac_glass = vol_glass\n", "a_glass = l_glass / (2 * r_glass)\n", "\n", "# PA6\n", "polyamid6 = Isotropy(E_pa6, nu_pa6)\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "827f27f0", "metadata": {}, "outputs": [], "source": [ "# create HT and MT objects\n", "\n", "ht_carbon = HalpinTsai(\n", " E_carbon,\n", " E_pa6,\n", " G_carbon,\n", " G_pa6,\n", " nu_carbon,\n", " nu_pa6,\n", " l_carbon,\n", " r_carbon,\n", " vol_carbon,\n", ")\n", "\n", "ht_glass = HalpinTsai(\n", " E_glass,\n", " E_pa6,\n", " G_glass,\n", " G_pa6,\n", " nu_glass,\n", " nu_pa6,\n", " l_glass,\n", " r_glass,\n", " vol_glass,\n", ")\n", "\n", "\n", "mt_hybrid = MoriTanaka(\n", " polyamid6,\n", " [carbon_fiber, glass_fiber],\n", " [v_frac_carbon / 2, v_frac_glass / 2],\n", " [a_carbon, a_glass],\n", " 2 * [\"ellipsoid\"],\n", " symmetrize=True,\n", ")\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "24f16700", "metadata": {}, "outputs": [], "source": [ "# give n fibers a random distribtution and go from here\n", "\n", "pi = np.pi\n", "angle_disc = 1 / 40 * pi # angle discretization\n", "distribution = \"gauss\"\n", "\n", "# missuse ElasticPlot()\n", "plotter = ElasticPlot()\n", "\n", "n = 1000\n", "theta = pi / 2\n", "\n", "\n", "def random_fibers(n, distribution=\"random\", sigma=0.1 * pi, mean_angle=0):\n", " fiber_dirs = []\n", " angles = []\n", " for i in range(n):\n", " if distribution == \"random\":\n", " phi = pi * np.random.rand() - pi / 2 # equally likely -> isotropic\n", " elif distribution == \"gauss\":\n", " phi = np.clip(\n", " np.random.normal(0, sigma), -pi / 2, pi / 2\n", " ) # gaussian distribution -> change values to shift\n", "\n", " phi += mean_angle\n", " while np.any(phi > pi / 2) or np.any(phi < -pi / 2):\n", " if phi > pi / 2:\n", " phi -= pi\n", " elif phi < -pi / 2:\n", " phi += pi\n", "\n", " fiber_dirs.append(plotter._dir_vec(phi, theta))\n", " angles.append(phi)\n", " return np.array(fiber_dirs), angles\n", "\n", "\n", "fiber_dirs_carbon, angles_carbon = random_fibers(\n", " n, distribution=distribution, sigma=0.1 * pi\n", ")\n", "fiber_dirs_glass, angles_glass = random_fibers(\n", " n, distribution=distribution, sigma=0.2 * pi\n", ")\n", "\n", "\n", "# define function to calculate a discrete planar fiber distribution with a given angle spectrum\n", "\n", "\n", "def get_distribution_histogram(angles, angle_disc):\n", " \"\"\"\n", " Return the discrete orientation probability histogram for measured fiber_dirs.\n", "\n", " Paramters:\n", " - angles : array of shape (n,1)\n", " Measured fiber angles.\n", " - angle_spec : float in [0,pi]\n", " Angle spectrum.\n", "\n", " Returns:\n", " - angle_probs : ndarray of shape (pi/angle_spec, 1)\n", " Histogram of fiber orientation.\n", " \"\"\"\n", " measurements = len(angles)\n", " angle_probs = []\n", " for i in np.arange(-pi / 2 - angle_disc / 2, pi / 2, angle_disc):\n", " # print(\"[{}, {}, {}]\".format(i, i+angle_spec/2, i + angle_spec))\n", " hits = 0\n", " for angle in angles:\n", " if angle > i and angle <= i + angle_disc:\n", " hits += 1\n", " angle_probs.append([i + angle_disc / 2, hits / measurements])\n", " return angle_probs\n", "\n", "\n", "hist_carbon = np.array(get_distribution_histogram(angles_carbon, angle_disc))\n", "hist_glass = np.array(get_distribution_histogram(angles_glass, angle_disc))\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "f75a80f9", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAfM0lEQVR4nO3de5RU1Zn38e8DNKBoELmptNB4IQRFVFrQaEbFUYkm6WjkBS8TMkOGYdQgaPDCG2+ElUh0vMzIG4clJoao6MIhq6NEJIITwpLQgIg0BiEKsVERoW2jBJpunvePOt0WxakLdJ2q6urfZy1W1zl7n6qnD1X19Nl7n73N3REREUnULt8BiIhIYVKCEBGRUEoQIiISSglCRERCKUGIiEioDvkOIFt69OjhZWVl+Q5DRKRVWbVq1cfu3jOsrGgSRFlZGStXrsx3GCIirYqZbUlWpiYmEREJpQQhIiKhlCBERCRU0fRBiIjs3buXmpoadu/ene9QCk7nzp0pLS2lpKQk42OUIESkaNTU1HDkkUdSVlaGmeU7nILh7uzYsYOamhr69++f8XFqYhKRorF79266d++u5JDAzOjevftBX1kpQYhIUVFyCHco50UJQkREQqkPQkSK1t33/ZSaj7Zl7flKe/Xm3tvvSFvvww8/ZNKkSVRVVXHUUUfRu3dvHn74YQYMGJDR6xxxxBF89tlnLQ23xZQgRHIs3ZdWpl9Ckl7NR9sYdPUVWXu+9c/MT1vH3bniiisYO3Ysc+fOBeCNN95g27ZtaROEu1NIi7gpQYjkWLovrUy+hKRwLVmyhJKSEiZMmNC8b8iQIXz22WdcdNFF1NbWsnfvXqZPn05FRQWbN2/m0ksvZfjw4axatYoFCxYAMHnyZF5++WWOOeYY5s6dS8+ePVmzZg0TJkxg165dnHjiiTzxxBN069aNCy64gOHDh7NkyRI++eQTZs+ezde+9rUW/y7qgxARyaJ169YxdOjQA/Z37tyZ+fPns3r1apYsWcItt9zSfLWwceNGrr/+eqqrq+nXrx+ff/455eXlVFdXc/7553PvvfcC8N3vfpcZM2awdu1aBg8e3LwfoKGhgRUrVvDwww/vt78ldAUhIpID7s7UqVP5wx/+QLt27di6dSvbtsWaGvv168fZZ5/dXLddu3aMHj0agOuuu44rr7ySuro6PvnkE84//3wAxo4dy6hRo5qPufLKKwEYOnQomzdvzkrMShAiIll0yimnMG/evAP2P/XUU2zfvp1Vq1ZRUlJCWVlZ830JXbp0SfmcmQxR7dSpEwDt27enoaHhECI/kJqYRESyaMSIEezZs4dZs2Y171u7di1btmyhV69elJSUsGTJErZsSTrLNvv27WtOMk8//TTnnXceXbt2pVu3bixduhSAOXPmNF9NREVXECJStEp79c5qp39pr95p65gZ8+fPZ9KkScyYMYPOnTtTVlbGPffcw8SJExk8eDDl5eUMHDgw6XN06dKFFStWMH36dHr16sWzzz4LwJNPPtncSX3CCSfwi1/8Imu/WxglCBEpWvkaLnzcccfx3HPPHbD/tddeC62/bt26/baT3QNx+umns3z58gP2v/rqq82Pe/TokbU+CDUxiYhIKCUIEREJpQQhIiKhlCBERCSUEoSIiIRSghARkVAa5ioiRev+Hz/Axx/szNrz9Tj2aKbc+cO09bZt28bkyZNZvnw53bp1o2PHjtx6661069aNBx54gBdeeCFrMUVJCUJEitbHH+xk/AU3Ze35Zr36SNo67s63v/1txo4dy9NPPw3Ali1bqKyspFu3blmLJRfUxCQikkWLFy+mY8eO+0333a9fP37wgx/sV2/FihWcc845nHHGGXz1q19lw4YNAFRXVzNs2DBOP/10TjvtNDZu3Mjnn3/O5ZdfzpAhQzj11FOb76yOmq4gRESyqLq6mjPPPDNtvYEDB7J06VI6dOjA73//e6ZOncrzzz/PY489xk033cS1115LfX09jY2NLFiwgOOOO44XX3wRgLq6uqh/DUBXECIikbrhhhsYMmQIZ5111n776+rqGDVqFKeeeiqTJ0+muroagHPOOYef/OQnzJgxgy1btnDYYYcxePBgFi1axG233cbSpUvp2rVrTmJXghARyaJTTjmF1atXN2/PnDmTV155he3bt+9X78477+TCCy9k3bp1/Pa3v22e+vuaa66hsrKSww47jMsuu4zFixczYMAAVq9ezeDBg/nRj37EtGnTcvK7KEGIiGTRiBEj2L17Nz//+c+b9+3ateuAenV1dfTp0weAX/7yl83733nnHU444QQmTpxIRUUFa9eu5f333+fwww/nuuuuY8qUKfsloCipD0JEilaPY4/OaOTRwTxfOmbGb37zGyZPnszPfvYzevbsSZcu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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot angle distribution\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "x_carbon = hist_carbon[:, 0]\n", "y_carbon = hist_carbon[:, 1]\n", "\n", "x_glass = hist_glass[:, 0]\n", "y_glass = hist_glass[:, 1]\n", "\n", "plt.bar(\n", " x_carbon,\n", " y_carbon,\n", " width=angle_disc,\n", " align=\"center\",\n", " color=(27 / 256, 151 / 256, 131 / 256),\n", " edgecolor=\"k\",\n", " alpha=0.5,\n", " label=\"Carbon\",\n", ")\n", "plt.bar(\n", " x_glass,\n", " y_glass,\n", " width=angle_disc,\n", " align=\"center\",\n", " color=\"mediumorchid\",\n", " edgecolor=\"k\",\n", " alpha=0.5,\n", " label=\"Glass\",\n", ")\n", "plt.xlabel(\"Angles\")\n", "plt.ylabel(\"Probability\")\n", "plt.xticks(\n", " np.arange(-pi / 2, pi / 2 + pi / 4, step=(pi / 4)),\n", " [\"-π/2\", \"-π/4\", \"0\", \"π/4\", \"π/2\"],\n", ")\n", "\n", "\n", "plt.legend()\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "e6e5ee4a", "metadata": {}, "outputs": [], "source": [ "# build orientation tensor of 4th and 2nd order\n", "\n", "\n", "def get_N(fiber_dirs):\n", " N4 = np.zeros((3, 3, 3, 3))\n", " for fiber_dir in fiber_dirs:\n", " N4 += np.einsum(\"i,j,k,l->ijkl\", fiber_dir, fiber_dir, fiber_dir, fiber_dir)\n", " N4 /= len(fiber_dirs)\n", " return N4\n", "\n", "\n", "N4_carbon = get_N(fiber_dirs_carbon)\n", "N4_glass = get_N(fiber_dirs_glass)\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "5cc5c07f", "metadata": {}, "outputs": [], "source": [ "# average MT\n", "\n", "mt_hybrid.get_average_stiffness([N4_carbon, N4_glass])\n", "\n", "# build laminate from HT results\n", "\n", "laminas_carbon = len(angles_carbon) * [ht_carbon.get_effective_stiffness()]\n", "laminas_glass = len(angles_glass) * [ht_glass.get_effective_stiffness()]\n", "\n", "laminas_combined = laminas_carbon + laminas_glass\n", "angles_combined = angles_carbon + angles_glass\n", "\n", "ht_laminate = Laminate(laminas_combined, angles_combined)\n" ] }, { "cell_type": "code", "execution_count": 10, "id": "03f6a287", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "(
,\n", " )" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compare MT and HT after orientation averaging\n", "\n", "# mt_hybrid_plot = plotter.polar_plot_E_body(np.linalg.inv(mt_hybrid.effective_stiffness66), 200, 0, plot=True)\n", "\n", "\n", "mt_hybrid_plot_ave = plotter.polar_plot_E_body(\n", " mt_hybrid.effective_stiffness66, 200, plot=False\n", ")\n", "ht_hybrid_plot_ave = plotter.polar_plot_laminate(\n", " ht_laminate.effective_stiffness33, 1000, plot=False\n", ")\n", "\n", "\n", "plotter.polar_plot(\n", " [mt_hybrid_plot_ave + (\"MT Hybrid\",), ht_hybrid_plot_ave + (\"HT Hybrid\",)]\n", ")\n" ] }, { "cell_type": "code", "execution_count": 12, "id": "dbd5bedb", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8eb0e83cb1ec472da25f63327f41d6df", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f27112c9e80b429b88be943f84f10be7", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(HBox(children=(FloatSlider(value=0.1, description='SD carb.:', layout=Layout(width='250px'), ma…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\"\"\"\n", "Same plot as above, just with %matplotlib inline.\n", "The reason for this is that %matplotlib notebook does not seem to be working with\n", "binder currently. The above version is kept, because it looks a bit more crispy...\n", "\n", "This is an interactive plot to show how the fiber distributions of each constituent\n", "affects the effective porperties. Open in jupyter notebook to get full interaction\n", "support. We recommend using the option Cell -> Current Outputs -> Toggle\n", "\"\"\"\n", "\n", "%matplotlib inline\n", "%config InlineBackend.figure_format = 'svg' # makes everything super crispy\n", "from ipywidgets import *\n", "import numpy as np\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "def update_fiber_dist(sig_c=0.1, dist_c = 'gauss', sig_g=0.2, dist_g = 'gauss', \n", " vol_c=0.25, vol_g=0.25, mean_angle_c=0, mean_angle_g=0,\n", " n=1000, angle_disc=1/40*np.pi):\n", " \n", " ht_carbon = HalpinTsai(\n", " E_carbon,\n", " E_pa6,\n", " G_carbon,\n", " G_pa6,\n", " nu_carbon,\n", " nu_pa6,\n", " l_carbon,\n", " r_carbon,\n", " vol_c,\n", " )\n", "\n", " ht_glass = HalpinTsai(\n", " E_glass,\n", " E_pa6,\n", " G_glass,\n", " G_pa6,\n", " nu_glass,\n", " nu_pa6,\n", " l_glass,\n", " r_glass,\n", " vol_g,\n", " )\n", " \n", " \n", " fibers_carbon, angles_carbon = random_fibers(n, distribution=dist_c, sigma=sig_c*pi, mean_angle=mean_angle_c)\n", " hist_carbon = np.array(get_distribution_histogram(angles_carbon, angle_disc=angle_disc))\n", " x_carbon = hist_carbon[:,0]\n", " y_carbon = hist_carbon[:,1]\n", " \n", " fibers_glass, angles_glass = random_fibers(n, distribution=dist_g, sigma=sig_g*pi, mean_angle=mean_angle_g)\n", " hist_glass = np.array(get_distribution_histogram(angles_glass, angle_disc=angle_disc))\n", " x_glass = hist_glass[:,0]\n", " y_glass = hist_glass[:,1]\n", " \n", " N4_carbon = get_N(fibers_carbon)\n", " N4_glass = get_N(fibers_glass)\n", " \n", " # mt_hybrid_ave = mt_hybrid.get_average_stiffness([N2_carbon, N2_glass], [N4_carbon, N4_glass], method='benveniste')\n", " \n", " mt_hybrid = MoriTanaka(polyamid6, [carbon_fiber, glass_fiber], [vol_c/2, vol_g/2],\n", " [a_carbon, a_glass], 2*['ellipsoid'], N4=[N4_carbon, N4_glass], symmetrize=True)\n", "\n", " laminas_carbon = len(angles_carbon)*[ht_carbon.get_effective_stiffness()]\n", " laminas_glass = len(angles_glass)*[ht_glass.get_effective_stiffness()]\n", "\n", " laminas_combined = laminas_carbon + laminas_glass\n", " angles_combined = angles_carbon + angles_glass\n", "\n", " ht_laminate = Laminate(laminas_combined, angles_combined)\n", " \n", " mt_hybrid_plot_ave = plotter.polar_plot_E_body(mt_hybrid.effective_stiffness66, 200, plot=False)\n", " ht_hybrid_plot_ave = plotter.polar_plot_laminate(ht_laminate.effective_stiffness33, 1000, plot=False)\n", " \n", " \n", " fig = plt.figure(figsize=(6,6))\n", " ax1 = plt.subplot(311)\n", " ax1.set_ylim([0, 0.2])\n", "\n", "\n", " line1 = ax1.bar(x_carbon,y_carbon,width=angle_disc,align='center', color=(27/256,151/256,131/256),edgecolor='k', alpha=0.5, label='Carbon')\n", " line2 = ax1.bar(x_glass,y_glass,width=angle_disc,align='center', color='mediumorchid',edgecolor='k', alpha=0.5, label='Glass')\n", "\n", " plt.legend()\n", "\n", " ax1.set_xlabel('Angles')\n", " ax1.set_ylabel('Probability')\n", " ax1.set_xticks(np.arange(-pi/2, pi/2+pi/4, step=(pi/4)), ['-π/2','-π/4', '0', 'π/4','π/2'])\n", "\n", " ax2 = plt.subplot(212, projection='polar')\n", " ax2.set_ylim([0,6e10])\n", "\n", " line3, = ax2.plot(mt_hybrid_plot_ave[0], mt_hybrid_plot_ave[1], label='MT Hybrid')\n", " line4, = ax2.plot(ht_hybrid_plot_ave[0], ht_hybrid_plot_ave[1], label='HT Hybrid')\n", "\n", " plt.legend()\n", "\n", "\n", "sig_c = widgets.FloatSlider(value=0.1, min=0.0, max=0.3, step=0.01, description='SD carb.:',\n", " layout=Layout(width='250px'))\n", "sig_g = widgets.FloatSlider(value=0.1,min=0.0, max=0.3, step=0.01, description='SD glass:',\n", " layout=Layout(width='250px'))\n", "mean_angle_c = widgets.FloatSlider(value=0.0, min=-np.pi/2, max=np.pi/2, step=np.pi/16, description='Mean angle carb.:',\n", " layout=Layout(width='250px'), style = {'description_width': 'initial'})\n", "mean_angle_g = widgets.FloatSlider(value=0.0, min=-np.pi/2, max=np.pi/2, step=np.pi/16, description='Mean angle glass:',\n", " layout=Layout(width='250px'), style = {'description_width': 'initial'})\n", "dist_c = widgets.Dropdown(options=['gauss', 'random'],\n", " value='gauss',\n", " disabled=False,\n", " description='Dist. carb.:',\n", " layout=Layout(width='180px')\n", ")\n", "dist_g = widgets.Dropdown(options=['gauss', 'random'],\n", " value='gauss',\n", " disabled=False,\n", " description='Dist. glass:',\n", " layout=Layout(width='180px')\n", ")\n", "vol_frac_c = widgets.BoundedFloatText(\n", " value=0.25,\n", " min=0,\n", " max=1,\n", " step=0.01,\n", " description='v_frac carb.:',\n", " disabled=False,\n", " layout=Layout(width='150px')\n", ")\n", "vol_frac_g = widgets.BoundedFloatText(\n", " value=0.25,\n", " min=0,\n", " max=1,\n", " step=0.01,\n", " description='v_frac glass:',\n", " disabled=False,\n", " layout=Layout(width='150px')\n", ")\n", "\n", "HBox_carbon = widgets.HBox([sig_c,dist_c,vol_frac_c,mean_angle_c])\n", "HBox_glass = widgets.HBox([sig_g,dist_g,vol_frac_g,mean_angle_g])\n", "ui = widgets.VBox([HBox_carbon, HBox_glass])\n", "\n", "out = widgets.interactive_output(update_fiber_dist, {'sig_c': sig_c, 'dist_c': dist_c, 'sig_g': sig_g,\n", " 'dist_g': dist_g, 'vol_c': vol_frac_c,\n", " 'vol_g': vol_frac_g, 'mean_angle_c': mean_angle_c,\n", " 'mean_angle_g': mean_angle_g})\n", "\n", "display(out, ui)" ] } ], "metadata": { "kernelspec": { "display_name": "HomoPy", "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.20" }, "vscode": { "interpreter": { "hash": "6a4d04239716f2c6e702d74bc22ca2a1f2359060bfdf3c7f42b1a63d84414d40" } }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "0041d86ee4b64c35874792c06f7a48b6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "041c7514aa9c49bbaa4bfadc6d897af9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatSliderModel", "state": { "behavior": "drag-tap", "description": "Mean angle carb.:", "layout": "IPY_MODEL_2adfcfaed77f4eb2b7c4f764f7363d64", "max": 1.5707963267948966, "min": -1.5707963267948966, "step": 0.19634954084936207, "style": "IPY_MODEL_fc1edd9d3dd0497facdd379821c299ae" } }, "175d1ff7ac1d4a2cad1887ea45329440": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "width": "150px" } }, "19865ccc15d64917be125eac6518c5dd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "BoundedFloatTextModel", "state": { "description": "v_frac carb.:", "layout": "IPY_MODEL_99481f1d48334dc89e58ad76aded7838", "max": 1, "step": 0.01, "style": "IPY_MODEL_9fccdb89e1dc4c43ba871b67caac62a0", "value": 0.25 } }, "2adfcfaed77f4eb2b7c4f764f7363d64": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "width": "250px" } }, "40c4f0623af949058aa8f080baa401e1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_5c6cc53b0b31453f82ad3a5699f74766", "IPY_MODEL_9675f38b98ff4bf893c01ce047b083a1", "IPY_MODEL_19865ccc15d64917be125eac6518c5dd", "IPY_MODEL_041c7514aa9c49bbaa4bfadc6d897af9" ], "layout": "IPY_MODEL_c5d5e36732ab4c0282c625f40a504c61" } }, "4d72228fc048414e95d65f6b224ce3ee": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "4e1d0c540111453780215a7928bd635e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "596577835406428996b5f6586f779e08": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "5c6cc53b0b31453f82ad3a5699f74766": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatSliderModel", "state": { "behavior": "drag-tap", "description": "SD carb.:", "layout": "IPY_MODEL_cfcaf313e43d4205a51cb43e1def732a", "max": 0.3, "step": 0.01, "style": "IPY_MODEL_596577835406428996b5f6586f779e08", "value": 0.1 } }, "6a08f6d70e9848fea8b75918ad07db17": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatSliderModel", "state": { "behavior": "drag-tap", "description": "SD glass:", "layout": "IPY_MODEL_9074d0c204ad40cebae8ad189be9f15b", "max": 0.3, "step": 0.01, "style": "IPY_MODEL_4e1d0c540111453780215a7928bd635e", "value": 0.1 } }, "6bc1fdb055b94dbf8d52e90bc5ded594": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatSliderModel", "state": { "behavior": "drag-tap", "description": "Mean angle glass:", "layout": "IPY_MODEL_bf3aae04c5e64fce92877896cd471af6", "max": 1.5707963267948966, "min": -1.5707963267948966, "step": 0.19634954084936207, "style": "IPY_MODEL_81e014e9a00042ed9a3b17759d0889b8" } }, "6f9e45c3bcd44f6cabb3c24c91b25b51": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "BoundedFloatTextModel", "state": { "description": "v_frac glass:", "layout": "IPY_MODEL_175d1ff7ac1d4a2cad1887ea45329440", "max": 1, "step": 0.01, "style": "IPY_MODEL_7441b3395dcc42fab071ce280ee33706", "value": 0.25 } }, "7441b3395dcc42fab071ce280ee33706": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "81e014e9a00042ed9a3b17759d0889b8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "initial" } }, "8b05dd07becf479a9a9d8c2474cc136b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "gauss", "random" ], "description": "Dist. glass:", "index": 0, "layout": "IPY_MODEL_fef3e71b7970415caec7e600531be1c2", "style": "IPY_MODEL_a2dc948728ac43e49904ca8a58d556a0" } }, "9074d0c204ad40cebae8ad189be9f15b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "width": "250px" } }, "9675f38b98ff4bf893c01ce047b083a1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "gauss", "random" ], "description": "Dist. carb.:", "index": 0, "layout": "IPY_MODEL_beab380da6a14f029af1444c2197bad3", "style": "IPY_MODEL_0041d86ee4b64c35874792c06f7a48b6" } }, "99481f1d48334dc89e58ad76aded7838": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "width": "150px" } }, "9fccdb89e1dc4c43ba871b67caac62a0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "a2dc948728ac43e49904ca8a58d556a0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "a980e5d637f746dd9661164055b5a675": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_40c4f0623af949058aa8f080baa401e1", "IPY_MODEL_f480ca414a9d4918bd45c6f84b4532f6" ], "layout": "IPY_MODEL_a9c619cb80e942b4bd569d3fabc709b9" } }, "a9c619cb80e942b4bd569d3fabc709b9": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "ba0b649e5a844c27baf4b0f216cb088a": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_4d72228fc048414e95d65f6b224ce3ee", "outputs": [ { "data": { "image/svg+xml": "\n\n\n \n \n \n \n 2023-02-14T09:40:15.197385\n image/svg+xml\n \n \n Matplotlib v3.6.1, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "text/plain": "
" }, "metadata": {}, "output_type": "display_data" } ] } }, "beab380da6a14f029af1444c2197bad3": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "width": "180px" } }, "bf3aae04c5e64fce92877896cd471af6": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "width": "250px" } }, "c3f242ca9f8d41d3920387a9b4baf235": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "c5d5e36732ab4c0282c625f40a504c61": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "cfcaf313e43d4205a51cb43e1def732a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "width": "250px" } }, "f480ca414a9d4918bd45c6f84b4532f6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_6a08f6d70e9848fea8b75918ad07db17", "IPY_MODEL_8b05dd07becf479a9a9d8c2474cc136b", "IPY_MODEL_6f9e45c3bcd44f6cabb3c24c91b25b51", "IPY_MODEL_6bc1fdb055b94dbf8d52e90bc5ded594" ], "layout": "IPY_MODEL_c3f242ca9f8d41d3920387a9b4baf235" } }, "fc1edd9d3dd0497facdd379821c299ae": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "initial" } }, "fef3e71b7970415caec7e600531be1c2": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "width": "180px" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }