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

\input{../preamble.tex}

\title{Homework 7\\Continuum Mechanics}
\author{Adrià Vilanova Martínez}
\date{May 16, 2021}

\begin{document}

\maketitle

\begin{Problem}
  In this problem we are going to work a bit with the continuity equation.

  \begin{enumerate}[a)]
    \item Show that constant density implies the fluid is incompressible. That is, show that $\rho = \text{cte.} \implies \div \vec{v} = 0$.

    \item Now consider an incompressible fluid. Show that this implies that the Lagrangian derivative of the density is zero. That is, that $\frac{d\rho}{dt} = 0$.
  \end{enumerate}

  This means that the density of a fluid particle, which moves with the fluid, has constant density. It does not mean that the density of a fixed fluid region is constant. In fact, for incompressible fluids, the local (or Eulerian) rate of change of the density is related to its spatial variation, that is, $\frac{\partial \rho}{\partial t} = - \vec{v} \cdot \grad \rho$.
\end{Problem}

\textbf{Solution for a):} \\
The continuity equation is
\[ \frac{\partial \rho}{\partial t} + \div (\rho \vec{v}) = 0. \]
By imposing $\rho = \text{cte.}$, we obtain:
\[ 0 + \rho \div \vec{v} = 0 \implies \div \vec{v} = 0. \]

\textbf{Solution for b):} \\
An alternative expression for the continuity equation shown in theory class is as follows:
\[ \frac{d \rho}{dt} + \rho \div \vec{v} = 0. \]
This was derived easily by using the identity for the divergence of a scalar fields times a vectorial field, and also by using the definition of the total derivative (also known as material derivative).

Since the fluid is incompressible, this means that $\div \vec{v} = 0$, and therefore:
\[ \frac{d \rho}{dt} = 0. \]

\begin{Problem}
  In this problem we are going to work a bit with the equation of motion of a fluid. That is, with Newton's second law applied to a material particle.

  \begin{enumerate}[a)]
    \item Start by using index notation and showing that
    \[ \div (\rho \vec{v} \vec{v}) = \rho \vec{v} \cdot \grad \vec{v} + \vec{v} \div (\rho \vec{v}). \]
  \end{enumerate}
\end{Problem}

\Solution
The $j$-component of the right-hand side in index notation is:
\[ (\text{RHS})_j = \rho v_i \partial_i v_j + v_j \partial_i (\rho v_i) = \rho v_i \partial_i v_j + v_i v_j \partial_i \rho + \rho v_j \partial_i v_i, \]
and the $j$-component of the left-hand side is:
\[ (\text{LHS})_j = \partial_i ( \rho v_i v_j ) = v_i v_j \partial_i \rho + \rho v_j \partial_i v_i + \rho v_i \partial_i v_j. \]

Both expressions are the same $\forall j$, so $(\text{LHS}) = (\text{RHS})$.

\begin{FreeProblem}
  \begin{enumerate}[a)]
    \setcounter{enumi}{1}
    \item Then use what we called in class Reynolds' transport theorem, which is nothing but Leibniz's rule generalized to 3-dimensions, together with the continuity equation, to show that
    \[ \frac{d}{dt} \int_{V(t)} \rho \vec{v} \, dv = \int_{V(t)} \rho \frac{d \vec{v}}{dt} \, dv \]
    where we have written $V(t)$ to emphasize that the volume co-moves with the fluid.

    Using this result, Newton's second law applied to a material particle becomes:
    \[ \rho \frac{d \vec{v}}{dt} = \vec{f}^* = \vec{f} + \div \TT{\sigma} = \rho \left( \frac{\partial \vec{v}}{\partial t} + \vec{v} \cdot \grad \vec{v} \right) \]
    where we have used the relation between total (Lagrangian) and local (Eulerian) accelerations in the last step, and the fact that the stress tensor is symmetric. This equation governs the behavior of all continuous matter.
  \end{enumerate}
\end{FreeProblem}

\Solution
Via Reynolds' transport theorem, we have:
\[ \frac{d}{dt} \int_{V(t)} \rho \vec{v} \, dv = \int_{V(t)} \partial_t (\rho \vec{v}) \, dv + \int_{\partial V(t)} (\vec{v} \cdot n) \rho \vec{v} \, dS = \]
\[ = \int_{V(t)} \left( \rho \frac{d \vec{v}}{dt} + \frac{\partial \rho}{\partial t} \vec{v} \right) \, dv + \int_{\partial V(t)} (\vec{v} \cdot n) \rho \vec{v} \, dS \notate[X]{{}={}}{1}{\text{\scriptsize Eq. of continuity}} \]
\[ = \int_{V(t)} \rho \frac{d \vec{v}}{dt} \, dv - \int_{V(t)} \div (\rho \vec{v}) \, dv + \int_{\partial V(t)} (\vec{v} \cdot n) \rho \vec{v} \, dS \notate[X]{{}={}}{1}{\text{\scriptsize Divergence th.}} \]
\[ = \int_{V(t)} \rho \frac{d \vec{v}}{dt} \, dv - \int_{\partial V(t)} (\rho \vec{v} \cdot n) \, dS + \int_{\partial V(t)} (\vec{v} \cdot n) \rho \vec{v} \, dS = \int_{V(t)} \rho \frac{d \vec{v}}{dt} \, dv. \]


\begin{FreeProblem}
  \begin{enumerate}[a)]
    \setcounter{enumi}{2}
    \item Let's now consider a fluid. We first separate out of the stress tensor the part corresponding to the pressure stresses, which are the only ones acting in the absence of acceleration, that is, for a fluid at rest or in uniform translational motion. Then:
    \[ \sigma_{ij} = -p \delta_{ij} + \sigma'_{ij} \]
    where $\TT{\sigma}'$ is called the viscosity stress tensor, which is the part of the stress tensor resulting from the deformation of the elements of the fluid. Since $\TT{\sigma}$ is symmetric, and so is $-p \TT{I}$, the viscosity stress tensor $\TT{\sigma}'$ is also symmetric. In addition, $\TT{\sigma}' = f(\TT{e})$, where $\TT{e} = \TT{t} + \TT{d}$ is the strain rate tensor [remember $\TT{G} = \text{grad} \, \vec{v} = \TT{e} + \TT{w}$], with $\TT{t}$ and $\TT{d}$ its spherical and deviatoric parts, respectively.

    Show that for a Newtonian fluid, the $ij$ component of the viscosity stress tensor is:
    \[ \sigma'_{ij} = A_{ijkl} e_{kl} = 2A e_{ij} + B e_{ll} \delta_{ij} \]
    where $A_{ijkl}$ is a fourth rank tensor, and $A$ and $B$ are fluid properties. We call $A$ the viscosity (we usually denote it as $\eta$), and define $\xi = \frac{2}{3} \eta + B$ as the second viscosity.

    \textit{Hint}: use that fluids are isotropic; this imples that $A_{ijkl}$ is an isotropic tensor. Then use that $\TT{\sigma}'$ is symmetric. Note this proof mimics the derivation of Hooke's law for linearly and isotropic elastic materials.

    With these definitions of $\eta$ and $\xi$, we have:
    \[ \sigma'_{ij} = \eta \left( 2 e_{ij} - \frac{2}{3} e_{ll} \delta_{ij} \right) + \xi e_{ll} \delta_{ij}. \]

    We then see that for incompressible fluids: $\sigma'_{ij} = 2 \eta e_{ij}$.
  \end{enumerate}
\end{FreeProblem}

\Solution
Since $\TT{A}$ is an isotropic tensor, it must be expressed in terms of $\delta_{ij}$ (2nd-rank isotropic tensor) for it to be independent of the direction of the axis:
\[ A_{ijkl} = c_1 \delta_{ij} \delta_{kl} + c_2 \delta_{ik} \delta_{jl} + c_3 \delta_{il} \delta_{jk}. \]

Also, since we know that $\TT{\sigma}'$ is symmetric, this means $c_2 = c_3$, and then:
\[ A_{ijkl} = c_1 \delta_{ij} \delta_{kl} + c_2 (\delta_{ik} \delta_{jl} + \delta_{il} \delta_{jk}). \]

Let's call $c_1 =: B$ and $c_2 =: A$. This lets us conclude:
\[ \sigma_{ij}' = A_{ijkl} e_{kl} = (c_1 \delta_{ij} \delta_{kl} + c_2 (\delta_{ik} \delta_{jl} + \delta_{il} \delta_{jk})) e_{kl} = c_1 \delta_{ij} e_{kk} + c_2 e_{ij} + c_2 e_{ji} \notate[X]{{}={}}{1}{\scriptstyle \TT{e} \text{ symmetric}} \]
\[ = 2 A e_{ij} + B e_{ll} \delta_{ij}. \]

\begin{FreeProblem}
  \begin{enumerate}[a)]
    \setcounter{enumi}{3}
    \item Use index notation to show that the divergence of the viscosity stress tensor is:
    \[ \div \TT{\sigma}' = \eta \nabla^2 \vec{v} + \left( \frac{\eta}{3} + \xi \right) \grad ( \div \vec{v} ). \]

    Using this fact, we arrive at the Navier-Stokes equation, which is nothing but Newton's second law (or the equation of motion) for a Newtonian-fluid particle:
    \[ \rho \left( \frac{\partial \vec{v}}{\partial t} + \vec{v} \cdot \grad \vec{v} \right) = \vec{f} - \grad p + \eta \nabla^2 \vec{v} + \left( \frac{\eta}{3} + \xi \right) \grad (\div \vec{v}). \]

    For incompressible fluids, we then have:
    \[ \rho \left( \frac{\partial \vec{v}}{\partial t} + \vec{v} \cdot \grad \vec{v} \right) = \vec{f} - \grad p + \eta \nabla^2 \vec{v}. \]

    For fluids at rest or in uniform translational motion this equation becomes the usual equation describing hydrostatic equilibrium: $\vec{f} = \rho \vec{g} = \grad p$. Note that this equation is also nothing but the expression of mechanical equilibrium: $\vec{f} + \div \TT{\sigma}^T = \vec{f} + \div \TT{\sigma} = 0$, considering $\TT{\sigma}$ is symmetric and that for fluids at rest or in uniform translational motion $\TT{\sigma} = - p \TT{I}$.

    There are other interesting forms and limiting cases of the Navier-Stokes equations; we've discussed some of them in class.
  \end{enumerate}
\end{FreeProblem}

\Solution
The right hand side can be transformed into the following expression:
\[ \text{RHS} = \left( \frac{4 \eta}{3} + \xi \right) (\grad (\div \vec{v})) - \eta \curl (\curl \vec{v}), \]
so the $j$-component of the right hand side in index notation is:
\[ (\text{RHS})_j = \left( \frac{4 \eta}{3} + \xi \right) \partial_j \partial_i v_i - \eta \varepsilon_{jbc} \partial_b \varepsilon_{cde} \partial_d v_e = \]
\[ = \left( \frac{4 \eta}{3} + \xi \right) \partial_j \partial_i v_i - \eta \varepsilon_{jbc} \varepsilon_{cde} \partial_b \partial_d v_e = \]
\[ = \left( \frac{4 \eta}{3} + \xi \right) \partial_j \partial_i v_i - \eta (\delta_{jd} \delta_{be} - \delta_{je} \delta_{bd}) \partial_b \partial_d v_e = \]
\[ = \left( \frac{4 \eta}{3} + \xi \right) \partial_j \partial_i v_i - \eta \delta_{jd} \delta_{be} \partial_b \partial_d v_e + \eta \delta_{je} \delta_{bd} \partial_b \partial_d v_e = \]
\[ = \left( \frac{4 \eta}{3} + \xi \right) \partial_j \partial_i v_i - \eta \partial_b \partial_j v_b + \eta \partial_b \partial_b v_j = \]
\[ = \left( \frac{\eta}{3} + \xi \right) \partial_j \partial_i v_i + \eta \partial_b \partial_b v_j. \]

The $j$-component of the left hand side in index notation is:
\[ (\text{LHS})_j = \partial_i \sigma'_{ij} = \partial_i \left( \eta \left( 2 e_{ij} - \frac{2}{3} e_{ll} \delta_{ij} \right) + \xi e_{ll} \delta_{ij} \right) = \]
\[ = \eta \left( \partial_i \partial_j v_i + \partial_i \partial_i v_j - \frac{2}{3} \partial_j \partial_l v_l \right) + \xi \partial_j \partial_l v_l = \]
\[ = \left( \frac{\eta}{3} + \xi \right) \partial_j \partial_i v_i + \eta \partial_b \partial_b v_j = \text{(RHS)}_j. \]

\begin{Problem}
  Consider the interface between two ``real'' fluids. We stated in class what the boundary conditions are for both velocity and stresses in this case. We wrote the continuity of tangential stresses at the interface as: $(\TT{\sigma}_1 \cdot \hat{n}) \cdot \hat{t} = (\TT{\sigma}_2 \cdot \hat{n}) \cdot \hat{t}$.

  \begin{enumerate}[a)]
    \item Start by showing that the condition can be written as:
    \[ (\TT{\sigma}_1' \cdot \hat{n}) \cdot \hat{t} = (\TT{\sigma}_2' \cdot \hat{n}) \cdot \hat{t}, \]
    where $\TT{\sigma}'$ is the viscosity stress tensor.

    \item Now consider that the fluids are incompressible, that the interface lies in the $xz$ plane, and that $\vec{v}$ is locally (near the interface) along the $x$-direction and a function of the $y$-coordinate only [$\vec{v} = (v_x(y), 0, 0)$]. Show that the continuity of tangential stresses can be written as:
    \[ \eta_1 \partial_y v_x^{(1)} = \eta_2 \partial_y v_x^{(2)}. \]

    \item If $\eta_1 > \eta_2$, sketch how the velocity profile for both fluids will look like near the interface.

    \item How will the velocity profile look like if fluid 2 is an ``ideal'' fluid?
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):} \\
By definition we have that $\TT{\sigma} = - p \TT{I} + \TT{\sigma}'$. Therefore:
\[ (\TT{\sigma} \cdot \hat{n}) \cdot \hat{t} = (\TT{\sigma}' \cdot \hat{n}) \cdot \hat{t} + p (\TT{I} \cdot \hat{n}) \cdot \hat{t} = (\TT{\sigma}' \cdot \hat{n}) \cdot \hat{t}, \]
since all the off-diagonal components of $\TT{I}$ are zero.

\textbf{Solution for b):} \\
Let's reproduce the proof done in class. In either one of the fluids we have
\[ \grad \vec{v} = \partial_y v_x(y) \hat{j} \hat{i} \longrightarrow \TT{e} = \frac{1}{2} \partial_y v_x(y) (\hat{j} \hat{i} + \hat{i} \hat{j}). \]
Since $\TT{\sigma}' = 2 \eta \TT{e}$, we obtain:
\[ \TT{\sigma}' = \eta \partial_y v_x(y) (\hat{j} \hat{i} + \hat{i} \hat{j}). \]
Finally, imposing the boundary condition which we proved in section a), taking into account that $\hat{n} = \hat{j}$ and choosing $\hat{t} = \hat{i}$, we have:
\[ \eta_1 \partial_y v_x^{(1)}(y) = \eta_2 \partial_y v_x^{(2)}(y), \]
which is what we wanted to prove.

\textbf{Solution for c):} \\
Since $\eta_1 > \eta_2$:
\[ \partial_y v_x^{(1)} < \partial_y v_x^{(2)}. \]

\begin{figure}[H]
  \centering
  \includegraphics[width=8cm]{vprofile_3c.png}
  \caption{Sketch of the velocity profile when $\eta_1 > \eta_2$.}
\end{figure}

\textbf{Solution for d):} \\
If fluid 2 is an ``ideal'' fluid, this means $\eta_2 = 0$, and therefore:
\[ \partial_y v_x^{(1)} = 0, \]
and this means $v_x^{(1)}$ will be constant locally near the interface.

We don't have more information about fluid 2, so we don't know its velocity profile.

\begin{figure}[H]
  \centering
  \includegraphics[width=8cm]{vprofile_3d.png}
  \caption{Sketch of the velocity profile when $\eta_2 = 0$.}
\end{figure}

\begin{Problem}
  (Water flowing down an inclined solid surface behaves as a Newtonian incompressible fluid.)

  Consider the flow field shown in figure 1.

  \begin{enumerate}[a)]
    \item If the velocity profile takes the form
    \[ u = U \left[ a + b \frac{y}{H} - \left( \frac{y}{H} \right)^2 \right] \]
    where $U$ is the velocity of the free surface, determine the constants $a$ and $b$.

    \item Confirm that the flow is incompressible.

    \item Is the flow irrotational? If not, find its vorticity.

    \item Compute the magnitude of the shear stress that water exerts on the solid surface and on the free surface.
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):} \\
Let's impose the boundary conditions to determine the constants. Since there isn't slip at the interface between the solid and the fluid, we have:
\[ 0 = u(y = 0) = a. \]
At the free surface, we can apply the boundary condition written in the problem statement:
\[ U = u(y = H) = U(b - 1) \implies b = 2. \]

Therefore:
\[ u = U \left[ 2 \frac{y}{H} - \left( \frac{y}{H} \right)^2 \right]. \]

\textbf{Solution for b):}
\[ \div \vec{v} = \div (u \hat{i}) = \partial_x u = 0. \]

\textbf{Solution for c):}
\[ \curl \vec{v} = \begin{vmatrix}
  \hat{i} & \partial_x & u \\
  \hat{j} & \partial_y & 0 \\
  \hat{k} & \partial_z & 0
\end{vmatrix} = \begin{pmatrix}
  0 \\
  \partial_z u \\
  - \partial_y u
\end{pmatrix} = \left( - 2U \frac{1}{H} + 2U \frac{y}{H^2} \right) \hat{k} = - \frac{2U}{H} \left( 1 - \frac{y}{H} \right) = \vec{w} \neq 0. \]
Therefore, the flow is rotational.

\textbf{Solution for d):} \\
Since $\TT{e} = \frac{1}{2} (\grad \vec{v} + (\grad \vec{v})^T)$, we have:
\[ \TT{\sigma} = - p \TT{I} + 2 \eta \TT{e} = -p \TT{I} + \eta \partial_y u (\hat{i} \hat{j} + \hat{j} \hat{i}) \implies \]
\[ \implies \sigma_{xy} = \eta \partial_y u = \frac{2 \eta U}{H} \left( 1 - \frac{y}{H} \right). \]

In conclusion:
\[ \begin{cases}
  \sigma_{xy}(0) = \dfrac{2 \eta U}{H}, \\
  \sigma_{xy}(H) = 0.
\end{cases} \]

\begin{Problem}
  In this problem, we are going to look at planar Poiseuille flow. Consider two parallel plates separated a distance $a$ along the $y$-axis and a Newtonian incompressible fluid of density $\rho$ and viscosity $\eta$ that flows between them in the positive $x$-direction. The flow is driven by a pressure difference $\Delta p$ applied over a length $L$.

  \begin{enumerate}[a)]
    \item Show that the velocity profile is:
    \[ v_x(y) = \left| \frac{\Delta p}{L} \right| \frac{1}{2 \eta} (ay - y^2). \]

    \item Obtain the flow rate per unit length-along-the-$z$-axis, $Q_{\text{length}}$.

    \item Show that the average fluid-speed, which is $\frac{Q_{\text{length}}}{a}$, is equal to $\frac{2}{3}$ the maximum speed.
  \end{enumerate}

  The flow rate and the cross-sectional area are often used to obtain the characteristic speed of the flow. In this problem, $Q_{\text{length}}$ and the plate-plate separation $a$ define a characteristic speed $U$, which is $\langle v_x \rangle$.
\end{Problem}

\Solution
Due to the symmetries of the problem, we have $\vec{v} = v_x(y) \hat{i}$. As we are in a 1D-flow in a stationary state, we have that $\partial_x p = c$, which means:
\[ \partial_x p = \frac{\Delta p}{L}. \]

If we impose the Navier-Stokes equation we get:
\[ 0 = \vec{f} - \grad p + \eta \nabla^2 \vec{v} \implies \]
\[ \implies \begin{cases}
  \frac{\Delta p}{L} = \eta \partial_{yy} v_x, \\
  \partial_y p = - \rho g, \\
  \partial_z p = 0.
\end{cases} \]

By integrating twice the first equation we get:
\[ v_x(y) = \frac{\Delta p}{L} \frac{y^2}{2 \eta} - c_1 \frac{y}{\eta} - \frac{c_2}{\eta} = 0. \]

Now, by imposing the no-slip boundary conditions in the walls, we get that:
\[ \begin{cases}
  \displaystyle 0 = v_x(0) = - \frac{c_2}{\eta} \implies c_2 = 0, \\
  \displaystyle 0 = v_x(a) = \frac{\Delta p}{L} \frac{a^2}{2 \eta} - c_1 \frac{a}{\eta} \implies c_1 = \frac{\Delta p}{L} \frac{a}{2},
\end{cases} \]
and thus:
\[ v_x(y) = \frac{\Delta p}{L} \frac{y^2}{2 \eta} + \frac{\Delta p}{L} \frac{ay}{2 \eta} = \left| \frac{\Delta p}{L} \right| \frac{1}{2 \eta} (ay - y^2). \]

The flow rate is:
\[ Q = \int_A \vec{v}  \cdot d\vec{S} = \int_Z \int_0^a v_x(y) \, dy \, dz \implies \]
\[ \implies Q_{\text{length}} = \left| \frac{\Delta p}{L} \right| \frac{1}{2 \eta} \int_0^a \left( ay - y^2 \right) \, dy = \left| \frac{\Delta p}{L} \right| \frac{a^3}{12 \eta}. \]

Finally, we have that the average fluis speed is:
\[ \langle v_x \rangle = \frac{1}{|[0, a]|} \int_0^a v_x(s) \, ds = \frac{1}{a} Q_{\text{length}} = \left| \frac{\Delta p}{L} \right| \frac{a^2}{12 \eta}. \]

We can get the maximum speed by imposing:
\[ v_x'(y) = 0 \implies y = \frac{a}{2} \implies v_x^{\text{max}} = \left| \frac{\Delta p}{L} \right| \frac{a^2}{8 \eta}. \]

In conclusion, combining the 2 previous results it is clear that:
\[ \langle v_x \rangle = \frac{2}{3} v_x^{\text{max}}. \]

\end{document}
