\documentclass[11pt,a4paper,dvipsnames]{article}
\usepackage[utf8]{inputenc}

\input{../preamble.tex}

\title{Homework 5\\Continuum Mechanics}
\author{Adrià Vilanova Martínez}
\date{April 25, 2021}

\begin{document}

\maketitle

\begin{Problem}
  In this problem, we are going to compare the relative importance between stretching and bending a beam. To do this, consider a long beam oriented along the positive z-direction that is clamped on its left-most point. Neglect gravity.

  \begin{enumerate}
    \item If we apply a stretching force $F_z$ on the right-most point of the beam, show that the displacement at that point can be written as
    \[ u_z = \frac{F_z}{A} \frac{L}{Y}, \]
    with $L$ the length of the beam, $A$ the cross-sectional area and $Y$ the Young's modulus.

    \item If we instead apply a downward force (along the Y-direction) $F_y$ on the right-most point of the beam, show that the displacement is
    \[ u_y(z = L) = \frac{L^3 F_y}{3 Y I} \approx \frac{L^3 F_y}{3 Y A^2}, \]
    where we have taken $I \approx A^2$ in the last step.
  \end{enumerate}

  This implies:
  \[ \left| \frac{u_z}{u_y} \right| \approx \frac{A}{L^2} \left| \frac{F_z}{F_y} \right|. \]

  Hence, for long beams ($A \ll L^2$) and comparable stretching and bending forces ($\left| \frac{F_z}{F_y} \right| \approx 1$), we see that $|u_z| \ll |u_y|$. This imples that the longitudinal displacement is always negligible compared to the transverse (due to bending) displacement.
\end{Problem}

\textbf{Solution for a):} \\
We have that $\sigma_{zz} = \frac{F_z}{A} = Y u_{zz}$ by Hooke's law, and all the other components of the stress vector are zero. Therefore, $u_{zz} = \frac{F_z}{A Y}$.

Since $u_{zz} = \frac{d u_z}{dz}$, we have
\[ u_z = \int_0^R u_{zz} dz = \frac{F_z L}{A Y}. \]

\begin{Problem}
  Consider a cylindrical beam of length $L$ and cross-sectional radius $R$ oriented along the positive $\hat{e}_z$ direction and made of an isotropic and homogeneous elastic material with Lame coefficients $\lambda$ and $\mu$. We fix the left-most end of the beam, which is located at $z = 0$, such that the diplacement vector in the corresponding cross-section is zero. The other end, located at $z = L$, is subjected to a force (per unit area) $\TT{\sigma} \cdot \hat{e}_Z |_{r = R} = \sigma_L \hat{e}_\phi$, where $\TT{\sigma}$ is the stress tensor, $\sigma_L$ is a constant force per unit area supplied at $r = R$ to the circular cross-section located at $z = L$, and we are using the cylindrical system.

  The resultant deformation results in a displacement vector that increases linearly with $z$, and that, based on the symmetry of the problem, we can write as
  \[ \vec{u} = (0, u_\phi(r, z), 0) = (0, R(r) Z(z), 0) = R(r) Z(z) \hat{e}_\phi, \]
  where we have separated the (r, z)-dependence of $u_\phi$ into its r- and z-dependences. You can safely ignore body forces, such as the gravitational force.

  \begin{enumerate}
    \item Obtain the displacement field in the solid.
    \item Obtain the strain tensor.
    \item Obtain the stress tensor.
    \item What is the total work done by the applied stress?
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):} \\
Since $\vec{u}$ increases linearly with $z$, we have that $Z(z) = az + b$.

In order to find the displacement field, we will use Navier-Cauchy's equation combined with the general expression we have for the displacement field:
\[ \underbrace{\vec{f}}_{= 0} + \mu \nabla^2 \vec{u} + (\lambda + \mu) \nabla (\nabla \cdot \vec{u}) = 0 \iff \]
\[ \iff \mu (0, \partial_{rr} u_\phi + \partial_{zz} u_\phi + \frac{1}{r} \partial_r u_\phi - \frac{1}{r^2} u_\phi, 0) + (\lambda + \mu) \cdot 0 = 0 \iff \]
\[ \iff \partial_{rr} u_\phi + \partial_{zz} u_\phi + \frac{1}{r} \partial_r u_\phi - \frac{1}{r^2} u_\phi = 0 \iff \]
\[ \iff R''(r) + \frac{1}{r} R'(r) - \frac{1}{r^2} R(r) = 0 \iff \]
\[ r^2 R''(r) + r R'(r) - R(r) = 0 \]

If we take as an ansatz $R(r) = C \cdot r^k$, we can clearly see that two independent solutions for the ODE which form the basis of the solution space are:
\[ \left\{ r, \frac{1}{r} \right\}, \]
and so the general solution for the radial component is:
\[ R(r) = cr + d \frac{1}{r}. \]
If we impose that when $u_\phi$ must be bounded near 0, we get that $D = 0$, and so in reality
\[ R(r) = cr. \]
We also have that at $z = 0$, $u_\phi = 0 \quad \forall r$ since the beam is fixed, so:
\[ 0 = u_\phi(0) = R(r) (0 \cdot A + B) \implies B = 0. \]
Thus:
\[ u_\phi = A c r z = E rz, \]
where $E := Ac$.

\textbf{Solution for b):} \\
\[ \nabla \vec{u} = \begin{pmatrix}
  0 & Ez & 0 \\
  - Ez & 0 & 0 \\
  0 & Er & 0
\end{pmatrix} \implies \TT{u} = \frac{1}{2} (\nabla \vec{u} + (\nabla \vec{u})^T) = \frac{1}{2} \begin{pmatrix}
  0 & 0 & 0 \\
  0 & 0 & Er \\
  0 & Er & 0
\end{pmatrix}. \]

\textbf{Solution for c):} \\
We can get the stress tensor from the strain tensor via Hooke's law:
\[ \TT{\sigma} = 2 \mu \TT{u} + \lambda (\Tr \TT{u}) \TT{I}, \]
but since $\nabla \cdot \vec{u} = 0$, our expression simplifies to:
\[ \TT{\sigma} = 2 \mu \TT{u} = \begin{pmatrix}
  0 & 0 & 0 \\
  0 & 0 & E \mu r \\
  0 & E \mu r & 0
\end{pmatrix}. \]
We are now in good position to impose the boundary condition of the stress tensor at the end of the beam ($z = L$):
\[ \sigma_L \hat{e}_\phi = [\TT{\sigma} \cdot \hat{e}_z]_{r = R} = \left[ \begin{pmatrix}
  0 \\
  \mu E r \\
  0
\end{pmatrix} \right]_{r = R} = \mu E R \hat{e}_\phi \implies E = \frac{\sigma_L}{\mu R}. \]

Therefore:
\[ \vec{u} = \left( 0, \frac{\sigma_L}{\mu R} rz, 0 \right), \]
\[ \TT{u} = \frac{1}{2} \begin{pmatrix}
  0 & 0 & 0 \\
  0 & 0 & \frac{\sigma_L}{\mu R} r \\
  0 & \frac{\sigma_L}{\mu R} r & 0
\end{pmatrix}, \]
\[ \TT{\sigma} = \begin{pmatrix}
  0 & 0 & 0 \\
  0 & 0 & \sigma_L \frac{r}{R} \\
  0 & \sigma_L \frac{r}{R} & 0
\end{pmatrix}. \]

\textbf{Solution for d):} \\
We can calculate the elastic energy as:
\[ u = \frac{1}{2} \TT{\sigma} : \TT{u} = \frac{\sigma_L^2}{2 \mu} \frac{r^2}{R^2}. \]
Given that $u = \frac{W}{V}$, we can integrate the elastic energy over the entire volume of the beam to find the work done by the applied stress:
\[ W = \int_V u \, dv = \frac{\sigma_L^2}{2 \mu R^2} \int r^3 d\phi dr dz = \frac{\sigma_L^2}{2 \mu R^2} \frac{2 \phi L}{4 R^2} = \frac{\sigma_L^2 \pi R^2 L}{4 \mu}. \]

\newpage

\begin{Problem}
  Consider a transverse plane wave, $\vec{u} = \vec{a} \exp[ i(\vec{k} \cdot \vec{r} - \omega t) ]$, propagating through an elastic solid. The solid is homogeneous, isotropic and has Lame coefficients $\lambda$ and $\mu$.

  \begin{enumerate}
    \item Show that the propagation of these waves does not involve volume changes.

    \item Assume now that the wave propagates along the $\hat{x}$ direction. Calculate the stress tensor and justify why we call these waves, \textit{shear waves}.

    \item Now consider a longitudinal wave. Show that $\curl \vec{u} = 0$. Hint: You may consider using the Levi-Civita symbol.
  \end{enumerate}

  Assume now that the wave propagates along the $\hat{x}$ direction. Confirm there are no off-diagonal terms in Cauchy's strain tensor. Hence, these waves propagate without shear distorsions; only normal stresses are involved. That's why we often refer to them as \textit{pressure or compressional waves}.
\end{Problem}

\textbf{Solution for a):} \\
\[ \nabla \vec{u} = \Tr \vec{\TT{u}} = i \exp[i(\vec{k} \cdot \vec{r} - \omega t)] \vec{a} \cdot \vec{k}, \]
as we calculate in the following subsection. But since $\vec{a}$ and $\vec{k}$ are orthogonal, we have that $\nabla \vec{u} = 0$, and therefore the volume of the elastic solid remains invariant.

\textbf{Solution for b):} \\
\[ \TT{u} = \frac{1}{2} [\nabla \vec{u} + (\nabla \vec{u})^t] = i \exp[ i(\vec{k} \cdot \vec{r} - \omega t) ] \frac{1}{2} \begin{pmatrix}
  2 a_x k_x & a_y k_x + a_x k_y & a_z k_x + a_x k_z \\
  a_x k_y + a_y k_x & 2 a_y k_y & a_z k_y + a_y k_z \\
  a_x k_z + a_z k_x & a_y k_z + a_z k_y & 2 a_z k_z
\end{pmatrix} = \]
\[ = i \exp[ i(\vec{k} \cdot \vec{r} - \omega t) ] \frac{1}{2} \left[ \begin{pmatrix}
  k_x \\
  k_y \\
  k_z
\end{pmatrix} \begin{pmatrix}
  a_x & a_y & a_z
\end{pmatrix} + \begin{pmatrix}
  a_x \\
  a_y \\
  a_z
\end{pmatrix} \begin{pmatrix}
  k_x & k_y & k_z
\end{pmatrix} \right]. \]

From the previous expression we have that $\Tr (\TT{u}) = i \exp[ i(\vec{k} \cdot \vec{r} - \omega t) ] \vec{k} \cdot \vec{a} = 0$, so by using Hooke's law, we get:
\[ \TT{\sigma} = i \exp[ i(\vec{k} \cdot \vec{r} - \omega t) ] 2 \mu \left[ \begin{pmatrix}
  k_x \\
  k_y \\
  k_z
\end{pmatrix} \begin{pmatrix}
  a_x & a_y & a_z
\end{pmatrix} + \begin{pmatrix}
  a_x \\
  a_y \\
  a_z
\end{pmatrix} \begin{pmatrix}
  k_x & k_y & k_z
\end{pmatrix} \right]. \]

Due to the fact that $\vec{k} = k \hat{x}$, so $k_y = k_z = 0$, we get:
\[ \TT{\sigma} = i \exp[ i(\vec{k} \cdot \vec{r} - \omega t) ] \mu \begin{pmatrix}
  0 & a_y k_x & a_z k_x \\
  a_y k_x & 0 & 0 \\
  a_z k_x & 0 & 0
\end{pmatrix}. \]

Since there are no diagonal terms, there are only shear stresses.

\textbf{Solution for c):} \\
\[ (\curl \vec{u})_i = \varepsilon_{ijk} \partial_j u_k = \varepsilon_{ijk} i k_j u_k = i (\vec{k} \cross \vec{u}), \]
but since for longitudinal waves $\vec{k}$ is parallel to $\vec{u}$ (because of their definition), we have that $\curl \vec{u} = 0$.

\textbf{Solution for d):} \\
\[ \vec{u} = a \exp[i(kx - \omega t)] \hat{x}. \]
Therefore:
\[ \nabla \vec{u} = aik \exp[i(kx - \omega t)] e_{xx}, \]
which means
\[ \TT{u} = aik \exp[i(kx - \omega t)] e_{xx}. \]
Applying Hooke's law, we have that the only non-zero components of $\TT{\sigma}$ are:
\[ \sigma_{xx} = (2 \mu + \lambda) u_{xx}, \]
\[ \sigma_{yy} = \sigma_{zz} = \lambda u_{xx}. \]
We have confirmed that $\TT{\sigma}$ is diagonal, which means there are only normal stresses (no shearing).

\end{document}
