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

\input{../preamble.tex}

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

\begin{document}

\maketitle

\begin{Problem}
  Consider a solid sphere of constant density $\rho$ and undeformed radius $R$, subjected to its own gravitational force. It is made of an elastically homogeneous and isotropic material of Young's modulus $Y$ and Poisson's ratio $\nu$.

  \begin{enumerate}
    \item Determine the displacement field of the material particles in the sphere.
    \item Compute the corresponding strain and stress fields.
  \end{enumerate}

  \underline{Note:} The gravitational force per unit volume experienced by a material particle is: $\vec{f} = \rho \vec{g} = - \rho g \frac{r}{R} \hat{e}_r$, where $g = \frac{4}{3} \pi G \rho R$, with $G$ the gravitational constant.
\end{Problem}

\Solution
The displacement field in spherical coordinates will be $\vec{u} = (u_r(r), 0, 0)$ due to the symmetry of the problem.

Let's use Navier-Cauchy's equation:
\[ \vec{f} + \mu \vec{\nabla}^2 \vec{u} + (\lambda + \mu) \vec{\nabla} (\vec{\nabla} \cdot \vec{u}) = 0 \]
which in spherical coordinates becomes:
\[ \begin{pmatrix}
  - \rho g \frac{r}{R} \\
  0 \\
  0
\end{pmatrix} + \mu \begin{pmatrix}
  \partial^2_{rr} u_r + \frac{2}{r} \partial_r u_r - \frac{2}{r^2} u_r \\
  0 \\
  0
\end{pmatrix} + (\lambda + \mu) \begin{pmatrix}
  \partial^2_{rr} u_r + \frac{2}{r} \partial_r u_r - \frac{2}{r^2} u_r \\
  0 \\
  0
\end{pmatrix} = 0 \iff \]
\[ \iff - \rho g \frac{r}{R} + (\lambda + 2 \mu) \left( \partial^2_{rr} u_r + \frac{2}{r} \partial_r u_r - \frac{2}{r^2} u_r \right) = 0 \iff \]
\[ \iff r^2 \partial^2_{rr} u_r + 2 r \partial_r u_r - u_r = \frac{\rho g}{(\lambda + 2 \mu) R} r^3 =: k r^3. \]

If we take as an \textit{ansatz} the function
\[ u_r(r) := a \cdot r^b, \]
we can see that a particular solution to the ODE is
\[ u_r(r) = \frac{k}{10} r^3. \]

Due to the fact that the homogeneous part of the ODE has the solution space
\[ \{ A r + B \frac{1}{r^2} : A, B \in \mathbb{R} \}, \]
and the fact that since $u_r(r = 0) \neq \infty \implies B = 0$, we conclude that \[ \vec{u}(r) = \left( \frac{k}{10} r^3 + A r, 0, 0 \right). \]

Since we have
\[ \vec{\nabla} \vec{u} = \begin{pmatrix}
  \frac{3}{10} k r^2 + A & 0 & 0 \\
  0 & \frac{1}{10} k r^2 + A & 0 \\
  0 & 0 & \frac{1}{10} k r^2 + A
\end{pmatrix}, \]
Cauchy's strain tensor is:
\[ \TT{u} = \frac{1}{2} \left( \vec{\nabla} \vec{u} + (\vec{\nabla} \vec{u})^T \right) = \vec{\nabla} \vec{u}. \]

Via Hooke's law, the only non-zero components of the stress vector are the ones in the diagonal:
\[ \sigma_{ii} = 2 \mu u_{ii} + \lambda \Tr \TT{u} \implies \]
\[ \TT{\sigma} = \begin{pmatrix}
  \frac{6 \mu + 5 \lambda}{10} k r^2 + (3 \lambda + 2 \mu) A & 0 & 0 \\
  0 & \frac{2 \mu + 5 \lambda}{10} k r^2 + (3 \lambda + 2 \mu) A & 0 \\
  0 & 0 & \frac{2 \mu + 5 \lambda}{10} k r^2 + (3 \lambda + 2 \mu) A \\
\end{pmatrix}. \]

If we impose the boundary condition $\sigma_{rr} (r = R) = 0$ (free surface), we get:
\[ (3 \lambda + 2 \mu) A = \frac{6 \mu + 5 \lambda}{10} k R^2. \]

We can transform $Y$ and $\nu$ into the Lamé coefficients by applying the following transformation:
\[ \begin{cases}
  \lambda = \frac{Y \nu}{(1 - 2 \nu) (1 + \nu)}, \\
  \mu = \frac{Y}{2 (1 + \nu)}.
\end{cases} \]

\newpage

\begin{Problem}
  A cylindrical pipe of inner radius $R_0$, outer radius $R_1$, and Lame coefficients $\mu$ and $\lambda$, is subjected to an internal pressure $p_0$, an external pressure $p_1$, and a uniform tensile force per unit area $F_z/A$ along the symmetry axis of the pipe $z$. Consider the end of the pipe at $z = 0$ is clamped to a rigid wall.

  \begin{enumerate}
    \item Determine the displacement field corresponding to the elastic deformation of the pipe. Neglect gravity and corrections due to the finite length of the pipe.

    \item Compute the stress and strain fields corresponding to such deformation.
  \end{enumerate}
\end{Problem}

We'll consider the displacement field resulting from the hydrostatic pressure, and the one resulting from the tensile force.

\textbf{Displacement field resulting from the hydrostatic pressure:}

Due to the symmetry of the problem in this case, we have that $\vec{u} = (u_r(r), 0, 0)$ in cylindrical coordinates.

By applying the Navier-Cauchy equation, we get:
\[ (\lambda + 2 \mu) \frac{d}{dr} \left( \frac{1}{r} \frac{d}{dr} (r u_r) \right) \implies u_r = \alpha r + \beta \frac{1}{r}. \]

Therefore, we have that the only non-zero components of the strain tensor are:
\[ u_{rr} = \frac{d u_r}{dr} = \alpha - \beta \frac{1}{r^2}, \]
\[ u_{\phi\phi} = \frac{u_r}{r} = \alpha + \beta \frac{1}{r^2}. \]

By using Hooke's law, we get:
\[ \sigma_{rr} = 2 \alpha (\lambda + \mu) - 2 \beta \mu \frac{1}{r^2}, \]
\[ \sigma_{\theta \theta} = 2 \alpha (\lambda + \mu) + 2 \beta \mu \frac{1}{r^2}, \]
\[ \sigma_{zz} = 2 \alpha \lambda. \]

We can now impose the boundary conditions $\sigma_{rr}(z = R_0) = - p_0$, $\sigma_{rr}(z = R_1) = - p_1$, and we get:
\[ \alpha = \frac{p_0 R_0^2 - p_1 R_1^2}{2 (\lambda + \mu) (R_1^2 - R_0^2)}, \]
\[ \beta = \frac{(p_0 - p_1) R_0^2 R_1^2}{2 \mu (R_1^2 - R_0^2)}. \]

\textbf{Displacement field resulting from the tensible force:}

Due to the uniform force, we have that:
\[ \sigma_{zz} = \frac{F_z}{A}, \]
which is the only non-zero component of the stress tensor. Therefore, from Hooke's law we have that the only non-zero components of the strain tensor are:
\[ u_{zz} = \frac{1}{Y} \sigma_{zz} = \frac{F_z}{A Y}, \]
\[ u_{rr} = - \nu u_{zz} = - \frac{F_z \nu}{A Y}, \]
\[ u_{\theta \theta} = - \nu u_{zz} = - \frac{F_z \nu}{A Y}. \]

Now we can integrate (in cylindrical coordinates) the previous expressions to find the displacement field:
\[ u_{zz} = \frac{du_z}{dz} \implies u_z(z) = \frac{F_z}{AY} z + c, \]
and since $u_z(0) = 0$, we have:
\[ u_z(z) = \frac{F_z}{AY} z. \]

Also:
\[ u_{rr} = \frac{du_r}{dr} \implies u_r(r) = - \frac{F_z \nu}{A Y} r + c', \]
and since $u_{\theta \theta} = \frac{u_r(r)}{r} \implies c' = 0$, then:
\[ u_r(r) = - \frac{F_z \nu}{A Y} r \]

\textbf{Conclusion:}

Thanks to the superposition principle, we can sum the previous displacement fields to calculate the total displacement field:
\[ \vec{u}(r) = \begin{pmatrix}
  \left( \alpha - \frac{F_z \nu}{A Y} \right) r + \beta \frac{1}{r} \\
  0 \\
  \frac{F_z}{A Y} z
\end{pmatrix}. \]

As for the strain and stress tensors, we can do the same in order to get their total expressions:
\[ \TT{\sigma} = \begin{pmatrix}
  2 \alpha (\lambda + \mu) - 2 \beta \mu \frac{1}{r^2} & 0 & 0 \\
  0 & 2 \alpha (\lambda + \mu) + 2 \beta \mu \frac{1}{r^2} & 0 \\
  0 & 0 & 2 \alpha \lambda + \frac{F_z}{A}
\end{pmatrix}, \]
\[ \TT{u} = \begin{pmatrix}
  \alpha - \beta \frac{1}{r^2} - \frac{F_z \nu}{A Y} & 0 & 0 \\
  0 & \alpha + \beta \frac{1}{r^2} - \frac{F_z \nu}{A Y} & 0 \\
  0 & 0 & \frac{F_z}{A Y}
\end{pmatrix}. \]

\end{document}
