diff --git a/quad8/continuummechanics/notes/notes8.tex b/quad8/continuummechanics/notes/notes8.tex
new file mode 100644
index 0000000..4d25f1d
--- /dev/null
+++ b/quad8/continuummechanics/notes/notes8.tex
@@ -0,0 +1,114 @@
+% !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}
