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 c14da7a638efb598d38ac45ade61e6d36c684ba2..8c23489eb65bbbb8796eb0ac4a75d53b6a1b306e 100644 --- a/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb +++ b/bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb @@ -16,6 +16,8 @@ "source": [ "# Example: Calculate elastic stiffness of a given composite\n", "\n", + "[Video explaining the theory](https://moodle.rwth-aachen.de/mod/page/view.php?id=551801)\n", + "\n", "## Task\n", "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", @@ -124,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -139,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -148,7 +150,7 @@ "37082.18859138533" ] }, - "execution_count": 9, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -193,7 +195,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -209,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -231,7 +233,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -269,7 +271,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -281,7 +283,7 @@ "(A_r*E_car*n_l - E_c*(A_r*n_l - d*h))/(d*h)" ] }, - "execution_count": 18, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -368,7 +370,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.2" + "version": "3.9.1" }, "toc": { "base_numbering": 1, diff --git a/fig/mixture_rule_elastic.png b/fig/mixture_rule_elastic.png new file mode 100644 index 0000000000000000000000000000000000000000..a1bc273e1ec680eabdffb788193b8ca8ce29ffd3 Binary files /dev/null and b/fig/mixture_rule_elastic.png differ diff --git a/index.ipynb b/index.ipynb index ee8554c967e97ff0adacc6186291718c848c55bb..17b8272b0c64213aadc6c1265e70d158ff399059 100644 --- a/index.ipynb +++ b/index.ipynb @@ -91,7 +91,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Vehicle used to move forward quickly through BMCS" + "## Tools used in the BMCS" ] }, { @@ -122,45 +122,29 @@ "* Develop a basic understanding of damage, plasticity, fracture\n", "* Formulate simplified analytical models capturing material and structural behavior\n", "* Compare self-developed analytical models with general finite-element models \n", - "* Distinguish model verification, calibration, validation and parametric studies\n", - "* Understand the relation between models and assessment rules for ultimate and service limit states" + "* Distinguish model verification, calibration, validation and parametric studies" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Seminar work\n", + "## Tour 1\n", "\n", - "### Topics\n", - " - Pull-out and bond\n", - " - Crack initiation and propagation\n", - " - Multiple cracking and strain-hardening\n", - " - Bending\n", - " - Compression\n", - " \n", - "### Models\n", - " - [How to set the model parameters](bmcs_course/SeminarWorkHowTo.ipynb)\n", - " \n", - "### Organization\n", - " - Registration procedure\n", - " - Submission procedure\n", - "\n", - "## 1 Interactive WebApps and notebooks\n", " - 1.1 A roadmap through the BMCS landscape\n", " - 1.2 Introduction to Jupyter Web Apps and notebooks (mathematics and mechanics support)\n", - " - 1.3 [Example Elastic mixture rule](bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb)\n", - " \n", - "# **A BOND**\n", - "\n", - "## 2 Constant bond-slip law\n", + " - 1.3 [Example Elastic mixture rule](bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tour 2\n", "\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", - "### \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 behavior]\n", @@ -168,108 +152,57 @@ "### Cross section and structure \n", "\n", "- 2.6 [Anchorage]\n", - "- 2.7 [Multiple cracking]\n", - "\n", - "## 3 Nonlinear bond-slip law\n", - "- 3.1 [Pull-out with softening and hardening](bmcs_course/3_1_PO_LF_LM_EL_FE_CB.ipynb) \n", - "- 3.2 [EXTRA - Newton iterative scheme](extras/newton_method.ipynb)\n", - "- 3.2 [EXTRA - Nonlinear finite-element solver for 1d pullout](extras/pullout1d.ipynb)\n", - "\n", - "## 4 Unloading, reloading and inelasticity\n", - "\n", - "- 4.1 [Unloading with multi-linear bond-slip law](bmcs_course/4_1_PO_multilinear_unloading.ipynb)\n", - "- 4.2 [Basic concept of plasticity, ideal and isotropic hardening](bmcs_course/4_2_BS_EP_SH_I_A.ipynb) \n", - "- 4.3 [Basic concept of plasticity, kinematic hardening](bmcs_course/4_3_BS_EP_SH_IK_A.ipynb)\n", - "- 4.4 [EXTRA - Generalization of the algorithm using vectors](bmcs_course/4_4_BS_EP_SH_IK_N.ipynb) \n", - "\n", - "## 5 Inelasticity modeled as damage\n", - "- 5.1 [Damage initiation, damage evolution, 2D bond behavior](bmcs_course/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb)\n", - "- 5.2 [Pull out simulation using damage model](bmcs_course/5_2_PO_DM_FRP_N.ipynb)\n", - "\n", - "# **B CRACK**\n", - "\n", - "## 6 Energy dissipation\n", - "\n", - "## 7 Crack propagation\n", - "\n", - "## 8 Cross section description\n", - "\n", - "# **C BEAM**\n", - "\n", - "## 9 Multiple cracking \n", - "\n", - "## 10 Bending \n" + "- 2.7 [Multiple cracking]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# **D DELIVERABLES**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 11 Seminar work" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 12 Summary od exam questions and tasks" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Structural levels and the model components\n", - "Stress redistribution processes - how do they affect the design principles?\n", - " - ultimate limit state\n", - " - serviceability limit state\n", - " \n", - " Minimialstic assumptions - nonlinear - multilinear stress-strain response of concrete, bond and brittle matrix " + "## Tour 3\n", + "- 3.1 [Pull-out with softening and hardening](bmcs_course/3_1_PO_LF_LM_EL_FE_CB.ipynb) \n", + "- 3.2 [EXTRA - Newton iterative scheme](extras/newton_method.ipynb)\n", + "- 3.2 [EXTRA - Nonlinear finite-element solver for 1d pullout](extras/pullout1d.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Types of material behavior " + "## Tour 4\n", + "\n", + "- 4.1 [Unloading with multi-linear bond-slip law](bmcs_course/4_1_PO_multilinear_unloading.ipynb)\n", + "- 4.2 [Basic concept of plasticity, ideal and isotropic hardening](bmcs_course/4_2_BS_EP_SH_I_A.ipynb) \n", + "- 4.3 [Basic concept of plasticity, kinematic hardening](bmcs_course/4_3_BS_EP_SH_IK_A.ipynb)\n", + "- 4.4 [EXTRA - Generalization of the algorithm using vectors](bmcs_course/4_4_BS_EP_SH_IK_N.ipynb) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - " - nonlinearity hardening / softening\n", - " - damage / plasticity\n", - " - energy dissipation / fracture energy" + "## Tour 5\n", + "- 5.1 [Damage initiation, damage evolution, 2D bond behavior](bmcs_course/5_1_Introspect_Damage_Evolution_Damage_initiation.ipynb)\n", + "- 5.2 [Pull out simulation using damage model](bmcs_course/5_2_PO_DM_FRP_N.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Unloading" + "## Tour 6\n", + "\n", + "- 6.1 Crack propagation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Stable crack growth" + "## Tour 7\n", + "\n", + "- 7.1 Beam bending " ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/pull_out/2_1_PO_ELF_RLM.ipynb b/pull_out/2_1_PO_ELF_RLM.ipynb index de4f693053b1f69357a914665bdf7f343b66b495..4056fae6c096a971103414eaa840e24dbc38a950 100644 --- a/pull_out/2_1_PO_ELF_RLM.ipynb +++ b/pull_out/2_1_PO_ELF_RLM.ipynb @@ -11,7 +11,7 @@ "# Example 2.1: PO_ELF_RLM\n", "Pull-out of a elastic long fiber (ELF) from rigid long matrix (RLG)\n", "\n", - "@author: rosoba" + "[Video - pullout with constant bond](add link)" ] }, { @@ -28,11 +28,44 @@ } }, "source": [ - "## Observation\n", + "# Observation\n", "Let us try to utilize the depicted idealization for the derivation of a model that can help us simulate the test results of the RILEM pull-out test\n", "" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# A look inside the specimen using the model" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "739e439c419248a9b26e666d690ab008", + "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": [ + "from pull_out import PullOutAModel, PO_ELF_RLM_Symb\n", + "po = PullOutAModel(symb_class=PO_ELF_RLM_Symb)\n", + "po.interact()" + ] + }, { "attachments": { "image.png": { @@ -268,8 +301,7 @@ "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" + "sp.init_printing() # enable nice formating of the derived expressions" ] }, { @@ -1172,7 +1204,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 23, "metadata": { "slideshow": { "slide_type": "slide" @@ -1209,6 +1241,7 @@ } ], "source": [ + "import ipywidgets as ipw\n", "u_fa_x_range = get_u_fa_x(x_range, 1)\n", "fig, (ax_u2) = plt.subplots(1,1, figsize=(6,3), tight_layout=True)\n", "line_u2, = ax_u2.plot(x_range, u_fa_x_range, color='black');\n", @@ -1235,7 +1268,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 24, "metadata": { "slideshow": { "slide_type": "fragment" @@ -1255,7 +1288,7 @@ "⎩ 0 otherwise " ] }, - "execution_count": 21, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -1281,7 +1314,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 25, "metadata": { "slideshow": { "slide_type": "fragment" @@ -1307,7 +1340,7 @@ "erwise ⎠" ] }, - "execution_count": 22, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -1941,6 +1974,27 @@ "outputs": [], "source": [] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, diff --git a/pull_out/2_2_PO_ELF_ELM.ipynb b/pull_out/2_2_PO_ELF_ELM.ipynb index 1251f71c4ca15de7c32f2a623edfdf6428e4be63..392e2ab742dfd384660c03f9e96301bdbc78c767 100644 --- a/pull_out/2_2_PO_ELF_ELM.ipynb +++ b/pull_out/2_2_PO_ELF_ELM.ipynb @@ -8,7 +8,36 @@ } }, "source": [ - "# Example 2.2: Pull-out from elastic matrix - PO-ELF-ELM\n" + "# Example 2.2: Pull-out from elastic matrix - PO-ELF-ELM\n", + "\n", + "Video - show the difference to rigid matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e6695fb210cf4547ae016ab544c75a04", + "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": [ + "%matplotlib widget\n", + "from pull_out import PullOutAModel, PO_ELF_ELM_Symb\n", + "po = PullOutAModel(symb_class=PO_ELF_ELM_Symb)\n", + "po.interact()" ] }, { @@ -198,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": { "slideshow": { "slide_type": "fragment" @@ -226,7 +255,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": { "slideshow": { "slide_type": "fragment" diff --git a/pull_out/2_3_PO_ESF_RM.ipynb b/pull_out/2_3_PO_ESF_RM.ipynb index a1bc548e6f914ffdbe2f32203502ec65879aee43..68c4a1e524354a36223d67a832304ecb3dd21be5 100644 --- a/pull_out/2_3_PO_ESF_RM.ipynb +++ b/pull_out/2_3_PO_ESF_RM.ipynb @@ -9,9 +9,34 @@ }, "source": [ "# Example 2.3: PO-ESF-RSM\n", - "Pull-out of a short fiber from short matrix \n", - "\n", - "@author: rosoba" + "Pull-out of a short fiber from short matrix " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ca3da96b6fe144d79d69b0c1be56b25c", + "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": [ + "%matplotlib widget\n", + "from pull_out import PullOutAModel, PO_ESF_RLM_Symb\n", + "po = PullOutAModel(symb_class=PO_ESF_RLM_Symb)\n", + "po.interact()" ] }, {