Skip to content
Snippets Groups Projects
Commit 3d6e753c authored by Rostislav Chudoba's avatar Rostislav Chudoba
Browse files

minor changes
parent 96bcff6f
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# Example 4.1: Pull-out multilinear bond-slip law unloading
This notebook uses the `bmcs` package to show the unphysical
nature of a model without physical representation of irreversible
processes in the material structure. It unloads along the original
pull-out curve.
Further, the notebook shows how to define non-monotonic loading scenario
using a time-function and how to use the function of the `PullOutModel`
to plot the results into a prepared plotting area.
%% Cell type:code id: tags:
``` python
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from bmcs.api import PullOutModel
```
%% Cell type:markdown id: tags:
## Model parameters
Let us consider the case of the CFRP sheet debonding from concrete
%% Cell type:code id: tags:
``` python
A_f = 16.67 # [mm^2]
A_m = 1540.0 # [mm^2]
p = 1.0 #
E_f = 170000 # [MPa]
E_m = 28000 # [MPa]
```
%% Cell type:markdown id: tags:
## Construct the finite element pullout model
The model uses a multilinear bond-slip law specified by the attributes
s_arr and tau_arr specifying the pairs of slip and bond stress values.
%% Cell type:code id: tags:
``` python
pm = PullOutModel(mats_eval_type='multilinear',
n_e_x=50, k_max=200, w_max=1.84)
pm.sim.tline.step = 0.001
pm.mats_eval.s_tau_table = [[0, 0.1, 0.4, 4],
[0, 800, 0, 0]]
# w = pm.get_window()
# w.configure_traits()
pm
```
%% Output
\begin{array}{lrrl}\hline
\textrm{k_max} & k_{\max} = 200 & \textrm{[-]} & \textrm{maximum number of iterations} \\
\textrm{tolerance} & \epsilon = 0.0001 & \textrm{[-]} & \textrm{required accuracy} \\
\textrm{n_e_x} & n_\mathrm{E} = 50 & \textrm{[-]} & \textrm{number of finite elements along the embedded length} \\
\textrm{mats_eval_type} & \textrm{multilinear} & & \textrm{material model type} \\
\textrm{control_variable} & \textrm{u} & & \textrm{displacement or force control: [u|f]} \\
\textrm{w_max} & w_{\max} = 1.84 & \textrm{[mm]} & \textrm{maximum pullout slip} \\
\textrm{fixed_boundary} & \textrm{non-loaded end (matrix)} & & \textrm{which side of the specimen is fixed [non-loaded end [matrix], loaded end [matrix], non-loaded end [reinf]]} \\
\hline
\textbf{loading_scenario} & \textrm{LoadingScenario} & & \textrm{object defining the loading scenario} \\
\textbf{cross_section} & \textrm{CrossSection} & & \textrm{cross section parameters} \\
\textbf{geometry} & \textrm{Geometry} & & \textrm{geometry parameters of the boundary value problem} \\
\textbf{mats_eval} & \textrm{MATSBondSlipMultiLinear} & & \textrm{material model of the interface} \\
\hline
\end{array}
<bmcs.pullout.pullout_sim.PullOutModel at 0x7f8ead32b2f0>
<bmcs.pullout.pullout_sim.PullOutModel at 0x7f971674c9f0>
%% Cell type:code id: tags:
``` python
pm.loading_scenario.plot(plt.axes())
pm.loading_scenario
```
%% Output
\begin{array}{lrrl}\hline
\textrm{loading_type} & option = monotonic & \textrm{[-]} & \textrm{possible values: [monotonic, cyclic]} \\
\textrm{number_of_cycles} & n_\mathrm{cycles} = 1 & \textrm{[-]} & \textrm{for cyclic loading} \\
\textrm{maximum_loading} & \phi_{\max} = 1.0 & \textrm{[-]} & \textrm{load factor at maximum load level} \\
\textrm{unloading_ratio} & \phi_{\mathrm{unload}} = 0.5 & \textrm{[-]} & \textrm{fraction of maximum load at lowest load level} \\
\textrm{number_of_increments} & n_{\mathrm{incr}} = 20 & \textrm{[-]} & \textrm{number of values within a monotonic load branch} \\
\textrm{amplitude_type} & option = increasing & \textrm{[-]} & \textrm{possible values: [increasing, constant]} \\
\textrm{loading_range} & option = non-symmetric & \textrm{[-]} & \textrm{possible values: [non-symmetric, symmetric]} \\
\hline
\hline
\end{array}
<bmcs.time_functions.loading_scenario.LoadingScenario at 0x7f8eb1ee5b30>
<bmcs.time_functions.loading_scenario.LoadingScenario at 0x7f971342fd10>
%% Cell type:code id: tags:
``` python
pm.loading_scenario.loading_type='cyclic'
pm.loading_scenario.trait_set(number_of_cycles=2,
unloading_ratio=0.0,
amplitude_type='constant',
loading_range='non-symmetric')
pm.loading_scenario
```
%% Output
\begin{array}{lrrl}\hline
\textrm{loading_type} & option = cyclic & \textrm{[-]} & \textrm{possible values: [monotonic, cyclic]} \\
\textrm{number_of_cycles} & n_\mathrm{cycles} = 2 & \textrm{[-]} & \textrm{for cyclic loading} \\
\textrm{maximum_loading} & \phi_{\max} = 1.0 & \textrm{[-]} & \textrm{load factor at maximum load level} \\
\textrm{unloading_ratio} & \phi_{\mathrm{unload}} = 0.0 & \textrm{[-]} & \textrm{fraction of maximum load at lowest load level} \\
\textrm{number_of_increments} & n_{\mathrm{incr}} = 20 & \textrm{[-]} & \textrm{number of values within a monotonic load branch} \\
\textrm{amplitude_type} & option = constant & \textrm{[-]} & \textrm{possible values: [increasing, constant]} \\
\textrm{loading_range} & option = non-symmetric & \textrm{[-]} & \textrm{possible values: [non-symmetric, symmetric]} \\
\hline
\hline
\end{array}
<bmcs.time_functions.loading_scenario.LoadingScenario at 0x7f8eb1ee5b30>
<bmcs.time_functions.loading_scenario.LoadingScenario at 0x7f971342fd10>
%% Cell type:code id: tags:
``` python
pm.loading_scenario.plot(plt.axes())
```
%% Output
%% Cell type:code id: tags:
``` python
pm.cross_section.trait_set(A_f=A_f, P_b=p, A_m=A_m)
pm.cross_section # display the cross section parameters
```
%% Output
\begin{array}{lrrl}\hline
\textrm{A_m} & A_\mathrm{m} = 1540.0 & \textrm{[$\mathrm{mm}^2$]} & \textrm{matrix area} \\
\textrm{A_f} & A_\mathrm{f} = 16.67 & \textrm{[$\mathrm{mm}^2$]} & \textrm{reinforcement area} \\
\textrm{P_b} & p_\mathrm{b} = 1.0 & \textrm{[$\mathrm{mm}$]} & \textrm{perimeter of the bond interface} \\
\hline
\hline
\end{array}
<bmcs.pullout.pullout_sim.CrossSection at 0x7f8eacdf6530>
%% Cell type:code id: tags:
``` python
pm.geometry # geometry of the boundary value problem
```
%% Output
\begin{array}{lrrl}\hline
\textrm{L_x} & L = 45 & \textrm{[$\mathrm{mm}$]} & \textrm{embedded length} \\
\hline
\hline
\end{array}
<bmcs.pullout.pullout_sim.Geometry at 0x7f8eacdf6470>
%% Cell type:markdown id: tags:
## Plot the current bond-slip law
%% Cell type:code id: tags:
``` python
pm.mats_eval # configuration of the material model
```
%% Output
\begin{array}{lrrl}\hline
\textrm{E_m} & E_\mathrm{m} = 28000.0 & \textrm{[MPa]} & \textrm{E-modulus of the matrix} \\
\textrm{E_f} & E_\mathrm{f} = 170000.0 & \textrm{[MPa]} & \textrm{E-modulus of the reinforcement} \\
\textrm{s_data} & s = & \textrm{[mm]} & \textrm{slip values} \\
\textrm{tau_data} & \tau = & \textrm{[MPa]} & \textrm{shear stress values} \\
\hline
\hline
\end{array}
<ibvpy.mats.mats1D5.vmats1D5_bondslip1D.MATSBondSlipMultiLinear at 0x7f8eacdbb2f0>
%% Cell type:code id: tags:
``` python
pm.mats_eval.bs_law.plot(plt, color='green')
```
%% Output
%% Cell type:code id: tags:
``` python
c='red'
pm.geometry.L_x = 200
pm.sim.run()
```
%% Cell type:code id: tags:
``` python
fig, ax = plt.subplots(1,1,figsize=(7,4))
pm.hist.plot_Pw(ax,0.68)
```
%% Output
%% Cell type:code id: tags:
``` python
ax = plt.axes()
for t in np.linspace(0.,0.62,4):
pm.plot_sf(ax,t)
plt.show()
```
%% Output
%% Cell type:code id: tags:
``` python
ax = plt.axes()
for t in np.linspace(0.,.99,5):
pm.plot_s(ax,t)
plt.show()
```
%% Output
%% Cell type:code id: tags:
``` python
ax = plt.axes()
for t in np.linspace(0.,.99,5):
pm.plot_eps_p(ax,t)
plt.show()
```
%% Output
%% Cell type:code id: tags:
``` python
ax = plt.axes()
for t in np.linspace(0.,.99,5):
pm.plot_sig_p(ax,t)
plt.show()
```
%% Output
%% Cell type:markdown id: tags:
# Questions and Tasks
%% Cell type:markdown id: tags:
### 1 Define a symmetric loading scenario with increasing amplitude and 3 cycles
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
......
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -5091,7 +5091,7 @@
"cell_type": "code",
"execution_count": 30,
"metadata": {
"hide_input": true,
"hide_input": false,
"scrolled": false,
"slideshow": {
"slide_type": "fragment"
......
%% Cell type:markdown id: tags:
# BMCS applications
Collection of notebooks accompanying the course on brittle-matrix composite structures.
@author: rosoba
## Rule of mixtures for elastic composites
- [J0101 - Elastic mixture rule](bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb)
# BOND
## Constant bond-slip law
- [J0201 - Pull-out of long fiber from rigid matrix](bmcs_course/2_1_PO_LF_LM_RG.ipynb)
- [J0202 - Pull-out of long fiber from long elastic matrix](bmcs_course/2_2_PO_LF_LM_EL.ipynb)
- [J0203 - Pull-out of short fiber from rigid matrix](bmcs_course/2_3_PO_SF_M_RG.ipynb)
- [J0204 - Comparison of several models](bmcs_course/2_4_PO_comparison.ipynb)
## Nonlinear bond-slip law
- [J0301 - Pull-out with softening and hardening](bmcs_course/3_1_PO_LF_LM_EL_FE_CB.ipynb)
- [J0302 - EXTRA - Newton iterative scheme](extras/newton_method.ipynb)
- [J0303 - EXTRA - Nonlinear finite-element solver for 1d pullout](extras/pullout1d.ipynb)
## Unloading, reloading and inelasticity
- [J0401 - Unloading with multi-linear bond-slip law](bmcs_course/4_1_PO_multilinear_unloading.ipynb) (PO_BS_ML)
- [J0402 - Basic concept of plasticity](bmcs_course/4_2_BS_EP_SH_I_A.ipynb) (BS_EP_SH_I_A)
- [J0403 - EXTRA - General time-stepping algorithm](bmcs_course/4_3_BS_EP_SH_IK_N.ipynb) (BS_EP_SH_IK_N)
- [J0402 - Basic concept of plasticity, ideal and isotopic hardening](bmcs_course/4_2_BS_EP_SH_I_A.ipynb) (BS_EP_SH_I_A)
- [J0403 - Basic concept of plasticity, kinematic hardening](bmcs_course/4_3_BS_EP_SH_IK_A.ipynb) (BS_EP_SH_I_A)
- [J0404 - EXTRA - Generalization of the algorithm using vectors](bmcs_course/4_4_BS_EP_SH_IK_N.ipynb) (BS_EP_SH_IK_N)
## Inelasticity modeled as damage
- [J0404 - Damage framework](bmcs_course)
- [J0405 - Iterative numerical simulation](bmcs_course)
# CRACK
## Energy dissipation
%% Cell type:code id: tags:
``` python
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment