# GeneralRelativityTensors

Install this package!A Mathematica package that provides a set of functions for performing coordinate-based tensor calculations with a focus on general relativity and black holes in particular.

## Example usage

The package has extensive documentation and tutorials. Below we give a few simple examples of the package in action.

### Defining the metric

All calculations using GeneralRelativityTensors require a metric with explicit values. You can define your own metric and there are also a range of useful build in metrics, i.e.,

```
g = ToMetric["Kerr"]
```

Other build in metrics include `"Minkowski"`

, `"Schwarzschild"`

, `"ReissnerNordstrom"`

, “KerrNewman”, etc (see the documentation of `ToMetric[]`

for more details).

To view the components of any tensor you can use the `TensorValues[]`

function. For example, with the metric defined above, `TensorValues[g]`

returns

### Defining tensors

The real power of the package comes from forming and manipulating tensors. Tensors are created using the `ToTensors[]`

command. A few things to note:

- Tensors must be defined with a related metric, so indices can be raised or lower
- Negative indices are covariant, while positive indicies are contravariant

The following command defines a tensor $t_a$ on the metric $g$ above where all the components are functions of $r$.

```
t1 = ToTensor[{"NewTensor", "t"}, g, {f1[r], f2[r], f3[r], f4[r]}, {-a}]
```

The contravariant version, $t^a$, can be accessed via `t[a]`

. As with the metric, the values of any tensor can be explicitly computed using `TensorValues[]`

.

### Common tensors

Some common tensors are build in. For instance `ChristoffelSymbol[g, ActWith -> Simplify]`

will compute the ChristoffelSymbols, $\Gamma^\alpha_{\beta\gamma}. The `ActWith`

option means the Simplify command will be applied to each component before returning the result. Useful built in common tensors include: `RiemmannTensor, RicciTensor, RicciScalar, Einstein Tensor, KretschmannScalar, WeylTensor`

and many more.

### Merging tensors

Another way to construct tensors is by merging other tensors using the command `MergeTensors[]`

. As an example you can construct the Einstein tensor from the Ricci tensor, scalar and the metric via the commands:

```
g = ToMetric["Schwarzschild"]
ricT = RicciTensor[g]
ricS = RicciScalar[g]
einExpr = ricT[-a, -b] - g[-a], -b] ricS/2
```

The variable `einExpr`

is not yet a tensor, but rather the sum and product of three different Tensors. These can be combined using the `MergeTensors`

, e.g.,

```
einS = MergeTensors[einSExpr, {"EinsteinSchwarzschild", "G"}, ActWith -> Simplify]
```

This returns $G_{ab}$. You can explicitly then check that the Schwarzschild solution is a vacuum solution via `TensorValues[EinS]`

which returns

```
{{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}
```

### More examples

The above just scratches the surface of what this package can do. Check the documentation for more details.