GeneralRelativityTensors
MathematicaCoordinate-based tensor calculations with a focus on black holes
PacletInstall["GeneralRelativityTensors"]
Tensor algebra
Canonicalization of expressions involving the Riemann tensor
PacletInstall["TInvar"]
TInvar provides a set of functions for canonicalising expressions involving the Riemann tensor, built on the xAct tensor algebra suite.
xAct’s core canonicalisation function, ToCanonical, efficiently handles single-term
symmetries such as $R_{abcd} = -R_{bacd}$. The Riemann tensor also has multi-term symmetries
through the Bianchi identities, and ToCanonical cannot use those to canonicalise
expressions. TInvar adds that functionality through a new function, RiemannSimplify, which
uses the Bianchi identities to bring expressions into a fully canonical form.
A canonical form needs a basis in which to represent the expression. TInvar uses the basis of independent Riemann monomials identified by Fulling, King, Wybourne and Cummins in “Normal forms for tensor polynomials: I. The Riemann tensor”, Class. Quantum Grav. 9, 1151 (1992). Its elements are organised by order (number of derivatives of the metric), degree (number of Riemann tensors) and rank (number of free indices); that paper enumerated all basis elements up to order 12, degree 6 and rank 12. TInvar takes an arbitrary Riemann polynomial and simplifies it into its normal form with respect to this basis.
TInvar is based on the Invar and Invar2 packages (Martín-García, Portugal & Manssur 2007; Martín-García, Yllanes & Portugal 2008), which handle scalar Riemann invariants. TInvar extends this to tensor expressions with free indices.
To run this package you will need to first install xAct.
TInvar is distributed as a Mathematica paclet. If you haven’t done so already, add the BHPToolkit paclet server and refresh the list of packages available:
PacletSiteRegister["https://pacletserver.bhptoolkit.org", "Black Hole Perturbation Toolkit Paclet Server"]
PacletSiteUpdate["https://pacletserver.bhptoolkit.org"]
Then install the package:
PacletInstall["TInvar"]
Load the package and define a manifold, a metric $g_{ab}$ and its covariant derivative CD
with the usual xAct functions:
<< xAct`TInvar`
DefManifold[M, 4, IndexRange[a, f]];
DefMetric[-1, g[-a, -b], CD];
The package provides four main functions:
| Function | Purpose |
|---|---|
RiemannSimplify |
Simplify expressions involving the Riemann tensor |
InvSimplify |
Simplify expressions involving invariants |
RiemannToInv |
Convert Riemann tensors to their invariant form |
InvToRiemann |
Convert invariants to their explicit tensor expressions |
At the highest level, RiemannSimplify takes a tensor expression involving the Riemann
tensor and writes it in canonical form in terms of the Fulling et al. basis. For example, it
uses the first Bianchi identity to reduce the cyclic sum $R_{abcd} + R_{acdb} + R_{adbc}$ to
zero, which ToCanonical alone cannot do:
RiemannSimplify[RiemannCD[a, b, c, d] + RiemannCD[a, c, d, b] + RiemannCD[a, d, b, c]]
Internally, TInvar converts all expressions to an “invariant” format. You don’t usually need
to know about this when using RiemannSimplify, but you can convert explicitly to and from
this format:
inv = RiemannToInv[RiemannCD[a, b, c, d] RiemannCD[-a, -b, -c, -d]]
InvToRiemann[inv]
RiemannSimplify[expr] is equivalent to InvToRiemann[InvSimplify[RiemannToInv[expr]]].
The functions RiemannToPerm, PermToRiemann, InvToPerm and PermToInv convert
between Riemann tensors, canonical permutations and invariants.
See the online documentation
for the full list of functions. The same documentation is available in Mathematica’s
Documentation Center: select Help → Wolfram Documentation and search for TInvar.
The TInvar tutorial covers
basic usage and verifies well-known identities. It checks the 40 identities in the database
of the MathTensor package by Leonard Parker and Steven M. Christensen, and the identities of
Decanini and Folacci,
“FKWC-bases and geometrical identities for classical and quantum field theories in curved spacetime”.
For each identity it shows whether ToCanonical alone or RiemannSimplify shows it to vanish.
Many of them need the Bianchi identities.
TInvar was created by Kevin Kiely, Barry Wardell, Adrian Ottewill and José M. Martín-García.
It is based on Invar and Invar2, which were created by José M. Martín-García, David Yllanes, Renato Portugal and Leon Manssur.
If you use TInvar in your research, please acknowledge the Toolkit:
This work makes use of the Black Hole Perturbation Toolkit.
See how to cite for further guidance.