diff --git a/quad8/continuummechanics/notes/notes4.tex b/quad8/continuummechanics/notes/notes4.tex
new file mode 100644
index 0000000..28122f1
--- /dev/null
+++ b/quad8/continuummechanics/notes/notes4.tex
@@ -0,0 +1,122 @@
+% !TEX root = main.tex
+\chapter{Elasticity}
+
+We are going to connect forces and strains in solids. We define $\varepsilon = \frac{\Delta L}{L_0}$.
+
+\begin{figure}[h!]
+    \centering
+    \includegraphics[scale=0.5]{img/elasticity.png}
+    \caption{Diagram showing the different regimes of an elastic material.}
+    \label{fig:elasticity_graph}
+\end{figure}
+
+In figure \ref{fig:elasticity_graph}, we can distinguish four zones:
+\begin{itemize}
+    \item \underline{Elastic deformation} (reversible): includes a linear part (small $\varepsilon$).
+    \item \underline{Yield stress}: plastic deformation begins.
+    \item \underline{Plastic deformation} (irreversible).
+    \item \underline{Rupture}: defines ``tensile strength''.
+\end{itemize}
+
+We can distinguish 2 types of materials:
+
+\begin{enumerate}
+  \item \underline{Brittle materials}: they don't present plastic behavior (like glass). Abrupt break-up at threshold \footnote{umbral} $\varepsilon$.
+  \item \underline{Ductile materials}: they do present plastic behavior before rupturing, like in figure \ref{fig:elasticity_graph}.
+\end{enumerate}
+
+Our focus will be linear elastic regime. We are looking for a linar relation between stress and strain. It will be valid for small $\varepsilon$, and the rank of validity depends on the material. When stresses grow large, most materials deform more than predicted by Hooke's law and in the end reach the elasticity limit, where they either become plastic or break.
+
+In continuous matter we do not fo into the microscopic interactions responsible for elastic behaviour (\textit{but it's super cool}). A lot of materials can be characterized with few (just two) parameters: the Young's modulus $Y$\footnote{Oju, que que Lautrup li diu $E$} and the Poisson's ratio $\nu$. We'll see this in the next section.
+
+%\begin{defi}[Young's!modulus] % NOTE(Aina): m'estic fent bastnat de lio amb això- crec que no ho vam definir a classe, sino que vam fer direcament el tensor d'elasticitat i no trobo al llibreque surti. no se
+                               % NOTE(Adri): Okey, ho he comentat :)
+%  The \underline{Young's modulus}
+%\end{defi}
+
+%\begin{defi}[Poisson's!ratio]
+%  The \underline{Poisson's ratio}
+%\end{defi}
+
+\section{Hooke's law in tensorial form for homogeneous and isotropic materials}
+It's the most general $\TT{\sigma} - \TT{u}$ relation. The linearity stress-strain can be expressed as:
+$$\sigma_{ij} = \sum_{k,l} E_{ijkl} u_{kl}$$
+Where $E_{ijkl}$ are the components of the tensor of elasticity. This relation is valid even for anisotropic materials.
+
+If the medium is isotropic: %TODOOOOOOOOOOOOOOO
+\[ \boxed{\sigma_{ij} = 2\mu u_{ij} + \lambda(\sum_k u_{kk})\delta_{ij}.} \]
+
+\index{Lamé coefficients}
+  Hooke's law for isotropic materials is a good assumption, but it's not strict. $\lambda$ and $\mu$ are the \textbf{Lamé coefficients}. They are constants. $\lambda$ has no special name, but $\mu$ is called \textit{shear modulus}, because it controls the magnitude of shear stresses.
+
+\begin{obs}
+  Lamé coefficents must be mesured in pressure units, because the strain tensor is dimensionless.
+\end{obs}
+
+\begin{obs}
+  If $u_{ij} = 0 \; \forall i, j$, then $\sigma_{ij} = 0 \; \forall i,j$. Hooke's law gives the additional stress due to the deformation.
+\end{obs}
+
+\begin{obs}
+  $\mu = 0$ implies $\sigma_{ij} (i \neq j) = 0$ (meaning $\TT{\sigma}$ is diagonal). The behavior is ``similar'' to a fluid at rest.
+\end{obs}
+
+\begin{obs}
+  Stress and strain depend on representations, Euler (the stress and the strain tensors are both viewed as functions of the actual position) or Lagrange (where the tensors are viewed as functions of the position of a material particle in the undeformed body). This distinction is not relevant for small deformations.
+\end{obs}
+
+\begin{obs}
+  Linearity implies superposition principle:
+  \[ \left. \begin{array}{r}
+    \{ \text{stresses} \}_1 \longrightarrow \{ \text{strains} \}_1 \\
+    \{ \text{stresses} \}_2 \longrightarrow \{ \text{strains} \}_2
+  \end{array} \right\} \implies \{ \text{stresses} \}_1 + \{ \text{stresses} \}_2 \longrightarrow \{ \text{strains} \}_1 + \{ \text{strains} \}_2. \]
+\end{obs}
+
+\section{Relation between Lamé coefficients and other elastic moduli}
+%example simple shear
+
+%streched rod-lke object laid out along x-direction...
+
+$$ \boxed{\lambda = \frac{Y \nu}{(1-2\nu)(1+\nu)}} $$
+$$ \boxed{\mu = \frac{Y}{2(1+\nu)}} $$
+
+Since $\sigma_{ii} = (2\mu + 3\lambda) u_{ii}$ and the stress tensor in Hooke's law respresents the change in stress due to deformation, the change in mechanical pressure caused by deformation is: %mathpix
+
+% Això d'aquí abaix és una cosa que he fet per l'entregable (i ho he esborrat pq no s'havia de fer així hehe), però que serveix pels apunts (ho posaré bonic i en el lloc correcte més tard, per això ho poso comentat):
+%The difference in mechanical pressure is:
+$$ \Delta p = - \frac{1}{3} \Tr \TT{\sigma} \notate[X]{{}={}}{1.25}{\scriptstyle \text{Hooke's law}}
+- \frac{1}{3} (2 \mu + 3 \lambda) \sum_i u_{ii} \approx - \left( \lambda + \frac{2}{3} \mu \right) \frac{\Delta V}{V}. $$
+
+This can be rewritten in terms of $Y$ and $\nu$:
+$$ \Delta p = - \left( \frac{Y \nu}{(1 - 2 \nu)(1 + \nu)} + \frac{2}{3} \frac{Y}{2 (1 + \nu)} \right) \frac{\Delta V}{V} = - \frac{3 Y \nu + Y (1 - 2 \nu)}{3 (1 - 2\nu) (1 + \nu)} \frac{\Delta V}{V} = $$
+$$ = - Y \frac{1 + \nu}{3 (1 - 2 \nu) (1 + \nu)} \frac{\Delta V}{V} = - \frac{Y}{3 (1 - 2 \nu)} \frac{\Delta V}{V}. $$
+
+\section{Inverting Hooke's law}
+It can be shown that, by inverting Hooke's law, we obtain:
+\[ u_{ij} = \frac{\sigma_{ij}}{2 \mu} - \frac{\lambda}{2 \mu (3 \lambda + 2 \mu)} \left( \sum_{k} \sigma_{kk} \right) \delta_{ij}, \]
+which can also be expressed as:
+\[ u_{ij} = \frac{1 + \nu}{Y} \sigma_{ij} - \frac{\nu}{Y} \left( \sum_k \sigma_{kk} \right) \delta_{ij}. \]
+
+Furthermore, we can express $Y$ and $\nu$ in terms of the Lamé coefficients:
+\[ \boxed{Y = \frac{\lambda}{2(\lambda + \mu)}} \]
+\[ \boxed{\nu = \mu \frac{3 \lambda + 2 \mu}{\lambda + \mu}} \]
+
+\section{Positivity constraints}
+To do.
+
+%\section{Hooke's law in anisotropic materials} %extra material al igual ho faig -- Totalment :')
+%
+\section{Elastic energy}
+
+\begin{defi}[Elastic energy density]
+  The \underline{elastic energy density} (stored in internal stresses of the material is):
+  \[ u_\text{elastic} = \frac{1}{2} \sum_{i, j, k, l} E_{ikjl} u_{ij} u_{kl} = \frac{1}{2} \sigma_{ij} u_{ij} = \frac{1}{2} \TT{\sigma} : \TT{u}. \]
+
+  For isotropic materials, this can be written as:
+  \[ u_\text{elastic} = \mu \Tr (\TT{u}^2) + \frac{1}{2} \lambda \left( \Tr(\TT{u}) \right)^2 = \frac{1 + \nu}{2Y} \Tr(\TT{u}^2) - \frac{\nu}{2Y} \left( \Tr(\TT{\sigma}) \right)^2. \]
+\end{defi}
+
+\section{Total energy in a conservative external field}
+Let's consider $\vec{f}$: an external field of conservative forces (e.g. gravitational field, which will be the most recurring in this course). Then, in this case, we have:
+\[ u_\text{total} = \underbrace{- \vec{f} \cdot \vec{u}}_{u_\text{p}} + \underbrace{\frac{1}{2} \TT{\sigma} : \TT{u}}_{u_\text{elastic}}. \quad \text{(elastic density)} \]
