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

discussion with Abdul
parent 3f981f59
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# 4.2 Bond behavior governed by plasticity # 4.2 Bond behavior governed by plasticity
In the first part of this notebook, we rephrase the basic framework of
elasto-plastic models showing which conditions are used to find out how during yield
to describe the material behavior, once it crosses the elastic limit.
Perfect plasticity with constant level of yielding stress is considered first.
In the second part, hardening variable is included which allows for to expand
the elastic range
Define a bond-slip law governed yielding with hardening or softening. Define a bond-slip law governed yielding with hardening or softening.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
%matplotlib inline %matplotlib inline
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import sympy as sp import sympy as sp
sp.init_printing() sp.init_printing()
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## The onset of inelasticity ## The onset of inelasticity
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
s_el = sp.symbols('s_el') s_el = sp.symbols('s_el')
E_b = sp.symbols('E_\mathrm{b}', positive=True) E_b = sp.symbols('E_\mathrm{b}', positive=True)
tau_ = E_b * s_el tau_ = E_b * s_el
tau_ tau_
``` ```
%% Output %% Output
$\displaystyle E_\mathrm{b} s_{el}$ $\displaystyle E_\mathrm{b} s_{el}$
E_\mathrm{b}⋅sₑₗ E_\mathrm{b}⋅sₑₗ
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
s, s_pl = sp.symbols('s, s_pl') s, s_pl = sp.symbols('s, s_pl')
s_el_ = s - s_pl s_el_ = s - s_pl
tau_.subs(s_el, s_el_) tau_.subs(s_el, s_el_)
``` ```
%% Output %% Output
$\displaystyle E_\mathrm{b} \left(s - s_{pl}\right)$ $\displaystyle E_\mathrm{b} \left(s - s_{pl}\right)$
E_\mathrm{b}⋅(s - sₚₗ) E_\mathrm{b}⋅(s - sₚₗ)
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
tau = sp.symbols(r'\tau') tau = sp.symbols(r'\tau')
tau_bar = sp.symbols(r'\bar{\tau}') tau_bar = sp.symbols(r'\bar{\tau}')
f_tau = sp.sqrt( tau * tau ) - tau_bar f_tau = sp.sqrt( tau * tau ) - tau_bar
f_tau f_tau
``` ```
%% Output %% Output
$\displaystyle - \bar{\tau} + \sqrt{\tau^{2}}$ $\displaystyle - \bar{\tau} + \sqrt{\tau^{2}}$
_______ _______
╱ 2 ╱ 2
-\bar{\tau} + ╲╱ \tau -\bar{\tau} + ╲╱ \tau
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
f_s = f_tau.subs(tau, tau_).subs(s_el, s_el_) f_s = f_tau.subs(tau, tau_).subs(s_el, s_el_)
f_s f_s
``` ```
%% Output %% Output
$\displaystyle E_\mathrm{b} \sqrt{\left(s - s_{pl}\right)^{2}} - \bar{\tau}$ $\displaystyle E_\mathrm{b} \sqrt{\left(s - s_{pl}\right)^{2}} - \bar{\tau}$
____________ ____________
╱ 2 ╱ 2
E_\mathrm{b}⋅╲╱ (s - sₚₗ) - \bar{\tau} E_\mathrm{b}⋅╲╱ (s - sₚₗ) - \bar{\tau}
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
The question is, how does the stress develop in the inelastic regime? The question is, how does the stress develop in the inelastic regime?
This means when $f = 0$? This means when $f = 0$?
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
s_pl_f0 = sp.solve(f_s, s_pl) s_pl_f0 = sp.solve(f_s, s_pl)
s_pl_f0[0] s_pl_f0[0]
``` ```
%% Output %% Output
$\displaystyle s - \frac{\bar{\tau}}{E_\mathrm{b}}$ $\displaystyle s - \frac{\bar{\tau}}{E_\mathrm{b}}$
\bar{\tau} \bar{\tau}
s - ──────────── s - ────────────
E_\mathrm{b} E_\mathrm{b}
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
tau_.subs(s_el, s_el_).subs(s_pl, s_pl_f0[1]) tau_.subs(s_el, s_el_).subs(s_pl, s_pl_f0[1])
``` ```
%% Output %% Output
$\displaystyle - \bar{\tau}$ $\displaystyle - \bar{\tau}$
-\bar{\tau} -\bar{\tau}
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
So far, so good. We obtained a trivial result telling us that the stress cannot grow over the So far, so good. We obtained a trivial result telling us that the stress cannot grow over the
introduced elasticity limit. But in this case we can just reproduce the constant bond-slip introduced elasticity limit. But in this case we can just reproduce the constant bond-slip
law - now extended with a elastic stiffness. How to provide a general framework suitable law - now extended with a elastic stiffness. How to provide a general framework suitable
for an algorithmic treatment? How to distinguish between loading and unloading? for an algorithmic treatment? How to distinguish between loading and unloading?
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
So how much plastic deformation was consumed? What was the direction of flow? So how much plastic deformation was consumed? What was the direction of flow?
There might be several different processes going on the material structure? There might be several different processes going on the material structure?
Let us postulate, that they can be clustered by a positive flow variable $\lambda$. Then Let us postulate, that they can be clustered by a positive flow variable $\lambda$. Then
we assume that the rate of change of all state variables representing yielding we assume that the rate of change of all state variables representing yielding
can be related to the common positive parameter $\lambda$ and that the yielding direction can be related to the common positive parameter $\lambda$ and that the yielding direction
is normal to the yield surface $f$ is normal to the yield surface $f$
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
lambda_ = sp.symbols(r'\lambda', nonnegative=True) lambda_ = sp.symbols(r'\lambda', nonnegative=True)
dot_s_pl_ = lambda_ * f_tau.diff(tau) dot_s_pl_ = lambda_ * f_tau.diff(tau)
dot_s_pl_ dot_s_pl_
``` ```
%% Output %% Output
$\displaystyle \frac{\lambda \sqrt{\tau^{2}}}{\tau}$ $\displaystyle \frac{\lambda \sqrt{\tau^{2}}}{\tau}$
_______ _______
╱ 2 ╱ 2
\lambda⋅╲╱ \tau \lambda⋅╲╱ \tau
────────────────── ──────────────────
\tau \tau
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
**Relate increment of yielding to the increment of primary kinematic state variables** **Relate increment of yielding to the increment of primary kinematic state variables**
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
But what is the amount of yielding controlled now by $\lambda$? Solving for $f = 0$ is not But what is the amount of yielding controlled now by $\lambda$? Solving for $f = 0$ is not
of much help any more. Can the elastic range change during the yielding process? An abstract of much help any more. Can the elastic range change during the yielding process? An abstract
distinction between elastic and inelastic loading processes can be provided by Kuhn-Tucker conditions distinction between elastic and inelastic loading processes can be provided by Kuhn-Tucker conditions
\begin{align} \begin{align}
\lambda \dot{f} = 0, \; \lambda > 0,\; \dot{f} \le 0 \lambda \dot{f} = 0, \; \lambda > 0,\; \dot{f} \le 0
\end{align} \end{align}
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
dot_s, dot_s_pl = sp.symbols(r'\dot{s}, \dot{s}_\mathrm{pl}') dot_s, dot_s_pl = sp.symbols(r'\dot{s}, \dot{s}_\mathrm{pl}')
dot_tau_ = E_b * (dot_s - dot_s_pl) dot_tau_ = E_b * (dot_s - dot_s_pl)
dot_tau_ dot_tau_
``` ```
%% Output %% Output
$\displaystyle E_\mathrm{b} \left(\dot{s} - \dot{s}_\mathrm{pl}\right)$ $\displaystyle E_\mathrm{b} \left(\dot{s} - \dot{s}_\mathrm{pl}\right)$
E_\mathrm{b}⋅(\dot{s} - \dot{s}_\mathrm{pl}) E_\mathrm{b}⋅(\dot{s} - \dot{s}_\mathrm{pl})
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
dot_f = f_tau.diff(tau) * dot_tau_.subs(dot_s_pl, dot_s_pl_) dot_f = f_tau.diff(tau) * dot_tau_.subs(dot_s_pl, dot_s_pl_)
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
lambda_solved = sp.solve( dot_f, lambda_)[0] lambda_solved = sp.solve( dot_f, lambda_)[0]
lambda_solved lambda_solved
``` ```
%% Output %% Output
$\displaystyle \frac{\dot{s} \tau}{\sqrt{\tau^{2}}}$ $\displaystyle \frac{\dot{s} \tau}{\sqrt{\tau^{2}}}$
\dot{s}⋅\tau \dot{s}⋅\tau
──────────── ────────────
_______ _______
╱ 2 ╱ 2
╲╱ \tau ╲╱ \tau
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
dot_s_pl_.subs(lambda_, lambda_solved) dot_s_pl_.subs(lambda_, lambda_solved)
``` ```
%% Output %% Output
$\displaystyle \dot{s}$ $\displaystyle \dot{s}$
\dot{s} \dot{s}
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
dot_tau_.subs(dot_s_pl, dot_s_pl_).subs(lambda_, lambda_solved) dot_tau_.subs(dot_s_pl, dot_s_pl_).subs(lambda_, lambda_solved)
``` ```
%% Output %% Output
$\displaystyle 0$ $\displaystyle 0$
0 0
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
[Convex mathematical programming literature] [Convex mathematical programming literature]
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Can the elastic range expand? ## Can the elastic range expand?
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
z = sp.symbols('z') z = sp.symbols('z')
K = sp.symbols('K', positive=True ) K = sp.symbols('K', positive=True )
Z = sp.symbols('Z') Z = sp.symbols('Z')
f_tau = sp.sqrt(tau**2) - (tau_bar + Z) f_tau = sp.sqrt(tau**2) - (tau_bar + Z)
f_tau f_tau
``` ```
%% Output %% Output
$\displaystyle - Z - \bar{\tau} + \sqrt{\tau^{2}}$ $\displaystyle - Z - \bar{\tau} + \sqrt{\tau^{2}}$
_______ _______
╱ 2 ╱ 2
-Z - \bar{\tau} + ╲╱ \tau -Z - \bar{\tau} + ╲╱ \tau
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
dot_s_pl_ = lambda_ * f_tau.diff(tau) dot_s_pl_ = lambda_ * f_tau.diff(tau)
dot_s_pl_ dot_s_pl_
``` ```
%% Output %% Output
$\displaystyle \frac{\lambda \sqrt{\tau^{2}}}{\tau}$ $\displaystyle \frac{\lambda \sqrt{\tau^{2}}}{\tau}$
_______ _______
╱ 2 ╱ 2
\lambda⋅╲╱ \tau \lambda⋅╲╱ \tau
────────────────── ──────────────────
\tau \tau
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
dot_z_ = - lambda_ * f_tau.diff(Z) dot_z_ = - lambda_ * f_tau.diff(Z)
dot_z_ dot_z_
``` ```
%% Output %% Output
$\displaystyle \lambda$ $\displaystyle \lambda$
\lambda \lambda
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
\begin{align} \begin{align}
\dot{f} = \dot{f} =
\frac{\partial f}{\partial \tau} \dot{\tau} \frac{\partial f}{\partial \tau} \dot{\tau}
+ +
\frac{\partial f}{\partial Z} \dot{Z} \frac{\partial f}{\partial Z} \dot{Z}
\end{align} \end{align}
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
dot_z = sp.symbols(r'\dot{z}') dot_z = sp.symbols(r'\dot{z}')
dot_Z_ = K * dot_z dot_Z_ = K * dot_z
dot_Z_ dot_Z_
``` ```
%% Output %% Output
$\displaystyle K \dot{z}$ $\displaystyle K \dot{z}$
K⋅\dot{z} K⋅\dot{z}
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
dot_f = f_tau.diff(tau) * dot_tau_ + f_tau.diff(Z) * dot_Z_ dot_f = f_tau.diff(tau) * dot_tau_ + f_tau.diff(Z) * dot_Z_
dot_f dot_f
``` ```
%% Output %% Output
$\displaystyle \frac{E_\mathrm{b} \left(\dot{s} - \dot{s}_\mathrm{pl}\right) \sqrt{\tau^{2}}}{\tau} - K \dot{z}$ $\displaystyle \frac{E_\mathrm{b} \left(\dot{s} - \dot{s}_\mathrm{pl}\right) \sqrt{\tau^{2}}}{\tau} - K \dot{z}$
_______ _______
╱ 2 ╱ 2
E_\mathrm{b}⋅(\dot{s} - \dot{s}_\mathrm{pl})⋅╲╱ \tau E_\mathrm{b}⋅(\dot{s} - \dot{s}_\mathrm{pl})⋅╲╱ \tau
─────────────────────────────────────────────────────── - K⋅\dot{z} ─────────────────────────────────────────────────────── - K⋅\dot{z}
\tau \tau
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
dot_f_lambda = dot_f.subs(dot_s_pl, dot_s_pl_).subs(dot_z, dot_z_) dot_f_lambda = dot_f.subs(dot_s_pl, dot_s_pl_).subs(dot_z, dot_z_)
dot_f_lambda dot_f_lambda
``` ```
%% Output %% Output
$\displaystyle \frac{E_\mathrm{b} \left(\dot{s} - \frac{\lambda \sqrt{\tau^{2}}}{\tau}\right) \sqrt{\tau^{2}}}{\tau} - K \lambda$ $\displaystyle \frac{E_\mathrm{b} \left(\dot{s} - \frac{\lambda \sqrt{\tau^{2}}}{\tau}\right) \sqrt{\tau^{2}}}{\tau} - K \lambda$
⎛ _______⎞ ⎛ _______⎞
⎜ ╱ 2 ⎟ _______ ⎜ ╱ 2 ⎟ _______
⎜ \lambda⋅╲╱ \tau ⎟ ╱ 2 ⎜ \lambda⋅╲╱ \tau ⎟ ╱ 2
E_\mathrm{b}⋅⎜\dot{s} - ──────────────────⎟⋅╲╱ \tau E_\mathrm{b}⋅⎜\dot{s} - ──────────────────⎟⋅╲╱ \tau
⎝ \tau ⎠ ⎝ \tau ⎠
────────────────────────────────────────────────────── - K⋅\lambda ────────────────────────────────────────────────────── - K⋅\lambda
\tau \tau
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
lambda_solved = sp.solve(dot_f_lambda, lambda_)[0] lambda_solved = sp.solve(dot_f_lambda, lambda_)[0]
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
sp.simplify(dot_tau_.subs(dot_s_pl, dot_s_pl_).subs(lambda_, lambda_solved)) sp.simplify(dot_tau_.subs(dot_s_pl, dot_s_pl_).subs(lambda_, lambda_solved))
``` ```
%% Output %% Output
$\displaystyle \frac{E_\mathrm{b} K \dot{s}}{E_\mathrm{b} + K}$ $\displaystyle \frac{E_\mathrm{b} K \dot{s}}{E_\mathrm{b} + K}$
E_\mathrm{b}⋅K⋅\dot{s} E_\mathrm{b}⋅K⋅\dot{s}
────────────────────── ──────────────────────
E_\mathrm{b} + K E_\mathrm{b} + K
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Construct the bond slip model ## Construct the bond slip model
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Given an increment of slip, calculate the corresponding amount of stress Given an increment of slip, calculate the corresponding amount of stress
regarding the current state of the material regarding the current state of the material
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Let us now solve this problem numerically Let us now solve this problem numerically
\begin{align} \begin{align}
\end{align} \end{align}
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
``` ```
......
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# BMCS applications # BMCS applications
Collection of notebooks accompanying the course on brittle-matrix composite structures. Collection of notebooks accompanying the course on brittle-matrix composite structures.
@author: rosoba @author: rosoba
## Rule of mixtures for elastic composites ## Rule of mixtures for elastic composites
- [J0101 - Elastic mixture rule](bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb) - [J0101 - Elastic mixture rule](bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb)
# BOND
## Constant bond-slip law ## Constant bond-slip law
- [J0201 - Pull-out of long fiber from rigid matrix](bmcs_course/2_1_PO_LF_LM_RG.ipynb) - [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) - [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) - [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) - [J0204 - Comparison of several models](bmcs_course/2_4_PO_comparison.ipynb)
## Nonlinear bond-slip law ## Nonlinear bond-slip law
- [J0301 - Pull-out with softening and hardening](bmcs_course/3_1_PO_LF_LM_EL_FE_CB.ipynb) - [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) - [J0302 - EXTRA - Newton iterative scheme](extras/newton_method.ipynb)
- [J0303 - EXTRA - Nonlinear finite-element solver for 1d pullout](extras/pullout1d.ipynb) - [J0303 - EXTRA - Nonlinear finite-element solver for 1d pullout](extras/pullout1d.ipynb)
## Unloading, reloading and inelasticity ## Unloading, reloading and inelasticity
- [J0401 - Unloading with multi-linear bond-slip law](bmcs_course/4_1_PO_multilinear_unloading.ipynb) (PO_BS_ML) - [J0401 - Unloading with multi-linear bond-slip law](bmcs_course/4_1_PO_multilinear_unloading.ipynb) (PO_BS_ML)
### Plasticity
- [J0402 - Plasticity framework](bmcs_course/4_2_BS_EP_SH_IK_analytical.ipynb) (BS_EP_SH_IK_A) - [J0402 - Plasticity framework](bmcs_course/4_2_BS_EP_SH_IK_analytical.ipynb) (BS_EP_SH_IK_A)
- [J0403 - Iterative numerical simulation](bmcs_course/4_3_BS_EP_SH_IK_numerical.ipynb) (BS_EP_SH_IK_N) - [J0403 - Iterative numerical simulation](bmcs_course/4_3_BS_EP_SH_IK_numerical.ipynb) (BS_EP_SH_IK_N)
### Damage
- [J0404 - Damage framework](bmcs_course) - [J0404 - Damage framework](bmcs_course)
- [J0405 - Iterative numerical simulation](bmcs_course) - [J0405 - Iterative numerical simulation](bmcs_course)
## Energy dissipation
# CRACK
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` 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