diff --git a/quad8/continuummechanics/homework/hw5/main.pdf b/quad8/continuummechanics/homework/hw5/main.pdf
new file mode 100644
index 0000000..ec6c37f
--- /dev/null
+++ b/quad8/continuummechanics/homework/hw5/main.pdf
Binary files differ
diff --git a/quad8/continuummechanics/homework/hw5/main.tex b/quad8/continuummechanics/homework/hw5/main.tex
new file mode 100644
index 0000000..80dcbfc
--- /dev/null
+++ b/quad8/continuummechanics/homework/hw5/main.tex
@@ -0,0 +1,201 @@
+\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}
