# 8.2 Regularized linear softening law for stable calculation in finite element code


```python
%matplotlib inline
import sympy as sp
import numpy as np
import matplotlib.pyplot as plt
```

Let us assume that the fracture energy $G_\mathrm{f}$ is known and  we want to improve the above model to deliver stable, mesh-independent results. Knowing that the energy dissipation is only happening in the one softening element, we can require that it alwas dissipates the same amount of energy. Recall that the fracture energy dissipated by a unit area of a stress free crack is evaluated as 
\begin{align}
G_\mathrm{f} = \int_0^{\infty} f(w) \, \mathrm{d}w
\end{align}
where $w$ represents the crack opening.
In the studied case of linear softening with $f$ defined as
\begin{align}
f(w) = f_\mathrm{t}\left( 1 - \frac{1}{w_\mathrm{f}} w \right)
\end{align}
and the corresponding fracture energy
\begin{align}
G_\mathrm{f} = \int_0^{w_\mathrm{f}} f(w) \, \mathrm{d}w = \frac{1}{2} f_\mathrm{t} w_\mathrm{f}
\end{align}
This kind of model is working correctly and reproduces exactly the amount of fracture energy needed to produce the unit area of the stress free crack. 

However, in a finite element model, the crack is not represented as a discrete line but is represented by a strain within the softening element of the size $L_s = L / N$. Thus, the softening is not related to crack opening displacement (COD) but to a strain in the softening zone using a softening function $\phi(\varepsilon_\mathrm{s})$. This model was used in the example above and delivered mesh-dependent results with varying amount of fracture energy.

To regularize the finite element model let us express the crack opening displacement as a product of the softening strain $\varepsilon_\mathrm{s}$ and the size of the softening zone $L_\mathrm{s}$:
\begin{align}
w = \varepsilon_\mathrm{s} L_\mathrm{s}
\end{align}
Now, the energy dissipated within the softening zone can be obtained as an integral over the history of the softening strain as
\begin{align}
G_\mathrm{f} = L_\mathrm{s} \int_0^{\infty} \phi(\varepsilon_\mathrm{s}) \, \mathrm{d}\varepsilon_\mathrm{s}
\end{align}
Comming back to the model with linear softening, the integral of the strain based softening function is expressed as
\begin{align}
\int_0^{\infty} \phi(\varepsilon_\mathrm{s})  \, \mathrm{d} \varepsilon_\mathrm{s} = \frac{1}{2} \varepsilon_\mathrm{f} f_\mathrm{t}
\end{align}
so that
\begin{align}
G_\mathrm{f} = \frac{1}{2} L_\mathrm{s} \varepsilon_\mathrm{f}
f_\mathrm{t}
\implies
\varepsilon_\mathrm{f} = \frac{2}{L_\mathrm{s}} \frac{G_\mathrm{f}}{ f_\mathrm{t}}
\end{align}



```python
L = 10.0
E = 20000.0
f_t = 2.4
G_f = 0.0125 
n_E_list = [5,10,1000]
# run a loop over the different discretizations
for n in n_E_list:  # n: number of element
    L_s = L / n
    eps_f = 2 * G_f / f_t / L_s 
    eps = np.array([0.0, f_t / E, eps_f / n])
    sig = np.array([0.0, f_t, 0.0])
    g_f = eps[-1] * sig[1] / 2
    print('Is the energy constant?', g_f)
    plt.plot(eps, sig, label='n=%i' % n)
    plt.legend(loc=1)

plt.xlabel('strain')
plt.ylabel('stress')
plt.show()
```

Consider a tensile test with the dimensions of a cross section $100 \times 100$ mm and length of $1000$ mm. The measured elongation of the beam during the test was as follows
Assume the stiffness of $E = 28000$ MPa and strength $f_t = 3$ MPa. The length of the cohesive zone at which the crack localized was measured using the digital image correlation and set to $L_s = 0.05$ mm.

## Task

Given the fracture energy, linear softening function, strength, E-modulus, bar length, manually calculate the force-displacement response of a tensile test. 



5ceed4901b32d3a4af5f5bac88d29b6e3087986f
ipynb
Jupyter Notebook
tour6_energy/8_2_Regularized linear softening law for stable calculation in finite element code.ipynb
bmcs-group/bmcs_tutorial
4e008e72839fad8820a6b663a20d3f188610525d
MIT
tour6_energy/8_2_Regularized linear softening law for stable calculation in finite element code.ipynb
bmcs-group/bmcs_tutorial
4e008e72839fad8820a6b663a20d3f188610525d
MIT
tour6_energy/8_2_Regularized linear softening law for stable calculation in finite element code.ipynb
bmcs-group/bmcs_tutorial
4e008e72839fad8820a6b663a20d3f188610525d
MIT
Qwen/Qwen-72B
1. YES
2. YES