Difference between revisions of "Linear elasticity"
(→Cantilever beam) |
(→Cantilever beam) |
||
Line 25: | Line 25: | ||
where $I = D^3/12$ is the moment of inertia. | where $I = D^3/12$ is the moment of inertia. | ||
− | The exact solution in terms of the displacements in $x$ | + | The exact solution in terms of the displacements in $x$ and $y$ direction is |
\begin{align}\label{eq:beam_a1} | \begin{align}\label{eq:beam_a1} | ||
u_x(x,y) = u(x, y) &= -\frac{Py}{6EI}\left(3(x^2-L^2) -(2+\nu)y^2 + 6 (1+\nu) \frac{D^2}{4}\right) \\ \label{eq:beam_a2} | u_x(x,y) = u(x, y) &= -\frac{Py}{6EI}\left(3(x^2-L^2) -(2+\nu)y^2 + 6 (1+\nu) \frac{D^2}{4}\right) \\ \label{eq:beam_a2} | ||
Line 31: | Line 31: | ||
\end{align} | \end{align} | ||
where $E$ is Young's modulus and $\nu$ is the Poisson ratio. | where $E$ is Young's modulus and $\nu$ is the Poisson ratio. | ||
+ | |||
+ | The solution of the cantilever beam problem is illustrated in the <code>cantilever_beam.cpp</code> file. The problem is defined by the following pyhsical parameters: | ||
+ | <syntaxhighlight lang="c++"> | ||
+ | const double E = 72.1e9; | ||
+ | const double nu = 0.33; | ||
+ | const double P = 1000; | ||
+ | const double D = 5; | ||
+ | const double L = 30; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | and the problem itself is specified as follows: | ||
+ | <syntaxhighlight lang="c++"> | ||
+ | for (int i : domain.interior()) { | ||
+ | (lam+mu)*op.graddiv(i) + mu*op.lap(i) = 0.0; | ||
+ | } | ||
+ | for (int i : domain.types() == RIGHT) { | ||
+ | double y = domain.pos(i, 1); | ||
+ | op.value(i) = {(P*y*(3*D*D*(1+nu) - 4*(2+nu)*y*y)) / (24.*E*I), -(L*nu*P*y*y) / (2.*E*I)}; | ||
+ | } | ||
+ | for (int i : domain.types() == LEFT) { | ||
+ | double y = domain.pos(i, 1); | ||
+ | op.traction(i, lam, mu, {-1, 0}) = {0, -P*(D*D - 4*y*y) / (8.*I)}; | ||
+ | } | ||
+ | for (int i : domain.types() == TOP) { | ||
+ | op.traction(i, lam, mu, {0, 1}) = 0.0; | ||
+ | } | ||
+ | for (int i : domain.types() == BOTTOM) { | ||
+ | op.traction(i, lam, mu, {0, -1}) = 0.0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | The plot of the numerical solution produced by the accompanying <code>cantilever_beam.m</code> is shown below. | ||
+ | |||
+ | [[File:cantilever_beam.png|400px]] |
Revision as of 15:01, 21 January 2019
On this page we showcase some basic examples from linear elasticity. To read more about the governing equations, refer to the Solid Mechanics page and examples therein, which are considered in more detail.
All examples here will be the solutions of the Cauchy-Navier equation $$ (\lambda + \mu) \nabla(\nabla \cdot \vec{u}) + \mu \nabla^2 \vec{u} = 0. $$
Cantilever beam
The exact solution to this problem is given by Slaughter (2002) where it is derived for plane stress conditions. [1] This means we are solving the equation $$(\hat{\lambda} + \mu) \nabla(\nabla \cdot \vec{u}) + \nabla^2 \vec{u} = 0, \quad \hat{\lambda} = \frac{2 \lambda \mu} {\lambda + 2\mu},$$ where $\lambda = \frac{E\nu }{(1+\nu )(1-2\nu )}$ and $\mu = \frac {E}{2(1+\nu )}$ are the usual Lame parameters. Consider a beam of dimensions $L \times D$ having a narrow rectangular cross section. The beam occupies a region of $[0, L] \times [-D/2, D/2]$. The beam is bent by a force $P$ applied at the end $x = 0$ and the other end of the beam is fixed at $x = L$, as illustrated below.
The stresses in such a beam are given as: \begin{equation} \sigma_{xx} = -\frac{Pxy}{I}, \sigma_{yy} = 0, \sigma_{xy} = -\frac{P}{2I}\left(\frac{D^2}{4} - y^2 \right), \label{eq:sxy} \end{equation} where $I = D^3/12$ is the moment of inertia.
The exact solution in terms of the displacements in $x$ and $y$ direction is \begin{align}\label{eq:beam_a1} u_x(x,y) = u(x, y) &= -\frac{Py}{6EI}\left(3(x^2-L^2) -(2+\nu)y^2 + 6 (1+\nu) \frac{D^2}{4}\right) \\ \label{eq:beam_a2} u_y(x,y) = v(x, y) &= \frac{P}{6EI}\left(3\nu x y^2 + x^3 - 3L^2 x + 2L^3\right) \end{align} where $E$ is Young's modulus and $\nu$ is the Poisson ratio.
The solution of the cantilever beam problem is illustrated in the cantilever_beam.cpp
file. The problem is defined by the following pyhsical parameters:
const double E = 72.1e9;
const double nu = 0.33;
const double P = 1000;
const double D = 5;
const double L = 30;
and the problem itself is specified as follows:
for (int i : domain.interior()) {
(lam+mu)*op.graddiv(i) + mu*op.lap(i) = 0.0;
}
for (int i : domain.types() == RIGHT) {
double y = domain.pos(i, 1);
op.value(i) = {(P*y*(3*D*D*(1+nu) - 4*(2+nu)*y*y)) / (24.*E*I), -(L*nu*P*y*y) / (2.*E*I)};
}
for (int i : domain.types() == LEFT) {
double y = domain.pos(i, 1);
op.traction(i, lam, mu, {-1, 0}) = {0, -P*(D*D - 4*y*y) / (8.*I)};
}
for (int i : domain.types() == TOP) {
op.traction(i, lam, mu, {0, 1}) = 0.0;
}
for (int i : domain.types() == BOTTOM) {
op.traction(i, lam, mu, {0, -1}) = 0.0;
}
The plot of the numerical solution produced by the accompanying cantilever_beam.m
is shown below.
- ↑ William S. Slaughter (2002). The Linearized Theory of Elasticity, p. 285 - 289. Springer, New York.