Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
icc-apps
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Rostislav Chudoba
icc-apps
Commits
a37bff6c
Commit
a37bff6c
authored
4 years ago
by
Rostislav Chudoba
Browse files
Options
Downloads
Patches
Plain Diff
discussion with Abdul
parent
3f981f59
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
bmcs_course/4_2_BS_elasto_plastic.ipynb
+9
-0
9 additions, 0 deletions
bmcs_course/4_2_BS_elasto_plastic.ipynb
index.ipynb
+7
-5
7 additions, 5 deletions
index.ipynb
with
16 additions
and
5 deletions
bmcs_course/4_2_BS_elasto_plastic.ipynb
+
9
−
0
View file @
a37bff6c
...
...
@@ -5,6 +5,15 @@
"metadata": {},
"source": [
"# 4.2 Bond behavior governed by plasticity\n",
" \n",
"In the first part of this notebook, we rephrase the basic framework of\n",
"elasto-plastic models showing which conditions are used to find out how during yield \n",
"to describe the material behavior, once it crosses the elastic limit.\n",
"Perfect plasticity with constant level of yielding stress is considered first.\n",
"\n",
"In the second part, hardening variable is included which allows for to expand\n",
"the elastic range \n",
"\n",
"Define a bond-slip law governed yielding with hardening or softening."
]
},
...
...
%% Cell type:markdown id: tags:
# 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.
%% Cell type:code id: tags:
```
python
%
matplotlib
inline
import
matplotlib.pyplot
as
plt
import
sympy
as
sp
sp
.
init_printing
()
```
%% Cell type:markdown id: tags:
## The onset of inelasticity
%% Cell type:code id: tags:
```
python
s_el
=
sp
.
symbols
(
'
s_el
'
)
E_b
=
sp
.
symbols
(
'
E_\mathrm{b}
'
,
positive
=
True
)
tau_
=
E_b
*
s_el
tau_
```
%% Output
$\displaystyle E_\mathrm{b} s_{el}$
E_\mathrm{b}⋅sₑₗ
%% Cell type:code id: tags:
```
python
s
,
s_pl
=
sp
.
symbols
(
'
s, s_pl
'
)
s_el_
=
s
-
s_pl
tau_
.
subs
(
s_el
,
s_el_
)
```
%% Output
$\displaystyle E_\mathrm{b} \left(s - s_{pl}\right)$
E_\mathrm{b}⋅(s - sₚₗ)
%% Cell type:code id: tags:
```
python
tau
=
sp
.
symbols
(
r
'
\tau
'
)
tau_bar
=
sp
.
symbols
(
r
'
\bar{\tau}
'
)
f_tau
=
sp
.
sqrt
(
tau
*
tau
)
-
tau_bar
f_tau
```
%% Output
$\displaystyle - \bar{\tau} + \sqrt{\tau^{2}}$
_______
╱ 2
-\bar{\tau} + ╲╱ \tau
%% Cell type:code id: tags:
```
python
f_s
=
f_tau
.
subs
(
tau
,
tau_
).
subs
(
s_el
,
s_el_
)
f_s
```
%% Output
$\displaystyle E_\mathrm{b} \sqrt{\left(s - s_{pl}\right)^{2}} - \bar{\tau}$
____________
╱ 2
E_\mathrm{b}⋅╲╱ (s - sₚₗ) - \bar{\tau}
%% Cell type:markdown id: tags:
The question is, how does the stress develop in the inelastic regime?
This means when $f = 0$?
%% Cell type:code id: tags:
```
python
s_pl_f0
=
sp
.
solve
(
f_s
,
s_pl
)
s_pl_f0
[
0
]
```
%% Output
$\displaystyle s - \frac{\bar{\tau}}{E_\mathrm{b}}$
\bar{\tau}
s - ────────────
E_\mathrm{b}
%% Cell type:code id: tags:
```
python
tau_
.
subs
(
s_el
,
s_el_
).
subs
(
s_pl
,
s_pl_f0
[
1
])
```
%% Output
$\displaystyle - \bar{\tau}$
-\bar{\tau}
%% Cell type:markdown id: tags:
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
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?
%% Cell type:markdown id: tags:
So how much plastic deformation was consumed? What was the direction of flow?
There might be several different processes going on the material structure?
Let us postulate, that they can be clustered by a positive flow variable $
\l
ambda$. Then
we assume that the rate of change of all state variables representing yielding
can be related to the common positive parameter $
\l
ambda$ and that the yielding direction
is normal to the yield surface $f$
%% Cell type:code id: tags:
```
python
lambda_
=
sp
.
symbols
(
r
'
\lambda
'
,
nonnegative
=
True
)
dot_s_pl_
=
lambda_
*
f_tau
.
diff
(
tau
)
dot_s_pl_
```
%% Output
$\displaystyle \frac{\lambda \sqrt{\tau^{2}}}{\tau}$
_______
╱ 2
\lambda⋅╲╱ \tau
──────────────────
\tau
%% Cell type:markdown id: tags:
**Relate increment of yielding to the increment of primary kinematic state variables**
%% Cell type:markdown id: tags:
But what is the amount of yielding controlled now by $
\l
ambda$? Solving for $f = 0$ is not
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
\b
egin{align}
\l
ambda
\d
ot{f} = 0,
\;
\l
ambda > 0,
\;
\d
ot{f}
\l
e 0
\e
nd{align}
%% Cell type:code id: tags:
```
python
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_
```
%% Output
$\displaystyle E_\mathrm{b} \left(\dot{s} - \dot{s}_\mathrm{pl}\right)$
E_\mathrm{b}⋅(\dot{s} - \dot{s}_\mathrm{pl})
%% Cell type:code id: tags:
```
python
dot_f
=
f_tau
.
diff
(
tau
)
*
dot_tau_
.
subs
(
dot_s_pl
,
dot_s_pl_
)
```
%% Cell type:code id: tags:
```
python
lambda_solved
=
sp
.
solve
(
dot_f
,
lambda_
)[
0
]
lambda_solved
```
%% Output
$\displaystyle \frac{\dot{s} \tau}{\sqrt{\tau^{2}}}$
\dot{s}⋅\tau
────────────
_______
╱ 2
╲╱ \tau
%% Cell type:code id: tags:
```
python
dot_s_pl_
.
subs
(
lambda_
,
lambda_solved
)
```
%% Output
$\displaystyle \dot{s}$
\dot{s}
%% Cell type:code id: tags:
```
python
dot_tau_
.
subs
(
dot_s_pl
,
dot_s_pl_
).
subs
(
lambda_
,
lambda_solved
)
```
%% Output
$\displaystyle 0$
0
%% Cell type:markdown id: tags:
[Convex mathematical programming literature]
%% Cell type:markdown id: tags:
## Can the elastic range expand?
%% Cell type:code id: tags:
```
python
z
=
sp
.
symbols
(
'
z
'
)
K
=
sp
.
symbols
(
'
K
'
,
positive
=
True
)
Z
=
sp
.
symbols
(
'
Z
'
)
f_tau
=
sp
.
sqrt
(
tau
**
2
)
-
(
tau_bar
+
Z
)
f_tau
```
%% Output
$\displaystyle - Z - \bar{\tau} + \sqrt{\tau^{2}}$
_______
╱ 2
-Z - \bar{\tau} + ╲╱ \tau
%% Cell type:code id: tags:
```
python
dot_s_pl_
=
lambda_
*
f_tau
.
diff
(
tau
)
dot_s_pl_
```
%% Output
$\displaystyle \frac{\lambda \sqrt{\tau^{2}}}{\tau}$
_______
╱ 2
\lambda⋅╲╱ \tau
──────────────────
\tau
%% Cell type:code id: tags:
```
python
dot_z_
=
-
lambda_
*
f_tau
.
diff
(
Z
)
dot_z_
```
%% Output
$\displaystyle \lambda$
\lambda
%% Cell type:markdown id: tags:
\b
egin{align}
\d
ot{f} =
\f
rac{
\p
artial f}{
\p
artial
\t
au}
\d
ot{
\t
au}
+
\f
rac{
\p
artial f}{
\p
artial Z}
\d
ot{Z}
\e
nd{align}
%% Cell type:code id: tags:
```
python
dot_z
=
sp
.
symbols
(
r
'
\dot{z}
'
)
dot_Z_
=
K
*
dot_z
dot_Z_
```
%% Output
$\displaystyle K \dot{z}$
K⋅\dot{z}
%% Cell type:code id: tags:
```
python
dot_f
=
f_tau
.
diff
(
tau
)
*
dot_tau_
+
f_tau
.
diff
(
Z
)
*
dot_Z_
dot_f
```
%% Output
$\displaystyle \frac{E_\mathrm{b} \left(\dot{s} - \dot{s}_\mathrm{pl}\right) \sqrt{\tau^{2}}}{\tau} - K \dot{z}$
_______
╱ 2
E_\mathrm{b}⋅(\dot{s} - \dot{s}_\mathrm{pl})⋅╲╱ \tau
─────────────────────────────────────────────────────── - K⋅\dot{z}
\tau
%% Cell type:code id: tags:
```
python
dot_f_lambda
=
dot_f
.
subs
(
dot_s_pl
,
dot_s_pl_
).
subs
(
dot_z
,
dot_z_
)
dot_f_lambda
```
%% Output
$\displaystyle \frac{E_\mathrm{b} \left(\dot{s} - \frac{\lambda \sqrt{\tau^{2}}}{\tau}\right) \sqrt{\tau^{2}}}{\tau} - K \lambda$
⎛ _______⎞
⎜ ╱ 2 ⎟ _______
⎜ \lambda⋅╲╱ \tau ⎟ ╱ 2
E_\mathrm{b}⋅⎜\dot{s} - ──────────────────⎟⋅╲╱ \tau
⎝ \tau ⎠
────────────────────────────────────────────────────── - K⋅\lambda
\tau
%% Cell type:code id: tags:
```
python
lambda_solved
=
sp
.
solve
(
dot_f_lambda
,
lambda_
)[
0
]
```
%% Cell type:code id: tags:
```
python
sp
.
simplify
(
dot_tau_
.
subs
(
dot_s_pl
,
dot_s_pl_
).
subs
(
lambda_
,
lambda_solved
))
```
%% Output
$\displaystyle \frac{E_\mathrm{b} K \dot{s}}{E_\mathrm{b} + K}$
E_\mathrm{b}⋅K⋅\dot{s}
──────────────────────
E_\mathrm{b} + K
%% Cell type:markdown id: tags:
## Construct the bond slip model
%% Cell type:markdown id: tags:
Given an increment of slip, calculate the corresponding amount of stress
regarding the current state of the material
%% Cell type:markdown id: tags:
Let us now solve this problem numerically
\b
egin{align}
\e
nd{align}
%% Cell type:code id: tags:
```
python
``
`
%%
Cell
type
:
code
id
:
tags
:
```
python
```
...
...
This diff is collapsed.
Click to expand it.
index.ipynb
+
7
−
5
View file @
a37bff6c
...
...
@@ -11,6 +11,8 @@
"\n",
"## Rule of mixtures for elastic composites\n",
" - [J0101 - Elastic mixture rule](bmcs_course/1_1_elastic_stiffness_of_the_composite.ipynb)\n",
" \n",
"# BOND\n",
"\n",
"## Constant bond-slip law\n",
"\n",
...
...
@@ -27,14 +29,14 @@
"## Unloading, reloading and inelasticity\n",
"\n",
"- [J0401 - Unloading with multi-linear bond-slip law](bmcs_course/4_1_PO_multilinear_unloading.ipynb) (PO_BS_ML)\n",
"\n",
"### Plasticity\n",
"- [J0402 - Plasticity framework](bmcs_course/4_2_BS_EP_SH_IK_analytical.ipynb) (BS_EP_SH_IK_A)\n",
"- [J0403 - Iterative numerical simulation](bmcs_course/4_3_BS_EP_SH_IK_numerical.ipynb) (BS_EP_SH_IK_N)\n",
"\n",
"### Damage\n",
"- [J0404 - Damage framework](bmcs_course)\n",
"- [J0405 - Iterative numerical simulation](bmcs_course)"
"- [J0405 - Iterative numerical simulation](bmcs_course)\n",
"\n",
"## Energy dissipation\n",
"\n",
"# CRACK"
]
},
{
...
...
%% 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
)
### Plasticity
-
[
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
)
### Damage
-
[
J0404 - Damage framework
](
bmcs_course
)
-
[
J0405 - Iterative numerical simulation
](
bmcs_course
)
## Energy dissipation
# CRACK
%% Cell type:code id: tags:
```
python
```
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment