Conformal transformations

Brief usage example of the xAct and xTensor packages

In this brief tutorial we derive expressions for the covariant derivative and Riemann curvature tensor associated with a metric resulting from a conformal transformation as shown in the Appendix D from the “General Relativity” book by Wald.

Load xAct

Once xAct has been successfully installed, the first step is including the xTensor package as follows

<<xAct`xTensor`;
<<xAct`TexAct`;

Define manifold

After loading xTensor, we declare the manifold we’ll use. DefManifold expects a name for the manifold, its dimension and a list of the symbols we’ll used as dummy indices for tensors components

DefManifold[M4, 4, {a, b, c, d, e, f}]

Before going into the details of the metric and it’s conformal transformation, we introduce a vector, co-vector and scalar field for testing our definitions

DefTensor[ϕ[],M4]

DefTensor[ω[-a],M4]

DefTensor[v[a], M4]

Metric

With our manifold and objects defined, we continue by declaring a metric g with negative determinant and associated covariant derivative operator CD. The - sign in front of the dummy indices represents the covariant nature of the component

DefMetric[-1, g[-a, -b], CD]

Conformal transformation

We are now ready to introduce a new metric resulting from the conformal transformation of our metric . Here we introduce   . Thus, we need first declare a scalar field  and a tensor  for the transformed metric.

DefTensor[Ω[], M4]

DefTensor[h[-a,-b], M4, Symmetric[{-a,-b}]]

Note we declared  to be a symmetric tensor as a metric should be. We introduce a new covariant derivative which we’ll associated with our new metric and represented it D

DefCovD[hCD[-a], SymbolOfCovD->{"|","D"}]

We now need to define  in terms of the original metric . As far as I know, xTensor does not provide an easy way to work with multiple metric tensors. There exits the option of “frozen” metrics, but the author himself claims this code is untested. For more details see section 7.4 of the xTensor documentation. Henceforth, we continue by defining our metric “by hand”

h[a_?DownIndexQ,b_?DownIndexQ]:= Ω[]^2 (g[a,b])

h[a_?UpIndexQ, b_?UpIndexQ]:=Ω[]^-2g[a,b]

xTensor provides the expression Christoffel[hCD,CD] to represent the Christoffel symbols. However, we want to explicitly express everything in terms of the original metric . We introduce a rule to replace instances of the Christoffel symbols by their explicit value in terms of

ChristoffelRule=
MakeRule[{
Evaluate[Christoffel[hCD, CD][c,-a,-b]],
h[c,d](CD[-a][h[-b,-d]]+CD[-b][h[-a,-d]]-CD[-d][h[-a,-b]])/2}];

As mentioned, this rules replaces Christoffel symbols by their definition. MakeRule takes care of possible issues from accidental shadowing of the dummy indices. Hence, not interfering with other possible indices with the same name.

The function ChangeCovD replaces application of the hCD derivatives with their form using the original derivative CD, though the result is expressed using Christoffel[hCD, CD]

hCD[-a][ω[-b]]==ChangeCovD[hCD[-a][ω[-b]], hCD, CD]//ScreenDollarIndices

we can change this by applying the rule we just defined. The following expresses D[-a][ω[-b]] in terms of ∇ and g

ChangeCovD[hCD[-a][ω[-b]], hCD, CD]/.
ChristoffelRule//
Simplification//
ToCanonical//
ScreenDollarIndices;
Christoffel[hCD, CD][c,-a,-b]ω[-c]==%

which is equal to the equation D.3 from Wald

Christoffel[hCD, CD][c,-a,-b]ω[-c]==(CD[-a][ω[-b]]
-Ω[]^(-1)g[c,d](g[-b,-d]CD[-a][Ω[]] 
+ g[-a,-d]CD[-b][Ω[]]
-g[-a,-b]CD[-d][Ω[]])ω[-c])//
Simplification//
ToCanonical

Finally, we can express the Riemann curvature tensor associated with  in terms of R, ∇ and g. For this, xTensor provides the function ChangeCurvature. However, just like for the covariant derivative, we need to replace the Christoffel symbols by their expansion in terms of the original covariant derivative and metric

ChangeCurvature[RiemannhCD[-a,-b,-c,d], hCD, CD]/.
ChristoffelRule//
Simplification//
ToCanonical//
ScreenDollarIndices;
RiemannhCD[-a,-b,-c,d]==%