diff --git a/Dockerfile b/Dockerfile index 813acf122cb4f6f030671097267829e40e1e5c4e..c9ff6d5ab6375d443c477a8d953ab3d00ab37ff1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,19 @@ # Specify parent image. Please select a fixed tag here. -ARG BASE_IMAGE=registry.git.rwth-aachen.de/jupyter/profiles/rwth-courses:2020-ss.1 -FROM ${BASE_IMAGE} - +FROM registry.git.rwth-aachen.de/jupyter/profiles/rwth-minimal-2021-ss:latest # .. Or update conda base environment to match specifications in environment.yml ADD environment.yml /tmp/environment.yml - # All packages specified in environment.yml are installed in the base environment RUN conda env update -f /tmp/environment.yml && \ conda clean -a -f -y +# +#RUN jupyter labextension install @jupyter-widgets/jupyterlab-manager@3.0.0 +# +#RUN jupyter labextension install jupyter-matplotlib@0.9.0 +# +#RUN jupyter labextension install jupyterlab-datawidgets@7.0.0 +# +#RUN jupyter labextension install ipytree@0.2.1 +# +#RUN jupyter labextension install k3d@2.9.3 +# +RUN jupyter labextension install ipyregulartable@0.2.0 \ No newline at end of file diff --git a/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb b/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb index c7f2dffc50c34c57b02c11dcf8043a61c5f2159a..c14da7a638efb598d38ac45ade61e6d36c684ba2 100644 --- a/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb +++ b/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb @@ -7,18 +7,30 @@ } }, "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, "source": [ "# Example: Calculate elastic stiffness of a given composite\n", "\n", "## Task\n", - "What is the initial stiffness of a reinforced concrete cross section shown in the Figure with the thickness of 10~mm and width of 100 mm.\n", - "The cross-section is reinforced with 6 layers of textile fabrics made of CAR-EP3300 specified in the table below " + "Predict the tensile stiffness of a reinforced concrete cross section shown in the Figure with the thickness of 10~mm and width of 100 mm.\n", + "The cross-section is reinforced with 6 layers of textile fabrics made of CAR-EP3300 specified in the table below\n", + "\n", + "" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, "source": [ "## Theory\n", "The derived mixture rule will be used to solve the task" @@ -31,21 +43,36 @@ } }, "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, "source": [ "" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, "source": [ "## Data" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, "source": [ "\\begin{array}{|c|c|c|c|c|c|}\n", " \\mathrm{Label}\n", @@ -81,9 +108,23 @@ "\\end{array}" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# How to evaluate an expression?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Calculator:** Let us use Python language as a calculator and evalute the mixture rule for the exemplified cross-section.m" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -98,19 +139,181 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "37082.18859138533" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "A_composite = width * thickness\n", "n_rovings = width / spacing\n", "A_layer = n_rovings * A_roving\n", "A_carbon = n_layers * A_layer \n", "A_concrete = A_composite - A_carbon \n", - "E_composite = (E_carbon * A_carbon + E_concrete +A_concrete) / A_composite\n", + "E_composite = (E_carbon * A_carbon + E_concrete * A_concrete) / A_composite\n", "E_composite" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Thus, the composite has an effective stiffness of 37 GPa." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# How to construct a model?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once we have derived the formula capturing the design question, i.e. \"what is the stiffness of the new composite?\" we want to learn from the model and develop a new intuition. To explore the possible composite designs let us rewrite the above equations as symbolic expressions. Then, we can construct a model which can be interactively used to study the available design options." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In contrast to the previously performed numerical evaluation, we now express the derived equations as mathematical symbols instead of numbers. To do this, let us use a Python package `sympy` to do symbolic algebra." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import sympy as sp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The parameters of the model are now introduced as `sympy.symbols`. To distinguish the symbols from numbers introduced above, let us name the Python variables referring to the mathematical symbols with a trailing underscore `_`" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "A_roving_ = sp.Symbol('A_r')\n", + "n_layers_ = sp.Symbol('n_l')\n", + "spacing_ = sp.Symbol('d')\n", + "thickness_ = sp.Symbol('h')\n", + "width_ = sp.Symbol('b')\n", + "E_carbon_ = sp.Symbol('E_car')\n", + "E_concrete_ = sp.Symbol('E_c')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To see the difference between a variable referring to a number and to a symbol, let us display the variables `A_roving` and `A_roving_`" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.84" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle A_{r}$" + ], + "text/plain": [ + "A_r" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(A_roving, A_roving_)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us now rephrase the the above derived equations in the symbolic form, i.e. using the symbols with the trailing underscore `_`" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{A_{r} E_{car} n_{l} - E_{c} \\left(A_{r} n_{l} - d h\\right)}{d h}$" + ], + "text/plain": [ + "(A_r*E_car*n_l - E_c*(A_r*n_l - d*h))/(d*h)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A_composite_ = width_ * thickness_\n", + "n_rovings_ = width_ / spacing_\n", + "A_layer_ = n_rovings_ * A_roving_\n", + "A_carbon_ = n_layers_ * A_layer_ \n", + "A_concrete_ = A_composite_ - A_carbon_ \n", + "E_composite_ = (E_carbon_ * A_carbon_ + E_concrete_ * A_concrete_) / A_composite_\n", + "sp.simplify(E_composite_)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The power of modeling**\n", + "\n", + " - Instead of a number, we have now a symbolic expression showing the influence of the individual parameters on a design property, i.e. on the material stiffness $\\bar{E}$. \n", + "\n", + " - This expression represents the first model that we constructuted in the course using the conditions of compatibility, equilibrium and constitutive laws.\n", + "\n", + " - Using a model, we can explore the behavior of the composite, develop a design intuition, optimize the design.\n", + " We learn how to construct simple models describing the mechanisms governing the behavior of a composite.\n", + " \n", + " - We will construct simplified analytical models for pull-out, that will help us to understand elementary types of\n", + " material behavior.\n", + " " + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -122,26 +325,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - " - Install anaconda environment\n", - " - Download this notebook from the moodle folder Jupyter notebooks\n", - " - Start jupyter\n", - " - Open the notebook\n", - " - Learn the basics of how to interact with Jupyter notebook" + " - Login to jupyter.rwth-aachen.de\n", + " - Navigate to this mixture rule example\n", + " - Evaluate the cells by issueing the [Shift+Return] key combination" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Further readings\n", - " - To get more support in installing the environment you can check this page\n", - " [Quick Start Guide](https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/index.html)\n", - " - To solve our problems we will use packages that are included in the Python bundle of containing \n", - " packages that efficiently support scientific-computing tasks. To motivate you to dig in deeper in\n", - " Python check this race of programming languages over the last 50 years and wait till the end of it ;-) [Most Popular Programming Languages 1965 - 2019](https://www.youtube.com/watch?v=Og847HVwRSI)\n", - " - Basic features of Jupyter, Python, and of the packages that we will use \n", - " for plotting, linear algebra, algebraic manipulations, and data array manipulations will be shortly\n", - " explained. the that we will use to support our model development will be addressed in a separate notebook." + "# Why Jupyter Lab? Why Python?\n", + " - [Jupyterlab introduction](https://youtu.be/A5YyoCKxEOU) [7 mins] video explaining the basic features of jupyter notebook within jupyter lab \n", + " - [Most Popular Programming Languages 1965 - 2019](https://www.youtube.com/watch?v=Og847HVwRSI) Check this race of programming languages over the last 50 years and wait till the end of it ;-)\n", + " - Useful packages\n", + " - `matplotlib` - how to plot fancy diagrams \n", + " - `sympy` - how to perform algebraic manipulations\n", + " - `numpy` - how to manipulate data - beyond `Excel`\n", + " will be shortly explained." ] }, { @@ -168,7 +368,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.3" + "version": "3.9.2" }, "toc": { "base_numbering": 1, diff --git a/bmcs_course/4_1_PO_multilinear_unloading.ipynb b/bmcs_course/4_1_PO_multilinear_unloading.ipynb index dcda51895ed99cdcd642c7f9bb127c639cf96e18..fc946a696e78b84ef7c94047c06174f494dc1033 100644 --- a/bmcs_course/4_1_PO_multilinear_unloading.ipynb +++ b/bmcs_course/4_1_PO_multilinear_unloading.ipynb @@ -18,9 +18,22 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/rch/miniconda3/lib/python3.9/site-packages/traits/observation/_has_traits_helpers.py:70: RuntimeWarning: Trait '_wrappers' (trait type: List) on class ActionItem is defined with comparison_mode=<ComparisonMode.equality: 2>. Mutations and extended traits cannot be observed if a new container compared equally to the old one is set. Redefine the trait with List(..., comparison_mode=<ComparisonMode.identity: 1>) to avoid this.\n", + " warnings.warn(\n", + "/home/rch/miniconda3/lib/python3.9/site-packages/traits/observation/_has_traits_helpers.py:70: RuntimeWarning: Trait '_wrappers' (trait type: List) on class ActionItem is defined with comparison_mode=<ComparisonMode.equality: 2>. Mutations and extended traits cannot be observed if a new container compared equally to the old one is set. Redefine the trait with List(..., comparison_mode=<ComparisonMode.identity: 1>) to avoid this.\n", + " warnings.warn(\n", + "/home/rch/miniconda3/lib/python3.9/site-packages/traits/observation/_has_traits_helpers.py:70: RuntimeWarning: Trait '_wrappers' (trait type: List) on class ActionItem is defined with comparison_mode=<ComparisonMode.equality: 2>. Mutations and extended traits cannot be observed if a new container compared equally to the old one is set. Redefine the trait with List(..., comparison_mode=<ComparisonMode.identity: 1>) to avoid this.\n", + " warnings.warn(\n" + ] + } + ], "source": [ "%matplotlib widget\n", "import matplotlib.pyplot as plt\n", @@ -38,7 +51,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -60,7 +73,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -92,7 +105,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "bab77b1a58c640a98874e5a0b9abdba4", + "model_id": "8ff5aa5a95fc4543b9b09e65793c2014", "version_major": 2, "version_minor": 0 }, @@ -541,7 +554,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.3" + "version": "3.9.1" }, "toc": { "base_numbering": 1, diff --git a/bmcs_course/4_2_BS_EP_SH_I_A.ipynb b/bmcs_course/4_2_BS_EP_SH_I_A.ipynb index a37b424762a43e9b9f8c41408a7de6cd8afe064c..726710c52a8e5623bac409fc41752963a548d0e7 100644 --- a/bmcs_course/4_2_BS_EP_SH_I_A.ipynb +++ b/bmcs_course/4_2_BS_EP_SH_I_A.ipynb @@ -1427,7 +1427,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.3" + "version": "3.9.2" }, "toc": { "base_numbering": 1, diff --git a/bmcs_course/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb b/bmcs_course/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb index d75ec87a1ec245bd0cd5a647d5fc73bac0cb2e80..d66efcfb822506b30477a53df05b737480551aba 100644 --- a/bmcs_course/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb +++ b/bmcs_course/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb @@ -1073,7 +1073,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.3" + "version": "3.9.2" }, "toc": { "base_numbering": 1, diff --git a/environment.yml b/environment.yml index e1a8b973d7a574fad3b774ba1ced11325bd3891f..0105a6a559e34e8e8e9684f3b276d9251e44aa43 100644 --- a/environment.yml +++ b/environment.yml @@ -2,24 +2,24 @@ name: base channels: - conda-forge dependencies: -- appmode -- jupyter_contrib_nbextensions -- traits -- matplotlib -- numpy -- sympy -- scipy -- k3d -- ipywidgets -- mayavi -- ipympl -- ipyregulartable -- ipytree -- traitsui +# - appmode==0.8.0 +# - jupyter_contrib_nbextensions==0.5.1 +- traits==6.1.1 +- matplotlib==3.3.3 +- numpy==1.19.4 +- sympy==1.7.1 +- scipy==1.5.3 +- k3d==2.9.3 +- ipywidgets==7.6.3 +- mayavi==4.7.2 +- ipympl==0.7.0 +- ipyregulartable==0.2.0 +- ipytree==0.2.1 +- traitsui==7.1.0 - pip - pip: - - bmcs_utils - - bmcs_ibvpy - - bmcs_cross_section - - bmcs_beam - - bmcs_fragmentation + - bmcs-utils==0.0.23a0 + - bmcs-ibvpy==0.0.4a0 + - bmcs-cross_section==0.0.32a0 + - bmcs-beam==0.0.10a0 + - bmcs-fragmentation==0.0.2a0 diff --git a/index.ipynb b/index.ipynb index 514d3509c44f88a5d26245b3dbf0b74e146ec776..1fe31b75cd6e81afa308fe2812601fad7c9aec3e 100644 --- a/index.ipynb +++ b/index.ipynb @@ -155,18 +155,17 @@ "\n", "## 2 Constant bond-slip law\n", "\n", - "### Material\n", + "### Material and cross-section\n", "\n", "- 2.1 [Pull-out of long fiber from rigid matrix](bmcs_course/2_1_PO_LF_LM_RG.ipynb)\n", "\n", - "### Cross-section\n", + "### \n", "\n", "- 2.2 [Pull-out of long fiber from long elastic matrix](bmcs_course/2_2_PO_LF_LM_EL.ipynb)\n", "- 2.3 [Pull-out of short fiber from rigid matrix](bmcs_course/2_3_PO_SF_M_RG.ipynb)\n", - "- 2.4 [Crack-bridge]\n", - "- 2.5 [Comparison of several models](bmcs_course/2_4_PO_comparison.ipynb)\n", + "- 2.4 [Crack-bridge behavior]\n", "\n", - "### Structure \n", + "### Cross section and structure \n", "\n", "- 2.6 [Anchorage]\n", "- 2.7 [Multiple cracking]\n", diff --git a/mkappa/mkappa.ipynb b/mkappa/mkappa.ipynb index 22f4f4ffa8be9854b2db9d8daf8b21249720925c..770cf1f47a152b9b0d4a054d6fd1675a87e2a3db 100644 --- a/mkappa/mkappa.ipynb +++ b/mkappa/mkappa.ipynb @@ -3,7 +3,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "funky-illustration", + "id": "million-hotel", "metadata": {}, "outputs": [], "source": [ @@ -13,7 +13,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "fresh-century", + "id": "purple-japan", "metadata": {}, "outputs": [], "source": [ @@ -28,7 +28,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "bigger-extent", + "id": "secondary-kruger", "metadata": {}, "outputs": [], "source": [ @@ -38,7 +38,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "cutting-finnish", + "id": "talented-catalog", "metadata": {}, "outputs": [], "source": [ @@ -55,7 +55,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "champion-badge", + "id": "informational-patrick", "metadata": {}, "outputs": [ { @@ -122,7 +122,7 @@ { "cell_type": "code", "execution_count": null, - "id": "difficult-retail", + "id": "unauthorized-metallic", "metadata": {}, "outputs": [], "source": [] diff --git a/bmcs_course/2_1_PO_LF_LM_RG.ipynb b/pull_out/2_1_PO_ELF_RLM.ipynb similarity index 97% rename from bmcs_course/2_1_PO_LF_LM_RG.ipynb rename to pull_out/2_1_PO_ELF_RLM.ipynb index a34f86060eba60d0191d5cd58884f99e52e514d8..b2d1405be0331acf2fb8de4d2828cbce37571d59 100644 --- a/bmcs_course/2_1_PO_LF_LM_RG.ipynb +++ b/pull_out/2_1_PO_ELF_RLM.ipynb @@ -8,8 +8,8 @@ } }, "source": [ - "# Example 2.1: PO_LF_LM_RG\n", - "Pull-out of a long fiber from long rigid matrix\n", + "# Example 2.1: PO_ELF_RLM\n", + "Pull-out of a elastic long fiber (ELF) from rigid long matrix (RLG)\n", "\n", "@author: rosoba" ] @@ -94,7 +94,7 @@ "\n", "The force $P$ is measured to obtain the pull-out curve $P(w)$\n", "\n", - "**Silly question:** What is the pull-out curve good for?" + "**Simple and trivial question:** What is the purpose of measuring the pull-out curve?" ] }, { @@ -815,8 +815,7 @@ } ], "source": [ - "var_subs = {}\n", - "[var_subs.update(var) for var in [C_subs,D_subs,a_subs]]\n", + "var_subs = {**C_subs,**D_subs,**a_subs}\n", "var_subs" ] }, @@ -1116,11 +1115,48 @@ "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} \\frac{P^{2}}{2 A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p} + \\frac{P x}{A_\\mathrm{f} E_\\mathrm{f}} + \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{f} E_\\mathrm{f}} & \\text{for}\\: x > - \\frac{P}{\\bar{\\tau} p} \\\\0 & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ 2 \n", + "⎪ P Pâ‹…x \n", + "⎪──────────────────────────────────────── + ───────────────────────── + ──────\n", + "⎨2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…p A_\\mathrm{f}â‹…E_\\mathrm{f} 2â‹…A_\\m\n", + "⎪ \n", + "⎪ 0 \n", + "⎩ \n", + "\n", + " 2 \n", + "\\bar{\\tau}â‹…pâ‹…x -P \n", + "───────────────────── for x > ────────────\n", + "athrm{f}â‹…E_\\mathrm{f} \\bar{\\tau}â‹…p\n", + " \n", + " otherwise \n", + " " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "u_fa_x = sp.Piecewise((u_f_x, x > var_subs[a]),\n", " (0, x <= var_subs[a]))\n", - "u_fa_x\n", + "u_fa_x" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ "get_u_fa_x = sp.lambdify((x, P), u_fa_x.subs(data_f))" ] }, @@ -1137,7 +1173,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": { "slideshow": { "slide_type": "slide" @@ -1200,7 +1236,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": { "slideshow": { "slide_type": "fragment" @@ -1220,7 +1256,7 @@ "⎩ 0 otherwise " ] }, - "execution_count": 20, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -1246,7 +1282,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": { "slideshow": { "slide_type": "fragment" @@ -1272,7 +1308,7 @@ "erwise ⎠" ] }, - "execution_count": 21, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -1379,9 +1415,7 @@ "cell_type": "code", "execution_count": 29, "metadata": { - "slideshow": { - "slide_type": "slide" - } + "tags": [] }, "outputs": [ { @@ -1392,7 +1426,7 @@ "version_minor": 0 }, "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + "VBox(children=(HBox(children=(VBox(children=(Tree(layout=Layout(align_items='stretch', border='solid 1px black…" ] }, "metadata": {}, @@ -1400,13 +1434,9 @@ } ], "source": [ - "fig, (ax_eps, ax_sig, ax_tau) = plt.subplots(1,3, figsize=(10,3), tight_layout=True)\n", - "poui.plot_filled_var(ax_eps, x_range, get_eps_f_x(x_range,1 ), \n", - " color='blue',xlabel='x [mm]', ylabel=r'$\\varepsilon$ [-]')\n", - "poui.plot_filled_var(ax_sig, x_range, get_sig_f_x(x_range,1),\n", - " color='green', xlabel='x [mm]', ylabel=r'$\\sigma$ [MPa]')\n", - "poui.plot_filled_var(ax_tau, x_range, get_tau_x(x_range,1),\n", - " color='red', xlabel='x [mm]', ylabel=r'$\\tau$ [MPa]');" + "from pull_out import PullOutAModel, CB_ELF_RLM_Symb\n", + "po = PullOutAModel(symb_class=CB_ELF_RLM_Symb)\n", + "po.interact()" ] }, { @@ -1414,7 +1444,8 @@ "metadata": { "slideshow": { "slide_type": "slide" - } + }, + "tags": [] }, "source": [ "## Pull-out curve\n", @@ -1642,8 +1673,9 @@ "source": [ "fig, ax_pull = plt.subplots(1,1, figsize=(7,4), tight_layout=True)\n", "w_range = np.linspace(0,2,50)\n", - "poui.plot_filled_var(ax_pull, w_range, get_Pw_pull(w_range), \n", - " color='blue', xlabel='$w$ [mm]', ylabel=r'$P$ [N]');" + "ax_pull.plot(w_range, get_Pw_pull(w_range), \n", + " color='blue')\n", + "ax_pull.set_xlabel(r'$w$ [mm]'); ax_pull.set_ylabel(r'$P$ [N]');" ] }, { diff --git a/bmcs_course/2_2_PO_LF_LM_EL.ipynb b/pull_out/2_2_PO_ELF_ELM.ipynb similarity index 82% rename from bmcs_course/2_2_PO_LF_LM_EL.ipynb rename to pull_out/2_2_PO_ELF_ELM.ipynb index 981ebe2fdf007c70c8b6dfe1b15ce86acf0cc0f5..1251f71c4ca15de7c32f2a623edfdf6428e4be63 100644 --- a/bmcs_course/2_2_PO_LF_LM_EL.ipynb +++ b/pull_out/2_2_PO_ELF_ELM.ipynb @@ -8,9 +8,7 @@ } }, "source": [ - "# Example 2.2: Pull-out from elastic matrix - PO-LF-LM-EL\n", - "\n", - "@author: rosoba" + "# Example 2.2: Pull-out from elastic matrix - PO-ELF-ELM\n" ] }, { @@ -208,13 +206,11 @@ }, "outputs": [], "source": [ - "%matplotlib notebook\n", + "%matplotlib widget\n", "import sympy as sp # symbolic algebra package\n", "import numpy as np # numerical package\n", "import matplotlib.pyplot as plt # plotting package\n", - "sp.init_printing() # enable nice formating of the derived expressions\n", - "import ipywidgets as ipw\n", - "import bmcs_ipw.PO_constant_bond as poui" + "sp.init_printing() # enable nice formating of the derived expressions" ] }, { @@ -297,7 +293,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left( \\frac{\\bar{\\tau} p}{A_\\mathrm{f}}, \\ - \\frac{\\bar{\\tau} p}{A_\\mathrm{m}}\\right)$" ], @@ -355,7 +351,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMkAAAAyCAYAAAD2k//fAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAKg0lEQVR4Ae2d7ZEUNxCG964uAHyOwJABHxFwzsBABOAMoPjHPxfOAByBPzIwjsBABpAB+DLAzyPUU7O787ns3s3Mqqu0mpFaWumVWt1qae9Ovnz5suqjFy9e/AnPK+I3fbwlvyAwBwSYyzdop/P6Ac+XXW0+7co0jwqs6G/iIiB9YJX82SCQBeMZDf6HZwWmlTqFJAvIR+LXrTWUjILATBFgXr+n6b8Q3nV14aTN3KKCJxR8Rnyrq4KSVxCYOwLM8Vf04Zz4QVNfGoUE5pswfyDc4Vlpmz3RD4X+x5aOfCb/55a8krxHBKY6DrTL+f6SeMtqahMSC/xFAW22QgWBxSPAXP+JTv5G+IHntY381p4EBldcVU8RkMVPjdLBQID5/hfPHwkvIy3is3ioxTJtqZxa/uweAeApjX5OaPNiuPf61Y4RXxBplt0maIJZxjTpHuExPGmlITbPRUVKecSaqo9MgP6FR/ALgQBYTH0cVAx6cjW7FJhEa5okd8KBd8e/CLLDdOR7gpuyOwRd2cZVgCcJCGnSj7wLloLwN+Gm+ZlH4HSJBwlm5P1Lour6IpcXx61VKQoeWwwmkx8H2ujccA++ZkVtahJXTvciTpDZE/1QG6yt5qStCI3OCNLVAk52yef3pNU1gXs1V0PrUINsCoF2bQB83pBP0vERWM1pHFQQf9JmrYskB5WQ5I44MRrdYHMcWvqkMFQCkfvYtQDo5QqhcGA3NWpyh8OjlnhLXKlk3jXRFKqURrwYHOnXNxFYzGkc4tDcRTBZGJWQkKDNfpk79E2gTLjwI9qmCdVI9D0JEPFFZgjAgl/BESP5KuHLmZYJLZKTStSCwGTHwbElOO5aVUlITmudcJA3J0UtexGPmkNvB/REreBNg0rr8Kz2EKM/NsuTF0IVWmglfy6zyV7eV6upj4P7TveiWlarMz94cYV0ErSusvLNmXKH7fimBmjqVtOCofpVaLRVxUog3bjHqrPiuW5+Pee9aBZAqhOYOPGmPg4uhJ7COw9ehyZR/UlL1iSuXvVJnDq8+cEgKgAuGmkVMZ803zVH7/OsoAiewT2M/J8JpicizbxwAOTUEmUEJj8OeYwdz3RD4yw3PGzt3kk046H2HMPVoY+c4JJaInmyeHbD7hWdwMfFxLOkxEv6zwT969bvZbm6A4DXQjUE5jIOmuXKxSpdS2Fw/+NZb02SHDPGEOVcTTVHLF+tqDw7cV4TXJWdSJM3P2hjUrPEs7jYSTsVZHEP4VaAYwwcl3OCwq2ZGELO67TpuseB79e9/5T45IwPgTTsBCDl4xRVd+naD1jI+4ngl6liN88USJokOdlmY3aCrx4YDzT99Zwu6K2FjjQXsA/Ejk/lXCBtynTd4+CZ2Aq8Ls6Iw/ZOiUNRo7CClbwAxFuXwqwHHg8mHTS/Y/TEo6xAucm7kmsyfI99sq2zcmDQ7mQW0O7fCVskfgRvGHgjYPJCMpFx0NySbp/yEUIyVpP8Q9m7BG31S+I2UpD0PY+t3/qctIaDE+1T29knSc+Uq+9cyMVE6lqIHAfd0pPu14TGIebrLTWJNqsUiV/fOj7piKaTq9eaedVSRM/P1tlCC++1JdMnV9jJr7ItACUTiz50ubdjfCe915rKONAOF3bhPleTxErdpQ1kTkRBNY/7EA/bhkwqB2eIVynVXz52QkBN0qVFrDQshoh3+qIjLHRDTfJ97rgr/hDyuF4aNPGVSHi7VrhUWfnYDQHwjf1I3z4q+EKj7PaFx1XKubumSYZ2X9td6lu5vnKVz0MjoBaR+sbD8wmpT5i+cpVPEVBxJE2S9iR5xR8CTeKHcdCKRL1uFjtNOfLT2UTDl0fbQnvVWXR3dt60Jb//j4rVazzQM+04OVDVVjtkPyKfi5t2dqswkXcDHp0XxkPJfWmnpUD+nMfhXHNrLCXpouOdE99K4XFgFKY+EJuEIMrrAvYsYDRR7pCTc3R7DlSgdz8CDuHR6jzMhc8x1VW8V5r7OLhxd9Kv6MjQ1SOtRPAP2QDeg69TQPY6GkdWGdjGPqPVhMrjqjfyDc9Xct60sGH4rJCERggzqq+PcXIee5NGfgZEPk/hCzUgkCdvQ86opM79SP4OzSc9kVsn8aO+6TiZlYlLheRT7v8gTQLYmk/uBbwAGGo8V/HVxCI9CQhxCGCVXx4qrf0f+HT+5cABWKXb29Szpa1JU4Cs3zt5ezehBrRtKSwf3ZOMnsiA7nWT7yiroKjqow5Nt/T7YOLZE33TpLQ/e51k1OcG2sVGp0avY2MTSMrEdaBkbuX3YIvFzvr9oxbGsyLafBDcdwBBLD8rJGlPQjzU3ErfRUcUjMYNd2JYxoeTMU3EfXcH/G4ROk3Wtu+kXKdXr63cjNIPhvtQDMA4FptkbsVKo/ROjRREw5VTnsAHEZBaZ3RsXEv/am2Y1OMV4T6kzyEPn05pVNizezUphrSij4e2XadHxo1uunZDOwKwviYPzqdOV6rYDw4udwSMB8V9BH4x5h9PcyG1yd0RFSyalQms48EQWtYJvW96yPfsdP6z74ZMpb4rwn1od0NI3oeQqE0icWgli+RjoMThE7ECEiv93rGh/nJmUZtBV4V77Sv7HtM1HudBCIkequRp6St5BPnV3wWmr6FJRjk1jgCjQ3RxarjrQk8H5yEkb3OvzThaYtWw//XT6xCSSf8GY+4DNjXcs1bTxE5zQRfwikQvC+pl8XBqyG9ELLZE8rJe3a0tJlKjuQWvQuVGU0D9DXnZYwDEDjQK9x3qH1sklEWShSQkuQZ/PfhwbG1L4WeC+0MyL1PWfycTZpZC0ET+NZgTgkLUxtNUrqRlBHbE/dD4ufB5lSdZEnUh8QDnCRkXhNbr1Idu3XXUT3/TBCcWnDUizWveW5okl7mUmecwy9bKlpduBDKG4jcY9+4a95brIW91Y7oSEhrqmYSD7WnuUQkJ/fV6Td3MIqkiMQmNkhLh9ZBRfp0duoo1tYq3KqEz6mMs7i5WLuYuas5T3w16oh4TwhJS6F4xJqPnMWXiPmI1nqdUVicHXG1yNKYDfdX+7LpoqLZYw4MyuszTSsOzXpkKUNILDUBgR9xjEU/CQR3eIXQf6Lt37PzTSY7F74S62czrYHJcrddxT7QmJPkLzHye8xcd0d8K3I6OprttmbeDrWQNRWBPuNe1hGPkwhW0pf0joyumXS6YzonK1JJ/TUhMgGTwzzuurZ4pZyEf9o2ge+8Dwed3m/3l3b8+KY/ASa5UatpCOyIgxhnTb8adeqqVnub4HAe/O7YuFQstopBVVO1JIoUvV2Vpb6tN1iQqeOYeZ4C3Nov1fsGj+++Y3eF1OPbyPGXcaZuLocGfgKxRkyaRwU3QEwqqegoVBKaOwD6sHh0CntfUNVTqd/qr8k0IwOy5wSPiyd0ObmrvVaaBiYPyG0FXoRtFvTRrKpq0QntGYBN33v1PBXqjNIPFX8vH2E27WiGsIh7biToUkBWxHrMtahUSOXNhD1UWaXZtoVESjg4B5rYLnX/7uVUZtJlbCSwKKlm3icN3fHQglg4vFwHmtedd7r3vd/WyU0gsSEVucLXVVF+FCgKLQID5HCZz/Iu/1n79D151Xh2IEAFTAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left( C + \\frac{\\bar{\\tau} p x}{A_\\mathrm{f}}, \\ D - \\frac{\\bar{\\tau} p x}{A_\\mathrm{m}}\\right)$" ], @@ -403,7 +399,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left( \\frac{C + \\frac{\\bar{\\tau} p x}{A_\\mathrm{f}}}{E_\\mathrm{f}}, \\ \\frac{D - \\frac{\\bar{\\tau} p x}{A_\\mathrm{m}}}{E_\\mathrm{m}}\\right)$" ], @@ -467,7 +463,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left( \\frac{C x}{E_\\mathrm{f}} + E + \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{f} E_\\mathrm{f}}, \\ \\frac{D x}{E_\\mathrm{m}} + F - \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{m} E_\\mathrm{m}}\\right)$" ], @@ -542,7 +538,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left( \\left\\{ C : \\frac{P}{A_\\mathrm{f}}\\right\\}, \\ \\left\\{ D : - \\frac{P}{A_\\mathrm{m}}\\right\\}\\right)$" ], @@ -613,7 +609,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAAAVCAYAAAAeql2xAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADHUlEQVRYCdWY7VGUMRCAhbkCUDs4OvCjAqED0QqUDmT4d/8Y6ACtgIEO0AoEOpAOZOjgfJ74JvMmb+4u3h0z3s6E3WQ3m/3KvuG2ptPpsxImk8kOa29ch/5e8jdhjt1j7HzFuIO+L23eLhcQ+sLaD4bO35T8TZl3zurwKfQ1Q38SbPUzDvM9nEvGc+jHJFUQ8AzOPiNUBdgA9eU9JPKOkP/KfK2AztNO4W/wLkMHB5lVhvVr0CP4wLkw+ovS37dQ9wj0nUjMSMA/gz4De08sJYMwANZvB4trWOj0noCvVAc20LfgfUbN+Tv4JjXBoNQTZwHBAd4fYV4POIdfMyRsXOYP535m3w44OK0OaBPl3POaYGnH0b7XnWAZzYIHGGt1HH2Wqxks4ScLewTB7C+EVRwP5c1BWcaZj/unMl+34wbcgJYQr2dMSMnP5qs47gFZ5HHS8k8HM0/lmJ1aTJD7xVhYpsi0ZPNFob46LR1XcYxcdYOLGDC436yZ6W+MrAKUnwedM+6NX4F54tGpmo2xCmrBsfPHvUF/crwz3MaxMPLIfAy7eSCw75LhPXeMof+ptJHXCT+frzudq6KXFQVWng0xdfYRE7N3zBD7OWjJWCznA+RD9MFGOn5bIdsh6mjYEbNaE40ZNbsZoN9PtN/6c7C+nmxDeE8/MXTYR0CtVGBlYJD8fgenexwfP08GvfNqNsa1WRV3iGEGxwfV1UgrO4WHYMvVe5peOPL7gEzMdlYZnY5srb9vjbRn2BNKiBkf2IBtlrivzV3oEJh0xzstZt9szoP4SruYJ/SEPKuq1gjtEbUq1BRfpD5ZUzWUjiu0CELGUWKQVgb02HSmjKbnLXK++x/AqVFBW+YfGF7ZWZD1h1DqsyTjeqfYK2CJhYpgLd5n70yKZNzTitkbM3HTugc5s3vM3ljyZvQd8+ZktDpuE5t57+GtBBhsx20Gg4XwUfOGiuAypV5Rs3lLpeODF87muVS12B5glSQoHQ8/GFBKqXEkyQ0l8EWnbXzZizT7BUbfELRheH/8Ll4wb/pHA9n/CrDbJuzTWn8GfvwBkVwOztCIwJ4AAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAAAVCAYAAAAeql2xAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADHUlEQVRYCdWY/VFUMRDAgaEA0A7ODvyoQOhAtAKlAxn/4z8GOlAqYKADtAKBDqQDGTo4f79HknnJe5eLd6cztzO5/cwmm93sC2xOp9ONEo6Pj3eQvVYO/b3UrwPPvifs8yXjDvq+3PNWKcDoM7IfQX5T6teFD8Ea8Cn0NcNkJtjsZxzlOzSXjF3ox2RVEOg8nH1GVxVgD6hvnyoG+RH238ArBXyeBoe/wS8YBjjIrDbIr0GP4AN5YfsJpd83UPcY9INIykigP4M+A3tPLCUPYQDIbwfCFQiC3xPwle7AHvQteJ8xFvwdepOaYFDqSTOHYAHvj1DrAV/Rj22km7jID+t+Yt4OuAtaH9AmSt71mmDhwPG+F1awjGbBA4qVBo4/y9UMlvATwR6HYPbnwjKBd+XNQlnG4WMldIvDrzpwD9wDLSGuExNS6jN+mcBdIDv5EHRseBvwqRyzVQsGu1+MuWWKTUs2nxXuR9kycB17X6rABmJWU7aRTZh0zkiyqpOgDME4Nx1YZV4MqrbHscOx88e5nfsUeNj4e6RzTx6bD91sHgjMu3TAe9cn0LHkgkkdYW8Qfj5f1S2btc9HLK08G2Lq7NswnrbfRPEBfEvG4j3SPp0+dMuhsUwOfR+5ZsCN3e1oFDNqdjPAv5/oXYTn4C/gky2FEowbho+NsVJBlYGl7ve7H7Tzah0+c7AI01tvbI9RNqviDNjkGuPVthuAsEkdgt249zS9cKAzwCZmO6sM5B5CUzPLHP4947oGUELMeLYvjdibJe5rM71It1T0wAMwmzWIr7SLmtE/1NlPxhqhPSKrwt4efJH6ZDU5HZSBR3kNdxnHSfYpq02o6fBj05kymp632PnufwCnRgVtmduYP1bWyvpDV+oV404VHHsFXKCrCGSevOCdmXWvniwqv8w1E863x7SC2fWPEjNpMxO/hW9ORmvglsjMe49uKWDD/nXVDNi7n8PmCSOGi5T6iJv1E5WBD1446xfS6I69olZJgjLwwQsnWa4pwbUw6MGLNPsPjLFhOAEdMfwuXsD/j28zS60WQhz2AeMZxPEHdh8QcOCEURUAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle \\left\\{ F : 0\\right\\}$" ], @@ -653,22 +649,28 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ - "$\\displaystyle \\left\\{ E : - \\frac{P a}{A_\\mathrm{m} E_\\mathrm{m}} - \\frac{\\bar{\\tau} a^{2} p}{2 A_\\mathrm{m} E_\\mathrm{m}} - \\frac{P a}{A_\\mathrm{f} E_\\mathrm{f}} - \\frac{\\bar{\\tau} a^{2} p}{2 A_\\mathrm{f} E_\\mathrm{f}}\\right\\}$" + "$\\displaystyle \\left\\{ E : \\frac{- 2 A_\\mathrm{f} E_\\mathrm{f} P a - A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} a^{2} p - 2 A_\\mathrm{m} E_\\mathrm{m} P a - A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} a^{2} p}{2 A_\\mathrm{f} A_\\mathrm{m} E_\\mathrm{f} E_\\mathrm{m}}\\right\\}$" ], "text/plain": [ - "⎧ 2 \n", - "⎪ Pâ‹…a \\bar{\\tau}â‹…a â‹…p Pâ‹…a\n", - "⎨E: - ───────────────────────── - ─────────────────────────── - ──────────────\n", - "⎪ A_\\mathrm{m}â‹…E_\\mathrm{m} 2â‹…A_\\mathrm{m}â‹…E_\\mathrm{m} A_\\mathrm{f}â‹…E\n", + "⎧ 2\n", + "⎪ -2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…Pâ‹…a - A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…a \n", + "⎨E: ──────────────────────────────────────────────────────────────────────────\n", + "⎪ 2â‹…A_\\mathrm{f}â‹…A_\\mathrm\n", "⎩ \n", "\n", - " 2 ⎫\n", - " \\bar{\\tau}â‹…a â‹…p ⎪\n", - "─────────── - ───────────────────────────⎬\n", - "_\\mathrm{f} 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}⎪\n", - " âŽ" + " 2\n", + "â‹…p - 2â‹…A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…Pâ‹…a - A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\tau}â‹…a \n", + "──────────────────────────────────────────────────────────────────────────────\n", + "{m}â‹…E_\\mathrm{f}â‹…E_\\mathrm{m} \n", + " \n", + "\n", + " ⎫\n", + "â‹…p⎪\n", + "──⎬\n", + " ⎪\n", + " âŽ" ] }, "execution_count": 9, @@ -704,7 +706,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left\\{- \\frac{- \\frac{P}{A_\\mathrm{m}} - \\frac{\\bar{\\tau} a p}{A_\\mathrm{m}}}{E_\\mathrm{m}} + \\frac{\\frac{P}{A_\\mathrm{f}} + \\frac{\\bar{\\tau} a p}{A_\\mathrm{f}}}{E_\\mathrm{f}}\\right\\}$" ], @@ -733,7 +735,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left\\{ a : - \\frac{P}{\\bar{\\tau} p}\\right\\}$" ], @@ -768,7 +770,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 21, "metadata": { "slideshow": { "slide_type": "fragment" @@ -777,38 +779,37 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ - "$\\displaystyle \\left\\{ C : \\frac{P}{A_\\mathrm{f}}, \\ D : - \\frac{P}{A_\\mathrm{m}}, \\ E : - \\frac{P a}{A_\\mathrm{m} E_\\mathrm{m}} - \\frac{\\bar{\\tau} a^{2} p}{2 A_\\mathrm{m} E_\\mathrm{m}} - \\frac{P a}{A_\\mathrm{f} E_\\mathrm{f}} - \\frac{\\bar{\\tau} a^{2} p}{2 A_\\mathrm{f} E_\\mathrm{f}}, \\ F : 0, \\ a : - \\frac{P}{\\bar{\\tau} p}\\right\\}$" + "$\\displaystyle \\left\\{ C : \\frac{P}{A_\\mathrm{f}}, \\ D : - \\frac{P}{A_\\mathrm{m}}, \\ E : \\frac{- 2 A_\\mathrm{f} E_\\mathrm{f} P a - A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} a^{2} p - 2 A_\\mathrm{m} E_\\mathrm{m} P a - A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} a^{2} p}{2 A_\\mathrm{f} A_\\mathrm{m} E_\\mathrm{f} E_\\mathrm{m}}, \\ F : 0, \\ a : - \\frac{P}{\\bar{\\tau} p}\\right\\}$" ], "text/plain": [ "⎧ \n", - "⎪ P -P Pâ‹…a \\bar\n", - "⎨C: ────────────, D: ────────────, E: - ───────────────────────── - ──────────\n", - "⎪ A_\\mathrm{f} A_\\mathrm{m} A_\\mathrm{m}â‹…E_\\mathrm{m} 2â‹…A_\\mathr\n", + "⎪ P -P -2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…Pâ‹…a - A_\\ma\n", + "⎨C: ────────────, D: ────────────, E: ────────────────────────────────────────\n", + "⎪ A_\\mathrm{f} A_\\mathrm{m} \n", "⎩ \n", "\n", - " 2 2 \n", - "{\\tau}â‹…a â‹…p Pâ‹…a \\bar{\\tau}â‹…a â‹…p \n", - "───────────────── - ───────────────────────── - ───────────────────────────, F\n", - "m{m}â‹…E_\\mathrm{m} A_\\mathrm{f}â‹…E_\\mathrm{f} 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f} \n", + " 2 \n", + "thrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…a â‹…p - 2â‹…A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…Pâ‹…a - A_\\ma\n", + "──────────────────────────────────────────────────────────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…A_\\mathrm{m}â‹…E_\\mathrm{f}â‹…E_\\mathrm{m} \n", " \n", "\n", - " ⎫\n", - " -P ⎪\n", - ": 0, a: ────────────⎬\n", - " \\bar{\\tau}â‹…p⎪\n", - " âŽ" + " 2 ⎫\n", + "thrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\tau}â‹…a â‹…p -P ⎪\n", + "────────────────────────────────────, F: 0, a: ────────────⎬\n", + " \\bar{\\tau}â‹…p⎪\n", + " âŽ" ] }, - "execution_count": 12, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "var_subs = {}\n", - "[var_subs.update(var) for var in [C_subs,D_subs,F_subs,E_subs,a_subs]]\n", + "var_subs = {**C_subs,**D_subs,**F_subs,**E_subs,**a_subs}\n", "var_subs" ] }, @@ -834,25 +835,31 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ - "$\\displaystyle \\left( \\frac{P^{2}}{2 A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} p} + \\frac{P^{2}}{2 A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p} + \\frac{P x}{A_\\mathrm{f} E_\\mathrm{f}} + \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{f} E_\\mathrm{f}}, \\ - \\frac{P x}{A_\\mathrm{m} E_\\mathrm{m}} - \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{m} E_\\mathrm{m}}\\right)$" + "$\\displaystyle \\left( \\frac{P x}{A_\\mathrm{f} E_\\mathrm{f}} + \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{f} E_\\mathrm{f}} + \\frac{\\frac{A_\\mathrm{f} E_\\mathrm{f} P^{2}}{\\bar{\\tau} p} + \\frac{A_\\mathrm{m} E_\\mathrm{m} P^{2}}{\\bar{\\tau} p}}{2 A_\\mathrm{f} A_\\mathrm{m} E_\\mathrm{f} E_\\mathrm{m}}, \\ - \\frac{P x}{A_\\mathrm{m} E_\\mathrm{m}} - \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{m} E_\\mathrm{m}}\\right)$" ], "text/plain": [ - "⎛ 2 2 \n", - "⎜ P P \n", - "⎜──────────────────────────────────────── + ──────────────────────────────────\n", - "âŽ2â‹…A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\tau}â‹…p 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\\n", - "\n", - " 2 \n", - " Pâ‹…x \\bar{\\tau}â‹…pâ‹…x \n", - "────── + ───────────────────────── + ───────────────────────────, - ──────────\n", - "tau}â‹…p A_\\mathrm{f}â‹…E_\\mathrm{f} 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f} A_\\mathrm{\n", - "\n", - " 2 ⎞\n", - " Pâ‹…x \\bar{\\tau}â‹…pâ‹…x ⎟\n", - "─────────────── - ───────────────────────────⎟\n", - "m}â‹…E_\\mathrm{m} 2â‹…A_\\mathrm{m}â‹…E_\\mathrm{m}⎠" + "⎛ \n", + "⎜ A_\\mathrm{f}â‹…E_\\mat\n", + "⎜ 2 ───────────────────\n", + "⎜ Pâ‹…x \\bar{\\tau}â‹…pâ‹…x \\bar{\\tau}â‹…\n", + "⎜───────────────────────── + ─────────────────────────── + ───────────────────\n", + "âŽA_\\mathrm{f}â‹…E_\\mathrm{f} 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f} 2â‹…A_\\mathrm{f}â‹…A\n", + "\n", + " 2 2 \n", + "hrm{f}â‹…P A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P \n", + "───────── + ──────────────────────────── \n", + "p \\bar{\\tau}â‹…p Pâ‹…x \n", + "────────────────────────────────────────, - ───────────────────────── - ──────\n", + "_\\mathrm{m}â‹…E_\\mathrm{f}â‹…E_\\mathrm{m} A_\\mathrm{m}â‹…E_\\mathrm{m} 2â‹…A_\\m\n", + "\n", + " ⎞\n", + " ⎟\n", + " 2 ⎟\n", + "\\bar{\\tau}â‹…pâ‹…x ⎟\n", + "─────────────────────⎟\n", + "athrm{m}â‹…E_\\mathrm{m}⎠" ] }, "execution_count": 13, @@ -891,7 +898,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left( P^{2} + P x + \\frac{x^{2}}{2}, \\ - P x - \\frac{x^{2}}{2}\\right)$" ], @@ -1009,7 +1016,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": { "slideshow": { "slide_type": "slide" @@ -1018,788 +1025,13 @@ "outputs": [ { "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('<div/>');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " if (mpl.ratio != 1) {\n", - " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", - " }\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " fig.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", - " 'ui-helper-clearfix\"/>');\n", - " var titletext = $(\n", - " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", - " 'text-align: center; padding: 3px;\"/>');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('<div/>');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('<canvas/>');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var backingStore = this.context.backingStorePixelRatio ||\n", - "\tthis.context.webkitBackingStorePixelRatio ||\n", - "\tthis.context.mozBackingStorePixelRatio ||\n", - "\tthis.context.msBackingStorePixelRatio ||\n", - "\tthis.context.oBackingStorePixelRatio ||\n", - "\tthis.context.backingStorePixelRatio || 1;\n", - "\n", - " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband = $('<canvas/>');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width * mpl.ratio);\n", - " canvas.attr('height', height * mpl.ratio);\n", - " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('<div/>');\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('<button/>');\n", - " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", - " 'ui-button-icon-only');\n", - " button.attr('role', 'button');\n", - " button.attr('aria-disabled', 'false');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - "\n", - " var icon_img = $('<span/>');\n", - " icon_img.addClass('ui-button-icon-primary ui-icon');\n", - " icon_img.addClass(image);\n", - " icon_img.addClass('ui-corner-all');\n", - "\n", - " var tooltip_span = $('<span/>');\n", - " tooltip_span.addClass('ui-button-text');\n", - " tooltip_span.html(tooltip);\n", - "\n", - " button.append(icon_img);\n", - " button.append(tooltip_span);\n", - "\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " var fmt_picker_span = $('<span/>');\n", - "\n", - " var fmt_picker = $('<select/>');\n", - " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", - " fmt_picker_span.append(fmt_picker);\n", - " nav_element.append(fmt_picker_span);\n", - " this.format_dropdown = fmt_picker[0];\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = $(\n", - " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", - " fmt_picker.append(option);\n", - " }\n", - "\n", - " // Add hover states to the ui-buttons\n", - " $( \".ui-button\" ).hover(\n", - " function() { $(this).addClass(\"ui-state-hover\");},\n", - " function() { $(this).removeClass(\"ui-state-hover\");}\n", - " );\n", - "\n", - " var status_bar = $('<span class=\"mpl-message\"/>');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "}\n", - "\n", - "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", - "}\n", - "\n", - "mpl.figure.prototype.send_message = function(type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "}\n", - "\n", - "mpl.figure.prototype.send_draw_message = function() {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", - " }\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1]);\n", - " fig.send_message(\"refresh\", {});\n", - " };\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", - " var x0 = msg['x0'] / mpl.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", - " var x1 = msg['x1'] / mpl.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch(cursor)\n", - " {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_message = function(fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "}\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function() {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message(\"ack\", {});\n", - "}\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function(fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " evt.data.type = \"image/png\";\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src);\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " evt.data);\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig[\"handle_\" + msg_type];\n", - " } catch (e) {\n", - " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", - " }\n", - " }\n", - " };\n", - "}\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function(e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e)\n", - " e = window.event;\n", - " if (e.target)\n", - " targ = e.target;\n", - " else if (e.srcElement)\n", - " targ = e.srcElement;\n", - " if (targ.nodeType == 3) // defeat Safari bug\n", - " targ = targ.parentNode;\n", - "\n", - " // jQuery normalizes the pageX and pageY\n", - " // pageX,Y are the mouse positions relative to the document\n", - " // offset() returns the position of the element relative to the document\n", - " var x = e.pageX - $(targ).offset().left;\n", - " var y = e.pageY - $(targ).offset().top;\n", - "\n", - " return {\"x\": x, \"y\": y};\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys (original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object')\n", - " obj[key] = original[key]\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function(event, name) {\n", - " var canvas_pos = mpl.findpos(event)\n", - "\n", - " if (name === 'button_press')\n", - " {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * mpl.ratio;\n", - " var y = canvas_pos.y * mpl.ratio;\n", - "\n", - " this.send_message(name, {x: x, y: y, button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event)});\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "}\n", - "\n", - "mpl.figure.prototype.key_event = function(event, name) {\n", - "\n", - " // Prevent repeat events\n", - " if (name == 'key_press')\n", - " {\n", - " if (event.which === this._key)\n", - " return;\n", - " else\n", - " this._key = event.which;\n", - " }\n", - " if (name == 'key_release')\n", - " this._key = null;\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.which != 17)\n", - " value += \"ctrl+\";\n", - " if (event.altKey && event.which != 18)\n", - " value += \"alt+\";\n", - " if (event.shiftKey && event.which != 16)\n", - " value += \"shift+\";\n", - "\n", - " value += 'k';\n", - " value += event.which.toString();\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, {key: value,\n", - " guiEvent: simpleKeys(event)});\n", - " return false;\n", - "}\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", - " if (name == 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message(\"toolbar_button\", {name: name});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.close = function() {\n", - " comm.close()\n", - " };\n", - " ws.send = function(m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function(msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(msg['content']['data'])\n", - " });\n", - " return ws;\n", - "}\n", - "\n", - "mpl.mpl_figure_comm = function(comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = $(\"#\" + id);\n", - " var ws_proxy = comm_websocket_adapter(comm)\n", - "\n", - " function ondownload(figure, format) {\n", - " window.open(figure.imageObj.src);\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy,\n", - " ondownload,\n", - " element.get(0));\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element.get(0);\n", - " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", - " if (!fig.cell_info) {\n", - " console.error(\"Failed to find cell for figure\", id, fig);\n", - " return;\n", - " }\n", - "\n", - " var output_index = fig.cell_info[2]\n", - " var cell = fig.cell_info[0];\n", - "\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function(fig, msg) {\n", - " var width = fig.canvas.width/mpl.ratio\n", - " fig.root.unbind('remove')\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable()\n", - " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", - " fig.close_ws(fig, msg);\n", - "}\n", - "\n", - "mpl.figure.prototype.close_ws = function(fig, msg){\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "}\n", - "\n", - "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width/mpl.ratio\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", - "}\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function() {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message(\"ack\", {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () { fig.push_to_output() }, 1000);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('<div/>');\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items){\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) { continue; };\n", - "\n", - " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", - " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i<ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code'){\n", - " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "<IPython.core.display.Javascript object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "<img src=\"data:image/png;base64,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UHR0tBobG522++MC1VadWaDtfM5IHXfeSNKVV16p22+/3WmbXc+b9swlkNeZSZMmKTo62ulJWpJWr14tY4wqKio8/pmBstZ4O5tAXWs645yR7LPOePP4A2EtoUD7sS+++EI9e/ZUZmZmq/vGxsZq/PjxLtuLiopkjNHWrVslSVu2bJExRps2bXLZd9y4cYqLi/P+jneSjihCBw8elDFGkyZNcvlvqampioiIUO/evRUcHKxBgwbpd7/7nc6ePevFvb44vCnQ/fr1U1BQkHr37q3MzEzt3bvXaT87nzNSxxXozz77TEFBQfrlL3/ptN2u50175hLI60xKSopGjBjhsr35m9KWLFni0c8LpLXG29kE6lrT0eeMZK91xpvHHwhrCQXaj/30pz9VSEhIm95IGBoaqgcffNBle2VlpdOfWHJzc2WMUVVVlcu+DzzwgMLCwry/452kI4rQU0895fbxP/3001q0aJHKysq0adMmTZkyRSEhIbrxxhv11VdfeXHPO197ZvPuu+/q6aef1saNG/Xee+/ptddeU//+/dW9e3d99NFH1n52PmekjjlvHA6HbrrpJl1yySU6cuSI03+z63nTnrkE8jozePDgFt+Qdfz4cRljNHv2bI9+XiCtNd7OJlDXmo4+Z+y2znjz+ANhLaFAd4Lt27df8N3Y38zu3btb/BlTp06VMUYLFixo022GhobqoYcectnefDI2vyu2+WSsrq522feBBx5QeHi4B4/UM97Oxdsi5HA4FBsb69GfwV5++WUZY7R+/fp23WZb+Xo2zerr6xUdHa2MjAxrmy/PGcn3szl//rwmTJig4OBgFRQUtOmYi3He+GIudlhnpPbNZvDgwUpPT3f5Wc1loKU/IbsTaGtNR86mmb+tNb6ei7+uMxfizeO3y1pyIRToTnD8+HEtW7asTfn8889djp8+fbqMMZo1a1abb9MOfw7xdi7eFqF33nlHxhjNmzevzcecPHlSxhg9+eST7brNtvL1bL4pPT1dl112mfW/ff0nNF/O5vz585o4caKCgoK0atWqNh93Mc4bX8zFDuuM1L7ZdOSf4wNtremMlypI/rXW+HIu/rzOXAgv4YBfaS7P06dP9+i4tLQ0JSYmumzPzs6WMUbHjh2T9O8X5M+ZM8dl3yFDhvjdmzS+yduSmJGRobCwMP31r39t8zHNC9RvfvObdt3m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\" width=\"600\">" - ], + "application/vnd.jupyter.widget-view+json": { + "model_id": "4b412cac4b20455f8c8d04c32293b3a5", + "version_major": 2, + "version_minor": 0 + }, "text/plain": [ - "<IPython.core.display.HTML object>" + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, @@ -1922,7 +1154,6 @@ "cell_type": "code", "execution_count": 20, "metadata": { - "scrolled": false, "slideshow": { "slide_type": "slide" } @@ -2963,7 +2194,6 @@ "cell_type": "code", "execution_count": 26, "metadata": { - "scrolled": false, "slideshow": { "slide_type": "slide" } @@ -4298,7 +3528,6 @@ "execution_count": 40, "metadata": { "hide_input": false, - "scrolled": false, "slideshow": { "slide_type": "slide" } @@ -5971,7 +5200,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.9.1" }, "toc": { "base_numbering": 1, @@ -5994,4 +5223,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/bmcs_course/2_3_PO_SF_M_RG.ipynb b/pull_out/2_3_PO_ESF_RM.ipynb similarity index 56% rename from bmcs_course/2_3_PO_SF_M_RG.ipynb rename to pull_out/2_3_PO_ESF_RM.ipynb index e34e90dd2c23e5180b1e6e2012e971b831636ed9..a1bc548e6f914ffdbe2f32203502ec65879aee43 100644 --- a/bmcs_course/2_3_PO_SF_M_RG.ipynb +++ b/pull_out/2_3_PO_ESF_RM.ipynb @@ -8,7 +8,7 @@ } }, "source": [ - "# Example 2.3: PO-SF-SM-RG\n", + "# Example 2.3: PO-ESF-RSM\n", "Pull-out of a short fiber from short matrix \n", "\n", "@author: rosoba" @@ -49,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "slideshow": { "slide_type": "fragment" @@ -57,12 +57,11 @@ }, "outputs": [], "source": [ - "%matplotlib notebook\n", + "%matplotlib widget\n", "import sympy as sp # symbolic algebra package\n", "import numpy as np # numerical package\n", "import matplotlib.pyplot as plt # plotting package\n", - "sp.init_printing() # enable nice formating of the derived expressions\n", - "import bmcs_ipw.PO_constant_bond as poui" + "sp.init_printing() # enable nice formating of the derived expressions" ] }, { @@ -94,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "slideshow": { "slide_type": "fragment" @@ -111,13 +110,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "slideshow": { "slide_type": "skip" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( w, \\ \\bar{\\tau}, \\ p, \\ L_{b}, \\ A_\\mathrm{f}, \\ A_\\mathrm{m}, \\ E_\\mathrm{f}, \\ E_\\mathrm{m}\\right)$" + ], + "text/plain": [ + "(w, \\bar{\\tau}, p, L_b, A_\\mathrm{f}, A_\\mathrm{m}, E_\\mathrm{f}, E_\\mathrm{m}\n", + ")" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "py_vars = ('w', 'tau', 'p', 'L_b', 'A_f', 'A_m', 'E_f', 'E_m')\n", "map_py2sp = {py_var : globals()[py_var] for py_var in py_vars}\n", @@ -139,13 +154,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{w}$" + ], + "text/plain": [ + " ______________ ______________ ____________ \n", + "√2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ \\bar{\\tau} ⋅√p⋅√w" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "Pw_pull = sp.sqrt(2*w*tau*E_f*A_f*p)\n", "Pw_pull" @@ -173,13 +204,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}}$" + ], + "text/plain": [ + " 2 \n", + " L_b â‹…\\bar{\\tau}â‹…p \n", + "───────────────────────────\n", + "2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "P_max = p * tau * L_b\n", "w_argmax = sp.solve(P_max - Pw_pull, w)[0]\n", @@ -200,7 +249,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "slideshow": { "slide_type": "fragment" @@ -232,7 +281,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "slideshow": { "slide_type": "fragment" @@ -269,13 +318,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFFUlEQVRoBe2Z/XEVNxDAz54U4EAFmA4CqSCkAz4qSOgAhr/s/xjoIKSCBDqADgJ0AB1A3IHz+220N7o7nd9798B+9nhn9CTtSqtd7cdJenunp6ddDcfHx0/o/0q5V/DvqE9K+4D6BuU95SljE1/Iu1HtjZVKsRBYbT9S30lc1uDe0r5LubWLiu2noHWNoD+V/l81vmr/QVur/V7hdqbZVArpatdrCXtYkDdbxIvGzSllTHVY7OOMgEGHNmfJmWnng55TSkuZICZQXFO6iWJO6cm880T8MF6sCC3aZNADeF3uMeU+5QH9Nz1xxxoTpZBPKwg/I/iL/5vx+4nft+CeVri+Cd5PwTPKbxetcEupjKcHvcRrNFDkJeXRGkO/+5BWTGmppbHy9btLvMYCA0ux0/l9aiaJMT/G63KCJ4s8bQQif8qYpPsJeA7OfkdtfKaL6xmeVvwGSjduP1M+0Ja39M+U1xTj2761xVDpPWtsqYynQZJg0gRg4uI3qXW7V9b0XaAHcPLxVJL05/QVMgC8ySZilLbj3Ez5fqWtAoJ9FZSusiarUIb+G0qsS+0GBYyViphgwJmWgi5TTxMKWUMK0jFGq9+redFWKHc/LdzRVrFDankKWvMufa0j3KbdCodaRt0+53fhfkxyN0SG+9F3h8107kILggF0hZwDz4Yturjbo0kq9rjIYZb9m/KQvrX9CYzWHqyTSmnSTSAsAuODEfOax3s6BzWitN2Qf0Z4N9VY+UJ5RZG/seZ8+xvB/kajy2AUcVF392HOB6ewYUFx9HUZ46D39WrMQFDw6UoG/Enpy0vXG1hB3g0YbN4ipWTKYmYbF31CMb4UXt9+Rj/d2GuLgjrGODIp3KHdElRFtViC8TpIWMxT+MiWtGMstWvr6o9oR6KbvU8x6NLCYkvtssbXSu2ydWrZrqSl9o6OjobPSbXKl7R9nf0ui+GuZExdK1W7H0cSrwv93aimXXQ7TukLhfBUHWe8hfM7NsXzoG8int0ET/b1udCz3iHlhjTG53sj3XlYpBTMPbxupZAiwcf7mjfnfLdvCg09lXfaSlgaUy7u1UPB3MnFwPw4WcMgrx8tXnnHatEmuI2VQgiP/pa8uusi20BaZ3DNaDBs3oAb47qNlCpW+UKtQt5Sha0sxfywFDwHlqKvywXQNs4G9EJqVpvGlO/nefVPSxnE24CxORCYNVS0ThgduNbjS3PdtZUqC9UukkqNH1GaC7WQhackPw9mU0F3VqnFfNdWikV8e0sr0e13chv3y3iKdz2Zsob8fMnKTRO9EaylFAvo3+5m/YaQbtdMFIx1txVa+if6rec2x3TQetei7btgZFZpAv3+1Yr2Sr4rlZJhYZy7GgsVnN+XOUvpqj9SVL6pOPhJPIET+s0r6/u4kpuyku9KpWD2Asa127logi6SFktcVwTxqesEpGUC0MJKEOo4jXHQatdToXhSW4evDPaDy8xPWfis850CD6zAHHc/HiJpuyEK1YK0/CDz1QOZqxfkW+C6fLvZS2Jh+IFaF2oCNHfZHff9r99d2ir6L/VecyJIaH5MjdPmGPDyNSOaREJx6pV8Gd9N3K9MlFm4B30t9Qu1Vgmg7dlPl4wx1K/BvaPEPxgxqPEDXaH+pGiBiEVwmcpzhmM84FrnPyFJW6tuKaXw6RpNJghidhpkqObAEZJ58u7/RxqRv1n3zJj6ZqucM6MrqdRsoli6uVXcGHemYjNgn0TOg+9/mHDmORk+UQIAAAAASUVORK5CYII=\n", + "text/latex": [ + "$\\displaystyle \\frac{P_\\mathrm{down}}{A_\\mathrm{f} E_\\mathrm{f}}$" + ], + "text/plain": [ + " P_\\mathrm{down} \n", + "─────────────────────────\n", + "A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "sig_down = P_down / A_f\n", "eps_down = 1 / E_f * sig_down\n", @@ -284,13 +350,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle L_{b} + b - \\frac{P_\\mathrm{down} b}{2 A_\\mathrm{f} E_\\mathrm{f}}$" + ], + "text/plain": [ + " P_\\mathrm{down}â‹…b \n", + "L_b + b - ───────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "w_down = (L_b + b) - sp.Rational(1,2) * eps_down * b\n", "w_down" @@ -298,13 +381,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f}$" + ], + "text/plain": [ + " ______________ ______________ ________________________________________\n", + "- ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_bâ‹…\\bar{\n", + "\n", + "___________________________ \n", + "\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "Pw_down_pull, Pw_down_push = sp.solve(w_down.subs(b, -P_down / p / tau) -w, P_down)\n", "Pw_down_pull" @@ -312,13 +414,62 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: w \\leq 0 \\\\\\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{w} & \\text{for}\\: w \\leq \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\- \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f} & \\text{for}\\: L_{b} \\geq w \\\\0 & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ 0 \n", + "⎪ \n", + "⎪ \n", + "⎪ ______________ ______________ \n", + "⎪ √2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱\n", + "⎨ \n", + "⎪ \n", + "⎪ ______________ ______________ _______________________________________\n", + "⎪- ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_bâ‹…\\bar\n", + "⎪ \n", + "⎩ 0 \n", + "\n", + " for w ≤\n", + " \n", + " 2 \n", + "____________ L_b â‹…\\b\n", + " \\bar{\\tau} ⋅√p⋅√w for w ≤ ────────────\n", + " 2â‹…A_\\mathrm{\n", + " \n", + "____________________________ \n", + "{\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f} for L_b \n", + " \n", + " otherwi\n", + "\n", + " 0 \n", + " \n", + " \n", + "ar{\\tau}â‹…p \n", + "───────────────\n", + "f}â‹…E_\\mathrm{f}\n", + " \n", + " \n", + "≥ w \n", + " \n", + "se " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "Pw_short = sp.Piecewise((0, w <= 0),\n", " (Pw_up_pull, w <= w_argmax),\n", @@ -330,7 +481,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": { "slideshow": { "slide_type": "fragment" @@ -343,19 +494,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "74df2b6e7399463fa0aa57a1e9ca25d7", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "w_range = np.linspace(0,2,50)\n", "params = {w: w_range, A_f:1, E_f:1, A_m:1, E_m:4, tau:1, p:1, L_b:1}\n", "param_vals = tuple(params[map_py2sp[py_var]] for py_var in py_vars)\n", - "fix, ax = plt.subplots(1,1, figsize=(8,2))\n", - "poui.plot_filled_var(ax, w_range, get_Pw_short(*param_vals));" + "fix, ax = plt.subplots(1,1, figsize=(8,2))" ] }, { @@ -371,13 +536,62 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: w \\leq \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\L_{b} - \\frac{- \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f}}{\\bar{\\tau} p} & \\text{for}\\: L_{b} \\geq w \\\\w & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ \n", + "⎪ \n", + "⎪ 0 \n", + "⎪ \n", + "⎪ \n", + "⎨ ______________ ______________ _________________________________\n", + "⎪ - ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_\n", + "⎪L_b - ───────────────────────────────────────────────────────────────────────\n", + "⎪ \\bar{\\tau}\n", + "⎪ \n", + "⎩ w \n", + "\n", + " \n", + " L\n", + " for w ≤ ──────\n", + " 2â‹…A_\\m\n", + " \n", + "__________________________________ \n", + "bâ‹…\\bar{\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f} \n", + "────────────────────────────────────────────────────────────── fo\n", + "â‹…p \n", + " \n", + " o\n", + "\n", + " 2 \n", + "_b â‹…\\bar{\\tau}â‹…p \n", + "─────────────────────\n", + "athrm{f}â‹…E_\\mathrm{f}\n", + " \n", + " \n", + " \n", + "r L_b ≥ w \n", + " \n", + " \n", + "therwise " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "w_L_b_a = L_b - Pw_down_pull / p / tau\n", "w_L_b = sp.Piecewise((0, w <= w_argmax),\n", @@ -388,13 +602,68 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\frac{\\begin{cases} 0 & \\text{for}\\: w \\leq 0 \\\\\\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{w} & \\text{for}\\: w \\leq \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\- \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f} & \\text{for}\\: L_{b} \\geq w \\\\0 & \\text{otherwise} \\end{cases}}{\\bar{\\tau} p}$" + ], + "text/plain": [ + " ⎛⎧ 0 \n", + " ⎜⎪ \n", + " ⎜⎪ \n", + " ⎜⎪ ______________ ______________ \n", + " ⎜⎪ √2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} â‹…\n", + "-⎜⎨ \n", + " ⎜⎪ \n", + " ⎜⎪ ______________ ______________ _____________________________________\n", + " ⎜⎪- ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_bâ‹…\\b\n", + " ⎜⎪ \n", + " âŽâŽ© 0 \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + "\n", + " for w\n", + " \n", + " 2 \n", + " ____________ L_b â‹…\n", + "╲╱ \\bar{\\tau} ⋅√p⋅√w for w ≤ ──────────\n", + " 2â‹…A_\\mathr\n", + " \n", + "______________________________ \n", + "ar{\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f} for L_\n", + " \n", + " other\n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \\bar{\\tau}â‹…p \n", + "\n", + " ≤ 0 ⎞ \n", + " ⎟ \n", + " ⎟ \n", + "\\bar{\\tau}â‹…p ⎟ \n", + "─────────────────⎟ \n", + "m{f}â‹…E_\\mathrm{f}⎟ \n", + " ⎟ \n", + " ⎟ \n", + "b ≥ w ⎟ \n", + " ⎟ \n", + "wise ⎠\n", + "───────────────────\n", + " " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "aw_pull_elastic = - (Pw_short / p / tau)\n", "aw_pull_elastic" @@ -402,7 +671,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "slideshow": { "slide_type": "slide" @@ -422,14 +691,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { - "scrolled": false, "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'poui' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-17-c647af14f6fa>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m po = poui.ModelInteract(\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mPO_SF_M_RG\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mpy_vars\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpy_vars\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mmap_py2sp\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmap_py2sp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m )\n", + "\u001b[0;31mNameError\u001b[0m: name 'poui' is not defined" + ] + } + ], "source": [ "po = poui.ModelInteract(\n", " models=[PO_SF_M_RG],\n", @@ -455,7 +735,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "scrolled": false, "slideshow": { "slide_type": "slide" } @@ -510,7 +789,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.2" + "version": "3.9.1" }, "toc": { "base_numbering": 1, diff --git a/bmcs_course/2_4_PO_comparison.ipynb b/pull_out/2_4_PO_comparison.ipynb similarity index 99% rename from bmcs_course/2_4_PO_comparison.ipynb rename to pull_out/2_4_PO_comparison.ipynb index 9a74a469505e715cc261fbfb83e5ca946cf9e5d6..872a12a44e68630c2858341a2842749f77088472 100644 --- a/bmcs_course/2_4_PO_comparison.ipynb +++ b/pull_out/2_4_PO_comparison.ipynb @@ -12,18 +12,6 @@ " - PO_Comparison: comparison between the above configurations" ] }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "%%capture\n", - "%run 2_1_PO_LF_LM_RG.ipynb" - ] - }, { "cell_type": "code", "execution_count": 2, @@ -69,9 +57,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1716,7 +1702,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.9.1" }, "toc": { "base_numbering": 1, diff --git a/pull_out/2_5_PO_LF_SM_RG.ipynb b/pull_out/2_5_PO_LF_SM_RG.ipynb new file mode 100755 index 0000000000000000000000000000000000000000..ae2d4f868fc1e9bb8f80e47569c7b03c6fddf1c9 --- /dev/null +++ b/pull_out/2_5_PO_LF_SM_RG.ipynb @@ -0,0 +1,4254 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Example 2.4: PO-LF-SM-RG" + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## Idealization of the pull-out problem\n", + "This notebook explains the derivation of the pullout model and provides also its executable form.\n", + "The one-dimensional idealization of the pull-out is introduced in the figure\n", + "\n", + "\n", + "\n", + "**Remark**: The origin of the coordinate system is placed at the transition between the bond zone and free zone of the fiber. The domain in the bond zone is defined as $x \\in (-L_\\mathrm{b},0)$. As a result, in the bond domain $x < 0$. The fiber is assumed to have an infinite length for $x < -L_\\mathrm{b}$. This means that the length of the bond zone $L_\\mathrm{b}$ remains constant - this fiber will never be pulled out." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The meaning of the variables defining the idealization is summarized in the table" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'bmcs_ipw'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-1-a448c4c1c35e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m \u001b[0;31m# plotting package\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0msp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minit_printing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# enable nice formating of the derived expressions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mbmcs_ipw\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPO_constant_bond\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpoui\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'bmcs_ipw'" + ] + } + ], + "source": [ + "%matplotlib notebook\n", + "import sympy as sp # symbolic algebra package\n", + "import numpy as np # numerical package\n", + "import matplotlib.pyplot as plt # plotting package\n", + "sp.init_printing() # enable nice formating of the derived expressions\n", + "import bmcs_ipw.PO_constant_bond as poui" + ] + }, + { + "attachments": { + "image.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAADaCAYAAACl44R8AAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7s3QeYbUWVPvwNJtJIGJAgSYIEyUmQOAQlCBJEcpKMEgQBEYFLUMk5m8gSBdEBJUsUJAiIaXAGBXVmdFAUFdP451ffV2fq7rv3PrG7T3fXep773D471K56a1XVu1atqpruH69LkSUjkBHICGQEMgIZgYxARiAjMMkRmH6Slz8XPyOQEcgIZAQyAhmBjEBGICMQEHhjxGG66abLkGQEMgIZgYxARiAjkBHICGQEJiUCgiiyx3hSVn0udEYgI5ARyAhkBDICGYGMQBmBlsf4d7/7Xfle/p0RyAhkBDICGYGMQEYgI5ARmDQIZI/xpKnqXNCMQEYgI5ARyAhkBDICGYEmBDIxbkIn38sIZAQyAhmBjEBGICOQEZg0CGRiPGmqOhc0I5ARyAhkBDICGYGMQEagCYFWjHHTQ3X3Xn311aKT2OS3ve1txRvf2Nen6rIwIa//5Cc/Kf7yl7+Esv3zP/9zAb86+eMf/1j89Kc/bd1edNFFC9d++ctfVr4iLWlOZqG3//mf/1m85S1vCTDAesYZZyzmm2++FiyuwdUzVqm++c1vLuadd96hg00+H3zwwWKdddYZV23slVdeKX7wgx8UL7/8crHqqqsWc801V8fY/s///E/x4x//OLy79tprF29961s7fnc0HvzXf/3XQh6XXXbZYsUVVxyNT+ZvZAQyAhmBjMCAEOjLY/y9732vuPTSS4sll1yy2G677Yobb7yxuOWWW4qbb765uOqqq4pPfvKTxdJLL11885vfHFB2J0cyTz/9dPG5z32uWH/99Yv11luv+N///d/agl988cXFu9/97uKwww4r7rvvvuJPf/pT8etf/zpgvuOOO4Z7X//614vvfOc7xQMPPFCcdNJJgUxcdtlltWlO9Bu//e1vAyYf+tCHine9613FwQcfHEhaKq+99lrx6U9/ulhuueWKz3zmMwVdH0a54YYbii233LL4/Oc/P4zZq80TUvvVr3612H777Ysf/ehHtc9V3fjv//7v4stf/nKxww47BANnmORjH/tY8bOf/SwYn+9///uLP//5z8OUvZyXjEBGICOQEWiDwHTx5Lvf//73bR6tvv3973+/WH311YsvfelLxTbbbDPNQx//+MfD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JwSi8ba3va0WuPe///219ybyjT//+c9BB+okH9teh8zgr//jH/8opptuusEnPKQpvvDCC8XNN988pLnL2coIZAQmOgLTusl6KLEpaSTK4q2f/exnIYUcStEDkEPwyi9+8YvikksuKa6//voQSmARmtCCiSb33ntv8ac//alYZZVVGou2xRZbFH/4wx/CM3bp4CndY489ire+9a3Fd77znWKuueYqDjvssHBfKJFp7wUXXDB4Wi3cE4vriEliwdiPf/zjYrbZZgux3PJw6KGHFiussELjvfByhTSl5/FvfvObxcMPP1wssMACIU56++23L1ZbbbVWSs8++2yo63e+852FHUlmnHHGYv/99y9cP/7444vvfve7xVVXXVU88sgjBSJ85JFHhmum85XNDiapbtAZ+gMbhrFvRa+yvIrlhtFtt91WfO1rXwv5kJ7Y2XXXXbeVr/vuu6/43ve+F/RPuMb6669fbLrpphUIdHZJrDiiL1zoySefDGEYSy65ZOvldvX6/PPPB5yWWWaZQnw1j+1uu+3Wer9d+k255BmFxfzzzx/0cfrppy/222+/QIRhJabYN6+77rpQL3CwKLZOhB+cdNJJQQeV95VXXgmzeFEHm3RUnR144IGhDqdMmRIw+/Wvf1385Cc/CSFW8pVKnf7A64gjjggx6Oedd17xxBNPBNy32mqrYuONNw5J1Omm2H7x43bGYbjSyZVXXrnYdtttw3uMhPPPP78w5pjlkTffmmeeeabKW/6REcgIZAR6RWAgxPjKK68sdt5555AH0++kymOsU/v5z39ezDfffGEAyDJcCDBmLJ781Kc+FQZFswCvvvrqhCTGCC5BbJskjbmm5wb3e+65p/j4xz8edgcQU48YIyTCTpDDhRdeOCT59NNPFxtttFGB6NF9O14gBFEQEItUEaK6e3V5a/cOQxWpQr4RCPlbY401wm9lQlaQDcQZqXj55ZcDaUGolOPGG28M5FG7/sAHPtDKBhKPmJgdShfYIjNIF/JLEBfkEYHeaaedApnz3RVXXDEY0dIVtnP33XcXe++9dyDu8slgOOiggwpY2xlFOX1T7Peaa65ZB0ftdeW97LLLggdSGsi6nVfUDQOFNNUr76UQI3XOwCB+S0t8eifp12XugQceCPUOjxjCJLzHgk/eerp58sknF0JazFzss88+dUmF67BjYKh3ZSSM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bb311mHBWpQmnMvfjL9PPfXUcIiRUBqhYQ8++GBoy5/73OfC4s+mNI855phw3LgY+Rju0Qnmvn3SSSeFenUqKXzoiqntdri2y28/uliV905nyZSpThfFy2oz9M7MGkeK9sgY00/ut99+oTp61cX77ruvEDM788wzh7pbf/31i0033TRWce3/QrL0DQsuuGBoZ07hMwMqvIVU4VFuPzFx7ZajabbZZgvlW2CBBcL/d911VzhxtkoGpffItzhdfQSdhSvnzTzzzFP12Wmu0UN9h7UbMDFDN+ecc071nPamP3WmAUeFNq/etEV9s7rzrvUhniP6q3IbdV1ayi4t6cw999zT5KnqglhxfY7wKmXzrplb/WGMlW7Xfqr625inI488slhooYVan67T56q85WuDR6AnYqwhvvjiiyE3+++/fytXBlnTluutt17bnEqjjsw6015D0cjEAHmW0iEkQglSWWONNYLntC6tthkZ4gfiQB+zaIBHPlJBcP74xz9OU4p+3p0msUl8QSeNsNA/gx/StfzyywfSQnSYjBWkIUqMP95ss83CdDUCdeONNwZCQgwE4potyNloo41a75X/MDgifNtvv324xYONxOlEoyCidCISPwR83333DbH7iIoFVgaqLbbYIrzy6U9/OhyDe8YZZ4TBBRE899xzA8kSD0kQCMTfd/fcc89wTRq+YcEi4W2SthkLAzHxG1ndcsstw6DPiDBArbnmmmHWgwgNYkj4lnIYWDx78sknh/vtxECMtEo7GtZWlcNavCSSByeEQ6hBu3SFT9ixYoUVViiOPfbY2hks9QcDhF555f/73/9+IAPtcK4rk/S8j8Tr26yMpxMG+bnmmqux7tQFEpEu1uwEc3kxkDOu5D/i0wmuTflVj/3oYlPefZcuRqNLn4+gqGfSThevu+668Pydd94ZCCcCgmDFtskw6UUX9QHaCX3WJ0iTHmkDdL5OGGz09frrry8WXnjh8BhjVF+AaNOxJjxi+/GeMjGSzCaqU+1b/yO+ftVVV63LQggb6lfvJW58RlBPO+208C1EVfu3mLndjA3yZ8Yj9jEWgdqlAqGPhFUbVqZbbrkl4EK0EfWoL1pnnXWCgcPJ4BkGpufuvvvuqdqo9xBiuHI26MuJvrAT+dGPfhQMnl122SU8bsMAOhOJeCftp6m/VYd4D2mnz53kNz/THwJdh1Jo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AhNFpRBtQtB22bZEn7j88ssLC2pQIDDXEZCY4Nhjj02JD7bbbruUVEAElLlKYhVLuCFtsWQUM0m+4xNPPLEQg9z7qtnlurx3pnmVIliSDqHURslQ14X3UZ4hEEsaIamIOL5BgUAgEAgEAvMfgYmjUkh7u8kmmxSf//zni5122mn+IxItWDQI5IQIBx100ERxtmcCMBnBqul68ztkL5QOuS3j5KT8yMQmk9tGG22UslQSkPldDaKlwatMhOutt15BSB6WZGgQ39N1XXZImwlZ+oICgUAgEAgE5i8C1rqJXCk0PWuvcpri+QvH3OFcOlcbDulRX/GKV6RUqzI3ycJ1xBFHpLTBtPXSnPonq3c2J09Sdu4gMDuc5JS5bWmXZ4eTqW/Rz7LVNdFsRGi5++67U5Y8GdRojNtoafE6Gzi0tbt6b2m5cnTlL54LBAKBQCAQ6I7ARK4UXkMwXmONNQpak6DpQYC2jp/2j3/84+Lhhx8udt9990L2v9tuu62g3STQ7brrrin5APP6F7/4xf6LJyk7PdxHLeMgIG5uJvG+lzblTcMwPuYCr8N4jPuBQCAQCAQCgUBXBCbSGPd6veL73/9+se2223Z9XzzXEQFb6UDBAAAgAElEQVTxm7/xjW8UTOeZpK6lPT755JP71xzEol2u0iRlO7K36B6jsT/mmGPSoTeHrh544IHikEMOSQdPm7T0nqFNlT2tmpxGX11wwQXFKquskrTC3AH4yV5yySXFueeeWxx99NHFFVdcUay22mrFhz70oYTzwQcfXCy//PJTMP/yl7+crAi0u/p777337tQnzgB87WtfS/HEbbpohZUlCN96663FV77ylVTPJz7xieSi8J73vKcx9riY5Iceeui08HrNNdcUN998czrod9dddyWfXW4cXYhvrw2kdvz2t78ttt9++4RplRwStmF8xjOeUTzyyCOFw3v7779/3z1klP67//77i9NPP71YccUVi+WWW26kw5pcY2C+5pprFssuu2yK6/6jH/0oWYFcQ5dddlkaN0984hPT+IADqxG68cYb0xjUnquuuir1I9J+7a5a7drGayoUFAgEAoFAINCIwESCsUXMAZSq8Nb4lrg4FgKrr776lHJMtgSmKhHMmg4gTVJ2LGYXcCHa3Ne85jVJW++QKSLAysp4/PHHJ6Frzz33TALKZpttljT8iEBDCOYT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jZb/D3/4Q/GFL3yhePazn13ceOONxTHHHFMwI1511VXpW0KsBCwu6rz00kuTFoR1YOeddy423njjPh+sB8qri+DuHYccckji13VuG3x6uYUg2u/nP//56e+2svyq77nnnvR9S6/8ox/9KJkoh7k9aIcN2TOe8YyUMERb+VRznUBHHXVUcf311xd//etfE09rrrlm6xzBx5EpUF34+POf/1xwfVEO/fvf/y5OOumklJAERvfee29yz1h99dXT/dNPP7244oorihVWWKGwSEhLj2jsDj744HS48qtf/Wp6B+z49doIwQhWyDynH81pfMOXWWaZ5Ivu4GCmNj6H9UO/kgF/wItvOh9M+FI6rLTSSv2nbTSMOQf1zL02QjbN0ngPapu55Mgjj0yHTpXnPmT80S75zULFusFC8ve//z29ix++zfmg8eaZtjHVZMEyZmm14C799TBiFTOGjC/4K4/HPL70q2/IQTG8GhN777132ohpm37zPpa1f/7zn8Wf/vSnhJd50nNVMr+eccYZhXkVTsbFPvvs0/qNr7baagm/Ufsjj7W2sm3YWGv5pXP7MnewSrHiZuryHeRnjbPTTjsttcM3r93+7kLD5o1B8+ZDDz2UlGu//e1vk+IHHl37y/yc/Z+5U5gLnFswBobNR8P4HTbeBrVnEO/m1Kc85SlprFFiGaOs7GussUZScGVqGweD1gzKM2uUw8zm10MPPTTNfcZknv/NeZNuPrqMgwX1TNkZicoFYqR/pdtEr1xY+mXKwdgrJ6Te5z73uZHqGfW9i+X5973vfb1y0zEFy3Ih673xjW+ccq0UGHp77LHHlGuTlF0s+GpnKfCY+XvlItsrXYN6pVmud9NNN/VKgbZXaux75STWx7V0H+qtv/76vVJIS9dKwalXCiG90oUo/b7uuut6pW9er9y09MoJKpUv3TDSvXLRSu8pNf79+srFPF074YQTeqXVJV0vBbFeKcz1SqGvVy7e6dpFF13Ue9azntUrhYH02/vXW2+93oUXXtivq5z4envttVf/d7lA98pNa/937tMuZbfccste6VqQcCiF3d6GG264RD25voxDKbD2ygN1/eeULd0l+u3y3Ic//OFUb7XsoL+32WabXilY9581z5S+yek3HEoBoI+ta+XC0yutWL3y8GS/jH4oF55e6b/Yv1ZaWHrbbrtt/3e5qKQ+0Jd1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" + } + }, + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Here we tell `sympy` to remember these variables for further use. The parameter of the `symbols( str )` is a string that contains comma-separated printable symbol definition. One can use latex commands in this string to introduce e.g. Greek symbols like `\\gamma, \\beta`, etc. The number of symbols in `str` must be equal to the number of variables assigned on the left hand side of the `=` sign" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "E_f, A_f = sp.symbols(r'E_\\mathrm{f}, A_\\mathrm{f}', nonnegative = True )\n", + "E_m, A_m = sp.symbols(r'E_\\mathrm{m}, A_\\mathrm{m}', nonnegative = True )\n", + "tau, p = sp.symbols(r'\\bar{\\tau}, p', nonnegative = True)\n", + "C, D = sp.symbols('C, D')\n", + "P, w = sp.symbols('P, w')\n", + "x, a, L_b = sp.symbols('x, a, L_b')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( w, \\ \\bar{\\tau}, \\ p, \\ L_{b}, \\ A_\\mathrm{f}, \\ A_\\mathrm{m}, \\ E_\\mathrm{f}, \\ E_\\mathrm{m}\\right)$" + ], + "text/plain": [ + "(w, \\bar{\\tau}, p, L_b, A_\\mathrm{f}, A_\\mathrm{m}, E_\\mathrm{f}, E_\\mathrm{m}\n", + ")" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "py_vars = ('w', 'tau', 'p', 'L_b', 'A_f', 'A_m', 'E_f', 'E_m')\n", + "map_py2sp = {py_var : globals()[py_var] for py_var in py_vars}\n", + "sp_vars = tuple(map_py2sp[py_var] for py_var in py_vars)\n", + "sp_vars" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Introduce finite embedded length\n", + "What happens if the debonded length $a$ reaches the end of the bond zone $x = -L_\\mathrm{b}$?\n", + "With reference to the blue subplot above, we see that this point corresponds to a maximum possible shear flow area over the bond zone. Thus, the maximum force that can be transfered through the bond is \n", + "\\begin{align}\n", + " P_\\max = \\int_{x = -L_\\mathrm{b}}^{x=} p \\tau(x) \\; \\mathrm{d}x = p \\bar{\\tau} L_\\mathrm{b}\n", + "\\end{align}\n", + "The corresponding pullout displacement can be obtained by solving the equation\n", + "\\begin{align}\n", + "P_\\max = p \\bar{\\tau} L_\\mathrm{b} = P_\\mathrm{pull}(w) \\implies w\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "Pw_pull = sp.sqrt(2*w*tau*E_f*A_f*p)\n", + "P_max = p * tau * L_b\n", + "w_argmax = sp.solve(P_max - Pw_pull, w)[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "The pull-out curve can then be refined using the piecewise function definition" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWIAAAA/CAYAAADaO8LnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAYz0lEQVR4Ae2d7ZUctRKGx3s2gMVEAGRwWUeAyQC8EdhkAMf/+LfnkoEhAhsyACKwIQO4EbA4A9/30ahkdbfU3907u646p0dqfVXpValUUvfMPHj37t1hiL7//vtPVeZnXX8r/vVQec93BBwBR+AuIiD79lhyX+jC5n2m62el/aZwUzofal1CPFOZF7oQ5ulQec93BBwBR+AOI4Dh/Qj5FWKQ/9X1gPstqdcQS5Bvxfy/un5U/JstBfG2HQFHwBE4AQQ+z2TAK36b3W8WrRpiGV5cdIzwn26EN8PfG3YEHIGdEIg2DYfyK12/6HqttB9y9rr/O7vH/u1yFFs1xBKA4wjIjyOOOPinI+AI3GEEZGR/0/UfdeGxwl4Dq3zs33cK/2x3WWkc13J+3CClf9dImHBTNMRqEGFxy/GGO4JMaL+3aOTzR2+hLFPlNz+rydh51BFwBO4fAl+qS70P32Rn8IQxwm91faur7TX/uDYsRUMsJleR0cu1Gbbao8Ofq6ObGfsWP79dgIDGiQV69MIJK9XxxXMB5l51dQQ4cq0+75K+ot/oOQZYwYGjimSIlYaDyhtklGnTl8oPRl4hXjPnzfl8YRG4Vl7H3tUMMcyg/LzkmLLSp4QJHSkJtRKLRjORHwsMDyA3IfFYZHSijPnArSrnUvkkjC+cq46IN7YnAnF+wbLqEatM/rCuIZ7yeIuC44cvFMdbfqGrY9RjOepisH/V9ZnSePX3TUzrHGvUDLHKb07PxYGJvRfBi+3G7HOcHQQ9WUMn3HZdOHfAusMi9nHRQqg2Fi3GHaE8YU0E8IYxoLMdTNXNDe/DinCkv9KFV/xLxo83MMzJVfQ93YohlmAI86nC6sr0XsTlMfGZbESijLxTWF0hl0v2voU5Mr6vvUts74Vzl061mJzsQmhySk+Y3HhmPL/ZZf4Y73sQFs+HhSN4XoKnLow1D+q+VrxxhKB7DGmgWK5o0JUX0hXCD4/YCDuU2rBEwlsxxOKLV9rwTCU0xtnSLhW/4V7pDTCUNofmGJHaOdAc/mPqFGVU/zlKYUDBBGJ7kw8mSgR2rMJv4uAruh7Fsdlt4TTJxRfFvdI1+jhJdWZ5pJHXQeEa+mZdWDWUbHjr17rQgT90n84kV2V0fxvDyOYerfWUuQeujD/G+KGuIT3grYvcyFK9TcxZs2nkoct4yh3a3RCrgxgOVp8EiOIYEs5bMDiBFMc7Waxsse1JRkR1eM8weNFHabb97JNReTwo+EEh30XHC0oY5VIp3Qx2nrxWHGXKFWqtdofa2fM4qbgQDgm4V77GN3jCCtnqMl94DxaD7DQCAWFm87mxi1A6cx37EJybiG3R022xwaijn0WK7WDr8naRobjD3t0QSxCED6uPQiPSkmEmUR3BG0b58EzDVw5Jn0FzjAjGDkX/CkB1jRmYGaKlKr0yij+DDjWU6JiUPnmlpvMQIOXOjIh3Z+GkKaUzNsVFQek3ym+MJ3WmkOqHiaNwyDOZ0myxrHhg2CYt1sWGtk0E64CF5EUfe9+D3VaUu9W68MJJuYpSf6N7okGvFaJnuR6b3lHnY10vVb6og3EcVKRIzFnqYUMowNzkDbFgmEnI6Ty/2TouIej8Y4XtSYrQfyn9o5agGJ7ZxjDya3jfQ31UHRaFfGFA5s1opIymKENbob82ELS0cB4kN4Z/9fcpM/n39FB7F8JMptuO3ty2AHvyl47hraIHnNfOdoZUN+wqR8rOXGN3zs86hJ267m3+pSaUN+T04PlyzAHvQTobLLFugdrkwuDyekdxtVDeXGNYNCK1LkXg/1HIoP8TyzEYW9IYGVmoDpKr4RHrPp2dKg52jfylQqtNcGfhZHewG4kfmO/iocY+slivit1uYN1DRhqLZ7pwKjCAvCo22wjPgIdzXTvHXTL3mbOvx/JfzSMWWKxevBrSp9B4t52VRGm1bZZtE4pbg75Oqk0zIm3vu68axyFW3gb/YV+FJXkTZASHBq6qy0BjfBMpbTJOqXI5Uls4D+LFAmJP8Eu12QLO9Zg7HqraAgP6/EjXU11MEu7ZPhJ/qjINPJQ2hjoLodpBd+gbbbNTS/2IctC3oCcK0XvaqG47lTebIj/Ggb4edB/0UWGYMwqRFf62G2J+pZ9uVD71yAeja13oNRiS3utpxrZ3w0H8cCzAlYV/EzzV7iBJDtMjZAG7SaT6hnd4mJq1V23nvJozISMCiLIwyLjkHYplXnQyKgkqz8RDeZiUc6hqREqNiR+KmW/9zRB3Fo5S/ZlpgzJGuWgeD5HzcojJh7yzZVNbSxZOxhFlxRiwXUbxGuOk9mctCqpH30rHSVfKY6EEg9918Q2lsO1TCH/SO1tIpVVJ9QKOCoNRzQo+Vxq8wOgnXckQK86YUc8IHNDTS12NxdIKLAklAzhiMMPYKwwGmDYVZ46Efitu+kr6r+Tp4iEvMmHU+DlH9IVyjB9GDx3K+6bbBm2Og+QCSzAFa44EZut0Q/L5N4y77TQ5H548pqrTcSSGxFlsiMUUZWAw8R74WiAKUJqEeBFTQEbBeELcOWNR2mwjojZrhLLnE5IJBjHJOqSyKDETH0XCa2rIuaKMZlyQL+CqEJmYbGny6T6R0odkQ9FQfupPWjjVNuMN73RcofhBV2nMVXQyYVSv81pqG56vYxp95xgr8dc93qBNnlhsVAAG8EvU4gX2NynzGAHbJJ/Kcw5I34tj0aq79q3NkTZvDAFvHJls8KUfHDMFHVfYfh5DmUTKzzFfHQe1zzgiJ3j+V/dTbEOSc+2I5MDwTja+S+U4X9qABA8TUCHKaRM8rdq0rzy2N6zCo0jlKVv8NxDlGY/JRqTGPLaJx5nL+DCWx9CWCO+Ztzko1yizsowo6kFtBpxjvG2IyL/QZYtHn2xMsNkLZ5Qjl4X2jC/izSb6oMrJWGQN0V/jCb9kCGOZgD/1dQVZFM5drHNeT3JeahPe8GpPVN7fbhvDKNo2QZQFY2YLVGKkPF5z5P5Kl+EGLklG5QecKFShzXAQbxYQZGdXExaGigyTk9Xe8F8OTW51+wqLDbGJyMDqYoI/U4hRS4OuNFa+oudl9S1UPYw2L1SbJ2hZB6UtMiKpoSyiNplYtF3ix6CiMA2KdegvytxQaKWtLSPttSc+8qRFI8oDbmxF6U9RNiopP0xMhWstnEz2/EgHNnPpuSo2PFQakqwBY4VhUVJSGw/GzvpM+dmLdcYLQw6W+dYd/vAx46bbQHY+a/d7hKaXDf1rMUZ3crrJb/ridwiHRjck96wv9DQauYWbs5V52iTC8AYSMCg0Rwx9CpOX5QcykketOEY9KJ1CVnraMY+Iidsg5U/yvlWZbVHjWCFrkMXkYXZ/UFmUm35eKE5d+CXS/Woyqi0zPB1Dp7x8oUMGXrfplS0JqYjKgiNGhgeoNqmtCOOXGyBLL4WM75tSRp4mHvCx/uRZeZwyfXwxuHhqbV2i3Vc0pDwwoA0ujsm4LxFHZbVxpzy8bCytPmmNRSC23zbMVn7L0Mb/ooeJlbEibdwsvS9cHQdhxvzm4mEWx3qNOdQnzNZ5kqUPz83Yn6/ZsjrBJEFR8Yo59GbgMZZfDPFRWSbMI+q1yjLRG5OTdnWRBp8l3jcTuO9HXpC/YaTEj8mJjKGPCoukMmvIyCSAGpP/mHT8pP+KgRtGZZRsWX0WFCYB/QlbRLUzZeGEN/j3GiLlz/ZQ1X5OjFcDC7WN/IxT0BuTReFSj5++tQ0ZafnZtG4PV+LV1lnSNyX6qYt+oyMNmZQOThBHAEtpExwkI9iyGF4o5KEguwoe1vUtjqP6Ym3GwsgPDb5VE+v9TyGvzPXq9LHJ958qD+bowaUunALGxgjbRjoPTds6FcqcWckVQ/OKMVRMas7PcqE6rJQPWCgNXiaDkS6lMVil+sYnTQKVm2pEeM2nYeRbwoWtnMrYYLayB28XyajW6c9B/ItKoXRbSNIxxaBEWQHVRyls4WRCQCyctuMICT0fyFdULKsjHqt4qGoH+WgrjYXSiDP+TJyGjsR7xnauxw/mhslB7YH1Q105f9I6uxWlbUHIkuSJDHBwnkg2cMkJvbM3Jiy9VN/y+sJNcWCcdDGG4ehScTxkHvq3+9onYzuPnSqOIBeeN/O4z+Gy+ug+fNMYW8ZQKD7Mo6ALimOzjD+h7aSQo0gP3r3rnm2rIg2iZDypb6y2xVZaiapDp+kMk5Q2hiYrq2Gt86z8xfNlpZuc4Qlw5NuZlGo7kcoANEaf/kEoWqOOymBg8BDzMjyBDkY/tvGvwsHzKJWZJGNs+yfxBg+bYO0xoA+Xuggb+EyRTXUPKm/GhL4xTmwXg3dMfh+pHDh2/verVEdlkZVXqDimSkdPlNU9Xi2LcNUbUh5jAj90wcblY8VZtIv6pXQwRLfSn9/Gdko7LxVrksraAvdWOXzBB8PO2DChSGu8Y6z71UkyoAMYCPoMhuhCwjz2kbFDHog+g0nYOSikHuMJfpQh/aXS2zql5DKp7K44iJ/t0pDxWvfWt7KArVSVx6iFd3jJ0r3pAR4p871DSgcnxvV3XfCs6mKnckxQHeY6C0tDv8lWWlgcYtFOcN5JOSaw8kNFoY9ZvZ94VEwajiqKkySvrTJzX11h5QfAZ5HPGO+bQbUtfy5GiqstFGC0oqaK5cgkGcUb+ToDWW56ear42StOTHbGajRv1Z1SFgVdcpzEmLHooJOj9FJlZx+VicdB9UsL0ug+08ZSiv2t8qSP4lGSM7BWPoY3GOW5suyNg/ihJyyeGOTfFQ46c62+gcebVtrQrb13DZ6PhgpX8rFFaawkN0dy9IM5jU2sUs0QswozcQaNaKll1cPrYbIED7JUZo008ZhtRNbgP6aNuyCj+oGSjF44x/S7UoZFybydYDyED54a+jLk9aDkcxbHSQthRW5PvgUEpBPBIE9lHevl1dA1FuXiAq50jkLMA8aAs9tsEGViwmeKB93NCyjNdq944hjyC12Xiod2FSb9VrzT1lneGHEVQuGhpato9WD62PxqnxgROj3K+17KVfjAi+0pWLEFZNszRLvIOFM2+oGB22PhZGFHr9jBgCOEJw4+VYplwfl1tVAlQ3XhR9/gw4VhdvpAEND4YyBZ7GvHm9i73NZ1jkljGxxnYVRxWEpEOziv4XxY8Re68nZDnVpb5yG3+WGK+rSZfJp36tgu3rf1XvxY2dL2w9L7wr1knCObya26RUW1/BXDSR6q5GISYUCh57rnHXM8pSmEod/D458ik5fdGAHpCYs3+oZTyLwtEXMZA3oVM6lzoXsuq8NRbTgdUFrHuMZ69kAu3obyL7mhLQWPFeLwFNtqPKxTQbaNWHKs+lRlVzUnR2AYAenWpIe5wy0Ol4g8p541DjfsJU4SAY03BpU3Fr5BwHhPmI5bFc+PJEI/Yjm84vBgL95zxMpxBQ857QgjlLcPpfOAsGg3lcdigDOAES62daaMQCqM54ERRng3wkdY/HMbBFBKvIRdjpPognR6r6My2DndIgIaa4wwtoyjQ/tSDwbwxsRSejhKsHsLlW6GmjYO8Z7dFC8C1Iwwxx9Qx1tWHfjwrj1eN20X2wpHEyqAxcYbxmOY80BEVZ0cgXEIoGO6Nj+THieNl7qHCLDjYqEnTCSdM+8YI/1EF4YzOZ3Kpw62EOIYDOPZMa7H7OOn8nnwZscaeMSWTVsYcwzx4LFfOJpQZd7vfKUwCKq4kyPgCDgCjoAQkF3EmOKkLraPtbbsaOITMeJVC346L7jkPgKOgCPgCHzoCMge4tligB8rzvHtbOprq/2wzh6ifKJKb2dz9IqOgCPgCDgCoxEwj9gq8N11VgC+5ufkCDgCjoAjsAMCDUMcvWCeDPKkcZEbvoPszsIRcAQcgXuBQMMQxx7xRBGyp4fHO/90BBwBR8AR2ASBxhmxcZA3zFsUHFH0/q+VlffQEXAEHAFHYD4CJY+Y1vjhC4hvkzg5Ao6AI+AIbIhAzRDbGxN4xU6OgCPgCDgCGyIQvlm3Vvs60uBbJvwEnD3o49tTfK2Pv19P32DRvZMj4AjsiIDmH1/DtT8cuBNf3pLMn0pmXqm99z+7sLYhDt/FFoD8AAa/IzD41T6Vc3IEHIEVEdC86/wbhNJwivi9DX7Qhh+fuQuEIWZXfu/tyKqGmJHVQNsPYCz+zQq1xe9f1P5N40b5i79yiMxOjsB9QUBzwoxXrUv2oza1/JNJV1/444cP4oWB1Q2xRvFxHEn+v2kRaRA4zvAjjUUoeuUPDAE7FrwX3ZYNsOdV96I/tU7UHtbVyo9JD79ExGo2prCXcQQcgXUQ0JxjN+rv/68D566tbOERowycRy0mKZb9PGft7Y30Q8xRCfHGeVjIv4uwReP+4xh/qjIfxOqq/jrdMwSku8wB5gNnvBB/uPuz0oPDoxBP2H6OkR+osb/0Kf5js/KZH+Y9M2fSP0MrniiW47d84ctc4p8rwpGgQuYXMtHWtS6OPWiL9K9jSF3yySPO+TT1sROkMYc5gkBe5GGOUo5+kUZd8mkvkOLUhQdlwQW6Uno6S1acekW5Q+kT+zhfUx51HnCgxd6w2uIbfgDNANzoYsABNpHK5AafgeDpKoPHb2VcK24PD6lLeu28WVlOjsBpIiA9xvAE/VU8nfEqzttI9u/DPJPhd54xmBiuvucnGC+Mtc0P2ueXF6mft086cyn9qL7y+VcLypLGPCfkC2AsDNRl3vL2FO3zD8avFCefH2kPz42ytGCElXdQGj8zyXEmaSYDbbd/UxjZeRjZmMu6T/1VvFdu+J0ana0skIEzeD4MWLoY0E7ZCCRKhmFFqYLBJcwvk11pAP863rMS8sZG/rAQ5bRFIhbzwBG4MwhghBtGMkqOY4JRQv+nED95m569KG4OTXuOwJdX3cwwHhTHeLd/iwZHCcNrMvKALbSvEGeKuXilK1BMMyfLkgmZ34lXzKDtnC51g/wY5JzspxlIGyt3Xv9W42sb4jCQAqnqERuAChl8QDclSECQpysZUsVRNAauRrnhpezLVsEwaGqnPXitYn7rCJwWAlH3cS7M0UgCKs/mTjJyKbM/8qaSneZHxrfhkcZ68OUIwoi5abIcVJf7nJiPGG/6QT5HEBhq3ooKpDRsR8cpi9kpUDlsy42ufxXHWcND56+Icu8ePmPkTu3eduR8ZQEwgmlA2m0LLIAHSBsowOenN4cIRasOktoN7SkMC4HKthcCPHX+9sT4DvHzfEfgVBAIxkvC9OnuVI94TN+ML8cDyWDGinifbWOOcSyS6uMpIz/HB3jxj3TPbveZrq904XR9SZrCMcRZ8HNdGHSOHdkVcAxC+1PlVpXbp9UMsUAwI9j2RvNeArZtWVCeC11saajLClt7oAbg6bBe8RphcPGO20pL+2krVqvs6Y7ACSJgW3XmSo2sTCdfcwEjNdbA5fWtTbzOtDvNC7Ti7TnXyj5wVozRvVb4T8wkDeM5pv1QRfUxtHyHgD6FfinOQsEZNAvEVLlV5fbpbEUR7Hy47Y0GFgKJA/zcq8U4AhorGdsKtl6sbg1SHsCz9ah62lkF2mzwVz0GCSWZo4xZ0x51BPZHIOo9+mvzKwmhPPQd4kzUaMggWrneMON7VSqY8S5ll9Iwkszln3SZ4SUNRwzbQHwM4cA1PHTVx8miTc6OsRNgsJbcamp7WtMQ47UeIhANyZUWtg9KZAU0QrFYrU1xCC8tMwtp11a5LLkZVTsXSmGQGOxASiOOAf4i43PM9E9H4O4gwPHdE+lw+wiCefWD0nPng3hpHllvH1pkRAhf27Gm4uIH33xOMve4qqQ6GEjq4FSFulkabzzl7bXbabfNPyy307g3HMbK3eZza/e13yNmhcUA8kqJrV4dISMYrHAYPFOSvHwjXeXT8YLivNKCgQyerkJWxId5Gd0fdI8sxXccyTdSOeSlLOdH5inw3iNblr5BVhEnR+C0EZAOm1PxNkrKPbptxid1QGnmIaP3vMbJ8xHm53NdzBPaoB7HBLTD8QBzJqSrbD5Pja+y07vEYU6pHHWom7f5Uum5DaBeIKXj+eYP1g9KC96twsbRoe5NXpvLyPtU16UunDg73lA0vN/MEUrCQvGq3FQ4NVpkiJd0RkC90/XA2lAcw8wZcXEQrVwtVD0MOVuT9FJ3raynOwKOgCNwSgicVYS5ielTtjGVpqrJrIxsJw4KWRXfKJxlhCMHVs60IsY0DxwBR8AROHkEaobY3sHrPCBYsUdsfzgjZrvC1yZn81JdDDpbkde6nBwBR8ARuFMIFI8m6IGMG78pTJiOD7g/NZJ8nE9x9sWZEufNnF81zpuU5uQIOAKOwMki0GeIeTKKt8qL17xe5uQIOAKOgCOwAQJVQwwvGWCOKPA0+XZNeLuBdCdHwBFwBByB9RConREbB97H4xUYfpzHXiOxPA8dAUfAEXAEVkCg1yO29mWEeS+Rs1h+os7PXw0YDx0BR8ARWAGBIY84sJDx5Q0H3s/1L0asALo34Qg4Ao5AjsD/AVkOqcYYPHUzAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} \\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{w} & \\text{for}\\: w < \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\L_{b} \\bar{\\tau} p & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ 2 \n", + "⎪ ______________ ______________ ____________ L_b â‹…\n", + "⎪√2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ \\bar{\\tau} ⋅√p⋅√w for w < ──────────\n", + "⎨ 2â‹…A_\\mathr\n", + "⎪ \n", + "⎪ L_bâ‹…\\bar{\\tau}â‹…p other\n", + "⎩ \n", + "\n", + " \n", + "\\bar{\\tau}â‹…p \n", + "─────────────────\n", + "m{f}â‹…E_\\mathrm{f}\n", + " \n", + "wise \n", + " " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_pull_Lb = sp.Piecewise((Pw_pull, w < w_argmax),\n", + " (P_max, w >= w_argmax))\n", + "Pw_pull_Lb" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "get_Pw_pull_Lb = sp.lambdify(sp_vars, Pw_pull_Lb)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " if (this.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " }\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", + "\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "\n", + "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", + "// prettier-ignore\n", + "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.on(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAJYCAYAAABy5h8aAAAgAElEQVR4nOzdb6zfdX338fc5xXMII2ldOSnHhbp5LB3D1Fm1rMeuRgF144YF1lP/ICfF4pbMAk1mUi093boZjLsa1Jp5QwZLFndnjhjpRkTXuXhLaJrOZMvW02QJqICg3ULhQFHf140rnFy1H6X0fH7Hd+HxSD43+vsev+fbvPxK8oznEAkAAAAAhcUv+wEAAAAA4BcRsAAAAAAoTcACAAAAoDQBCwAAAIDSBCwAAAAAShOwAAAAAChNwAIAAACgNAELAAAAgNIELAAAAABKE7AAAAAAKE3AAgAAAKA0AQsAAACA0gQsAAAAAEoTsAAAAAAoTcACAAAAoDQBCwAAAIDSBCwAAAAAShOwAAAAAChNwAIAAACgNAELAAAAgNIELAAAAABKW5SAdejQobzjjjvy2muvzde85jUZETk6OnrW9zt+/HjeeuutuXLlyhwZGcmVK1fmLbfcksePH+/41AAAAABUsCgB673vfW9GxCnnbAPWk08+matWrcqIyNe97nU5NTWVl19+eUZEvv71r88nn3yy89MDAAAA8Mu0KAHrU5/6VM7MzOR9992Xjz322IIC1oc+9KGMiLzuuuvy+eefn/98+/btGRF544039npsAAAAAAr4pfwOrLMNWI8++mgODw/nq171qnzsscdOufbss8/m2NhYLlmy5LRrAAAAAJy7zqmAdffdd2dE5JVXXtm8ftNNN2VE5D333LPAJwQAAACginMqYN16660ZEfmxj32sef3zn/98RkTedtttC31EAAAAAIo4pwLWtddemxGRn/3sZ5vXv/KVr8z/fiwAAAAAXh7OqYB19dVXZ0TkF7/4xeb1r3/96xkR+a53vWuhjwgAAABAEedUwLrqqqsyIvKuu+5qXn/ggQdeUsD6rd/6reZZsmRJXnjhhT/3uuM4juM4juM4juM4zsvpXHjhhblixYqX3GoWyzkVsHr/COHPG214eDhHR0d/6f/lcRzHcRzHcRzHcRzHWYwzOjqaF1544UtuNYvlnApYi/VL3F8YDwAAAOCVoHoLOacC1t13350RkVdeeWXz+k033ZQRkXffffeCnq/6aAAAAAA9VW8h51TA+v73v5/Dw8M5MjKSjz/++CnXnn322RwbG8vh4eF89NFHF/R81UcDAAAA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eNXfs0UJWHNzc3nFFVdkROT4+HhOTU3N/3n58uU5Ozt7ytfv2bMnIyKnp6dPu9cTTzyRExMT8z+WuGXLlnzDG94w/+cnnnhiwc9bfTR4OfCeweLwrsHgec9g8LxnMHjV37NFCViZmc8880zu3r07JyYmcmRkJFesWJHT09P58MMPn/a1vyhgZWb+6Ec/yu3bt+cll1ySIyMjeckll+RHP/rR/OEPfzjgvwUAAAAAi23RAhYAAAAAnA0BCwAAAIDSBCwAAAAAShOwAAAAAChNwAIAAACgNAELAAAAgNIELAAAAABKe0UErLm5uZyZmclVq1bl6Ohojo+P59atW/ORRx55yfc6fvx43nrrrbly5cocGRnJlStX5i233JLHjx8fwJPDuaPHe3b8+PH80pe+lO9///vzsssuywsuuCAvvPDCXLduXX7mM5/JkydPDvBvAPX1/OfZ/+/o0aN5/vnnZ0Tku9/97k5PC+em3u/Z7Oxsbtu2LV/72tfm6OhoXnTRRbl+/fr89Kc/3fnJ4dzS8127//778z3veU8uX748zzvvvBwbG8trrrkmv/GNbwzgyeHccOjQobzjjjvy2muvzde85jUZETk6OnrW96vQQl72AWtubi4nJyczInJ8fDynpqZy3bp1GRE5NjaWx44dO+N7Pfnkk7lq1aqMiHzd616XU1NTefnll2dE5Otf//p88sknB/g3gbp6vWe7du3KiMjh4eF885vfnFu2bMl3vvOdOTo6mhGRGzZsyKeffnrAfxuoqec/z37WO97xjhwaGhKweMXr/Z7de++9ef755+fQ0FCuXbs23/e+9+XVV1+dF198cU5MTAzobwH19XzX9u3blxGRQ0NDuWHDhtyyZUu+9a1vzYjIiMgvfOELA/ybQF3vfe9759+DF87ZBqwqLeRlH7B2796dEZHr16/Pp556av7zF/6HbuPGjWd8rw996EMZEXndddfl888/P//59u3bMyLyxhtv7PrscK7o9Z7dcccd+YlPfCK/+93vnvL50aNHc+XKlRkR+fGPf7zrs8O5ouc/z/5/d911V0ZEfuQjHxGweMXr+Z4dOXIkR0ZGcvny5fmtb33rlGs/+clP8qGHHur23HCu6fWu/eAHP8iRkZEcGRk57T378pe/nENDQ3nBBRec8j3gleJTn/pUzszM5H333ZePPfbYggJWlRbysg5Y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\" width=\"800\">" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "ename": "NameError", + "evalue": "name 'poui' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-11-1fa63dbdbc31>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m# poui.plot_filled_var(ax_pull2, w_range, get_Pw_pull_elastic(*param_vals),\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;31m# color='orange', xlabel='$w$ [mm]', ylabel=r'$P$ [N]');\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m poui.plot_filled_var(ax_pull2, w_range, get_Pw_pull_Lb(*param_vals), \n\u001b[0m\u001b[1;32m 10\u001b[0m color='blue', xlabel='$w$ [mm]', ylabel=r'$P$ [N]');\n", + "\u001b[0;31mNameError\u001b[0m: name 'poui' is not defined" + ] + } + ], + "source": [ + "w_range = np.linspace(0,2,50)\n", + "params = {w: w_range, A_f:1, E_f:1, A_m:1, E_m:4, tau:1, p:1, L_b:1}\n", + "param_vals = tuple(params[map_py2sp[py_var]] for py_var in py_vars)\n", + "fig, ax_pull2 = plt.subplots(1,1, figsize=(8,4), tight_layout=True)\n", + "# poui.plot_filled_var(ax_pull2, w_range, get_Pw_pull(*param_vals), \n", + "# color='gray', xlabel='$w$ [mm]', ylabel=r'$P$ [N]');\n", + "# poui.plot_filled_var(ax_pull2, w_range, get_Pw_pull_elastic(*param_vals), \n", + "# color='orange', xlabel='$w$ [mm]', ylabel=r'$P$ [N]');\n", + "poui.plot_filled_var(ax_pull2, w_range, get_Pw_pull_Lb(*param_vals), \n", + " color='blue', xlabel='$w$ [mm]', ylabel=r'$P$ [N]');" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Introduce finite fiber length\n", + "What happens when the fiber has a length $L_\\mathrm{f} < L_\\mathrm{b}$? The debonding phase with ascending pull-out curve remains the same as in the previous example. Once $a = L_\\mathrm{b}$ the bond zone starts to shorten. \n", + "The amount of shortening is equal to the slip at the unloaded end. Let us denote the diminishing effective length of the bond zone in the second phase \n", + "\\begin{align}\n", + " b = -L_\\mathrm{b} + u_\\mathrm{f}(-L_b)\n", + "\\end{align}\n", + "\\begin{align}\n", + " P_{\\mathrm{down}} = p \\bar{\\tau} b\n", + "\\end{align}\n", + "The strain at $x = b$ must be zero. Thus following the same arguments as above we can directly write\n", + "\\begin{align}\n", + " w = u_\\mathrm{f}(-L_\\mathrm{b}) - \\frac{1}{2} \\varepsilon_\\mathrm{f}(0) b \n", + "\\end{align}\n", + "After substituting\n", + "\\begin{align}\n", + "w = L_\\mathrm{b} + b - \\frac{1}{2} \\varepsilon_\\mathrm{f}(0) b\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "Pw_up_pull = Pw_pull" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "b, P_down = sp.symbols(r'b, P_\\mathrm{down}')" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFGUlEQVRoBe2Z73EVRwzA73kowEkqwHQQSAVAB/ypgNABTD7Z3xjoIEkFCXQAHWDoADogcQfO76esbvbu9vzeuzfAs8ea2SettKuVVtJ6b706Pz/vajg5OXlG/z7tXuG/A58V+hD8I+2U9pyxyS/i/UCrsVNpFgbr7Ufw7eQlhvcW+g7t5j46dpCG1hhDfy79v2p+Rf8ObdR+rXh7Qzadwro69VrGHhXmTy3h9+bNOWVNdUTs44yBIUc2F8mZad+GPeeUkfKAmACOKrN5UMw5PZn3LRk3xothaNaTh0EP8E25p7QHtIf03/TCPSMmTmGfURB+wfCX/5Px+4nft/CeV7yeLGM9OJ58b4dbTmU9Pewt3oDQWVpuyAYzvt6QVk1p2NJa+efrmbq55kGk2Omsp+YhMVbLeG8fgjeLvG0EI3/KmJT7J+AFPPsd2PrMFDczvK34N1C5dfuZ9gFa3crlv6761rnNUukza+AUwkyfwSEBfwIoicXBfY1B/1YPpK+el+DYJLDGaeQtx9F/Q5N0TGQHWL33wZ8VAPZPK7nGW99H8OKwAn+gPcj+OP0eM7hDeGGkkLs7HgovHF9BGqIOo36v1gXtTrv7GeEOWsM0UJ2C0bxD3w0QbkG3yqG20bTP+V1EikmGVGakH3132JPuFbgFoQC5Rs6Bd8OWXF5EqpqoY0/RZ1SMwt+0R/TF9icwWnuwTjrV5+NkdpsREUHx4Uh5PfqUzmHNKLQb8n7E1xk39gvtD5r6rTXn298KDrYaXQbjiIu6u49yPjyNjQjKo2/KeMv3MAioxgwMhZ+pZMGflb66TL1BFIqqMRps3iKn1MhiRtdFn9GsL403ty36OHDAfrZoqGOsIw+V29AtQ3XUiCXYHxxYzNP4OC2hYyzYtU31x9Cx7uz3FIMuLSyO1D57fO3UPkentu1KRmp1fHw8fE6qXb6k9PXpd1kCdyVr6tqpOv24kvi54LfR3kHc0hda5a06v5QXqWBTvA/6JuLdTfBmX98Lvesd0fwi9kMx3xvpzsMip1Du5XUnhzQJPX6vvQLnu33TaOTpvNPWwtKacnE/PTTMnVwMzI+bNQry86Olyxt7/1XdGlDztnYKI7z623IRU2QXyOgMPjMaCptfwI1x3VZOlah8AeuQX6nCTpFifkQKnYNI0TflAqCts4G8iJpo25rywdKnZyEjZRHvAtbmwGDW0NH6wOjgtR5fmutu7FRZqE6RdGr8iNJcqMUsOhX558HTVDCddWqx3o2dYhEfFzNKdPud3CX9sp7UHZEAG7nX4Nw019oKNnKKBcxvd7N+Q8i0ax4UjHW3NVr5J/qt5zbHdMj61JKmjdOxf7VCtlbvWqdQEkaDc1e1IwCef1/mIuW74YqmvOk4/Ek9heLyuCLNfOf6uJKbslbvWqdQ5utQnXawejBFMmI9sxhyJgO6mUbwI0oMqes0dIzm6FA8qcHXwQv1quDAnzkoC190v3MBF+qBOe5+PERCuyEa1YKM/CDV6oHMNcr5Frip3m72I7Eo9OH9h3qhmkbmLrvjvv/1EYHW0X/Bq3p8TSPLR/7mGOTq9UT0EAnHwWv1usYk/cpElUV60DdSd8FGJQDau58pGWPAnlbvaP1/QGLg6Ae5Rv1JMwK2Dl4e5XYFx3jBFU8ODXhroeWUxmdqNBVgiPe+uPs1B8wwmafubd/tZ7TNsy+sqflp+y25kk7NHhRLY0GKWQvWjXXnUewJ2B8i9BfBNnr/A5/z6m6dWthQAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$\\displaystyle \\frac{P_\\mathrm{down}}{A_\\mathrm{f} E_\\mathrm{f}}$" + ], + "text/plain": [ + " P_\\mathrm{down} \n", + "─────────────────────────\n", + "A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sig_down = P_down / A_f\n", + "eps_down = 1 / E_f * sig_down\n", + "eps_down" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle L_{b} + b - \\frac{P_\\mathrm{down} b}{2 A_\\mathrm{f} E_\\mathrm{f}}$" + ], + "text/plain": [ + " P_\\mathrm{down}â‹…b \n", + "L_b + b - ───────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "w_down = (L_b + b) - sp.Rational(1,2) * eps_down * b\n", + "w_down" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f}$" + ], + "text/plain": [ + " ______________ ______________ ________________________________________\n", + "- ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_bâ‹…\\bar{\n", + "\n", + "___________________________ \n", + "\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_down_pull, Pw_down_push = sp.solve(w_down.subs(b, -P_down / p / tau) -w, P_down)\n", + "Pw_down_pull" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( 1 - \\sqrt{2 w - 1}, \\ \\frac{1}{2}\\right)$" + ], + "text/plain": [ + "⎛ _________ ⎞\n", + "âŽ1 - ╲╱ 2â‹…w - 1 , 1/2⎠" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_down_pull.subs(params), w_argmax.subs(params)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: w \\leq 0 \\\\\\sqrt{2} \\sqrt{w} & \\text{for}\\: w \\leq \\frac{1}{2} \\\\1 - \\sqrt{2 w - 1} & \\text{for}\\: w \\leq 1 \\\\0 & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ 0 for w ≤ 0 \n", + "⎪ \n", + "⎪ √2⋅√w for w ≤ 1/2\n", + "⎪ \n", + "⎨ _________ \n", + "⎪1 - ╲╱ 2â‹…w - 1 for w ≤ 1 \n", + "⎪ \n", + "⎪ 0 otherwise \n", + "⎩ " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_short = sp.Piecewise((0, w <= 0),\n", + " (Pw_up_pull, w <= w_argmax),\n", + " (Pw_down_pull, w <= L_b),\n", + " (0, True)\n", + " )\n", + "Pw_short.subs(params)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "get_Pw_short = sp.lambdify(sp_vars, Pw_short)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('<div/>');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", + " 'ui-helper-clearfix\"/>');\n", + " var titletext = $(\n", + " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", + " 'text-align: center; padding: 3px;\"/>');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('<div/>');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('<canvas/>');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('<canvas/>');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('<button/>');\n", + " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", + " 'ui-button-icon-only');\n", + " button.attr('role', 'button');\n", + " button.attr('aria-disabled', 'false');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + "\n", + " var icon_img = $('<span/>');\n", + " icon_img.addClass('ui-button-icon-primary ui-icon');\n", + " icon_img.addClass(image);\n", + " icon_img.addClass('ui-corner-all');\n", + "\n", + " var tooltip_span = $('<span/>');\n", + " tooltip_span.addClass('ui-button-text');\n", + " tooltip_span.html(tooltip);\n", + "\n", + " button.append(icon_img);\n", + " button.append(tooltip_span);\n", + "\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " var fmt_picker_span = $('<span/>');\n", + "\n", + " var fmt_picker = $('<select/>');\n", + " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", + " fmt_picker_span.append(fmt_picker);\n", + " nav_element.append(fmt_picker_span);\n", + " this.format_dropdown = fmt_picker[0];\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = $(\n", + " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", + " fmt_picker.append(option);\n", + " }\n", + "\n", + " // Add hover states to the ui-buttons\n", + " $( \".ui-button\" ).hover(\n", + " function() { $(this).addClass(\"ui-state-hover\");},\n", + " function() { $(this).removeClass(\"ui-state-hover\");}\n", + " );\n", + "\n", + " var status_bar = $('<span class=\"mpl-message\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "}\n", + "\n", + "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", + "}\n", + "\n", + "mpl.figure.prototype.send_message = function(type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "}\n", + "\n", + "mpl.figure.prototype.send_draw_message = function() {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", + " }\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1]);\n", + " fig.send_message(\"refresh\", {});\n", + " };\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch(cursor)\n", + " {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_message = function(fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message(\"ack\", {});\n", + "}\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function(fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = \"image/png\";\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src);\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data);\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig[\"handle_\" + msg_type];\n", + " } catch (e) {\n", + " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", + " }\n", + " }\n", + " };\n", + "}\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function(e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e)\n", + " e = window.event;\n", + " if (e.target)\n", + " targ = e.target;\n", + " else if (e.srcElement)\n", + " targ = e.srcElement;\n", + " if (targ.nodeType == 3) // defeat Safari bug\n", + " targ = targ.parentNode;\n", + "\n", + " // jQuery normalizes the pageX and pageY\n", + " // pageX,Y are the mouse positions relative to the document\n", + " // offset() returns the position of the element relative to the document\n", + " var x = e.pageX - $(targ).offset().left;\n", + " var y = e.pageY - $(targ).offset().top;\n", + "\n", + " return {\"x\": x, \"y\": y};\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys (original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object')\n", + " obj[key] = original[key]\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function(event, name) {\n", + " var canvas_pos = mpl.findpos(event)\n", + "\n", + " if (name === 'button_press')\n", + " {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {x: x, y: y, button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event)});\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "}\n", + "\n", + "mpl.figure.prototype.key_event = function(event, name) {\n", + "\n", + " // Prevent repeat events\n", + " if (name == 'key_press')\n", + " {\n", + " if (event.which === this._key)\n", + " return;\n", + " else\n", + " this._key = event.which;\n", + " }\n", + " if (name == 'key_release')\n", + " this._key = null;\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which != 17)\n", + " value += \"ctrl+\";\n", + " if (event.altKey && event.which != 18)\n", + " value += \"alt+\";\n", + " if (event.shiftKey && event.which != 16)\n", + " value += \"shift+\";\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, {key: value,\n", + " guiEvent: simpleKeys(event)});\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", + " if (name == 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message(\"toolbar_button\", {name: name});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function() {\n", + " comm.close()\n", + " };\n", + " ws.send = function(m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function(msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data'])\n", + " });\n", + " return ws;\n", + "}\n", + "\n", + "mpl.mpl_figure_comm = function(comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = $(\"#\" + id);\n", + " var ws_proxy = comm_websocket_adapter(comm)\n", + "\n", + " function ondownload(figure, format) {\n", + " window.open(figure.imageObj.src);\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy,\n", + " ondownload,\n", + " element.get(0));\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element.get(0);\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error(\"Failed to find cell for figure\", id, fig);\n", + " return;\n", + " }\n", + "\n", + " var output_index = fig.cell_info[2]\n", + " var cell = fig.cell_info[0];\n", + "\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function(fig, msg) {\n", + " var width = fig.canvas.width/mpl.ratio\n", + " fig.root.unbind('remove')\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable()\n", + " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", + " fig.close_ws(fig, msg);\n", + "}\n", + "\n", + "mpl.figure.prototype.close_ws = function(fig, msg){\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "}\n", + "\n", + "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width/mpl.ratio\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message(\"ack\", {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () { fig.push_to_output() }, 1000);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items){\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) { continue; };\n", + "\n", + " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", + " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i<ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code'){\n", + " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,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owUAACGI+dw+CnAjevXq1eCNqN5//30ZYzRjxowmf64pU6bIGKOysjK//zZ16lTNmzdPpaWlWrZsmSZNmiSPx6NBgwY16aY71dXV2rJli0+KiorYYGHq4MGDzt+q1ycrK0svv/yy9SIZqtmyZYuio6NljNGFF17IzbAAAECzUYDtowA3olevXsrJyfE7Xl+AZ86c2aTPU1dXp6SkpGa9zHn27Nkyxmjp0qWNPjYvL++4d5tmg4WX9evX66yzznJ+/gkJCZoxY4b27dtnvUSGekaPHu2s62OPPWb7Rw0AAEIMBdg+CnAjAvUS6Oeff17GGD300ENN/toffPCBjDG68847G30svwFGbW2t7rjjDp87PA8YMEDr16+3Xhzdku3btzsvKU9MTNSHH35o+8cOAABCCAXYPgpwI8aNG9fgTbAKCwubdROsYcOGKSYmRh9//HGTv3Z9Ab7rrrua9ZzrscHCx9tvv62MjAyn+MbGxmrKlCn8re9JyGOPPeas8w033GD7Rw8AAEII87l9FOBGLF++XMYYPf300z7Hc3Jymvw2SAcOHJDH49G1117brK/9wAMPyBijoqKiZn1cPTaY+x05ckQzZ850/jbVGKP09HQtX77celF0a6qqqnT55Zc7611SUmL7NAAAACGC+dw+CnATZGdnKzExUQsXLlRpaanGjRsnY4zy8/Odx4wePVpRUVHas2eP38fPmjXrhHeOXb9+vQYPHqz58+eruLhYL7zwgiZOnKioqChdeumlLb7ZDhvM3f7973/rwgsvdIpYVFSUbr75Zu3atct6SXR7Xn31VcXHx8sYo7PPPltff/217dMBAACEAOZz+yjATVBTU6PJkycrKSlJMTEx6tu3rwoLC30ek5ubK2OMKioq/D6+d+/e6tGjh7xeb4Off9euXRoyZIi6du2q2NhYxcXF6bvf/a6mT5+u2traFj9vNpg7eb1ezZ8/X23btnXKb48ePfT3v/9dVVVV1sthuOTee+911v+ee+6xfVoAAIAQwHxuHwXYxdhg7vP+++/rJz/5ic9dvq+//nq9++671gthuGXPnj1KT0+XMUYxMTHavn277dMDAAAEOeZz+yjALsYGc5fnnntOHTt2dIpvly5d9Pjjj/NbX4t58cUXnbtuDxw48Liv8gAAAJCYz4MBBdjF2GDucOjQId16660+v/UdOnSo3nrr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yvpATwhpXrZu3erznsHGGN1888368ssvbV9iAACwJlTnczehADdBdna2OnTooPnz56u0tFRjx46VMUYFBQUn/LgBAwZo2LBheuKJJ7Ru3To99dRTOvfcc5WQkOB30mdlZalnz54qKyvzybZt21r8vEN1g5WXl/Oev4S4IFVVVXr44YedP2cwxqh37956/fXXbV9mAACwIlTnczehADdi2bJlMsZo8eLFPsezs7OVkpKiI0eOHPdjG/q7t/379ys6OlpjxozxOZ6VlaU+ffoE5kn/f6G6we6//35nWF67dq31IZ4Q0rps2rRJ559/vrOvPR6P7r///hNePwEAcKNQnc/dhALciLFjxyohIUF1dXU+xxcvXixjjDZs2NDsz3nWWWfpxz/+sc8xCvB//OhHP5IxRj169ODOz4S4JPv27dOUKVPk8XicInzhhRc2+CchAAC4VajO525CAW5EZmam+vfv73e8/uRdsGBBsz7f7t27FRkZqdtuu83neFZWluLi4pSYmKioqCj17NlTd999t7766qsWP/dQ3GCffPKJIiMjZYzRjTfeaH1oJ4QENitWrFDPnj2dEhwXF6cHH3zQ7x8ZAQBwo1Ccz92GAtyIXr16NXgjqvfff1/GGM2YMaPJn6uurk4XX3yx2rdvr3379vn8t6lTp2revHkqLS3VsmXLNGnSJHk8Hg0aNEhHjx5t9HNXV1dry5YtPikqKgq5Dfb3v//dGYz/8pe/WB/WCSGBz7///W/l5ub6vF3S+eefr82bN9u+BAEAcFJRgO2jADeiV69eysnJ8TteX4BnzpzZpM/j9Xo1atQoRUVFqaioqEkfM3v2bBljtHTp0kYfm5eX1+BdpENtg910000yxig+Pl7bt2+3PqgTQk5eli5dqh49ejjXqujoaOXl5enQoUO2L0UAAJwUFGD7KMCNCMRLoL1er0aPHq3IyEg99dRTTf7aH3zwgYwxuvPOOxt9rBt+A+z1epWcnOy8/ZHt4ZwQcvLz73//WzfffLOioqKcIpyRkaHXXnvN9iUJAICAowDbRwFuxLhx4xq8CVZhYWGTboJVX34jIiL0xBNPNOtr1xfgu+66q9nPWwq9DfbWW285A/A999xjfTAnhJy6LF++XGlpac41IDIyUr/5zW9adR8EAACCTajN525EAW7E8uXLZYzR008/7XM8Jyen0bdB8nq9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\" width=\"800\">" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "<string>:2: RuntimeWarning: invalid value encountered in sqrt\n" + ] + } + ], + "source": [ + "fix, ax = plt.subplots(1,1, figsize=(8,2))\n", + "poui.plot_filled_var(ax, w_range, get_Pw_short(*param_vals));" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Clamped reinforcement" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\frac{\\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}}}{\\sqrt{\\frac{L_{b}^{2}}{A_\\mathrm{f} E_\\mathrm{f}}}}$" + ], + "text/plain": [ + " ______________ ______________\n", + "╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} \n", + "─────────────────────────────────\n", + " ___________________________\n", + " ╱ 2 \n", + " ╱ L_b \n", + " ╱ ───────────────────────── \n", + " ╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} " + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d_Pw_pull_dw = sp.diff(Pw_pull,w)\n", + "K_c = d_Pw_pull_dw.subs({w:w_argmax})\n", + "sp.simplify(K_c)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAABqCAYAAABJeq0lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dS5IcN5KGk7RazYpdPEDPSDfoJk+g6v0sJNYJSN1AbdxpRxvdQOIJSGkxu1lIOgHZfQNJ0wcQxdVsOf+HgoOICCDeEZmV5W4WicDL4fiBcMcrIu99+PDh4OQIOAKOgCNw2gh8/fXXn0vCT3Q9jO63Cvtpa6kvti7A+TsCjoAj4AisgsBLGYU/wUnuAzl/6LqHf0u6P5Y5QunCkjk5Ao6AI+AI7I/AX7MimVG8z/yb3Y6aScg4PJME3+r6IV6bCeSMHQFHwBG4awhIx16pzn/XhYuefaOwb+Qmkv/X5Dkc/kv3X2T+zW7vDe1JSDCMA0biB93vItRmtXXGjoAj4AicKALSr19JtOdyw5JSTcyok9mP+GcpjcLR15+24xSOEZpMvTMJMUVoCvxJ96sbCPH8i3hf66KcUaQ8m6/BjRLEEzkCjoAjsC4CfxO73o1o6T9mEH+X+557XR3Fr7Dv1hSraiRUENMeBIJWNxA3bAN/KtypaIx354QQUDtNNuqIr3xu2E+oHV2Uk0UAnftlTTo9R/9QHM/gV7onGctPDd2pcPYqvtdFujb9TfEM+Bn4s7/xiy7b18BAvVBcZ3ZSNRLKwDIT9I0yGqObkBV+xTNUoiTUCuyLLGKZAL0Jif8iZRjlmzSzmlqRhTLaKKbRMafK4OkdAUegiUB89gmsziSUJt+4bjL46OPZ/ExpmWmwJFUzOhiSH3X9VWn+qeut7gnrLFMVjYQyYNGwSNCLG2f13+fiaDOV1ZlXGFJeAKUSf+zgk1XC6hO7G/VjNEas56KBhHgsGiwco95e5tERQOei2PPN6UlCKS8nUHOjcNlmoHj0+mtdts9sMwcmAqbzG9mKRkIprCAszBazCIT5RLyrVrMh5QoelTVJyUUwv5c7xnovlnCqfIsLnM7gGEZ9upTLc5z6QGJ5DTfkoH6M8nmgC92x2/O9YZX2Yl3cjxCGYPkILHVhSFjh+UL3ptyTfApLujqm7RgchYcwuZTHTMII/ZjyWyBuzUgEhap4piBbEFOizpKFBMd4WPgj3b/Dr/AOIAqfSlOVXG1db2q5Y9NX5VP92dinUcEEol3yBqUjgR0jh7exA+h2HYrtsqtRN8lVNn1x9Mhe6WeP4mNZB7lr9Derwp1xhRvtxMoD/fMf8oc18DsDwLKKYgBscJ5z4rRT0IlyMRSXusb0T/aRcyOQ8+QeXWK6Fv+1LmYYHaoZCZt2sLGxKqmCKDQsYwMQ+SmT3fq0Sa57RnWLO1vkPVrJKT0vDZqh1O22NCSf4jkvzd4Q31BhhIbB6JDCzZh04hYG0JnyDrWQ3aTse47sq4Z6ksR3MLH6XphByOWoPM/yD7q2GmSeFcLCy3RNY+alcPSQ6eJDxLUzO6iAgdHh2elQ5IMeDgPN6EeG4qpJzUh0GK8YgOCMNtpE+NM8UMIzi6DzMarvPTuc5yvcT1VyKGE6+ecAqGtswxSKHhU0KJ9koNGhRke6CUq/HH3rbDyl2Bk3Krdo1GGlONqmaLAU/k7xjYEAeaaQ8oeHR+6YkdMU1p20KoOHcfRAosPAA+gHoZ2EJc9LGuw5NHUEhBUDu+uY4kv5uQ3PnFz6f/582fPAc8dz/krpq89GbAcl6xC6hHzoNyLhxV5tMBoE5HSRewr3xUyFdKOCJASVv5JbUh4I/ofi/tQSFqU4W1nHMjszl5rASo+x4jIZkXkzmiCfdZa+KSRyrj37qxn1g2THKK16JrsF9J4j+0FD3ZLNvV0E3nWDzjdE/Z+RPn30qe6ryroPAeULqwR9abI4dAAnlr7TxaDmW12mF7JkYQDXN1hkxsDSFWUP0v3BFOsm6HvoMQa/SvCaYZqrrKtKrl21CPzvchkJ/R7jaYwtaax8GNGDZGvMJORPLyLqHuwa8UsEFz8wx6gzq9qVVCa47zKyj/VkILEadruC5YXtioD6yTNdDMZQ0Bw3nWUgZgjNPoLtG4RZxQweZEGXvBmbd2gmMZbPQUBhVTnC1fegMSMoWjiF16anNsWa3BDiaUrOZgVD9WF5y9LaEtPlUKa58RPlA4cGtspPY2MYEilsMk4pc/emz6gfVBYGijTgXCLwHDVaKWRujOzFh7ryUIIDbRTaVi70WBejuQYWIWbcT8dQixf8bVrPvliaMek+yCA39BW59H14VKfs48S4fakiFvQB2ucgf3he5IbnWS44go3NcHn+OTUY+rJc8n2ri3wvdPHc0Z6Ec4rHnkN5P1Lku2v7qEz6O23OoOkobS0ZrI+zRAWuk0j5ycMAzF6sM35VPhfVmAkRETw6Cg1a3PyIaegMo0l5eBipEApjDiHTKCBVFp0yX8qxzlk0anOEKeQZJV+UjeyMrNmfgXj4kHmWfOKz1KgbriiDd7rwN9pJZcwyWMpH3dpLhHRqjA71p52SAVIYZRNenHorvEqxLGZLQeFnCTlEwRoxOL3UlYyE7mk3ZDTiQaOfPtLVMOSW4Fxd4UMbo8xDv5QbjAP11T3Pb2gX3dvzRPiPxOniMAZ4fSqXQxn0ZdKhJ1DI9O8cd3kT7dI+kot2pr3pByz1zHrektTLbujztnLAfsTkvqY8jcHXGHEWGwkVysNBQz7UxeviNH5JOfDATQWYDsb6W2c0qrBFSk5820RHzxUFDz5E/TqktHRglBKd6Je2jCvLZ8ovnY8W//AAyk0PXy6kwqvyKc5mAOSdbNRj2XylMi1D6f6gq9TuuVhj71H6jCoDiS9t8CZ6ueeEVypbfkap9vDEZKOdjqGO5dmxW7BvYwy2uXys71L3drrRQpxpQp5fTju1cUFRMTsz3Kg+aZKxVlx7b5I0gRRHH9i0fWIZyElbY5Cm6q4g65o/kgGjMNkwLJXhYikDCR46gFweGlM+aTQBf8UxLWR0MJqUh/R0olxxh/wKs3Ioe7KSawsR+TFKz2Vk+gthBErEaOieLjpsI03kh/JZRT7xoaMexDcpYe51NTqM/LxxacatKJ/ikXeRURcP5MhlwWBZubqdT9RBuZOyiJw4KWVGgbKSgo7x4QEmr64kh+7nDiQoz0awT/LyFE75yNjAXn7eTwnPgu7vPEWc6Gtm3BMmiqPv4r/WZf2Idkv4KT61IwlbtGn7qGyMG7LzLaOO/mnJMtorXrfyb0AXGwlDiEbVxYP1TC4KNzW4wrDIRWVu+XNXeTEqB7mdBlLYYiXXKosHnrJstJ6iFUajUl6DFE6e0Il1n9fzIP+q8sWCUUxtpUSULflQLjKBG1P4PvmCvEqDojVju9So87DnS3XyziaMa6oXXCSrYR2MpYLaWAQjZeliHqsb9S32PaUnTT4wIGu7PLA0g0E0MtDXTbkRBgUZb279VwjYc9OHC+2W07vcU7u3dpZLW9ya9pG8s1/0rGGxR/j9lQuxhxujEEjAMJpjytnXWWLq8ICSnjXKZCB0j9EJnU6unYBCyUEolQYpzZSZC1PJznJWZIiCucyZKy0dm3oyaiVvMGiWRv5V5RM/U4wdJUxZVq5c5GBprlc+S690tAfKj8ME9kBbNO2XK0YLr7m02dtapIWrHMqy+lhw2yVNreyw9KP41Jd0j5KAp536OCiM+sCDi+XPtjJScCCWQGttTwKMJ6PeVJ78yNCoa+TfaR+lu8tkfZP2qZGlsfgcZwvrczdpH7UnfLnYB2MpufGM9wm0ZZzk6MNys6IvKpz/N4b/XyW+GKxKoCAZ5T2TyyYLjY4S/6yYoRWo9DzMj8nbikIJNRQHvHURRlmzZi7Kh3Kxtc1WkcGL/A0FqjwoDeQLdSxlIkxpFssXedsMpz16TkWrLGQENxTeKPliZowdDwD1CUZZPKYadcoG//bIWsEfSfGzR/YfuRxorzYOyE87pT6jsoLykbt0tkTd2oqMMFv60m2ga5WVyrfAu+wKDzOu9N8GXoqjHaHOLO4mePTvZu0jGWl3BhEoZj6Nwb4XG9d9g4pBwY1fTIj80ODJvJjvN7mTj9wqD3jTPx/pYjDF82KEziWc01rtvh7S3LeULfff5ef6N11TyWYTKFEUDmu1uVBFfkoDYKwFMkKnMewijMYq8bCy0gOqdKOUnNKF8uQ2jE9LuDD9jWlbUaO8s+XLuFOfg2QoKmGFm6Gb/MApL53CjDoPA4RRt1laCBj4Qb5i57J8KgeswZlr1shePJCPDg2vQArDHwYhuu/0jxhGmXNnS2CelwfWl4Uwn0XcLPtYHxJEgRgcPontFIOCw3PBsmjep8nbzp/nKd1v3j70IV3ol7BkqXtmFhzQmSqryc/qAwNoLmYr73T1DVQtH/2cMlN/tIghV+XwjIc+qnt0qZWPixEnHjmKVPz7UmW0DRYY9inRIlPlodJUBuXBiZxeJQKTmIeHvkSMSmrrylSehzechoh8sLbvS4wUDtAYHvJAdLRGeqVB8TGyztOwiR6MUeTB2+GDa4xKM0k+lXmI/F/qFgwNk8ZoTOHU41F0G/jE/GPlo47ISN1oJ6bYYVah+0FSWrDs/B9vKaPJpTiWH3lAEsnPjIABQnGkpnDahLLo1IYJG9Y8dNX+pTgwZBTIUlyoV+RVmrEqWZOU1owv/el3XTwPtM0bXQ91oTQmPyPKdxakutMWKH3ri0EhKTy0o1zwp2/Z84ifASDpDnLpf8TjkoalPOLb/V3BXVK63dtHZdrsGxlfyG916wrYClFadCvPmNXf+icjeXRRhxQONijxn3VRXvEZ6WTMApSHZxyD13juSKKwYLiy5I3bi4ZvPQ8jUR5olp+qD3BenNIVjUCepnJPBwXEZ7Gs3pmL0tCgtoRTZKk0NP6oTlpk0AycJB9Zo4ydxmyyXcensuwYIiMV2mpSuco/Oj310oVCpa2mLhHSZracGR4w+QdJ5VgeymTkRPtT17FLoCWDObrOgwLe8gTCE8VWfZ7AX/ElDEPNFU9bjm7PkCn7Uf4S703bR2XShxl0YCx+lstyUVHBZ6LaLfK+Nc9I194pAcvHI/O0k6EjEy6SF71kBs4MbTtP8G9iJCQAI0UqFEbexZJXClQ5i5TcSmJU2Zy6fFHwF3InGfVqhYcj6Jw2EgsPuDBilkCf6RuR0cnnKpPJhnq4Gp7iriOg/hqMxRQcYp48C88AA5mikVE4S1s2c8C4MGNrEGliQOPAjyVSvM28mcFgZJi9MEgL+lkuujqQ7ju87lvk2q4KQ+BU+Nr8W/xQcg90jZ65tPKP9qpOlMNyw0H3TIsBfIhOWj7VgVnTXkadclD2jOzBEmJkD0ZFiunAmSnzZFJ+yuMhpBwujIaTI3BUBNQvUd4MkIqrKIpvD4xYNm3om8jDDq0w0CsRfJjFs32AYeBZ6wy4aryGZhJ/LpV4amGq3J4zF0a7ado2BotTl486SEbW9/ei0SN7ycVDhGKHnst/qWvOHgAPxl6zpSCs/zgCNQTUh1H2PAd934BCz6DcryMf8jyQnws9BF3qCoNxhXUUf0hxsxyYx5H+FXHwknMll4FikdcmG9cU7uQI9CGgTjn5cEMfvzFxKpORGFPu8FCNyeNpHIG1EVD/CwZCbhhsymVGgTFI/VL3+TJTEEFh5KMPh03u6GdmwBLUK/ltWUrej6RwNsuZRXQGVwrDUDGAwkAUed1XhJMjcAwE6JiMYjZfIrTK6YHYcwnUinXXEUgIqA+i6L/VxaaxHQf/Uv53lkjhYXnI/OYq3IwIPA7Rz+yYwzo1A4EBgvKZRAhQHsphb8IMVJHX0HJTYOY/jsDaCKhj7rZEuLbszs8RWIAAM2gGR7iJ9DxgKA5yMSBPdKHU08hf4eRh1A+x7EpaloiqpHg2oW2pipmEpYUXhgYjUdwPsYS4biRyNPx+VwTUaffcB9m1bl6YI1BCQH2+92+YFY+xCAYjz6/w9zG8E5eny++Vh9lFcYaRpxu69+WmIYQ83hFwBByBE0RARoAZAUbjSvcc8JhNfbyGZhK34nTTbGSOlFENwpSS47PFs9FHEqu32NgJmaLyljEu8nfWOXuZzIhUGayT8rISIyknR8ARiAjEZ2LSScsaeH28hmYS/6ox9fB5CESlx9833hoDEWv6UjLzvR1OQDzVNeudhRmoUR5vtTJqcnIEHIGdERgyEjuLc97FSdExg+DPgDYfgW+AZL7BxUxil5G9sOJEB6Mlvlvj5Ag4Ajsj4EZiJ8Cl7DhJMPdFsM2llHx85OtDdO3YXCpX4Xb8jjBOWawyzU0F9NzEslnewsg6OQKOwI4IDO1J7CjK+RYl5cZSCQouH42fWoVZPuKT2izvVCkqaj6U11kuUxibZ8wyjDh/nY7xWeAcFz66+F9kNulu40xsTrU9jyNwdATcSOzTBIy8GQnvskQzs0rMHnqVr+SnHuFLqtzrahgU+XvPbc+UK8/GXggb2X50NkfF7x2BDRFwI7EhuLCW4mQWwR+v9J6P3liMMez53DMKuEiSn5d/MCR8LoA0LD8lI6GwK/kxItQXCgZR4WH2JJcvv3LPZwWIQ9HzPxSjDYvShn87k+uzCYHn5AjsgYAbie1RRjm+3r6YxSXw/ZfqizpSzENLZXx0jG/KYCwOctuzEj47gIF4qDhOSWFMMDyjjYTSQi90YZza/IlzcgQcgZUR8I3rlQEtsHuusOoIvZB+9yApbPYRUPL55vRBfvu2PPeM3vkXts6mNgIr3JQ9G9pvCcspxjNbeRXDMUphtpGnG7qPfJAFmZ0cAUdgYwSOOpPQg47yXPSmYI6P+A3+nWiennvl4QuJq1C7fPkZVaN8T33U29mPkMwYiCQ3ddDF6azOhnULvEdKU1P+xFl+DMbc00rIxawnLXe1ZHCvI+AIrIRAx0joIWYZwIglgk1I5bAMwzsDvUcpkUdXTekski3KUPyE7iLGHzOjfE0pfgw9oTthgJFmtnPQvc0cUOB8HTJ990X3jNwbMw3y5KQ09J1in4n538ml3aEl/w0NpsUZTeDsP46AI7AaAh0jIc75NL5XKSyU4gspDJRRlaLS+U3uZ7q2ULYNGVQGI39GpyyFsI+QGyeUEuGsu4/Fhfql0bjuT45UF5aJbKnI5EvGwQLkBqWs9Ch5Np35fn2jTeQHr1qbgi1ffl3jSCzHdc2g6dbJEXAEtkKgZCRQhIHaSsDCl7riywM+ZqmBES6jUwxXQyHJv4hKMiiMJZVgDOR2NnEVxvLYuwkFoxg58XMOhPLnGC/vK9AetF/NIDTqG9OD51jj2shf8IQ9D/Hle/yr9otCWR7kCNxpBEpGwh789uhyTaD4dzArp8hX8ShYNjkZueazm2L6GYE1GZCrNvrnD3Ly2UW1WKUzmacYlSq/E4hg8GB7AJOWeoQFxmHodNToKtIGsR2QyY3EaOQ8oSMwHYGGkdCDx6j988iGo4ark8oYO4tglMhRSRTM4zUFGZAB45T2SZSWmQD/IoVxGDP7MVHBEuodPYsv5aF0+TPzUK5c8vKyGvsl3P+m6z90jwxHo6z8awlx7BkSxtcwPhomXrAjcO4INIyEKsvyDsSSwuojtKjwaiP4m5L1q3T5/7uytJCWwCwRaeI9f0nZWRqydG1XaVEsRRkUZyNk4jFMzAbYwA0jaLlJ4et+qPxLyla6IcVOWbzFzHeTbJP+SSz7oDBGzZQLBrUZjqI2J2S0OrMfcUxZqCy4Pty81l6AI3DHEUhGQg89ChElwJLKaKXbxi/yuZJb2qDECPWOQJWPkXWugHgBC6WZSGnSyDumT3HcKIy6zJGBslHKof5yKYdRc4NieBj56548JRoc5SovcjJLgUe+lMWSV/4pbpbdwjq83KOQZKRN8nY5ihxZoT6TyMDwW0dgKwQuYCwFgEJDKTE6690rUHyVorIjPzOB17rgFyiWwRKSrWtbVNtlyQVFbcoZRcoIm8v4MUoPo3qFNRSX/CjcuTKQL+dHGSjog/iCEYaHvZpq+aSNRBqT18IarnhZHTBK+R4QdciXtnhLOfHSPcar19jGgliuCmXg1/1q74RE/ps4knPM+y7gAcZOjoAjsCECF3ogUX58HgFlwvHOpIymlqu8YbQpFyXHrCE3CCi13N9hr3wYl8YsRn6MBPskuHy7BxdDwotZ+bKUgoIiXCIDcqfyxR8sbNmN+jDq7y1faYymjHRR+rlRoE3ymcPvxhRXMiDTZGOufGOUb17UKd+DUTKApyyoy+YI3GYELiQ8ijEoPimR2QaiBcIL+fn3NZQqswIeaNb2TeG2kgfFhxyd8pWHZRjSm5HAHz5zIbd0np+00CQZxAtFDeUziRCguICRXOSjPmPK79QlMCv/kBajchDvcHAgloWf0135LINksynyB0vW83F7/4ZU6THuzOKS8ZR/kGI+li/zgQH7PFeKW+Njh8wiqv1pUEBP4Ag4AqMQuNADywtOKFu+1c/yRGkvYRQzSxR5Msqz2UTvLELpGUWz74CCTuUr/IH8tqzyXP6DrlEKk3S6RsmgdCgzW94CA3kDUT6KFCMx9QinKf18mSwwLfygSCmXGR35uKfe7MdgFNccMfM3pEFJy6V+f+gqzjAUT72hzsGBm+De3zeKZebXMOTyW3v2Zh4RieyNGdaIPJ7EEXAEJiJwQXo9uJxc4aFjVIk/KeqJ/PLkKD4U0iu5vd/8URpGqZ2RqsLfx/BOnMLH0CgZVA6KrKHMxjAfSIPsECNeuw8B7R+VH5bI2uEb+XNjhwEsyiaZHiiO64UujOhUYjmMtj+IF7O0K7lgDL81qCr7GsydhyPgCNwgcN+A0AOMImbEiqGwpReLnuyKByN+RsU/60JZr0Lii+JCVpROWJqpMd5ChrHlK52N/lFmJ0OZXMjEqJ79nRI9AT9dGBGW2Dp9QmHsCXHl+ynGi9kHG+4YGGaUYWlIfvgFinlr+S1Zn5vv2/Sl8zhHwBGYiUCYSWR5Ub6ccmLNfY1//8I48B6AKUx5l1FUMjXFVmK+qgwTy2eG0D4xVZJx9zDVA8XODDIo71wAhWF8WSazGQTth9JPaRWH0eg7BsxJtjBrkcu+SlDouse42+dP+vIrS5ngQYzcJE85pYc6Ao7AUgQaRiI+vIz02GR+pmvRspPyM5vgOhodWQYM7vXRKl8pWJgwg8BAMENo/A2p/GHGIDctv+meTe58mQrOl7qC8Vd8Y7NffpR4rsDDcWiF57ORan6YDxCGN+c/kNyjHQFHYC4CabkpY/A63jOrcFqGAIosV4zLuK2QW4qazXFmCH/onvcm0pKd/ISzPJgvCbFcRh2YAdgInjBmc4TZbEPeMLqHH0boQFyM59ABBhOXWUQ1P/lGEHI0DNOIPJ7EEXAEZiBw78OH5vtVeoB5AHmgoT/JnxTGTZD/TkFA+HF66Au5Z6XUYj+hXrMGE0vyKy+dls+xrLaMOaVNPa0jcJcQuChU9l0Wxjr0WSm3rG573b5QQYy6HccVEJdhYKbC0dqTMxCSiVnVY102O2MmyfPEO0OLlm7F46xJ+DBbfamLWSbLk7MGH3uCJBmRlZk5S7dn274lI5E/fIDgtAwBOs9vuk6+0y+r5m65w37KbqVNKEiKIuzjyGWmw/st7X2cCdzON6lwaeyDUVOFYVD54gPvBrFfdRsI/fhA11m3c8dIqJHYzLwNDXQrZIx4MjJifT5tBt8K4StCqh48GBg9TjB9rmvS4YS5+SkLkaaWR54+Er8rxXNYY/FoUDxsD2oSJiX5xItTYbXPr/BXsLdu4CGZTbGWqkxYPkitpTmJcNWF/bWzX5LvGImTQP/8hOAYLn/DyifYb/0eT6zDlGPIjRZdkL/vvY5GGRM9GD2uNQiDA9m+3o1vxi/9RdkWG64ZRW+ZxZbitixjN97n8DwPgXV/KIHHL0cgdiQMBWuuTjMQEIbhG1ZyWZY4ZQpHniWn70G1WkmYMMsKJ99aUe49YQR8JrFT4+gBYRbBmusz7ncq9iyKEV4sUfA9q9uw9osiXMWQqb5shPO2em2Ww4ap7YMwg2FpivJZhiKPzWrYTH+qtO/lbkLiTXkYAPYUIF7GZcM+GEu5zCDsnaEr+cNHMhXGH1h1luYURpvbrAP53yiss1wb0zEAS+UqLCzDyaX+vDR6qeuFLpay4EU4M2Fc8lIWcdyTlvzWjmDMshLyIg8Yko56EUZe4uEXSPfkhTdpwQW6Vnjqv7onX1HukPqEfu6fkCxnL4o6Bp2PN9DpQE4jEBBWPGQ86J+NSH7UJFm7Lp5FiBcK96EulA/KBZ646VKaXGmGfzhUPIqJpS72WL6JaVCAppR1uy6pDJQip3zYkA5lyqWvo2DDezRy+cQLdUGWoFTxEy5/m2hzDInJj4KHN4o1kfydchX5i8KR5SCXcjBW8LMvSNCXghJXHIM18IT4HBEyEmZ9LRgIIhWO7KENSKPLDiZwei2RwinLcCCd1YHwQArrldvSnYrrRmLnllAHobMxKqajOA0jgHJDmbwfTnr0FLbJPLgfQfvr4svLnbTEqSaMnG0UG2Ym8nP0N11WW4WhPN9EP/ekyZUvo+wtBya0kX11OYoRHEbKKMypfZ3/ikmzbd3bzKxdB8p9rXgMTyDdYzjDgYoYhEM8RsdkZLM58JdLvwKra12BYhjhPKs5gWsqK0a0/Y8UjvzJKMR0eXuMlTsv+2j3F2uVLFCab+Wtxfh8+XAq6Hxrt27NeDt8FEelK372nMyKYxTZVjREXfKjeEa/bUIxtJVFO435A2+lH5xJKI0pnLaSORAnhqYY8aNk+4zkO6UxJURaRt45hVG00vA9rj4+eZ5R91G23EilfIqjjvhRwKk+BAzQ20p8UrxZuWHW0EpPWY91GSbUOeGsvG0MXimepTFmX8wQWFbCiDALCn1CYbRtx6ArrEFKx+zlnQLps/QD8mCcMJgHubQPeI2RmyxHp4u1JFDlqw/nWmU4H0dgCQLqoyUjwIOLUgjLM0v4Ky8KoKoMVQ6b7ygRU1goHlva0G2VULJVBSV+QenJhR/UNlLByFi6mySr/aLwoLbivQm9+aX8tcnKDU1dv78AAAjYSURBVPt8LeYMBtqGBsVdJOGCEkd++gfK/LH8zOKe6bIj3racV+TRCmQJ67ku2oNlQ2ZTLD3Bf6rcynJcWs1IHLcaXrojcFwEpABMQTMqrRGKxpY5UJwPdLEMQl5Gvk91X1K2GLExsxmWuxgJJx66D2UoPC3f6H5NMoNHOTWyNJ14yYcCDaPsTmR/gPH8UfltxtCXI2FSSfRa4RiEF3J/j2kIQ7GP4R+yKD9GgJmdzRzA5Yku9jwwXlPlVpbjUs1I/HcUq22NjyvtLSpdHYLOwXebTpYko8/+1msd249oj+JDCcKapYt8NoBhQGEwwuQFVuIZdaKUEikcpcMspzpDSYlvRq7t8pm9oCDnKOKMdfkWuXTBn/o3lKnCzXCiHI1Iu5iycq/FrFEuzClbVxuLvnKREaxe6jKsCGPfiLbJ6yBvlTD+tFk4VKC81Jc2Bh/2KkJ7634tucVqW6oZif+Mxf6P3DGdc1spbyd3Rg+10xu3s0YudR8CjPYPUgKd50VhKH8UTf7f3igNRpemNHEf6WoTfG302Y5LfvF5IA8KKi2rKAz/c12fZeXIuzqxZPazyqA+ef2pN6d78jAUtxmPkiCXCkx1KCXIwqzchkFQeZSbK3Ww4aoSMuoC57AvQcIs7Fr3QelXGLR5P1d6MwaWhTRmtMbKbXmP6taMxFGFOpPCUQJPz6QuXo0CAlIEPPiMPMNonyQK4+SKEeEoasjWvW98NwYBZWbEOnbJGLAMlSs8S992TfGyfINBgj7VxZp9iW9IsMaP+KNgkZ91/PeRJ3UPp7PyMhRPGJvE4IRcoW7ygxN44DKzYtbFiB7DaUttnApkvyD45Vq51JkwKxtjxbIbmMADWZ7Ij0tcZ+ahcAhZjEcIqIQdxMPkDYZdfuQ1GVjaozz6B/RQFzKGdpDbK3fIcUI/nU+FI5sqYSeVaJSt1jJPCIb1RRFurJViKFYn8WV0SYen81nHt1HK6uWdO0PDU27faHFVGFQWz1j67o/8LE2yJ1FTYL3lKx8KjhE1hsHJEVgNAZ9JrAblR0Z6UFHcW47eXqqMsHQhl9EKCsb3Fz42wdQ7Ro/tEeRUHlPTp/6hNmQt/K3cWQYiFsyo2QcKU1vB0w8i4EZiEKJZCXhg82WHWUx6MjG1N8Ig7a3grOyzcKWcj6FcWZpgCYIX3R7KnT3rVF4GCvQDljycHIFVERgyEn9etbS7w4yjjmHddE6VlZe1WdaVWf54JX++8XeQP41CFU/a2WUpr9MREIht2jjJNEcM8WHp8XnMy4bppS5fIp4DpucpIjBkJP5VzOWBQwgwsltCjAg5s82mW5UUzzo0G4ENI1LN4BFnh4DaniWqJctUZ4eJV2hdBO6vy8656aHl1MNSpQ2P3iUQlcMMIhiIeO/gOwKOgCOwOgJuJFaHNJwBX7o2zPp06dsuQVoZBeJYjuL7MJySYcnByRFwBByB1REYWm5avcA7wJD9iKVHKTl7XV2vFv984/oOQOpVdAQcgWMh4DOJYyFfKVcGgFMqfK0z35w+yG8vSHHPeXi+m8+ylJMj4Ag4ApshMGQk/HTTBOij0l661NTZjxBfDETao5Cfe06xLN37mFA7T+oIOAJ3EYGh5SY/3TStV1wpeVLm07KGN93TccZoGGDB/kTjM9aKY7bRmGmQ0MkRcAQcgbURGDISa5d37vwW7UdI+ZeOM5b2N8Iyk9Lzpi6fYei8S3HuQHv9HAFHYB8Ehpab9pHifErZ681nZhd8qIyXpnhXguOwTo6AI+AIrI6AG4mVIJXCZqnpzUrshthw+ul1TOSb10Noebwj4AjMRsCNxGzoOhkZ3e/25quMks1arlWuzyQ6zeEBjoAjsAYCvicxEkUpZTaL2UCubUz/RXF7bSbzprUdiWU/oibTyNp5MkfAEXAEygi4kSjjUgrlaCvKuKOQpaT5VpON7Et5Vw2LRqEjx6qFODNHwBFwBISAG4kR3UBKmVNEKGX2HUpEeO/7EeLB5zNOgiSL//fESbSEC+EInD4CbiTGtRGbxCwlPZOC5W3o9qyB/YjefQFXzOOA9lSOgCNwWggMGQmWUe48RaPwk1yw4GRRe6kn/Xk6CaaQeGJcMDzVbzWV+MV87EvknxN/LD+f7Aj/WlfK52GOgCPgCExBoGYkGDWzUev/l9tEk89gMGtIRkIKGUM6a8Naea8iewzPVOK4LX+o3njZTv7eGc3UQjy9I+AI3G0Eakdg7ZtAc5TXOSNa2pdA0ffuR5QAicYFA/NC15x3HTBWr+AtXpysstNO8HNyBBwBR2AVBGpGgrd4IZSPLzndYMEvxqCt0Bszi49JB++eCNsfdL1Xyvdy23wPCvsqXtYeOVMMOP+NjHF4risYdvnhF2ggvyVz1xFwBByBKgJFIyHlwojZllA42eN0g8BbHOFjy0R42Y9IipmAIVL6z5WGfYhgBHQP1o1Zm+IwGo/lspz0va42YcB5X4J4jFdDthH52/zc7wg4Ao5AB4GikYipbCOVP1f32YRAEQ4YAxQ6swf8n0Q/3lGkPGHGIPcbu5QRo9z+I6FLhQVDrXRpD4RC5MdI2ZIgQa8V1p6NVPOTwckRcAQcgTEIVI1EVEyMUjEQL8cwuyNp8n2JSfsRwpSloZ91pZmHwjA0GI4r3YcZSgz7IobZXoO8wUAwCwmb0/Djkh9DzmwCl1NY8CzmV7iTI+AIOAKjEbj34UP/O15SOCx1oJi+073NLkYXcG4JhQFYfC/3XsTmqdyk9Neqr3hiML6QOwvzpfnXqofzcQQcgduNQHUmYdWSsmFEyln8Z7ovrY1b0rvihqUfYcHon32F1Q3EXQHS6+kIOAKnj8CgkaAKUoQsO4U/tzn9Km0rYTQK7BWkE0XblujcHQFHwBE4HgKjjATiSTn+qmu3T2EfD5JRJTObYNmJfYDVSTizD8QyE/sUlDOJluafVJgndgQcgbNGYHBP4qxrP7NyUXGHfYmZLDybI+AIOAK3AoHRM4lbUZv9hGQmEfYm9ivSS3IEHAFHYH8E/h+Q5GAXdB3gVAAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} \\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{w} & \\text{for}\\: w < \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\\\frac{\\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\left(w - \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}}\\right)}{\\sqrt{\\frac{L_{b}^{2}}{A_\\mathrm{f} E_\\mathrm{f}}}} + L_{b} \\bar{\\tau} p & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ \n", + "⎪ ______________ ______________ ____________ \n", + "⎪ √2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ \\bar{\\tau} ⋅√p⋅√w \n", + "⎪ \n", + "⎪ \n", + "⎪ ⎛ 2 ⎞ \n", + "⎪ ______________ ______________ ⎜ L_b â‹…\\bar{\\tau}â‹…p ⎟ \n", + "⎨╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅⎜w - ───────────────────────────⎟ \n", + "⎪ ⎠2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}⎠\n", + "⎪─────────────────────────────────────────────────────────────────── + L_bâ‹…\\ba\n", + "⎪ ___________________________ \n", + "⎪ ╱ 2 \n", + "⎪ ╱ L_b \n", + "⎪ ╱ ───────────────────────── \n", + "⎩ ╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} \n", + "\n", + " 2 \n", + " L_b â‹…\\bar{\\tau}â‹…p \n", + " for w < ───────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "r{\\tau}â‹…p otherwise \n", + " \n", + " \n", + " \n", + " \n", + " " + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_clamped = sp.Piecewise(\n", + " (Pw_pull, w < w_argmax),\n", + " (P_max + K_c * (w - w_argmax), w >= w_argmax)\n", + ")\n", + "Pw_clamped" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "get_Pw_clamped = sp.lambdify(sp_vars, Pw_clamped)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('<div/>');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", + " 'ui-helper-clearfix\"/>');\n", + " var titletext = $(\n", + " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", + " 'text-align: center; padding: 3px;\"/>');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('<div/>');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('<canvas/>');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('<canvas/>');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('<button/>');\n", + " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", + " 'ui-button-icon-only');\n", + " button.attr('role', 'button');\n", + " button.attr('aria-disabled', 'false');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + "\n", + " var icon_img = $('<span/>');\n", + " icon_img.addClass('ui-button-icon-primary ui-icon');\n", + " icon_img.addClass(image);\n", + " icon_img.addClass('ui-corner-all');\n", + "\n", + " var tooltip_span = $('<span/>');\n", + " tooltip_span.addClass('ui-button-text');\n", + " tooltip_span.html(tooltip);\n", + "\n", + " button.append(icon_img);\n", + " button.append(tooltip_span);\n", + "\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " var fmt_picker_span = $('<span/>');\n", + "\n", + " var fmt_picker = $('<select/>');\n", + " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", + " fmt_picker_span.append(fmt_picker);\n", + " nav_element.append(fmt_picker_span);\n", + " this.format_dropdown = fmt_picker[0];\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = $(\n", + " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", + " fmt_picker.append(option);\n", + " }\n", + "\n", + " // Add hover states to the ui-buttons\n", + " $( \".ui-button\" ).hover(\n", + " function() { $(this).addClass(\"ui-state-hover\");},\n", + " function() { $(this).removeClass(\"ui-state-hover\");}\n", + " );\n", + "\n", + " var status_bar = $('<span class=\"mpl-message\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "}\n", + "\n", + "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", + "}\n", + "\n", + "mpl.figure.prototype.send_message = function(type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "}\n", + "\n", + "mpl.figure.prototype.send_draw_message = function() {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", + " }\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1]);\n", + " fig.send_message(\"refresh\", {});\n", + " };\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch(cursor)\n", + " {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_message = function(fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message(\"ack\", {});\n", + "}\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function(fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = \"image/png\";\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src);\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data);\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig[\"handle_\" + msg_type];\n", + " } catch (e) {\n", + " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", + " }\n", + " }\n", + " };\n", + "}\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function(e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e)\n", + " e = window.event;\n", + " if (e.target)\n", + " targ = e.target;\n", + " else if (e.srcElement)\n", + " targ = e.srcElement;\n", + " if (targ.nodeType == 3) // defeat Safari bug\n", + " targ = targ.parentNode;\n", + "\n", + " // jQuery normalizes the pageX and pageY\n", + " // pageX,Y are the mouse positions relative to the document\n", + " // offset() returns the position of the element relative to the document\n", + " var x = e.pageX - $(targ).offset().left;\n", + " var y = e.pageY - $(targ).offset().top;\n", + "\n", + " return {\"x\": x, \"y\": y};\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys (original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object')\n", + " obj[key] = original[key]\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function(event, name) {\n", + " var canvas_pos = mpl.findpos(event)\n", + "\n", + " if (name === 'button_press')\n", + " {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {x: x, y: y, button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event)});\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "}\n", + "\n", + "mpl.figure.prototype.key_event = function(event, name) {\n", + "\n", + " // Prevent repeat events\n", + " if (name == 'key_press')\n", + " {\n", + " if (event.which === this._key)\n", + " return;\n", + " else\n", + " this._key = event.which;\n", + " }\n", + " if (name == 'key_release')\n", + " this._key = null;\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which != 17)\n", + " value += \"ctrl+\";\n", + " if (event.altKey && event.which != 18)\n", + " value += \"alt+\";\n", + " if (event.shiftKey && event.which != 16)\n", + " value += \"shift+\";\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, {key: value,\n", + " guiEvent: simpleKeys(event)});\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", + " if (name == 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message(\"toolbar_button\", {name: name});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function() {\n", + " comm.close()\n", + " };\n", + " ws.send = function(m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function(msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data'])\n", + " });\n", + " return ws;\n", + "}\n", + "\n", + "mpl.mpl_figure_comm = function(comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = $(\"#\" + id);\n", + " var ws_proxy = comm_websocket_adapter(comm)\n", + "\n", + " function ondownload(figure, format) {\n", + " window.open(figure.imageObj.src);\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy,\n", + " ondownload,\n", + " element.get(0));\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element.get(0);\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error(\"Failed to find cell for figure\", id, fig);\n", + " return;\n", + " }\n", + "\n", + " var output_index = fig.cell_info[2]\n", + " var cell = fig.cell_info[0];\n", + "\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function(fig, msg) {\n", + " var width = fig.canvas.width/mpl.ratio\n", + " fig.root.unbind('remove')\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable()\n", + " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", + " fig.close_ws(fig, msg);\n", + "}\n", + "\n", + "mpl.figure.prototype.close_ws = function(fig, msg){\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "}\n", + "\n", + "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width/mpl.ratio\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message(\"ack\", {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () { fig.push_to_output() }, 1000);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items){\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) { continue; };\n", + "\n", + " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", + " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i<ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code'){\n", + " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,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\" width=\"800\">" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "<string>:2: RuntimeWarning: invalid value encountered in sqrt\n" + ] + } + ], + "source": [ + "fix, ax = plt.subplots(1,1, figsize=(8,4))\n", + "poui.plot_filled_var(ax, w_range, get_Pw_clamped(*param_vals),color='orange');\n", + "poui.plot_filled_var(ax, w_range, get_Pw_pull_Lb(*param_vals),color='green');\n", + "#poui.plot_filled_var(ax, w_range, get_Pw_pull(*param_vals),color='blue');\n", + "poui.plot_filled_var(ax, w_range, get_Pw_short(*param_vals), color='red');" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: w \\leq \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\L_{b} - \\frac{- \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f}}{\\bar{\\tau} p} & \\text{for}\\: L_{b} \\geq w \\\\w & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ \n", + "⎪ \n", + "⎪ 0 \n", + "⎪ \n", + "⎪ \n", + "⎨ ______________ ______________ _________________________________\n", + "⎪ - ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_\n", + "⎪L_b - ───────────────────────────────────────────────────────────────────────\n", + "⎪ \\bar{\\tau}\n", + "⎪ \n", + "⎩ w \n", + "\n", + " \n", + " L\n", + " for w ≤ ──────\n", + " 2â‹…A_\\m\n", + " \n", + "__________________________________ \n", + "bâ‹…\\bar{\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f} \n", + "────────────────────────────────────────────────────────────── fo\n", + "â‹…p \n", + " \n", + " o\n", + "\n", + " 2 \n", + "_b â‹…\\bar{\\tau}â‹…p \n", + "─────────────────────\n", + "athrm{f}â‹…E_\\mathrm{f}\n", + " \n", + " \n", + " \n", + "r L_b ≥ w \n", + " \n", + " \n", + "therwise " + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "w_L_b_a = L_b - Pw_down_pull / p / tau\n", + "w_L_b = sp.Piecewise((0, w <= w_argmax),\n", + " (w_L_b_a, (w > w_argmax) & (w <= L_b)),\n", + " (w, True)) \n", + "w_L_b" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\frac{\\begin{cases} 0 & \\text{for}\\: w \\leq 0 \\\\\\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{w} & \\text{for}\\: w \\leq \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\- \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f} & \\text{for}\\: L_{b} \\geq w \\\\0 & \\text{otherwise} \\end{cases}}{\\bar{\\tau} p}$" + ], + "text/plain": [ + " ⎛⎧ 0 \n", + " ⎜⎪ \n", + " ⎜⎪ \n", + " ⎜⎪ ______________ ______________ \n", + " ⎜⎪ √2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} â‹…\n", + "-⎜⎨ \n", + " ⎜⎪ \n", + " ⎜⎪ ______________ ______________ _____________________________________\n", + " ⎜⎪- ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_bâ‹…\\b\n", + " ⎜⎪ \n", + " âŽâŽ© 0 \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + "\n", + " for w\n", + " \n", + " 2 \n", + " ____________ L_b â‹…\n", + "╲╱ \\bar{\\tau} ⋅√p⋅√w for w ≤ ──────────\n", + " 2â‹…A_\\mathr\n", + " \n", + "______________________________ \n", + "ar{\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f} for L_\n", + " \n", + " other\n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \\bar{\\tau}â‹…p \n", + "\n", + " ≤ 0 ⎞ \n", + " ⎟ \n", + " ⎟ \n", + "\\bar{\\tau}â‹…p ⎟ \n", + "─────────────────⎟ \n", + "m{f}â‹…E_\\mathrm{f}⎟ \n", + " ⎟ \n", + " ⎟ \n", + "b ≥ w ⎟ \n", + " ⎟ \n", + "wise ⎠\n", + "───────────────────\n", + " " + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "aw_pull_elastic = - (Pw_short / p / tau)\n", + "aw_pull_elastic" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "import traits.api as tr\n", + "\n", + "class PullOutShortFiber(tr.HasTraits):\n", + "\n", + " get_Pw_pull = sp.lambdify(sp_vars, Pw_short)\n", + " get_w_L_b = sp.lambdify(sp_vars, w_L_b)\n", + " get_aw_pull = sp.lambdify(sp_vars, aw_pull_elastic)\n", + "\n", + "# get_u_fa_x = sp.lambdify((x,) + sp_vars, u_fa_x.subs(P, Pw_pull_elastic))\n", + "# get_u_ma_x = sp.lambdify((x,) + sp_vars, u_ma_x.subs(P, Pw_pull_elastic))\n", + "# get_eps_f_x = sp.lambdify((x,) + sp_vars, eps_f_x.subs(P, Pw_pull_elastic))\n", + "# get_eps_m_x = sp.lambdify((x,) + sp_vars, eps_m_x.subs(P, Pw_pull_elastic))\n", + "# get_sig_f_x = sp.lambdify((x,) + sp_vars, sig_f_x.subs(P, Pw_pull_elastic))\n", + "# get_sig_m_x = sp.lambdify((x,) + sp_vars, sig_m_x.subs(P, Pw_pull_elastic))\n", + "# get_tau_x = sp.lambdify((x,) + sp_vars, tau_x.subs(P, Pw_pull_elastic))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('<div/>');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", + " 'ui-helper-clearfix\"/>');\n", + " var titletext = $(\n", + " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", + " 'text-align: center; padding: 3px;\"/>');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('<div/>');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('<canvas/>');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('<canvas/>');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('<button/>');\n", + " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", + " 'ui-button-icon-only');\n", + " button.attr('role', 'button');\n", + " button.attr('aria-disabled', 'false');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + "\n", + " var icon_img = $('<span/>');\n", + " icon_img.addClass('ui-button-icon-primary ui-icon');\n", + " icon_img.addClass(image);\n", + " icon_img.addClass('ui-corner-all');\n", + "\n", + " var tooltip_span = $('<span/>');\n", + " tooltip_span.addClass('ui-button-text');\n", + " tooltip_span.html(tooltip);\n", + "\n", + " button.append(icon_img);\n", + " button.append(tooltip_span);\n", + "\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " var fmt_picker_span = $('<span/>');\n", + "\n", + " var fmt_picker = $('<select/>');\n", + " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", + " fmt_picker_span.append(fmt_picker);\n", + " nav_element.append(fmt_picker_span);\n", + " this.format_dropdown = fmt_picker[0];\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = $(\n", + " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", + " fmt_picker.append(option);\n", + " }\n", + "\n", + " // Add hover states to the ui-buttons\n", + " $( \".ui-button\" ).hover(\n", + " function() { $(this).addClass(\"ui-state-hover\");},\n", + " function() { $(this).removeClass(\"ui-state-hover\");}\n", + " );\n", + "\n", + " var status_bar = $('<span class=\"mpl-message\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "}\n", + "\n", + "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", + "}\n", + "\n", + "mpl.figure.prototype.send_message = function(type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "}\n", + "\n", + "mpl.figure.prototype.send_draw_message = function() {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", + " }\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1]);\n", + " fig.send_message(\"refresh\", {});\n", + " };\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch(cursor)\n", + " {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_message = function(fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message(\"ack\", {});\n", + "}\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function(fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = \"image/png\";\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src);\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data);\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig[\"handle_\" + msg_type];\n", + " } catch (e) {\n", + " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", + " }\n", + " }\n", + " };\n", + "}\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function(e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e)\n", + " e = window.event;\n", + " if (e.target)\n", + " targ = e.target;\n", + " else if (e.srcElement)\n", + " targ = e.srcElement;\n", + " if (targ.nodeType == 3) // defeat Safari bug\n", + " targ = targ.parentNode;\n", + "\n", + " // jQuery normalizes the pageX and pageY\n", + " // pageX,Y are the mouse positions relative to the document\n", + " // offset() returns the position of the element relative to the document\n", + " var x = e.pageX - $(targ).offset().left;\n", + " var y = e.pageY - $(targ).offset().top;\n", + "\n", + " return {\"x\": x, \"y\": y};\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys (original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object')\n", + " obj[key] = original[key]\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function(event, name) {\n", + " var canvas_pos = mpl.findpos(event)\n", + "\n", + " if (name === 'button_press')\n", + " {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {x: x, y: y, button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event)});\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "}\n", + "\n", + "mpl.figure.prototype.key_event = function(event, name) {\n", + "\n", + " // Prevent repeat events\n", + " if (name == 'key_press')\n", + " {\n", + " if (event.which === this._key)\n", + " return;\n", + " else\n", + " this._key = event.which;\n", + " }\n", + " if (name == 'key_release')\n", + " this._key = null;\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which != 17)\n", + " value += \"ctrl+\";\n", + " if (event.altKey && event.which != 18)\n", + " value += \"alt+\";\n", + " if (event.shiftKey && event.which != 16)\n", + " value += \"shift+\";\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, {key: value,\n", + " guiEvent: simpleKeys(event)});\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", + " if (name == 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message(\"toolbar_button\", {name: name});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function() {\n", + " comm.close()\n", + " };\n", + " ws.send = function(m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function(msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data'])\n", + " });\n", + " return ws;\n", + "}\n", + "\n", + "mpl.mpl_figure_comm = function(comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = $(\"#\" + id);\n", + " var ws_proxy = comm_websocket_adapter(comm)\n", + "\n", + " function ondownload(figure, format) {\n", + " window.open(figure.imageObj.src);\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy,\n", + " ondownload,\n", + " element.get(0));\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element.get(0);\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error(\"Failed to find cell for figure\", id, fig);\n", + " return;\n", + " }\n", + "\n", + " var output_index = fig.cell_info[2]\n", + " var cell = fig.cell_info[0];\n", + "\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function(fig, msg) {\n", + " var width = fig.canvas.width/mpl.ratio\n", + " fig.root.unbind('remove')\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable()\n", + " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", + " fig.close_ws(fig, msg);\n", + "}\n", + "\n", + "mpl.figure.prototype.close_ws = function(fig, msg){\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "}\n", + "\n", + "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width/mpl.ratio\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message(\"ack\", {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () { fig.push_to_output() }, 1000);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items){\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) { continue; };\n", + "\n", + " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", + " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i<ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code'){\n", + " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,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\" width=\"800\">" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "66dd5a35424d49e0b88395423fbe0c7c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(HBox(children=(FloatSlider(value=1e-05, description='\\\\(t\\\\)', max=1.0, min=1e-05, step=0.05), …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "po = poui.ModelInteract(\n", + " models=[PullOutShortFiber],\n", + " py_vars=list(py_vars),\n", + " map_py2sp=map_py2sp\n", + ")\n", + "po.interact_geometry()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "ds = 0.15\n", + "po_paper = poui.ModelInteract(\n", + " models=[PullOutShortFiber],\n", + " py_vars=list(py_vars),\n", + " map_py2sp=map_py2sp,\n", + " w=.1, A_f=np.pi*(ds/2)**2, \n", + " E_f=200000, L_b=6, p=np.pi*ds, tau=6\n", + ")\n", + "po_paper.interact_geometry()" + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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hBmihw4dUs2bN1e9evWSxymnnKJOOumkgEeLFi3Uueeeq7799tu45gSDt1mzZmratGlqxowZcfUV6uLFixerK664QnR/7LHHQjWRY7NmzVLYBq9mzZph27j9xAcffKDOP//8iPNMxxxwb+vVq5etXnjPeUUQz0oPk1fuFvVs0KCBKlasGEGQAAmQQFIJJMwQLVy4sHrrrbdsZa+88kr1xRdf2I/OnTurCy+8UK1du1Z99dVXcU0qX7586vbbb4+rj0gXV6xYUW3evFnt27dP/f7772GbLlmyRC1cuFCtX79evf3222HbufkEjOlVq1ap9957z1VqYgu/zz//3HV6xQMJiR8///xzPF3wWhIgARIgARLIKAIJM0RBxfnrGZ6fChUq2I8nnnhCPfPMM+qee+5Rl1xySVwQEURftGjRuPqIdHG5cuVUy5YtIzWRc0iUgZcXS66HDx/Otn0qG0yfPj0qzh07dkylWmHH+uijj9SaNWvs83Xq1FH4QZBJ8scff6hff/01k6aU9rng/49CAiRAAiTgXQIJNUSdGO68884sVGrUqKGee+45Be+pkU2bNqnt27fLS+w6M3v2bIUvbMgvv/wir6+//nr19NNPK+x9HCzfffedtInkuQy+JrvXWPqPZgcc7DqCuWDrxvbt22fXbdTnly5dKnPCAwxild9++00NHz5cff3112rXrl2xXp7y9rj/1157rXrxxRftsbdu3ap27NihEPLx448/htVpy5YtYc+57QR+4NSvX99tanlanzlz5nhafypPAiRAAn4nkDdZAGbOnKnuvvtuu3ss/cLQGDlypEI2JowLGB/btm1TefPmFc/p7t275TViFh966CH16quvyrE8efKoiRMnSkwolsOdAk8aHognPP744+XUvffeqxAaAIFRCc/lihUrAq578sknFbxuEGy9iKSnl156SfXt21diPhE7GSxYVoUOEyZMsE8hCxqxf4gnNfL4448rGIMwxuGZfPfdd9Xpp5+uevbsKXOFkQXDGtcNGDBAIRbLCDKrYXgbA/Kcc85RL7zwgrrooovUX3/9JXNBolbjxo3VCSecoMAZUr16dQWvc6FChaR/kxiGhC4scccqiON988031fz58+VS3A+MaRivW7dOTZ48We4x+OEHARjfcMMNci+dglCMYI9xpUqVJI4YgjhP/PhAvO+QIUNUv379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94/a/0fgjz/+UNhvnkICJJAYAqtWrVK//fZbYjpLQi8wlE877bQk9MwuSYAEUkmAhmgqaXOspBH4+eef1YEDB5LWf047zp8/v8qXL19OL+d1JEACYQiUK1dOFS9ePMxZHiYBEvAKARqiXrlT1DMigfLly6uTTz45Ypt0nMT2niVLlkzH0ByTBEiABEiABFxPgIao628RFYyGAGLFvvvuu2iaprTNjh071J49e1I6JgcjARIgARIgAa8QoCHqlTtFPSMS2LJli9q9e3fENjxJAiQQPYFatWqxEkX0uNiSBEgghwRoiOYQHC9zF4FLL71U1a9f311KURsS8DCB/3Cu5xMAACAASURBVP3vf+rw4cMengFVJwES8AIBGqJeuEvUMVsC8+bNU19++WW27diABEggOgJ///23siwrusZpaIWwl19++SUNI3NIEiCBRBKgIZpImuwrbQSOHTum/vrrr7SNz4FJgARSS2D16tWujAtPLQWORgLeJ0BD1Pv3kDPQBE455RRVokQJsiABEvAJgRYtWqhq1ar5ZLacJglkLgEaopl7b301szp16qgqVar4as6cLAkkk4Dbd1bClr4FChRIJgL2TQIkkAICNERTAJlDkAAJkIDXCLh9ZyWv8aS+JEACoQnQEA3NhUddRgDxnyNHjlRr164N0Kx27dqyJI8vzY0bN7pMa6XgVapataqt15tvvuk6Hb2m0E033WSrvGzZMrV9+3avTcG1+pYuXTpAtx9++MF1umKDCOxWdvDgQYWtfSkkQALeJkBD1Nv3zzfav/POO+rBBx9UqG3YsWNH9c8//8jckSmPzNm9e/eqrVu3uo5HqVKlVLFixWy9Nm/e7DodvaZQ5cqVbZWxWYCb90P3Gtu77rorQOUXXnjBdVPA/z92Ufv000/Vpk2bXKcfFSIBEoiNAA3R2HixdZoItGrVShUsWFD9+++/6v3331djx46V5055/fXX06QdhyUBEiCBrARQzQPZ/bNnz856kkdIgASEAA1RvhE8QQBZ8VOnTlXHHXec6Nu1a1c1btw49fvvv9v6w2NKIQESSByBtm3bJq4zH/aEUCKED1199dUK3uYFCxbYFP788081efLkLD+ofYiJU/Y5ARqiPn8DeGn6KNfSq1cvW+XbbrtN3X333V6aAnUlAU8RqFu3rqf0dZuy5cqVUzVq1JDwkRdffFGN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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Does the reduction of w from maximum back to zero rrepresent unloading?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.0" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": { + "height": "calc(100% - 180px)", + "left": "10px", + "top": "150px", + "width": "282px" + }, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/pull_out/2_6_CB_ELF_ELM.ipynb b/pull_out/2_6_CB_ELF_ELM.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..95ae95442e3d4875086057dc41de752b60d4cc1e --- /dev/null +++ b/pull_out/2_6_CB_ELF_ELM.ipynb @@ -0,0 +1,2534 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Example 2.6: Crack bridge elastic fiber and elastic matrix - CB-ELF-ELM\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Crack bridge as a key to understanding the behavior of a composite" + ] + }, + { + "attachments": { + "e0cb43fe-142e-4fc5-98e5-654109059c59.png": { + "image/png": "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" + }, + "image.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Matrix cracks develop along a tensile zone of a composite, e.g. in a tensile specimen.\n", + "The stress, strain and displacement fields exhibit a periodic structure with symmetry points\n", + "at \n", + " - crack positions, and at\n", + " - midpoints between cracks.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plan" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By describing the response of a single crack bridge, we can describe the response of the whole composite." + ] + }, + { + "attachments": { + "7948b99d-159a-41d0-a487-f74d1b156733.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib widget\n", + "from pull_out import PullOutAModel\n", + "from CB_ELF_ELM_Symb import CB_ELF_ELM_Symb " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "68441b5858714d1ba0579def78d6059d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(HBox(children=(VBox(children=(Tree(layout=Layout(align_items='stretch', border='solid 1px black…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "PullOutAModel(name='Crack bridge', symb_class=CB_ELF_ELM_Symb).interact()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Assumptions" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "**Assumption 1:** Constant shear stress independent on the amount of slip, i.e.\n", + "\\begin{align}\n", + " \\tau(s) = \\bar{\\tau}\n", + "\\end{align}\n", + "were $\\tau$ is a constant material parameter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Assumption 2:** Material behavior of the matrix and of the fiber is assumed linear elastic.\n", + "\n", + "<span style=\"color:blue\">\n", + "Similarly to pullout problems, this assumption can be exploited to obtain analytical solutions of the boundary-value problem.\n", + "</span>" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "**Assumption 3:** Symmetry of the fields at the midpoint between two cracks." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<span style=\"color:blue\">\n", + "This assumption allows us to define the boundary and continuity conditions to solve for the integration constants that appear after the integration of differential equilibrium and kinematic conditions. \n", + "</span>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Conventions\n", + "\n", + "**Remark 1**: The origin of the coordinate system is placed at the transition between the bond zone and free zone of the fiber. The domain in the bond zone is defined as $x \\in (-L_\\mathrm{b},0)$. As a result, in the bond domain $x < 0$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "**Remark 2:** The pull-out test is controlled by the displacement at the end of the fiber $w(x=0)$. \n", + "The force $P$ is evaluated/measured to obtain the pull-out curve $P(w)$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Model parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "source": [ + "The parameters and variables involved in the are grouped according geometry, material behavior, measured response, internal state and subsidiary integration parameters that will be resolved during the model derivation. In this classification we also associate the mathematical symbols with the Python variable name introduced in the next cell." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "**Geometrical variables:**\n", + "\n", + "| Python | Parameter | Description | \n", + "| :- | :-: | :- |\n", + "| `A_f` | $A_\\mathrm{f}$ | Cross section area modulus of the reinforcement |\n", + "| `A_m` | $A_\\mathrm{m}$ | Cross section area modulus of the matrix |\n", + "| `p` | $p$ | Perimeter of the reinforcement |\n", + "| `L_b` | $L_\\mathrm{b}$ | Length of the bond zone of the pulled-out bar |\n", + "| `x` | $x$ | Longitudinal coordinate |\n", + "\n", + "**Material parameters:**\n", + "\n", + "| Python | Parameter | Description | \n", + "| :- | :-: | :- |\n", + "| `E_f` | $E_\\mathrm{f}$ | Young's modulus of the reinforcement |\n", + "| `E_m` | $E_\\mathrm{m}$ | Young's modulus of the matrix |\n", + "| `tau_bar` | $\\bar{\\tau}$ | Frictional bond stress |\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "**Control parameter:**\n", + "\n", + "| Python | Parameter | Description | \n", + "| :- | :-: | :- |\n", + "| `P` | $P$ | Pullout force |\n", + "| `w` | $w$ | pullout control displacement\n", + "\n", + "**State parameter:**\n", + "\n", + "| Python | Parameter | Description | \n", + "| :- | :-: | :- |\n", + "| `a` | $a$ | Length of the debonded zone |\n", + "\n", + "**Integration constants:**\n", + "\n", + "| Python | Parameter | Description | \n", + "| :- | :-: | :- |\n", + "| `C`, `D` | $C,D$ | Integration constants to be resolved through boundary and continuity conditions |" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "**Let's import the packages:**" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "import sympy as sp # symbolic algebra package\n", + "import numpy as np # numerical package\n", + "import matplotlib.pyplot as plt # plotting package\n", + "sp.init_printing() # enable nice formating of the derived expressions" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "<span style=\"color:gray\">\n", + "Here we tell `sympy` to remember these variables for further use. The parameter of the `symbols( str )` is a string that contains comma-separated printable symbol definition. One can use latex commands in this string to introduce e.g. Greek symbols like `\\gamma, \\beta`, etc. The number of symbols in `str` must be equal to the number of variables assigned on the left hand side of the `=` sign\n", + " <span>" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "E_m, A_m = sp.symbols(r'E_\\mathrm{m}, A_\\mathrm{m}', nonnegative = True )\n", + "E_f, A_f = sp.symbols(r'E_\\mathrm{f}, A_\\mathrm{f}', nonnegative = True )\n", + "tau, p = sp.symbols(r'\\bar{\\tau}, p', nonnegative = True)\n", + "C, D, E, F = sp.symbols('C, D, E, F')\n", + "P, w = sp.symbols('P, w')\n", + "x, a, L_b = sp.symbols('x, a, L_b')" + ] + }, + { + "attachments": { + "image.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3sAAADZCAYAAACZ8SmbAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7tnQW4FVX3xhfdLY10l4QCSkhISAkoipIiKohioqh8lAWIiYSigAXygaCCICUdFxQp6e68dNd/3s1/7nfuuTPnzOmZc971POe53Ik9e//m3GHevdZeK9ktzYRGAiRAAiRAAiRAAiRAAiRAAiQQVQSSR9VoOBgSIAESIAESIAESIAESIAESIAFFgGKPXwQSIAESIAESIAESIAESIAESiEICFHtReFM5JBIgARIgARIgARIgARIgARKg2ON3gARIgARIgARIgARIgARIgASikADFXhTeVA6JBEiABEiABEiABEiABEiABCj2+B0gARsR2LFjh/z5559h79HSpUtl06ZNYb8uL0gCJEACJEACJEACJBA6AhR7oWPLlknAZwKrVq2Sb775xufzAj1hwoQJsmjRokCb4fkkQAIkQAIkQAIkQAI2IkCxZ6Obwa6QAAmQAAmQAAmQAAmQAAmQQLAIUOwFiyTbIQESIAESIAESIAESIAESIAEbEaDYs9HNYFdIgARIgARIgARIgARIgARIIFgEKPaCRZLtkAAJkAAJkAAJkAAJkAAJkICNCFDs2ehmsCskQAIkQAIkQAIkQAIkQAIkECwCFHvBIsl2SIAESIAESIAESIAESIAESMBGBCj2bHQz2BUSIAESIAESIAESIAESIAESCBYBir1gkWQ7JEACJEACJEACJEACJEACJGAjAhR7NroZ7AoJkAAJkAAJkAAJkAAJkAAJBIsAxV6wSLIdEiABEiABEiABEiABEiABErARAYo9G90MdoUESIAESIAESIAESIAESIAEgkWAYi9YJNkOCZAACZAACZAACZAACZAACdiIAMWejW4Gu0ICJEACJEACJEACJEACJEACwSJAsRcskmyHBEiABEiABEiABEiABEiABGxEgGLPRjeDXSEBEiABEiABEiABEiABEiCBYBGg2AsWSbZDAiRAAiRAAiRAAiRAAiRAAjYiQLFno5vBrpAACZAACZAACZAACZAACZBAsAhQ7AWLJNshARIgARIgARIgARIgARIgARsRoNiz0c1gV0iABEiABEiABEiABEiABEggWAQo9oJFku2QAAmQAAmQAAmQAAmQAAmQgI0IUOzZ6GawKyRAAiRAAiRAAiRAAiRAAiQQLAIUe8EiyXZIgARIgARIgARIgARIgARIwEYEUgbSl+vXr8uNGzcCaYLnkgAJuBC4du2a3Lx5U65cuRJWLvg7xt9zuK8b1kF6uFiyZMkkderUHo7gLhIgARIgARIgARJwHoGAxN7+/fslPj7eeaNmj0nApgQOHDggp0+flo0bN4a1h/g7PnToUNivG9ZBergYhF6FChU8HMFdJEACJEACJEACJOA8AgzjdN49Y49JgARIgARIgARIgARIgARIwCsBij2viHgACZAACZAACZAACZAACZAACTiPAMWe8+4Ze0wCJEACJEACJEACJEACJEACXglQ7HlFxANIgARIgARIgARIgARIgARIwHkEKPacd8/YYxIgARIgARIgARIgARIgARLwSoBizysiHkACJEACJEACJEACJEACJEACziNAsee8e8YekwAJkAAJkAAJkAAJkAAJkIBXAhR7XhHxABIgARIgARIgARIgARIgARJwHgGKPefdM/aYBEiABEiABEiABEiABEiABLwSoNjziogHkAAJkAAJkAAJkAAJkAAJkIDzCFDsOe+escckQAIkQAIkQAIkQAIkQAIhIHD27NkQtBq5Jin2IseeVyYBEiABEiABEiABEiABEogggWHDhkm5cuUkd+7ckjJlSqlVq1YEexP8S1PsBZ8pWyQBEiABEiABEiABEiABEnAAgdatW8tHH30kNWrUkBs3bjigx751MaVvh/NoEiABEiABEiABEiABEiABEogOAsWKFRN80qZNK7/99lt0DMplFPTsRd0t5YBIgARIgARIgARIgARIwHkErl69Kt26dZMrV66EvfMI4YxGi85RReOd4phIgARIgARIIMoJXLp0SXbt2iWXL182HClexooWLSqZMmUy3M+NJEACziZw9OhR+eabb6Rfv35SsGBBZw/GJr2n2LPJjWA3SIAESIAESCAWCdy6dUsmTpwon3/+ucTFxXlFgPU1U6dO9XocDyABEnAeATwPaMElQLEXXJ5sjQRIgARIgARIwCKB06dPy+OPPy5//PGH5MiRQyDkUqdOLUuWLJFDhw5JihQppEuXLuonDPtwPI0ESIAESMAaAYo9a5x4FAmQAAmQAAmQQBAJoJZVo0aNZM2aNfLOO+/IG2+8IalSpVJXQDjnQw89JHPnzlVp0CH4aCRAAtYI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" + } + }, + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Infinitesimal bond segment\n", + "Let us now consider an infinitely small segment of the bond zone and employ the usual model ingredients, i.e. equilibrium, constitutive laws of the components and then the kinematics\n", + "\n", + "\\begin{align}\n", + "\\mathrm{d} \\sigma_\\mathrm{f} A_\\mathrm{f} &= p \\bar{\\tau} \\, \\mathrm{d}x \\\\\n", + "\\mathrm{d} \\sigma_\\mathrm{m} A_\\mathrm{m} &= -p \\bar{\\tau} \\, \\mathrm{d}x\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Equilibrium \n", + "In the halfspace $x \\in (-\\infty, 0)$ the governing equations take the folowing form:<br>\n", + "\n", + "In constrast to the case of rigid matrix we have to account for equilibrium in both components (m,f). Thus, an additional equilibrium with inverse sign of the shear stress flow must be added\n", + "\\begin{align}\n", + "\\frac{\\mathrm{d} \\sigma_\\mathrm{f}}{\\mathrm{d} x} &= \\frac{p \\bar{\\tau}}{A_\\mathrm{f}} \\\\\n", + "\\frac{\\mathrm{d} \\sigma_\\mathrm{m}}{\\mathrm{d} x} &= - \\frac{p \\bar{\\tau}}{A_\\mathrm{m}} \n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( \\frac{\\bar{\\tau} p}{A_\\mathrm{f}}, \\ - \\frac{\\bar{\\tau} p}{A_\\mathrm{m}}\\right)$" + ], + "text/plain": [ + "⎛\\bar{\\tau}â‹…p -\\bar{\\tau}â‹…p ⎞\n", + "⎜────────────, ──────────────⎟\n", + "âŽA_\\mathrm{f} A_\\mathrm{m} ⎠" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d_sig_f = p * tau / A_f\n", + "d_sig_m = -p * tau / A_m\n", + "d_sig_f, d_sig_m" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Following the same procedure as in the worksheet [2.1 Pullout from rigid matrix](2_1_pullout_from_rigid_matrix.ipynb) let us integrate the equilibrium equations to obtain the stresses in the components" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "\\begin{align}\n", + "\\sigma_\\mathrm{f}(x) &= \\int \\frac{p\\bar{\\tau}}{A_\\mathrm{f}} \\, \\mathrm{d}x = \\frac{p \\bar{\\tau}}{A_\\mathrm{f}} x + C \\\\\n", + "\\sigma_\\mathrm{m}(x) &= \\int \\frac{p\\bar{\\tau}}{A_\\mathrm{m}} \\, \\mathrm{d}x = \\frac{p \\bar{\\tau}}{A_\\mathrm{m}} x + D\n", + "\\end{align}\n", + "with $C$ as an unknown integration constant. In `sympy` we can issue the `sp.integrate` method to perform the automatic integration" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( C + \\frac{\\bar{\\tau} p x}{A_\\mathrm{f}}, \\ D - \\frac{\\bar{\\tau} p x}{A_\\mathrm{m}}\\right)$" + ], + "text/plain": [ + "⎛ \\bar{\\tau}â‹…pâ‹…x \\bar{\\tau}â‹…pâ‹…x⎞\n", + "⎜C + ──────────────, D - ──────────────⎟\n", + "⎠A_\\mathrm{f} A_\\mathrm{m} ⎠" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sig_f = sp.integrate(d_sig_f, x) + C\n", + "sig_m = sp.integrate(d_sig_m, x) + D\n", + "sig_f, sig_m" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Constitutive laws: \n", + "Both matrix and fiber are assumed linear elasticwith the Young's modulus $E_\\mathrm{f}$ and $E_\\mathrm{m}$, respectively\n", + "\\begin{align}\n", + "\\varepsilon_\\mathrm{f}(x) &= \\frac{1}{E_\\mathrm{f}} \\sigma_{\\mathrm{f}} = \\frac{1}{E_\\mathrm{f}} \\left(\\frac{p \\tau}{A_\\mathrm{f}} x + C \\right), \\\\\n", + "\\varepsilon_\\mathrm{m}(x) &= \\frac{1}{E_\\mathrm{m}} \\sigma_{\\mathrm{m}} = \\frac{1}{E_\\mathrm{m}} \\left(\\frac{p \\tau}{A_\\mathrm{m}} x + D \\right).\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( \\frac{C + \\frac{\\bar{\\tau} p x}{A_\\mathrm{f}}}{E_\\mathrm{f}}, \\ \\frac{D - \\frac{\\bar{\\tau} p x}{A_\\mathrm{m}}}{E_\\mathrm{m}}\\right)$" + ], + "text/plain": [ + "⎛ \\bar{\\tau}â‹…pâ‹…x \\bar{\\tau}â‹…pâ‹…x⎞\n", + "⎜C + ────────────── D - ──────────────⎟\n", + "⎜ A_\\mathrm{f} A_\\mathrm{m} ⎟\n", + "⎜──────────────────, ──────────────────⎟\n", + "⎠E_\\mathrm{f} E_\\mathrm{m} ⎠" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "eps_f = sig_f / E_f\n", + "eps_m = sig_m / E_m\n", + "eps_f, eps_m" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Kinematics: \n", + "Realizing that\n", + "\\begin{align}\n", + "\\varepsilon &= \\frac{\\mathrm{d} u}{\\mathrm{d} x}\n", + "\\implies \n", + "u = \\int\n", + "\\varepsilon \\mathrm{d} x\n", + "\\end{align}\n", + "we obtain the displacement fields of the fiber and of the matrix as an integral\n", + "\\begin{align}\n", + "u_\\mathrm{f}(x) &= \n", + "\\int \n", + "\\frac{1}{E_\\mathrm{f}} \\left(\\frac{p \\tau}{A_\\mathrm{f}} x + C \\right) \\; \\mathrm{d}x =\n", + "\\frac{p \\tau x^{2}}{2 A_\\mathrm{f} E_\\mathrm{f}} + \\frac{C x}{E_{\\mathrm{f}}} + E \n", + "\\\\\n", + "u_\\mathrm{m}(x) &= \n", + "\\int \n", + "\\frac{1}{E_\\mathrm{m}} \\left(\\frac{p \\tau}{A_\\mathrm{m}} x + C \\right) \\; \\mathrm{d}x =\n", + "\\frac{p \\tau x^{2}}{2 A_\\mathrm{m} E_\\mathrm{m}} + \\frac{C x}{E_{\\mathrm{m}}} + F \n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( \\frac{C x}{E_\\mathrm{f}} + E + \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{f} E_\\mathrm{f}}, \\ \\frac{D x}{E_\\mathrm{m}} + F - \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{m} E_\\mathrm{m}}\\right)$" + ], + "text/plain": [ + "⎛ 2 \n", + "⎜ Câ‹…x \\bar{\\tau}â‹…pâ‹…x Dâ‹…x \\bar\n", + "⎜──────────── + E + ───────────────────────────, ──────────── + F - ──────────\n", + "âŽE_\\mathrm{f} 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f} E_\\mathrm{m} 2â‹…A_\\mathr\n", + "\n", + " 2 ⎞\n", + "{\\tau}â‹…pâ‹…x ⎟\n", + "─────────────────⎟\n", + "m{m}â‹…E_\\mathrm{m}⎠" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u_f = sp.integrate(eps_f, x) + E\n", + "u_m = sp.integrate(eps_m, x) + F\n", + "u_f, u_m" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "**What's next?**\n", + "\n", + "To resolve the constants let us apply boundary conditions and compatibility conditions " + ] + }, + { + "attachments": { + "image.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAC6CAYAAAD729nkAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7tnQm4FMX1t4tNVgWUzZ3NLbKoKIKyKy4sKqAooCgSiRrcURaJRgkKJBoVwgOouMQVCIgKRMSAiIKgggsoCipEUAFFVgGB+5+3vjTf3JnuuT0zPXNn+Z3nuQ9Md3VV9VszfeqcOqe6REFIjEQEREAEREAEMoxAyQzrj7ojAiIgAiIgApaAFJS+CCIgAiIgAhlJQAoqI4dFnRIBERABEZCC0ndABERABEQgIwlIQWXksKhTIiACIiACUlD6DoiACIiACGQkASmojBwWdUoEREAEREAKSt8BERABERCBjCQgBZWRw6JOiYAIiIAISEHpOyACIhAXgQ0bNphevXrFdY0Ki0AiBKSgEqGma0Qgjwns2rXLLFiwII8J6NbTRUAKKl2k1Y4IiIAIiEBcBKSg4sKlwiIgAiIgAukiIAWVLtJqRwREQAREIC4CUlBx4VJhERABERCBdBGQgkoXabUjAiIgAiIQFwEpqLhwqbAIiIAIiEC6CEhBpYu02hEBERABEYiLgBRUXLhUWAREQAREIF0EpKDSRVrtiIAIiIAIxEVACiouXCosAiIgAiKQLgJSUOkirXZEQAREQATiIiAFFRcuFRYBERABEUgXASmodJFWOyIgAiIgAnERkIKKC5cKi4AIiIAIpIuAFFS6SKsdERABERCBuAhIQcWFS4VFQAREQATSRUAKKl2k1Y4IiIAIiEBcBKSg4sKlwiIgAvlC4Pvvvze8PThR+fHHH83evXsTvVzXhQhIQelrIAIiIAIRBBYvXmxuu+02U6ZMmYTZ/Pzzz6Znz55m+/btCdeR7xdKQeX7N0D3LwIiUIjAqlWrrHIaP368KVWqlCudPXv2mLVr15qNGze6nufgSSedZK6//nrTo0cPs2/fPs9ymXhiy5Yt5uuvv07KggzivqSggqCoOkRABHKCAC69Ll26mMcee8xUrlw56p52795t7rzzTtOpUyczefJkM2LECHPOOeeY+fPnR5XlQLt27UzDhg3N0KFDXc9n2sHPPvvMXHjhhfYeX331VdO7d29z7bXXml9++aV4ulogEQEREIE4CKxZs6bgmGOOieOK7Cl6//33F/Tt29e1w/v37y9o3759weWXX14QsogOlPnkk08KDj300IJJkya5Xhdy8RUcddRRBaGHv+v5TDn48ccfF4SUcsH06dMLdenee+8tOP744wtCLsu0d9WkvUU1KAIikNUEclVBhYIiCipWrFjw1VdfuY5PyOVXULJkyYKQay/qfMjiKKhWrVrB1q1bo85xYNiwYQXnnXee67lMOIjybdq0aUHIMozqTshqLKhevXpB//79o86l+oBcfMVjuKpVERCBDCPw1FNPmVNPPdXUr1/ftWePPvqoadCggTn66KOjzl9yySVm06ZN5oUXXog6x4FrrrnGzJkzx3zzzTeu54v74LvvvmsIDDn//POjunLQQQeZjh07mqeffjrtAR9SUFHDoQMiIAL5SAAFFXLhud46imXFihWmZs2aruePPPJIezzkHnM9H3LxmZNPPtk8++yzrueL++CMGTNsFw4//HDXrnB/RCO++eabrudTdVAKKlVkVa8IiIBvAsuXLzd33323DU5wyz369ddfzZIlS3zXF29BFFDItWeaN2/uemlofcYer1Kliut5R3EtW7bM9TwHW7VqZd566y3P88V5wum31/2F3Je2e6H1trR2s3QQrZGQFivcMog2VIcIiEBmECC/J0h55513zJQpU0woQMGEAhAMkWQTJkwo1ATniJjbvHmzp5JIpk/0oUSJEuaMM85wreann36yx73yosqVK2fP4+bzkkaNGpknn3zS/Pbbb571eF2b6uNwRcqWLevalHN8w4YNrudTdTAQBUW2NOGXEhEQgdwnwAM2KAktsptx48aZZ555xpQuXdrs3LnTLFiwIKr6N954w9StWzclyonGVq5cabASvCyIbdu2RfXJ7QBssPbKly8fdbpGjRrWOgwFmXiuc0VeNGjQIPPhhx9GHvb9uVmzZiYUoFFk+VBwR5FlKOC3nK/KfBQKREH5aEdFREAERCCKAC4vXF8oJ2bnCxcuNF27di1Ujtk9Lrarr7466vqgDnz33Xeeyok23NyOXm0zWXdTUKFQdHvJt99+61tBde/e3TRp0sSrqSKPh8LDiyxDgR07dgRazldlPgpJQfmApCIiIAKpIVChQgXDQxjBzYc35oorrijUGEmwoTBo06JFi9R0IlQriahuiblOg24Kx6szKFs3cdZx/Fpj1HHaaafZv1RLpUqVfDURDwdfFRZRyJ1kERfptAiIgAgEQeCss846UA07M1StWtV0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vn37mu3bt9vGCW+/55577P/pvyQYAiVCYBNLHAimfdUiAiKQZQTYDLVly5Z2O6JEBOvovffes4qKnb8rVKhgvv32WzNx4kSzc+dO06FDB9OuXbtEqk7rNeyGMWvWLMP+e2wiizWFdagIvuCGQQoqOJaqSQTygkCyCiovIOkmAyEgF18gGFWJCIiACIhA0ASkoIImqvpEQAREQAQCISAFFQhGVSICIiACIhA0ASmooImqPhEQAREQgUAISEEFglGViIAIiIAIBE1ACipooqpPBERABEQgEAJSUIFgVCUiIAIiIAJBE1AeVNBEVZ8IiIAIiEAgBGRBBYJRlYiACIiACARNQAoqaKKqTwREQAREIBACUlCBYFQlIiACIiACQROQggqaqOoTAREQAREIhIAUVCAYVYkIiIAIiEDQBKSggiaq+kRABERABAIhIAUVCEZVIgIiIAIiEDQBKaigiao+ERABERCBQAhIQQWCUZWIgAiIgAgETUAKKmiiqk8EREAERCAQAlJQgWBUJSIgAiIgAkETkIIKmqjqEwEREAERCISAFFQgGFWJCIiACIhA0ASkoIImqvpEQAREQAQCISAFFQhGVSICIiACIhA0ASmooImqPhEQAREQgUAI/B++hbM39IJ3LAAAAABJRU5ErkJggg==" + } + }, + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Resolving integration constants \n", + "### Equilibrium at the loaded end\n", + "\n", + "\n", + "__Conditions 1 and 2__: Stress in the free length and at the support must be equal to load over area: \n", + "\n", + "$\\sigma_\\mathrm{f}(0) = P/A_\\mathrm{f} \\; \\implies \\; P - \\sigma_\\mathrm{f}(0) A_\\mathrm{f} = 0 \\implies C = P / A_\\mathrm{f}$\n", + "\n", + "$\\sigma_\\mathrm{m}(0) = 0 \\implies D = 0$" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( \\left\\{ C : \\frac{P}{A_\\mathrm{f}}\\right\\}, \\ \\left\\{ D : 0\\right\\}\\right)$" + ], + "text/plain": [ + "⎛⎧ P ⎫ ⎞\n", + "⎜⎨C: ────────────⎬, {D: 0}⎟\n", + "âŽâŽ© A_\\mathrm{f}⎠⎠" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "eq_C = {P - sig_f.subs({x:0}) * A_f}\n", + "C_subs = sp.solve(eq_C,C) \n", + "eq_D = {sig_m.subs({x:0}) * A_m}\n", + "D_subs = sp.solve(eq_D,D) \n", + "C_subs, D_subs # display the result" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "**`sympy` explanation**: <span style=\"color:gray\"> Let us explain the two lines</span>\n", + "\n", + "__Line 1__: <span style=\"color:gray\">Defines the equation to solve $P - \\sigma_\\mathrm{f}(x=0) A_\\mathrm{f} = 0$ in curly braces `{}`. The resulting data type is a set. Set is an unordered container. The set was assigned to a variable `eq_C`. \n", + "</span>\n", + "\n", + "__Line 2__: <span style=\"color:gray\">Then we used the `sp.solve` method available in `sympy` package with two parameters. The first parameter is the equation to solve `eq_C` and the second is the variable `C` that we want to resolve. The result is obtained in form of a dictionary defining a key-value pair of the variable and the resolved expression. \n", + " </span>" + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Compatibility conditions\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "__Condition 3__: Let us now require that at the end of unknown debonded length $a < 0$, the slip between the reinforcement and the matrix will be zero, i.e. $u_\\mathrm{f}(a) = u_\\mathrm{m}(a)$." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left\\{ E : \\frac{2 A_\\mathrm{f} A_\\mathrm{m} E_\\mathrm{f} E_\\mathrm{m} F - A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} a^{2} p - 2 A_\\mathrm{m} E_\\mathrm{m} P a - A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} a^{2} p}{2 A_\\mathrm{f} A_\\mathrm{m} E_\\mathrm{f} E_\\mathrm{m}}\\right\\}$" + ], + "text/plain": [ + "⎧ \n", + "⎪ 2â‹…A_\\mathrm{f}â‹…A_\\mathrm{m}â‹…E_\\mathrm{f}â‹…E_\\mathrm{m}â‹…F - A_\\mathrm{f}â‹…E_\\\n", + "⎨E: ──────────────────────────────────────────────────────────────────────────\n", + "⎪ 2â‹…A_\\mathrm{\n", + "⎩ \n", + "\n", + " 2 \n", + "mathrm{f}â‹…\\bar{\\tau}â‹…a â‹…p - 2â‹…A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…Pâ‹…a - A_\\mathrm{m}â‹…E_\\\n", + "──────────────────────────────────────────────────────────────────────────────\n", + "f}â‹…A_\\mathrm{m}â‹…E_\\mathrm{f}â‹…E_\\mathrm{m} \n", + " \n", + "\n", + " 2 ⎫\n", + "mathrm{m}â‹…\\bar{\\tau}â‹…a â‹…p⎪\n", + "─────────────────────────⎬\n", + " ⎪\n", + " âŽ" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "eqns_u_equal = {u_f.subs(C_subs).subs(x,a) - u_m.subs(D_subs).subs(F_subs).subs(x,a)}\n", + "eqns_u_equal = {u_f.subs(C_subs).subs(x,a) - u_m.subs(D_subs).subs(x,a)}\n", + "E_subs = sp.solve(eqns_u_equal,E)\n", + "E_subs" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "__Condition 4__: To resolve for $a$ we postulate, that the strains $\\varepsilon_\\mathrm{f}$ and $\\varepsilon_\\mathrm{m}$ are equal if there is no slip between the two components. This means that at the end of the debonded length $\\varepsilon_\\mathrm{f}(a) = \\varepsilon_\\mathrm{m}(a)$:" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left\\{\\frac{\\frac{P}{A_\\mathrm{f}} + \\frac{\\bar{\\tau} a p}{A_\\mathrm{f}}}{E_\\mathrm{f}} + \\frac{\\bar{\\tau} a p}{A_\\mathrm{m} E_\\mathrm{m}}\\right\\}$" + ], + "text/plain": [ + "⎧ P \\bar{\\tau}â‹…aâ‹…p ⎫\n", + "⎪──────────── + ────────────── ⎪\n", + "⎨A_\\mathrm{f} A_\\mathrm{f} \\bar{\\tau}â‹…aâ‹…p ⎬\n", + "⎪───────────────────────────── + ─────────────────────────⎪\n", + "⎩ E_\\mathrm{f} A_\\mathrm{m}â‹…E_\\mathrm{m}âŽ" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "eqns_eps_equal = {eps_f.subs(C_subs).subs(x,a) - eps_m.subs(D_subs).subs(x,a)}\n", + "eqns_eps_equal" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAAyCAYAAACala3aAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAMw0lEQVR4Ae2d7bUWNRDHHzgWgFiB2oFIBWIHKhWAHeDhG9840gFSgS8dABWIdoBUAN4O8P/LzcRkN/v27O7ztjPn5Cabl5lkkplMJrv3ufHx48ddHzx58uQLlT+njtLf9tX1MueAc+CwHJBMfiWKrxWeKv2sj/rNvkI1fqTytwr/KHzfV9fLTpMDmsMvFP46zd55r+ZyQHP7t3Agm4+Vfst8d+G80bWzq9HPaoSw/6j0L10IPP+0OaC5Q9C/UnxjjZ4KL2sEi+/riP+N4quYJrqlwAK8rfBG9RexDjO694QXeKVgdKEZ6Cn+SXUtX4+XCRojY2aHh9d39MwGXUBV2FURBr5U+EXpH4sW/nA2HNDcfafO/k6HlV5F2I0Zws958G/Fdywvj5UflILiRYTdcPfRVRlrGCX0udJbEfh3Gm9VqXaZ8T/BTDHIBR1GnC8gWH/Qfc1lp3k3d3jCne+uXeiwDlu7TVflMfmiy3kV+PU6av3F18SO97BVcoEZ4gcKDT7fy3iTRtol7EweZpHDmXJAk80xjGACxqJfC2y3ZiftA/w/S8KQkjEF99mSRE8clyk+403qbkvYtUhsUaAlHM6QA5pDFvl7xQj6+zgEW/hrjCgsLNErNgg9Y7oHUJr1VJTHojlRUDLCjZOqBqaETABqdS4tz5T7l82BfdLMyJ4/ZGlPnhcHcErZEcwmH4fVWoA5XQiy6KMAig2jRyj37Rc0CrqGSLToE+XwoksZWPVNxH3CvgkGXNogo5Dl5rQJe0vTLzH2SA9UXPEFZ6DSWIcI2io0hXcnWnZez8dKPhYMig7n5Pd6Dj4LpTcPLuyXtwRY4LarMzrbXdcy481Uhm7YQaPAvVRsimYNLqNMgLuig2/CAL8AtIOT2TI93u1c2C9oFWiBc0Zmhw1vPMahmfnObrsGBKETzWQqK/2PQrGj6vmWgimeJfph53V/2WskN13YRzLq1KshTPRRse20qcvK4w58rZ29dV6PhJPCiX3j+qv3dc7U4XEJlExSMOOabLuWC/vlzP/PEqrcfM9HhjltO3zIjwLIGRslwO5ITLir8EDhBwUA5fFc9VuOMOWFXV3lxbmZRirLTXgEnRe0UEizaEbcdl5v9YlyhzoHXNjrfDmr3Ch0fe+/Yz4XO7vaXCmgHDjjYvrbyzfg+V3PZiZ/0DO7dM3ZZlZEp9AJT1AgisOurnguTXUlOP+IW0qGTIc6B27Wsz33XDgQhQnh7Pt+AYHdxbq1oeXCSt3cPG5ZBRkCPN7gzeunYuWz86M8kkmfCssrsyk0QXGfP8Kf95sshx4O+M7ew5xTLtJCN5M4mNJ6Rqi+UcwuHkBphJGdNNRRjFJ4pVB4qvM2qkP79wpVUF3ovlBgxw7WgvLsys3aUId30ol5X74llFNoGlK1QWlAM5jxemZnx/O+pC/AyF1c7MJ+plMahcXM6OooVAfTvPCKVytOyIx0j+IBF+0un8SEEWy3qpvx2537rpGzGx8ajkHz0GM8Oj0X9qNPwXE6oF0SAQsvoygdztSK8Zpjft9X+p4CJvNjBe7I8xdXlDUdhOPgNKf38mJaFLcvjKr1PbsmhPMQ579nShdnOxo4OAecA6fNAckt71XgmymOebWd3Zw5fq1x2nPqvXMOdHGA2xGT41Sn5qDDbON1x5YHNbVqJFQXcw8zj2saPLk4hb5T/qCXVHW450ULufNFjHBwDizAgafCwc3LQ4V0JVvs7CoIZzdVLLb/PuJqgwbB7OdTQgICDh7e6Op1vMRyFAXnRAfngHNgAQ5IrthsEXLefES+AiRhVyYCyiuS3NXmrzpe16z8VT2EmTtWhDxvQxrr4KrSLGXF8k8VV/9vWaroCeeAc2ASByRTWMoI/F9Kh/cSPlECgWVnxs6f+o/5MN3x1CZTQc8Au/2o+1217VUIAVv8E/v6Wo/0eSykTy9pIBw4LxycA2fHAa3dSf80VPX5z9D43jDpn+dndl5ZnApYAsXZXkgRREyHxR18wo1imGUFCMckhomeg3Pg3DkQruFuIkAK9pHDO6XDlj80OtVDqAlNoQ5fS6m8UAJD+LzcOeAcWJYDkkGO2C8UOJo/y8/s2Pi/KbxWQTrU63kI8rM6dXHucSTYCQ8e+Sm4aObgHHAOzOSA5I4jNt9GIOhBHpOwg1uZCDzmfPPDBooLUF1ManbvJMzKAzmWwRsF4FvlNZXBdYn+qozz/kcFfAYOzgHnwAIckDzhM3ukwJk9CDpoC2EnQ4BXnp8LosEQ8EEE/wPskYLds7Oz3yZPsV3lVfGoDgoDZWDKoVrvGJnqG994uxI6IPOd54sxO7z5Kn4WjvPcQWeU7KyN0FrayopYyBDW2hdQtbyirT0Ih/kLLOtUYqybUf6Lrg5rbCg8+GjvEaDU4JnBLSWwjHCgVH+yxypuJJ7N8yE+bWRO2KjTjm48qQm7md0sxE2CFoQdR2aNX3h4wYhvDLju47tuBL8Fyjel0CrbSoZ4sAjPh/glOhc9Jxqfya3JcWJJTdhT4YYTCCXvCQQHoxjYYtxY3qgtWhbos5Iwt0ZZOMLHl2lVpaH8DyrH77IaxPFwxClMxAUILsbzob7EMVBtkTnpoydax5ovfG8FuLAX7AhOQ3wPBBMa05SNmqMfTTCbV5RNBHwjMAhRyJYWtEG6WQX4MZcnGbpVeF7grzwsOicV/CnrBOYr9aXmoEuFW0toYjg/L/0baWFnF+5iF9EzpnsApa+UKMpj0cVHK/F8iG+bnBPf2ctlwTv+tqOb6Y7zbA7g5CsEWTRYbAh4AuW1HCqpMEuoHlYHpmHX7sp1C/+2GbrQuavwQAFFxjO/aEr6geoUfVDeMWANng+NY9E56SN2SvPlwh5nSpOCIOSmtgn7qLN0bcIjToo449q7CwgptCbjFQ6uMhFQbjs4kyH4xT8YUR1TGveVRpCgy/cET5XGObVTTDvyzZwl++CgfizO86FBRJpUW2RO+uiJ1knNlwv7/7PFBzO2q5Nrux67YAviokFYEN63eg6C1KhowpQ+xlE98HX+DloXXuWzG9EOx2EApXcKJtyWTR51/4wZ0Gv+HBP+gXSMiPWOEU3i+UIdnDwn+9CNc3BS8+XCrpnUxLDw0fT5S0C34yQjzDXACvhUgXpdddi5wJ8EUumm4FHOm4SmXKp4VQ6OHA8CbW0gkwM0rC71nuaFSof+NugWVVQGL0L/i4L4yzIqzxWjVeF6cdQ7Fqq3D8+Nzpx4nzmZTE/jO+h8jeng5oVdk2IL3zR+4pvKqr+RFtvwARHC1iVw4EHQivM6mYKkVCIuzuDcx9OXMXjBcV8hP3aQFyD2a6fYhLXZB8ZqdGKrMlLbmjCDk/twFGPNkimRdDyp7WSed6DaJ3vSnOxDoKPNqvPVQbPI3rywixtTfyONxYIgsBtz9sWEb12FKc8ErSWQKjN/gJoHZ5s51Abx0iACQje0iyLUtX8iQt9afY54DxFN5TnKAR8DRxLGTEy4q/BA4QcFgPFWf5eOwj3mZBG60BYcfb42Lexx8vvef7/SJLGoEqgNpipOsYcxTmWNBAsPaO6q17n6q/ZhwSpmlxyL19qxu5qpnnA2Egh1QV9tsCIYV+HYa7Rb7VH06dNUnmOFoAjxNTDu4LdQDB7+MUPgteIPesZq6nJ+Tp2TnXDOpiscQTkpPup83RRjNglxAlgofTsci2cX607lE5qcttUJVr4t+mTSTyAA7tw6aDUVfnYlrJCkrJRHGiEvfiZKzweBSH8uz3Plxfzk/IUnt3sGM2dO5tI9+nz17ex9TOvh52kXRSHAJETYdnpmdygWv/JYFGj0UEcxC7T1G2nKL0B1ELAXCkGTU6g8aOVAna8ViNnN80WU1+tLY74OKQnrO9dv5nnnjr33s+M+ovuWiT5jXYTnwnWV9YP0++y5lYy0Z8/JVLqNjhxyvjrltiXsDEqBvjJBFwdx0sycq45PdTAT0xVXtVIlM+LmTLkqiM4YGowRZcLOl+9+q/athjzyZRWe1+jleYeak5xmM33g+TK5zZVi6FKXGc9uc0+dtIbN/vvz6XOAnX0fq2FoZCyi1kIaarRS+bHW5xp0l5ov8AC/Xkf//239/BNFEnLOepi3/hNQMCSDqAAxCzH1Oe/jWe49j2XNO5NL4o24/hUxXlqZbKF0dvJIBU3e6JlXgnE0chsC7/FDEPPMvCyybg9FN9KZPV8Rzzt4oXTrH7NWhV2Vd6oM4zjrXcSCYUxbAM0bi/2xAgob852rqD4npKo4HIsDS82X8GBt8Fo0/qI7em5tQJ3CzuDVAGFH6LkHxmHl4BxwDpwYBySbmO7msO10wPYKO2MSIjRFQKR0r5OF+g7OAefA4TggmcSCKz506qL+H9dUYbgw91GxAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$\\displaystyle \\left\\{ a : - \\frac{A_\\mathrm{m} E_\\mathrm{m} P}{A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p + A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} p}\\right\\}$" + ], + "text/plain": [ + "⎧ -A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P \n", + "⎨a: ──────────────────────────────────────────────────────────────────────────\n", + "⎩ A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…p + A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\t\n", + "\n", + " ⎫\n", + "─────⎬\n", + "au}â‹…pâŽ" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a_subs = sp.solve(eqns_eps_equal,a)\n", + "a_subs" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "**sympy explanation:** \n", + "<span style=\"color:gray\">\n", + "The same methods of substitution and algebraic resolution were applied in the last step to resolve $a$\n", + "<span>\n", + "\n", + "<span style=\"color:gray\">\n", + "Now all the unknown parameters are resolved. Lets put them all into a single dictionary called var_subs for convenience to avoid long substitution expressions to derive $u_\\mathrm{f}$, $\\varepsilon_\\mathrm{f}$ and $\\sigma_\\mathrm{f}$.\n", + "<span>" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left\\{ C : \\frac{P}{A_\\mathrm{f}}, \\ D : 0, \\ E : \\frac{2 A_\\mathrm{f} A_\\mathrm{m} E_\\mathrm{f} E_\\mathrm{m} F - A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} a^{2} p - 2 A_\\mathrm{m} E_\\mathrm{m} P a - A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} a^{2} p}{2 A_\\mathrm{f} A_\\mathrm{m} E_\\mathrm{f} E_\\mathrm{m}}, \\ a : - \\frac{A_\\mathrm{m} E_\\mathrm{m} P}{A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p + A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} p}\\right\\}$" + ], + "text/plain": [ + "⎧ \n", + "⎪ P 2â‹…A_\\mathrm{f}â‹…A_\\mathrm{m}â‹…E_\\mathrm{f}â‹…E_\\mathrm{\n", + "⎨C: ────────────, D: 0, E: ───────────────────────────────────────────────────\n", + "⎪ A_\\mathrm{f} \n", + "⎩ \n", + "\n", + " 2 \n", + "m}â‹…F - A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…a â‹…p - 2â‹…A_\\mathrm{m}â‹…E_\\mathrm{m}\n", + "──────────────────────────────────────────────────────────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…A_\\mathrm{m}â‹…E_\\mathrm{f}â‹…E_\\mathrm{m} \n", + " \n", + "\n", + " 2 \n", + "â‹…Pâ‹…a - A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\tau}â‹…a â‹…p \n", + "────────────────────────────────────────────────, a: ─────────────────────────\n", + " A_\\mathrm{f}â‹…E_\\mathrm{f}\n", + " \n", + "\n", + " ⎫\n", + "-A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P ⎪\n", + "──────────────────────────────────────────────────────⎬\n", + "â‹…\\bar{\\tau}â‹…p + A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\tau}â‹…p⎪\n", + " âŽ" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var_subs = {**C_subs,**D_subs,**E_subs,**a_subs}\n", + "var_subs" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "With the known values of integration parameters we can resolve the sought displacement fields and plot them" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( \\frac{2 A_\\mathrm{f} E_\\mathrm{f} F \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right) + A_\\mathrm{m} E_\\mathrm{m} P^{2} + \\bar{\\tau} p x \\left(2 P + \\bar{\\tau} p x\\right) \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)}{2 A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)}, \\ F - \\frac{\\bar{\\tau} p x^{2}}{2 A_\\mathrm{m} E_\\mathrm{m}}\\right)$" + ], + "text/plain": [ + "⎛ \n", + "⎜2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…Fâ‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\ma\n", + "⎜─────────────────────────────────────────────────────────────────────────────\n", + "⎠2â‹…A_\\mathrm{\n", + "\n", + " 2 \n", + "thrm{m}â‹…E_\\mathrm{m}) + A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P + \\bar{\\tau}â‹…pâ‹…xâ‹…(2â‹…P + \\\n", + "──────────────────────────────────────────────────────────────────────────────\n", + "f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\math\n", + "\n", + " \n", + "bar{\\tau}â‹…pâ‹…x)â‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m}) \n", + "──────────────────────────────────────────────────────────────────────, F - ──\n", + "rm{m}) 2â‹…\n", + "\n", + " 2 ⎞\n", + " \\bar{\\tau}â‹…pâ‹…x ⎟\n", + "─────────────────────────⎟\n", + "A_\\mathrm{m}â‹…E_\\mathrm{m}⎠" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u_f_x = sp.simplify( u_f.subs(var_subs) )\n", + "u_m_x = sp.simplify( u_m.subs(var_subs) )\n", + "u_f_x, u_m_x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Condition 5__: The displacement at the end of debonded length $a$ must be continuous, i.e.\n", + "\n", + "$u_\\mathrm{m}(a) = u_\\mathrm{c}(a)$" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [], + "source": [ + "A_c = A_m + A_f" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [], + "source": [ + "E_c = (E_m * A_m + E_f * A_f) / (A_c)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [], + "source": [ + "G = sp.symbols('G')" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle G + \\frac{P x}{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}}$" + ], + "text/plain": [ + " Pâ‹…x \n", + "G + ─────────────────────────────────────────────────────\n", + " A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m}" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u_c_x_ = P / A_c / E_c * x + G\n", + "u_c_x_" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [], + "source": [ + "G_subs = sp.solve( u_c_x_.subs(x, -L_b), G)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\frac{P \\left(L_{b} + x\\right)}{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}}$" + ], + "text/plain": [ + " Pâ‹…(L_b + x) \n", + "─────────────────────────────────────────────────────\n", + "A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m}" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u_c_x = sp.simplify(u_c_x_.subs(G, G_subs).subs(var_subs))\n", + "u_c_x" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\frac{P \\left(A_\\mathrm{m} E_\\mathrm{m} P - L_{b} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)\\right)}{\\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)^{2}}$" + ], + "text/plain": [ + "-Pâ‹…(A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P - L_bâ‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + " \\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\m\n", + "\n", + "+ A_\\mathrm{m}â‹…E_\\mathrm{m})) \n", + "──────────────────────────────\n", + " 2 \n", + "athrm{m}) " + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u_c_a = sp.simplify( u_c_x.subs(x,var_subs[a]) )\n", + "u_c_a" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\frac{P \\left(A_\\mathrm{m} E_\\mathrm{m} P - 2 L_{b} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)\\right)}{2 \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)^{2}}$" + ], + "text/plain": [ + "-Pâ‹…(A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P - 2â‹…L_bâ‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f\n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + " 2â‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\n", + "\n", + "} + A_\\mathrm{m}â‹…E_\\mathrm{m})) \n", + "────────────────────────────────\n", + " 2 \n", + "\\mathrm{m}) " + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F_sol = sp.simplify( sp.solve( u_m_x.subs(x, a_subs[a]) - u_c_a, F)[0] )\n", + "F_sol" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [], + "source": [ + "u_mc_x = u_m_x.subs(F, F_sol)\n", + "u_fc_x = u_f_x.subs(F, F_sol)" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\frac{A_\\mathrm{m} E_\\mathrm{m} P \\left(A_\\mathrm{m} E_\\mathrm{m} P - 2 L_{b} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)\\right) + \\bar{\\tau}^{2} p^{2} x^{2} \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)^{2}}{2 A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)^{2}}$" + ], + "text/plain": [ + " ⎛ \n", + "-âŽA_\\mathrm{m}â‹…E_\\mathrm{m}â‹…Pâ‹…(A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P - 2â‹…L_bâ‹…\\bar{\\tau}â‹…\n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + " 2â‹…A_\\mathrm{m}â‹…E_\\m\n", + "\n", + " 2 2 2\n", + "pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m})) + \\bar{\\tau} â‹…p â‹…x \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " 2\n", + "athrm{m}â‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m}) \n", + "\n", + " 2⎞ \n", + "â‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m}) ⎠\n", + "───────────────────────────────────────────────────────────\n", + " \n", + " " + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sp.simplify(u_mc_x)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Visualization of results\n", + "We have derived a symbolic expression. But how to efficiently quantify it?\n", + "### Substitute for material parameters\n", + "Substitute for all the material and geometry parameters and the load P the value 1 and plot the curve" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( \\frac{P^{2}}{4} - \\frac{P \\left(P - 4\\right)}{8} + \\frac{x \\left(2 P + x\\right)}{2}, \\ - \\frac{P \\left(P - 4\\right)}{8} - \\frac{x^{2}}{2}\\right)$" + ], + "text/plain": [ + "⎛ 2 2⎞\n", + "⎜P Pâ‹…(P - 4) xâ‹…(2â‹…P + x) Pâ‹…(P - 4) x ⎟\n", + "⎜── - ───────── + ───────────, - ───────── - ──⎟\n", + "âŽ4 8 2 8 2 ⎠" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_f = {L_b:1, p:1, E_f:1, A_f:1, tau:1, E_m:1, A_m:1}\n", + "u_fc_x.subs(data_f), u_mc_x.subs(data_f)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Let us now prepare this function for interactive visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([0.125, 0.13 , 0.145, 0.17 , 0.205, 0.25 , 0.305, 0.37 , 0.445,\n", + " 0.53 , 0.625]),\n", + " array([-0.125, -0.03 , 0.055, 0.13 , 0.195, 0.25 , 0.295, 0.33 ,\n", + " 0.355, 0.37 , 0.375]))" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get_u_f_x = sp.lambdify((x, P), u_fc_x.subs(data_f))\n", + "get_u_m_x = sp.lambdify((x, P), u_mc_x.subs(data_f))\n", + "x_range = np.linspace(-1, 0, 11)\n", + "get_u_f_x(x_range, 1), get_u_m_x(x_range, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "**`sympy` explanation:** The obtained expression `u_f_x` contains symbols. To plot a function, the symbolic expression must be transformed to a quantifiable procedure. This is what `sp.lambdify` is doing. Its first argument specifies the input variables for the generated \"lambdified\" function. In our case, it is `x` and `P`. The second argument is the expression to be evaluated, i.e. our solution with substituted data parameters `u_f_x.subs(data_f)`." + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "u_f_x_range = get_u_f_x(x_range, 1)\n", + "u_m_x_range = get_u_m_x(x_range, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "**`numpy` explanation:** To prepare an array of data we first generated an array `x_range` with 100 values in the range from (-2,0). Then the newly generated function `get_u_f_x` was called with these 100 values to get the corresponding value of displacement." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "**`matplotlib` explanation:** \n", + "<span style=\"color:gray\">\n", + "Let us plot the result using the matplotlib package. It is possible to invoke simply the method\n", + "</span>\n", + "\n", + "`plt.plot(x_range, u_f_range)`\n", + "\n", + "<span style=\"color:gray\">\n", + "with the first argument specifying the data points along the horizontal and second argument along the vertical axis, respectively.\n", + "</span>\n", + "<span style=\"color:gray\">\n", + "But to prepare the later interaction with the model we directly use a more flexible plotting area with two subplots called `axes`. Such area is prepared using the function `plt.subplots(rows, cols)` which returns a figure and the `axes` for specified number of `rows` and `cols`. The returned `axes` objects can then be used to insert the data arrays as in the above `plt.plot` method. Below we construct a figure with two axes and plot into our displacement profile into the left diagram. We insert also a legend and fill the area between zero level and the data points with a value of opacity $0.2$. The second subplot axes is empty. It is prepared for the next diagram explained below.\n", + "</span>" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "52fd1439850d4e19adfb458951a22723", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax_u1 = plt.subplots(1,1, figsize=(6,3), tight_layout=True)\n", + "ax_u1.plot(x_range, u_f_x_range, color='black', label=r'$u_\\mathrm{f}$');\n", + "ax_u1.set_xlabel('x [mm]'); ax_u1.set_ylabel('$u$ [mm]')\n", + "ax_u1.fill_between(x_range, u_f_x_range, color='black', alpha=0.1);\n", + "ax_u1.plot(x_range, u_m_x_range, color='green', label=r'$u_\\mathrm{m}$');\n", + "ax_u1.fill_between(x_range, u_m_x_range, color='green', alpha=0.1)\n", + "ax_u1.legend(loc=9);" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Range of validity\n", + "Let us now augment the solution with the outside intervals.\n", + "Let us recall that the debonded length was" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left\\{ a : - \\frac{A_\\mathrm{m} E_\\mathrm{m} P}{A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p + A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} p}\\right\\}$" + ], + "text/plain": [ + "⎧ -A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P \n", + "⎨a: ──────────────────────────────────────────────────────────────────────────\n", + "⎩ A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…p + A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\t\n", + "\n", + " ⎫\n", + "─────⎬\n", + "au}â‹…pâŽ" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a_subs" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [], + "source": [ + "P_lin = sp.solve(L_b - a_subs[a], P)[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "so that $a = -1$. The range $x < a$ is beyond our applied model assumptions. We explicitly treated only the range $x \\in (a, 0)$. Thus for nicer postprocessing we have to set $u_\\mathrm{f}(x) = u_\\mathrm{f}(a), \\; \\forall x < a$ " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "This can be readily done using the piecewise covering the domain of $x$ piece by piece.\n", + "\\begin{align}\n", + " u_\\mathrm{fa} & = \\left\\{\n", + " \\begin{array}{ll}\n", + " u_\\mathrm{f}(a) & x < a, \\\\\n", + " u_\\mathrm{f}(x) & x < 0 \\land x > a, \\; \\mathrm{where} \\; a = -\\frac{P}{p\\tau}\n", + " \\end{array}\n", + " \\right.\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "u_fa_x = sp.Piecewise((u_c_x, x <= var_subs[a]),\n", + " (u_fc_x, x > var_subs[a])\n", + " )\n", + "u_ma_x = sp.Piecewise((u_c_x, x <= var_subs[a]),\n", + " (u_mc_x, x > var_subs[a]),\n", + " )\n", + "get_u_fa_x = sp.lambdify((x, P), u_fa_x.subs(data_f))\n", + "get_u_ma_x = sp.lambdify((x, P), u_ma_x.subs(data_f))" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} \\frac{P \\left(L_{b} + x\\right)}{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}} & \\text{for}\\: x \\leq - \\frac{A_\\mathrm{m} E_\\mathrm{m} P}{A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p + A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} p} \\\\\\frac{- \\frac{A_\\mathrm{f} E_\\mathrm{f} P \\left(A_\\mathrm{m} E_\\mathrm{m} P - 2 L_{b} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)\\right)}{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}} + A_\\mathrm{m} E_\\mathrm{m} P^{2} + \\bar{\\tau} p x \\left(2 P + \\bar{\\tau} p x\\right) \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)}{2 A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)} & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ \n", + "⎪ \n", + "⎪ \n", + "⎪ \n", + "⎨ A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…Pâ‹…(A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P - 2â‹…L_bâ‹…\\bar{\\tau}\n", + "⎪- ───────────────────────────────────────────────────────────────────────────\n", + "⎪ A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\math\n", + "⎪─────────────────────────────────────────────────────────────────────────────\n", + "⎩ \n", + "\n", + " Pâ‹…(L_b + x) \n", + " ──────────────────────────────────────────────────\n", + " A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm\n", + " \n", + "â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m})) \n", + "─────────────────────────────────────────────────────────── + A_\\mathrm{m}â‹…E_\\\n", + "rm{m}â‹…E_\\mathrm{m} \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A\n", + "\n", + " \n", + "─── \n", + "{m} \n", + " \n", + " 2 \n", + "mathrm{m}â‹…P + \\bar{\\tau}â‹…pâ‹…xâ‹…(2â‹…P + \\bar{\\tau}â‹…pâ‹…x)â‹…(A_\\mathrm{f}â‹…E_\\mathrm{f\n", + " \n", + "──────────────────────────────────────────────────────────────────────────────\n", + "_\\mathrm{m}â‹…E_\\mathrm{m}) \n", + "\n", + " -A_\\mathrm{m}\n", + " for x ≤ ──────────────────────────────────────\n", + " A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…p\n", + " \n", + " \n", + "} + A_\\mathrm{m}â‹…E_\\mathrm{m}) \n", + " \n", + "────────────────────────────── otherwi\n", + " \n", + "\n", + "â‹…E_\\mathrm{m}â‹…P \n", + "─────────────────────────────────────────\n", + " + A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\tau}â‹…p\n", + " \n", + " \n", + " \n", + " \n", + "se \n", + " " + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u_fa_x" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [], + "source": [ + "get_u_fa_x = sp.lambdify((x, P), u_fa_x.subs(data_f))\n", + "get_u_ma_x = sp.lambdify((x, P), u_ma_x.subs(data_f))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "source": [ + "Plot the two fields into a single diagram" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a491bca2dc074c0d8b84b9f700f65439", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Text(0, 0.5, '$u$ [mm]')" + ] + }, + "execution_count": 139, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P_ = 2\n", + "u_fa_x_range = get_u_fa_x(x_range, P_)\n", + "u_ma_x_range = get_u_ma_x(x_range, P_)\n", + "fig, (ax_u2) = plt.subplots(1,1, figsize=(6,3), tight_layout=True)\n", + "line_u_f, = ax_u2.plot(x_range, u_fa_x_range, color='black');\n", + "line_u_m, = ax_u2.plot(x_range, u_ma_x_range, color='green');\n", + "ax_u2.set_xlabel('x [mm]'); ax_u2.set_ylabel('$u$ [mm]')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Evaluate strains and stresses\n", + "With the known displacements at hand, we can directly calculate the strains as\n", + "\\begin{align}\n", + "\\varepsilon_\\mathrm{f} &= \\frac{\\mathrm{d} u_\\mathrm{f}}{ \\mathrm{d} x} \\\\\n", + "\\varepsilon_\\mathrm{m} &= \\frac{\\mathrm{d} u_\\mathrm{m}}{ \\mathrm{d} x} \\\\\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( \\begin{cases} \\frac{P}{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}} & \\text{for}\\: x \\leq - \\frac{A_\\mathrm{m} E_\\mathrm{m} P}{\\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)} \\\\\\frac{P + \\bar{\\tau} p x}{A_\\mathrm{f} E_\\mathrm{f}} & \\text{otherwise} \\end{cases}, \\ \\begin{cases} \\frac{P}{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}} & \\text{for}\\: x \\leq - \\frac{A_\\mathrm{m} E_\\mathrm{m} P}{\\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)} \\\\- \\frac{\\bar{\\tau} p x}{A_\\mathrm{m} E_\\mathrm{m}} & \\text{otherwise} \\end{cases}\\right)$" + ], + "text/plain": [ + "⎛⎧ P \n", + "⎜⎪───────────────────────────────────────────────────── for x ≤ ─────────────\n", + "⎜⎪A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} \\bar{\\tau}â‹…pâ‹…\n", + "⎜⎨ \n", + "⎜⎪ P + \\bar{\\tau}â‹…pâ‹…x \n", + "⎜⎪ ───────────────────────── \n", + "âŽâŽ© A_\\mathrm{f}â‹…E_\\mathrm{f} \n", + "\n", + " -A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P ⎧ \n", + "─────────────────────────────────────────────────────── ⎪────────────────────\n", + "(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m}) ⎪A_\\mathrm{f}â‹…E_\\math\n", + " , ⎨ \n", + " ⎪ -\n", + " otherwise ⎪ ──────\n", + " ⎩ A_\\mat\n", + "\n", + " P -A_\\mathrm{m}â‹…E_\n", + "───────────────────────────────── for x ≤ ───────────────────────────────────\n", + "rm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} \\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathr\n", + " \n", + "\\bar{\\tau}â‹…pâ‹…x \n", + "─────────────────── otherwise \n", + "hrm{m}â‹…E_\\mathrm{m} \n", + "\n", + "\\mathrm{m}â‹…P ⎞\n", + "─────────────────────────────────⎟\n", + "m{f} + A_\\mathrm{m}â‹…E_\\mathrm{m})⎟\n", + " ⎟\n", + " ⎟\n", + " ⎟\n", + " ⎠" + ] + }, + "execution_count": 140, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "eps_f_x = sp.diff(u_fa_x,x)\n", + "eps_m_x = sp.diff(u_ma_x,x)\n", + "sp.simplify(eps_f_x), sp.simplify(eps_m_x)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The stresses along the fiber are given as\n", + "\\begin{align}\n", + "\\sigma_\\mathrm{f} &= \\frac{\\varepsilon_\\mathrm{f}}{ E_\\mathrm{f} }, \\;\n", + "\\sigma_\\mathrm{m} = \\frac{\\varepsilon_\\mathrm{m}}{ E_\\mathrm{f} }\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( E_\\mathrm{f} \\left(\\begin{cases} \\frac{P}{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}} & \\text{for}\\: x \\leq - \\frac{A_\\mathrm{m} E_\\mathrm{m} P}{A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p + A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} p} \\\\\\frac{\\bar{\\tau}^{2} p^{2} x \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right) + \\bar{\\tau} p \\left(2 P + \\bar{\\tau} p x\\right) \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)}{2 A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)} & \\text{otherwise} \\end{cases}\\right), \\ E_\\mathrm{m} \\left(\\begin{cases} \\frac{P}{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}} & \\text{for}\\: x \\leq - \\frac{A_\\mathrm{m} E_\\mathrm{m} P}{A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p + A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} p} \\\\- \\frac{\\bar{\\tau} p x}{A_\\mathrm{m} E_\\mathrm{m}} & \\text{otherwise} \\end{cases}\\right)\\right)$" + ], + "text/plain": [ + "⎛ ⎛⎧ \n", + "⎜ ⎜⎪ ──────\n", + "⎜ ⎜⎪ A_\\mat\n", + "⎜ ⎜⎪ \n", + "⎜E_\\mathrm{f}⋅⎜⎨ 2 2 \n", + "⎜ ⎜⎪\\bar{\\tau} â‹…p â‹…xâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\\n", + "⎜ ⎜⎪──────────────────────────────────────────────────────────────\n", + "⎜ ⎜⎪ 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}\n", + "⎠âŽâŽ© \n", + "\n", + " P \n", + "─────────────────────────────────────────────── \n", + "hrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} \n", + " \n", + " \n", + "mathrm{m}) + \\bar{\\tau}â‹…pâ‹…(2â‹…P + \\bar{\\tau}â‹…pâ‹…x)â‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + \n", + "──────────────────────────────────────────────────────────────────────────────\n", + "â‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m}) \n", + " \n", + "\n", + " -A_\\mathrm{m}â‹…E_\\\n", + " for x ≤ ──────────────────────────────────────────\n", + " A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…p + A\n", + " \n", + " \n", + "A_\\mathrm{m}â‹…E_\\mathrm{m}) \n", + "────────────────────────── otherwise \n", + " \n", + " \n", + "\n", + "mathrm{m}â‹…P ⎞ \n", + "─────────────────────────────────────⎟ ⎛⎧ \n", + "_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\tau}â‹…p⎟ ⎜⎪───────────────────────\n", + " ⎟ ⎜⎪A_\\mathrm{f}â‹…E_\\mathrm{\n", + " ⎟, E_\\mathrm{m}⋅⎜⎨ \n", + " ⎟ ⎜⎪ -\\ba\n", + " ⎟ ⎜⎪ ─────────\n", + " ⎟ âŽâŽ© A_\\mathrm\n", + " ⎠\n", + "\n", + " \n", + " P -A_\\mathrm{m}\n", + "────────────────────────────── for x ≤ ──────────────────────────────────────\n", + "f} + A_\\mathrm{m}â‹…E_\\mathrm{m} A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…p\n", + " \n", + "r{\\tau}â‹…pâ‹…x \n", + "──────────────── otherwi\n", + "{m}â‹…E_\\mathrm{m} \n", + " \n", + "\n", + " ⎞\n", + "â‹…E_\\mathrm{m}â‹…P ⎞⎟\n", + "─────────────────────────────────────────⎟⎟\n", + " + A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\tau}â‹…p⎟⎟\n", + " ⎟⎟\n", + " ⎟⎟\n", + "se ⎟⎟\n", + " ⎠⎟\n", + " ⎠" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sig_f_x = E_f * eps_f_x\n", + "sig_m_x = E_m * eps_m_x\n", + "sig_f_x, sig_m_x" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The profile of shear stress along the bond zone is obtained as\n", + "\\begin{align}\n", + " \\tau = \\frac{\\mathrm{d} \\sigma}{\\mathrm{d} x}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQoAAAA/CAYAAAAYC4ZjAAAACXBIWXMAAA7EAAAOxAGVKw4bAAARf0lEQVR4Ae2d65UctRLHhz0bwF4TwYUMwESAyQDsCGwygONP8G0PZGCIwOZmAERg4wyACDCbAff/q1EJdbe6p18zO4+qczRqvUqlalWpVK3uee+ff/7Z7IJvv/32A9X5SeEPXX+xq36UBweCA+fFgatdw5FieKY6vyu8U3i6q36UBweCA+fHgUFFISXxlYb8QuEHXX+mcHd+LIgRnToHNC9vTn0Mx07/e31bDzH/kYj/WeGtrj8+9oEEfZfJgaQk/tToP9X12zW4kOb+18L1UOGVQrlAfpTyP1a9P3Q9GQr8yNgPCuBH2T1QAL6ei3vbfP3f6wGUWBJAbDe2fIjf4+TAc5GFkOFHW0tR/CJBNYWg+Mv2sJWHv46t+CxQe/BD7wdt/Ep/p3wW6A9nId9To+rWQ8TCJGO8rldh/p7oD7QXzAHNTVbklwqsyMzXNeEzIfulByFOffpcAn34/xLStceyhE5rW1UUKnmSMHMTTgZ0854pfJUm0MnQHYTO5sBHutcsZGwBPpmNpd7QlZCVpnmF5QLcbqNFv+DHcmgDFsz/2pn3ne7berhGG70HEyMxmQA0ImbTd8ob3Z6GS0B9/ab23MA3Cr8pjfO1b0VY0lW0PQIO6N6yIHyfSOGe409YBYQXixpgDqGAUBAPvT/Fi6wJtUe+wJnnZ8pDhtiWdLY7yr9X6FMUk4jSwExIFZsmVAwTXFj3rizUH49wb+hfgZsAHUyeswGN63MNhv34F7reO0+PmXEaP6txFjJd8/j+8Yo0g/9O/ZjAKkZxLFIOLdoMv/KwgL2Ie/pU6TX7cdyL4+ulGDSwLKSOi8EqIKw4RNmL7Rvow3wp6heGn82hsMRfPPAIBp79o5xIou2QwP1ljvkW2VZopVks1uBP23/AnLJtOH3o+pFiWxRnDtrwC4dbRDPRHK7ZYkUhUrlpNYfna+VjHq5183Zx5d2uCqdULr5xhsX3qzyKW0MATokFVVrhi0LDNFcaRYHFRczjfITZThIrxtoFEE4WLsrYTvyuejyarAErfu5D9eC9z3GsutuFfYAf5X8ycLUCpQy6JqRuHlMeMIIDTD4FfDuY0hvFHyrwTD2UxJYfzKUOL8Qfn2soik3iF/t9/AocFkQhoCDgr1u6WREoP4PK3T9Rbm2sXGX0zyPNO4KuJ/ehdtAILR38yjtauF5CmQbNgHfBg10V5parf24qGt6UkdLWl2LbeiT6uJkmeIpxsv6kfLtJimlHOTfvVoEJx2pD/qAvIOFm2wXQ5qkCeNwcfq06o8zThAs6jB6lj+oZuui6dxBPsAbwQ3DvsiVQ8A4anyuNELsQugKhDPB0bWHbqB1WnN+/L5WmDcA8595yf9qHDx2nigw83ekj4ceyAcCPZYLCOXq4XkihK4GhwY5RJrPIEJMxBxFozMyNYlMQ6RolQj6ea7951PlZgcdq3yswoTDr/1aMcFKPCcmEYVLkCanrNrDy26qkmPo/KqAcsADAgeAPKgrVgze0M0WldHWVU/nFQ+JNhz/KZ+6R3ylTXkdYhxgpXPgMpvoNRvcxE/8QyQcruzpAT+8foI9aFygJnoJkJZEqsTdEyFEkDtxsc1Cl+v9R3KskVIYlgSJwYLKyR/Y2KNCy3Os1YuGhXcDKHBBfUcAoDu4piwJKH2XsygQrlC0E92wWHKKPWYTtqdFSi2JIm7q1wbmKgwKTQx0yMV63O1YZzi6yMTHfciFAYLNCUfkuAX6jOrm+2mKOgtfaKc6WjfIHgboK0IolgnJBibnCGWzbV6j2CMqvCsRjATqcH9ZG6d3fIBiL/f7quTMTCp5pTL5dJM02lHgpHKKPpTQuar9IUYjJ7AchoDYhPa8UqEXETmiM4AF326j6W1oUVBhSeg0EGnNDoFTI3vm2UWlCQvjgEXtWeMY+G5/KC8VTzWDrVe0Yd3svbWVTfoTnvSn1o+75cuBqhaGxz3fBLNG5ReGOpbJs39eunFxZ1frzOl42pFS8TieWMD1SJv1kf4Ty8K4P9d3BQ4baoHixLMyZqZhHeFgYk3FVOziSTI3nc4XanGlQeE7jPpWxiE78bR1YZFEkbPgCavvxhjne6XmPGRqsbwPwMGcBpkuVIdgAdE8GtUdobcy6Rgmy70XAS8WDVYAvZDaovTnWFGMqc8qVvk7+UWkaDy9Vlfzq8Enl8PlPxZNfH1cb7jH8f6jwSuFOwQFLkvzZr4k7orHxkrHU+tjn+IQbJz/WrPtzjITFikIIeU7NBGaVMKFUzE3GHP+0NtA95NFfG+j7V9HCoMutAkrNn3h4G9rXcHh5GTMJbSKmcTa2LMqjrOMbKRFMuRY+/BXwGMcb4+GYbzmeKehm1VV/KCuzckoEyp+kDFUfHvMUaowPB4cj9bE8Jo1X+PfymrjwdgRItI2B2WOpId/X+Iq+8N1gyeb7u1hRJORYDyDmPAHOS+LJK4HaTAL1x+rATWCFwNxnpecRJYoAqwK6ylWYSUfatkOKEWo0J/mPlWa79FJxwwpRXgm0RXhpu1FdfAs8cn2hJE6td7oeak+zyZBwro53DCHqe5FztegDJQ2fBkH9wduXCiionVuUHmRYk3afK+VzXxOfTMtKY6kMwU6arj0+60c0o2hty6v4jsxVFEVC1jBVaiNbO0/9stL0rk4qx7ztpUvlMLqP2VVya2NVHgJ8L0JcJXLFTI0N4UABo5TbgHXApEKgUcql9x9B5UBRaQ08Urr3fhTI/ZwL949FZw6gbPLcUL/svbHMmPi3cxDObLPGWGpd73t8yAV92LxeRVHURhF5p88BCRWmP+anvYymdMf0TnUYLMrEvsykPFbsNynPHbMoHFudFPeC2i1+fVw4XKmhyFA0jGO118R7iW8VrDGWFkpLHmh8bJ+zj69PUcDYgD1zQDccPper8JgeO+cdxjSaW0c0lhYAW7M2kIfDEKuiPOCGUihNda7fKfSC+mIFKy08HhPj62qA6rlnnndhSvq8HnhwMFuZYhQH9HRgBK5OmzEZwjtqLGNwVeqMHl+l7disxv277mnlE6I0G3uqRvZcDmgycTM6TsK5+NZul+gztGnid55UKN/yFLP6lF9sagvnjcqrwlrQzVYBAX+S8lAu+J4I1lYxeD9RjMJEYGrQ9k9AIz6PjdpAB1sglFovLpXhSykVHc2xSsoxkofjr+bD2TkWGs+EUeObidubNZR6n6KwmywGdCaGY4n44jjAxG8LSckEHMrZS65rhB1Lw4G5hJBWQXNt5+vjqeEDxa6cSuujxIsCyZaGcKNkfNHD+X2bKvfiUpvcPtXdKA+nNUI6CKqzcyyqAy/YrjEWtyrBjYKijC1T36vwO8e3EL+6NiWZ5f+KnBLUgWvpvptQVo/ry+EA88KFrTFqzRlb+ZWJQG5SmsUmKw7l0ba9QlOd+uC2tpaRfpTvE9XaKU2MwsIi8O1H2WSjfPoFOvNXZfTjr4nvxGVYJv6kPsaMhTo8BcJKGf0q/ITxzcJfDBf++FvXm+uiwC8hHni6jeI3OLDlgCapC26bJa5EOEtDGdup2sd2cHIiqBmPrllB8UMg2NmEV/6N0j4XnyvNloQnLKzCG8UcSGuA8lAevm3hsbWXg4uJD508naE9tPTios5UEL5JY0n4My9a6YbpT5nwjx5fwkU0Gn/Rhkusm2xVXZeFIgSHFBoZJqORAoIDxgHNhyFfCsKHEHeEt8U+BJ/JV1oapPOE9Ppp/lXLvE47Tv3voqHdbLW0+q/Su2MsHYXQR9DM8Y3G7/2qHxTrRnFWMldFISf/0IgcSMqa3csjDg4McICVmsdpg6B5hdWAY5LV/RQhC85S4sUDhBHF8kjXq78KvxC/K/Q8TPtLQSGlAGuC48FneXAojzguVuVAmjuYxCwu5SnY3n5SGw5jTbJaVR/h+lHB/B9Kz56ra+LqHegJFogv6AG2ZU0fD/89+s033/yt8ILrCMGDQ8wBzbebQ/QTfUybz333xS0KNDUfOgF4Pr2aibVFGb/BgeDAKXOg8W/mUhA8z2X/+F9dTzILT5kJQXtwIDgwzIHszEzVPlVcWhfDraM0OBAcuAgONBRFsiJ4vIQXlqcgAcGB4EBwYNNQFIkfPCIF/LDLNhW/wYHgwMVyoOGjcC7ImuB/LtiC8Nn68FU4YyIODlwoB2oWBazgWwIAL/oEBAeCAxfOgcYR7oIXbkVgVZw9yGriAA8HeT5QeKV050jxsTFBNEIrT6niJO2x3ZwzpKfPojjDoW6HJAHr+F6U59/X5Fz8gxMZPIoCRW4vOZ0IzUHmiXKgz6KYNBwJGsc++97T52OzR7FCiw4Xrr7xncxBM42Fl7DCh9R3JyN/VQ6spSg4538KL5Kd1SNfKQrfIq46KQJZcKDNgYvZekio8EN0th1thkQ6OBAc6HJgLYvC3z7tc37yfYu9WRzCTb/Q4F/k4dsJfMvQ3oBTjCXhHzThtV77YInyqv/hoXK2KG598Eky+68QxQ1I9fi2Av2+r8Ar1LbNUvxIaWgC160C2xpwkW9faVJMW8op4xr/CO1RauTBN/9YC/RgQVCPcTEG2lIOPgNd05Y+qOv344nysy9D17Sr0q38gOBAhwN95yiYhExMXhAbfJVX5RzQYlLyPUWcgQgHkzCD6rzNiZUvhBvBgF4+zZ59DLqGHr5xmD9komsEGsGq+kxSG1X594OpygM/Txf44nOJn3xepMt/Tady+wKR4lIoOZPySgF64AM0mOJUPQSZcp5cGJ1Fnv1nhsoMlE972pU0QBevBJuiSG1RkA1/kdJ8e9E+PKN4FN3bXuM3OLDlwNUSRqRJhzAy0RFAUwjEZVjSx4i2KInyM/HeBGXFvx0hGFPAvmHoDXxMSrNKl0C/PEotBbd2/B3liRXjNOKANOtKMQoWRfxEwSDlkZ+thFQET3NfKQ/cJTxUAvpRQCX4aVvyxtJdto/rC+fAUkXB5M0Wh64RSib5QSD1hxn9ut2hykxpKT8LYbtOT9oPm7WLs/AV/bKit4F+Pyky4YfTslHbNn9eqpx3axgH5VhyKBKeJBkoDyWFRTEIqseWBOXxt65R4HwNmm9UurXC/aGfMXSrWkBwYMuB65UZgVDunNAr9mnCJXxt4Su7mGpRlG37rr1fth1ZoFNlVu+2skF4q6D2WBrQz3YIK4j/rMBCe6bAx2pRxGxDKBsDbHueK6Bw2AZiVfGVZ/BPpVtNAoIDK/33aMFI82sU6X1fuil+M9CR1+lUkfAgRGMFsGzvOFm1s0VVVmhdDykyquLDQCncKv6LDAF5CPcY/NTfqD2KgHMrjMnGpWsUGX8FiAKbSreaBAQHNtW3R2fxJU1SzNxsZs9CNKFR6gshbDjvQKEy9ymwJ3fYJbBebzAu+n1Sq1j0XSuu5SHECPmPCq4YyMO3gYOU6zGA9dSwcNSebQw48V1wb+DBWnQLVcAlcOBqxUFiTfiKtSLanaj42M5jCUF7i4HZ/b3yy4+Ecv1wAOODgbJ2Ef0iyK6QrFxp+i35cKM0oRfUBgGmTf7PiyKPR5slvjaeNm7+A6OdR9r5MJbudj+RvmAOLH486rzT5GTlrp438Dr7itU3qzGm9l3qgzTmtgtHyjZLwy0MhO9WdfhjGZTMcwWUHThoxzYAPJj/KAPLV938NELX3q+K81kK+uWRJW1oW+KsntugsepjOdDOLQryzDpQ3DiDorTT60oKep8qoASxrnz7oks738EWKfNC17100yAgONDmwGqKoo040sGB4MD5cODqfIYSIwkOBAf2xYE+ReGP86bs2fdFY+ANDgQH7pkDfYrCD+R0nibcM73RfXAgOHAPHKgqisJ5hiMuIDgQHLhwDlQVReKJH/vFGx8QHAgOXDAHqk89nB+yLNiC8CiOo8oHO0jl/UccHAgOHAcHhiwKKORwDucNfpOi8Gf25AcEB4IDF8SBQYvC+SAlwSEl/BX2HQXPjzg4EBy4DA7ssiiMC1IUnEbkrcSho8SXwbEYZXDgAjnwf3hGQzsbox2EAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: x \\leq - \\frac{A_\\mathrm{m} E_\\mathrm{m} P}{\\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)} \\\\\\bar{\\tau} & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ -A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P \n", + "⎪ 0 for x ≤ ─────────────────────────────────────────────────────────\n", + "⎨ \\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\n", + "⎪ \n", + "⎩\\bar{\\tau} otherwise \n", + "\n", + " \n", + "───────────\n", + "\\mathrm{m})\n", + " \n", + " " + ] + }, + "execution_count": 142, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tau_x = sig_f_x.diff(x) * A_f / p\n", + "sp.simplify(tau_x)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Plot the strains and stresses\n", + "Similarly to the callable function `get_u_fa_x` let us define the functions for the strains and stresses using the `sp.lambdify` generator " + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "get_eps_f_x = sp.lambdify((x, P), eps_f_x.subs(data_f))\n", + "get_eps_m_x = sp.lambdify((x, P), eps_m_x.subs(data_f))\n", + "get_sig_f_x = sp.lambdify((x, P), sig_f_x.subs(data_f))\n", + "get_sig_m_x = sp.lambdify((x, P), sig_m_x.subs(data_f))\n", + "get_tau_x = sp.lambdify((x, P), tau_x.subs(data_f))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "To make the code for plotting shorter let us define a general procedure plotting and filling the curves and attaching the labels to a specified subplot in one call " + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "cfe3597727614eb89d3da5af9539297a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, (ax_eps, ax_sig, ax_tau) = plt.subplots(1,3, figsize=(10,3), tight_layout=True)\n", + "ax_eps.plot(x_range, get_eps_f_x(x_range,1 ), color='green')\n", + "ax_eps.set_xlabel('x [mm]')\n", + "ax_eps.set_ylabel(r'$\\varepsilon$ [-]')\n", + "ax_eps.plot(x_range, get_eps_m_x(x_range,1 ), color='green',alpha=0.8)\n", + "ax_sig.plot(x_range, get_sig_f_x(x_range,1),color='blue')\n", + "ax_sig.set_xlabel(r'x [mm]')\n", + "ax_sig.set_ylabel(r'$\\sigma$ [MPa]')\n", + "ax_sig.plot(x_range, get_sig_m_x(x_range,1),color='blue', alpha=0.8)\n", + "ax_tau.plot(x_range, get_tau_x(x_range,1), color='red')\n", + "ax_tau.set_xlabel(r'x [mm]')\n", + "ax_tau.set_ylabel(r'$\\tau$ [MPa]');" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Pull-out curve" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Quick summary - direct derivation\n", + "\\begin{align}\n", + " \\varepsilon_\\mathrm{f}(0) &= \\frac{P}{E_\\mathrm{f} A_\\mathrm{f}}, \\;\\;\n", + " \\varepsilon_\\mathrm{m}(0) = \\frac{-P}{E_\\mathrm{m} A_\\mathrm{m}} \\\\\n", + " a &= - \\frac{P}{p\\tau}.\n", + "\\end{align}\n", + "Thus, the crack opening can be expressed as the area of the triangle\n", + "\\begin{align}\n", + " w &= \\frac{1}{2}\\left[\\varepsilon_\\mathrm{f}(0) - \\varepsilon_\\mathrm{m}(0)\\right]a \\nonumber \\\\\n", + " &= \\frac{1}{2}\\frac{P^2}{p\\tau} \\left[\\frac{1}{E_\\mathrm{f} A_\\mathrm{f}} + \\frac{1}{E_\\mathrm{m} A_\\mathrm{m}}\\right].\n", + "\\end{align}\n", + "By solving this equation for $P$ we obtain the pullout curve in the form\n", + "\\begin{align}\n", + " P(w) = \\sqrt{2wp\\tau \\frac{E_\\mathrm{f}A_\\mathrm{f}E_\\mathrm{m}A_\\mathrm{m}}{E_\\mathrm{f}A_\\mathrm{f}+E_\\mathrm{m}A_\\mathrm{m}}}.\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{A_\\mathrm{m}} \\sqrt{E_\\mathrm{f}} \\sqrt{E_\\mathrm{m}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{\\frac{w}{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}}}$" + ], + "text/plain": [ + " \n", + " ______________ ______________ ______________ ______________ _____\n", + "√2⋅╲╱ A_\\mathrm{f} ⋅╲╱ A_\\mathrm{m} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ E_\\mathrm{m} ⋅╲╱ \\bar\n", + " \n", + "\n", + " _______________________________________________________\n", + "_______ ╱ w \n", + "{\\tau} ⋅√pâ‹… ╱ ───────────────────────────────────────────────────── \n", + " ╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} " + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "eps_f_0 = P / E_f / A_f\n", + "eps_m_0 = -P / E_m / A_m\n", + "a_subs = sp.solve({P - p * tau * a}, a)\n", + "w_el = sp.Rational(1,2) * ( eps_f_0 - eps_m_0) * a\n", + "Pw_pull_elastic = sp.solve(w_el.subs(a_subs) - w, P)[1]\n", + "Pw_pull_elastic " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pull-out curve derived from the displacement field solution " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "**`sympy` explanation:** In parallel let us use again the `subs` and `solve` provided in `sympy` to define the `P_push` and `P_pull` variables in the running `jupyter` kernel. As `solve` searches for zero point of the supplied equation we must transform the above equation into" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - w + \\frac{2 A_\\mathrm{f} E_\\mathrm{f} F \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right) + A_\\mathrm{m} E_\\mathrm{m} P^{2}}{2 A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)}$" + ], + "text/plain": [ + " \n", + " 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…Fâ‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A\n", + "-w + ─────────────────────────────────────────────────────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E\n", + "\n", + " 2\n", + "_\\mathrm{m}â‹…E_\\mathrm{m}) + A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…P \n", + "────────────────────────────────────────────────────────\n", + "_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m}) " + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u_f_x.subs(x,0) - w" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "and then send it to `sp.solve`" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( \\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{\\frac{- F + w}{A_\\mathrm{m} E_\\mathrm{m}}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}}, \\ - \\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{- \\frac{F - w}{A_\\mathrm{m} E_\\mathrm{m}}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}}\\right)$" + ], + "text/plain": [ + "⎛ __________________\n", + "⎜ ______________ ______________ ____________ ╱ -F + w \n", + "⎜√2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ \\bar{\\tau} ⋅√pâ‹… ╱ ─────────────────\n", + "⎠╲╱ A_\\mathrm{m}â‹…E_\\m\n", + "\n", + "_________ \n", + " _______________________________________________________ ___\n", + "──────── ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} , -√2⋅╲╱ A_\n", + "athrm{m} \n", + "\n", + " ___________________________\n", + "___________ ______________ ____________ ╱ -(F - w) \n", + "\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ \\bar{\\tau} ⋅√pâ‹… ╱ ───────────────────────── \n", + " ╲╱ A_\\mathrm{m}â‹…E_\\mathrm{m} \n", + "\n", + " ⎞\n", + " _______________________________________________________⎟\n", + "⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} ⎟\n", + " ⎠" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_push_elastic, Pw_pull_elastic = sp.solve(u_f_x.subs({x:0})-w, P)\n", + "Pw_push_elastic, Pw_pull_elastic" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Note that the obtained $P(w)$ covers both the pull-out and push-in case. If we supply the parameters defined above with unit stiffness, area and perimeter we obtain" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\left( 2 \\sqrt{- F + w}, \\ - 2 \\sqrt{- F + w}\\right)$" + ], + "text/plain": [ + "⎛ ________ ________⎞\n", + "âŽ2⋅╲╱ -F + w , -2⋅╲╱ -F + w ⎠" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_push_elastic.subs(data_f), Pw_pull_elastic.subs({A_f:1, E_f:1, L_b:1, p:1, tau:1, A_m:1, E_m:1})" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Plot the pull-out curve\n", + "The symbolic expression must be transformed into a quantifiable form using `sp.lambdify`" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{- \\frac{F - w}{A_\\mathrm{m} E_\\mathrm{m}}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}}$" + ], + "text/plain": [ + " __________________\n", + " ______________ ______________ ____________ ╱ -(F - w) \n", + "-√2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ \\bar{\\tau} ⋅√pâ‹… ╱ ─────────────────\n", + " ╲╱ A_\\mathrm{m}â‹…E_\\m\n", + "\n", + "_________ \n", + " _______________________________________________________\n", + "──────── ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} \n", + "athrm{m} " + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "py_vars = ('w', 'tau', 'p', 'L_b', 'A_f', 'A_m', 'E_f', 'E_m')\n", + "map_py2sp = {py_var : globals()[py_var] for py_var in py_vars}\n", + "sp_vars = tuple(map_py2sp[py_var] for py_var in py_vars)\n", + "sp_vars\n", + "Pw_pull_elastic" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "For plotting, let us also evaluate the for the displacement at the unloaded end\n", + "\\begin{align}\n", + "w = u_\\mathrm{f}(x = -L_\\mathrm{b})\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: L_{b} \\geq - \\frac{\\sqrt{2} \\sqrt{A_\\mathrm{f}} A_\\mathrm{m} \\sqrt{E_\\mathrm{f}} E_\\mathrm{m} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{- \\frac{F - w}{A_\\mathrm{m} E_\\mathrm{m}}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}}}{A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p + A_\\mathrm{m} E_\\mathrm{m} \\bar{\\tau} p} \\\\\\frac{\\frac{\\sqrt{2} A_\\mathrm{f}^{\\frac{3}{2}} E_\\mathrm{f}^{\\frac{3}{2}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{- \\frac{F - w}{A_\\mathrm{m} E_\\mathrm{m}}} \\left(- \\sqrt{2} \\sqrt{A_\\mathrm{f}} A_\\mathrm{m} \\sqrt{E_\\mathrm{f}} E_\\mathrm{m} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{- \\frac{F - w}{A_\\mathrm{m} E_\\mathrm{m}}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}} - 2 L_{b} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)\\right)}{\\sqrt{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}}} - 2 A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p \\left(F - w\\right) \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right) - L_{b} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right) \\left(- 2 \\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{- \\frac{F - w}{A_\\mathrm{m} E_\\mathrm{m}}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}} - L_{b} \\bar{\\tau} p\\right)}{2 A_\\mathrm{f} E_\\mathrm{f} \\bar{\\tau} p \\left(A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}\\right)} & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ \n", + "⎪ \n", + "⎪ \n", + "⎪ \n", + "⎪ \n", + "⎪ \n", + "⎪ \n", + "⎪ ____________________\n", + "⎨ 3/2 3/2 ____________ ╱ -(F - w) \n", + "⎪√2â‹…A_\\mathrm{f} â‹…E_\\mathrm{f} ⋅╲╱ \\bar{\\tau} ⋅√pâ‹… ╱ ───────────────────\n", + "⎪ ╲╱ A_\\mathrm{m}â‹…E_\\mat\n", + "⎪─────────────────────────────────────────────────────────────────────────────\n", + "⎪ \n", + "⎪ \n", + "⎪─────────────────────────────────────────────────────────────────────────────\n", + "⎪ \n", + "⎩ \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "_______ ⎛ \n", + " ⎜ ______________ ______________ __\n", + "────── ⋅⎜- √2⋅╲╱ A_\\mathrm{f} â‹…A_\\mathrm{m}⋅╲╱ E_\\mathrm{f} â‹…E_\\mathrm{m}⋅╲╱ \\\n", + "hrm{m} ⎠\n", + "──────────────────────────────────────────────────────────────────────────────\n", + " ______________\n", + " ╲╱ A_\\mathrm{f}â‹…\n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " ___________________________ \n", + "__________ ╱ -(F - w) ______________________________\n", + "bar{\\tau} ⋅√pâ‹… ╱ ───────────────────────── ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} + A\n", + " ╲╱ A_\\mathrm{m}â‹…E_\\mathrm{m} \n", + "──────────────────────────────────────────────────────────────────────────────\n", + "_________________________________________ \n", + "E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "_________________________ \n", + "_\\mathrm{m}â‹…E_\\mathrm{m} - 2â‹…L_bâ‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\n", + " \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + " \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…\n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 0 \n", + " \n", + " \n", + " ⎞ \n", + " ⎟ \n", + "\\mathrm{m}â‹…E_\\mathrm{m})⎟ \n", + " ⎠\n", + "───────────────────────── - 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\tau}â‹…pâ‹…(F - w)â‹…(\n", + " \n", + " \n", + "──────────────────────────────────────────────────────────────────────────────\n", + "E_\\mathrm{f}â‹…\\bar{\\tau}â‹…pâ‹…(A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{\n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m}) - L_bâ‹…\\bar{\\tau}â‹…pâ‹…(A_\\\n", + " \n", + " \n", + "──────────────────────────────────────────────────────────────────────────────\n", + "m}) \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " ⎛ \n", + " ⎜ ______________ \n", + "mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m})⋅⎜- 2⋅√2⋅╲╱ A_\\mathrm{f} ⋅╲\n", + " ⎠\n", + " \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " ___________________________ \n", + " ______________ ____________ ╱ -(F - w) __________\n", + "╱ E_\\mathrm{f} ⋅╲╱ \\bar{\\tau} ⋅√pâ‹… ╱ ───────────────────────── ⋅╲╱ A_\\mathrm\n", + " ╲╱ A_\\mathrm{m}â‹…E_\\mathrm{m} \n", + " \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + " \n", + "\n", + " \n", + " \n", + " -\n", + " \n", + " for L_b ≥ ─\n", + " \n", + " \n", + " \n", + " \n", + " ⎞ \n", + "_____________________________________________ ⎟ \n", + "{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} - L_bâ‹…\\bar{\\tau}â‹…p⎟ \n", + " ⎠\n", + " \n", + "───────────────────────────────────────────────────────────────── \n", + " \n", + " \n", + "\n", + " \n", + " ______________ ______________ ____________ \n", + "√2⋅╲╱ A_\\mathrm{f} â‹…A_\\mathrm{m}⋅╲╱ E_\\mathrm{f} â‹…E_\\mathrm{m}⋅╲╱ \\bar{\\tau} â‹…\n", + " \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " A_\\mathrm{f}â‹…E_\\mathrm{f}â‹…\\bar{\\t\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " oth\n", + " \n", + " \n", + "\n", + " ___________________________ \n", + " ╱ -(F - w) _________________________________________\n", + "√pâ‹… ╱ ───────────────────────── ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}\n", + " ╲╱ A_\\mathrm{m}â‹…E_\\mathrm{m} \n", + "──────────────────────────────────────────────────────────────────────────────\n", + "au}â‹…p + A_\\mathrm{m}â‹…E_\\mathrm{m}â‹…\\bar{\\tau}â‹…p \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "erwise \n", + " \n", + " \n", + "\n", + " \n", + "______________ \n", + "â‹…E_\\mathrm{m} \n", + " \n", + "───────────────\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " " + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "w_L_b_elastic = u_fa_x.subs(x, -L_b).subs(P, Pw_pull_elastic)\n", + "w_L_b_elastic" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "and also the expression for the debonded length as a function of the control displacement $w$" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\frac{\\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{- \\frac{F - w}{A_\\mathrm{m} E_\\mathrm{m}}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} + A_\\mathrm{m} E_\\mathrm{m}}}{\\sqrt{\\bar{\\tau}} \\sqrt{p}}$" + ], + "text/plain": [ + " ___________________________ \n", + " ______________ ______________ ╱ -(F - w) ______\n", + "-√2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} â‹… ╱ ───────────────────────── ⋅╲╱ A_\\ma\n", + " ╲╱ A_\\mathrm{m}â‹…E_\\mathrm{m} \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " ____________ \n", + " ╲╱ \\bar{\\tau} ⋅√p \n", + "\n", + " \n", + "_________________________________________________ \n", + "thrm{f}â‹…E_\\mathrm{f} + A_\\mathrm{m}â‹…E_\\mathrm{m} \n", + " \n", + "──────────────────────────────────────────────────\n", + " \n", + " " + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "aw_pull_elastic = a_subs[a].subs(P, Pw_pull_elastic)\n", + "aw_pull_elastic" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Virtual experiments\n", + "\n", + "Exercise the relation between $P$ and $\\tau(x)$ and between $w$ and $\\varepsilon(x)$.\n", + "\n", + " 1. Given a rectangular cross section with area $A = 100$ identify a carbon reinforcement area \n", + " that induces 10 mm crack spacing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.1" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": { + "height": "calc(100% - 180px)", + "left": "10px", + "top": "150px", + "width": "203.5px" + }, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/pull_out/2_6_CB_SF_M_RG-.ipynb b/pull_out/2_6_CB_SF_M_RG-.ipynb new file mode 100755 index 0000000000000000000000000000000000000000..827816b22b614d2c1334d004c7fac8513d0649c5 --- /dev/null +++ b/pull_out/2_6_CB_SF_M_RG-.ipynb @@ -0,0 +1,866 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Example 2.4: CB-SF-M-RG\n", + "Crack bridge boundary conditions " + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## Idealization of the pull-out problem\n", + "This notebook explains the derivation of the pullout model and provides also its executable form.\n", + "The one-dimensional idealization of the pull-out is introduced in the figure\n", + "\n", + "\n", + "\n", + "**Remark**: The origin of the coordinate system is placed at the transition between the bond zone and free zone of the fiber. The domain in the bond zone is defined as $x \\in (-L_\\mathrm{b},0)$. As a result, in the bond domain $x < 0$. The fiber is assumed to have an infinite length for $x < -L_\\mathrm{b}$. This means that the length of the bond zone $L_\\mathrm{b}$ remains constant - this fiber will never be pulled out." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The meaning of the variables defining the idealization is summarized in the table" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "%matplotlib widget\n", + "import sympy as sp # symbolic algebra package\n", + "import numpy as np # numerical package\n", + "import matplotlib.pyplot as plt # plotting package\n", + "sp.init_printing() # enable nice formating of the derived expressions\n", + "import bmcs_ipw.PO_constant_bond as poui" + ] + }, + { + "attachments": { + "image.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAADaCAYAAACl44R8AAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7s3QeYbUWVPvwNJtJIGJAgSYIEyUmQOAQlCBJEcpKMEgQBEYFLUMk5m8gSBdEBJUsUJAiIaXAGBXVmdFAUFdP451ffV2fq7rv3PrG7T3fXep773D471K56a1XVu1atqpruH69LkSUjkBHICGQEMgIZgYxARiAjMMkRmH6Slz8XPyOQEcgIZAQyAhmBjEBGICMQEHhjxGG66abLkGQEMgIZgYxARiAjkBHICGQEJiUCgiiyx3hSVn0udEYgI5ARyAhkBDICGYGMQBmBlsf4d7/7Xfle/p0RyAhkBDICGYGMQEYgI5ARmDQIZI/xpKnqXNCMQEYgI5ARyAhkBDICGYEmBDIxbkIn38sIZAQyAhmBjEBGICOQEZg0CGRiPGmqOhc0I5ARyAhkBDICGYGMQEagCYFWjHHTQ3X3Xn311aKT2OS3ve1txRvf2Nen6rIwIa//5Cc/Kf7yl7+Esv3zP/9zAb86+eMf/1j89Kc/bd1edNFFC9d++ctfVr4iLWlOZqG3//mf/1m85S1vCTDAesYZZyzmm2++FiyuwdUzVqm++c1vLuadd96hg00+H3zwwWKdddYZV23slVdeKX7wgx8UL7/8crHqqqsWc801V8fY/s///E/x4x//OLy79tprF29961s7fnc0HvzXf/3XQh6XXXbZYsUVVxyNT+ZvZAQyAhmBjMCAEOjLY/y9732vuPTSS4sll1yy2G677Yobb7yxuOWWW4qbb765uOqqq4pPfvKTxdJLL11885vfHFB2J0cyTz/9dPG5z32uWH/99Yv11luv+N///d/agl988cXFu9/97uKwww4r7rvvvuJPf/pT8etf/zpgvuOOO4Z7X//614vvfOc7xQMPPFCcdNJJgUxcdtlltWlO9Bu//e1vAyYf+tCHine9613FwQcfHEhaKq+99lrx6U9/ulhuueWKz3zmMwVdH0a54YYbii233LL4/Oc/P4zZq80TUvvVr3612H777Ysf/ehHtc9V3fjv//7v4stf/nKxww47BANnmORjH/tY8bOf/SwYn+9///uLP//5z8OUvZyXjEBGICOQEWiDwHTx5Lvf//73bR6tvv3973+/WH311YsvfelLxTbbbDPNQx//+MfDALbyyitPcy9fqEfgr3/9ayBsV199dYH8vPe9753mYYPuRRddVBx77LHF5ZdfXmy11VZTPcMwufDCCwtEMJV/+7d/C4TZffUzWeWll14qVllllaCbvHxlue2224r/+I//KD7ykY+Ubw3Nb55J+sF4OuCAA4YmX51mZJ555gkG9VprrdXpK+E5BuDcc89dPP7448U73/nOrt4dqYcRdoYWsq7N3XvvvcUHP/jBkfrc0KR7+umnT+p+ZGgqImckI5AR6BuBf/qnf+p/H2NeSMILWSVLLLFEscACC1TdytcaEJh++ukDbv/yL/9SXHHFFZVP3nXXXcVGG20U7nm+LK5VHdyy+OKLFyuttFJx5plnFn//+9/Lr02a3/PPP39x1FFHBU/6ddddN1W5GSbI8rCTTZ7J/fbbr5h55pnHZb296U1v6infQluGTRicQpXe8IY3BI/xZCDFv/jFL4bOaz9sepHzkxHICIwvBKZlU13mH6ngsUnjYL/97W+3UhE72E38YJefn/CP77rrrgXP5a9+9atpymo6evbZZ5/meicXZphhhkK4gH+TWXiDhfvwnqee9QsuuCAQzirDYqzxQtpTEUKz2mqrjXW2Jv33xaIPo76MZMWcffbZI5l8TjsjkBHICIw6An2tiDMQWPiTTuFbjHf33XeH8Aoi/jFL7wiIU7S4SEzlQQcd1EpIHONCCy3UU8LIsDhmdRM9jbzSQjN4u5588sniox/9aIgdn+hiUajBXajK8ccfX5x11llh0Z3QIounUmGcIMwLLrhg8LT/13/9Vwh3MfVi+vzII48s/v3f/73Yd999i5133jn8fcQRR4R7YsC1E38feOCBBU/blClTAuZiwi24fPvb3x7IeJS//e1vxfnnnx++9Yc//KEQdoB4xRjWQw45JCy0NIUvFj3KlVdeGWYQ/LPIjef7a1/7Wm1V3n///cUpp5wSjC9GWHz2ueeeKzbbbLNAunnUpffEE08UO+20U6t9SxRRP+ecc4pZZ501PCN/DDoLQVORTzHxvKmzzTZbsfDCC091X18inRdffDGEBpltuv3224vzzjsvLGYTMgL7Kun0XSEYl1xySZiNgSljiKfXN5qkXRmvueaakFf5/MQnPlHwhJ944olNSRZf+cpXCk4EMxfqUTz7pptu2nrn+uuvD3qi/dMb9bDhhhuG+3V19t3vfrfYeuuti3XXXbeVDj0S7kCPpMWgtiZE+z711FPDeoSllloq6Cwc1bs1DtqGdkA33vGOdwRd0r8zIuX36KOPLm666aZikUUWCWUm2kA01p9//vmA9TLLLBPagud22223Vr7yHxmBjEBGYBgR6IsYx1XlBhYdotX+OtZPfepTw1jWcZknU8YGMUQhJcY89RbX1e0+EQvLeEFICEL8wx/+sDj33HOLTTbZJBBCIhbSYjyLJpEbA/D73ve+QJ4RmIkujLhddtml+OIXvxjIAWJpkWIqCA+SiKxEQgcfoSw8tkirOPvFFlustVMLIsCg8X+M4fcckikW9c477wzxywwchM2uGAgNkkJOOOGEQJrFiZONN944GDNINnJDZpppprCIMAqi9eyzzwbCE+Ub3/hG6++qP+xogZTbQcHiWRiYUWDg7rHHHsVxxx0XrtFFpHafffYJuoGk069tt9222GuvvcJiM/Kb3/wmYAXPaFwhRkIL4Acjcuutt7Zw8VucsfTFv8ddWeipWGLEH8Grk07fZWjI0+abbx6SQo733nvvumTD9U7KqC0i7drlySef3JiemwwEsdXqBgFVb9HgmGOOOQKRZaggpUQMOVLJGPNcU50pj7UfcScg79HBSNQtmGa8fetb3wqGm+eQejH3cLFuwbfN9MHfM1tssUXIhwWpwo/OOOOMYCSqJ31GucwvvPBCePeee+5phdL57dnsLAlQZskIZASGFIG+QilifLEBUAduIF9hhRWKNddcc0iLOz6zxfvG+IghKgbJuvjhcgk9awcGJEx9IRcGZYMjUkV4kQyOMd6Yh0f6jJzJInSXp4sRwis3yyyzTFV03l0evdTLufzyywfsGBoEZrx/qfAclrfb8xwSzAsZvf62i+PF5K2LwqPoG1EsFHSNsYLoVAlD6ZFHHgnbmUVpR/w8F/ONlCHFhMcWAZfXGNMrbArpQSgJLy5jK5Ji1+CIBB1++OHhGWK3BuQ2kmLXIjmNz/i/aj1CGdP0+W7fhQ8PegxNMmOCaDZJp2VsSiO9B1OzE2ZlInmlb4wibdKMxWc/+9lggEShM3vuuWcgpdHIqqsz3mWGHEFMzQCYXYiijjfYYIPWb0YRTzNvtTo3e2FrQrNI6jqSYi8wzlxvtzZB+SxqTeuTsW2syJIRyAhkBIYZgb48xoiWjjQO/NHbE/eDNU1sKyaEIkvvCPAu8uYZkHg3eXrSqdJ2KSN7TYuzDGB33HFH8cwzz4Rt9gzWvGSR/LRLfyLcp7u8nIyIlOTFsvEK21qsLMIFeNx51Ug3i8nK5Na7pqij8ECm25HxKteFEsR3EBeGDxKNdFu8GfNWznvV7zRPkQyn12L55AWZg0s5JEK63hGWwqNIl/QV5V1reJzLMbnd4FfOfyfvClVRv0IfGB3IoHCYJumkjN0sBkRCta10Nw3GaCSNDz30UDCahC+kAlOhH95PFztX1VnUI7gjwvQ7StWiQCQ7GsrxuYcffjgYOXbGiSLdOeecMxhMTWtHvKtM6btmP5q8/k11kO9lBDICGYHRQqBnYhzji8WzpZKu4jeNHGPiRqtAE/U7vMZi+njmf/7znwfCMyiRnqlyaZqmR6Lj9P2gvjEe0qkiajHf4iurhCevvB1e1XNV18RzN4m64CHkWRWmxHBp53HjeTY9jxDx+AtXQKJsa5aSo7rvVuWp6pr2T+rK7h0kSL6JvzshrnX5GtR1ZBSxNIMCH3jCSmx1nXRSRuSzU4mY1OFRp2uxHsr5aaof36r7TprfMil2j2OD57jsUa+bgYhhW0JfvGv2sPxupxjl5zICGYGMwFgh0HMoRYwvrtumTZwhbzFPBK+BDtLgjCzzaJnONN3rb2TPARRZ6hHg5REWIQSCx2aQgnypJ/shR89yPJgAGet1j+tB5nGs0+KxZ0CURVymre+iIMpl0RZ6Ee1FnK9pceSHN7sq1CBNm8ff4jcxqBZJCauQP17tkRBp1+HCk4ww+iffVfHwkWAPAr9OsHdYCxL4gQ98oDjttNNCv6OfErtbJ52Use7dqusxPEbIQiqMB17VeFpeGVeLEgnC2al4VtkiGY/v0any7iblNM0kiQ0v11H6bowz9641DNHA8K7Fd2UZtgNZyvnLvzMCGYGMwLSjeIeYGLBJ1cb8OuLdd9+9FUOIFLum03TYx4c//OGw+MMCHlObFmOkC8s6zMKEfsxqdP+ixEUrVnmn8YFxkVL8PwWl6V76HCMnndZFrAya4ggt5Go6eW8iVYIy15GFY445JpDU1FsnFpThkB6SIl4z3VpPzDAjoxyWom7KdebbKQlBZizQEj5h0V7ZU1iFvTQtHoyCuJjSLsc5l9+t0pV4LcUk/h3zyXvo2mOPPdZKUnkt4hOXHcWCXPHRaWyqmHm6lWLDu2mKPsXQThgkDTOpylsn74rVF4oURby2xXh2FqmTTssoT52ECghxsSDOgtdUxDIjl8KlxGj7nYpFm+KMo3HUVGexfiyMVL7yt/yO8c1Vuui7FlSKNy+fXGqRaXxXGEc0Kiz4s/UhYWQzxlKDQ/hNuUxTFTD/yAhkBDICQ4DAG14fvKbIR3mQrsubzs4KZIOvdwxWFng4bMJgyKNpEBR/qHOMYoC3iMPhErxfVjQjG3Hhl1XY6QKRuu9Phuu8WhaDPfroo2Ha14Il05P+IcgxvhjOX/jCFwKJ4PVCYnlqLIayetyAZqBGLHh+6rz7yFwcOHl0eHoslJE2QjbIsI1hrD8xnWYt6LDB+6mnngoD+qqrrtrKrrh5g77dKug9IugYZoekiAGPIi4UbogoEsa7pj7EqWor6pKH3jS+U/WQXfjz7vIQ8yJ6zs4MvPh2yxAO4Vs8nNodHaiL22ds0gNeaoTTd/0vnTpRfrrE+y2vPKq8lXSQl5fhpJ0qj0VhsHFEttAMO2ggca7b/YSxYLcT8djpbhm2vkOCGXbIFt2Wtth2+X3LW97SWmgoXQTKzIjn4CMmWL24p2zwkt+Yt2jYtXsX5ryy2gzsbTfGuI9e2iqM5LddGc2K2fJNmRhLCG55u780bce92xZRn0mEdihv1Dmx4gwJHm1bpAn5UC/qBCltV2dIqjpDisVR236NbsHOzIPdVLRt/TCiyxhW9/rmiKW4ae/SO/VKlx3jLRY/GlpmBaShv6e/ZrakIW2edn08/dOnCPHhFImLO6uwztcyAhmBjMBYImAs6vtI6E4LgBQfeuihYWU6QRAMegYyMXWmF62AzjJ2CEQPdVw8aUBrWrQ3djkd2y8jZBpP3eIj3jpEw8Il5IRRgtQIKeh0kZZ3zKIgRJGE8LYivuLBEbq4rVuKBkKGeCDXyAxSKQ+jIUgXslleNJZ+GzlGTnnBeXgZdHCBVfRCep4XWv4RLyESSDni6LmqkIn0G03vMmrgg+T5J/1O68Q3OiljN1jzrguRgFlVrLD6pEvudxIr3PRtdYNkt1vAWZWGcgupqnoX3ki3hahVedRexL53EuNe9e18LSOQEcgIjBYCZg9HjRhbQIQYR++jTpTXTWepwxYLl4nxaFV9/s6wI8DrzPtYtSf4/vvvH3ZW4LnLkhHICGQEMgIZgYzAYBBAjHuOMe4mC6aCLbSzMIhX0rQez4XtnHghbBbPO2khXpaMQEbg/9vj14yKf6kIjxHKMNHDW7IOZAQyAhmBjEBGYCwQGDWP8VgULn8zIzCeETDN7nAGMbGmqE2rm/oX/52GHYznMua8ZwQyAhmBjEBGYFgQGNVQimEpdM5HRiAjkBHICGQEMgIZgYxARqCMwKiFUpQ/nH9nBDICGYGMQEYgI5ARyAhkBIYNgVGJMR62Quf8ZAQyAhmBjEBGICOQEcgIZATKCGRiXEYk/84IZAQyAhmBjEBGICOQEZiUCLyxn1I7mcvuEu3EPqx5sVA7lP7vvj1B44ErtrNrOrUs7lcb37YNnmtVx+96RlqTfT9ReusgE3sRE1jbZzXu3xyv2UfXM/YlttftvPPO+3+VNCR/ybvDQhwBPZ7amL3L47HyDrWo2xO6Cmb7D9vl5uWXXw6H1ozWPs1Veam65rh7eXTAR9PBIVXvjta18ZDH0cIifycjkBHICKQI9OUxdvqVk+6crrTddtuF42ud5HTzzTeHrdmcTuW0sPKRorkKmhFwiIMt7ZyO5UCUpiOZbXHnlLTDDjssnHLm5Da7GMB8xx13DPecdOUErQceeCCc3IZMlI+Ibc7RxLpr32yYOJnNqXUHH3xwIGmp2AHC6YFOmHMSIV0fRnFCnCPVnYw3ngSpdYqaE/Ic8tGNOGHvy1/+cjhenoEzTPKxj30sHMjB+LTXtJ1FBi0Of6GzdcZvu++NRh7b5SHfzwhkBDICw4pA39u1OXp09dVXD8eKbrPNNtOU8+Mf/3gYwBxVnKVzBJwmZfBz1Czy8973vnealw26F110UTh6+/LLLy+22mqrqZ5hmFx44YXhAJVUnCKGMLuvfiarOJFrlVVWCbrJg1aW2267LZzS9pGPfKR8a2h+80zSD8bTAQccMDT56jQjjg5mUDuWuRthADoi3THE8Qjjbt4fiWcRdoYWsq7N3XvvveGI5EGLUw/32GOPcGT0hhtu2FXyo5XHrjI1BA87YfIDH/jApJ9NG4KqyFnICIwpAgPZlYIXkvBCVskSSyxRLLDAAlW38rUGBBx7CzcHOVxxxRWVT951113FRhttFO5VHZPr2nTTTTfNu4svvnix0korFWeeeWbhmOHJKvPPP39x1FFHBU/6ddddNxUMDBNkedjJJs/kfvvtN26P7q46QrgTfezmGOdO0hvEMwxOoUqOdlYvI0GK5ZMDQphPt6TYu6OVx0HgOZppPPXUU6P5ufytjEBGYIgR6CuUQrmQCh6bNA7229/+dqvIYge7iR8cYqzGJGu77rprwXP5q1/9aprvm46effbZp7neyYUZZpghHBjh32QW3mDhPrznqWf9ggsuCISzyrAYa7yQ9lSE0Ky22mpjna1J/32x6KOlL722+9HM43hRiBdeeCGE/2XJCGQEMgIQ6GvxnU7Wwp90Ct9ivLvvvjuEVxDxj1EM6AheusgpV0MzAuIULS4SU3nQQQe1HhbHuNBCCzW/XHMXGRbHrG5mnnnm8BSvtNAM3q4nn3yy+OhHPxpixye6WLB29tlnh1CV448/PhxTzhvnqHKLp1KhuwjzggsuGDztjmYW7mLqxfT5kUceWYj/3HfffYudd945/H3EEUeEe2LAtRN/H3jggeFo9ClTpgTMxYRbcPn2t789kPEof/vb34rzzz8/fMuR6cIOEK8Yw3rIIYeEhZamx8WiR7nyyivDDIJ/FrnxfDtBr07uv//+4pRTTgltkxEWn33uueeKzTbbLJBuHnXpPfHEE8VOO+3Uat/S1K7POeecYtZZZw3PyB+DzkLQVORTTDxv6myzzRZO8UtFXyKdF198MYQGmW26/fbbi/POOy8sZhMyAvsq6fRdIRiXXHJJmI2BKWOIF9U3mqRdGa+55pqQV/n8xCc+EU4qPPHEEyuTVB/qVV95/fXXB1L20EMPhZj2RRZZJCz2dF94DP2kG/RI/X/3u98tjjvuuKB7+oR3vOMdRV39eXbrrbcu1l133ZCPpjzymKp3sygwUo/RMHz++efD98U0w4kO6CPo88YbbxzSfvbZZwOunCT01mLW/fffP9xrKk9d3jvVPe2U7sKBrsOUkWtGga4JO5ljjjlCG7eugCirtqr/FOd++umnh/dOOOGEkG+hVdtuu214NktGICMw+RDoixjHVeUGFh2N1f4GqE996lPTICkW2SImgz8P8mSObZ0GnIYLOngLGxGFlBjz1Ftc124BjkEJISEI8Q9/+MPi3HPPLTbZZJMwWBCxkBbjGaCRG0TIscPIMwIz0YURt8suuxTiDBFaxNIixVQQHiQRkYmEDj5CWXhskRZx9osttlhrpxYkB3nxvwGceA7JFIt65513hvhlAzQywmBEYpZaaqnwrIEaaRYnTpAQxgySbbaAzDTTTGERYRSzNUjKqaee2rr2jW98o/V31R92tNAu7aBg8SwMzCgwcMWyImKu0UWkdp999gm6gaTTLyRir732CovNyG9+85uAFTyjccVIEFoAPxiRW2+9tYWL3+KMpS/+Pe7KQk/FEiP+CFeddPouwilPm2++eUgKOd57773rkg3XOymjtoi0a5cnn3xyY3qw0Qf6XziUcB1Y6SPpyuGHHx6wPe2000I6yKN6f+SRR4oVVlghkGb6E2cOmupP2aSLYNflUZ6RcnWv3om1C3ST7qmva6+9Nui9uGZ9vfqXLzqJKNOBhx9+OOg33XQdHsrYVJ6mvLfTPfpAP5D2LbbYIuRbOYRHnXHGGYHYI7r6O4ZHrGcG6THHHBOcAeKKGcBwtVZjsu/YE0DMkhGY5Aj0FUoR44t16qx2A7kOZs0115wGVp4gK9CtiE69yNM8mC9MgwDvG+MjhqjwJNXFD5df9ixPCRKmvgwmPCl2E0GqCI+0gTPGGy+zzDIhfUbOZBG6a3qaESJ2c5ZZZpmq6AZTO1SkXs7ll18+YGfgJTDjcUuF57C83Z7nkGDEJnr9DeC8mDxlUZAQ34hioaBrjBUEqkoYSgiU7cyitCN+nov55l2L5IjHFsmR1xjTyyNo6hmhJLy4jK1Iil2DI8KCEEXR7pHbSIpdj+S09dDrf1StRyhjmj7f7bvw4bGNoUlmTHjAm6TTMjalUb6nTGYL6BN94IGFoR067EjDUIti/YZZjEcffTRcqppxq6s/MxSMuiYx62GBdKx3z+pzlJsuEfVPj+HFeEaYOToIDznvMVJMpKMPoaOdlKcu7+10D7Gli5EU+zZC7nrsyxh8+k4EPAq9TttZ60b+IyOQEcgIvI5AXx5jREsnEwf+6O2JHbeOX8eIUBiIkIDYeWb0O0eAd4g3T4fPu/mtb32rNT3aSSrIXgyZqHre1OEdd9xRPPPMM2GbPSSZlyySn6p3Jto1usu7xYhISV4sJ68ww64swgV43HmtSDeLycrk1rtCI6LwuKXbkfEq14USxHcQA4YPEq29WbwZ81bOe9XvNE+RDKfXYvnkhfEAl9RYiGl6R1gKzy9d0leUd63hFS3H5HaDXzn/nbzLi6h+hRUwOjbddNMQDtMknZSx18WA5R01GL/w4oXl+Y/CoIizBE15raq/VKfK7wpbESohFCEV/QVPPd1eY401Wrcs3E2FHtgKMl1oyODmLCFmujotT1Xem3SPh5oRZueeKMo655xzBqzi2hZ6mhqn6qoJk6kKmH9kBDICkw6Bnomxzo5HUQxbKukqftPIvG/ivHg8/OZdyvFb3esZD87RRx8dPPM///nPA+EZlEjPVLk0TdMbFOP0/aC+MR7SqSJqMd/iF6uEt6+8HV7Vc1XXxHM3ibowLcyzKkyJ4RIJR917PM9CJxBR7VO4Ao+jbc06mSauylPVNe2f1JXdO2Yn5Jv4uxPiWleuQV1HRMXemkGBDzxhJba6TjopI097LxJnbeK7cd9j7T3FvZ1XO77fVFdV+avTa89Kq1z2soGNGJuVqjMMuilPVd6rrkXdk7ZDd8rYlGdImtKowsSswjAe5lOV13wtI5ARGDwCPYdSxPjium3axBnyFpsm4ynivTLllUlxb5XII2MAEgLBIzJIQb7Ukxi7OPDFAQ0Zi/Gxg/zmeEuLx54BURZ7Idv6LgqiXBZtoRdBZsX5mgo3uPNmV4UapGnz+Fv8ZurYIiRT4fLH8zcSIu06XHiSEUb/5LsqHj6SnEHg1wn2pv+RUbGlYnh5O/VTFrPVSSdlrHu32+tRl3hxUxEaULUzTbfpl58348eYosepCPOBSbuT+9StWQwLBMtitmMky2OmS+x6WYe0l/LOLeW8pb/LsxbClbJkBDICkxeBaUfxDrEwYJOqjfl1qLvvvntlDGGHyU/6x+xa4F8UcX1is6383mCDDVrX4yKl+H8KXNO99DlGTjqli1gZWAzGpnObTt6bSBWlzHUDqsU6dD71oJkFYTikC0nFNKYERiwjI6MclqJuynXm2+kgz9vq8AvEQwhS2XtXhb00LR6MYtAX71mOcy6/W6Ur8VqKSfw75pN3zrXHHnuslaTyWsglLjuKBbkIR7pvtrABupViw6tsCjzFUFgBSae/q/LWybviTYUiRRGvbTGenUXqpNMyylPTAsE0/ar8uy8EhgMhrUPXhX7EtOO7KZZN9ZfqVDmPMFM39Cx9zg4VwivSEAnvxu+kZWFQW1QZZwfcg7OY6G7Kk6ZdhU9Z9yz4FM9cPlnVIth4PLp0yu3KtbSsnAI83tE4KhPltKz574xARmDiI/CG1wevKYpZ1eFVFZ/nyaprHbd3DFb33HNPWF1tMOTR1NGK69JhRrES36K8ThfSVH17slzj1bIYzMBi2ld8oXg//xDkuP0SnL/whS8EEsHrhcTyoghXsTrbgGEwRSx4Vuq8+8icXSkILw9vlV0ppI2QDTJsYxjr0Ip1ISp02NSw7ZwMkquuumoru+Lm7Xdstwp6jwg6htkhKWLAoyATcENEkQPeK/UhTlVbUZc89KbxnaqH7MKfd5eHmOfNc3Zm0FYswhIO4Vs8nNodHRC3XyV2C6AHvNQIp+/6P13MVX5P+ekSr6G88qgzJGcNAAAgAElEQVTyAtNBXl6Gk0WGyvPZz342YOOIbKEZdtCw0M51u58wFux2Ih473S3Dyn8kmGGHzNBtaYttl9+3vOUtrYWG0rXwy8yI5+CDGKoX95QNXvIb8xYNu3bvwtxOH9oM7IV5Me6bPKPy266M4lxtZaZMjCU7wJS3+4u4K7Ot3LQ17RuecXtLz9g60NZv+lW6JjSGLvC+MibSsvPKM2Sb6s+uFOqPzlbl0S409BShRLYtTqQTFgHSNTrpm/oRizrVvT4hhijQf+nTAd5nefScXTCQzKby9KN7DBox4toFvVMG269ZK6D9iW+2uwZ8444fjDPtk9NBPxfXyCg3XdBf0jvXs2QEMgKTDwFjUd9HQncKm1XLFgGlCzk6fTc/NzoIRA91XDyJUJVjCkcnJ8P9FYRM46k7uIY3ClmxMAhhYJQgm6ad62IxyyX2ju35xMBGb6/BG/EVD24Qj9u6pe8iZIgcco0sIJXyMBqCsCKb5YVc6beRY+SUF5y3kkEHF1hFL5/nefnkH/ETIoGUIyyeqwqZSL/R9C6iCR8kyj/pd1onvtFJGQeFtbqka/CsipMd1HdiOuqG3jGGy7uydPKtWLf6DwS5LCNZHvUi5Kvd4tRyntLfDBVtN8cXN6GU72UEJjYCZg9HhRiLjbR1E4+xgyNs6ZYlI5ARqEeAV4v3sWpPcAcn2FmBZyxLRiAjkBHICGQEMgKDQQAx7nlXim6yYBCv2gKrmzTysxmByYSAnSj23HPPEEogrCKK8BhTwxM9vGUy1XUua0YgI5ARyAgMDwKj4jEenuLmnGQExg8CFrFZBCUmVtiBqWhT/+K/07CD8VOinNOMQEYgI5ARyAgMLwKjFkoxvBDknGUEMgIZgYxARiAjkBHICGQEirBDUc/btWUAMwIZgYxARiAjkBHICGQEMgITCYFMjCdSbeayZAQyAhmBjEBGICOQEcgI9IzAqCy+6zl3+cVRRcAeno7t/t3vfhe2y7L3bSfHCI9qJvPHMgIZgYxARiAjkBHICIwQAgP3GNtr9ROf+MQIZTcnO5IIOFjEwq6PfOQj4bAFxwr3epzxSOZzJNJ2OIWDDRyMcu6554a9dokdIBwikWV4ELC/8f333x8OvpgsYus+h7w4oCI9AXCylD+XMyOQEcgIjBYCAyfGTku68MILa4/WHa2C5e90hwCDxt65NskntgNzEMJEJx/K7dS7eEqbfbZtleYErSuuuCIYCU7NyvJ/CDgE4uCDDw77LI+FOBTk9NNPD3uiTwZxuMl2221XbL311sUZZ5xRXHzxxZOh2LmMGYGMQEZgTBAYKDF2zCpyRXjgsowfBJysZcB1UloUJNkJbxNVnNS15ZZbhqOGHQftwAxH4Dpp7JBDDgmn/jm+d7KK46EdzlMWeDk++LnnnivfGpXfjhieLKQYoBdccEEw1pwQeNxxxwWdnejixEcnE2bJCGQEMgKjjcBAiTFPMUJBHK+ZZXwhsMkmmwQvMRFWMPfcc0/o09Uuuuii4vHHHw+hE1X7Am+zzTbF2muvPb4qcYC5feaZZwoe9bLARTjDhhtuWL41ar+7OcZ51DI1Qh/iMY7HFDMKFllkkRH60vAky/jKkhHICGQExgKBgRHjxx57rHjXu95VLL744qEcmRiPRXUO5ps8hYycW265ZcJ6jH/7298WJ5xwQoFovO1tb6sFbrKe2OhwETpQJ7PPPnvdrXx9wAj84x//KKabbroBpzq8yb3wwgvFzTffPLwZzDnLCGQEJjQCA9mVwpQ0EmXx1s9+9rMAWA6lGJ9684tf/KK45JJLiuuvvz6EEliEJrRgosm9995b/OlPfypWWWWVxqJtscUWxR/+8IfwjF06eEr32GOP4q1vfWvxne98p5hrrrmKww47LNwXSmTae8EFFwyeVgv3xOLaMJxYMPbjH/+4mG222UIstzwceuihxQorrNB4L7xcIU3pedzx0Q8//HCxwAILhDjp7bffvlhttdVaKT377LOhrt/5zncWdiSZccYZi/33379w/fjjjy+++93vFldddVXxyCOPFIjwkUceGa6Zzlc2O5ikukFn6A9sGMa+Fb3K8iqWG0a33XZbONGPSE/s7LrrrtvK13333Vd873vfC/onXGP99dcvNt100woEOrskVhzRFy705JNPhjCMJZdcsvVyu3p9/vnnA07LLLNMIb6ax3a33XZrvd8u/aZc8ozCYv755w/6OP300xf77bdfIMKwElPsm9ddd12oFzhYFFsnwg9OOumkoIPK+8orr4RZvKiDTTqqzg488MBQh1OmTAmYOXXxJz/5SQixkq9U6vQHXkcccUSIQT/vvPOKJ554IuC+1VZbFRtvvHFIok43xfaLH7czDsOVTq688srFtttuG95jJJx//vmFMccsj7z51jzzzDNV3vKPjEBGICPQKwIDIcZXXnllsfPOO4c8mH4n2WPca5WM3XuMGYsnP/WpT4VB0SzAq6++OiGJMYJLENsmSWOu6bnB/Z577ik+/vGPh90BxNQjxgiJGGXk0LHN5Omnny422mijAtEzoNvxAiGIgoDYFg8hqrtXl7d27zBUkSrkG4GQvzXWWCP8ViZkBdlAnJGKl19+OZAWhEo5brzxxkAetesPfOADrWwg8YiJ2SF5j4LMIF3IL0FckEcEeqeddgpkzndXXHHFYERLV9jO3XffXey9996BuMsng+Gggw4qYG1nFOX0TbHfa665Zh0ctdeV97LLLgseSGkg63ZeUTcMFNJUr7yXQozUOQOD+C0tsb6dpF+XuQceeCDUOzxiCJPwHgs+eevp5sknn1wIaTFzsc8++9QlFa7DjoGh3pWRMOI4LD772c+21VF6gICr2zvvvDPkY6GFFgp1MN9884W0l1pqqZBuO/259tprQzuwiwaDCt6MIzrWpJt0bdlllw11fuyxx06zXeThhx8ejIbTTjst5EOa6oHxNpm86qHwWTICGYERQaDvUAoDLkK19NJLhwxarMW7lIlx7/VlQFpvvfXCoCgG1kIncbC2wTNIPfjgg8Xll19enHnmmcXRRx89FUHp9V3EzaBkUOUFNKj5vcQSS/RekCF+M8YUV8XQNmUbuUMAkTaeRqSX8LAtt9xyLVLsmmd4T9UdrzPy53mkkSDZc845Z+O98GCFNKWnLnnReIhjOe1HLX/XXHNNSI0u+X70tCFmPKKdxK8iSakwMhCvlLjxfO65557FUUcd1drphFeUWEQWiSD90lfEhVbekz6DjPAYvvvd7y5uvfXWqb7Z6Q/4wyDWszL6hjaUSl298pzzWEZS7B2k0+Iw0mn6Vfk1m7DDDju0sPDMrrvuWtxwww2B6HUr+oOZZpqpRYq9j9iuuuqqIal2OuqZiD+jx7tEHSh/utiynf6IAReixOvPiED0EfROdDN8tELsRsJw1+6iWANA/x599NGKN/KljEBGICPQPQJ9e4yRN56zdO9inR9PUZbeEDAdv9dee4VpZl4yXh9iWjoSnjiVywvIw7PjjjuGZ3p9l7ell8G4txKO/VvCB0g7PeU5NyXMUIgS4+jTUiC8iGhZFl100eBVVG8GdKEZDMe11lorTFtHg7LuHh1ACFLhdUOo694xvYxsvvTSS8XVV1/dehUZRagZV8JAPvjBD7buIVSR7JXL0O73Qw89FIyzcsgNki2WWxnSRYwp+Y6L6OLevIiULQJffPHF4I1HkGN4Rrt8VN1Hau0swusqLARJ1j/F8Jj0nap65VFHplMchRcIPSHdpJ9+S/mEHJQxU36zbnRG2+5GkP2o1/E9ZDhKJzoany0bSG9605ta+yd3oz9lTIWFNOlmU3m//e1vh7rjrRbGEWWxxRYLMx5ZMgIZgYzAIBDoixiLGzPlZao0FQciZI9xf9XDg2VniJRQ8K4ZEMTtRTEQlrfN6ufd/nI9ft42tW+qGqkT51sn7vN4pcQYeSmLWM4q4YFDDgmPmRACpAdZMyUvplJe6u4ht7fffvtUSTOW5KnunRgewrNp5iFKbKdIBK91Nzs7KIPZIN7DstSVXYwrieWP78XraToID/nLX/4SQim8IzyDl9li0F7l5z//ecDcvtxCXtRd3aLCqnplGFX1cTE/3aSflqEOM8/Ap4xZJ+UXSpF6tsvv1H0z1dH4TlUdxXuIcaf6U8ZU/ZI63Szn2W+GqV051AXhVU/zVx5/qtLI1zICGYGMQKcI9BxKYSATjxY9lekHTaGlnjiWPg+oRSZiMHlfxCnq/A1S4uos5MkyNQK8janw2pQ9OchN1UlY/bw7GeqB99TUM5LKc1cnFkfxGLYTsbNIUlkQ25VWWiksEtJeeIiFuyDExxxzTHHTTTc13tO+xMCm/5DFpvQYS7PMMktluRisQhnEEkujLKlBaxYhElbx5spSJcpOyuXnFSWIZaciRIhn0/8x9CISIl5e3uduRCiHdMSrRpIW0+NFjgfa1KXJI1ylHxGnXtNn5DIyypjyvOs7I6Z1+aq67p2mOm2no1VpVl3rVH+q3m2nm94pxwqLUybaESnXhzAZ4U1ZMgIZgYzAIBDomRgbECwsKndiMsVjpXOPsZSrr756GJwcaWqjehY+b+ipp55a7LvvvmElvIErb+g+dZXy5JSlypMTyUv6bD/vlr85UX+Lod59992D0VbloeMtZoikh5wgLtHrleKC5FpIlqYj9hH5slDP4F0OVRDzy4hsuleHfdM7dMTOERZAxSl/6ZhZMMtDtDdGaozldc1+uWmsprJHA1dZotc8lj/G7WrfvN9iY1NhCIgzjl7M+F6KX/w76rDZJqQ9Yu4bvq0vEcIQybf30sV/U304+SG9NLzArjnek67Zl9hH1dUrnBhPqaHPYxrL2mn65fwxci1ytcgxbb+cB8Ir0jCXuryV06Rnwm5iHbvvXfVA2uloTA+2ZR2XTprPTvSnKp1OdNNYweCPmMcxxg4yQpEYiamIm0/1fKqb+UdGICOQEegSgTe8HoM2xTvljrAuHYTW9j/+N2CJdxSfSJAChNl2TK+99lpYicxzJQZMTKMtg+J2PU4ae8973hMWBBGDuBjadrsE1OVrol3nNWMopAOk2EsDlMEhioHUIBJxdb2fdycaju3KY0rX7gQMNCRRDCqCiEzQ3XRHBnovBMIWdhbS8cqL9SUWjPEG2ypLW+JhZQjySosB/81vfhPaDA8lzydSpg1YZY9o1d2Li9TK5WhKzzs8ndK18A+hkR+etjjDI08Wjlk0x3NpVsdWcu5HIoK0i1kXE61tI8Ce++QnPxk8nUghsoz40j+ePe3cVluMAP2CLbdgyshABL0nNMI9JNd9U+XwlB/7SttBQlwx0moXD9uEKYeZEe0BKZUv70sL8a3rN4QV2ZWC8PLCQJ2LX7bwUIhFU716hqcSqVRv3tcOP/zhD4dFc52kX667+NsOGdq4xbWIOh2AkwVmQmXcs6ODnRd4ghk2yGE5PCGmx5Mrdh1plZ76hB/jTx2301FEVP8tVpmOq3PlU98WAcuDOrAYskl/xBF7RyywPNh6D87RqG+nm56Tf7MpCK82FhcB0w+hRXYJ0c7UBSIdvcl1WOfrGYGMQEagEwQ4ZaZ7fdAMwX3tphQ7SbDpGdvrIMsGGGJBmW12IvEQN4lIxO2AmtKaDPcMLAYVHqUopuCRN9PMUSzCQ+zOOeec1rV+3p0M2FaVUTMw8BvEkQEGW6/HYSN/3i2TNVP4SCJyhWymB4s03avKr2udvINcIirKVBUf7D4ShDRV3Udy7TrDuO1EtHFeWV5PXtFeBSkzPe67iDqSj4hWzVB18g1Em8QdNZDcOoJZl556hZEdPsrST/qxjpBwxtgghNEAr6q8Sr9OR7v9djv9aUqvnW4yZLTLeOpfmhY9UwZ6VjWL1vTdfC8jkBHICNQhwIE7asRY2ITOjDeD8GIgxv4R3mPEOK7Sr8v0ZLjOs2avTySY4WCRFYOCR4knxZ6mdgOxEwiPMbLFi8z46OfdyYBtLmNGICOQEcgIZAQyAhmBKgRGjRiLeTMlyENg6pY3CKlzgIAN7k3P+o0ki+zIx81WVVe+lhHICGQEMgIZgYxARiAjMFIIjBoxHqkC5HQzAhmBjEBGICOQEcgIZAQyAoNAADGedtuDQaSc08gIZAQyAhmBjEBGICOQEcgIjDMEMjEeZxWWs5sRyAhkBDICGYGMQEYgIzAyCGRiPDK45lQzAhmBjEBGICOQEcgIZATGGQKZGI+zCsvZzQhkBDICGYGMQEYgI5ARGBkE3jgyyeZUxyMCNtN3NLe9ax0ksssuu9Tugzoey5fznBHICGQEMgIZgYxARqAJgYF7jO2za+u1LOMPAfslOxXMQSLLL798sc4664QT2yaDOMTCPtG2D3TKmkMviNPAnPCWZXgQcOKm0+CcejZZxOmA9nl3uqDT57JkBDICGYGMwMggMHBi7DjTCy+8MHgcs4wfBBg0jsmNJyA6wtXJWROdfCj3KaecUnzoQx8KlfXRj3602HzzzYuvfvWrxRVXXBGMBMcVZ/k/BJykd/DBB4ejnMdCfvSjHxWnn356qKvJII4o32677Yqtt966OOOMM4qLL754MhQ7lzEjkBHICIwJAgMlxo5wRa4ID1yW8YOAY1UNuI4OjoIk93os8ngouQNnHCrz1FNPFXfddVex2WabFbPOOms4ZvaQQw4JRwbfcccd46EoI5LHH/7wh8XXv/71adKG15e+9KXiueeem+beaFx473vfO2lIMTwvuOCCYKzNMcccxXHHHdc6LXQ0sB6rb3zxi18s/ud//mesPp+/mxHICExiBAZKjHmKEQrinPss4wuBTTbZJHiJibCCueeeO5DFiSoXXXRR8fjjj4fQCcdql2WbbbYp1l577fLlSfP7mWeeCUeQlwUuwhk23HDD8q1R+/3mN7951L411h/iMZ533nlDNhgFiyyyyFhnacS/z/jKkhHICGQExgKBgRHjxx57rHjXu95VLL744qEcmRiPRXUO5ps8hYycW265ZcJ6jB1LfsIJJwSi8ba3va0WuPe///219ybyjT//+c9BB+okH9teh8zgr//jH/8opptuusEnPKQpvvDCC8XNN988pLnL2coIZAQmOgLTusl6KLEpaSTK4q2f/exnIYUcStEDkEPwyi9+8YvikksuKa6//voQSmARmtCCiSb33ntv8ac//alYZZVVGou2xRZbFH/4wx/CM3bp4CndY489ire+9a3Fd77znWKuueYqDjvssHBfKJFp7wUXXDB4Wi3cE4vriEliwdiPf/zjYrbZZgux3PJw6KGHFiussELjvfByhTSl5/FvfvObxcMPP1wssMACIU56++23L1ZbbbVWSs8++2yo63e+852FHUlmnHHGYv/99y9cP/7444vvfve7xVVXXVU88sgjBSJ85JFHhmum85XNDiapbtAZ+gMbhrFvRa+yvIrlhtFtt91WfO1rXwv5kJ7Y2XXXXbeVr/vuu6/43ve+F/RPuMb6669fbLrpphUIdHZJrDiiL1zoySefDGEYSy65ZOvldvX6/PPPB5yWWWaZQnw1j+1uu+3Wer9d+k255BmFxfzzzx/0cfrppy/222+/QIRhJabYN6+77rpQL3CwKLZOhB+cdNJJQQeV95VXXgmzeFEHm3RUnR144IGhDqdMmRIw+/Wvf1385Cc/CSFW8pVKnf7A64gjjggx6Oedd17xxBNPBNy32mqrYuONNw5J1Omm2H7x43bGYbjSyZVXXrnYdtttw3uMhPPPP78w5pjlkTffmmeeeabKW/6REcgIZAR6RWAgxPjKK68sdt5555AH0++kymOsU/v5z39ezDfffGEAyDJcCDBmLJ781Kc+FQZFswCvvvrqhCTGCC5BbJskjbmm5wb3e+65p/j4xz8edgcQU48YIyTCTpDDhRdeOCT59NNPFxtttFGB6NF9O14gBFEQEItUEaK6e3V5a/cOQxWpQr4RCPlbY401wm9lQlaQDcQZqXj55ZcDaUGolOPGG28M5FG7/sAHPtDKBhKPmJgdShfYIjNIF/JLEBfkEYHeaaedApnz3RVXXDEY0dIVtnP33XcXe++9dyDu8slgOOiggwpY2xlFOX1T7Peaa65ZB0ftdeW97LLLggdSGsi6nVfUDQOFNNUr76UQI3XOwCB+S0t8eifp12XugQceCPUOjxjCJLzHgk/eerp58sknF0JazFzss88+dUmF67BjYKh3ZSSM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bb311mHBWpQmnMvfjL9PPfXUcIiRUBqhYQ8++GBoy5/73OfC4s+mNI855phw3LgY+Rju0Qnmvn3SSSeFenUqKXzoiqntdri2y28/uliV905nyZSpThfFy2oz9M7MGkeK9sgY00/ut99+oTp61cX77ruvEDM788wzh7pbf/31i0033TRWce3/QrL0DQsuuGBoZ07hMwMqvIVU4VFuPzFx7ZajabbZZgvlW2CBBcL/d911VzhxtkoGpffItzhdfQSdhSvnzTzzzFP12Wmu0UN9h7UbMDFDN+ecc071nPamP3WmAUeFNq/etEV9s7rzrvUhniP6q3IbdV1ayi4t6cw999zT5KnqglhxfY7wKmXzrplb/WGMlW7Xfqr625inI488slhooYVan67T56q85WuDR6AnYqwhvvjiiyE3+++/fytXBlnTluutt17bnEqjjsw6015D0cjEAHmW0iEkQglSWWONNYLntC6tthkZ4gfiQB+zaIBHPlJBcP74xz9OU4p+3p0msUl8QSeNsNA/gx/StfzyywfSQnSYjBWkIUqMP95ss83CdDUCdeONNwZCQgwE4potyNloo41a75X/MDgifNtvv324xYONxOlEoyCidCISPwR83333DbH7iIoFVgaqLbbYIrzy6U9/OhyDe8YZZ4TBBRE899xzA8kSD0kQCMTfd/fcc89wTRq+YcEi4W2SthkLAzHxG1ndcsstw6DPiDBArbnmmmHWgwgNYkj4lnIYWDx78sknh/vtxECMtEo7GtZWlcNavCSSByeEQ6hBu3SFT9ixYoUVViiOPfbY2hks9QcDhF555f/73/9+IAPtcK4rk/S8j8Tr26yMpxMG+bnmmqux7tQFEpEu1uwEc3kxkDOu5D/i0wmuTflVj/3oYlPefZcuRqNLn4+gqGfSThevu+668Pydd94ZCCcCgmDFtskw6UUX9QHaCX3WJ0iTHmkDdL5OGGz09frrry8WXnjh8BhjVF+AaNOxJjxi+/GeMjGSzCaqU+1b/yO+ftVVV63LQggb6lfvJW58RlBPO+208C1EVfu3mLndjA3yZ8Yj9jEWgdqlAqGPhFUbVqZbbrkl4EK0EfWoL1pnnXWCgcPJ4BkGpufuvvvuqdqo9xBiuHI26MuJvrAT+dGPfhQMnl122SU8bsMAOhOJeCftp6m/VYd4D2mnz53kNz/THwJdh1JowEirmD0DSbrllYHfIJUKQsFaT4V3hmeryloTL6yDMPCxgP3NK6IB8ZRGQhLTQwpGIi6sP1gH83aMgU1TS72F8XrVlFk/7w4m9xMjFZ4QEjHW2afeEJ5cg4Dt1qJEgul31HGLwKLQWR46HqKYfutm8ofntJMoBg2dexSkVMdswWAU3l+zKERHq5ONpNg1ceuu81IRg4p4UwNMFDMTPDnpFkZmJnjGohx//PHBsxpJsevve9/7AjmNIm2DX3nWI02n9XCHfwgbsltIOtvEo46Uj+RCGl7xODDDByGNi/U6wbmueDBiPBh0pcsZgGR2kmbqve8X805xrcvvoHSxSl8YninRLM+StdNFfSESbCyKXjkGId0tz7bV1VPV9Zjuq6++Gm5L01hlp6UmYXgut9xyLVLsWcTajA8jNUon7ecrX/lKIP1xXNAmzUwZo6XZrzTpPbJodiOSRd/S1oU28mC3E+32Pe95FBqipAAAIABJREFUT+sxmDAskMQo+ki7wsS25zpnAX3V7xLeX6Lvq2ujeIO0OPIiKfZOp7PWvPUf+tCHwnfMtDD0zbZY2Eu6aT9V/W2qh+30OXwwy4gi0LXHmDIa+CmCaea43yuCoFNnzUfhkbDyXwPnATE9S3hEquI0KS8CHDt8U17eM2D4X8OJU03xG6aXkRWKy1LPkhEYJAL0mv7VLdJANE2RrbLKKmHQRV55uNqJDpWXWZtZfPHFKx83RakTNvghuAaidHaAN8VgEBcGSiRdZPbwww+HdmbLsSje5wVHuLUpYo9VC9WiKCtCn+7bW56ZkLZBM01bey3vDV01c1E1w9H6eJs/eNSily19lBFx1llnBUJQV1dtkm68nc7UxPRjOTrFue4DBnb9WCr9pNkL5t3gWpXfQeliVd7bzZJ1qovldMzA9aOLCBbvrNlTi8gRZE6gdvuQwzrOAqV1ruwM0rT/qMIjzbOZEUZJFCE/2m6vsedlHW3Se7NlHAZCChgvUfCC1KAvpxl/V+0Vz4tt1ovAlaEkDCwVuCsjrFK+0ZRXIRTyhHinUuVomuqB//+H2YmIKW+1erEdZJRu2k9Vf5vWaaf6XJXPfG0wCHRNjGNMlrCJdBW36WYKnHrTxOToAJCGaFXLNq9yarXFoiC9aYeh4cVvIAD+VYmOSJoTiRjzbviXit8G/lT8Lg+q/bxbhe9kvWZmQ/xq6u0tY8FLZHBEDLQB3iJeE1ObKWEtvxfrrDwDkj5nqlCMoGlK8XJIaOqJ0aYM7nUizpCRWd6nM/Voe7dqcKi6ls5MSNsgU067nJeqmYuqGY74HkOkyhMa7zMUqkR+kXKY1PUTVe9VXavKQxMeneJc9S3Xyu3XtX7S7BZz3+sG16r8DkoXq/LehH3EqhNdrEqnrk5cr9KD9Hl9r1AK2AlxYjBU7X1e/gYnTpUoe7keqvBI249wGrHvwgOEEQmzYFD3IlXlrcIsfp+OEh7c9Ll2fUJT3vRn1nL4Rh1O3ve9MlZNeY3PNvWXTfmKcc9IO17CQahuEHeGQDkvMa2qfqkpn97rtG9tym++1x8CXYdS+JzBXAyPWKIoiEG6GMV1nmFeNGSZ8kRBYMVjNYnGwQpda621mh4L91hbE4kUiwFEsJAr0z+wEEct9kosqKlzngH/I2OIWZxG7ufdtkBPsgdMEwrnafIAi+VDnoUiWNSmw7TVG29GKmUy+IMf/CBM+5kGrRL3TdVZ3GZ6lqRGET1ABizaSY1Oz5niZxyZVhXPXP52vF/13U6vSdugUJZeDihJ88c73iSwdWJVWcTo8iT3QorLsZDt8lD+9kjgPBJplvOd/u4X18moi8L+eAr9H6fzI1nUZwuRqRLxsHU6rB66EWPEZZddFoxJbUCf1bRuIU27X72PeS33A8K0jP3tpNwved6CY7ovb2bqOB7KZxXo2/R77RYvp98320zKYZ1VeajLtxho4+vnP//51gxbDG3rt/2k3xxk31pXlny9GYGeiLF4GNOJFDeKgdq0BpJqaoVHWayRE73S7cQ8bwq3HItczqY0NI6o/Bpb1Ul3vEQIQ1VoRjnN8fJbrLY4TNPnvO6862eeeWaYStcJ2UEAqfK/qXjX4+KHft4dL/gMKp+RaFbF+VpsJV7WoFc2unTMMWRAGukhC3RWiEEamiC/6SDpfYRXJxun52Je4iwBz5O00qlUdR1jg3XSFqHxEhkYU/HbNKU4fXpi54NUeJjiNKbv+mY6QLiWknDvln9bX4D8G6CiMHbTtl43c5F+S/niqXLKVjW9muadt1u66WmZyIiFN2I3o8hvOawjTSf9G6nRn8WypIQhljstf/w7lqMTnOu+XYW1ZztJs6qMnWAufe9GXfO7G1zLuuD9QehiXd7L3/M71aFOdLEK57Led6uLjFehDLEN019jnv5EWFEkv+Vvi6HlWEq9jN7TpmO4IUzr8EjLTseNsfoohqE2OFp6bybY+oXyITMWKHeSB0Z02n9wuImPjgvseXf1kfritMzWVZidjmFjUT9SPYl/x/dgIxZaWqngLaRdSA3ng3UhwijiMdbeMfaSbtpPWe960eepCpF/DByBN7w+mEyRarnzafqSRmxQNI1DxO9Y5U6hTTMYrHm5DMhOFLMoJxWDtSkJYRPptByiJw0KjOhpKBSRGPiqYowppunluOp9qg/lHxmBGgSsdGZ08PYawJDOuIBIx6vDFjeYGn+8ILy4Zkd4NmKsqZkNhh4vEQ+S/+OCFDpsapNHzaILg4FtwSxso9tImDbD28wzYrAVGmT3BuTYqnOGkXSFFdmhxXNmUnT2Fm3xEsm/PLjPY2SWRv7c15a0WZ5iHg4r4hF3pN8Kb2W1HkCMHm+pcptWtaBQ+XnFLQYT86fcvNzaOC+JQV55GWxmLrR37duA5luMO+/wqMNOn8CLDXeLBK0/MOsBGwa3a00hKNK20M4WZQi1cuk39CVxcYyQEwt1lQHZMLsidrFOTG0iNYx5A7ppU+U2aCoHvNWFvoquqD9pw0xdwaMJ57rvWiHPSIGF9OXDwjLSru6QwYiv+oNbp5jLv6l39aL/hLcZvXa4NuVX3vvRxaa8q2M6Y7cjxNHMWdQhu7vQ9TpdNB1v5wE6przIKJ3T3nhbtRsEx3jF69qNLiJncOSFRIbptlBDC+ikibjRU/Ukv/6pJ4v+HKrCiWHcZeTxQnJ+xBmkJjzS9qMP0AaRY21UGkKwtA3fKnuFU13sV++tjYC/XVX0ncqiD2BotvN8a+v6OGO3PpEjSDtWlnSWeLXVVgv9lnaijSLO2qU+jzHQaRuVV1vp6U/1t7G+EF51/p3vfCf0f9HzX26z8qXfl4b6Uk565XkL+Drpl5r6WzqkD9Xv0IE6fY6LC8v5y78HhwBDd7rXLap/SLIp1rH8SQ1AzKPYIg0vNggDMiWOQemeMQ0dV26m6bju+XTaR4etQes0NHjeJ52tNHVCZYItPdaqgSG1tMv5zb8zAiOFANKlszIQGsANuuniGx0eEqnjd50nSQdcFTtYlUfeUOkKSdJgDQ7IW3lxjQFfTDQPVpUgzdp43f2qdzq9hjia8mwitO3SMigg6+0WLqXpKJNylxfntPtW3X0DtO6wKca57t14fSRwHok0m8rRL66TTReVl9HMuDAe8trqE5pIacRf29GW40LYpnop30PujImcUjFUwDPStPuCUMe4FVr53fT3IPReP+i72mJVDG3T96NnXd9ZJ8rKIGAEpYuC655vuq5+GLb6YUa9v/VdwuY6qbOmtN3rt/2k6Q+ib22X33x/agSsdeuJGMdkeJTE9MXAdB6ldPumJmLM+rKPY3pYhXQRY9OpMVYwKm3dSnOrRXmZU89eruiMwLAgkBLjkSClw1LOnI+MQEZgdBEw/jq8pBwqJRdmTRjj8fCX0c1Z/lpGYPwigBj3FGMci2zaLz2lJiXFnuF9SWODUqjsS2n6kJcrFV6jdAEN700dKUbEedAyKR6/SjiRc063YwybLXjKuj6Ry57LlhHICIwsAsZf+zMLoUjXSSDMDjURE5slI5AR6B6BvjzGTZ8T62inBATYqXTl/QO9K9ZH7HC706nqvsNa9i/G5dU9l69nBMYCAfFz4u/NgFhwIW4s7jAxFvnJ38wIZAQmFgIcT2JkLe4VzsRR5H/rEcqLhidWyXNpMgIjg0DfoRSDyJagel5iC4K6EVNF4hHT07m6eT8/mxHICGQEMgIZgYxARiAjkBGICAwFMZYZK6O7DYcwXZQ9xVmZMwIZgYxARiAjkBHICGQEBoHA0BDjQRQmp5ERyAhkBDICGYGMQEYgI5AR6BWBvhff9frh/F5GICOQEcgIZAQyAhmBjEBGYNgQ6GtXim4KY/FRPOGq0/dsdVW3q0WnaeTnMgIZgYxARiAjkBHICGQEMgKdIPDGTh7q9xmHHzg5xkk/3YiTppwAdPzxx7c9KrabdIf9WacxxZMIbTxePl44zX88WCJec6ypa/Z/rhJp9XMQQ1Wa4/na008/HU5xhPfaa68djjW3xZrdVIiT0xzKYaGnI1CzjD4CDjjxj15vvPHGo5+BHr7oYBa68/LLL4e1EIM6hCRmxaFGDkVxmIBDHhyfOxbiZDmnNSrnqquu2tNBFWOR7/zNjEBGICNQh8CoeIwdBbvPPvuEbWS6ESfRbLvttl0T6m6+MYzPImuOvHT8pGNQ0z0qy/m9+OKLwxZghx12WDg22Kk+iJxN3x1+4p6t8xx56VAVxgkCeNlll5WTmnS/HUF66623hnPuDz300DC4O+YzHnUOkEceeaQ45JBDiksuuWTS4TMsBbY49/TTTw/bPo4XQeIdk7vDDjuEdjdosYe7o7u1cd8aK9FmHHnsSG71lCUjkBHICIx3BEacGN9///2FYOZud52IwNr/2JGVzz777HjHuuP8OzHwlFNOKbbaaqvCcZl33XVX5bu8UvFoYeTOMaD2rnQ0KTK3ySabhPv2k3Z8N+PkrLPOKr74xS8GIohsTFbh5brpppvCTMbMM88cZiRsGcj75pjQKPvuu2/x/ve/f9zCpK4dqT6e5b3vfe/Qk+JyW5p99tmLI488snjXu941ItCbvTj22GNHJO1uEuUJd7qa2b0sGYGMQEZgIiAw4sSYV26vvfbqC6v99tuvuPDCC/tKY7y9jNA6SfBf/uVfwslGVYIwb7TRRuFWJMjpc65Vnf2++OKLh8MmzjzzzLAh/GQUBpsZibLw0C+//PJTXR6raepy3nr57YCRiSB1p18OQ9mshWC8V8lI5nsk064qS9O18dxGmsqV72UEMgKTD4ERJca//e1vC//6ja/jNX7ssceKv/3tb5Ouhnh6b7vttuJXv/rVNGU3jckz1YvMMMMMxWuvvRb+TUYxkDsxike+LE6NmgjywgsvFDfffPNEKMqYlaGTPofxnyUjkBHICGQEJgYCPS2+Q8hMHf7Hf/zHNCgst9xyIU6T3HHHHYXfVeKADh5P09YLLbRQODL67rvvDnGeG2ywQbH66qtP9ZpQDESGR28yiWl8C7++/OUvFwcddFCr6D/72c8Cbr0IMiyOecsttwxhBIRXWmjGG97whuLJJ58MU9dLLrlkL8mPi3eETdDTDTfcMMQYR0+x8jNGqsQR5uIoLXjiJTzhhBMKBkYUcd0PP/xw8PR///vfD3GXq622Wrgt9ls8OC+1mFCk1ffnmGOOcN9CqiOOOCIsmjzvvPOKJ554ItSDcJqmBWdXXnllmC3wz0Kof/3Xfy2+9rWvhbhPbfR3v/tdyKf4/pVXXjnE7Hvm/PPPD/euv/76QJ4tOPz0pz9dLLLIImEnGPfFtgsxsRhU3uaZZ56Q17pvtrsXXq4Q/Yg8MPKU37S8o97VRZPY6eacc84J4UPKr02oOwtQCbyFy8AYeRVrT3jRhTmk7ee5554L5ZpvvvmC91e/pZ6uvfbakLfYTtL8MPqPPvro8A24WUtBpF02WKXx+9//vvi3f/u34u1vf3thFiyVJt2Z6sGKH3TSkcAweOmllwqhWOV+l2F9wQUXFAsuuGCYJbJ47+CDDw5hbuQjH/lIAQO6pk0IXaNPVXpudyHYWsRLnxdeeOGKXE17SXrKLQ+cJTze6l69ff7zn28tIKSTvqvfUxfakDwRMz3CzJSHw4CuE+VX7nXXXbf1YXh71rd8m75/8pOfDN/NkhHICGQE6hDomhi/+uqrIZZVB2SgNXAgAFFSMmUAqiJXYh4tFLPICRkTE7vnnnsWU6ZMCTF5vDRlYmywQxQmGzHWiW+33XbF5ZdfPhUxtqDHwpu63SdifSA5cZs8hPiHP/xhce6554b44+jpsiuDxXgGbyTDQCTWFnmuCjeoU6bxdH3uuecOxoAYYnpHDMS77bZbiN18y1veMlVx/v3f/z0QJfeJgRqRQqrJLbfcUpxxxhlhhwtkko7b4cJvROi0004L1xA5ctFFFwUSF8maNqAtIRlf+cpXArmCPyJQR4wRdQTm1FNPDWmSb3zjG+F/Xu9ll102GJzKk+5EwiiYa665Qkw141Q7FIuMzCN4YtKF4MgzkQdGlIWIjz76aO03m/ITEqoRpAwWsR+h10g9DOqEXiP5wrRiDDiDRZmURb+DhDEI6DviH+tKfYstjyFKyJf3vvWtbwWyrLzetWBVyFEVKZYvbQPZtKOJdnPyySdXZvfOO+8sTjzxxFC3DCTkW/+51FJLhefb6U5loslFuEejGVnXti2y5WAg9E75EM5IYumWMCz9MONOOWCJYNqRZY899gjvlvVcO/jgBz8Y0qKzxAJWJLSdWBQMMzjRL/XlW9Y+xFAM9Y70IrSEcabNIfI77bRTsc4664T2tOKKKwbcdt5555B/ThX1S4e1P2MIHBh0W2yxRUiL4ccY1U6zZAQyAhmBOgS6DqXgibJC32C6zTbbhI7O//FfuthEB1f2nMgIj1UkGIg2a94ODARBs8NCWXh9ut0HuZzGeP2NNPA0GQCJwaIufrhcRs8iXwZnZNqAwdtz6aWXthbMIIQGkxhvvMwyy4T0eegnsiD/iOVVV10VCDKyzFtroC5LqqPumcH43ve+Fx5D0gzAiB0cCSLKa3fNNdeE37xkdD2K2HEEDJGJwgiynR4ihmiJq//MZz7Tul/+g1GErJp9iRLJX/nZ8u/5558/GKWIkrpmdCKYvI92RNlll11ar9jFxHZpSHHTN5vulb+f/kbGzRRFgY1+pkluuOGGYOSlCyP1NcgQYh8FidJ2EKoo6o53NApSRaIHmcHP84oYMyz6lTnnnLNFSBF1Mwrx+53oTrvvpxjoj5FaRDnuAc8QoIuRFEtPHL12z2iIAiszF+o7Sqrnrn3sYx8LzolIil3bfPPNW883/aENMWbiugcOFunzXBM6ZiFf2v7oJqcJQhvJN90lxoQ4YyMdBk5caMroMSsTSbHnGZiuT9Z1FQG0LBmBjEBbBLr2GLPao9ins2lPXB6BWWaZZZpMpFPVBluDBe8asRdmlejEDYSTURgbPCQ6dZ50nq10yrAdJjzOdV4v7yICwl7UJ5KI3BlU090Z2n1jvN43lWzwjAOoPbN5lEy5pjupxOn5WE4errhNFi+aQRmZuvrqq1tQGLQjhrvvvnvw8PPQIaFxn2pplL3yFkd2IgZ6Ro4dCpA6hBJB70bssZsK40vdC+VId4JBhJDXpm823WvKk7ANBgJPOTKDnLfbggyOKdGL6SPZdl6Bb5wy1wele4G7nqYPO32VGZUYey+9SMCa8t7JPXlKpVvdafeNaIzF58wU2M4NyaVLsEpn9eJzdNqMRqozTXrOkGJcc4KkguhWLfIt51t7QnSJGRM6JvQovsurLzymvCYFfvSDNzsl7Smusa5jvUqXoZS2R/cYKfTYjEmWjEBGICNQhUDXxDhNRIxXeQV/ep/Xq90Ahxgje+1WNSMY0puswpgQz2iK0YIxJGhQIj1TktLkrUeiJ/ouIEIaxLHGgTpi6UAZgylvcEqMy895PnrkIsnlgU5DfVIjknfYFnm8mbbSQ6LrvMFNRkxa5wxKoRPICu++KW3E4fHHH680WHl055133qnUprzNFvJD6Fsa45uWpembTfem+nDyg64JIxG6IU4U/vqFJkk97elz/6+9O4/er5r+AH5/PyyURZPQkqFWVpNKSKMphESDhKJSUaEyVDSIVaFSSWmgeVIpQyglSlGhgX8ytBaKWGIZWiXDaj2/+zo/53E/93uf+9zneT6fz/cz7L3Wd30/z733nLvP+5x7zj5777M3nllFaOez/3aTr3LuO2U333zz1G++Ld8BtwKuFlWtaBsv1XvqZdlifcjU9P58r8vY6fru/FwWlLOGlaa2iYzpOo5t49wcDNthc3XTu1zL45qAe8QRRxS0/gRU49LcPojPjF+d1yZcc78ax8Z6ddzioatFZVAb4nogEAgsfARGdqWoQkIwbjM1mvTqk1kdUgtgVUtMG9qU0MKk2ZYBrl7vQvvNrw8uXCBoPaaTmClpx/ii5sUrC0i0yF38B6eTn9moy4aNP2KdLLaEmroAWX+u+pvWlVaShq5ONMn6jXmbiZj2nvCR8fU8Tdk4RLvv4BI3ARpubhV8YmkBUV2LRyM7jJRH9bYwP3ONantn271B7xVP2qE17lmS0aAsLPp7EDb4bIooYsNBk5yF4kHvrV4n8BGMJeNglWLar7pjDKsDzlkgo3U2L3alYWOnSz1VId/ztO4039mtjbVpEFa5v7u8B6bcQJrONdR5GFSfuYT1hKtHtnpxraMpxieq80r7jdrWmvr7WMFYcup8cbXwrqBAIBAIBAYhMLZg7NQwk2fdFFt9kYm57v5AUHadX5+Jizkt10FY4C/ZpLVwfaaC5Q8CZ2leh69/mWhUHIAiQORDNe5lIaIqTOQybfeqbSOcVPuRsGXxIAwxpzdtVJYmNtP1bhr4+iJpUYabhTWTZ+rP+Z0XXcI0DRitZzW8Fz9SbhMWY0JlFWPfBc0bjG0+qn3W1JdNbfacA4CZCGj8w/MG0maHidnBJVQVlPM76u3ilsGtpFqvsnylta3tnW33mvh3DQ74qprwRcHIfqAZG3VXeaX581sYx0zmDwey+NRmyuWqApJr1d/GN2GWgMz1wPwzzNJVbQ+TfsbYZmvttdee8v56f44ydqrvGfQ3DWyV9BXLRz5ASvttvq0qKfjzwvaDH/xgv+iwce5B9dpgVf10ud/AsIvrFWuJjWeOXKROrh7mN5ZDPuI0yVW69NJLk58xoRxlPKu45r9zvzpIaHMg2keVzjnnnP45gCk34kcgEAgEAv9B4FHlIvJRf9cn72EICZPDZDgotJXyFmZmyeozNL8mOtoBB8JoZhy0sTheffXV6VBePSKAupxkFnaq7k83jM/5eJ+JXVtp0y16TLoWE/8sIFnTYpGSFpbQZZNCiCXQETacwLYoEGZsPmxCqv55VVwcunHoEdFw0hZyC1C3EF3T6bYxV/qD6wHfUsKscWxBhbXDP0zq2b8UxsYnLZzQUrSzNJywhalNhI0Kq4eIAw4zqYvABkd+xbTwBAkn+WmWRQQgvBrLokKITsClgdZXX9kEcuWAe5O5OGOoHn3OP5ZQQsDwfz44p6z3CidmHLA0cA/hTy5Kgr7WZkJdNQqMTHO+RSmNzQvcI+BBu9j2zrZ7g/rdoUTj1VwAJ20QUcOBUdpfbg404OYRmxbP2mDghxClv/QfQU+UFb60b3rTm9LrRHLhy6p9OeIGoc64tunUP/AQJYI7in7XR9xs+Jk7fCdyw7BU9jTU+NO33FhYd0RgIPwZZ8YNodR3po89Q/gnfNOS+2YHjZ1BuLlO+6pe84J+pMnFuzpF+sgbIe0jrItUoT+NTeHRJPjJyoau45zrHCHYBp3gmQ9kGlPGorl7kHudPjXuHNbTj4R1UShszHMadn7q+gj2wquJMOLbyHM/CwJejQ11uGdcuK/9+tl5FO167Wtfm9xzjA2bU9+x6ByL2fLYNp7iXiAQCBRpDvufchHv5Ul2FFBM6jQMw/x+nZi2OOXdvndYpE1WDlnQzqiHcGcCbyJCggnOQhc0cwhkDXXuB0JWV3/XmeNqZmq2mBJUEOGW9sxBPAJu3e92FA4IDQRmddcFKp8agYiAmg/c+Y7GfV8+LKYO35N3EgrqRAD27lHcQ9ShfgKI7zQL6G3vbLtX56n+m7ZXG2xWTEwEevNE0ya5XtbGgIBYP7RVf27QbwJsDhmZnyGU2Yz7JvKmcVB5181h+pbme1wf3Lax0/Zu97SfME573WRxy+X1J0wnPXyGVwK/jY322phztXDgbTqUF8aS71KfjotnbrPxYROB16BAIBAIBNoQIAeMLRi3VVy950AQocMuf1zij0YLNihixbj1RrlAIBAIBGiNzVF1IZxgRuO/0MMWxggIBAKBQCAQ+H8ECMZj+xh3BZG/Ik1KU5a8LnXQFvOTDKG4C1rxTCAQCIyKAL9XG/dqnGkhvZjnRRIJCgQCgUAgEFg8CMy4xhiUFhkHQPgAjmIWs1Axc3KjyIHcF0/XREsDgUBgthDg183POcfD5cbBR3XctOuzxXe8JxAIBAKBQGD6EJgVV4rMLiGXH9woQfNpmflN5sVq+poeNQUCgUAgEAgEAoFAIBAIBAL/RWBWBeMAPhAIBAKBQCAQCAQCgUAgEJirCMyKj/FcbXzwFQgEAoFAIBAIBAKBQCAQCFQRmCgltBBr4hJzdRAzU8giYXzGSaUa3RIIzCYCYtgKQcbn3Zg1dv0Wk3YuknBmIifw1xfHd9zQZF3bduedd6bkJMIsims8Cs00r+IS6z9huMTbHuXcwijtGPasuU8MXn3icPCkIdCGvS/uBwKBQCAQCMw8AhNFpRBtQtB22bZEn7j88ssLC2pQIDDXEZCY4Nhjj02JD7bbbruUVEAElLlKYhVLuCFtsWQUM0m+4xNPPLEQg9z7qtnlurx3pnmVIliSDqHURslQ14X3UZ4hEEsaIamIOL5BgUAgEAgEAvMfgYmjUkh7u8kmmxSf//zni5122mn+IxItWDQI5IQIBx100ERxtmcCMBnBqul68ztkL5QOuS3j5KT8yMQmk9tGG22UslQSkPldDaKlwatMhOutt15BSB6WZGgQ39N1XXZImwlZ+oICgUAgEAgE5i8C1rqJXCk0PWuvcpri+QvH3OFcOlcbDulRX/GKV6RUqzI3ycJ1xBFHpLTBtPXSnPonq3c2J09Sdu4gMDuc5JS5bWmXZ4eTqW/Rz7LVNdFsRGi5++67U5Y8GdRojNtoafE6Gzi0tbt6b2m5cnTlL54LBAKBQCAQ6I7ARK4UXkMwXmONNQpak6DpQYC2jp/2j3/84+Lhhx8udt9990L2v9tuu62g3STQ7brrrin5APP6F7/4xf6LJyk7PdxHLeMgIG5uJvG+lzblTcMwPuYCr8N4jPuBQCAQCAQCgUBXBCbSGPd6veL73/9+se2223Z9XzzXEQFb6UDBAAAgAElEQVTxm7/xjW8UTOeZpK6lPT755JP71xzEol2u0iRlO7K36B6jsT/mmGPSoTeHrh544IHikEMOSQdPm7T0nqFNlT2tmpxGX11wwQXFKquskrTC3AH4yV5yySXFueeeWxx99NHFFVdcUay22mrFhz70oYTzwQcfXCy//PJTMP/yl7+crAi0u/p777337tQnzgB87WtfS/HEbbpohZUlCN96663FV77ylVTPJz7xieSi8J73vKcx9riY5Iceeui08HrNNdcUN998czrod9dddyWfXW4cXYhvrw2kdvz2t78ttt9++4RplRwStmF8xjOeUTzyyCOFw3v7779/3z1klP67//77i9NPP71YccUVi+WWW26kw5pcY2C+5pprFssuu2yK6/6jH/0oWYFcQ5dddlkaN0984hPT+IADqxG68cYb0xjUnquuuir1I9J+7a5a7drGayoUFAgEAoFAINCIwESCsUXMAZSq8Nb4lrg4FgKrr776lHJMtgSmKhHMmg4gTVJ2LGYXcCHa3Ne85jVJW++QKSLAysp4/PHHJ6Frzz33TALKZpttljT8iEBDCOYT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jZb/D3/4Q/GFL3yhePazn13ceOONxTHHHFMwI1511VXpW0KsBCwu6rz00kuTFoR1YOeddy423njjPh+sB8qri+DuHYccckji13VuG3x6uYUg2u/nP//56e+2svyq77nnnvR9S6/8ox/9KJkoh7k9aIcN2TOe8YyUMERb+VRznUBHHXVUcf311xd//etfE09rrrlm6xzBx5EpUF34+POf/1xwfVEO/fvf/y5OOumklJAERvfee29yz1h99dXT/dNPP7244oorihVWWKGwSEhLj2jsDj744HS48qtf/Wp6B+z49doIwQhWyDynH81pfMOXWWaZ5Ivu4GCmNj6H9UO/kgF/wItvOh9M+FI6rLTSSv2nbTSMOQf1zL02QjbN0ngPapu55Mgjj0yHTpXnPmT80S75zULFusFC8ve//z29ix++zfmg8eaZtjHVZMEyZmm14C799TBiFTOGjC/4K4/HPL70q2/IQTG8GhN777132ohpm37zPpa1f/7zn8Wf/vSnhJd50nNVMr+eccYZhXkVTsbFPvvs0/qNr7baagm/Ufsjj7W2sm3YWGv5pXP7MnewSrHiZuryHeRnjbPTTjsttcM3r93+7kLD5o1B8+ZDDz2UlGu//e1vk+IHHl37y/yc/Z+5U5gLnFswBobNR8P4HTbeBrVnEO/m1Kc85SlprFFiGaOs7GussUZScGVqGweD1gzKM2uUw8zm10MPPTTNfcZknv/NeZNuPrqMgwX1TNkZicoFYqR/pdtEr1xY+mXKwdgrJ6Te5z73uZHqGfW9i+X5973vfb1y0zEFy3Ih673xjW+ccq0UGHp77LHHlGuTlF0s+GpnKfCY+XvlItsrXYN6pVmud9NNN/VKgbZXaux75STWx7V0H+qtv/76vVJIS9dKwalXCiG90oUo/b7uuut6pW9er9y09MoJKpUv3TDSvXLRSu8pNf79+srFPF074YQTeqXVJV0vBbFeKcz1SqGvVy7e6dpFF13Ue9azntUrhYH02/vXW2+93oUXXtivq5z4envttVf/d7lA98pNa/937tMuZbfccste6VqQcCiF3d6GG264RD25voxDKbD2ygN1/eeULd0l+u3y3Ic//OFUb7XsoL+32WabXilY9581z5S+yek3HEoBoI+ta+XC0yutWL3y8GS/jH4oF55e6b/Yv1ZaWHrbbrtt/3e5qKQ+0Jd1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" + } + }, + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Here we tell `sympy` to remember these variables for further use. The parameter of the `symbols( str )` is a string that contains comma-separated printable symbol definition. One can use latex commands in this string to introduce e.g. Greek symbols like `\\gamma, \\beta`, etc. The number of symbols in `str` must be equal to the number of variables assigned on the left hand side of the `=` sign" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "E_f, A_f = sp.symbols(r'E_\\mathrm{f}, A_\\mathrm{f}', nonnegative = True )\n", + "E_m, A_m = sp.symbols(r'E_\\mathrm{m}, A_\\mathrm{m}', nonnegative = True )\n", + "tau, p = sp.symbols(r'\\bar{\\tau}, p', nonnegative = True)\n", + "P, w = sp.symbols('P, w')\n", + "x, a, L_b = sp.symbols('x, a, L_b')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASMAAAAVCAYAAAANdIgpAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIiUlEQVR4Ae2c61EcORDHB4oAODuCwxn4EYEhAw5HAGRgik/wzWVnYBPBnZ0BOALbZGAyMEcG3P+nlXQ9s/PaGe2s6m66SiuNHt1/tVqtxwxsPT4+FpYuLy/3FO5s3pyeNTBrYNZASg3U+ZltK0AV3ur5uc2b07MGrAa8Ef2webmkc8aWi44ywsGmB38TaSekVHCo9FPFH0LeHK9fA35AXkkS+oduFdiZXqvsExmZ0WfhyXXByhmbG0Y/3gd6eOnH9bviB58m2lXYU3ii8F31qTsJTYlNsm4UniucKDg73+KYpgcU8FXxi0l6PQtZ0oB0z3n5TvGzpcJMMoQNh8mEL5TeygSWg5Eztjo9CS/jfau4ds4pn13DgeLJnFHAOSU2yWKX/VrxQ9gZvVfGxwAmp1ggT4SnaUDuVX6aE94hWNSHsNP4MqT9hG0YBzAeCnNud4s5YysNkXS37zNuSgXlB3YLky9MG8CG38H/nAZndCQQWU5q4WJQcjyuCFYyCsZ5nYxjYkYaBwzGGY1nzW46C8oZW4OCwuLaNd4/G9qvM3tSbMxvhb8Vzrb1w9Z7fnu2zuHt5v2GKhqLtpWym8uaaggXdxi/FGMnv7wY8jZOOWNrUY5bfKrjred4oas090ibsIdNYMOujtgZ4QlrOy2FsPpxTHqq8FPPcYeiNEeLU8VuR6UYp8bK+UJpFJmExAueYGhaicEQcQ0VKh70h4HgMvlYgcnGM30nfZyyX+JnCdlcXOdKZ+p72DmHhetJJmBzxtakIsa7NOekX2ytNG+Utwmb2AQ2dHGAM+JWv+m+6FwKYbBxNFcKdtKf69k6CBTJpIVfSdF6HkSSCy74/qFwr4BjOlOIlHDA3vi+ckH7VeGdnt2bRcXIJT9sYZVMQ+KNEUJJdLZgle7X47PHieCMJr/PqPYqZ2xVrOHZjDd3bu5lgMqYR9jBRnW6QWwcR/dxRiiCiV4iAcNDfvOZTMJqHZT3zpcXqs+rOjx5MNZQNCj28nm9HS91lS4UkJGUxNP2FYfKW60oV88oK26hkwr/18HZCV8rwuNkUeDiPrljrBWqhUCywq6IKiwOEHpaItXFLsCGXbGbXuenIithWwK7mYwwbmB3tqwYXWLrtXNH+VPpdGVsiVSIb9nb0c8ThWBgljcTMkz8IxVYx8PkxdiqqznfRdQq1DLuk/ayg/xCz8isw9mHXVcd21fkxL76hvQVDLsKqTFgaPCu6pJsR0GuYl4Fo98kOvbsGyPJwgGzgtudM/YCOZ0skqVfnOpvCtRrqlNqMORhILYholK3CeNtbbu6+BXqn7W1SXSqjg7BlkI/2PMuzqiWpAw36RRzRMOo7BEN0A8qiwr1TNZ5+88lb+fuweNYKTJ9dYOhxlXHwIpBf51OVmLeXRnnV9VjbCWZ3JeBJ8gG4+tYYU0JyWXMC8VhtYySlMc3Mks7I98m6Cngje1SJbycQnFvbKlkJ+DDeFftC7bR4fv+Me4ffHrtOgWAaCVsiyZJflm43HdG90o4w2tgy4CzIlvjIq+kUJW3TqoG3qtk4xS5O1on0S9WKdtX5OEArDMmbzRJTnB+f7Yw48M3J9vrmLHa923dZbvSVbwt7HoXvRdfezyzDVnJMKBIHhv1d5Xmjq30wiNWTJNYFRs6434GB4oNEROc/hSz84cY/4/CX7JtV5LgR3zDeC8tqiqzu10cEa+8mVOT6HQAtpQ6hdf9tn5QAgPTRJRZRVGvLo8L4NIg6hkho0l8kMdxoXEHgZAE8jCWah8wjAeFeHGeQI7YOcL4oZLMRZbrD8cka7jgYywwVO5iuNNj4kdKgU08kNP292foozS2asPYOB0pzUuPJeetvFKbCHqFhHgMwQZeJnWwoy/ig/54/gxWgtIsCnGHonQklY/GLmat440wyQHTK8XshibRKXJFq2IbrdOFWPfLwna3rR86zArRRJTHgZCCMAYaozRHPs9OmkJ5tOFjpjaj9hw6I3ZFVYdYajRWnm/PSmT7RZoJ5j5XR+BYOfAwRL/giY5LpDycDOEvU4DBsCvAECDily6lH+WP1rl40Gc3QQPfmviePF+3png5KyNs1vHTD6t7bAzbLlEK7J5h43hTLjnB0dY6xBKoRf3R4214jsG2sk6NXJL8Scztjn5YDcIrRiXLJAWxyrF1RUEYPx+9/a5wZfKWtuQqw7MzuGzbCbQdSjjL1gFKIA9DgOgvOxKIb4w4JkVHOFaO2mNAVwpMeuf4lGf1Tx5OEWIFt3rD8cQdmtIMYhJsHhc4nB70zCISnbDShfIwWHYYQVc4Ld6iWkxUXSLVGWwPaovOkmADhwFHGntupQTY28Yb2fSPsSXmSsRObmXV0xhccFR75I3GBg6DkHSnTk19ktjT6Y4Y0flCgb+gtatErK98DLBKnL1bSe2eKTiP21qxo1A8OmXBYqQ8dh3oAh3U6gEZ0Bg5astg9eqPE1b+walbbNx1HNsqQ7F5XGGrblnGtOrwuYP95CGW9UnkjK0L/0jsQ8e7C1YxFBeM1XaMLXZi61NBGMKCfLPtG3AcqHM4ffh11XHn365KCcuHysM791qRPNahcsZ0lcv1XRgo5i6LTynqnMMmsPXtV07YnC77Ale9nLBb2DnhWlWn7KrxP4VzRjJoLu+4IHZeioIUJH4AW3XLNlj0UHm+HX3/1kf4UDl9eHfUYYXlzohjJLukpZ3MprB5uWz5C6U51i/Zkq8zmT2ABfJyncEr7Y77inHmHI148bKvAN5zBfTq6iodSXmT2jKCvcz/sk7ROX5n8bKD/2dEuLi42FW4Ds8pYvF7m4JPXx5D5KnNocIPhUcfn3TJU71J+9WFx5bP2Bb2bHWSIp2rXnPF1Ufnwn6tsBfqun+uFty/PBSeiv9Vs85P+IO4OZ41MGvgf6oB+Rh297ygiS9g/gEDoHKK68lypAAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$\\displaystyle \\left( w, \\ \\bar{\\tau}, \\ p, \\ L_{b}, \\ A_\\mathrm{f}, \\ A_\\mathrm{m}, \\ E_\\mathrm{f}, \\ E_\\mathrm{m}\\right)$" + ], + "text/plain": [ + "(w, \\bar{\\tau}, p, L_b, A_\\mathrm{f}, A_\\mathrm{m}, E_\\mathrm{f}, E_\\mathrm{m}\n", + ")" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "py_vars = ('w', 'tau', 'p', 'L_b', 'A_f', 'A_m', 'E_f', 'E_m')\n", + "map_py2sp = {py_var : globals()[py_var] for py_var in py_vars}\n", + "sp_vars = tuple(map_py2sp[py_var] for py_var in py_vars)\n", + "sp_vars" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduce finite embedded length\n", + "What happens if the debonded length $a$ reaches the end of the bond zone $x = -L_\\mathrm{b}$?\n", + "With reference to the blue subplot above, we see that this point corresponds to a maximum possible shear flow area over the bond zone. Thus, the maximum force that can be transfered through the bond is \n", + "\\begin{align}\n", + " P_\\max = \\int_{x = -L_\\mathrm{b}}^{x=} p \\tau(x) \\; \\mathrm{d}x = p \\bar{\\tau} L_\\mathrm{b}\n", + "\\end{align}\n", + "The corresponding pullout displacement can be obtained by solving the equation\n", + "\\begin{align}\n", + "P_\\max = p \\bar{\\tau} L_\\mathrm{b} = P_\\mathrm{pull}(w) \\implies w\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "Pw_pull = sp.sqrt(2*w*tau*E_f*A_f*p)\n", + "P_max = p * tau * L_b\n", + "w_argmax = sp.solve(P_max - Pw_pull, w)[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Introduce finite fiber length\n", + "What happens when the fiber has a length $L_\\mathrm{f} < L_\\mathrm{b}$? The debonding phase with ascending pull-out curve remains the same as in the previous example. Once $a = L_\\mathrm{b}$ the bond zone starts to shorten. \n", + "The amount of shortening is equal to the slip at the unloaded end. Let us denote the diminishing effective length of the bond zone in the second phase \n", + "\\begin{align}\n", + " b = -L_\\mathrm{b} + u_\\mathrm{f}(-L_b)\n", + "\\end{align}\n", + "\\begin{align}\n", + " P_{\\mathrm{down}} = p \\bar{\\tau} b\n", + "\\end{align}\n", + "The strain at $x = b$ must be zero. Thus following the same arguments as above we can directly write\n", + "\\begin{align}\n", + " w = u_\\mathrm{f}(-L_\\mathrm{b}) - \\frac{1}{2} \\varepsilon_\\mathrm{f}(0) b \n", + "\\end{align}\n", + "After substituting\n", + "\\begin{align}\n", + "w = L_\\mathrm{b} + b - \\frac{1}{2} \\varepsilon_\\mathrm{f}(0) b\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "Pw_up_pull = Pw_pull" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "b, P_down = sp.symbols(r'b, P_\\mathrm{down}')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFFUlEQVRoBe2Z/XEVNxDAz54U4EAFmA4CqSCkAz4qSOgAhr/s/xjoIKSCBDqADgJ0AB1A3IHz+220N7o7nd9798B+9nhn9CTtSqtd7cdJenunp6ddDcfHx0/o/0q5V/DvqE9K+4D6BuU95SljE1/Iu1HtjZVKsRBYbT9S30lc1uDe0r5LubWLiu2noHWNoD+V/l81vmr/QVur/V7hdqbZVArpatdrCXtYkDdbxIvGzSllTHVY7OOMgEGHNmfJmWnng55TSkuZICZQXFO6iWJO6cm880T8MF6sCC3aZNADeF3uMeU+5QH9Nz1xxxoTpZBPKwg/I/iL/5vx+4nft+CeVri+Cd5PwTPKbxetcEupjKcHvcRrNFDkJeXRGkO/+5BWTGmppbHy9btLvMYCA0ux0/l9aiaJMT/G63KCJ4s8bQQif8qYpPsJeA7OfkdtfKaL6xmeVvwGSjduP1M+0Ja39M+U1xTj2761xVDpPWtsqYynQZJg0gRg4uI3qXW7V9b0XaAHcPLxVJL05/QVMgC8ySZilLbj3Ez5fqWtAoJ9FZSusiarUIb+G0qsS+0GBYyViphgwJmWgi5TTxMKWUMK0jFGq9+redFWKHc/LdzRVrFDankKWvMufa0j3KbdCodaRt0+53fhfkxyN0SG+9F3h8107kILggF0hZwDz4Yturjbo0kq9rjIYZb9m/KQvrX9CYzWHqyTSmnSTSAsAuODEfOax3s6BzWitN2Qf0Z4N9VY+UJ5RZG/seZ8+xvB/kajy2AUcVF392HOB6ewYUFx9HUZ46D39WrMQFDw6UoG/Enpy0vXG1hB3g0YbN4ipWTKYmYbF31CMb4UXt9+Rj/d2GuLgjrGODIp3KHdElRFtViC8TpIWMxT+MiWtGMstWvr6o9oR6KbvU8x6NLCYkvtssbXSu2ydWrZrqSl9o6OjobPSbXKl7R9nf0ui+GuZExdK1W7H0cSrwv93aimXXQ7TukLhfBUHWe8hfM7NsXzoG8int0ET/b1udCz3iHlhjTG53sj3XlYpBTMPbxupZAiwcf7mjfnfLdvCg09lXfaSlgaUy7u1UPB3MnFwPw4WcMgrx8tXnnHatEmuI2VQgiP/pa8uusi20BaZ3DNaDBs3oAb47qNlCpW+UKtQt5Sha0sxfywFDwHlqKvywXQNs4G9EJqVpvGlO/nefVPSxnE24CxORCYNVS0ThgduNbjS3PdtZUqC9UukkqNH1GaC7WQhackPw9mU0F3VqnFfNdWikV8e0sr0e13chv3y3iKdz2Zsob8fMnKTRO9EaylFAvo3+5m/YaQbtdMFIx1txVa+if6rec2x3TQetei7btgZFZpAv3+1Yr2Sr4rlZJhYZy7GgsVnN+XOUvpqj9SVL6pOPhJPIET+s0r6/u4kpuyku9KpWD2Asa127logi6SFktcVwTxqesEpGUC0MJKEOo4jXHQatdToXhSW4evDPaDy8xPWfis850CD6zAHHc/HiJpuyEK1YK0/CDz1QOZqxfkW+C6fLvZS2Jh+IFaF2oCNHfZHff9r99d2ir6L/VecyJIaH5MjdPmGPDyNSOaREJx6pV8Gd9N3K9MlFm4B30t9Qu1Vgmg7dlPl4wx1K/BvaPEPxgxqPEDXaH+pGiBiEVwmcpzhmM84FrnPyFJW6tuKaXw6RpNJghidhpkqObAEZJ58u7/RxqRv1n3zJj6ZqucM6MrqdRsoli6uVXcGHemYjNgn0TOg+9/mHDmORk+UQIAAAAASUVORK5CYII=\n", + "text/latex": [ + "$\\displaystyle \\frac{P_\\mathrm{down}}{A_\\mathrm{f} E_\\mathrm{f}}$" + ], + "text/plain": [ + " P_\\mathrm{down} \n", + "─────────────────────────\n", + "A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sig_down = P_down / A_f\n", + "eps_down = 1 / E_f * sig_down\n", + "eps_down" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle L_{b} + b - \\frac{P_\\mathrm{down} b}{2 A_\\mathrm{f} E_\\mathrm{f}}$" + ], + "text/plain": [ + " P_\\mathrm{down}â‹…b \n", + "L_b + b - ───────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "w_down = (L_b + b) - sp.Rational(1,2) * eps_down * b\n", + "w_down" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle - \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f}$" + ], + "text/plain": [ + " ______________ ______________ ________________________________________\n", + "- ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_bâ‹…\\bar{\n", + "\n", + "___________________________ \n", + "\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_down_pull, Pw_down_push = sp.solve(w_down.subs(b, -P_down / p / tau) -w, P_down)\n", + "Pw_down_pull" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: w \\leq 0 \\\\\\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{w} & \\text{for}\\: w \\leq \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\- \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f} & \\text{for}\\: L_{b} \\geq w \\\\0 & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ 0 \n", + "⎪ \n", + "⎪ \n", + "⎪ ______________ ______________ \n", + "⎪ √2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱\n", + "⎨ \n", + "⎪ \n", + "⎪ ______________ ______________ _______________________________________\n", + "⎪- ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_bâ‹…\\bar\n", + "⎪ \n", + "⎩ 0 \n", + "\n", + " for w ≤\n", + " \n", + " 2 \n", + "____________ L_b â‹…\\b\n", + " \\bar{\\tau} ⋅√p⋅√w for w ≤ ────────────\n", + " 2â‹…A_\\mathrm{\n", + " \n", + "____________________________ \n", + "{\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f} for L_b \n", + " \n", + " otherwi\n", + "\n", + " 0 \n", + " \n", + " \n", + "ar{\\tau}â‹…p \n", + "───────────────\n", + "f}â‹…E_\\mathrm{f}\n", + " \n", + " \n", + "≥ w \n", + " \n", + "se " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_short = sp.Piecewise((0, w <= 0),\n", + " (Pw_up_pull, w <= w_argmax),\n", + " (Pw_down_pull, w <= L_b),\n", + " (0, True)\n", + " )\n", + "Pw_short" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "get_Pw_short = sp.lambdify(sp_vars, Pw_short)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9f439c975c474279aa3e78a26de3015b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "<lambdifygenerated-1>:2: RuntimeWarning: invalid value encountered in sqrt\n", + " return (select([less_equal(w, 0),less_equal(w, (1/2)*Dummy_33*L_b**2*p/(Dummy_35*Dummy_37)),greater_equal(L_b, w),True], [0,sqrt(2)*sqrt(Dummy_33)*sqrt(Dummy_35)*sqrt(Dummy_37)*sqrt(p)*sqrt(w),-sqrt(Dummy_35)*sqrt(Dummy_37)*sqrt(-2*Dummy_33*L_b*p + 2*Dummy_33*p*w + Dummy_35*Dummy_37) + Dummy_35*Dummy_37,0], default=nan))\n" + ] + } + ], + "source": [ + "w_range = np.linspace(0,2,50)\n", + "params = {w: w_range, A_f:1, E_f:1, A_m:1, E_m:4, tau:1, p:1, L_b:1}\n", + "param_vals = tuple(params[map_py2sp[py_var]] for py_var in py_vars)\n", + "fix, ax = plt.subplots(1,1, figsize=(8,2))\n", + "poui.plot_filled_var(ax, w_range, get_Pw_short(*param_vals));" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Clamped reinforcement" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\frac{\\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}}}{\\sqrt{\\frac{L_{b}^{2}}{A_\\mathrm{f} E_\\mathrm{f}}}}$" + ], + "text/plain": [ + " ______________ ______________\n", + "╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} \n", + "─────────────────────────────────\n", + " ___________________________\n", + " ╱ 2 \n", + " ╱ L_b \n", + " ╱ ───────────────────────── \n", + " ╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d_Pw_pull_dw = sp.diff(Pw_pull,w)\n", + "K_c = sp.simplify(d_Pw_pull_dw.subs({w:w_argmax}))\n", + "sp.simplify(K_c)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} \\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{w} & \\text{for}\\: w < \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\\\frac{\\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\left(w - \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}}\\right)}{\\sqrt{\\frac{L_{b}^{2}}{A_\\mathrm{f} E_\\mathrm{f}}}} + L_{b} \\bar{\\tau} p & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ \n", + "⎪ ______________ ______________ ____________ \n", + "⎪ √2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ \\bar{\\tau} ⋅√p⋅√w \n", + "⎪ \n", + "⎪ \n", + "⎪ ⎛ 2 ⎞ \n", + "⎪ ______________ ______________ ⎜ L_b â‹…\\bar{\\tau}â‹…p ⎟ \n", + "⎨╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅⎜w - ───────────────────────────⎟ \n", + "⎪ ⎠2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}⎠\n", + "⎪─────────────────────────────────────────────────────────────────── + L_bâ‹…\\ba\n", + "⎪ ___________________________ \n", + "⎪ ╱ 2 \n", + "⎪ ╱ L_b \n", + "⎪ ╱ ───────────────────────── \n", + "⎩ ╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} \n", + "\n", + " 2 \n", + " L_b â‹…\\bar{\\tau}â‹…p \n", + " for w < ───────────────────────────\n", + " 2â‹…A_\\mathrm{f}â‹…E_\\mathrm{f}\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "r{\\tau}â‹…p otherwise \n", + " \n", + " \n", + " \n", + " \n", + " " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pw_clamped = sp.Piecewise(\n", + " (Pw_pull, w < w_argmax),\n", + " (P_max + K_c * (w - w_argmax), w >= w_argmax)\n", + ")\n", + "Pw_clamped" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "get_Pw_clamped = sp.lambdify(sp_vars, Pw_clamped)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "5cdd067c1c7845d29d777c958b901886", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "ename": "NameError", + "evalue": "name 'get_Pw_pull_Lb' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-16-8332f03b8464>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mfix\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mpoui\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_filled_var\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw_range\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_Pw_clamped\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mparam_vals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'orange'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mpoui\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_filled_var\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw_range\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_Pw_pull_Lb\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mparam_vals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'green'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mpoui\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_filled_var\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw_range\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_Pw_pull\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mparam_vals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'blue'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mpoui\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_filled_var\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw_range\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_Pw_short\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mparam_vals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'red'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'get_Pw_pull_Lb' is not defined" + ] + } + ], + "source": [ + "fix, ax = plt.subplots(1,1, figsize=(8,4))\n", + "poui.plot_filled_var(ax, w_range, get_Pw_clamped(*param_vals),color='orange');\n", + "poui.plot_filled_var(ax, w_range, get_Pw_pull_Lb(*param_vals),color='green');\n", + "poui.plot_filled_var(ax, w_range, get_Pw_pull(*param_vals),color='blue');\n", + "poui.plot_filled_var(ax, w_range, get_Pw_short(*param_vals), color='red');" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/latex": [ + "$\\displaystyle \\begin{cases} 0 & \\text{for}\\: w \\leq \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\L_{b} - \\frac{- \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f}}{\\bar{\\tau} p} & \\text{for}\\: L_{b} \\geq w \\\\w & \\text{otherwise} \\end{cases}$" + ], + "text/plain": [ + "⎧ \n", + "⎪ \n", + "⎪ 0 \n", + "⎪ \n", + "⎪ \n", + "⎨ ______________ ______________ _________________________________\n", + "⎪ - ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_\n", + "⎪L_b - ───────────────────────────────────────────────────────────────────────\n", + "⎪ \\bar{\\tau}\n", + "⎪ \n", + "⎩ w \n", + "\n", + " \n", + " L\n", + " for w ≤ ──────\n", + " 2â‹…A_\\m\n", + " \n", + "__________________________________ \n", + "bâ‹…\\bar{\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f} \n", + "────────────────────────────────────────────────────────────── fo\n", + "â‹…p \n", + " \n", + " o\n", + "\n", + " 2 \n", + "_b â‹…\\bar{\\tau}â‹…p \n", + "─────────────────────\n", + "athrm{f}â‹…E_\\mathrm{f}\n", + " \n", + " \n", + " \n", + "r L_b ≥ w \n", + " \n", + " \n", + "therwise " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "w_L_b_a = L_b - Pw_down_pull / p / tau\n", + "w_L_b = sp.Piecewise((0, w <= w_argmax),\n", + " (w_L_b_a, (w > w_argmax) & (w <= L_b)),\n", + " (w, True)) \n", + "w_L_b" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAACYCAYAAAAY/ci8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dTdbcxJauEy+3qmXMAOoWzADsEWD61QA8ApsZwHLrnJ4XzMAwAn4a1asGeASGMwO4VQPAuHW7vu8TX2wRUuo/JaUyvzfWUkYofnc8CkVsRYSU77x9+/ZwLvPPf/7znsp+JPunc8ngck3ABEzABEzABK6LwJ1zVUcKzVOV/ZeOL84lg8s1ARMwARMwARO4PgJnUW6k2LwQSo6f5P7k+rC6RiZgAiZgAiZgAucisLlyI2XmS1WWWZtf5P7sXBV3uSZgAiZgAiZgAtdJYFPlRsrMI2H8OqO0YnOdbcq1MgETMAETMIGzEthUuVFNWYrCfCNF582N078mYAImYAImYAImsByBzZSbPGvzfhb9+XJVcE4mYAImYAImYAIm8DeBzZQbFRlvRf3LszZ/XwC7TMAETMAETMAEliVwd9nsenP7MIf+2hvLgSZgAiZgAiawAgE9WPMyC99X4yH7lxWKcJY7IbClchNLUr+PrbsaX2w+/lNpPtDxtfz+GJve8UzABEzABEwAAho7fpPFlggesH/T+Sc6rOAIRhjxuJoxd8tlqeA3ys4N8ZXsr3R8o0Rf6fhZ7lCSRuXjSCZgAiZgArebgMaNNGMjm6/h8zIL9lWvIqiun+pAiRs1ZhJXTK5mzN1y5kbckhl8S0qQy4aYEsnvjQ4aJG9c+cN/iYp/TMAETMAERhBgzPgX8TSOMPt/tZ8iUf0YP5kMYFbqY53fyjF3rzM3NLzUEGWX5pVO+C8q1kxtTMAETMAETGAsgddjI15iPI2LX+pg2wdbOD6S+wsdg4pNruvVjbnnmLkZ024eKdK3LRFjvw3hzOLYmIAJmIAJmMCtJCDlhQf9Zzo+1fFC5yg2c8zVjbm7U27yxRq6OPeHIjjcBEzABEzgdhPQeMJbugz+DN4HnaexQ3ZalpKNcsAm2njRBeXgR/mnjcaySUc4+1bYjMwD9kMd+H+m8Hjg1mnd5LxZInpPx+86rx7Y5UYuZlbSJ1Jko5xQDjMug7MtihNyJ/l0PlepOeS8VHSvubgx925vdc4TGBD7LjAX1sYETMAETMAEOglo4GZ7A0rIj0SSnZSa7EbBwJ+3piolRW5eXPlQB1/SR8lB4fhLNgoE8dj3yX8kolhUCovcTfNM6XghBsXlOx1lXBSuchxjvEOBeqCj8w0u5UUa8krKls7j+3Hymm2ucsy9MxvHeROiCduYgAmYgAmYwFwCKDY/SUGoFJucEZtx+ewIyk8Y9uuw3zPivyt3qaxEvGTntOwRxbCZubnfB8XoZwIxio9CgyLWlIXgyigeStA5zMWNuXtUbpqNoLyQoWHy3RsbEzABEzABE5hMICsfzH6EAlLloTCUDMzjGyv9olSE/2GEkvGH4sS+0M+VltmeZOSP0sQMTHOG5leF9So3ZKA4zD5xMOPEchdLX6eYqxxzd6fc6EKFZsrFb5rwG2wAzYQ+NwETMAETMIFMAMUGE+PNzVn9t5y5IaRPCailjHFMNktSjFvlLA+zNnzapFKWcuLY95NPuy2lRXliSeojHR/IjZLDUtlko3TBIMbXMo/wu7gxd8s9N/+Tif2/klyHG402Gl8ZJWZumhpvGcduEzABEzABE+gjEIN1DN5tcSNOhIUSEOdj7PR9nUKBIA1+tTFM4ShSTWWHuL0m58syGnt74lVwZoyeN8rszUeBVzfmbjlz838EkOPfdAwZ1kLZWNU0aKn+480mFZ+bgAmYgAmMJqCBH0UCZQVFo2YUxswKhnHoVMNDelNJavN7rHJrCs/UgpWeDdBsemYGiC8T82p4n/JWFnF1Y+6Wyk0JstetC8IU3mvZTOklky8Sa5dPspctEzABEzABExhDgEG+OdB/LL/PNbY0l594JTvelIq829JHWJ+NElWVq7JQnFiBQMFJJvtVm4vDf66t/L7VgZJDni/lbtbvKGvSyPOqxtx33r59e1TRNTwELwri3f5y/bG1OMWhQdDI3uhgAzHfFmCqbfLUndLZmIAJmIAJ3DICGi8Y2OM7N4wpLNnw/0n8X+FBNkoGyzqMMxjOmfFIsyiyUUbY28KDNnHw/17+sVlYp/1GcWMzcYxljH+8zv1aB361b+Do/CxGct5TwVcz5u5WuTnL1XWhJmACJmACJmACF09gl8tSF0/VFTABEzABEzABEzgbgS3flopK/ns4bJuACZiACZiACYwjkJeOfhsXu4rFF5pv3XaOcyg3/1sht8METMAETMAETGAUASkp7NFhs7DNAAEvSw0AcrAJmIAJmIAJmMBlEbByc1nXy9KagAmYgAmYgAkMELByMwDIwSZgAiZgAiZgApdFwMrNZV0vS2sCJmACJmACJjBA4BzKjd+WGrgoDjYBEzABEzABE5hPwG9LzWfnlCZgAiZgAiZgAiKgN7n4mjNfOX5fB290/Si/k/4vS3nMNudQbmYL64QmYAImYAImYAK7JIAy8y6SyUbJ+UvHO5yfw5xjWeoc9XSZJmACJmACJmAC6xH4qMia2Ru+yXM245mbs6F3wSZgAiZgAiawfwKaiWHJKf5AtPbnoyG94vwRbtn8AednxfnmTis3myN3gSZgAiZgAiZwOQSkuPyig39YfyS7V2lROP+C/pXs1r98kP9ThR99ZVn+/Dv7YuYcys2qb0sJEBdg9H9vKP7Z1gQXu4rOyARMwARMwATWJfCJsu/dIKzxlBkbFJs3Or7U8U1TJPl92/Rb4/wcys3a/y0F3I8EsFVrXBqiypmkTE0tX/mfpHxdo3ynMpl6DRzfBEzABEzgEEtTrSjULzOpwHiIUkMclqlqyo382Yvzow7iNc0nCmeGiJkd9u+UkxQoVs8VNnpcP4dy06zQYueqeAI2BcAChW+qTM2Q1/LNgLZUktwmHyu/L0/JU/mcpOSeUrbTmoAJ3G4CMbaKQufMjeKUG4qPgCmcN6hYevpYbmZ2XuhgH09lchzOUYB+1vGB/P7Q8Wv2O1rOkn+ruSrlRjV8poPBfBMj4JOUKcVPWqvs3kawlPBT5Vuq3LH57F2+sfUYiEd7ZJp20fXkgTIdbAIm0EJA9yGzAgyy/5K7c6BuSXrbvZi1QSEpNw1PZqL0pTJzvyUD/H7QwXX6qSiPN68YP0ebq1FuBIGKvy+7arDZLwaVBwp/raNzo9Noan9HnKpMdU3H/Z3jsq5W+cSFWQSm+WCCQSsuX9vj5ocnDe1XxSfuGqZVvjUKKvNUfVBKyynPMvjIrfizZk1yOQfZo6dSjwq3hwmYwCIEdB9yzz/XQX/3m87TMsgimV9/Jq37bcSQseKBbJaTUIBe6PhM7qM+T37VGJPjHilK8k9+simPmZsw9NlV+vDss69GuVElUWJCkTkIDoMz017VwCw3T9GLNOqcf02ZUt6dRvE/VSAXaBPTJ5/CWAf9RvZb2TzBVIxK4eQfSlDpvYhbeR8po4tkPC6TrZbqzqK8jUPgWCZwewiov0kzNrKZDaDv4XVmlJyrNaonYw59EMrGkSIxseIoLuWsSyQnfxTGg8pAwbmv40ixiciFzRtXpfJSBCUnD97VeC73Yx3M6Iw2V6HcCGZojyV8BrDy/KB4zNrQyJlBSV9SHE3qOGJNmToOPvJBgeCG+lQyoBSd2tiOCmh49Mqn8mmsmGqm6+a09suu9tFrnLWUwydH8uVr06poKbvXCq9dz+EijmMoj6Rgyh5zAx5nMNJH+Z9TeRsppaOZwK0hQL+S7nndm/S9va8zXzIV1Y8xjv6Vvj3tbzmlPsovHsprY4X8UZ4Yy9KMimz6vLHjGuMPY/SRyfkwppf5IsOk7RxbKjf/lWuxhrYMpKQ95jKwgPe7QL0b8HMYF+gkBUP5AZ6puFGDreIhX6lskX41M1K+UCL6tGdk/H1pQbvkkz/K1NqvCW41m3KkvC3N0fmZgAlMIvB6UuwLi6z+k5l2xiQeonljOCkHp1Qj5/k45/GFznGm8U82CkeMI/jHgyNyvKfje8XvfIhUWJcixNhNOsZpWekBe3J97pJyI/OfuZz/lt1Z4amyqPKA5sNCTUUDJeZD+XddYNLNNW3KVGteKh9t9k/Z7Pj+M0fCbzEGLQWPkY8GdJBMTW28+jaBwthAVgtvKWuO1xj55uTbm0Z1gfvopcTezHoCVQ5ta7Ty25OVg0zABEygk0Dua3hgYxaFbRiLzrQrv7SFoVOAegCKDjJ8q4O+9oWOUvmpYg/IyQwNS1yUPdtsqdzMFnIgYeuTuMB0TTuGdjlLuVC+XcpUl5gshYXiFZrq/a7Ip/pPkA8ONcVFaVF4asqg/GZx6qpHn3wKQ+lJa+Md6XlyOGVmpzaborxgQJ0f6niigxuSc546cD9RnBoP+Y0xrcqb8qLtUD/yZ1axqkuWhfqltiKbzop8Jj+xKI2NCZiACOT7ijGC+5rz1PfKTuODbO5J7rOYoUY5qP7NWuGkI5z+4LkO+nD6C/x797LkvFe53wu5k3w6X1SpUd3mmHKfDLzmGupEX32SuXtS6pUT64LRwQ/NHjB1NerCKh6DGdBPAdeqTLWhUHlcpHLZJ5SbUfK25TnCb1C+LBdZMYvB/iMMNznyrikb5bTKJzleKAxFgk7ntQ46lNp1UpzZipbSUr/mbMpj+aN8wuClDj4SlZ4WZFM+/q1PHvJvNUqXOMoOhbaM90z+lEe7/k5HpdzIDRfShoEFbZUOo6aERgTbJmAC/QR0r9FnoISkfk52UmpIJTfjQbrH5Y6+Gf+fCdPBSxfcezxg8A/X9I3Eo69i6YX+sryHdVozi9/vkoM+gr4jKVs6b+tnakJseSJ56LcwyEUfOskofSiS8UG/yG9SPkTerXKjStJ46PBpTExTHZkch4Y21tCQ2S3fOt0l/0WVKZXFTVU2vrhQs7TaBeWLARv5ksIgG5m4qaubfCzUiDdXPqWjk6Fs1oqTkfugY7YyE/kUNjfN8zhX3pT5Kp9Td5YNq/J1zpMcbXCqoc0e3dSN8uD/upExHWUpH9Oy1H/29Wjk71MTMIE6gRgPmvcYD1W8VRv3IKm4Xx/JL/Xnspt7OYlTGYWX/cti97vy5WG/KmdnDh7cos9kv83khzKlgX3toXZuHXep3KiCNAw0Yqbv2QOCFt020DGNP2qmQfFQghjAKs1d55WR/6LKVM6PmZFS+bqfC0T7PjKKywDHjUA4yxaVEpbzY+BcQtmjnIPyrJjK3RzcCb+nIylksjtly3nN5qe8kaOUhesfiiDZn2SohzKoOqacGfWNMimvUixyOGkOpNURDE5RfsvyPi/LU/6UT3nNzoBvDDU7XkWzMQETOIVAvud4qIkHnCo7hfF5DM4f64g+gj6guhcVnvoEInWY1e53lc1DKbKjTPAg9bXsvhmkDhGX9ZYM9F/NPmzZQibkdndC3M2iClJqULIZcGLQrCklCmMts1QcOuXLcXn/PmYsanHlz+CymDKl/BioDm3lyY9vy9Aw2wxLWLyifl9HyoNISrOofMqS/NoaYcVTZVI+jEPBapVN4WvIR6dCeUsZlMLabIrqlzon2UnRU3iTB22Fp6SIF+1wlnJZ5IOCBNuyM0IGyoqOVKfJxD6AOLdtAiawDIHog9P93ZEl/WRpXpcnfe6173flTz/Ewz19Cctf9BVs5o3+uk+81jClZWy6OCO5Wz+yukvlJuhKaDp8BoGnspkFqTRn+TF11bpcFemxlYbBhP+nqJQjuVPDlp3yk72oMqXy0KTT9CUyNAxlorzUjOLTSGMwrd1wS8qnvGIwP1IeFFbyRbFJA3CfbFRC4Uvz45pV14syuozKPmU2hWxRYnjKqjGXH5yi/ksql5THk2FZHn415UrhlNlUduRlYwImsACB6Ovod7tMxInw8p4NvyF71fs99yOMhWlJSOcoOSyvs39wkryK36okDFVwr+F39ipYIVc8cXMBk9FFYEBj70zvxVM4A8RD2VXamxwOpD/SwnN+DGhsUg7NPidJylQa7MKjzVY6BsW+T/sj870yrdIgJ/W8JzeKEYrFkZE/aU+ST+m52TC1wfTG6+ZX5VB3uKFsjZKNlMSXdZJ8yoOyUWQHB3bFYTblOx3RRuSsmxynmpGqh6YzrleNhdLAn7qkdoMsOjiPpStmgmomp+krJ+JTv2an2eb3WHnW5IoMbJuACZxGgHtaOXBPR39YZaiweABkT86ppu3ebvM7+X6X3GyAZpsGCg57hpjJuXdqBcam37KsMTLdHRPpnHEEjKdqOvmnstFOaZAMLh/3yaV4NCAaJ5vCmoPOI/l1Td8xUDK4MbCl2RfFHatMpTIVv+/rx0mpUpxqJkpuBk/KS3WU3Wdmy5czpS4HymwrRP7c2HBLMyfE0zFWNrJcQr7m4E++NSOZULpQpGbvy1Ie3Pjkk66J7IP8uIbU9+jLngo7eSZR+cKdMpNRnvC+r4Nyk8l+RzNrEW7bBExgMoG2QZ4x5KXuN5SAsj+kD4s3paIg0rflEeFd9ub3u+pCv8i3ZujrqR+ftCjr1yXrQfGoYzy8RZ80+EmMnO7/yqbfHFVWCKH49IH0uQ90/KDjjY4w9JX488ba4LgQibDfeft2/WU2CQUwXqXDsBmqfCvlxrfnN1eezh4AVJDXxLqWfVJOCkd7jYuT/IofBuzOJS2FURbA0454nTMTczTYRX4Kp34oBKTBcHFr8RWHhobMZRwUL+p0yHn8JXtwalBx5sj3nYqBRwyszWtAHWhE2DU+U2RT2sNU+UgTRmnh+Ep2l/IZUZOteNG2mMmrLWXpHCWV2bDWvOTPNaE82kJcF5QlOrvWG0n+MKRt0XmUym/bDKGiHRulC2X7jUL5sCOdEdfntQ78at/A0bmNCZjADAK61+jvGKy5v+kr6Peq/iXfz/TB3HcY7m/u/zRrKpt03Of0FcTBnzeBmv2nvNuN4l7M/Y6sOqqxNcv+SHbvizsKRyFkJn3y+A41pU97GmUfTQzIjz56UMEin9JspdzQwGKpBg1skmaHwEpDehoegw4AWwcfhZ1slDcNGgVitDJ1aqEqkxtvrHKzqXxTZIPD1vxUHp0HiswHclftQm6UkM6P4OV0fPumU9FV+iOj+JOUy6MM7GECJmACOySgvo3ZDiYPQrmLh7nOcVtxGY94MHupo/pWmNyjTe5TmRmvPaCSgfzYqpEmAUZnqIh3pkQ+IS4zAslIyMmKTU76XDYKAMtU1QCWwxa1lD8XFjnR+DnQSndjLN/RpYjrU90AYsST1tC+LG7KdBMf5djvEeU9zeXwynY8+fWndKgJmIAJ7JcAsza/ThQvPtXCuPxwYtqITl/8fZyoP+UTMIz3GMb+yebu5BTzEsSmrdFTec1iVFEGKhSOagBrxln4HKBMh62uTM2U2/JlcGoXk/dl5RuHp5JXU/krbXzcC8WXG/roaWNqno5vAiZgAkMEcr8VqyBD0SOclY5RkwqKxxJ5aVB26F9b08u/+i9CxUMpqiYyIhPiZDcz6+RXM/KLrRLMGKEcodQwo562E8iuHhzl7s2rzHh15UbCIChP0RiWD2Yb5TVp+WB2QUqosjZTpjIj9lxQLoyYhuudnVL4JvKpHK7fJNlyPTaRj7KyYTYF7Z/ZFNj9Kru6KXKcZMmf9ohignmmc76B1Lypb0K7f/euXHZL7hATMIGLJJD7tN79L0tVTGWhdNBXto67Cqe/LWe+2QbwuY7K5DzYj4iCRfw2gz9LUknxyWmO+u7sP5RXlf/qe24kEIMO2haDnZ9wK/R2LE1A7WuzfVnInsvjpu1VRJeup/MzARMwgTUJqE9jVpsHbfq3I0WDsuVPeBlGGpSh6q8pFAfFhRmZzhUXhbGHsdpvo/N7Ok+fA8nuR7LRHwbzUrrK3K1cKzgkDJVFsQHAkxWKcJYmUBLYdDZF7bv1iaYUyG4TMAETuCQCedzmsytpO0k+P8iuHuLkZjmqtsSk81BusHnjFpsJDZaYyuWrJg6UliovxUVfiGUwZtjZpDw2ryrvO5VrYYeEQftKGpnszjdWFi7W2d1iAmpz7Onacl/WLabtqpuACVwbgaxEMCPDK+FsFGZpilmX11FX+aGMoIDUjPxD+UEROeRz9q2yRaDrcxyx36Zc3kr5Kg3lMIPDrA559+aVEhU/q8zcSBAUG5YIEMiKTQHcznUJqO15NmVdxM7dBEzgegkwbsf4XdVS/Wrsh0HxYV8Nyki1TzGP+fEWKfsYUUiOFJYqQzkUzqrO4+zH/2RlZyofBQnlZnZ/vopyI4GofJpGksBHGp7CbEzABEzABEzABHZEQOP10Uf0SvEUjpJTLSFFWB7nW8MiTtNWGmZzWmd0mnHnnK+yLCWh0egQmv+34ONqNiZgAiZgAiZgAreEgMZ+ZoBQeNgQHG9Mz6r9nLxWfVtKAjGFhXLDlFM1hTWrdk5kAiZgAiZgAiZgAiMIrKrcUL6UGt59Z4mq+qQz/jYmYAImYAImYAImsAaBVZalGoLG+hw7nW1MwARMwARMwARMYFUCqys3mrlhxzSbiu/J7f03q15OZ24CJmACJmACJrDW21JNsj/II+29kb3rvTdSwHjvntfTeE1tFaMy3pmbseWbS87pTGAfBE65//dRA0thAvsnsJVyw5IUyg0fBWIGZ8+vh/OuPl9n7Pxc9Jkvq+U78wVw8SZgAiZgAvsmsJVyU33dUDge6Oj9uM+5kEmhSV9LlB2ffh4URXHZLP2j7NkfGxosJEeYI9/YvJeIN0e+LfktUUfnYQLXROC23X+qLw/ZvKLM3wPschy6pvZ1zrpspdzEZ5mpK8rAXg3/YxFfWRwrI7NS8QnpsWnmxuuUTzcqy2j8FwjKI4a/ny9nyLihYX+fMMVP/xsi95KmU76eQk7mt5O691SxPUhycz1ihpDrxkMAs4atynWu50PFiW9GEI9762eF7Xq5VzIubqbyW1yA68jw1tx/ai98ffe5DvpGvsG22Ru8Kov+2feuIGxlVn8VPCqii/s2u3f5zRvJN3kGRmkYZOgcDnLP3keTufRaY+VTPDjzVNI6kyT/pATJXlS5UX5n5ycZzlL33gvXEZh58f8t1XWQG8U6rk/nU2Wu5x+yP+jI/uq9VXfa2yx+Vw9nZAXFcNH+K7fLzfueMdWVbMzY8ODwgQ7aDvfaE7nLB8AxWZ0UR+XRR61y7ypvHmBf6uC+uHUPO80Ls9XMTbPcPZ7zBB1P0WPlY2Dizxo/VWPiD77KGaqxeYyNNyifyn+UM+scGBVOo19jUByUr6Wii/E7c91bqjboRecan0lIkVUHOl86YRTm1s+gKzxmCWl3J5tcXqVgNTJ8rfCajI3wk06VN+2V+2ZORzya3znreBIgJT6R0VDxt+n+o65pRlRM6af5t+pNjcpd9N5tCq/8+T+nj+XPfzvxfTmUnNX+3qBZ/t7OrdzoiqgBoPHyt+yjO3LFpXMtO1jyWMVMkC8GKf6Nvc/Q8BczE+SrylyB31nqXlVouoOB/XdxeFdH+fSIYtqnLIcCO3SNR0mkslEs5igXo/IfiMQ9M/e+Gc3vzHUcQDAYfAqjzszFZOn+6xLuP5Z9z2kWvXfbKpL7kvSgKfeXOujreRB6nsPakl2l352rrNX0SnGjsxY7yqiRMK35p2yeAP7MifBby4yVL908kqs2c6NzljqSkZuBtBaeg06xxsoXMqzB71x1n8uNa8D0NNejzXQN+o+JrHRLX8M2GfbsN5ffnuu0iWxqO77/NiF9VMim966u8zc6mKVHwWGP0dc6uvqVI2Ev3ePupVfgVPnzxX4ke/Ssjcpk+SDix1IUG3UXNxPlY9qzNugpPYN+bQCVX+uG1TnCT5QviliD3+Z1j8rMscWta1o8TV33XCPCF7l+KgOlNN4eaatGtT9OcSmXtsSmyCc6GCA5fy+7N92/MIXfGvVUngwSsKP+zMBVs19ywwp2qY+Qzd4WWH8kd+1elN85zK25//K14EUH2upB5/ezne4/nXMduTYxm40ywNuvqR+VTTrCae88ANPfcw/g/5nCo//X6aBZ7N4dLKmIIBnT7Kxs2uFL2WyoRtEZJbviXWRbv1swuK3OSW/46ELTqMslgWgga+xj4ZqMki/LRXz2MKRNznLTKJF3LdmU9Tj5iIhZg98Z635TqYV+VQ86PzpRppWPTFHPmgJ7FHGEh/J6oWgMtHTyTNfTgdfKVZxSiXqscwZF2tZLHUxzp/V82aTFP5Ym5NzeSI4jfvJbq57sa4AHA8Z3OirlRm7uWe69MHDmuj7QcfK1i0zn2JJ38f4r54k4W/c9gwgkG20YJST1ibKTUkNCuWkvqd3KHf04/rx9yDfZmPngeqGU/iWbfpR4tClmw2FZXnedthulJy7mbNdfMrA89VOWBQWOuox5KLnItn4X2tdqdPHoeNhk1deg2N8wZfDnRolZG9DRcWHovI6M4tKo6fTp7HjCqzZ4yb2kfDGwIF8alGQjEzdqdePqvDLy75SNSApfUr4odzF+kaHsxete5L2lk46WzqdqI43Co56lct2IcnOqPOi4GXTZFBzpUmAOo11Um5LlPugolZmbjPQrf/J6lT1oUyynVWl1zlNvtfSZ453DqvHLci9ezwYP2L5uVJb7iqf8ZBT/Fx2wbb0Pc7StLN9/f5OO9tK8Lij5LOPEdSMF1/iR/GI2rrlXjjh9Ju7Bk+7dvgJmhJUKeGty1be89y+qrd9trdGZPQUU6DwdDsIvRK0GdfyUB50tT1A03L7XotHCR5mcJ08nZZr7OXGXrDRm3nwhXhVnBfnoUA/Ktxqg5G4OQoSXX4hulS3ns2t+yFiYRete5JucMJPjpPbYzLN5rjJoU1yv6smyGUfnUc9OZT2ur2xeyaXtNzvuA2HyL9sJHdgbHV0GuSI+cauBOydI7VpxyrZV5SV/6pZkrzxvHOneUXj5sBBRkL+PRcRLdi6jxk9+q9RTBaIwBo/PdV7xkD984NG8Rnxb6uhaKF4yCtuCEff0Iv1XFjusaJfB5EBddZZflbcAABGVSURBVJQKMH5l++jseyLTNW3JwnVCUQ+lvSpOYbQ9ztkjE3Xi/qiun8L77hfSNk0waraLKp7yTHxy+a33bhV5hkP58rD6TAd5M15W9enJrrz3F2nrPWUtGnR30dzGZfbvQ9EEnYbTqpAMpSVc6Wm4TBeyHs6OcaYYo5HKqzKsi4+atVE8OqyD7NDAq0zkx7cLuFFqJqd5I5v6VDeDzheXT/mTZ9uNQ6eZTJaHfQJMt1KfI9mIuIZ8uTzyPpkfMjbMYnVv5JtOJTPXbnZ7bMuz9FP+XJP7bWzKeHJTz7Z2nKLlfGgD0dboUD9Ogf0/dOKdT5S5/gfZqYNW3GY745pGWzoqSenalBfyo7NlsO2aqTrKq81D6cfyW6qe/4McWX7uo3JpAkawaF4nZrc6jeKvzQg5kfni7r9OaKcFRH8d90pbbtxvpXldnkx0r3XvDoqha879wWwU9+3HOu+rcy2/iCube3WRtl4rYMWTcyg3/7tifVLWuhCpY5HNE1XMQNSeAhXGBa8G/hEysQGrtQNSWjTg+2UeiktjJv49udOGNdmpE5S9qHzKLwadowFKYaV2Tp2/lV+nbNRB4YvKR54yi/G7ye7mV7IuWvcy7y3ckp9Ogw+LVe1T7tTxyq6undxRz+975OKLq9HGuMZ0Ro9y2odyd62vI0NVvtxdhoGRJ7lm54hs5QDflX5xf8kyil8ueOl6woOn/JIHfjXlT+Fci3RPZTnOYfn+q1OPe4t7pMtEnAgvr3P4Ddq6/mveu53lq1zGPsYgZtBO3cx+SW09MbmTfq/0J3c6dLrpuyGNaqLJjuqQc+Pk091dhkZfu0mUhs6MMg5ys/HwqCz5ke5k+ZQHDQ9T61RvvG5+VRYD5kPK1DEoG6mIK+tk+ZQPN/fi/JBRZpW632S97q+4MOhxTVI7KUpjEH5dnOPsrafyoCMrlVuY0zmjzDIzwvQ7SnbNKIx2wezJmMGXPGttTOlQmGknzTrIa12jskfzW6mesGsOgG1+bMaucVuXTD13le37r47kICa0d9pt3FdVjMyLc/bkLGGijNY2oPJm3bttgimv9DAtO80UyubBifGHup5i2tp1m99Z23pZwbvlyZW66dBjWi7NvOhCM3iwcXPwgisOF5Cd5a1fjM3M0kBEXB3Nzi5H6bROki/nSn0OKrt1gJI/nRs36pinc7IqzUnyqey1+a1Z95LDou7gokzZtNicQWS2pblU01lPxeUa0UGWbZQOlaf1aOPYD3Q0DfkOtlnlc0/xUCZSWycT+XFtUWomTXWT9lSTy6ZNT+G3dD2532CSjGTiPruvAy7JZL9S6YygTezgJLtsG82yT+m/OtslheT6z+17mnKeck77bRqWbHk1mi/5ln0n91O8KRVpSN+WR4T32Z2MVO4p926tTOWFfOwNpD6jtlvUMug/2X1bb4p/9cqNLjLT6GjMT2WHBsumqt69CIpLQ+GmpMM66JyZh1onLj8aLQpTiiM7fR9B/qOfYhX3FPm+U5l0pKkzVV7IWxrq8EAHNtPnrU8OZYKm+0T5VuEnmajP6nVvslj4nAGP64bi3TSpox1RT9LH4NpU1rnuZTtkz1Db4M5yVVO5kteRiTbOPYQihWFPG0thbfmmCCv+DPJrlL14PVVvWDCQwO+NDj7o+R86viv8at/AUdgmRuVzj9z6+08cuD/o71M/qHOYvJKN8kKfyH0R44Kc6Z7kPPWVsmn39PHca5/rHOX1e9m1zdLyqxmFD/VRS9y7zTJpg6vsDVR9dtvWaxCKk7uF+5qdaMc00qe6SHTEvLlAQ+g0OTymE1vjKQ4NvLeRtyY89pwr35yZmOPSh33myrcKv3xttqr7MJ0ZMVSHwSerE+vJ9HT5NPq5xHzSFFVxxnLkWjIYkGeZbzPLTc4lxyC/UpC16ql802xwWZbcY5k2ki13Krno3279/ScOtNXO66FwxoO2a5guhsJRcuY8FMK/s9yUeffPqHu3O/k6IWLRxmluHdcRssj1TuHeyjn4ttTSguQGSiNHg+dgsN6NsXy7uRTXJAgzgveokGxmh1DoT1HEeTiY3MlTfo9hAODYk1mjnqfUb4+MTqmP0w4TWPreHS7xCmOcY+Zm9belOq7Tc/kzJUnDWX0aXWUwsLB0cpCbaWv2P/SVu5l8M2SjGpvJR2EzZSRpr1kr395CzxPIExVtLjYW9j7F94mYmTGN/qov3tQw5bu0sjRVhFr8tepZK2TiybkYZRZT+q9RNVsr31GFX06kWfduZtv34kYbgdr34doiXKrfO2/f8omW9Y3AR0HV/9WsX2q9BMnAhR/78aJ64g3OLN8GkF3EJAJqk+wrY7aTvQvMfrLH5OjNP/lftLkt9bzoi2ThTWACgVul3Ezg4qgmYAImYAImYAIXSuAce24uFJXFNgETMAETMAETuAQCVm4u4SpZRhMwARMwARMwgdEEzqHcbP621GgajmgCJmACJmACJnDxBM6h3JzrbamLv1iugAmYgAmYgAmYwDCBcyg3w1I5hgmYgAmYgAmYgAnMJGDlZiY4JzMBEzABEzABE9gnASs3+7wulsoETMAETMAETGAmASs3M8E5mQmYgAmYgAmYwD4JWLnZ53WxVCZgAiZgAiZgAjMJbPnfUv+VZfx1pqxOZgImYAImYAImYAKDBLZUbv4zS/PfsvmPGhsTMAETMAETMAETWJzAlsrNZOH1Z3Zf50R/yv5Ax9A/a08uwwlMwARMwARMoI+AxiL+OJZ/SX9fxw86/6Iv/h7CJCOy8mfRX8l9dX92O8R4t3tudDG4KK9kc2G+4QLp+FluLpiNCZiACZiACSxOQGNMPFRXecvvXzo+ksdrHfergH07GCvv6UDuW2d2qdyoET3Vlbgn+6e4InK/kZvzF+Fn2wRMwARMwASWIqBxJhSCriz/6ArYm7/q8otkelf27meZ1mC3S+VGFf1MR9u+nFfyf6SLhTZqYwImYAImYAJLEvh0yczOnZfGSiYFbqU5h3Iz5o8zH+lqMP3XNKE1E25jAiZgAiZgAosQkCLAvpqjJalFMncmmxM4x4bi3j/OHDkrcylrnptfUBdoAiZgAiZQJ5DHFRSX33MIL6j8KH+Wbg6ymbF5jFuG1YEfb5yH7+WutkdkP+K/L3fM8jyUm/2h7A2tmRyP/aKU+54OtlukZSLZPKQjE3k918HDO3nhz+oFNmkJJww3Yx/pUcTw+0L5/KIDeZGHmRriUS/8SEs4+SUjN2nJm7ixCvJY/tXeHLlJ1yq3/C/C3N2hlKG49E2nxQXZofgWyQRMwARMYC8E8mDOQP+J3DH7f5CbF1Q+1PGNDhSYn2SjhKAM9O1TYfxBAUrKjGyUhd9kk77MH/+XOj4Kf9lf6iAufigg2H/JRtkiLXtKv9RB/t/q+EFuwl/InZSswi8pNgo7yO8zHT/LiV/IQN68mFMZnSM7bx1/UnnKofOqvnL3yl2m27P7zp6F65ENDdjGBEzABEzABIYIoNjUFI+cgJkJBnoG8ynmgdJUr1bLHftDmQ0pDeXy2ngoGwe5UYhQqGLWh/hswUCZCRnZBJzyl81DPkrNYx3JZD/8q9mYHMQbXVVZ2a+5veOB/JEfJac05Ys6Y+Uu0+/OvUflpnkxSmj38wnfvbExARMwARMwgU4CGsRRXN7X8aoZSWGhlFSKQzNOx/mvHf6VwlCUW5s5yekol+WnMCgqIctBaTkvzfc6QSGiHoSjGKH88FZxMvJDsWLmptcoHrNFjLF/yc3MFTNJ7+soZ6EoZ4zcvWWdO3B3y1KC/EYHXKqGUkAKv6Z2WkSx0wRMwARMwAQSgaQQyNVUGEo8U2duyrRd7iiXpaFKCcmRmSVpKkgoHK1G6ZnRQX6Wjphteqhzvv/2VMenOpjZYcmNsDGGvTXPdKAkseeH2SuWwMh/qtxKsk+zO+UmY0K7DMgluZi5IdzGBEzABEzABPoIxINwPBi3xY04R2Ea8Bn4xyoNZfrIk9kRlI8h06d8kZa9Nygyz2XHygV+KCRj8le0NOvDuPo61ynVS26UL/b0oHRNlVtJ9mnu7FOstMubtcGmQeNkXXGoITTT+dwETMAETOCWEdBYwXIP40VtAy0YFMZSDoY9JmEWGVuKch9HxqVdlF1697lRPFBM+AuIUGbwY68OG5BxjzHMUtVmkpSeJS7yZC9O8FpK7jEyrRJnl8pNho12ybRZMnLfk+NzHU9ufPxrAiZgAiZgAoMEPlaMzzWGNJefWJLhTalyJQB324N1FBKrB3HeZ1MuykcoUSmuzik3ZkjwY2zj6DRKg9JBGvbHpLSFH69xl/k182nm/Uzxm36cB4excjfL2dX5O2/fvt1EIMGMgnhVrdpp3lV4hk8jeKODaTg2YD2XPxfZxgRMwARMwARGEdC4wawHyzCMJxjOWYqJAT158iO/mMlBYWDMYR8oitEzHTxwkwfpWCIiH5aGUGCSv+JWbzHJHeUquPrWDeX+oYM0pC3z/F7+MTNDmsrInxka0lXhcqdZGNm1MVXnIW8oVsjLxACKG7NYsbQlZ/r+DstnFQu5O+UmwSWYcyg38UeYl8DHMpqACZiACZiACVwYgTsbyhvTZnysyMYETMAETMAETMAEViGwpXITy0l965mrVNKZmoAJmIAJmIAJ3B4CWyo3sZubjxHduz2IXVMTMAETMAETMIEtCWym3OTNSrE0VXsVbcsKuywTMAETMAETMIHrJrCZcpMxsjMc0/Yq2k2If03ABEzABEzABEzgBAKbKjd59ob/sGBZio8R2ZiACZiACZiACZjAogQ2exW8lFpKDt8R4N3++D+LMthuEzABEzABEzABE5hNYNOZm5BSyg0fOeKDSk+zohNBtk3ABEzABEzABEzgJAJnUW6QWEoNy1N88+Z7zm1MwARMwARMwARMYAkCZ1mWWkJw52ECJmACJmACJmACbQTONnPTJoz9TMAETMAETMAETOBUAu/84x//4M2llzqmfFjvMy0rxReHkww6jz/GPFUmpzcBEzABEzABEzCB2QS8LDUbnROagAmYgAmYgAnskYCXpfZ4VSyTCZiACZiACZjAbAJWbmajc0ITMAETMAETMIE9ErBys8erYplMwARMwARMwARmE7ByMxudE5qACZiACZiACeyRgJWbPV4Vy2QCJmACJmACJjCbgJWb2eic0ARMwARMwARMYI8E7u5RKMtkAiZwfQT0LaynqtUnHTV7rfAvOsLsbQImYAKTCPg7N5NwObIJmIAJmIAJmMDeCXhZau9XyPKZgAmYgAmYgAlMIuBlqUm4HNkETGAuAS07fa20LE11/dXLF4rzrY4PFeeRjoc6nuh4P5+/l91PFOeN3DYmYAIm0ErAMzetWOxpAiawJAEpIy9yfp/J/kjHL9nGnQ4UG7kxj+X+5saZ/vfufc51fCW/P3T8mMNsmYAJmEArAc/ctGKxpwmYwFIEpJQwE/Oz7J8iT7kPOmp/vkuY/Ij7KsdjxuYP+VXpdP67ji9zuC0TMAETaCVg5aYViz1NwASWIpCVmEqRyQpM17ISykzERdF53pAjLWkpzj0dXXk0kvjUBEzgthHwstRtu+Kurwmcn8BjifBzmxihsMhmzw2G5avS8Cr5m4hXBthtAiZgAkHAyk2QsG0CJrAVgU9V0K8DhaHEMIvTnJ1B6flhIK2DTcAEbjkBKze3vAG4+iawJQEpK+yjYYNwLD11FY8SU5u1URretELZYWOxjQmYgAl0EvCem040DjABE1iBALM2vPHUaaTEsK+G/TavI1JWilBqPpa7OZsT0WybgAmYQCJg5cYNwQRMYEsCfLsmXgvvKpdZG8xXUmTizSi+cfOJznsVo5TKPyZgAreegP9+4dY3AQMwgX0RkAKD8vNANt+/sTEBEzCByQS852YyMicwARNYmcDRfpuVy3P2JmACV0bAys2VXVBXxwQumYBma9hvw6bj+JDfJVfHspuACZyJgJWbM4F3sSZgAnUCUmzYbPwy+z7TOW9H2ZiACZjAZAL/H2Ysc0GZppkWAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$\\displaystyle - \\frac{\\begin{cases} 0 & \\text{for}\\: w \\leq 0 \\\\\\sqrt{2} \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{\\bar{\\tau}} \\sqrt{p} \\sqrt{w} & \\text{for}\\: w \\leq \\frac{L_{b}^{2} \\bar{\\tau} p}{2 A_\\mathrm{f} E_\\mathrm{f}} \\\\- \\sqrt{A_\\mathrm{f}} \\sqrt{E_\\mathrm{f}} \\sqrt{A_\\mathrm{f} E_\\mathrm{f} - 2 L_{b} \\bar{\\tau} p + 2 \\bar{\\tau} p w} + A_\\mathrm{f} E_\\mathrm{f} & \\text{for}\\: L_{b} \\geq w \\\\0 & \\text{otherwise} \\end{cases}}{\\bar{\\tau} p}$" + ], + "text/plain": [ + " ⎛⎧ 0 \n", + " ⎜⎪ \n", + " ⎜⎪ \n", + " ⎜⎪ ______________ ______________ \n", + " ⎜⎪ √2⋅╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} â‹…\n", + "-⎜⎨ \n", + " ⎜⎪ \n", + " ⎜⎪ ______________ ______________ _____________________________________\n", + " ⎜⎪- ╲╱ A_\\mathrm{f} ⋅╲╱ E_\\mathrm{f} ⋅╲╱ A_\\mathrm{f}â‹…E_\\mathrm{f} - 2â‹…L_bâ‹…\\b\n", + " ⎜⎪ \n", + " âŽâŽ© 0 \n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \n", + "\n", + " for w\n", + " \n", + " 2 \n", + " ____________ L_b â‹…\n", + "╲╱ \\bar{\\tau} ⋅√p⋅√w for w ≤ ──────────\n", + " 2â‹…A_\\mathr\n", + " \n", + "______________________________ \n", + "ar{\\tau}â‹…p + 2â‹…\\bar{\\tau}â‹…pâ‹…w + A_\\mathrm{f}â‹…E_\\mathrm{f} for L_\n", + " \n", + " other\n", + "──────────────────────────────────────────────────────────────────────────────\n", + " \\bar{\\tau}â‹…p \n", + "\n", + " ≤ 0 ⎞ \n", + " ⎟ \n", + " ⎟ \n", + "\\bar{\\tau}â‹…p ⎟ \n", + "─────────────────⎟ \n", + "m{f}â‹…E_\\mathrm{f}⎟ \n", + " ⎟ \n", + " ⎟ \n", + "b ≥ w ⎟ \n", + " ⎟ \n", + "wise ⎠\n", + "───────────────────\n", + " " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "aw_pull_elastic = - (Pw_short / p / tau)\n", + "aw_pull_elastic" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "import traits.api as tr\n", + "\n", + "class PullOutShortFiber(tr.HasTraits):\n", + "\n", + " get_Pw_pull = sp.lambdify(sp_vars, Pw_short)\n", + " get_w_L_b = sp.lambdify(sp_vars, w_L_b)\n", + " get_aw_pull = sp.lambdify(sp_vars, aw_pull_elastic)\n", + "\n", + "# get_u_fa_x = sp.lambdify((x,) + sp_vars, u_fa_x.subs(P, Pw_pull_elastic))\n", + "# get_u_ma_x = sp.lambdify((x,) + sp_vars, u_ma_x.subs(P, Pw_pull_elastic))\n", + "# get_eps_f_x = sp.lambdify((x,) + sp_vars, eps_f_x.subs(P, Pw_pull_elastic))\n", + "# get_eps_m_x = sp.lambdify((x,) + sp_vars, eps_m_x.subs(P, Pw_pull_elastic))\n", + "# get_sig_f_x = sp.lambdify((x,) + sp_vars, sig_f_x.subs(P, Pw_pull_elastic))\n", + "# get_sig_m_x = sp.lambdify((x,) + sp_vars, sig_m_x.subs(P, Pw_pull_elastic))\n", + "# get_tau_x = sp.lambdify((x,) + sp_vars, tau_x.subs(P, Pw_pull_elastic))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e7981473f7e14d8ab6e7d011d2139ac1", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "5b4f709359994b58a2aac02bba7d388a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(HBox(children=(FloatSlider(value=1e-05, description='\\\\(t\\\\)', max=1.0, min=1e-05, step=0.05), …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "po = poui.ModelInteract(\n", + " models=[PullOutShortFiber],\n", + " py_vars=list(py_vars),\n", + " map_py2sp=map_py2sp\n", + ")\n", + "po.interact_geometry()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "15f7b0ceebc34de0b133876937e3f99e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d0efbb56d92147f9b3db6183af08d3e9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(HBox(children=(FloatSlider(value=1e-05, description='\\\\(t\\\\)', max=1.0, min=1e-05, step=0.05), …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ds = 0.15\n", + "po_paper = poui.ModelInteract(\n", + " models=[PullOutShortFiber],\n", + " py_vars=list(py_vars),\n", + " map_py2sp=map_py2sp,\n", + " w=.1, A_f=np.pi*(ds/2)**2, \n", + " E_f=200000, L_b=6, p=np.pi*ds, tau=6\n", + ")\n", + "po_paper.interact_geometry()" + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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hBmihw4dUs2bN1e9evWSxymnnKJOOumkgEeLFi3Uueeeq7799tu45gSDt1mzZmratGlqxowZcfUV6uLFixerK664QnR/7LHHQjWRY7NmzVLYBq9mzZph27j9xAcffKDOP//8iPNMxxxwb+vVq5etXnjPeUUQz0oPk1fuFvVs0KCBKlasGEGQAAmQQFIJJMwQLVy4sHrrrbdsZa+88kr1xRdf2I/OnTurCy+8UK1du1Z99dVXcU0qX7586vbbb4+rj0gXV6xYUW3evFnt27dP/f7772GbLlmyRC1cuFCtX79evf3222HbufkEjOlVq1ap9957z1VqYgu/zz//3HV6xQMJiR8///xzPF3wWhIgARIgARLIKAIJM0RBxfnrGZ6fChUq2I8nnnhCPfPMM+qee+5Rl1xySVwQEURftGjRuPqIdHG5cuVUy5YtIzWRc0iUgZcXS66HDx/Otn0qG0yfPj0qzh07dkylWmHH+uijj9SaNWvs83Xq1FH4QZBJ8scff6hff/01k6aU9rng/49CAiRAAiTgXQIJNUSdGO68884sVGrUqKGee+45Be+pkU2bNqnt27fLS+w6M3v2bIUvbMgvv/wir6+//nr19NNPK+x9HCzfffedtInkuQy+JrvXWPqPZgcc7DqCuWDrxvbt22fXbdTnly5dKnPCAwxild9++00NHz5cff3112rXrl2xXp7y9rj/1157rXrxxRftsbdu3ap27NihEPLx448/htVpy5YtYc+57QR+4NSvX99tanlanzlz5nhafypPAiRAAn4nkDdZAGbOnKnuvvtuu3ss/cLQGDlypEI2JowLGB/btm1TefPmFc/p7t275TViFh966CH16quvyrE8efKoiRMnSkwolsOdAk8aHognPP744+XUvffeqxAaAIFRCc/lihUrAq578sknFbxuEGy9iKSnl156SfXt21diPhE7GSxYVoUOEyZMsE8hCxqxf4gnNfL4448rGIMwxuGZfPfdd9Xpp5+uevbsKXOFkQXDGtcNGDBAIRbLCDKrYXgbA/Kcc85RL7zwgrrooovUX3/9JXNBolbjxo3VCSecoMAZUr16dQWvc6FChaR/kxiGhC4scccqiON988031fz58+VS3A+MaRivW7dOTZ48We4x+OEHARjfcMMNci+dglCMYI9xpUqVJI4YgjhP/PhAvO+QIUNUv379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94/a/0fgjz/+UNhvnkICJJAYAqtWrVK//fZbYjpLQi8wlE877bQk9MwuSYAEUkmAhmgqaXOspBH4+eef1YEDB5LWf047zp8/v8qXL19OL+d1JEACYQiUK1dOFS9ePMxZHiYBEvAKARqiXrlT1DMigfLly6uTTz45Ypt0nMT2niVLlkzH0ByTBEiABEiABFxPgIao628RFYyGAGLFvvvuu2iaprTNjh071J49e1I6JgcjARIgARIgAa8QoCHqlTtFPSMS2LJli9q9e3fENjxJAiQQPYFatWqxEkX0uNiSBEgghwRoiOYQHC9zF4FLL71U1a9f311KURsS8DCB/3Cu5xMAACAASURBVP3vf+rw4cMengFVJwES8AIBGqJeuEvUMVsC8+bNU19++WW27diABEggOgJ///23siwrusZpaIWwl19++SUNI3NIEiCBRBKgIZpImuwrbQSOHTum/vrrr7SNz4FJgARSS2D16tWujAtPLQWORgLeJ0BD1Pv3kDPQBE455RRVokQJsiABEvAJgRYtWqhq1ar5ZLacJglkLgEaopl7b301szp16qgqVar4as6cLAkkk4Dbd1bClr4FChRIJgL2TQIkkAICNERTAJlDkAAJkIDXCLh9ZyWv8aS+JEACoQnQEA3NhUddRgDxnyNHjlRr164N0Kx27dqyJI8vzY0bN7pMa6XgVapataqt15tvvuk6Hb2m0E033WSrvGzZMrV9+3avTcG1+pYuXTpAtx9++MF1umKDCOxWdvDgQYWtfSkkQALeJkBD1Nv3zzfav/POO+rBBx9UqG3YsWNH9c8//8jckSmPzNm9e/eqrVu3uo5HqVKlVLFixWy9Nm/e7DodvaZQ5cqVbZWxWYCb90P3Gtu77rorQOUXXnjBdVPA/z92Ufv000/Vpk2bXKcfFSIBEoiNAA3R2HixdZoItGrVShUsWFD9+++/6v3331djx46V5055/fXX06QdhyUBEiCBrARQzQPZ/bNnz856kkdIgASEAA1RvhE8QQBZ8VOnTlXHHXec6Nu1a1c1btw49fvvv9v6w2NKIQESSByBtm3bJq4zH/aEUCKED1199dUK3uYFCxbYFP788081efLkLD+ofYiJU/Y5ARqiPn8DeGn6KNfSq1cvW+XbbrtN3X333V6aAnUlAU8RqFu3rqf0dZuy5cqVUzVq1JDwkRdffFGN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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Does the reduction of w from maximum back to zero rrepresent unloading?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.2" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": { + "height": "calc(100% - 180px)", + "left": "10px", + "top": "150px", + "width": "282px" + }, + "toc_section_display": true, + "toc_window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/pull_out/CB_ELF_ELM_Symb.py b/pull_out/CB_ELF_ELM_Symb.py new file mode 100644 index 0000000000000000000000000000000000000000..fe497f8de8a4e9f5673dc1899553b5f7a7f0820e --- /dev/null +++ b/pull_out/CB_ELF_ELM_Symb.py @@ -0,0 +1,110 @@ + +import bmcs_utils.api as bu +import sympy as sp + + +class CB_ELF_ELM_Symb(bu.SymbExpr): + + E_m, A_m = sp.symbols(r'E_\mathrm{m}, A_\mathrm{m}', nonnegative=True) + E_f, A_f = sp.symbols(r'E_\mathrm{f}, A_\mathrm{f}', nonnegative=True) + tau, p = sp.symbols(r'\bar{\tau}, p', nonnegative=True) + C, D, E, F = sp.symbols('C, D, E, F') + P, w = sp.symbols('P, w') + x, a, L_b = sp.symbols('x, a, L_b') + + d_sig_f = p * tau / A_f + d_sig_m = -p * tau / A_m + + sig_f = sp.integrate(d_sig_f, x) + C + sig_m = sp.integrate(d_sig_m, x) + D + + eps_f = sig_f / E_f + eps_m = sig_m / E_m + + u_f = sp.integrate(eps_f, x) + E + u_m = sp.integrate(eps_m, x) + F + + eq_C = {P - sig_f.subs({x:0}) * A_f} + C_subs = sp.solve(eq_C,C) + eq_D = {sig_m.subs({x:0}) * A_m} + D_subs = sp.solve(eq_D,D) + + eqns_u_equal = {u_f.subs(C_subs).subs(x,a) - u_m.subs(D_subs).subs(x,a)} + E_subs = sp.solve(eqns_u_equal,E) + + eqns_eps_equal = {eps_f.subs(C_subs).subs(x,a) - eps_m.subs(D_subs).subs(x,a)} + + a_subs = sp.solve(eqns_eps_equal,a) + + var_subs = {**C_subs,**D_subs,**E_subs,**a_subs} + + u_f_x = sp.simplify( u_f.subs(var_subs) ) + u_m_x = sp.simplify( u_m.subs(var_subs) ) + + A_c = A_m + A_f + E_c = (E_m * A_m + E_f * A_f) / (A_c) + G = sp.symbols('G') + u_c_x_ = P / A_c / E_c * x + G + G_subs = sp.solve( u_c_x_.subs(x, -L_b), G)[0] + + u_c_x = sp.simplify(u_c_x_.subs(G, G_subs).subs(var_subs)) + u_c_a = sp.simplify( u_c_x.subs(x,var_subs[a]) ) + + F_sol = sp.simplify( sp.solve( u_m_x.subs(x, a_subs[a]) - u_c_a, F)[0] ) + u_mc_x = u_m_x.subs(F, F_sol) + u_fc_x = u_f_x.subs(F, F_sol) + + u_fa_x = sp.Piecewise((u_c_x, x <= var_subs[a]), + (u_fc_x, x > var_subs[a]) + ) + u_ma_x = sp.Piecewise((u_c_x, x <= var_subs[a]), + (u_mc_x, x > var_subs[a]), + ) + eps_f_x = sp.diff(u_fa_x,x) + eps_m_x = sp.diff(u_ma_x,x) + + sig_f_x = E_f * eps_f_x + sig_m_x = E_m * eps_m_x + + tau_x = sig_f_x.diff(x) * A_f / p + + eps_f_0 = P / E_f / A_f + eps_m_0 = -P / E_m / A_m + a_subs = sp.solve({P - p * tau * a}, a) + w_el = sp.Rational(1,2) * ( eps_f_0 - eps_m_0) * a + Pw_pull_ = sp.solve(w_el.subs(a_subs) - w, P)[1] + + w_L_b = u_fa_x.subs(x, -L_b).subs(P, Pw_pull_) + + aw_pull = a_subs[a].subs(P, Pw_pull_) + + P_max = p * tau * L_b + w_argmax = sp.solve(P_max - Pw_pull_, w)[0] + d_Pw_pull_dw = sp.diff(Pw_pull_, w) + K_c = sp.simplify(d_Pw_pull_dw.subs({w: w_argmax})) + + Pw_clamped = sp.Piecewise( + (Pw_pull_, w < w_argmax), + (P_max + K_c * (w - w_argmax), w >= w_argmax) + ) + + Pw_pull = Pw_clamped + + #------------------------------------------------------------------------- + # Declaration of the lambdified methods + #------------------------------------------------------------------------- + + symb_model_params = ['E_f', 'A_f', 'E_m', 'A_m', 'tau', 'p', 'L_b'] + + symb_expressions = [ + ('eps_f_x', ('x','P',)), + ('eps_m_x', ('x','P',)), + ('sig_f_x', ('x','P',)), + ('sig_m_x', ('x','P',)), + ('tau_x', ('x','P',)), + ('u_fa_x', ('x','P',)), + ('u_ma_x', ('x','P',)), + ('w_L_b', ('w',)), + ('aw_pull', ('w',)), + ('Pw_pull', ('w',)), + ] diff --git a/pull_out/bmcs_pullout_ui.py b/pull_out/bmcs_pullout_ui.py new file mode 100755 index 0000000000000000000000000000000000000000..65ba3ead2f59bbde7cc6dde032168770cb18571f --- /dev/null +++ b/pull_out/bmcs_pullout_ui.py @@ -0,0 +1,335 @@ +import numpy as np + +def plot_filled_var(ax, xdata, ydata, xlabel='', ylabel='', + color='black', alpha=0.1, ylim=None, xlim=None): + line, = ax.plot(xdata, ydata, color=color); + if xlabel: + ax.set_xlabel(xlabel); + if ylabel: + ax.set_ylabel(ylabel) + if ylim: + ax.set_ylim(*ylim) + if xlim: + ax.set_xlim(*xlim) + ax.fill_between(xdata, ydata, color=color, alpha=alpha); + return line + +def clear_plot(*axs): + for ax in axs: + ax.collections.clear() + +def update_filled_plot(ax, line, xdata, ydata, color='green', alpha=0.1): + line.set_ydata(ydata) + line.set_xdata(xdata) + ax.set_xlim(np.min(xdata), np.max(xdata)) + ax.fill_between(xdata, ydata, 0, color=color, alpha=alpha) + +import ipywidgets as ipw +import traits.api as tr +import matplotlib.pyplot as plt + +class PlotModel(tr.HasTraits): + itr = tr.WeakRef + + model = tr.Type + + def init_fields(self, *params): + model = self.model + itr = self.itr + eps_max = model.get_eps_f_x(0,itr.w_max,*params) + eps_min = model.get_eps_m_x(0,itr.w_max,*params) + tau_max = float(itr.tau * 2) + x_range = itr.x_range + w_max = itr.w_max + L_b = itr.L_b + self.line_u_f = plot_filled_var( + itr.ax_u, x_range, + model.get_u_fa_x(x_range,0,*params), + color='brown', alpha=0.2 + ) + + self.line_u_m = plot_filled_var( + itr.ax_u, x_range, + model.get_u_ma_x(x_range,0,*params), + xlabel='$x$ [mm]', ylabel='$u$ [mm]', + color='black', alpha=0.2, + ylim=(0, w_max), xlim=(-L_b,0) + ) + + self.line_eps_f = plot_filled_var( + itr.ax_eps, x_range, + model.get_eps_m_x(x_range, 0,*params), + xlabel='$x$ [mm]', ylabel=r'$\varepsilon$ [mm]', color='green', + ylim=(eps_min, eps_max), xlim=(-L_b,0) + ) + + self.line_eps_m = plot_filled_var( + itr.ax_eps, x_range, + model.get_eps_f_x(x_range, 0,*params), + xlabel='$x$ [mm]', ylabel=r'$\varepsilon$ [mm]', color='green', + ylim=(eps_min, eps_max), xlim=(-L_b,0) + ) + + self.line_tau = plot_filled_var( + itr.ax_tau, x_range, + model.get_tau_x(x_range, 0,*params), + xlabel='$x$ [mm]', ylabel=r'$\tau$ [MPa]', color='red', + ylim=(0, tau_max), xlim=(-L_b,0) + ) + + def update_fields(self, w, *params): + model = self.model + itr = self.itr + x_range = itr.x_range + u_ma_x = model.get_u_ma_x(x_range,w,*params) + u_fa_x = model.get_u_fa_x(x_range,w,*params) + self.u_max = u_fa_x[-1] + self.u_min = u_ma_x[-1] + eps_f_x = model.get_eps_f_x(x_range, w,*params) + eps_m_x = model.get_eps_m_x(x_range, w,*params) + self.eps_max = eps_f_x[-1] + self.eps_min = eps_m_x[-1] + tau_x = model.get_tau_x(x_range, w,*params) + update_filled_plot(itr.ax_u, self.line_u_f, x_range, u_fa_x, + color='brown', alpha=0.2) + update_filled_plot(itr.ax_u, self.line_u_m, x_range, u_ma_x, + color='black', alpha=0.2) + update_filled_plot(itr.ax_eps, self.line_eps_m, x_range, eps_m_x, + color='green') + update_filled_plot(itr.ax_eps, self.line_eps_f, x_range, eps_f_x, + color='green') + update_filled_plot(itr.ax_tau, self.line_tau, x_range, tau_x, + color='red') + + def init_Pw(self, *params): + model = self.model + itr = self.itr + model = self.model + w_range = itr.w_range + self.line_po = plot_filled_var(itr.ax_po, w_range, + model.get_Pw_pull(w_range, *params), + xlabel=r'$w$ [mm]', ylabel=r'$P$ [N]', color='blue') + w_L_b_range = model.get_w_L_b(w_range, *params) + self.line_po_Lb = plot_filled_var(itr.ax_po, w_L_b_range, + model.get_Pw_pull(w_range, *params), + color='orange', alpha=0.05) + self.Pw_marker, = itr.ax_po.plot(0,0,marker='o', color='blue') + self.Pw_marker_Lb, = itr.ax_po.plot(0,0,marker='o', color='orange') + + def update_Pw(self, w, *params): + model = self.model + itr = self.itr + w_range = itr.w_range + w_L_b_current = model.get_w_L_b(w, *params) + w_L_b_range = model.get_w_L_b(w_range, *params) + Pw = model.get_Pw_pull(w_range, *params) + self.P_max = np.max(Pw) + update_filled_plot(itr.ax_po, self.line_po, w_range, Pw, + color='blue', alpha=0.1) + update_filled_plot(itr.ax_po, self.line_po_Lb, w_L_b_range, Pw, + color='orange', alpha=0.05) + + P = model.get_Pw_pull(w, *params) + self.Pw_marker.set_ydata(P) + self.Pw_marker.set_xdata(w) + self.Pw_marker_Lb.set_ydata(P) + self.Pw_marker_Lb.set_xdata(w_L_b_current) + +class ModelInteract(tr.HasTraits): + + models = tr.List([ + ]) + + py_vars = tr.List(tr.Str) + map_py2sp = tr.Dict + + d = tr.Float(0.03, GEO=True) + h = tr.Float(0.8, GEO=True) + + # define the free parameters as traits with default, min and max values + w_max = tr.Float(1.0) + t = tr.Float(0.0001, min=1e-5, max=1) + tau = tr.Float(0.5, interact=True) + L_b = tr.Float(200, interact=True) + E_f = tr.Float(100000, interact=True) + A_f = tr.Float(20, interact=True) + p = tr.Float(40, interact=True) + E_m = tr.Float(26000, interact=True) + A_m = tr.Float(100, interact=True) + + n_steps = tr.Int(50) + + sliders = tr.Property + @tr.cached_property + def _get_sliders(self): + traits = self.traits(interact=True) + vals = self.trait_get(interact=True) + slider_names = self.py_vars[1:] + max_vals = {name : getattr(traits,'max', vals[name] * 2) + for name in slider_names} + t_slider = {'t': ipw.FloatSlider(1e-5, min=1e-5, max=1, step=0.05, + description=r'\(t\)')} + param_sliders = { name : ipw.FloatSlider(value=vals[name], + min=1e-5, + max=max_vals[name], + step=max_vals[name] / self.n_steps, + description=r'\(%s\)' % self.map_py2sp[name].name) + for (name, trait) in traits.items() + } + t_slider.update(param_sliders) + return t_slider + + w_range = tr.Property(tr.Array(np.float_), depends_on='w_max') + @tr.cached_property + def _get_w_range(self): + return np.linspace(0,self.w_max,50) + + x_range = tr.Property(tr.Array(np.float_), depends_on='L_b') + @tr.cached_property + def _get_x_range(self): + return np.linspace(-self.L_b,0,100) + + model_plots = tr.Property(tr.List) + @tr.cached_property + def _get_model_plots(self): + return [PlotModel(itr=self, model=m) for m in self.models ] + + def init_fields(self): + self.fig, ((self.ax_po, self.ax_u),(self.ax_eps, self.ax_tau)) = plt.subplots( + 2,2,figsize=(9,5), tight_layout=True + ) + values = self.trait_get(interact=True) + params = list( values[py_var] for py_var in self.py_vars[1:]) + for mp in self.model_plots: + mp.init_fields(*params) + mp.init_Pw(*params) + self.ax_po.set_xlim(0, self.w_max*1.05) + + def clear_fields(self): + clear_plot(self.ax_po, self.ax_u, self.ax_eps,self.ax_tau) + + def update_fields(self, t, **values): + w = t * self.w_max + self.trait_set(**values) + params = list( values[py_var] for py_var in self.py_vars[1:]) + L_b = self.L_b + self.clear_fields() + for mp in self.model_plots: + mp.update_fields(w, *params) + mp.update_Pw(w, *params) + + P_max = np.max(np.array([m.P_max for m in self.model_plots])) + self.ax_po.set_ylim(0, P_max*1.05) + self.ax_po.set_xlim(0, self.w_max*1.05) + u_min = np.min(np.array([m.u_min for m in self.model_plots])) + u_max = np.max(np.array([m.u_max for m in self.model_plots] + [1])) + self.ax_u.set_ylim(u_min, u_max*1.1) + self.ax_u.set_xlim(xmin=-1.05*L_b, xmax=0.05*L_b ) + eps_min = np.min(np.array([m.eps_min for m in self.model_plots])) + eps_max = np.max(np.array([m.eps_max for m in self.model_plots])) + self.ax_eps.set_ylim(eps_min, eps_max*1.1) + self.ax_eps.set_xlim(xmin=-1.05*L_b, xmax=0.05*L_b ) + self.ax_tau.set_ylim(0, self.tau*1.1) + self.ax_tau.set_xlim(xmin=-1.05*L_b, xmax=0.05*L_b ) + self.fig.canvas.draw_idle() + + def set_w_max_fields(self, w_max): + self.w_max = w_max + values = {name: slider.value for name, slider in self.sliders.items()} + self.update_fields(**values) + + def interact_fields(self): + self.init_fields() + self.on_w_max_change = self.update_fields + sliders = self.sliders + out = ipw.interactive_output(self.update_fields, sliders); + self.widget_layout(out) + + #=========================================================================== + # Interaction on the pull-out curve spatial plot + #=========================================================================== + def init_geometry(self): + self.fig, (self.ax_po, self.ax_geo) = plt.subplots(1,2,figsize=(8,3.4)) #, tight_layout=True) + values = self.trait_get(interact=True) + params = list( values[py_var] for py_var in self.py_vars[1:]) + h=self.h + d=self.d + x_C = np.array([[-1, 0], [0,0],[0, h], [-1, h]], dtype=np.float_) + self.line_C, = self.ax_geo.fill(*x_C.T, color='gray', alpha=0.3) + for mp in self.model_plots: + mp.line_aw, = self.ax_geo.fill([],[], color='white', alpha=1) + mp.line_F, = self.ax_geo.fill([],[], color='black', alpha=0.8) + mp.line_F0, = self.ax_geo.fill([],[], color='white', alpha=1) + mp.init_Pw(*params) + self.ax_po.set_xlim(0, self.w_max*1.05) + + def clear_geometry(self): + clear_plot(self.ax_po, self.ax_geo) + + def update_geometry(self, t, **values): + w = t * self.w_max + self.clear_geometry() + self.trait_set(**values) + params = list( values[py_var] for py_var in self.py_vars[1:]) + h = self.h + d = self.d + L_b = self.L_b + f_top = h / 2 + d / 2 + f_bot = h / 2 - d / 2 + self.ax_geo.set_xlim(xmin=-1.05*L_b, xmax=max( 0.05*L_b, 1.1*self.w_max) ) + x_C = np.array([[-L_b, 0], [0,0],[0, h], [-L_b, h]], dtype=np.float_) + self.line_C.set_xy(x_C) + for mp in self.model_plots: + a_val = mp.model.get_aw_pull(w, *params) + width = d * 0.5 + x_a = np.array([[a_val, f_bot-width],[0, f_bot-width], + [0,f_top+width],[a_val, f_top+width]], + dtype=np.float_) + mp.line_aw.set_xy(x_a) + + w_L_b = mp.model.get_w_L_b(w, *params) + x_F = np.array([[-L_b+w_L_b, f_bot],[w,f_bot], + [w,f_top],[-L_b+w_L_b,f_top]], dtype=np.float_) + mp.line_F.set_xy(x_F) + x_F0 = np.array([[-L_b, f_bot],[-L_b+w_L_b,f_bot], + [-L_b+w_L_b,f_top],[-L_b,f_top]], dtype=np.float_) + mp.line_F0.set_xy(x_F0) + + mp.update_Pw(w, *params) + + P_max = np.max(np.array([mp.P_max for mp in self.model_plots])) + self.ax_po.set_ylim(0, P_max*1.1) + self.ax_po.set_xlim(0, self.w_max*1.05) + self.fig.canvas.draw_idle() + + def set_w_max(self, w_max): + self.w_max = w_max + values = {name: slider.value for name, slider in self.sliders.items()} + self.on_w_max_change(**values) + + on_w_max_change = tr.Callable + + def interact_geometry(self): + self.init_geometry() + self.on_w_max_change = self.update_geometry + sliders = self.sliders + out = ipw.interactive_output(self.update_geometry, sliders); + self.widget_layout(out) + + def widget_layout(self, out): + sliders = self.sliders + layout = ipw.Layout(grid_template_columns='1fr 1fr') + param_sliders_list = [sliders[py_var] for py_var in self.py_vars[1:]] + t_slider = sliders['t'] + grid = ipw.GridBox(param_sliders_list, layout=layout) + w_max_text = ipw.FloatText( + value=self.w_max, + description=r'w_max', + disabled=False + ) + out_w_max = ipw.interactive_output(self.set_w_max, + {'w_max':w_max_text}) + + hbox = ipw.HBox([t_slider, w_max_text]) + box = ipw.VBox([hbox, grid, out, out_w_max]) + display(box) diff --git a/pull_out/pull_out.ipynb b/pull_out/pull_out.ipynb index b869dffdbc7a3b50476d1ed552a848b9ff4e2e5a..1dfd28a1746c9ee94e1ee5f2226ed2eea0c12df4 100644 --- a/pull_out/pull_out.ipynb +++ b/pull_out/pull_out.ipynb @@ -2,29 +2,64 @@ "cells": [ { "cell_type": "markdown", - "id": "recognized-integer", + "id": "plastic-overview", "metadata": {}, "source": [ - "# Pull-out, Push-in" + "# Pull-out" ] }, { "cell_type": "markdown", - "id": "moral-nerve", + "id": "hungarian-humor", "metadata": {}, "source": [ - "## Constant bond-slip law\n", + "# How to derive a pull-out model given a constant bond-slip law\n", "\n", - "- [J0201 - Pull-out of long fiber from rigid matrix](2_1_PO_LF_LM_RG.ipynb)\n", - "- [J0202 - Pull-out of long fiber from long elastic matrix](2_2_PO_LF_LM_EL.ipynb)\n", - "- [J0203 - Pull-out of short fiber from rigid matrix](2_3_PO_SF_M_RG.ipynb)\n", - "- [J0204 - Comparison of several models](2_4_PO_comparison.ipynb)\n" + "- [J0201 - Pull-out of long fiber from rigid matrix](2_1_PO_ELF_RLM.ipynb)\n", + "- [J0202 - Pull-out of long fiber from long elastic matrix](2_2_PO_ELF_ELM.ipynb)\n", + "- [J0203 - Pull-out of short fiber from rigid matrix](2_3_PO_ESF_RM.ipynb)\n" + ] + }, + { + "cell_type": "markdown", + "id": "binding-circular", + "metadata": {}, + "source": [ + "# Exercises" + ] + }, + { + "cell_type": "markdown", + "id": "sharing-product", + "metadata": {}, + "source": [ + "- Identify the material parameters fitting the blue curves in the pullout response\n", + "- Find a bond length at which the reinforcement bar fails\n", + "- Identify the distance at which matrix crack would appear" + ] + }, + { + "cell_type": "markdown", + "id": "suffering-theorem", + "metadata": {}, + "source": [ + "# Exam questions\n", + "\n", + "Understanding of the relation between $P$ and $\\tau(x)$ and between $w$ and $\\varepsilon(x)$.\n", + "\n", + " 1. What is the meaning of the green area?\n", + " 2. What is the meaning of the red area?\n", + " 3. What is the meaning of the slope of the green curve?\n", + " 4. Is it possible to reproduce the shown RILEM test response using this \"frictional\" model?\n", + " 4. What is the role of debonded length $a$ in view of general non-linear simulation?\n", + " 5. When does the pull-out fail?\n", + " 5. What happends with $a$ upon unloading?" ] }, { "cell_type": "code", "execution_count": null, - "id": "constant-injection", + "id": "ambient-ambassador", "metadata": {}, "outputs": [], "source": [] @@ -46,7 +81,20 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.3" + "version": "3.9.1" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, diff --git a/pull_out/pull_out.py b/pull_out/pull_out.py new file mode 100644 index 0000000000000000000000000000000000000000..e1d0b36dd488e0618103d322fb853a1e9afff8a8 --- /dev/null +++ b/pull_out/pull_out.py @@ -0,0 +1,378 @@ + + +import bmcs_utils.api as bu +import numpy as np +import sympy as sp +import traits.api as tr + +class PO_ELF_RLM_Symb(bu.SymbExpr): + """Pullout of elastic Long fiber, fromm rigid long matrix + """ + E_f, A_f = sp.symbols(r'E_\mathrm{f}, A_\mathrm{f}', positive=True) + E_m, A_m = sp.symbols(r'E_\mathrm{m}, A_\mathrm{m}', positive=True) + tau, p = sp.symbols(r'\bar{\tau}, p', positive=True) + C, D = sp.symbols(r'C, D') + P, w = sp.symbols(r'P, w', positive=True) + x, a, L_b = sp.symbols(r'x, a, L_b') + + d_sig_f = p * tau / A_f + + sig_f = sp.integrate(d_sig_f, x) + C + eps_f = sig_f / E_f + + u_f = sp.integrate(eps_f, x) + D + + eq_C = {P - sig_f.subs({x:0}) * A_f} + C_subs = sp.solve(eq_C,C) + + eqns_D = {u_f.subs(C_subs).subs(x, a)} + D_subs = sp.solve(eqns_D, D) + + u_f.subs(C_subs).subs(D_subs) + eqns_a = {eps_f.subs(C_subs).subs(D_subs).subs(x, a)} + a_subs = sp.solve(eqns_a, a) + + var_subs = {**C_subs,**D_subs,**a_subs} + + u_f_x = u_f.subs(var_subs) + + u_fa_x = sp.Piecewise((u_f_x, x > var_subs[a]), + (0, x <= var_subs[a])) + + eps_f_x = sp.diff(u_fa_x,x) + + sig_f_x = E_f * eps_f_x + + tau_x = sp.simplify(sig_f_x.diff(x) * A_f / p) + + u_f_x.subs(x, 0) - w + + Pw_pull = sp.solve(u_f_x.subs({x: 0}) - w, P)[0] + + w_L_b = u_fa_x.subs(x, -L_b).subs(P, Pw_pull) + + aw_pull = a_subs[a].subs(P, Pw_pull) + + eps_m_x = eps_f_x * 1e-8 + sig_m_x = sig_f_x * 1e-8 + u_ma_x = u_fa_x * 1e-8 + #------------------------------------------------------------------------- + # Declaration of the lambdified methods + #------------------------------------------------------------------------- + + symb_model_params = ['E_f', 'A_f', 'tau', 'p', 'L_b'] + + symb_expressions = [ + ('eps_f_x', ('x','P',)), + ('eps_m_x', ('x','P',)), + ('sig_f_x', ('x','P',)), + ('sig_m_x', ('x','P',)), + ('tau_x', ('x','P',)), + ('u_fa_x', ('x','P',)), + ('u_ma_x', ('x','P',)), + ('w_L_b', ('w',)), + ('aw_pull', ('w',)), + ('Pw_pull', ('w',)), + ] + +class PO_ELF_ELM_Symb(bu.SymbExpr): + """Pullout of elastic Long fiber, fromm elastic long matrix + """ + E_m, A_m = sp.symbols(r'E_\mathrm{m}, A_\mathrm{m}', nonnegative=True) + E_f, A_f = sp.symbols(r'E_\mathrm{f}, A_\mathrm{f}', nonnegative=True) + tau, p = sp.symbols(r'\bar{\tau}, p', nonnegative=True) + C, D, E, F = sp.symbols('C, D, E, F') + P, w = sp.symbols('P, w') + x, a, L_b = sp.symbols('x, a, L_b') + + d_sig_f = p * tau / A_f + d_sig_m = -p * tau / A_m + + sig_f = sp.integrate(d_sig_f, x) + C + sig_m = sp.integrate(d_sig_m, x) + D + + eps_f = sig_f / E_f + eps_m = sig_m / E_m + + u_f = sp.integrate(eps_f, x) + E + u_m = sp.integrate(eps_m, x) + F + + eq_C = {P - sig_f.subs({x: 0}) * A_f} + C_subs = sp.solve(eq_C, C) + eq_D = {P + sig_m.subs({x: 0}) * A_m} + D_subs = sp.solve(eq_D, D) + + F_subs = sp.solve({u_m.subs(x, 0) - 0}, F) + + eqns_u_equal = {u_f.subs(C_subs).subs(x, a) - u_m.subs(D_subs).subs(F_subs).subs(x, a)} + E_subs = sp.solve(eqns_u_equal, E) + + eqns_eps_equal = {eps_f.subs(C_subs).subs(x, a) - eps_m.subs(D_subs).subs(x, a)} + a_subs = sp.solve(eqns_eps_equal, a) + var_subs = {**C_subs, **D_subs, **F_subs, **E_subs, **a_subs} + + u_f_x = u_f.subs(var_subs) + u_m_x = u_m.subs(var_subs) + + u_fa_x = sp.Piecewise((u_f_x.subs(x, var_subs[a]), x <= var_subs[a]), + (u_f_x, x > var_subs[a])) + u_ma_x = sp.Piecewise((u_m_x.subs(x, var_subs[a]), x <= var_subs[a]), + (u_m_x, x > var_subs[a])) + + eps_f_x = sp.diff(u_fa_x, x) + eps_m_x = sp.diff(u_ma_x, x) + + sig_f_x = E_f * eps_f_x + sig_m_x = E_m * eps_m_x + + tau_x = sig_f_x.diff(x) * A_f / p + + eps_f_0 = P / E_f / A_f + eps_m_0 = -P / E_m / A_m + a_subs = sp.solve({P - p * tau * a}, a) + w_el = sp.Rational(1, 2) * (eps_f_0 - eps_m_0) * a + Pw_pull_elastic = sp.solve(w_el.subs(a_subs) - w, P)[1] + + Pw_push, Pw_pull = sp.solve(u_f_x.subs({x: 0}) - w, P) + + w_L_b = u_fa_x.subs(x, -L_b).subs(P, Pw_pull) + + aw_pull = a_subs[a].subs(P, Pw_pull) + + #------------------------------------------------------------------------- + # Declaration of the lambdified methods + #------------------------------------------------------------------------- + + symb_model_params = ['E_f', 'A_f', 'E_m', 'A_m', 'tau', 'p', 'L_b'] + + symb_expressions = [ + ('eps_f_x', ('x','P',)), + ('eps_m_x', ('x','P',)), + ('sig_f_x', ('x','P',)), + ('sig_m_x', ('x','P',)), + ('tau_x', ('x','P',)), + ('u_fa_x', ('x','P',)), + ('u_ma_x', ('x','P',)), + ('w_L_b', ('w',)), + ('aw_pull', ('w',)), + ('Pw_pull', ('w',)), + ] + +class PO_ESF_RLM_Symb(bu.SymbExpr): + + E_f, A_f = sp.symbols(r'E_\mathrm{f}, A_\mathrm{f}', positive=True) + E_m, A_m = sp.symbols(r'E_\mathrm{m}, A_\mathrm{m}', positive=True) + tau, p = sp.symbols(r'\bar{\tau}, p', positive=True) + C, D = sp.symbols(r'C, D') + P, w = sp.symbols(r'P, w', positive=True) + x, a, L_b = sp.symbols(r'x, a, L_b') + + d_sig_f = p * tau / A_f + + sig_f = sp.integrate(d_sig_f, x) + C + eps_f = sig_f / E_f + + u_f = sp.integrate(eps_f, x) + D + + eq_C = {P - sig_f.subs({x:0}) * A_f} + C_subs = sp.solve(eq_C,C) + + eqns_D = {u_f.subs(C_subs).subs(x, a)} + D_subs = sp.solve(eqns_D, D) + + u_f.subs(C_subs).subs(D_subs) + eqns_a = {eps_f.subs(C_subs).subs(D_subs).subs(x, a)} + a_subs = sp.solve(eqns_a, a) + + var_subs = {**C_subs,**D_subs,**a_subs} + + u_f_x = u_f.subs(var_subs) + + u_fa_x = sp.Piecewise((u_f_x, x > var_subs[a]), + (0, x <= var_subs[a])) + + eps_f_x = sp.diff(u_fa_x,x) + + sig_f_x = E_f * eps_f_x + + tau_x = sp.simplify(sig_f_x.diff(x) * A_f / p) + + u_f_x.subs(x, 0) - w + + Pw_pull = sp.solve(u_f_x.subs({x: 0}) - w, P)[0] + + w_L_b = u_fa_x.subs(x, -L_b).subs(P, Pw_pull) + + aw_pull = a_subs[a].subs(P, Pw_pull) + + eps_m_x = eps_f_x * 1e-8 + sig_m_x = sig_f_x * 1e-8 + u_ma_x = u_fa_x * 1e-8 + + P_max = p * tau * L_b + w_argmax = sp.solve(P_max - Pw_pull, w)[0] + Pw_up_pull = Pw_pull + b, P_down = sp.symbols(r'b, P_\mathrm{down}') + sig_down = P_down / A_f + eps_down = 1 / E_f * sig_down + w_down = (L_b + b) - sp.Rational(1, 2) * eps_down * b + Pw_down_pull, Pw_down_push = sp.solve( + w_down.subs(b, -P_down / p / tau) - w, + P_down + ) + Pw_short = sp.Piecewise((0, w <= 0), + (Pw_up_pull, w <= w_argmax), + (Pw_down_pull, w <= L_b), + (0, True) + ) + w_L_b_a = L_b - Pw_down_pull / p / tau + w_L_b = sp.Piecewise((0, w <= w_argmax), + (w_L_b_a, (w > w_argmax) & (w <= L_b)), + (w, True)) + aw_pull = - (Pw_short / p / tau) + Pw_pull = Pw_short + + #------------------------------------------------------------------------- + # Declaration of the lambdified methods + #------------------------------------------------------------------------- + + symb_model_params = ['E_f', 'A_f', 'E_m', 'A_m', 'tau', 'p', 'L_b'] + + symb_expressions = [ + ('eps_f_x', ('x','P',)), + ('eps_m_x', ('x','P',)), + ('sig_f_x', ('x','P',)), + ('sig_m_x', ('x','P',)), + ('tau_x', ('x','P',)), + ('u_fa_x', ('x','P',)), + ('u_ma_x', ('x','P',)), + ('w_L_b', ('w',)), + ('aw_pull', ('w',)), + ('Pw_pull', ('w',)), + ] + +class PullOutAModel(bu.Model, bu.InjectSymbExpr): + """ + General pullout elastic long fiber and rigid long matrix + """ + symb_class = PO_ELF_RLM_Symb + + name = "Pull-Out" + + E_f = bu.Float(210000, MAT=True) + E_m = bu.Float(28000, MAT=True) + tau = bu.Float(8, MAT=True) + A_f = bu.Float(100, CS=True) + A_m = bu.Float(100*100, CS=True) + p = bu.Float(20, CS=True) + L_b = bu.Float(300, GEO=True) + w_max = bu.Float(3, BC=True) + + t = bu.Float(0.0) + t_max = bu.Float(1.0) + + ipw_view = bu.View( + bu.Item('E_f', latex=r'E_\mathrm{f}~[\mathrm{MPa}]'), + bu.Item('E_m', latex=r'E_\mathrm{m}~[\mathrm{MPa}]'), + bu.Item('tau', latex=r'\tau~[\mathrm{MPa}]'), + bu.Item('A_f', latex=r'A_\mathrm{f}~[\mathrm{mm}^2]'), + bu.Item('A_m', latex=r'A_\mathrm{m}~[\mathrm{mm}^2]'), + bu.Item('p', latex=r'p~[\mathrm{mm}]'), + bu.Item('L_b', latex=r'L_\mathrm{b}~[\mathrm{mm}]'), + bu.Item('w_max', latex=r'w_\max~[\mathrm{mm}]'), + time_editor = bu.HistoryEditor( + var='t', + var_max='t_max' + ) + ) + + w_range = tr.Property(depends_on='state_changed') + """Pull-out range w""" + @tr.cached_property + def _get_w_range(self): + return np.linspace(0, self.w_max, 100) + + def plot_fields(self, ax11, ax12, ax21, ax22): + L_b = self.L_b + x_range = np.linspace(-L_b, 0, 100) + w_max = self.w_max + w = self.t * w_max + P = self.symb.get_Pw_pull(w) + eps_f_range = self.symb.get_eps_f_x(x_range, P) + sig_f_range = self.symb.get_sig_f_x(x_range, P) + u_f_range = self.symb.get_u_fa_x(x_range, P) + eps_m_range = self.symb.get_eps_m_x(x_range, P) + sig_m_range = self.symb.get_sig_m_x(x_range, P) + u_m_range = self.symb.get_u_ma_x(x_range, P) + tau_range = self.symb.get_tau_x(x_range, P) + + P_max = self.symb.get_Pw_pull(w_max) + eps_max = np.max(self.symb.get_eps_f_x(x_range, P_max)) + sig_max = np.max(self.symb.get_sig_f_x(x_range, P_max)) + u_max = np.max(self.symb.get_u_fa_x(x_range, P_max)) + eps_min = np.min(self.symb.get_eps_m_x(x_range, P_max)) + sig_min = np.min(self.symb.get_sig_m_x(x_range, P_max)) + u_min = np.min(self.symb.get_u_ma_x(x_range, P_max)) + tau_max = self.symb.get_tau_x(0, P_max) + + ax11.plot(x_range, eps_f_range, color='blue') + ax11.plot(x_range, eps_m_range, color='blue', linestyle='dashed') + ax11.fill_between(x_range, eps_f_range, 0, color='blue', alpha=0.1) + ax11.fill_between(x_range, eps_m_range, 0, color='blue', alpha=0.3) + ax11.set_xlabel(r'$x$ [mm]') + ax11.set_ylabel(r'$\varepsilon$ [-]') + ax11.set_ylim(ymin=eps_min,ymax=eps_max) + + ax21.plot(x_range, sig_f_range, color='green') + ax21.plot(x_range, sig_m_range, color='green', linestyle='dashed') + ax21.fill_between(x_range, sig_f_range, 0, alpha=0.1, color='green') + ax21.fill_between(x_range, sig_m_range, 0, alpha=0.3, color='green') + ax21.set_xlabel(r'$x$ [mm]') + ax21.set_ylabel(r'$\sigma$ [MPa]') + ax21.set_ylim(ymin=sig_min,ymax=sig_max) + + disp_color='black' + ax12.plot(x_range, u_f_range, color=disp_color) + ax12.plot(x_range, u_m_range, color=disp_color, linestyle='dashed') + ax12.fill_between(x_range, u_f_range, 0, alpha=0.1, color=disp_color) + ax12.fill_between(x_range, u_m_range, 0, alpha=0.3, color=disp_color) + ax12.set_xlabel(r'$x$ [mm]') + ax12.set_ylabel(r'$u$ [mm]') + ax12.set_ylim(ymin=u_min,ymax=u_max) + + ax22.plot(x_range, tau_range, color='red') + ax22.fill_between(x_range, tau_range, 0, alpha=0.1, color='red') + ax22.set_xlabel(r'$x$ [mm]') + ax22.set_ylabel(r'$\tau$ [MPa]') + ax22.set_ylim(ymin=0,ymax=1.5*tau_max) + + def plot_Pw(self, ax): + w = self.t * self.w_max + P = 0.001*self.symb.get_Pw_pull(w) + w_L_b = self.symb.get_w_L_b(w) + ax.plot(w,P,marker='o', color='blue') + ax.plot(w_L_b,P,marker='o', color='blue') + + P_range = self.symb.get_Pw_pull(self.w_range) + w_L_b_range = self.symb.get_w_L_b(self.w_range) + ax.plot(self.w_range, P_range * 0.001, color='blue', label=r'$w(0)$') + ax.plot(w_L_b_range, P_range * 0.001, color='blue', linestyle='dashed', + label=r'$w(L_\mathrm{b})$') + ax.set_ylabel(r'$P$ [kN]') + ax.set_xlabel(r'$w$ [mm]') + ax.legend() + + def subplots(self, fig): + gs = fig.add_gridspec(1,2, width_ratios=[2., 1.]) + ax1 = fig.add_subplot(gs[0]) + gs2 = gs[1].subgridspec(2, 1) + ax2 = fig.add_subplot(gs2[0]) + ax22 = ax2.twinx() + ax3 = fig.add_subplot(gs2[1]) + ax33 = ax3.twinx() + return ax1, ax2, ax22, ax3, ax33 + + def update_plot(self, axes): + ax, ax2, ax22, ax3, ax33 = axes + self.plot_Pw(ax) + self.plot_fields(ax2, ax22, ax3, ax33) \ No newline at end of file diff --git a/tension/fragmentation.ipynb b/tension/fragmentation.ipynb index bcb9c1c798f228342547f04bff3f569e2e21cd12..8dbab71db0bcc833bb03d9e0777551c537c18c64 100644 --- a/tension/fragmentation.ipynb +++ b/tension/fragmentation.ipynb @@ -2,8 +2,8 @@ "cells": [ { "cell_type": "code", - "execution_count": 4, - "id": "miniature-power", + "execution_count": 2, + "id": "prime-protocol", "metadata": {}, "outputs": [], "source": [ @@ -13,8 +13,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "oriental-ordinance", + "execution_count": 3, + "id": "union-agriculture", "metadata": {}, "outputs": [], "source": [ @@ -23,14 +23,14 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "complimentary-european", + "execution_count": 4, + "id": "fallen-frederick", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b43db16707024448bf2efb4919a94fc9", + "model_id": "834752290e104f5586ad7392a14c56ae", "version_major": 2, "version_minor": 0 }, @@ -49,7 +49,7 @@ { "cell_type": "code", "execution_count": null, - "id": "complicated-christmas", + "id": "historical-sixth", "metadata": {}, "outputs": [], "source": [] @@ -57,9 +57,9 @@ ], "metadata": { "kernelspec": { - "display_name": "bmcs_env", + "display_name": "base", "language": "python", - "name": "bmcs_env" + "name": "base" }, "language_info": { "codemirror_mode": { @@ -71,7 +71,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.2" + "version": "3.9.1" } }, "nbformat": 4,