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

\input{../preamble.tex}

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

\begin{document}

\maketitle

\begin{Problem}
  One of the hallmarks of the linear regime is the superposition principle. In this problem, we are going to use superposition to find the relation between the bulk modulus $K$, Young's modulus $Y$ and Poisson's ration $\nu$.

  Consider a rectangular block subjected to uniform compressive stresses $-P$ on each face. The equilibrium sides of the block along $x$, $y$ and $z$ are $l$, $h$ and $w$, respectively, and the corresponding length changes are $\Delta l$, $\Delta h$ and $\Delta w$.

  \begin{enumerate}[a)]
    \item Find the strain along $x$ using Hooke's law as we learnt it in introductory courses (that is, $\sigma_{xx} = Y u_{xx}$ and $u_{yy} = u_{zz} = - \nu u_{xx}$). You will be using superposition since the strain along $x$ is the sum of three contributions, one coming from the compressive stress along $x$ and two additional contributions coming from the compressive stresses along $y$ and $z$.

    Confirm that by using the inverted version of Hooke's law for isotropic materials we obtain the same answer.

    \item The strains along $y$ and $z$ are identical to that along $x$. Find the bulk modulus of the material as a function of $Y$ and $\nu$. Realize our result is identical to that obtained in class in an alternative way.
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):} \\
As the only contact force is pressure, the only components of the stress tensor will be the ones in the diagonal, which will be equal to $-P$.

If we only consider the compressive stress along $x$, we get:
\[ u_{xx}^1 = \frac{1}{Y} \sigma_{xx} = - \frac{1}{Y} P. \]

However, we also have to consider the strain caused by the stresses in the $y$ and $z$ directions:
\[ \begin{cases}
  \displaystyle u_{xx}^2 = - \nu u_{yy}^2 = - \frac{\nu}{Y} \sigma_{yy} = \frac{\nu}{Y} P, \\[2ex]
  \displaystyle u_{xx}^3 = - \nu u_{zz}^3 = - \frac{\nu}{Y} \sigma_{zz} = \frac{\nu}{Y} P.
\end{cases} \]

So, by the superposition principle:
\[ u_{xx} = u_{xx}^1 + u_{xx}^2 + u_{xx}^3 = \frac{P}{Y} \left( 2 \nu - 1 \right). \]

We can also calculate the strain along $x$ with the inverted version of Hooke's law for isotropic materials:
\[ u_{ij} = \frac{1 + \nu}{Y} \sigma_{ij} - \frac{\nu}{Y} \, \Tr \TT{\sigma} \, \delta_{ij}. \]

By using it, we obtain:
\[ u_{xx} = \frac{1}{Y} \left( (1 + \nu) \sigma_{xx} - \nu \, \Tr \TT{\sigma} \, \delta_{xx} \right) = \frac{1}{Y} \left( - (1 + \nu) P + 3 \nu P \right) = \]
\[ = \frac{P}{Y} \left( - 1 - \nu + 3 \nu \right) = \frac{P}{Y} \left( 2 \nu - 1 \right) \]
which is precisely what we got before by using the superposition principle and Hooke's law we learned in introductory courses.

\textbf{Solution for b):} \\
From the previous result, we obtain:
\[ \Tr \TT{u} = 3 P \frac{2 \nu - 1}{Y} \notate[X]{{}\implies{}}{1.25}{\scriptstyle \Tr \TT{u} \, \approx \, \frac{\Delta V}{V}} P \frac{V}{\Delta V} \approx \frac{1}{3} \frac{Y}{2 \nu - 1}. \]

And by the definition of the bulk modulus, we conclude that
\[ K = - V \left( \frac{\partial P}{\partial V} \right)_T \approx - V \frac{\Delta P}{\Delta V} \approx \frac{Y}{3 (1 - 2 \nu)} \]
which is the same result we derived in class.

\newpage

\begin{Problem}
  Consider the class example we referred to as ``constrained settling''. We are going to tackle the problem here in an alternative way to how we did it in class.

  \begin{enumerate}[a)]
    \item Start by solving the Navier-Cauchy equation to obtain the displacement field.
    \item Then obtain the strain and stress tensors.
    \item Why do you think Lautrup refers to this example as an ``elastic sea''?
  \end{enumerate}
\end{Problem}

\Solution
The Navier-Cauchy equation is:
\[ \vec{f} + \mu \nabla^2 \vec{u} + (\lambda + \mu) \nabla (\nabla \cdot \vec{u}) = 0. \]

Since the walls are slippery, they allow vertical but not horizontal displacements. This indicates us that the displacement field will be of the form $\vec{u} = (0, 0, u_z(z))$. By imposing the Navier-Cauchy equation to this expression, we get the following:
\[ 0 = \begin{pmatrix}
  0 \\
  0 \\
  - \rho g
\end{pmatrix} + \mu \begin{pmatrix}
  0 \\
  0 \\
  u_z''(z)
\end{pmatrix} + (\lambda + \mu) \begin{pmatrix}
  0 \\
  0 \\
  u_z''(z)
\end{pmatrix} \implies \]
\[ \implies \rho g = (\lambda + 2 \mu) u_z''(z) \implies u_z''(z) = \frac{\rho g}{\lambda + 2 \mu} =: \frac{1}{D} \implies \]
\[ \implies u'_z(z) = \frac{1}{D} z + C \implies u_z(z) = \frac{1}{2D}z^2 + Cz + B \]

where $C, B$ are constants that are determined by the boundary conditions.

In our case, our boundary conditions are the following ones:
\[ \begin{cases}
  u_z(0) = 0 \implies B = 0 \\
  [ \TT{\sigma} \cdot \hat{n} ] = 0.
\end{cases} \]

Let's calculate the strain tensor:
\[ \TT{u} = \frac{1}{2} (\nabla \vec{u} + (\nabla \vec{u})^T) \]
where
\[ \nabla \vec{u} = \begin{pmatrix}
  0 & 0 & 0 \\
  0 & 0 & 0 \\
  0 & 0 & \frac{z}{D} + C
\end{pmatrix}. \]

Therefore:
\[ \TT{u} = \begin{pmatrix}
  0 & 0 & 0 \\
  0 & 0 & 0 \\
  0 & 0 & \frac{z}{D} + C
\end{pmatrix}. \]

We can then calculate the stress vector using Hooke's law:
\[ \sigma_{ij} = 2 \mu u_{ij} + \lambda \, \Tr \TT{u} \, \delta_{ij} \implies \]
\[ \implies \TT{\sigma} = \left( \frac{z}{D} + C \right) \begin{pmatrix}
  \lambda & 0 & 0 \\
  0 & \lambda & 0 \\
  0 & 0 & \lambda + 2 \mu
\end{pmatrix} \]

Now we can impose the boundary condition $[\TT{\sigma} \cdot \hat{n}] = 0$. Since the interface is a free surface (we neglect atmospheric pressure), we have that $\TT{\sigma}_2 = 0$, which means that:
\[ \TT{\sigma}_1 \hat{n} = 0 \implies \sigma_{iz}(h) = 0 \quad \forall i. \]

In particular, $\sigma_{zz}(h) = 0$, and this means
\[ C = - \frac{h}{D}. \]

In conclusion, substituting $C$ and $D$ into the expressions we found:
\[ \begin{cases}
  \vec{u} = \begin{pmatrix}
    0 \\
    0 \\
    \frac{1}{D} \left( \frac{1}{2} z^2 - hz \right)
  \end{pmatrix} \\
  \TT{u} = \begin{pmatrix}
    0 & 0 & 0 \\
    0 & 0 & 0 \\
    0 & 0 & \frac{1}{D} (z - h)
  \end{pmatrix} \\
  \TT{\sigma} = \frac{\lambda}{D} (z - h) \begin{pmatrix}
    \lambda & 0 & 0 \\
    0 & \lambda & 0 \\
    0 & 0 & \lambda + 2 \mu
  \end{pmatrix}.
\end{cases} \]

Lautrup refers to this example as an elastic sea because $p_z = - \sigma_{zz} = \rho g (h - z)$, and $p_z$ increases linearly with depth like a fluid at rest.

\newpage

\begin{Problem}
  Consider the situation studied in problem 2: a homogeneous and isotropic elastic solid with denisty $\rho$ inside a container with rigid walls. However, in this case, the container is cylindrical and not a prism, and there is friction between the elastic solid and the walls. Hence, $\sigma_{zr} (r = R) = \mu_s \sigma_{zz} (r = R)$, where $R$ is the radius of the circular cross-section and $\mu_s$ is the friction coefficient. There is still gravity; the corresponding specific force is $\vec{g} = g \hat{z}$. Note the $z$-axis runs along the cylinder and points downwards.

  \begin{enumerate}[a)]
    \item Discuss how friction affects both the strain and stress tensors. What new components arise in these tensors relative to the case without friction?

    \item Now consider a thin slice of elastic material inside the cylindrical container; this slice will have cross-sectional area $\pi R^2$ and height $\Delta z$.

    Apply the condition of mechanical equilibrium to this slice, assuming that $\sigma_{zz}$ is uniform across the circular cross-section and that $\sigma_{rr} = \sigma_{\theta \theta} = k \sigma_{zz}$, with $k$ a constant, and show that
    \[ \frac{d \sigma_{zz}}{dz} = - \rho g - \frac{2 \mu_s k}{R} \sigma_{zz}. \]

    \item Integrate this equation and show that
    \[ p_z = \rho g \lambda \left( 1 - e^{- \frac{z}{\lambda}} \right) \]
    where $\lambda = \frac{R}{2 \mu_s k}$. Note we have assumed that at the top of the solid $\sigma_{zz} = 0$.

    \item Consider the limiting cases $z \ll \lambda$ and $z \gg \lambda$ and discuss the physics in each case. Doing this illustrates the physical significance of $\lambda$ and what friction brings to the problem.
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):} \\
Due to friction, $\vec{u} = (0, 0, u_z(r, z))$, so in adition to the dependence on z, there's now an r-dependence too.

\[ \vec{\nabla} \vec{u} = \begin{pmatrix}
  0 & 0 & \partial_r u_z \\
  0 & 0 & 0 \\
  0 & 0 & \partial_z u_z
\end{pmatrix} \implies \TT{u} = \frac{1}{2} (\vec{\nabla} \vec{u} + (\vec{\nabla} \vec{u})^T) = \begin{pmatrix}
  0 & 0 & \frac{1}{2} \partial_r u_z \\
  0 & 0 & 0 \\
  \frac{1}{2} \partial_r u_z & 0 & \partial_z u_z
\end{pmatrix}. \]

We can now use Hooke's law:
\[ \TT{\sigma} = 2 \mu \TT{u} + \lambda (\Tr \TT{u}) \TT{I} \implies \]
\[ \TT{\sigma} = \begin{pmatrix}
  \lambda \partial_z u_z & 0 & \mu \partial_r u_z \\
  0 & \lambda \partial_z u_z & 0 \\
  \mu \partial_r u_z & 0 & (2 \mu + \lambda) \partial_z u_z
\end{pmatrix}. \]

\textbf{Solution for b):} \\
The local condition for mechanical equilibrium is
\[ \vec{f} + \nabla \cdot \TT{\sigma}^T = 0 \quad \forall \text{ material particles}. \]

If we integrate over volume $V$:
\[ \int_V \vec{f} dv' + \int_V \vec{\nabla} \cdot \TT{\sigma}^T dv' = \int_V \vec{F} dv' + \oint_A \TT{\sigma} \cdot \vec{dS} = 0, \]
where $V$ is a cylindrical slice of the material ($|V| = \pi R^2 \Delta z$).

\[ \int_V \vec{f} dv' = \int_V \rho \vec{g} dv' = \hat{e}_z \rho g \pi R^2 \Delta z. \]
\[ \oint_A \TT{\sigma} \cdot \vec{dS} = \int_{A_1} \TT{\sigma} \vec{dS} + \int_{A_2} \TT{\sigma} \vec{dS} + \int_{A_\perp} \TT{\sigma} \vec{dS}, \]
where $A_1$, $A_2$ are the circular surfaces at the top and at the bottom, and $A_\perp$ is the lateral surface.

For the top and bottom surfaces, we have:
\[ \int_{A_i} \TT{\sigma} \cdot \vec{dS} = \int_{A_i} (-1)^i \TT{\sigma}_{rz}(z_i) \hat{e}_r r d\theta dr + \int_{A_i} (-1)^i \sigma_{zz}(z_i) \hat{e}_z r d\theta dr, \]
and since $\sigma_{zz} \neq f(r)$ because we've supposed that it is uniform across the entire section, we have:
\[ \int_{A_i} \TT{\sigma} \cdot \vec{dS} = 0 + \int_{A_i} (-1)^i \sigma_{zz}(z_i) \hat{e}_z r d\theta dr = (-1)^i \hat{e}_z \sigma_{zz}(z_i) R^2 \pi \]

For the lateral surface, we have:
\[ \int_{A_\perp} \TT{\sigma} \cdot \vec{dS} = \int_{A_\perp} \sigma_{rr} R d\theta dz \hat{e}_r + \int_{A_\perp} \sigma_{zr}(R) R d\theta dz \hat{e}_z = \]
\[ = 0 + \mu_S K R \hat{e}_z \int_{z}^{z + \Delta z} \sigma_{zz} dz' \int_{0}^{2\pi} d\theta \approx 2 \pi R \mu_S k \hat{e}_z \sigma_{zz} \Delta z. \]

Putting it all together:
\[ \hat{e}_z (\rho g \pi R^2 \Delta z - \sigma_{zz}(z) \pi R^2 + \sigma_zz{z + \Delta z} \pi R^2 + 2\pi R \mu_S k \sigma_{zz} \Delta z) = 0 \implies \]
\[ \implies \pi R^2 \frac{\sigma_{zz}(z + \Delta z) - \sigma_{zz}(z)}{\Delta z} = - \rho g \pi R^2 - 2 \pi R \mu_s k \sigma_{zz}. \]

Taking the limit for $\Delta z \to 0$:
\[ \pi R^2 \frac{d \sigma_{zz}}{dz} = - \rho g \pi R^2 - 2 \pi R \mu_S k \sigma_{zz} \implies \]
\[ \implies \frac{d\sigma_{zz}}{dz} = - \rho g - \frac{2 \mu_s k}{R} \sigma_{zz}. \]

\textbf{Solution for c):} \\
We'll first solve the homogeneous ODE
\[ f'(z) + \frac{1}{\lambda} f(z) = 0. \]

This is a linear ODE with known solution
\[ f_h(z) = e^{- \frac{z}{\lambda}}. \]

We can then solve the full ODE with the constant variations method: let's suppose the solution to the full ODE is $\sigma_{zz}(z) = f(z) = f_h(z) g(z)$. Then:
\[ f_h'(z) g(z) + f_h(z) g'(z) = f'(z) = - \rho g - \frac{1}{\lambda} f_h(z) g(z) \implies \]
\[ \implies \cancel{- \frac{1}{\lambda} f_h(z) g(z)} + g'(z) f_h(z) = - \rho g \cancel{- \frac{1}{\lambda} f_h(z) g(z)} \implies \]
\[ \implies g'(z) = - \rho g e^{\frac{z}{\lambda}} \implies g(z) = C - \rho g \lambda e^{\frac{z}{h}} = C - \rho g \lambda \frac{1}{f_h(z)} \implies \]
\[ \implies \sigma_{zz}(z) = f(z) = f_h(z) \left( C - \rho g \lambda \frac{1}{f_h(z)} \right) = C f_h(z) - \rho g \lambda = C e^{-\frac{z}{h}} - \rho g \lambda. \]

If we impose $\sigma_{zz}(0) = 0$:
\[ 0 = \sigma_{zz}(0) = C - \rho g \lambda \implies C = \rho g \lambda, \]
and thus:
\[ \sigma_{zz}(z) = \rho g \lambda \left( e^{-\frac{z}{h}} - 1 \right). \]

Since $p_z = - \sigma_{zz}$, we have shown that the statement is true.

\textbf{Solution for d):} \\
$\lambda = \frac{R}{2 \mu_S k}$ is a characteristic length scale ($\mu_S$, $k$ are dimensionless). Using $\mu_s \approx 0.5$, $k \approx 1$, we find $\lambda \approx R$.

To discuss the case in which $z \ll \lambda$, we can approximate $p_z$ via a truncated Taylor series:
\[ p_z(z) = \rho g \lambda \left( \frac{z}{\lambda} + \mathcal{O}\left(\frac{z}{\lambda}\right)^2 \right) \approx \rho g z, \]
which is the behavior in the absence of friction.

If instead $z \gg \lambda$, this means $\frac{z}{\lambda} \gg 1$ and therefore $e^{- \frac{z}{h}} \ll 1$. Thus:
\[ e^{- \frac{z}{h}} \approx 0 \implies p_z(z) \approx \rho g \lambda, \]
which is a constant value.

Therefore, we can conclude the pressure saturates for sufficiently large $z$. Friction supports the weight of the elastic material for sufficiently light columns.

\end{document}
