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

\input{../preamble.tex}

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

\showcorrectionstrue % Change "true" to "false" in order to show corrections as
                     % if they weren't corrections (in black instead of red).

\begin{document}

\maketitle

\begin{Problem}
  In this problem we are going to revisit the Venturi effect in the experimental set-up where we use manometer tubes to determine the pressure (see Fig. 1).

  Show that if the flow is ideal and potential, $h_A = h_B$. Assume the pressures at $A'$ and $B'$ are equal to $p_0$, and that the speed of the fluid at $A'$ and $B'$ is zero. Note how by assuming potential flow, which is vorticity-free, we are truly neglecting the no-slip boundary condition at the walls, where we know we generate vorticity in real fluids. In this case, there is significant flow through the manometric tubes and thus we no longer have hydrostatic equilibrium along $y$.

  This problem illustrates that to get physically meaningful results we must implicitly consider the role of viscous effects near the conduit walls. This is something we often do -assume viscous effects cause something that we must consider before treating the flow as ideal. Only by doing this will we be able to say something physically meaningful about the problem at hand. In the Venturi set-up in Fig. 1, we are approximating the flow profile as uniform in the cross-section, except in the vicinity near the solid walls. The transition to the condition of zero tangential velocity is then assumed to occur over a very narrow boundary layer. We relegate viscous effects to only affect within this thin fluid layer near the conduit walls. However, doing this is very important, as it prevents flow from penetrating the manometric tubes, thus guaranteeing that the pressure along $y$ is hydrostatic. The presence of a boundary layer is thus essential to the analysis we did in class, even if we did not explicitly considered it, and for it to describr reality; its presence, and thus the presence of viscous effects, is what enabled us to treat the flow as ideal to explain the experimentally observable fact that $h_B < h_A$.
\end{Problem}

\Solution
If the fluid is ideal, this means that it is incompressible and has viscosity $\eta = 0$.
%In class we derived the following general equations for this set-up, given that there is only velocity in the $z$-direction as a function of $r$:
%\[ \begin{cases}
%  0 = - \partial_z p + \eta (\partial_{rr} v_z + \frac{1}{r} \partial_r v_z), \\
%  \partial_y p = - \rho g,
%\end{cases} \]
%which in our case we can particularize as:
%\[ \begin{cases}
%  \partial_z p = 0, \\
%  \partial_y p = - \rho g.
%\end{cases} \]
%
%The first equation tells us that $p(z) = \text{const.}$, while the second one tells us $p(y) = - \rho g y$.

As the flow is potential, we can use the 2nd representation of Bernouilli's equation, which is valid everywhere in the fluid (we'll consider the fluid to be in a stationary state):
\[ \frac{1}{2} \rho v^2 + p + \rho \varphi = \text{const}. \]

We also have $\varphi = g y$, and since the velocity at the top of the tubes is zero, we can evaluate the previous expression in the pairs of points (A, A') and (B, B'):
\[ p_A + \frac{1}{2} \rho v_A^2 = p_{A'} + \rho g y_A = p_0 + \rho g y_A \]
\[ p_B + \frac{1}{2} \rho v_B^2 = p_{B'} + \rho g y_B = p_0 + \rho g y_B \]

Also, applying Bernouilli's equation in points $(A, B)$ we get the following equation which lets us connect the previous 2 equations:
\[ p_A + \frac{1}{2} \rho v_A^2 = p_B + \frac{1}{2} \rho v_B^2 \implies \]
\[ \implies p_0 + \rho g y_A = p_0 + \rho g y_B \implies y_A = y_B. \]

\begin{Problem}
  (The Coanda effect.) Place a cylindrical object under a liquid jet, but slightly off-axis, as shown in Fig. 2(a). We observe that the jet tends to stick to the obstacle and undergoes a deflection, while concomitantly, the wires holding up the cylinder tilt towards the jet, indicating there is an attractive force between the two. This is known as the Coanda effect and can be understood from the curvature of the streamlines in the jet: The pressure on the surface of the cylinder, $p_\text{in}$, is less than the surrounding atmospheric pressure, $p_\text{atm}$.

  Assume that instead of the jet we have a thin sheet of liquid in a plane parallel to the axis of the cylinder, as illustrated in Fig. 2(b). The thickness of the sheet is $e \ll R$, with $R$ the radius of curvature of the streamlines, the density of the fluid is $\rho$ and the speed at which it flows is $v$. From the pressure difference $p_\text{atm} - p_\text{in}$, estimate the attraction force per-unit-length-along-the-cylinder-axis.

  \textsc{Note}: The Coanda effect also allows explaining how a very light ball can be levitated within an air jet impinging at a small angle to the vertical slightly above the wall; this is often seen in some science museums. Just as in the case of the cylinder, the compensating force results from the curvature of the streamlines, which lowers the pressure, and not because of the impact of the jet of air. A comparable phenomenon is the \textit{teapot effect}: the liquid stream that flows from the spout of a teapot seems to be attracted to the spout's surface after having followed the curve of the spout instead of flowing directly into a cup. However, in this case, surface tension also plays a role; the contact between the liquid film and the teapot depends on whether the liquid wets or not the teapot surface.
\end{Problem}

\Solution
The force will be given by the acceleration of the particles turning. Basically, those particles will have a centripetal force which will be equal and opposite to that being felt by the cylindrical object.

Given that the density of the fluid is constant, the flow is incompressible. Let's consider a single particle in contact with the cylinder's surface. This particle will be experiencing an acceleration in the direction normal to the surface (towards the center of curvature) equal to
\[ \vec{a} = -\frac{v^2}{R} \hat{n}. \]
Thus, the force experienced by a particle is:
\[ \vec{f} = - \rho \frac{v^2}{R} \hat{n}. \]
Now, let's integrate this in cylindrical coordinates to get the force:
\[ \vec{F} = \int_S - \rho \frac{v^2}{R} \hat{n} dS' = L \int_0^{2 \theta_i} d\theta \, R \left( - \rho \frac{v^2}{R} \hat{n} \right) = \]
\[ = - L \rho v^2 \int_0^{2 \theta_i} d\theta \, \hat{n} = - L \rho v^2 \int_0^{2 \theta_i} d\theta \, (- \cos \theta \, \hat{i} - \sin \theta \, \hat{j}) = \]
\[ = - L \rho v^2 [ - \sin (2 \theta_i) \, \hat{i} + (\cos (2 \theta_i) - 1) \, \hat{j} ] = \]
\[ = - L \rho v^2 [ - 2 \sin \theta_i \cos \theta_i \, \hat{i} - 2 \sin^2 \theta_i \, \hat{j} ] = - 2 L \rho v^2 \sin \theta_i [ - \cos \theta_i \, \hat{i} - \sin \theta_i \, \hat{j} ] = \]
\[ = - 2 L \rho v^2 \sin \theta_i \, \hat{n}_{\theta_i} \implies \]
\[ \implies \frac{\vec{F}}{L} = - 2 \rho v^2 \sin \theta_i \, \hat{n}_{\theta_i}. \]

\correction{The only problem with this calculation is it only accounts for the particles near the cylinder. If we take into account all the particles of the flow (approximating $R + e \approx R$), we have to integrate the previous expression for all the streamlines, we get the correct answer, which is:
\[ \frac{\vec{F}}{L} = - 2 \rho v^2 e \sin \theta_i \hat{n}_{\theta_i}. \]}

\begin{Problem}
  An ideal fluid of density $\rho$ flows steadily through an axisymmetric pipe of decreasing cross section. The inlet and outlet cross-sectional areas are $A_1$ and $A_2 < A_1$, respectively, and the flow is incompressible.

  \begin{enumerate}[a)]
    \item If the fluid gets into the pipe with speed $U_1$, show, starting from the incompressibility condition, that the speed at the outlet is $U_2 = U_1 \frac{A_1}{A_2}$. Note this reflects the flow rate through the pipe is constant.

    \item Compute the force exerted by the fluid on the pipe.
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):} \\
Let's consider $V$ as the volume enclosed by the closed surface $\partial V = S_1 \cup S_2 \cup S_L$, where $S_1$ and $S_2$ are the cross-sectional surfaces with areas $A_1$ and $A_2$, and $S_L$ is the lateral surface along the pipe's wall between the two previous surfaces.

\[ \div \vec{v} = 0 \notate[X]{{}\implies{}}{1}{\scriptstyle \text{True at all points}} \int_V \div \vec{v} \, dv' = 0 \notate[X]{{}\implies{}}{1}{\scriptstyle \text{Stokes' theorem}} \int_{\partial V} \vec{v} \cdot d\vec{S} = 0 \notate[X]{{}\implies{}}{1}{\scriptstyle \partial V = S_1 \cup S_2 \cup S_L} \]
\[ \implies 0 = \left( \int_{\partial S_1} + \int_{\partial S_2} + \cancel{\int_{\partial S_L}} \right) \vec{v} \cdot d\vec{S} \lnotate[X]{{}={}}{1.2}{\scriptstyle \text{In } S_L, \, \vec{v} \perp d\vec{S}} \int_{\partial S_1} \vec{v} \cdot d\vec{S} + \int_{\partial S_2} \vec{v} \cdot d\vec{S} = \]
\[ = \int_{\partial S_1} (- U_1) \, dS + \int_{\partial S_2} U_2 \, dS = - U_1 A_1 + U_2 A_2 \implies \]
\[ \implies  U_2 = U_1 \frac{A_1}{A_2}. \]

\textbf{Solution for b):} \\
Given that the fluid is ideal, let's apply Bernoulli's equation along a streamline:
\[ p_1 + \frac{\rho v_1^2}{2} = p_2 + \frac{\rho v_2^2}{2} \implies \]
\[ \implies p_2 = p_1 + \frac{1}{2} \rho \left( v_1^2 - v_2^2 \right) = p_1 + \frac{1}{2} \rho v_1^2 \left( 1 - \left( \frac{A_1}{A_2} \right)^2 \right). \]

In order to calculate the force exerted by the fluid on the pipe, let's impose the conservation of momentum applied to volume $V$ fixed:
\[ \frac{d}{dt} \int_V \rho \vec{v} \cdot dV' = \int_V \partial_t (\rho \vec{v}) dV' \lnotate[X]{{}={}}{1}{\scriptstyle \text{stationarity}} 0, \]
\[ \frac{d}{dt} \int_V \rho \vec{v} \cdot dV' = - \oint_A \TT{\pi} \cdot \hat{n} \, dS. \]

Since $\TT{pi} = \rho \vec{v} \vec{v} - \TT{\sigma} = \rho \vec{v} \vec{v} - p \TT{I}$, we have:
\[ \oint_A (\rho \vec{v} \vec{v} + p \TT{I}) \cdot \hat{n} \, dS = 0. \]

Now, let's compute the force in each separate area:
\begin{itemize}
  \item In $S_1$, $\vec{v} = u_1 \hat{x}$, $\hat{n} = - \hat{x}$ and $p = p_1$, so:
  \[ \int_{S_1} (\rho u_1 \hat{x} (- u_1) - \hat{x} p_1) \, dS = - \hat{x} (\rho u_1^2 + p_1) A_1. \]

  \item In $S_2$, $\vec{v} = u_2 \hat{x}$, $\hat{n} = \hat{x}$ and $p = p_2$, so:
  \[ \int_{S_2} (\rho u_2 \hat{x} \cdot u_2 + \hat{x} p_2 ) \, dS = \hat{x} (\rho u_2^2 + p_2) A_2 \]

  \item In $S_L$, $\vec{v} \cdot \hat{n} = 0$, so $\rho \vec{v} \vec{v} \cdot \hat{n} = 0$.
\end{itemize}

Thus:
\[ \vec{F} = \int_{S_L} p \hat{n} \, dS = \hat{x} \left[ p_2 (A_1 - A_2) + \frac{1}{2} \rho u_1^2 A_1 \left( 1 - \frac{A_1}{A_2} \right)^2 \right]. \]

\begin{Problem}
  Consider an incompressible fluid steadily rotating at constant angular velocity $\Omega$ about the $z$-axis. The density of the fluid is $\rho$ and we are in the presence of the gravitational field of the Earth.

  \begin{enumerate}[a)]
    \item Show that the viscous term in the Navier-Stokes equation is identically equal to zero. This implies the equation of motion is Euler's equation.

    \item Obtain Bernouilli's equation in the rotating frame of reference. Does the resultant equation provide the pressure field (at any $r, z$), or is it only applicable along a streamline?
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):} \\
The viscous term in the Navier-Stokes equation for incompressible fluids is:
\[ \eta \nabla^2 \vec{v}. \]
Let's see that it is equal to zero. The velocity field will be
\[ \vec{v} = (0, v_\theta(r), 0)_{\{\hat{r}, \hat{\theta}, \hat{z}\}}. \]
This is because the problem states that the fluid is steadily rotating at constant angular velocity $\Omega$. In fact:
\[ v_\theta (r) = \Omega r. \]
Thus, calculating the laplacian in cylindrical coordinates (and taking into consideraion that the only non-negative partial derivative is $\partial_r v_\theta$) we get:
\[ \eta \nabla^2 \vec{v} = \eta \left[ \cancel{\partial_{rr} v_\theta} + \frac{1}{r} \partial_r v_\theta - \frac{1}{r^2} v_\theta \right] \hat{\theta} = \eta \left[ \frac{1}{r} \Omega - \frac{1}{r^2} r \Omega \right] \hat{\theta} = 0. \]

\textbf{Solution for b):} \\
Let's start with the Navier-Cauchy equation (in our case, Euler's equation):
\[ \cancel{\rho \partial_t \vec{v}} + \rho \vec{v} \cdot \grad \vec{v} = \vec{f} - \grad p. \]
We can use vector identity $\vec{v} \cdot \grad \vec{v} = - \vec{v} \cross \vec{\omega} + \grad(\frac{v^2}{2})$ and the fact that $\vec{f} = \rho \vec{g} = - \rho g \hat{k} \implies \vec{g} = - \grad \varphi$, where $\varphi = gz$, to show that:
\[ - \rho \vec{v} \cross \vec{\omega} = - \rho \grad(gz) - \grad p - \rho \grad(\frac{v^2}{2}) \implies \]
\[ \lnotate[X]{{}\implies{}}{1}{\scriptstyle \rho \text{ const.}} \grad(\frac{1}{2} \rho v^2 + p + \rho g z) = \rho \vec{v} \cross \vec{\omega} \implies \]
\[ \implies \grad(\frac{1}{2} \rho \Omega^2 r^2 + p + \rho g z) = \vec{v} \cross (2 \Omega \hat{k}) = 2 \Omega^2 r \hat{r} = \grad(\Omega^2 r^2) \implies \]
\[ \implies \Omega^2 r^2 \left( \frac{1}{2} \rho - 1 \right) + p + \rho g z = \text{const}. \implies \]
This equation is valid everywhere in the fluid, since the Navier-Stokes equation is valid everywhere in the fluid, and we haven't introduced any further requirements than the ones which are met everywhere in the fluid.

\correction{There has been a mistake I'm not able to see. The correct equation is slightly different:
\[ - \frac{1}{2} \rho \Omega^2 r^2 + p + \rho g z = \text{const}. \]}

\newpage

\begin{Problem}
  Multipolar expansion.

  \begin{enumerate}[a)]
    \item \underline{Uniform flow}. Consider a 2D flow in the $xy$-plane with $\vec{v} = U \hat{i}$. Show that in cartesian coordinates, the stream function is $\psi = U y$ and that the velocity potential is $\Phi = U x$. Note the streamlines are straight lines in the $x$-direction and that the $\Phi = \text{const.}$ lines are straight lines in the $y$-direction and perpendicular to the $\psi = \text{const.}$ lines.

    \item Now consider an axially symmetric flow with $\vec{v} = U \hat{e}_z$. Show that in cylindrical coordinates $(r, \varphi, z)$, the Stokes stream function and the velocity potential are, respectively, $\psi = - \frac{1}{2} r^2 U$ and $\Phi = U z$. Then show that in spherical coordinates $(r, \theta, \varphi)$, $\psi = U \frac{r^2}{2} \sin^2 \theta$ and $\Phi = U r \cos \theta$.
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):} \\
As seen in class, the stream function satisfies:
\[ \left.\begin{array}{r}
  U = v_x = \partial_y \psi \\
  0 = v_y = - \partial_x \psi
\end{array}\right\} \implies \psi = U y. \]

And the velocity potential satisfies:
\[ \left.\begin{array}{r}
  U = v_x = \partial_x \Phi \\
  0 = v_y = \partial_y \Phi
\end{array}\right\} \implies \Phi = U x. \]

\textbf{Solution for b):} \\
The stream function, in cylindrical coordinates, satisfies:
\[ \left.\begin{array}{r}
  U = v_z = - \frac{1}{r} \partial_r \psi \\
  0 = v_r = - \frac{1}{r} \partial_z \psi
\end{array}\right\} \implies \psi = - \frac{1}{2} U r^2. \]

And the velocity potential satisfies:
\[ \left.\begin{array}{r}
  U = v_z = \partial_z \Phi \\
  0 = v_r = \partial_r \Phi
\end{array}\right\} \implies \Phi = U z. \]

In spherical coordinates, the stream function satisfies:
\[ \left.\begin{array}{r}
  U \cos \theta = v_r = \frac{1}{r^2 \sin \theta} \partial_\theta \psi \\
  - U \sin \theta = v_\theta = - \frac{1}{r \sin \theta} \partial_r \psi \implies - U r \sin^2 \theta = \partial_r \psi
\end{array}\right\} \implies \]
\[ \implies \psi = \frac{1}{2} U r^2 \sin^2 \theta. \]

And finally, the velocity potential satisfies:
\[ \left.\begin{array}{r}
  U \cos \theta = v_r = \partial_r \Phi \\
  - U \sin \theta = v_\theta = \frac{1}{r} \partial_\theta \Phi
\end{array}\right\} \implies \Phi = U r \cos \theta. \]

\begin{Problem}
  \begin{enumerate}[a)]
    \setcounter{enumi}{2}
    \item \underline{Sources and sinks}. Consider a 2D flow in polar coordinates having $v_r (r) = - \frac{Q}{2 \pi r}$, with $Q = \text{const.}$, and $v_\varphi = 0$. Start by confirming that $Q$ is the flow rate (per unit length along $z$) across any circumference centered at the origin; recall the sign of $Q$ determines whether you are a source ($Q > 0$) or a sink ($Q < 0$).

    Then show that $\psi = \frac{Q \varphi}{2 \pi}$ and that $\Phi = \frac{Q}{2 \pi} \log\frac{r}{r_0}$, where $r_0$ is a cut-off length.

    \item Now consider an axially symmetric flow having $v_r = \frac{Q}{4 \pi r^2}$, with $Q = \text{const.}$, and $v_\varphi = v_\theta = 0$. Note we are using spherical coordinates $(r, \theta, \varphi)$. COnfirm that $Q$ is the flow rate through any spherical surface centered at the origin.

    Then show that $\psi = - \frac{Q}{4 \pi} \cos \theta$ and that $\Phi = - \frac{Q}{4 \pi r}$.
  \end{enumerate}
\end{Problem}

\textbf{Solution for c):}
\[ \oint_{\partial B(r)} \vec{v} \cdot \hat{n} \, dl = \int_0^{2 \pi} \frac{Q}{2 \pi r} r \, d\varphi = \frac{Q}{2 \pi} 2 \pi = Q. \]

The stream function is given by:
\[ \left.\begin{array}{r}
  \frac{Q}{2 \pi r} = v_r = \frac{1}{r} \partial_\varphi \psi \\
  0 = v_\varphi = - \partial_r \psi
\end{array}\right\} \implies \psi = \frac{Q \varphi}{2 \pi}. \]

And the velocity potential is given by:
\[ \left.\begin{array}{r}
  \frac{Q}{2 \pi r} = v_r = \partial_r \Phi \\
  0 = v_\varphi = \frac{1}{r} \partial_\varphi \Phi
\end{array}\right\} \implies \Phi = \frac{Q}{2 \pi} \log r + C = \frac{Q}{2 \pi} \log \frac{r}{r_0}. \]

\textbf{Solution for d):}
\[ \oint_{\partial B(r)} \vec{v} \cdot d\vec{S} = \oint_{\partial B(r)} v_r \hat{r} \cdot \hat{r} r^2 \sin \theta \, d\theta d\varphi = \frac{Q}{4 \pi} \int_0^\pi d\theta \, \sin \theta \int_0^{2 \pi} d\varphi = \frac{Q}{4 \pi} 4 \pi = Q. \]

The stream function is given by:
\[ \left.\begin{array}{r}
  \frac{Q}{4 \pi r^2} = v_r = \frac{1}{r^2 \sin \theta} \partial_\theta \psi \\
  0 = v_\theta = - \frac{1}{r \sin \theta} \partial_r \psi
\end{array}\right\} \implies \]
\[ \implies \psi = - \frac{Q}{4 \pi} \cos \theta. \]

And finally, the velocity potential is given by:
\[ \left.\begin{array}{r}
  \frac{Q}{4 \pi r^2} = v_r = \partial_r \Phi \\
  0 = v_\theta = \frac{1}{r} \partial_\theta \Phi
\end{array}\right\} \implies \Phi = - \frac{Q}{4 \pi r}. \]

\end{document}
