diff --git a/quad8/continuummechanics/homework/hw6/Vilanova_Martinez_Adria_HW6_revised.pdf b/quad8/continuummechanics/homework/hw6/Vilanova_Martinez_Adria_HW6_revised.pdf
new file mode 100644
index 0000000..b26cf73
--- /dev/null
+++ b/quad8/continuummechanics/homework/hw6/Vilanova_Martinez_Adria_HW6_revised.pdf
Binary files differ
diff --git a/quad8/continuummechanics/homework/hw6/main.pdf b/quad8/continuummechanics/homework/hw6/main.pdf
new file mode 100644
index 0000000..b26cf73
--- /dev/null
+++ b/quad8/continuummechanics/homework/hw6/main.pdf
Binary files differ
diff --git a/quad8/continuummechanics/homework/hw6/main.tex b/quad8/continuummechanics/homework/hw6/main.tex
new file mode 100644
index 0000000..9e550ca
--- /dev/null
+++ b/quad8/continuummechanics/homework/hw6/main.tex
@@ -0,0 +1,392 @@
+\documentclass[11pt,a4paper,dvipsnames]{article}
+\usepackage[utf8]{inputenc}
+
+\input{../preamble.tex}
+
+\newcommand\myfunc[5]{%
+  \begingroup
+  \setlength\arraycolsep{0pt}
+  #1\colon\begin{array}[t]{c >{{}}c<{{}} c}
+             #2 & \to & #3 \\ #4 & \mapsto & #5
+          \end{array}%
+  \endgroup}
+
+\usepackage{biblatex}
+\addbibresource{references.bib}
+
+\title{Homework 6\\Continuum Mechanics}
+\author{Adrià Vilanova Martínez}
+\date{May 9, 2021}
+
+\begin{document}
+
+\maketitle
+
+\begin{Problem}
+  A liquid is subjected to the following velocity gradient:
+  \[ \grad \vec{v} = ( \text{grad} \, \vec{v} )^T = \begin{pmatrix}
+    \alpha & \beta & 0 \\
+    - \frac{\beta}{2} & - \frac{\alpha}{2} & 0 \\
+    0 & 0 & 0
+  \end{pmatrix}, \]
+  where $\alpha, \beta \in \mathbb{R}$. It is clear that the flow is two-dimensional.
+
+  Characterize local deformation rates, that is, calculate local strain rates (elongations, which are often called dilations, and shear). Characterize also local rotation rates.
+\end{Problem}
+
+\Solution
+We can calculate the symmetric and antisymmetric parts of $\text{grad} \, \vec{v}$:
+\[ \TT{e} = \frac{1}{2} [ \nabla \vec{v} + (\nabla \vec{v})^T ] = \begin{pmatrix}
+  \alpha & \frac{1}{4} \beta & 0 \\
+  \frac{1}{4} \beta & - \frac{1}{2} \alpha & 0 \\
+  0 & 0 & 0
+\end{pmatrix}, \]
+\[ \TT{w} = \frac{1}{2} [ - \nabla \vec{v} + (\nabla \vec{v})^T ] = \begin{pmatrix}
+  0 & - \frac{3}{4} \beta & 0 \\
+  \frac{3}{4} \beta & 0 & 0 \\
+  0 & 0 & 0
+\end{pmatrix}. \]
+
+The diagonal terms of $\grad \vec{v}$ (which are the same as the ones in $\TT{e}$) represent the relative change in elongation of the fluid element in each direction, so that means that locally:
+\[ \begin{cases}
+  \displaystyle \frac{\Delta l_x}{l_x} \approx \alpha \Delta t, \\[3ex]
+  \displaystyle\frac{\Delta l_y}{l_y} \approx - \frac{1}{2} \alpha \Delta t, \\[3ex]
+  \displaystyle \frac{\Delta l_z}{l_z} = 0.
+\end{cases}
+\]
+
+Therefore, we know the fluid elongates along the $x$-direction, and dilates along the $y$-direction. Also, given that $\Tr \TT{e} = \frac{1}{2} \alpha$, we know the fluid behaves in an incompressible manner only if $\alpha = 0$.
+
+We also know that the off-diagonal terms of $\TT{e}$ are related to local shear. In effect, we know that locally the change of a $\SI{90}{\degree}$ angle with respect to time is
+\[ \frac{d \gamma}{dt} = - 2 e_{12} = - \frac{1}{2} \beta. \]
+
+Finally, $\TT{w}$ characterizes local rotation rates. In fact, the dual vector associated with $\TT{w}$ ($\vec{w}$) lets us define the vortex vector $\vec{\Omega} = \frac{1}{2} \vec{w}$ which represents the local angular velocity of rotation of a fluid element. Thus, we have:
+\[ \vec{\Omega} = \frac{1}{2} \vec{w} = \begin{pmatrix}
+  0 \\
+  0 \\
+  \frac{3}{4} \beta
+\end{pmatrix}. \]
+
+\begin{Problem}
+  In this problem, we are going to work a bit more with Stokes' stream function; that is, the stream function for incompressible flows with axisymmetry.
+
+  \begin{enumerate}[a)]
+    \item Consider cylindrical coordinates $(r, \phi, z)$ and a flow in the $rz$-plane (a flow with cylindrical, or axial, symmetry about the $z$-axis).
+
+    Verify that by choosing the stream function such that $v_r = \frac{1}{r} \partial_z \psi$ and $v_z = - \frac{1}{r} \partial_r \psi$, the incompressibility condition is automatically fulfilled.
+
+    Then show that the velocity derives from the potential vector $\vec{A} = - \frac{1}{r} \psi \hat{e}_\phi$.
+
+    \item Now consider spherical coordinates $(r, \theta, \phi)$ and a flow in the $r \theta$ plane (a flow with azimuthal symmetry).
+
+    Verify that by choosing the stream function such that $v_r = \frac{1}{r^2 \sin \theta} \partial_\theta \psi$ and $v_\theta = - \frac{1}{r \sin \theta} \partial_r \psi$, the incompressibility condition is automatically fulfilled.
+
+    Then show that the velocity derives from the potential vector $\vec{A} = \frac{1}{r \sin \theta} \psi \hat{e}_\phi$.
+  \end{enumerate}
+\end{Problem}
+
+\Solution
+We will show a more general result which includes the 2 previous cases:
+
+Suppose we have a transformation from the cartesian coordinates $(x, y, z)$ to a new set of orthogonal coordinates $(q_1, q_2, q_3)$. Let's call the inverse transformation $\varphi$, which is a parametrization of a domain of $\mathbb{R}^3$ such that:
+\[ \myfunc{\varphi}{U}{\mathbb{R}^3}{(q_1, q_2, q_3)}{(x, y, z).} \]
+
+Then this parametrization has an associated second-rank metric tensor in each point called the matric tensor defined as $g_{ij} = \varphi_i \cdot \varphi_j$, where $\varphi_i = \partial_i \varphi$. This tensor is similar to the first fundamental form of surfaces, because it gives us the metrics in the new coordinate system.
+
+Since the new coordinate system is orthogonal, by definition the only non-zero components of the tensor are the ones in the diagonal. Then, thanks to the development done at \cite{se} we can calculate the rotational of a vector field $V$ expressed in the new coordinate system as:
+\[ \curl V = \frac{1}{\sqrt{\det \TT{g}}} \begin{vmatrix}
+  \hat{q}_1 \sqrt{g_{11}} & \partial_{q_1} & V_1 \sqrt{g_{11}} \\
+  \hat{q}_2 \sqrt{g_{22}} & \partial_{q_2} & V_2 \sqrt{g_{22}} \\
+  \hat{q}_3 \sqrt{g_{33}} & \partial_{q_3} & V_3 \sqrt{g_{33}}
+\end{vmatrix}. \]
+If we define $h_i := g_{ii}$, we can express the previous formula in a more compact form:
+\[ \curl V = \frac{1}{h_1 h_2 h_3} \begin{vmatrix}
+  \hat{q}_1 h_1 & \partial_{q_1} & V_1 h_1 \\
+  \hat{q}_2 h_2 & \partial_{q_2} & V_2 h_2 \\
+  \hat{q}_3 h_3 & \partial_{q_3} & V_3 h_3
+\end{vmatrix}. \]
+
+Now, we'll state the more general result: under the previous assumptions, given a function $\psi$ (called the stream function) and a potential vector $\vec{A} = \frac{1}{h_i} \psi \hat{e}_{q_i}$, then the conditions that $\psi$ should satisfy so the fluid is incompressible are:
+\[ \vec{v} = \curl \vec{A} = \frac{1}{h_1 h_2 h_3} \begin{vmatrix}
+  \hat{q}_1 h_1 & \partial_{q_1} & A_1 h_1 \\
+  \hat{q}_2 h_2 & \partial_{q_2} & A_2 h_2 \\
+  \hat{q}_3 h_3 & \partial_{q_3} & A_3 h_3
+\end{vmatrix} = \frac{1}{h_1 h_2 h_3} \begin{vmatrix}
+  \hat{q}_1 h_1 & \partial_{q_1} & \psi \delta_{1i} \\
+  \hat{q}_2 h_2 & \partial_{q_2} & \psi \delta_{2i} \\
+  \hat{q}_3 h_3 & \partial_{q_3} & \psi \delta_{3i}
+\end{vmatrix}. \]
+This is because since the divergence of the rotational of a vector field is 0, the fluid would be automatically compressible if it satisfies these conditions.
+
+\textbf{Solution for a):}
+\[ \curl \vec{A} = - \frac{1}{r} \begin{vmatrix}
+  \hat{r} & \partial_r & - A_r \\
+  r \hat{\phi} & \partial_\phi & r (- A_\phi) \\
+  \hat{z} & \partial_z & - A_z
+\end{vmatrix} = - \frac{1}{r} \begin{vmatrix}
+  \hat{r} & \partial_r & 0 \\
+  r \hat{\phi} & \partial_\phi & \psi \\
+  \hat{z} & \partial_z & 0
+\end{vmatrix} = \begin{pmatrix}
+  \frac{1}{r} \partial_z \psi \\
+  0 \\
+  - \frac{1}{r} \partial_r \psi
+\end{pmatrix} = \vec{v}, \]
+which confirms that the velocity $\vec{v}$ derives from the potential vector $\vec{A}$, and automatically we have that the fluid is incompressible (it can also be manually checked by calculating $\div \vec{v}$ and checking it is equal to zero, but we've already shown it is true).
+
+\textbf{Solution for b):}
+\[ \curl \vec{A} = \frac{1}{r^2 \sin \theta} \begin{vmatrix}
+  \hat{r} & \partial_r & A_r \\
+  r \hat{\theta} & \partial_\theta & r A_\theta \\
+  r \sin \theta \hat{\phi} & \partial_\phi & r \sin \theta A_\phi
+\end{vmatrix} = \frac{1}{r^2 \sin \theta} \begin{vmatrix}
+  \hat{r} & \partial_r & 0 \\
+  r \hat{\theta} & \partial_\theta & 0 \\
+  r \sin \theta \hat{\phi} & \partial_\phi & \psi
+\end{vmatrix} = \begin{pmatrix}
+  \frac{1}{r^2 \sin \theta} \partial_\theta \psi \\
+  0 \\
+  - \frac{1}{r \sin \theta} \partial_r \psi
+\end{pmatrix} = \vec{v}, \]
+which confirms that the velocity $\vec{v}$ derives from the potential vector $\vec{A}$, and automatically we have that the fluid is incompressible.
+
+\begin{Problem}
+  The velocity field of a certain two-dimensional vortex, in polar plane coordinates, is given by:
+  \[ \begin{cases}
+    v_r = 0, \\[1ex]
+    v_\theta = \left\{\begin{array}{ll}
+      \dfrac{\Omega r}{2}, & r < a, \\
+      \dfrac{\Omega a^2}{2r}, & r > a,
+    \end{array}\right.
+  \end{cases} \]
+  where $a$ is the extension of the vortex core and $\Omega$ measures the vortex intensity.
+
+  \begin{enumerate}[a)]
+    \item Show that the flow is incompressible and compute the stream function.
+    \item Compute and draw schematically the streamlines and the particle trajectories.
+    \item Compute the vorticity and the velocity potential in the region where it can be defined.
+  \end{enumerate}
+\end{Problem}
+
+\textbf{Solution for a):}
+\[ \div \vec{v} = \frac{1}{r} \left[ \partial_r (r v_r) + \partial_\theta (v_\theta) \right] = \frac{1}{r} \left[ 0 + 0 \right] = 0, \]
+so the flow is incompressible.
+
+From the theoretical development done in class, we know the stream function satisfies:
+\[ \begin{cases}
+  r v_r = \partial_\theta \psi, \quad \text{(1)} \\
+  - v_\theta = \partial_r \psi. \quad \text{(2)}
+\end{cases} \]
+
+Subtituting the velocity field in (1) we obtain:
+\[ 0 = \partial_\theta \psi \implies \psi = \tilde{c} + g(r). \]
+
+We can now substitue both the velocity field and the previous expression in (2).
+
+For $r \leq a$:
+\[ - \frac{\Omega r}{2} = \partial_r(c + g(r)) = g'(r) \implies g(r) = - \frac{\Omega r^2}{4} + d. \]
+
+For $r > a$:
+\[ - \frac{\Omega a^2}{2r} = g'(r) \implies g(r) = - \frac{\Omega a^2}{2} \log(r) + \tilde{d}. \]
+
+Since $\psi$ has to be differentiable (and therefore continuous), we have that:
+\[ - \frac{\Omega a^2}{4} + d = - \frac{\Omega a^2}{2} \log(a) + \tilde{d} \implies \tilde{d} = d - \frac{\Omega a^2}{2} \left( \frac{1}{2} - \log(a) \right), \]
+and thus:
+\[ \psi(r) = \left\{\begin{array}{ll}
+  - \dfrac{\Omega r^2}{4} + c, & r \leq a \\[2ex]
+  - \dfrac{\Omega a^2}{2} \left( \log\left(\dfrac{r}{a}\right) + \dfrac{1}{2} \right) + c, & r > a
+\end{array}\right. \]
+where $c \in \mathbb{R}$ is a constant.
+
+\textbf{Solution for b):} \\
+The streamlines are given by the set of points satsfying $\psi = \text{const}$.
+
+Therefore, for $r \leq a$:
+\[ \frac{\Omega r^2}{4} + c = C \implies r = \left( \frac{4}{\Omega} (C - c) \right)^{\frac{1}{2}} = \text{const}, \]
+and this means streamlines are concentric circles with center $0$.
+
+For $r > a$:
+\[ \frac{\Omega a^2}{4} \left( \log(\frac{r}{a}) \right) + c = C \implies r = \text{const}, \]
+and this means streamlines are again concentric circles with center $0$.
+
+With regards to the particle trajectories, these are the curves $\gamma(t)$ solution to the following Cauchy problem:
+\[ \begin{cases}
+  \dot{\gamma}(t) = v(\gamma(t)), \quad \text{(1)} \\
+  \gamma(0) = p_0 = \begin{pmatrix}
+    r_0 \\
+    \theta_0
+  \end{pmatrix}, \quad \text{(2)}
+\end{cases} \]
+which by Picard's theorem exist and are unique when the initial condition $p_0$ is fixed (because $\vec{v}$ is globally Lipschitz).
+
+Let's find their parametrization (in this section, $F_i(t)$ means the $i$-component of $F(t)$ and not its partial derivative with respect to $i$).
+
+If we take a look into the radial component of the trajectory/curve:
+\[ \text{(1)} \implies \dot{\gamma}_r(t) = 0 \implies \gamma_r(t) = c = r_0. \]
+Therefore, particles will always move in trajectories inscribed in a circle.
+
+Now, for particles for which $r \leq a$:
+\[ \text{(1)} \implies \dot{\gamma}_\theta(t) = \frac{1}{2} \Omega \gamma_r(t) \implies \gamma_\theta(t) = \dfrac{1}{2} \Omega r_0 t + d, \]
+where $d \in \mathbb{R}$ is a constant. If we impose the initial condition, we find
+\[ \theta_0 = \gamma_\theta(0) = d. \]
+Note that the origin is a stagnation point.
+
+For points in which $r > a$:
+\[ \text{(1)} \implies \dot{\gamma}_\theta(t) = \frac{1}{2 \gamma_r(t)} \Omega a^2 \implies \gamma_\theta(t) = \dfrac{1}{2 r_0} \Omega a^2 t + d, \]
+where $d \in \mathbb{R}$ is a constants. If we impose the initial condition, we find
+\[ \theta_0 = \gamma_\theta(0) = d. \]
+
+Therefore, the particle trajectories are:
+\[ \gamma(t) = \left\{\begin{array}{ll}
+  \begin{pmatrix}
+    r_0 \\
+    \dfrac{1}{2} r_0 \Omega t + \theta_0
+  \end{pmatrix}, & r_0 \leq a, \\[3ex]
+  \begin{pmatrix}
+    r_0 \\
+    \dfrac{a^2}{2 r_0} \Omega t + \theta_0
+  \end{pmatrix}, & r_0 > a.
+\end{array}\right. \]
+
+\begin{figure}[H]
+  \centering
+  \includegraphics[width=8cm]{streamlines_trajectories.pdf}
+  \caption{Drawing showing the streamlines and particle trajectories (which are the same), along with the velocity profile.}
+\end{figure}
+
+\textbf{Solution for c):}
+\[ \vec{\omega} = \curl \vec{v} = \frac{1}{r} \begin{vmatrix}
+  \hat{r} & \partial_r & 0 \\
+  r \hat{\theta} & \partial_\theta & r v_\theta \\
+  \hat{z} & \partial_z & 0
+\end{vmatrix} = \frac{1}{r} \begin{pmatrix}
+  - r \partial_z v_\theta \\
+  0 \\
+  \partial_r (r v_\theta)
+\end{pmatrix} = \frac{1}{r} \begin{pmatrix}
+  0 \\
+  0 \\
+  \partial_r (r v_\theta)
+\end{pmatrix} = \partial_r (r v_\theta) \hat{e}_z \implies \]
+\[ \vec{\omega} = \left\{\begin{array}{ll}
+  \partial_r \left( \dfrac{\Omega}{2} r^2 \right) = \Omega r, & r < a, \\[2ex]
+  \partial_r \left( \dfrac{\Omega a^2}{2} \right) = 0, & r > a.
+\end{array}\right. \]
+
+Note that $\vec{\omega}$ is not generally defined at points in which $r = a$, because $\vec{v}$ isn't differentiable there. The only case in which it is differentiable is the following:
+\[ \lim_{r \to a^-} \partial_r v = \lim_{r \to a^+} \partial_r v \iff \frac{\Omega}{2} = - \frac{\Omega}{2} \iff \Omega = 0, \]
+which corresponds to the case in which the velocity field is exactly 0 in all points (the fluid is still), which is a degenerate case.
+
+In the subset $\{ (r, \theta, z) \, : \, r > a \} \subset \mathbb{R}^3$ the vorticity vector is $\vec{w} = 0$, and so we can define the velocity potential $\Phi$ (which satisfies $\vec{v} = \grad \Phi$). Let's find it:
+\[ \begin{pmatrix}
+  0 \\
+  \dfrac{\Omega a^2}{2 r}
+\end{pmatrix} = \vec{v} = \grad \Phi = \begin{pmatrix}
+  \partial_r \Phi \\
+  \dfrac{1}{r} \partial_\theta \Phi
+\end{pmatrix} \implies \left\{\begin{array}{l}
+  \Phi = g(\theta) + \tilde{c} \\
+  \dfrac{\Omega a^2}{2} = g'(\theta) \implies g(\theta) = \dfrac{1}{2} \Omega a^2 \theta + d
+\end{array}\right\} \implies \]
+\[ \implies \Phi(r, \theta, z) = \frac{1}{2} \Omega a^2 \theta + c, \]
+where $c \in \mathbb{R}$ is a constant.
+
+\begin{Problem}
+  In class, we have analyzed the flow $\vec{v} = (ax, -ay, 0)$, with $a \in \mathbb{R}$. In this case,
+  \[ \TT{G} = \text{grad} \, \vec{v} = \begin{pmatrix}
+    a & 0 \\
+    0 & -a
+  \end{pmatrix} = \TT{e} = \dev \TT{e}. \]
+
+  We have also analyzed flow with stream function $\psi = c (y^2 - x^2)$, with $c \in \mathbb{R}$. In this case,
+  \[ \TT{G} = \text{grad} \, \vec{v} = \begin{pmatrix}
+    0 & 2c \\
+    2c & 0
+  \end{pmatrix} = \TT{e} = \dev \TT{e}. \]
+
+  Prove that if $a = 2c$, the two flows are the same except for a $\frac{\pi}{4}$ rotation. This illustrates that we can think of pure shear flow as pure elongational flow along directions oriented at $\frac{\pi}{4}$ relative to the original directions.
+\end{Problem}
+
+\Solution
+For the first flow, we saw in class that the streamlines were the hyperbolas
+\[ y = \frac{b}{x}, \quad b \in \mathbb{R}, \]
+and that the origin was a stagnation point. We also saw that particles followed the following trajectories:
+\[ \gamma(t) = \begin{pmatrix}
+  x_0 e^{at} \\
+  y_0 e^{-at} \\
+  z_0
+\end{pmatrix}, \]
+depending on the initial position $(x_0, y_0, z_0)$ at time $0$ (since $a$ is constant, the ODE is autonomous).
+
+For the first flow, we can easily calculate the streamlines due to the fact that in them the stream function is constant. This gives us the following streamlines:
+\[ y = \pm \sqrt{x^2 + c}, \]
+where $c \in \mathbb{R}$ is a constant.
+
+Also, in class we calculated the velocity field (modulus a sign), which is:
+\[ \vec{v} = 2c (y, x). \]
+
+If we impose $a = 2c$, we have $\vec{v} = a(y, x)$, then the field $\vec{v}_2$ resulting of a $\frac{\pi}{4}$ rotation around the center will satisfy the following formula (where we've taken into account the rotation of the 3-dimensional space and the rotation of the free vectors):
+\[ \vec{v}_2 = A \vec{v}(A^{-1} (x, y)), \]
+where $A$ is the rotation matrix of angle $\theta = - \frac{\pi}{4}$.
+
+\[ A^{-1}(x, y) = \begin{pmatrix}
+  \cos(- \theta) & - \sin(- \theta) \\
+  \sin(- \theta) & \cos(- \theta)
+\end{pmatrix} \begin{pmatrix}
+  x \\
+  y
+\end{pmatrix} = \begin{pmatrix}
+  \cos(\theta) & \sin(\theta) \\
+  - \sin(\theta) & \cos(\theta)
+\end{pmatrix} \begin{pmatrix}
+  x \\
+  y
+\end{pmatrix}, \]
+\[ A\vec{v}(A^{-1}(x, y)) = a \begin{pmatrix}
+  \cos(\theta) & - \sin(\theta) \\
+  \sin(\theta) & \cos(\theta)
+\end{pmatrix} \begin{pmatrix}
+  0 & 1 \\
+  1 & 0
+\end{pmatrix} \begin{pmatrix}
+  \cos(\theta) & \sin(\theta) \\
+  - \sin(\theta) & \cos(\theta)
+\end{pmatrix} \begin{pmatrix}
+  x \\
+  y
+\end{pmatrix} = \]
+\[ = a \begin{pmatrix}
+  \cos(\theta) & - \sin(\theta) \\
+  \sin(\theta) & \cos(\theta)
+\end{pmatrix} \begin{pmatrix}
+  - \sin(\theta) x + \cos(\theta) y \\
+  \cos(\theta) x + \sin(\theta) y
+\end{pmatrix} = a \begin{pmatrix}
+  - 2 \sin(\theta) \cos(\theta) x + (\cos^2(\theta) - \sin^2(\theta)) y \\
+  (\cos^2(\theta) - \sin^2(\theta)) x + 2 \sin(\theta) \cos(\theta) y
+\end{pmatrix} = \]
+\[ = a \begin{pmatrix}
+  x \\
+  - y
+\end{pmatrix}. \]
+
+Therefore, the flow is the same in both cases, rotated by an angle $\theta = -\frac{\pi}{4}$ (the minus is there because the rotation is anticlockwise).
+
+\begin{Problem}
+  Show that the vorticity flux, $\int_A \vec{\omega} \cdot d\vec{S}$, is constant along a vorticity tube.
+\end{Problem}
+
+\Solution
+%Since $\vec{\omega} = \curl \vec{v}$, using Stokes' theorem:
+%\[ \int_A \vec{\omega} \cdot d\vec{S} = \int_A (\curl \vec{v}) \cdot d\vec{S} = \int_C \vec{v} \cdot d\vec{l} \]
+Let's consider 2 sections of the tube $S_1$, $S_2$, and the lateral surface along the stream tube $S_L$. Then, since $\div \vec{\omega} = 0$ everywhere, using the Divergence Theorem we have that:
+\[ 0 = \int_{V} \div \vec{\omega} \, dv = \oint_{S_1 \cup S_2 \cup S_L} \vec{\omega} \cdot d\vec{S} = \int_{S_1} \vec{\omega} \cdot d\vec{S} + \int_{S_2} \vec{\omega} \cdot d\vec{S} + \int_{S_L} \vec{\omega} \cdot d\vec{S}. \]
+Since the lateral surface is the surface of the vortex tube, which is a surface formed by the vortex lines (lines parallel to the vorticity vector), the normal vector to the surface is perpendicular to the vorticity vector, and thus the flux of the vorticity vector through the the lateral surface is zero. Thus, we have:
+\[ \int_{S_1} \vec{\omega} \cdot d\vec{S} + \int_{S_2} \vec{\omega} \cdot d\vec{S} = 0, \]
+where the orientation of $d\vec{S}$ is the one which points outside of the volume $V$ enclosed by the surface $S_1 \cup S_2 \cup S_L$. If we take the orientation of the normal vector to the surface such that $\vec{n} \cdot \vec{w} \geq 0$, we have to reverse one of the normal vectors in the previous expression, and we get:
+\[ \int_{S_1} \vec{\omega} \cdot d\vec{S} = \int_{S_2} \vec{\omega} \cdot d\vec{S}, \]
+which is what we wanted to prove.
+
+\printbibliography
+
+\end{document}
diff --git a/quad8/continuummechanics/homework/hw6/references.bib b/quad8/continuummechanics/homework/hw6/references.bib
new file mode 100644
index 0000000..67fd916
--- /dev/null
+++ b/quad8/continuummechanics/homework/hw6/references.bib
@@ -0,0 +1,4 @@
+@online{se,
+  title={Curl in cylindrical coordinates - StackExchange Mathematics},
+  url={https://math.stackexchange.com/a/2160871}
+}
diff --git a/quad8/continuummechanics/homework/hw6/streamlines_trajectories.pdf b/quad8/continuummechanics/homework/hw6/streamlines_trajectories.pdf
new file mode 100644
index 0000000..9426080
--- /dev/null
+++ b/quad8/continuummechanics/homework/hw6/streamlines_trajectories.pdf
Binary files differ
