Working with tensor algebra

My question is really easy for experienced users. In my tensor equations I have an unknown tensor Q (symmetric and traceless):

$Q=\begin{pmatrix} n1(x,y) & n2(x,y) \\ n2(x,y) & -n1(x,y) \end{pmatrix}$

In mathematica:

Q = {{n1[x, y, t], n2[x, y, t]}, {n2[x, y, t], -n1[x, y, t]}}


I need to calculate and work with the following tensors:

1) $P1_{\alpha\beta}=(\partial_\alpha Q_{\gamma\epsilon})(\partial_\beta Q_{\gamma\epsilon})=\sum_{\gamma,\epsilon} \left[\frac{\partial Q_{\gamma\epsilon}}{\partial x_\alpha} \frac{\partial Q_{\gamma\epsilon}}{\partial x_\beta}\right]$

2) $P2_{\alpha\beta}=(\partial_\gamma Q_{\gamma\epsilon})(\partial_\epsilon Q_{\alpha\beta})=\sum_{\gamma,\epsilon} \left[\frac{\partial Q_{\gamma\epsilon}}{\partial x_\gamma} \frac{\partial Q_{\alpha\beta}}{\partial x_\epsilon}\right]$

3) $P3_{\alpha\beta}=Q_{\gamma\epsilon}(\partial_{\epsilon\gamma} Q_{\alpha\beta})=\sum_{\gamma,\epsilon} \left[Q_{\gamma\epsilon} \frac{\partial^2 Q_{\alpha\beta}}{\partial x_\gamma \partial x_\epsilon}\right]$

Where Einstein summation rule is used, all indexes are either 1 or 2 (x or y)., $\partial_{\epsilon\gamma}$ is second derivative over $x_\gamma$ and $x_\epsilon$.

I figured how to calculate $P2$,since $P2=(\nabla\cdot Q)\cdot(\nabla Q)$, an inner product of divergence by gradient. In mathematica, since indexes are messed, you have to multiply gradient by divergence:

r = {x, y}
Simplify[D[Q, {r}].Div[Q,r]]


I checked analytically that this result is correct.

I have no idea how to calculate $P1, P3$.

The best answer would be the code, which finds the required tensors by definition, i.e. by direct summations of products of certain entries.

• In 1), it's ambiguous whether $\partial_{\alpha}$ acts on both factors to the right or just one. Also, the dimensions of your result for $P2$ aren't those of a $2\times 2$ matrix, as the index notation indicates they should be. The conclusion: Einstein notation is a disease. – Jens May 6 '16 at 20:05
• @Jens, corrected. Now everyone should Understand this. Einstein notations are very convenient to use) – Mikhail Genkin May 6 '16 at 20:14
• @Jens, I am sure you know how to do it using table and sum commands. I don't have much experience with this stuff – Mikhail Genkin May 6 '16 at 20:16
• Yes, I'll post it. – Jens May 6 '16 at 20:16

1 Answer

Here is how I would literally translate the definitions:

Q = {{n1[x, y, t], n2[x, y, t]}, {n2[x, y, t], -n1[x, y, t]}};
r = {x, y};

p1[α_, β_] :=
Sum[D[Q[[γ, ϵ]], r[[α]]] D[ Q[[γ, ϵ]], r[[β]]], {γ, 1, 2}, {ϵ, 1, 2}]

p3[α_, β_] :=
Sum[Q[[γ, ϵ]] D[ Q[[α, β]], r[[ϵ]], r[[γ]]], {γ, 1, 2}, {ϵ, 1, 2}]

p2[α_, β_] :=
Sum[D[Q[[γ, ϵ]], r[[γ]]] D[ Q[[α, β]], r[[ϵ]]], {γ, 1, 2}, {ϵ, 1, 2}]

Table[p1[i, j], {i, 2}, {j, 2}]

Table[p2[i, j], {i, 2}, {j, 2}]

Table[p3[i, j], {i, 2}, {j, 2}]

• Nice, thanks a lot, that works! – Mikhail Genkin May 6 '16 at 20:23
• @MikhailGenkin OK - and of course I have nothing against Einstein personally. – Jens May 6 '16 at 20:24
• actually p3[$\alpha, \beta$] is not defined correctly, since D[f[x,y],{x,y}] produce strange result. But after I replaced if with D[D[f[x,y],x],y], I got what I wanted, so it is ok – Mikhail Genkin May 6 '16 at 20:41
• @MikhailGenkin Ah yes, I had too many brackets there. Fixed the typos. – Jens May 6 '16 at 20:58