% !TEX root = main.tex
\chapter{The stress tensor and mechanical equilibrium}
\section{Introduction}
In the case of continuum media, we distinguish between 2 types of forces:
\begin{enumerate}
  \item \textbf{Body (or contact) forces}: we think of them as force fields acting on and within the material.

  \item \textbf{Contact forces}: they always act on surfaces. They can be separated into:

  \begin{enumerate}
    \item Normal
    \item Tangential
  \end{enumerate}
\end{enumerate}

\begin{example}
  Gravity. It penetrates all bodies from afar and acts on a material particle of mass $dM$ with a force $d\vec{F} = \vec{g} \, dM$, where $dM = \underbrace{\rho}_{\text{density}} dV$ and $d\vec{F} = \underbrace{\vec{f}}_{\rho \vec{g}} dV$.

  $\vec{g}$ is the force per unit mass, and $\vec{f}$ is the force per unit volume.
\end{example}



In order to represent forces, we use stress fields. Those have dimensions of $\displaystyle \frac{\text{force}}{\text{area}}$, and so their S.I. unit is $\si{\pascal} = \si{\newton \per \meter\squared}$.

We can distinguish 2 types of stresses:
\begin{enumerate}
  \item \textbf{Normal stresses}: related to the normal forces acting on surfaces.

  \item \textbf{Shear (or tangential) stresses}: related to tangential fores acting on surfaces.
\end{enumerate}

Solids (either at rest or in motion) and fluids in motion can sustain shear stresses (in addition to normal stresses), while fluids at rest can only sustain normal stresses (they have no shear rigidity).

But we can also distinguish stresses between the following 2 types:
\begin{enumerate}
  \item \textbf{External stresses}: act at the interface between the system and the environment (fluids under external stresses flow, while solids deform).

  \item \textbf{Internal stresses}: act at any internal ``imaginary'' surface. They will be represented by the stress tensor. In absecne of external forces there is usually no internal stress in a material.
\end{enumerate}

%\begin{example}
%  Consider the macroscopic solid object shown in \ref{figure:stressDefinitionDiagram}. % TODO: Escriure aquest exemple
%\end{example}

\section{The nine components of stress}
Consider an arbitrary surface and assume the z-axis is perpendicular to it.

% TODO: Afegir figura

Then, we can define the following stresses:
\begin{itemize}
  \item $\pmb{\sigma_{xz}}$: \textbf{shear stress} corresponding to force $\pmb{dF_x}$ applied along the \textbf{x}-direction to a material surface element $dS_z$ with normal in the z-direction.

  \item $\pmb{\sigma_{yz}}$: \textbf{shear stress} corresponding to force $\pmb{dF_y}$ applied along the \textbf{y}-direction to a material surface element $dS_z$ with normal in the z-direction.

  \item $\pmb{\sigma_{zz}}$: \textbf{normal stress} corresponding to force $\pmb{dF_z}$ applied along the \textbf{z}-direction to a material surface element $dS_z$ with normal in the z-direction.
\end{itemize}

Continuing this argument for surface elements with normal along $x$ or $y$, it appears to be necessary to use at least 9 numbers to indicate the state of stress in a given point of a material in a cartesian coordinate system.

Cauchy's stress hypothesis tells us that, in fact, only those 9 numbers are necessary:

\begin{prop}[Cauchy's stress hypothesis]
  \index{Cauchy's!stress hypothesis}
  The nine components $\sigma_{ij}$ ($i, j \in \{ x, y, z \}$) are all that is needed to determine the force $d\vec{F} = (dF_x, dF_y, dF_z)$ on a point in an arbitrary surface element, $d\vec{S} = (dS_x, dS_y, dS_z)$, according to the following rule:
  \begin{equation}
    \label{eq:cauchyStressHypRule}
    \begin{cases}
      dF_x = \sigma_{xx} dS_x + \sigma_{xy} dS_y + \sigma_{xz} dS_z \\
      dF_y = \sigma_{yx} dS_x + \sigma_{yy} dS_y + \sigma_{yz} dS_z \\
      dF_z = \sigma_{zx} dS_x + \sigma_{zy} dS_y + \sigma_{zz} dS_z.
    \end{cases}
  \end{equation}
  Using the Einstein summation convention, we can express the previous rule as \[ dF_i = \sigma_{ij} dS_j. \]
\end{prop}

This leads us to the definition of the stress tensor:

\begin{defi}[Stress!tensor]
  The \underline{stress tensor} is the second-rank tensor $\TT{\sigma}$, whose components in cartesian coordinates are $\sigma_{ij}$: the force $dF_i$ applied along the $i$-direction to a material surface element $dS_j$ with normal in the $j$-direction.
\end{defi}

\begin{obs}
  $\TT{\sigma}$ is a second-rank tensor because of the quotient rule.
\end{obs}

\begin{obs}
  From \eqref{eq:cauchyStressHypRule} we can see that $d\vec{F} = \TT{\sigma} \cdot d\vec{S} = \TT{\sigma} \cdot \hat{n} \, dS$, where $\hat{n}$ is the vector normal to the surface. This lets us define the stress vector.
\end{obs}

\begin{defi}[Stress!vector]
  The \underline{stress vector} is \[ \frac{d\vec{F}}{dS} = \TT{\sigma} \cdot \hat{n}. \]
\end{defi}

\begin{obs}
  Although the stress vector is a vector, it is not a vector field in the strict sense of the word, because it also depends on the normal to the surface on which it acts.

  In contrast, $\TT{\sigma}$ is, in general, a tensor field:
  \[ \sigma_{ij} \equiv \sigma_{ij} (\vec{x}, t) \quad i, j \in \{ x, y, z \}. \]
\end{obs}

\section{Mechanical pressure}
In hydrostatic equilibrium, the only contact force is pressure since there are no shear stresses (the fluid is still). Hence,
\[ d\vec{F} = -p d\vec{S}. \]
Since also $d\vec{F} = \TT{\sigma} dS$, we find
\[ \TT{\sigma} = -p \TT{I} \]
which can also be expressed as $\sigma_{ij} = -p\delta_{ij}$.

% TODO: Afegir 2 punts dels apunts (el primer és la convenció que $p > 0$ vol dir que la força es dirigeix cap al material, i el segon no em va donar temps d'apuntar-lo, s'ha de mirar la gravació)


Generally (solids at rest/motion and fluids at motion), $\TT{\sigma}$ will also have off-diagonal non-vanishing components, and its diagonal components will be different from each other. A diagonal component behaves as a (negative) pressure.

However, there is no unique way of defining the pressure, so wherever pressure is used (outside of the case corresponding to hydrostatic equilibrium), it must be accompanied by a suitable definition.

Sometimes, the pressure will be identified with the mechanical pressure, defined as:
\begin{equation}
  \label{eq:pressure}
  p = -\frac{1}{3} (\sigma_{xx} + \sigma_{yy} + \sigma_{zz}) = -\frac{1}{3} \Tr(\TT{\sigma}).
\end{equation}

\begin{obs}
  $\Tr(\TT{\sigma})$ is an invariant of $\TT{\sigma}$. Hence, $p$ defined in this way ensures it is a scalar field, taking the same value in all coordinate systems.
\end{obs}

\section{Total force and mechanical equilibrium}
Including a body force $d\vec{F}_b = \vec{f} dV$ (for example $\vec{f} = \rho \vec{g}$), the total force on a body of volume $V$ with surface $S$ is:
\[ \vec{F} = \int_V \vec{f} \dif V + \oint_S \TT{\sigma} \cdot \dif \vec{S} \quad \text{(integral formulation)} \]
or
\[ F_i = \int_V f_i \dif V + \oint_S \sum_j \sigma_{ij} \dif S_j \notate[X]{{}={}}{1.25}{\scriptstyle \text{Gauss's theorem}} \int_V f_i \dif V + \int_V \sum_j \partial_j \sigma_{ij} \dif V = \int_V \lp f_i + \sum_j \partial_j \sigma_{ij} \rp \dif V \implies \]
\[ \implies \vec{F} = \int_V (\vec{f} + \text{div}\, \TT{\sigma}) \dif V. \]

This lets us define an effective force density:

\begin{defi}[Effective force density]
  The \underline{effective force density} is
  \[ \vec{f}^* = \vec{f} + \text{div}\, \TT{\sigma} = \vec{f} + \div \TT{\sigma}^T. \quad (\text{local formulation}) \]
\end{defi}

\begin{obs}
  $\vec{f}^*$ is not a long-range volume force, but a local expression that for a tiny material particle equals the sum of the true long-range force (e.g. gravity) and all the short-range contact forces acting on its surface.
\end{obs}

\begin{obs}
  \[ \underbrace{\text{div}\, \TT{\sigma} = \div \TT{\sigma}^T}_{\substack{\text{expression valid in} \\ \text{any coordinate system}}} = \underbrace{\begin{pmatrix}
    \partial_x & \partial_y & \partial_z
  \end{pmatrix} \begin{pmatrix}
    \sigma_{xx} & \sigma_{yx} & \sigma_{zx} \\
    \sigma_{xy} & \sigma_{yy} & \sigma_{zy} \\
    \sigma_{xz} & \sigma_{yz} & \sigma_{zz}
  \end{pmatrix}}_{\text{expression in cartesian components}}. \]
\end{obs}

Mechanical equilibrium (translational) will be reached if $\vec{F} = 0 \quad \forall V$, which is equivalent to
\[ \vec{f}^* = 0 \quad \forall \text{ material particles}. \quad \lp \substack{\text{local condition} \\ \text{for mech. eq.}} \rp \] % TODO(avm99963): Maybe delete the parenthesis part?

This yields the following condition:

\begin{prop}
  A material is in mechanical equilibrium (translational) if it satisfies \underline{Cauchy's equilibrium equation}\index{Cauchy's!equilibrium equation}:
  \[ \vec{f} + \div \TT{\sigma}^T = 0 \]
  or
  \[ f_i + \sum_j \partial_j \sigma_{ij} = 0, \quad i \in \{ x, y, z \}. \]
\end{prop}

\begin{obs}
  Cauchy's equilibrium equation is a PDE governing mechanical equilibrium in all kinds of continuous matter. Written in detail:
  \[ \begin{cases}
    f_x + \partial_x \sigma_{xx} + \partial_y \sigma_{xy} + \partial_z \sigma_{xz} = 0 \\
    f_y + \partial_x \sigma_{yx} + \partial_y \sigma_{yy} + \partial_z \sigma_{yz} = 0 \\
    f_z + \partial_x \sigma_{zx} + \partial_y \sigma_{zy} + \partial_z \sigma_{zz} = 0.
  \end{cases} \]
\end{obs}

These equations must be supplemented by constitutive equations, connecting the stress tensor with the variables describing the state of the material (state of deformation or deformation rate), to determine the stress distribution in continuous matter.

\begin{example}
  Fluid at rest in the presence of a gravitational field.

  As seen in \eqref{eq:pressure}, $\TT{\sigma} = -p \TT{I}$, and the fluid is under the influence of gravity: $\vec{f} = \rho \vec{g}$, where $\vec{g}$ is the acceleration of gravity.

  \index{Hydrostatic equilibrium}If we impose mechanical equilibrium:
  \[ 0 = f_i + \partial_j \sigma_{ij} = \rho g_i + \partial_j(-p \delta_{ij}) = \rho g_i - \partial_i p \implies \]
  \[ \implies \rho \vec{g} - \grad p = 0. \quad \text{(hydrostatic equilibrium)} \]
\end{example}

\section{Moments of force and symmetry of $\TT{\sigma}$}
An additional condition which is normally imposed on $\TT{\sigma}$ is its symmetry, that is:
\[ \sigma_{ij} = \sigma_{ji} \quad \forall i, j. \]

This reduces the number of independent stress components from 9 to 6.

In order to justify the assumption that $\TT{\sigma}$ is symmetric, let's consider a material particle shaped as a rectangular box of sides $a$, $b$, $c$ in mechanical equilibrium:

% TODO: Afegir figura

We can calculate the torque about the center $M$, which will be:
\[ \vec{M_z} = \sigma_{xy} \, ac \, \frac{b}{2} \lp -\hat{k} \rp + \sigma_{xy} \, ac \, \frac{b}{2} \lp - \hat{k} \rp + \sigma_{yx} \, bc \, \frac{a}{2} \hat{k} + \sigma_{yx} \, bc \, \frac{a}{2} \hat{k} = \]
\[ = abc (- \sigma_{xy} + \sigma_{yx}) \hat{k}. \]

Thus, if $\sigma_{yx} \neq \sigma_{xy}$, there's a resultant moment of force on the box.  In mechanical equilibrium we must require $M_z = 0$, and consequently $\sigma_{yx} = \sigma_{xy}$. Similarly, requiring $M_x = 0 \implies \sigma_{zy} = \sigma_{yz}$, and $M_z = 0 \implies \sigma_{xz} = \sigma_{zx}$.

\begin{obs}
  This means that $\TT{\sigma} \text{ symmetric} \implies \vec{M} = 0 \quad \forall V$ in mechanical equilibrium.

  However, keep in mind that in general, for $\vec{M} = 0$, $\TT{\sigma}$ doesn't need to be symmetric (there's another condition that needs to be fulfilled). In fact, there are theories that do not assume $\sigma$ symmetric.
\end{obs}

Let's take a deeper look at the moments of inertia: the total moment of force is
\[ \vec{M} = \int_V \vec{x} \cross \dif \vec{F} = \int_V \vec{x} \cross \vec{F}^* \dif V. \]

If we impose mechanical equilibrium ($\vec{f}^*$) everywhere, then $\vec{M} = 0$. This is true even if $\TT{\sigma}$ is not symmetric.

Now consider that
\[ \vec{M} = \sum_i \hat{e}_i M_i = \int_V \sum_{i, j, k} \hat{e}_i \varepsilon_{ijk} x_j f_k^* \dif V = \int_V \sum_{i, j, k} \hat{e}_i \varepsilon_{ijk} x_j \lp f_k + \sum_l \partial_l \sigma_{kl} \rp \dif V = \]
\[ = \int_V \sum_{i, j, k} \hat{e}_i \varepsilon_{ijk} \lp x_j f_k + \sum_l \partial_l (x_j \sigma_{kl}) - \sigma_{kj} \rp \dif V = \]
\begin{equation}
  \label{eq:momentumOfForces}
  = \vec{M} =
  \underbrace{\int_V \vec{x} \cross \vec{f} \dif V}_{\substack{\text{moment of external} \\ \text{body forces}}} +
  \underbrace{\oint_S \vec{x} \cross \TT{\sigma} \cdot \dif \vec{S}}_{\substack{\text{moment of external} \\ \text{surfaces forces}}} +
  \underbrace{\int_V \sum_{i, j, k} \hat{e}_i \, \varepsilon_{ijk} \, \sigma_{jk} \dif V}_{\substack{\text{kind of internal moment} \\ \text{associated with the material} \\ \text{in the body}}}.
\end{equation}

The last term vanishes $\forall V$ iff $\TT{\sigma}$ is symmetric.

% TODO: Repasar la següent observació:
\begin{obs}
  In our earlier justification, we only calculated the moment of the external forces acting on a material particle. But the external moment does not need to vanish in equilibrium if the stress tensor is asymmetric. Hence, only the sum of the second and third terms in \eqref{eq:momentumOfForces} must vanish.
\end{obs}

\begin{obs}
  Important: in normal elastic materials where stress only depends on deformation, $\TT{\sigma}$ is automatically symmetric. The symmetry of $\TT{\sigma}$ must then be viewed as a constitutive equation when adopted in general.
\end{obs}

As $\TT{\sigma}$ is symmetric, it can be diagonalized. This means we can find the principal directions of stress with their associated principal tensions or stresses.

$\TT{\sigma}$ can be described by an ellipsoid with 3 principal axes. For surfaces normal to these axes, the stresses correspond to pulls or pushes perpendicular to the surfaces. There are no shear forces along these faces. For any stress, we can always choose our axes so that the shear components are zero.

If the ellipsoid is a sphere, there are only normal forces in any direction: hydrostatic pressure.

As for $\TT{\sigma}$, the principal basis (the stress tensor ellipsoid) is generally different from point to point in space.

\section{Boundary conditions for $\TT{\sigma}$}
$\TT{\sigma}$ is a collection of quantities that may be assumed, like hydrostatic pressure, to be continuous in regions where material properties change continuously.

Across real boundaries (surfaces or interfaces), where material properties may change abruptly, Newton's third law demands (in the absence of surface tension) that the 2 sides act on each other with equal and opposite forces. Since the surface elements of the 2 sides are opposite to each other, it follows that the stress vector, $\TT{\sigma} \cdot \hat{n}$, must be continuous across a surface with normal $\hat{n}$ (in the absence of surface tension). Then:
\[ [ \TT{\sigma} \cdot \hat{n} ] = 0, \]
where $[ \cdot ] \equiv \text{difference between the 2 sides of the interface}$.

However, this does not mean that all components of $\TT{\sigma}$ should be continuous. Since it is a vector condition, it imposes continuity on 3 linear combinations of stress components, but leaves 3 other linear combinations free to jump discontinuously.

In particular, $[ \TT{\sigma} \cdot \hat{n} ] = 0 \centernot\implies \text{continuity of mechanical pressure}$. Hence, the appealing intuitive meaning of pressure in hydrostatic loses its meaning.
