CAS to perform “simple” tensor operations in index notation

Heres a couple of questions,

1) Does a CAS exist that can manipulate Cartesian based tensors and produce a simplified output that is hopefully in index notation? 2) If not, is there some indirect method to accomplish this?

I'm talking about doing rather simple manipulations such as computing,

$$\nabla^{2}_{\mathbf{r}}\left(\frac{a}{r}\left[\mathbb{I} + \frac{\mathbf{r}\mathbf{r}}{r^{2}}\right] + \left(\frac{a}{r}\right)^{3}\left[\mathbb{I} - 3 \frac{\mathbf{r}\mathbf{r}}{r^{2}}\right]\right)$$

in a 3D Cartesian basis where $\mathbf{r} = \langle x,y,z\rangle$, $\mathbb{I}$ is the identity 3x3 matrix, $r = |\mathbf{r}|$ etc...

What I've tried: I've tried using Maxima to do this the "pedestrian" way (i.e. making vectors and explicitly computing matricies etc...). This just results in a complex mess of a big 3x3 matrix with long expressions. This "works" but the main problem is that simplification is not easy in this case (or maybe I'm not doing it right).

I'm aware of other "Tensor software" (e.g. http://en.wikipedia.org/wiki/Tensor_software) that does these sorts of things but they all seem to be made for more general or complex uses and its not clear to me how to control them for my use.

So I ask if anyone has any experience with this and could perhaps provide an example where simple manipulations like this in a CAS can be performed.

Thanks

• what do you mean for $\nabla^2_{\mathbf{r}}$ and $\mathbf{r}\mathbf{r}$? – janmarqz Mar 19 '14 at 13:57
• @janmarqz $\nabla^{2}_{\mathbf{r}}$ is the Laplacian with respect to the vector $\mathbf{r}$ and $\mathbf{r}\mathbf{r}$ is the dyadic product (i.e. $\mathbf{r}\mathbf{r}^{T}$). – kmarsh Mar 19 '14 at 18:29