% !TEX root = main.tex
\chapter{The continuity equation}

The continuity equation expresses mass conservation locally.

$$ \frac{\partial \rho}{\partial t} + \vec{\nabla} \cdot (\rho \vec{v}) = 0 $$

Alternative expression:
$$ \frac{d \rho}{d t} + \rho \vec{\nabla} \cdot \vec{v} = 0 $$

The local incompressibility condition, $\vec{\nabla} \cdot \vec{v} = 0$, is equivalent to saying that the density of each fluid element is a constant during the flow, $\frac{d l}{dt} = 0$.

It can be demonstrated that, in an stationary flow, the mass flux along a stream tube is constant.

In presence of mass sources or sinks, the continuity equation:

$$ \frac{\partial \rho}{\partial t} + \vec{\nabla} \cdot (\rho \vec{v}) = \Lambda $$

Where $\Lambda$ is the mass created (positive) or destroyed (negative) per unit time and volume.

\section{Equation of motion for a fluid}

We will apply Newton's second law to a volume of fluid, $V$, comoving with the fluid. If we use Reynolds transport theorem and the continuity equation, we get the \textbf{local equation of motion} (for a fluid particle).

$$ \rho \frac{\partial \vec{v}}{\partial t} + \rho (\vec{v} \cdot \vec{\nabla})\vec{v} = \vec{f} + \vec{\nabla} \cdot \TT{\sigma} $$

This equation governs the dynamics of all continuous matter. Different types of materials are characterized by different expressions of $\TT{\sigma}$.

\section{Streses in Newtonial fluids}

For fluids at rest (this is, in hydrostatic equilibrium), we have $\TT{\sigma} = -p \TT{I}$. Now, for fluids in motion, we need to split the stress tensor and separate the part corresponding to preassure stresses. We get
$$\TT{\sigma} = -p \TT{I} + \TT{\sigma}'$$
Where we have defined $ \TT{\sigma}'$ as the viscosity stress tensor, associated with deformations caused by the motion.

This tensor is symmetric and depends in $\TT{e}$. It is the symmetric parti of $\TT{\sigma}$ resulting from the deformation of the elements of the fluid.

We define a \textbf{Newtonial fluid} as the fluid with components $\sigma'_{ij}$ that depend linearly on the components $e_{ij}$: $$\sigma'_{ij} = A_{ijkl} e_{kl}$$

In an \textbf{isotropic media} the viscosity tensor must be related to $e_{ij}$ in a way that does not depent at all on the coordinate directions.

$$ \sigma'_{ij} = 2Ae_{ij} + B e_{ll} \delta_{ij} $$

Where A and B are constants, fluid properties. We can define $\eta = A$ (which tells about viscosity) and $\xi = \frac{2}{3}\eta + B$, the second vicosity.

We get:

$$ \sigma'_{ij} = \eta\left(2e_{ij} - \frac{2}{3}e_{ll} \delta_{ij}\right) + \xi e_{ll} \delta_{ij} $$

The first term expresses deformation without volume change, and the second one isotropic dilation.

For an incompressible fluid, $ \sigma'_{ij} = 2\eta e_{ij} $

\section{Navier-Stokes equation}

The Navier Stokes equation:

$$
\rho\left(\frac{\partial \vec{v}}{\partial t}+\vec{v} \cdot \nabla \vec{v}\right)=\vec{f}-\nabla p+\eta \nabla^{2} \vec{v}+\left(\frac{\eta}{3}+\xi\right) \nabla(\nabla \cdot \vec{v})
$$

If the fluid is incompressible, it reduces to

$$
\rho\left(\frac{\partial \vec{v}}{\partial t}+\vec{v} \cdot \nabla \vec{v}\right)=\vec{f}-\nabla p+\eta \nabla^{2} \vec{v}
$$

If we have an ideal fluid, $\eta = 0$,

$$
\rho\left(\frac{\partial \vec{v}}{\partial t}+\vec{v} \cdot \nabla \vec{v}\right)=\vec{f}-\nabla p
$$
This is the Euler's equation.

We can find a dimensionless form (......)

Reynolds number: $\frac{1}{Re} = \frac{\eta}{\rho \pi L}$ \\
Froude number: $\frac{1}{Fr} = \frac{L f}{p \pi^2}$


(...)

Limiting behaviours:

$$ Re = \frac{|\rho(\vec{v} \cdot \vec{\nabla})\vec{v}|}{|\eta \nabla^2 \vec{v}|} $$

If $Re << 1$, then the viscous term dominates over the convective term.
We get the Stokes equation:

$$
\rho\frac{\partial \vec{v}}{\partial t}=\vec{f}-\nabla p+\eta \nabla^{2} \vec{v}
$$

If $Re >> 1$, then we have the ideal fluid behavior or dry water behavior, and we get Euler's equation again.

Even if $Re >> 1$, the geometry of a given problem may lead to a zero convective term. Also, near walls, friction plays a role and viscous effects cannot be neglected.

\section{Boundary conditions}

\subsection{Fluid-solid interface}
The solid is assumed undeformable. We have a condition for the normal component of the velocity (it must be continuos):

$$ \vec{v}_s \cdot \hat{n} = \vec{v}_f \cdot \hat{n} $$
We will distinguish between:
\begin{itemize}
    \item \textbf{Ideal fluids ($\eta = 0$)}: we have no restriction on $\vec{v}_f \cdot \hat{t}$. The fluid can slip parallel to solid surface.
    \item \textbf{Real fluids:} we have the no-slip restriction: they are tangencially attatched, and the tangencial components must match: $\vec{v}_s \cdot \hat{t} = \vec{v}_f \cdot \hat{t}$. With the condition for the normal component, we get $\vec{v}_s = \vec{v}_f$
\end{itemize}
Note that if the surface tension $\gamma$ is zero, we have

$$ \sigma_s \cdot \hat{n} = \sigma_f \cdot \hat{n} $$

This is not significant if the solid is undeformable.

\subsection{Fluid-fluid interface}
