This post is the first foundation to “Testing the Speed of Gravity with Black Hole Ringdown”
ORIGINAL ARTICLE: Sergi Sirera Lahoz, Testing the Speed of Gravity with Black Hole Ringdown, arXiv: 2301.10272.
DOI: https://doi.org/10.48550/arXiv.2301.10272​
​GITHUB
In this notebook we derive the Regge-Wheeler and Zerilli equations for a Schwarzschild black hole in GR by directly varying the action with respect to the odd and even perturbation functions. Note that this method contrasts with the historical way these equations were first derived, where the perturbations were applied at the level of the equations of motion.
This notebook has hugely benefitted from resources provided by: - xAct ( http://www.xact.es/ ) - Johannes Noller - Reggie Bernardo’s public git-hub repository ( https://github.com/reggiebernardo/notebooks/tree/main/thesis_notebooks ). - Public notebooks by Vitor Cardoso et al. ( https://centra.tecnico.ulisboa.pt/network/grit/files/ringdown/ ).This notebook follows closely the arguments in section III of Tattersall et. al. ( https://arxiv.org/abs/1711.01992 ) and we provide more details on the calculation along the way. We also point out a typo in that paper.​If you use any of the results or techniques in this notebook please cite the repository and [2301.10272] ( https://arxiv.org/abs/2301.10272 ).If you have any comments or feedback on this notebook, please let me know. Thanks!​​​Sergi Sirera Lahoz​​Institute of Cosmology and Gravitation - University of Portsmouth​​

0. Setup and definitions


1. xCoba setup & quadratic action

Action

We start with the Einstein-Hilbert action, which has the following Lagrangian. We also define here the metric perturbations.
Note that we use geometric units:
G=c=1
In[]:=
L=
1
2
Sqrt[-Detg[]]RicciScalarCD[]​​DefMetricPerturbation[g,h,ϵ];​​Unprotect[IndexForm];​​(*thisselectsacolourtodifferentiateindicesreferringtotheorderinperturbationsfromotherindices*)​​IndexForm[LI[x_]]:=ColorString[ToString[x],RGBColor["#00a898"]];​​Protect[IndexForm];​​IndexForm[LI[n]];
Out[]=
-g
R
2
The following rules will take care of selecting contributions only from first order in the perturbations, applying differentiation by parts and specifying Ricci flat spacetimes.
(*keeponlyfirstorder*)​​onlyfirst=h[LI[2],x_,y_]:>0​​​​(*integrationbypartsrules*)​​IBPrule=XX_*h[LI[1],aa_,bb_]CD[cc_]@CD[dd_]@h[LI[1],ee_,ff_]->-CD[cc]@(XX*h[LI[1],aa,bb])*CD[dd]@h[LI[1],ee,ff]​​​​(*Ricciflatspacetimes*)​​Ricciflat={RicciCD[-a_,-b_]0,RicciScalarCD[]0}
Out[]=
h
2
x
y
0
Out[]=
h
1
aa
bb
XX_
cc
∇
dd
∇
h
1
ee
ff
(-
h
1
aa
bb
cc
∇
XX-XX
cc
∇
h
1
aa
bb
)
dd
∇
h
1
ee
ff
Out[]=
{
R
a
b
0,R0}

Coordinate basis

We define the Schwarzschild chart and coordinates. We define the metric components and we use MetricInBasis[...] to tell xCoba that these are the components of the abstract metric g. We also define the spherical harmonic functions and the odd and even perturbation metric components.
DefChart[Schw,Md,{0,1,2,3},{t[],r[],θ[],ϕ[]}];​​​​DefScalarFunction/@{B};​​DefConstantSymbol[mass,PrintAs->"M"]​​​​gB=DiagonalMatrix-B[r[]],
1
B[r[]]
,
2
r[]
,
2
r[]
2
Sin[θ[]]
;
This connects the metric components defined above with the abstract xAct metric defined in the setup
MetricInBasis[g,-Schw,gB];
This computes the components of all curvature tensors associated with the metric
MetricCompute[g,Schw,All,CVSimplifyToCanonical];​​​​DefConstantSymbol/@{l,m,ω};​​DefScalarFunction[PL,PrintAs"
P
lm
"];
Associated Legendre polynomials
PL''[θ_]:=-(l(l+1)-
2
m
2
Csc[θ]
)PL[θ]-Cot[θ]PL'[θ];​​PLrules=PL[θ[]]^2*Sin[θ[]]->
2
2l+1
,Sin[θ[]]*Derivative[1][PL][θ[]]^2->
2(l(l+1))
2l+1
;
Spherical harmonics
YLM:=
-mϕ[]
E
PL[θ[]];
Even parity h
DefConstantSymbol[ζ];​​DefScalarFunction[H0,PrintAs"
H
0
"];​​DefScalarFunction[H1,PrintAs"
H
1
"];​​DefScalarFunction[H2,PrintAs"
H
2
"];​​DefScalarFunction[KK,PrintAs"K"];hE=ζYLM{B[r[]]H0[t[],r[]],H1[t[],r[]],0,0},H1[t[],r[]],
H2[t[],r[]]
B[r[]]
,0,0,{0,0,KK[t[],r[]]
2
r[]
,0},{0,0,0,KK[t[],r[]]
2
r[]
2
Sin[θ[]]
};
Odd parity h
DefConstantSymbol[η];​​DefScalarFunction[h0,PrintAs"
h
0
"];​​DefScalarFunction[h1,PrintAs"
h
1
"];​​hO=η0,0,-
D[YLM,ϕ[]]
Sin[θ[]]
h0[t[],r[]],Sin[θ[]]D[YLM,θ[]]h0[t[],r[]],0,0,-
D[YLM,ϕ[]]
Sin[θ[]]
h1[t[],r[]],Sin[θ[]]D[YLM,θ[]]h1[t[],r[]],-
D[YLM,ϕ[]]
Sin[θ[]]
h0[t[],r[]],-
D[YLM,ϕ[]]
Sin[θ[]]
h1[t[],r[]],0,0,{Sin[θ[]]D[YLM,θ[]]h0[t[],r[]],Sin[θ[]]D[YLM,θ[]]h1[t[],r[]],0,0};
We display how the metric perturbations look like
hO//Flatten;​​Apply[PolynomialGCD,%];​​%
1
%
*hO//MatrixForm​​hE//Flatten;​​Apply[PolynomialGCD,%]*B[r[]];​​%
1
%
*hE//MatrixForm
Out[]=
-mϕ

η
0
0
m
2
Csc[θ]
h
0
[t,r]
P
lm
[θ]
h
0
[t,r]
′
P
lm
[θ]
0
0
m
2
Csc[θ]
h
1
[t,r]
P
lm
[θ]
h
1
[t,r]
′
P
lm
[θ]
m
2
Csc[θ]
h
0
[t,r]
P
lm
[θ]
m
2
Csc[θ]
h
1
[t,r]
P
lm
[θ]
0
0
h
0
[t,r]
′
P
lm
[θ]
h
1
[t,r]
′
P
lm
[θ]
0
0
Sin[θ]
Out[]=
-mϕ

ζ
B[r]
H
0
[t,r]
H
1
[t,r]
0
0
H
1
[t,r]
H
2
[t,r]
B[r]
0
0
0
0
K[t,r]
2
r
0
0
0
0
K[t,r]
2
r
2
Sin[θ]
P
lm
[θ]
Here we let xCoba know that about this decomposition using ComponentValue[...]. In other words, we tell xCoba that the components above refer to the metric perturbations. We also specify that we can raise and lower indices on
h
bc
with the metric
g
bc
.
In[]:=
ComponentValue[ComponentArray[h[LI[1],-{b,Schw},-{c,Schw}]],hE+hO];​​ChangeComponents[h[LI[1],-{b,Schw},{c,Schw}],h[LI[1],-{b,Schw},-{c,Schw}]];​​ChangeComponents[h[LI[1],{b,Schw},-{c,Schw}],h[LI[1],-{b,Schw},-{c,Schw}]];​​ChangeComponents[h[LI[1],{b,Schw},{c,Schw}],h[LI[1],-{b,Schw},-{c,Schw}]];​​ChangeComponents[ChristoffelCDPDSchw[{b,Schw},{c,Schw},-{d,Schw}],ChristoffelCDPDSchw[{b,Schw},-{c,Schw},-{d,Schw}]];
Computed
h
1
c
b

g
c
d
h
1
b
d
in 0.0941416 Seconds
Computed
h
1
b
c

g
b
d
h
1
d
c
in 0.0741432 Seconds
Computed
h
1
c
b

g
c
d
h
1
b
d
in 0.0802920 Seconds
Computed
h
1
b
c

g
b
d
h
1
c
d
in 0.0828561 Seconds
Computed
Γ[∇,]
b
c
d

Γ[∇,]
b
e
d
g
c
e
in 0.4907454 Seconds
In order to perform a variation with respect to the perturbation functions, we first need to convert them to ‘tensors’ in the xAct language. This is so that the variation can also take into account derivatives of the function, which would be otherwise excluded. This step has no deep significance but it is necessary so that xAct can treat perturbation functions as it should.
To implement this we use a simple method of substituting an r-derivative with a partial derivative contracted with a normalized vector in the r-direction. We do the same for t-derivatives.
Here we are defining these normalized vectors and the tensors for each of the functions.
In[]:=
DefTensorrvec[],Md,PrintAs->"

r
";​​AutomaticRules[rvec,{PD[-b_][rvec[c_]]->0}];​​

r
={0,1,0,0};​​ComponentValueComponentArray[rvec[{b,Schw}]],

r
​​DefTensortvec[],Md,PrintAs->"

t
";​​AutomaticRules[tvec,{PD[-b_][tvec[c_]]->0}];​​

t
={1,0,0,0};​​ComponentValueComponentArray[tvec[{b,Schw}]],

t
​​DefTensorh0T[],Md,PrintAs->"

h
0
"​​DefTensor[h1T[],Md,PrintAs->"

h
1
"]​​DefTensor[H0T[],Md,PrintAs->"

H
0
"]​​DefTensor[H1T[],Md,PrintAs->"

H
1
"]​​DefTensor[H2T[],Md,PrintAs->"

H
2
"]​​DefTensor[KKT[],Md,PrintAs->"

K
"]
These rules allow us to express B[r] and its derivatives in terms of M and vice versa.
Here we perturb the Lagrangian to second order.
We use rules defined above to keep only first order metric perturbations, integrate by parts, and implement Ricci-flatness.

2. Quadratic action in components

Now we need to input the component values in the previous covariant expression. This gives us the full quadratic Lagrangian in terms of the perturbation functions.

3. Odd sector

We now use the bookkeeping constants ζ and η to select the odd terms.
This line implies an integration of the angular components over the sphere . The 2 π comes from the ϕ integration and the PLrules take care of the θ integral
Here we convert the pertubration functions to ‘ tensors’ in the xAct language so they can be treated correctly

4. Even sector

We now move to the even sector, which is considerably more involved, as can be seen from the quadratic action:

Combination

Lets start by displaying the equations of motion.

Step 1

Step 2

Finally, to obtain the Zerilli equation we take the algebraic equation and rewrite it using the rules above.

5. Results

Here we just quote the final results, i.e. the Regge-Wheeler and Zerilli equations

CITE THIS NOTEBOOK

Testing Speed of Gravity with Black Hole Ringdown: Regge-Wheeler and Zerilli equations​
by Sergi Sirera Lahoz​
Wolfram Community, STAFF PICKS, August 11, 2023
​https://community.wolfram.com/groups/-/m/t/2988459