\documentclass[11pt,a4paper,dvipsnames]{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{parskip}
\usepackage{xcolor}
\usepackage{tcolorbox}
\usepackage{hyperref}
\usepackage{geometry}
\usepackage{physics}
\usepackage{systeme,mathtools}
\usepackage[usestackEOL]{stackengine}
\usepackage{scalerel}
\usepackage{graphicx}
\usepackage{enumerate}
\usepackage{tikz}
\usepackage[labelfont=bf]{caption}
\usepackage{siunitx}
\usepackage{cancel}
\usepackage{fbox}
\usepackage{multicol}
\usepackage{amsthm}
\usepackage[shortlabels]{enumitem}
\usetikzlibrary{positioning}
\geometry{top=25mm}

% Plantilla per l'interior d'un conjunt
\newcommand{\interior}[1]{%
  {\kern0pt#1}^{\mathrm{o}}%
}

% Plantilles del notate
\def\myupbracefill#1{\rotatebox{90}{\stretchto{\{}{#1}}}
\def\rlwd{.5pt}
\newcommand\notate[4][B]{%
  \if B#1\else\def\myupbracefill##1{}\fi%
  \def\useanchorwidth{T}%
  \setbox0=\hbox{$\displaystyle#2$}%
  \def\stackalignment{c}\stackunder[-6pt]{%
    \def\stackalignment{c}\stackunder[-1.5pt]{%
      \stackunder[2pt]{\strut $\displaystyle#2$}{\myupbracefill{\wd0}}}{%
    \rule{\rlwd}{#3\baselineskip}}}{%
  \strut\kern9pt$\rightarrow$\smash{\rlap{$~#4$}}}%
}

% Plantilles dels boxes
%%%% START DEFINING LBOXED, RBOXED %%%%
\newcommand{\lboxed}[1]{\fbox[blt]{\mathsurround=0pt$\displaystyle#1$}}
\newcommand{\rboxed}[1]{\fbox[brt]{\mathsurround=0pt$\displaystyle#1$}}

% Plantilles pels problemes
\newcounter{problem}
\newcounter{solution}

\newcommand{\green}[1]{\textbf{\color{ForestGreen} #1}}

\newcommand{\separator}{\noindent\hfil\rule{0.75\textwidth}{0.4pt}\hfil}

\newenvironment{Problem}{%
    \stepcounter{problem}%
    \begin{tcolorbox}[colback=cyan!10!white,parbox=false]
        \textbf{Problem \theproblem.}~%
        \setcounter{solution}{0}}{%
    \end{tcolorbox}
}

\newenvironment{FreeProblem}{%
    \begin{tcolorbox}[colback=cyan!10!white,parbox=false]
        \setcounter{solution}{0}}{%
    \end{tcolorbox}
}

\newcommand\Solution{%
    \textbf{Solution:}\\%
}

\newcommand\Context{%
    \textbf{Context:}\\%
}

\newcommand\Lema{%
    \textbf{Lema:} %
}

\newcommand\Proposition{%
    \textbf{Proposition:} %
}

\newcommand\Theorem{%
    \textbf{Theorem:} %
}

\newcommand\Proof{%
    \textbf{Proof:}\\%
}

\newcommand\QED{\square}

\newcommand\ASolution{%
    \stepcounter{solution}%
    \textbf{Solution \thesolution:}\\%
}


\newcommand{\asection}[2]{
\setcounter{section}{#1}
\addtocounter{section}{-1}
\section{#2}
}

% Tensor commands:
\newcommand*{\TT}[1]{\bar{\bar{#1}}}

%\usepackage{biblatex}
%\addbibresource{references.bib}

\title{Homework 2\\Continuum Mechanics}
\author{Adrià Vilanova Martínez}
\date{March 28, 2021}

\begin{document}

\maketitle

\begin{Problem}
  Consider vector $\vec{a}$. Show that $\nabla \cross \vec{a} = 2 \vec{v}$, where $\vec{v}$ is the dual vector associated to the antisymmetric part of the second rank tensor $\nabla \vec{a}$.

  In fluid mechanics, the tensor $\nabla \vec{v}$, with $\vec{v}$ the velocity, plays a relevant role. Its antisymmetric part contains information about the rotation of material particles. In fact, the dual vector associated to this antisymmetric part is the angular velocity of the material particle, which is half the vorticity at a point within the fluid. In elasticity, the same ideas apply with the displacement vector $\vec{u}$ playing the role of the velocity.
\end{Problem}

\Solution

We know that \[ (\nabla \vec{a})_{ij} = \partial_i a_j. \]

Therefore the antisymmetric part of tensor $\nabla \vec{a}$ is (component by component) \[ ((\nabla \vec{a})_A)_{ij} = \frac{1}{2} ((\nabla \vec{a})_{ij} - (\nabla \vec{a})_{ji}) = \frac{1}{2} (\partial_i a_j - \partial_j a_i). \]

Finally, its associated dual vector multiplied by 2 ($2 \vec{v}$) will be, by definition of the dual vector: \[ \begin{cases}
  2 v_x = 2 ((\nabla \vec{a})_A)_{yz} = \partial_y a_z - \partial_z a_y \\
  2 v_y = 2 ((\nabla \vec{a})_A)_{zx} = \partial_z a_x - \partial_x a_z \\
  2 v_z = 2 ((\nabla \vec{a})_A)_{xy} = \partial_x a_y - \partial_y a_x.
\end{cases} \]

Now, we also know that
\[ ( \nabla \cross \vec{a} )_i = \varepsilon_{ijk} \partial_j a_k, \]
from which we obtain the same components of twice the dual vector:
\[ \begin{cases}
  (\nabla \cross \vec{a})_x = \partial_y a_z - \partial_z a_y \\
  (\nabla \cross \vec{a})_y = \partial_z a_x - \partial_x a_z \\
  (\nabla \cross \vec{a})_z = \partial_x a_y - \partial_y a_x.
\end{cases} \]

Thus, $\nabla \cross \vec{a} = 2 \vec{v}$.

\begin{Problem}
  Consider Lautrup's appendix D, which you can find posted as a pdf in ``campus virtual''.

  \begin{enumerate}[a)]
    \item Write down the $\phi\phi$-component of $\nabla \vec{a}$ in the cylindrical basis.
    \item Write down the $\phi\theta$-component of $\nabla \vec{a}$ in the spherical basis.
    \item Write down the $\phi$-component of $\nabla \cdot \TT{T}$, with $\TT{T}$ a second rank tensor, in the cylindrical basis.
    \item The Laplacian of a vector $\vec{a}$ in the Cartesian basis is \\ $\nabla^2 \vec{a} = \nabla \cdot \nabla \vec{a} = \left( \partial_{xx} a_x + \partial_{yy} a_x + \partial_{zz} a_x \right) \hat{e}_x + \left( \partial_{xx} a_y + \partial_{yy} a_y + \partial_{zz} a_y \right) \hat{e}_y + \\ + \left( \partial_{xx} a_z + \partial_{yy} a_z + \partial_{zz} a_z \right) \hat{e}_z$. Using index notation, the $k$ component is $\partial_i \partial_j a_k$. Look at the Laplacian expression in the cylindrical and spherical bases. There are additional terms compared to those in the Cartesian basis. Very briefly explain why this is the case.
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):}
\[ (\nabla \vec{a})_{\phi\phi} = \frac{1}{r} (\partial_\phi a_\phi + a_r) \]

\textbf{Solution for b):}
\[ (\nabla \vec{a})_{\phi \theta} = \frac{1}{r \sin \theta} \partial_\phi a_\theta - \frac{a_\phi}{r \tan \theta} \]

\textbf{Solution for c):}
\[ \nabla \cdot \TT{T} = \nabla_i T_{ij} \hat{e}_j \implies (\nabla \cdot \TT{T})_\phi = \partial_r T_{r \phi} + \frac{1}{r} \partial_\phi T_{\phi \phi} + \partial_z T_{z \phi} + \frac{1}{r} T_{\phi r} + \frac{1}{r} T_{r \phi} \]

\textbf{Solution for d):}

There are additional terms in the Laplacian expression in cylindrical and spherical bases because of the fact that the del operator ($\nabla$) in those other bases is developed by applying the chain rule to the expresion in cartesian coordinates (which introduces ``complexity'' to the operator) and when calculating the second partial derivatives in order to express the Laplacian, all the basis vectors are no longer constant (their spatial variation matters), as opposed to the natural (cartesian) basis.

\begin{Problem}
  In class, we have considered material particles subjected to normal and shear forces in mechanical equilibrium. Translational equilibrium requires $\sum \vec{F} = 0$. Assuming the stress tensor is symmetric guarantees that the total torque or momentum of force is $\vec{M} = 0$.

  In this problem we are going to look at this a bit more carefully; we will clearly see that choosing $\TT{\sigma}$ symmetric is one (very good) option, but that, in general, $\TT{\sigma}$ does not need to be symmetric. We will also practice with index notation adn tensor calculus. As usual, use summation convention.

  \begin{enumerate}[a)]
    \item The total moment of force is \[ \vec{M} = \int_V \vec{x} \cross d\vec{F} = \int_V \vec{x} \cross \vec{f^*} dV' \] where $\vec{f^*}$ is the total specific (per volume) force, including body and contact forces.

    Show that the i-component of $\vec{M}$ is \[ M_i = \int_v \varepsilon_{ijk} x_j (f_k + \partial_l \sigma_{kl}) dV' \] where $f_k$ is the k-component of the body force.

    \item Then, show that \[ M_i = \int_V \varepsilon_{ijk} (x_j f_k + \partial_l (x_j \sigma_{kl}) - \sigma_{kj}) dV'. \]

    \item Use Gauss's theorem to show that \[ \int_V \varepsilon_{ijk} \partial_l(x_j \sigma_{kl}) dV' = \oint_A (\vec{x} \cross \TT{\sigma} \cdot d\vec{S})_i. \]

    \item Now, realize $- \varepsilon_{ijk} \sigma_{kj} = \varepsilon_{ijk} \sigma_{jk}$.
  \end{enumerate}

  Using the results in (c) and (d), we then have: \[ \vec{M} = \int_V \vec{x} \cross \vec{f} dV' + \oint_A \vec{x} \cross \TT{\sigma} \cdot d\vec{S} + \int_v \hat{e}_i \varepsilon_{ijk} \sigma_{jk} dV'. \]

  In the absence of body forces, taking $\TT{\sigma}$ symmetric guarantees that $\vec{M} = 0$. In this case, we showed in class that the second term is zero. The third term is also zero, since a permutation of indices $j, k$ changes the sign in $\varepsilon_{ijk}$.

  However, $\vec{M} = 0$ does not require $\TT{\sigma}$ to be symmetric. In the absence of body forces, only the sum of the 2nd and 3rd tirms in $\vec{M}$ must vanish. There are, in fact, generalizations of classical continuum theory that use non-symmetric stress tensors. In classical continuum theory, however, we choose $\TT{\sigma}$ symmetric and develop a coherent theory with this selection.
\end{Problem}

\newpage

\textbf{Solution for a):}
\[ M_i = \left( \int_V \vec{x} \cross \vec{f^*} dV' \right)_i = \int_V (\vec{x} \cross \vec{f^*})_i \, dV' \notate[X]{{}={}}{1.25}{\scriptstyle (\vec{B} \cross \vec{C})_i = \varepsilon_{ijk} B_j C_k} \int_V \varepsilon_{ijk} x_j f^*_k \, dV' \notate[X]{{}={}}{1.25}{\scriptstyle f^*_i := f_i + \partial_j \sigma_{ij}} \int_V \varepsilon_{ijk} x_j (f_k + \partial_l \sigma_{kl}) \, dV' \]

\textbf{Solution for b):}

We must show that $\varepsilon_{ijk} x_j \partial_l \sigma_{kl} = \varepsilon_{ijk} (\partial_l (x_j \sigma_{kl}) - \sigma_{kj})$.

If we take into account that $\vec{x} = (x, y, z)$, then $\partial_i x_j = \delta_{ij}$, then it is clear that \[ \varepsilon_{ijk} (\partial_l (x_j \sigma_{kl}) - \sigma_{kj}) = \varepsilon_{ijk} ((\partial_l x_j) \sigma_{kl} + x_j (\partial_l \sigma_{kl}) - \sigma_{kj}) = \varepsilon_{ijk} (\delta_{lj} \sigma_{kl} + x_j (\partial_l \sigma_{kl}) - \sigma_{kj}) = \]
\[ = \varepsilon_{ijk} (\sigma_{kj} + x_j (\partial_l \sigma_{kl}) - \sigma_{kj}) = \varepsilon_{ijk} x_j (\partial_l \sigma_{kl}). \]

\textbf{Solution for c):}

Gauss's theorem in general states that
\[ \int_V \partial_l T_{jkl} \, dV' = \oint_A T_{jkl} n_l \, dS. \]

In our case, if we take $T_{jkl} = x_j \sigma_{kl}$, we get:
\[ \int_V \partial_l (x_j \sigma_{kl}) \, dV' = \oint_A x_j \underbrace{\sigma_{kl} n_l \, dS}_{= (\TT{\sigma} \cdot \vec{dS})_k} \implies \]
\[ \implies \int_V \varepsilon_{ijk} \partial_l (x_j \sigma_{kl}) \, dV' = \oint_A \underbrace{\varepsilon_{ijk} x_j (\TT{\sigma} \cdot \vec{dS})_k}_{= (\vec{x} \cross \TT{\sigma} \cdot \vec{dS})_i} \implies \]
\[ \implies \int_V \varepsilon_{ijk} \partial_l (x_j \sigma_{kl}) \, dV' = \oint_A (\vec{x} \cross \TT{\sigma} \cdot \vec{dS})_i. \]

\textbf{Solution for d):}

If two of more of $\{i, j, k\}$ are equal, then this is trivial.

Otherwise, consider the permutation $(i, j, k)$. Then $(i, j, k)(j, k) = (i, k, j)$ has the opposite sign of the original permutation, since we have transposed 2 elements of the permutation. Since $\varepsilon_{ijk}$ gives us the sign of the permutation, this means $- \varepsilon_{ijk} = \varepsilon_{ikj}$.

Thus, we have: \[ -\varepsilon_{ijk} \sigma_{kj} = \varepsilon_{ikj} \sigma_{kj} \]

Since $\{j, k\}$ are the indices we are summing over, we can change their names (in particular swap them) and the result will be the same. In conclusion:
\[ \varepsilon_{ikj} \sigma_{kj} = \varepsilon_{ijk} \sigma_{jk} \]
which proves the statement.

\begin{Problem}
  Consider a rigid body rotation through angle $\phi$ around the z-axis. In matrix form: \[ \begin{pmatrix}
    x' \\
    y' \\
    z'
  \end{pmatrix} = \begin{pmatrix}
    \cos \phi & - \sin \phi & 0 \\
    \sin \phi & \cos \phi & 0 \\
    0 & 0 & 1
  \end{pmatrix} \begin{pmatrix}
    x \\
    y \\
    z
  \end{pmatrix}. \]

  Note this rotation matrix is not the one associated to a rotation of axes, which we call a passive rotation. In the case considered here, the basis remains the same; it is the vector that is rotated by angle $\phi$. We call this an active rotation.

  Note also that the matrix above is the inverse of the matrix associated to a rotation of axes by angle $\phi$ around the z-axis. You can easily visualize that an active rotation by angle $\phi$ followed by a passive rotation of axes by the same angle $\phi$ leaves the vector unchanged. Hence the matrices representing active and passive rotations are inverses of one another; since the transformations are orthogonal, we can also say they are transposes of one another.

  \begin{enumerate}[a)]
    \item Find the displacement field induced by the active rotation above.
    \item Find $\text{grad}\, \vec{u} = (\nabla \vec{u})^T$.
    \item Remember that $d\vec{r'} = d\vec{r} + \text{grad}\, \vec{u} \cdot d\vec{r}$. Confirm that $|d\vec{r'}| = |d\vec{r}|$; this indicates there is no deformation of the body.
    \item Confirm the strain tensor $\TT{u} = 0$ (you will need to use the full expression for $\TT{u}$; not Cauchy's strain tensor).
  \end{enumerate}

  Note: for slowing varying displacement fields, the angle $\phi$ is small, and to leading order, $\text{grad}\, \vec{u} = (\nabla \vec{u})^T$ becomes antisymmetric. This connects to what we said in class: For $\displaystyle \left| \frac{\partial u_i}{\partial x_k} \right| \ll 1$, $\text{grad}\, \vec{u} = \TT{u} + \TT{w}$, where $\TT{u}$ is Cauchy's strain tensor and $\TT{w}$ is an antisymmetric tensor related to the rotation of material particles. In this problem, since there is no deformation, for small $\phi$, $\text{grad}\, \vec{u} = \TT{w}$.
\end{Problem}

\textbf{Solution for a):}
\[ \vec{u}(\vec{r}) = \vec{r'} - \vec{r} = \begin{pmatrix}
  \cos \phi - 1 & - \sin \phi & 0 \\
  \sin \phi & \cos \phi - 1 & 0 \\
  0 & 0 & 0
\end{pmatrix} \begin{pmatrix}
  x \\
  y \\
  z
\end{pmatrix} = \begin{pmatrix}
  (\cos \phi - 1) \cdot x - \sin \phi \cdot y \\
  \sin \phi \cdot x + (\cos \phi - 1) \cdot y \\
  0
\end{pmatrix} \]

\textbf{Solution for b):}
\[ \text{grad}\, \vec{u} = \begin{pmatrix}
  \cos \phi - 1 & - \sin \phi & 0 \\
  \sin \phi & \cos \phi - 1 & 0 \\
  0 & 0 & 0
\end{pmatrix} \]

\textbf{Solution for c):}
\[ d\vec{r'} = d\vec{r} + \text{grad}\, \vec{u} \cdot d\vec{r} = (Id + \text{grad}\, \vec{u}) \cdot d\vec{r} \implies \]
\[ \implies | d\vec{r'} | = | (Id + \text{grad}\, \vec{u}) \cdot d\vec{r} | = \left| \begin{pmatrix}
  \cos \phi & - \sin \phi & 0 \\
  \sin \phi & \cos \phi & 0 \\
  0 & 0 & 1
\end{pmatrix} d\vec{r} \right| = \left| \begin{pmatrix}
  \cos \phi \cdot dr_x - \sin \phi \cdot dr_y \\
  \sin \phi \cdot dr_x + \cos \phi \cdot dr_y \\
  dr_z
\end{pmatrix} \right| = \]
\[ = \sqrt{(\cos \phi \cdot dr_x - \sin \phi \cdot dr_y)^2 + (\sin \phi \cdot dr_x + \cos \phi \cdot dr_y)^2 + dr_z^2} = \]
\[ = \sqrt{(\sin^2 \phi + \cos^2 \phi) dr_x^2 + (\sin^2 \phi + \cos^2 \phi) dr_y^2 + dr_z^2} = \]
\[ = \sqrt{dr_x^2 + dr_y^2 + dr_z^2} = |dr| \]

\textbf{Solution for d):}

We could show that each component is zero, by using the following expression: \[ u_{ik} = \frac{1}{2} \left[ \frac{\partial u_i}{\partial x_k} + \frac{\partial u_k}{\partial x_i} + \sum_l \frac{\partial u_l}{\partial x_i} \cdot \frac{\partial u_l}{\partial x_k} \right] \]

However, we know from the definition of the strain tensor that \[ | d\vec{r'} |^2 = | d\vec{r} |^2 + 2 \sum_{i, k} u_{ik} \, dx_i dx_k \] and since we have shown that $| d\vec{r'} |^2 = | d\vec{r} |^2$, we have that \[ \sum_{i, k} u_{ik} \, dx_i dx_k = 0 \] and since $\{ dx_i dx_k \}_{i, k}$ are linearly independent, we have that \[ u_{ik} = 0 \quad \forall i, k \] which means that $\TT{u} = 0$.

\begin{Problem}
  \begin{enumerate}[a)]
    \item In class, we have considered the homogeneous (also called uniform) stretching along the x-direction of a solid clamped on its left-most side and having an equilibrium length along this direction equal to $L$.

    Write down Cauchy's strain tensor, knowing that the stretch of the right-most point of the solid is $\Delta L$.

    \item Consider the \textit{pure shear} deformation of the solid considered in class (see Fig. 1).

    Write down Cauchy's strain tensor (assume small deformations as we did in class).

    \item Now consider a \textit{simple shear} deformation (see Fig. 2). Write down the second rank tensor $\text{grad}\, \vec{u} = (\nabla \vec{u})^T$, for small $\theta$. You will see it is not symmetric.

    Obtain the symmetric and antisymmetric parts. Realize that the symmetric part is Cauchy's strain tensor.

    The antisymmetric part informs about rotations of material particles. Since it is a second rank tensor, we have a dual vector we can associate to it, which we know is related to $\nabla \cross \vec{u}$. We then see we can think of rotations in terms of the antisymmetric part of $\text{grad}\, \vec{u}$ (or $\nabla \vec{u}$), or in terms of the vector $\nabla \cross \vec{u}$.
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):}

Homogenous stretching along the x-direction keeping the left-most side clamped means that \[ \vec{r'} = \begin{pmatrix}
  k x \\
  y \\
  z
\end{pmatrix} \] where $k \in \mathbb{R}$ is a constant.

Therefore: \[ \vec{u}(\vec{r}) = \vec{r'} - \vec{r} = \begin{pmatrix}
  (k - 1) x \\
  0 \\
  0
\end{pmatrix}. \]

We have \[ \text{grad}\, \vec{u} = \begin{pmatrix}
  k - 1 & 0 & 0 \\
  0 & 0 & 0 \\
  0 & 0 & 0
\end{pmatrix} \] and this lets us calculate Cauchy's strain tensor:
\[ \TT{u} = \frac{1}{2} (\text{grad}\, \vec{u} + (\text{grad}\, \vec{u})^T) \notate[X]{{}={}}{1}{\scriptstyle \text{grad}\, \vec{u} \text{ is symmetric}} \text{grad}\, \vec{u} \]

Since $\Delta L = (k - 1) L$, we have that $k - 1 = \frac{\Delta L}{L}$, and thus: \[ \TT{u} = \begin{pmatrix}
  \frac{\Delta L}{L} & 0 & 0 \\
  0 & 0 & 0 \\
  0 & 0 & 0
\end{pmatrix} \]

\textbf{Solution for b):}

In questions b) and c) we will ignore the third dimension, due to the fact that the displacement there is 0, and therefore the gradient of the displacement vector and Cauchy's strain tensor are zero in that direction.

The application that gives $\vec{r'}$ as a function of $\vec{r}$ (the \textit{simple shear} deformation) is a linear application $A$ that satisfies
\[ \begin{cases}
  A(e_1) = e_1 + \tan\left(\frac{\theta}{2}\right) e_2 \\
  A(e_2) = \tan\left(\frac{\theta}{2}\right) e_1 + e_2.
\end{cases} \]

Therefore: \[ \vec{r'} = A \vec{r} \quad \text{where} \quad A = \begin{pmatrix}
  1 & \tan\left(\frac{\theta}{2}\right) \\
  \tan\left(\frac{\theta}{2}\right) & 1
\end{pmatrix} \] and \[ \vec{u}(\vec{r}) = \vec{r'} - \vec{r} = \begin{pmatrix}
  0 & \tan\left(\frac{\theta}{2}\right) \\
  \tan\left(\frac{\theta}{2}\right) & 0
\end{pmatrix} \vec{r} \; \approx \; \begin{pmatrix}
  0 & \frac{\theta}{2} \\
  \frac{\theta}{2} & 0
\end{pmatrix} \vec{r} = \frac{\theta}{2} \begin{pmatrix}
  y \\
  x
\end{pmatrix}. \]

Let's calculate the gradient of the displacement vector in order to calculate the strain tensor: \[ \text{grad}\, \vec{u} = \frac{\theta}{2} \begin{pmatrix}
  0 & 1 \\
  1 & 0
\end{pmatrix}. \]

Due to the fact that it is a symmetrical second-rank tensor, we conclude that the strain tensor is \[ \TT{u} = \frac{1}{2} (\text{grad}\, \vec{u} + (\text{grad}\, \vec{u})^T) = \text{grad}\, \vec{u} \]

\textbf{Solution for c):}

In this case the application $B$ which gives $\vec{r'}$ as a function of $\vec{r}$ is also linear, and satisfies
\[ \begin{cases}
  B(e_1) = e_1 \\
  B(e_2) = \tan(\theta) e_1 + e_2.
\end{cases} \]

Therefore: \[ \vec{r'} = B \vec{r} \quad \text{where} \quad B = \begin{pmatrix}
  1 & \tan(\theta) \\
  0 & 1
\end{pmatrix} \] and \[ \vec{u}(\vec{r}) = \vec{r'} - \vec{r} = \begin{pmatrix}
  0 & \tan(\theta) \\
  0 & 0
\end{pmatrix} \vec{r} \; \approx \; \begin{pmatrix}
  0 & \theta \\
  0 & 0
\end{pmatrix} \vec{r} = \begin{pmatrix}
  \theta y \\
  0
\end{pmatrix}. \]

At this point we can calculate the gradient of the displacement vector: \[ \text{grad}\, \vec{u} = \begin{pmatrix}
  0 & \theta \\
  0 & 0
\end{pmatrix} \] which is not symmetric if $\theta \neq 0$.

Let's get the symmetric and antisymmetric parts: \[ \begin{cases}
  \displaystyle (\text{grad}\, \vec{u})_S = \frac{1}{2} \left( \text{grad}\, \vec{u} + (\text{grad}\, \vec{u})^T \right) = \frac{\theta}{2} \begin{pmatrix}
    0 & 1 \\
    1 & 0
  \end{pmatrix} \\
  \displaystyle (\text{grad}\, \vec{u})_A = \frac{1}{2} \left( \text{grad}\, \vec{u} - (\text{grad}\, \vec{u})^T \right) = \frac{\theta}{2} \begin{pmatrix}
    0 & 1 \\
    -1 & 0
  \end{pmatrix}.
\end{cases} \]

As we saw in theory, Cauchy's strain tensor is defined as $\TT{u} := \frac{1}{2} \left( \nabla \vec{u} + (\nabla \vec{u})^T \right)$, so the antisymmetric part of the gradient is indeed Cauchy's strain tensor, due to the fact that $\nabla \vec{u} = (\text{grad}\, \vec{u})^T$.

\newpage

\begin{Problem}
  Consider the displacement field $\vec{u} = (Ax + Cy, Cx - By, 0)$, where $A$, $B$, $C$ are small constants.

  \begin{enumerate}[a)]
    \item Compute Cauchy's strain tensor.
    \item Find a condition to ensure that the volume remains constant.
    \item Determine, in this case, the principal strain axes and the relative length change along the principal directions.
  \end{enumerate}
\end{Problem}

\textbf{Solution for a):}
\[ \text{grad}\, \vec{u} = \begin{pmatrix}
  A & C & 0 \\
  C & -B & 0 \\
  0 & 0 & 0
\end{pmatrix} \]
\[ \TT{u} \notate[X]{{}={}}{1}{\scriptstyle \text{grad}\, \vec{u} \text{ is symmetric}} \text{grad}\, \vec{u} \]

\textbf{Solution for b):}
In theory class we saw that when the deformation is small enough, one condition to have incompressibility is that $\nabla \cdot \vec{u} = 0$. In this particular case, this gives us the following condition: \[ A - B = 0 \implies A = B. \]

\textbf{Solution for c):}
Let's find the principal strain axes (which correspond to the eigenvectors of $\TT{u}$):

A trivial eigenvector is $\hat{e}_z$ with associated eigenvalue $0$, since $\TT{u} \cdot \hat{e}_z = 0$

Let's find the eigenvalues with the following equation: \[ \det (\TT{u} - \lambda \TT{I}) = 0 \iff 0 = \det \begin{pmatrix}
  A - \lambda & C & 0 \\
  C & - B - \lambda & 0 \\
  0 & 0 & - \lambda
\end{pmatrix} = - \lambda ((A - \lambda)(- B - \lambda) - C^2) \iff \]
\[ \iff \begin{cases}
  \lambda = 0, \text{ or} \\
  (A - \lambda)(- B - \lambda) - C^2 = 0 \iff \lambda^2 - (A - B) \lambda - AB - C^2 = 0 \iff
\end{cases} \]
\[ \iff \lambda_\pm = \frac{A - B \pm \sqrt{A^2 + B^2 - 2AB - 4(- AB - C^2)}}{2} = \]
\[ = \frac{1}{2} \left( A - B \pm \sqrt{(A + B)^2 + 4 C^2} \right). \]

$\lambda = 0$, $\lambda_+$ and $\lambda_-$ are the principal strain values, and if we suppose $A = B$ (the condition we found for volume to be conserved) we have
\[ \lambda_\pm = \pm \frac{1}{2} \sqrt{(2A)^2 + 4C^2} = \pm \sqrt{A^2 + C^2} \]
and their corresponding directions are given by the following equations:
\[ \begin{cases}
  (\TT{u} - \lambda_+ \TT{I}) v_+ = 0 \iff \begin{pmatrix}
    A - \sqrt{A^2 + C^2} & C & 0 \\
    C & - A - \sqrt{A^2 + C^2} & 0 \\
    0 & 0 & - \sqrt{A^2 + C^2}
  \end{pmatrix} v_+ = 0 \iff \\
  \iff [ v_+ ] = \left[ \begin{pmatrix}
    - \frac{C}{A - \sqrt{A^2 + C^2}}, & 1, & 0
  \end{pmatrix} \right] \\ \\
  \hline \\
  (\TT{u} - \lambda_- \TT{I}) v_- = 0 \iff \begin{pmatrix}
    A + \sqrt{A^2 + C^2} & C & 0 \\
    C & - A + \sqrt{A^2 + C^2} & 0 \\
    0 & 0 & \sqrt{A^2 + C^2}
  \end{pmatrix} v_- = 0 \iff \\
  \iff [ v_- ] = \left[ \begin{pmatrix}
    - \frac{C}{A + \sqrt{A^2 + C^2}}, & 1, & 0
  \end{pmatrix} \right]
\end{cases} \]

%\printbibliography

\end{document}
