# Error in paper "Coordinate families for the Schwarzschild geometry based on radial timelike geodesics"?

While practicing some coordinate to metric conversions using the paper Coordinate families for the Schwarzschild geometry based on radial timelike geodesics by Tehani K. Finch, I wrote a short (hopefully clear) maxima program at http://maxima.sourceforge.net/ and I have one discrepancy. I am not sure if the fault is in the paper or my method.

The basic discrepancy is with the backward conversion of 3.27 to 3.25. The maxima program is:

load(grobner);
T:matrix([A,B],[C,D]);eqd:A*D-B*C-1;
g2g(Gin,Gout):=(block[k],k:transpose(T).Gin.T-Gout,list_matrix_entries(k));
m : 1-2*M/r;
/* Schwarzchild metric */
G : matrix([-m,0],[0,1/m]);
/* Target metric */
G_df : matrix([-p*m,q],[q,p]);
/* with two constraints */
T_df : append(g2g(G,G_df),[eqd,C]);
/* solve */
J_df : ratsimp(solve(T_df,[A,B,C,D,q]));


The maxima result is:
$[A=\sqrt{p},B=\frac{\sqrt{\frac{\left( 1-{{p}^{2}}\right) \,{{r}^{2}}+2{{p}^{2}}rM}{p}}}{2M-r},C=0,D=\frac{1} {\sqrt{p}},q=\frac{\sqrt{2{{p}^{2}}M+\left( 1-{{p}^{2}}\right) r}}{\sqrt{r}}],$
along with other results enumerating the square root possibilities.
Mr. Finch's result
$A=\frac{1}{\sqrt{p}},\,B=\frac{1}{\sqrt{p}}\frac{\sqrt{1-p\cdot\left(1-2M/r\right)}}{1-2M/r}$
This is clearly different. Is there anyone who can check the code, is familiar with this metric, or knows Mr. Finch? I can analyze the intermediate steps if need by Groebner basis, but I think the problem is obvious.

• Please don't assume we can read your code. Please comment it/explain it thoroughly, and include what language the code is in. Dec 27, 2016 at 18:37
• Yes! I had some problems with entering the code, but a moderator was kind enough to clean up that and my english/punctuation. I did mention that the code was a CAS, maxima; actually, I used wxmaxima a front end. It's available from maxima.sourceforge.net . It's a derivative of a very old program. If you want I will expand on the theory behind the code, Dec 27, 2016 at 20:25
• For the record, I'm not a moderator (I'm the one who cleaned it up), but that's a bit beside the point. Yes, please do expand on the theory behind the code, and include the link in your comment in your question. Thanks! Dec 27, 2016 at 21:06
• I am presuming you meant, put together an explanation and then put a link to the explanation in the comments? Dec 28, 2016 at 16:30
• No, please put the explanation in your question, and put the link to the language you used in your question as well. Dec 28, 2016 at 16:47

I feel I should point out that the Jacobian does not necessarily generate a coordinate system, more like a coordinate frame. To define a coordinate system we must have: $\frac{\partial A}{\partial r}=\frac{\partial B}{\partial t},\frac{\partial C}{\partial r}=\frac{\partial D}{\partial t}$ Which is satisfied for the particular cases below.
I used the symbols (A,B,C,D) as the Jacobian terms for debugging/analysis. When viewing a Grobner decomposition to investigate, the capitals stand out much better than strings of $\frac{\partial t}{\partial r}$ 's and they are really what I am interested in.

Here is the corrected maxima (http://maxima.sourceforge.net/) code with links:

     /* This program is an exercise to compute the Jacobian of a
coordinate transform taking a source metric to a target metric.
For the exercise, I have chosen the Schwarzschild metric as an
example source metric and various target metrics from
"Coordinate families for the Schwarzschild geometry based on radial timelike geodesics"
https://arxiv.org/pdf/1211.4337v2.pdf
The theory behind the conversion of metrics to conditions on the
Jacobian is shown on
https://en.wikipedia.org/wiki/Metric_tensor#Metric_in_coordinates
The last equation is simplified by moving the Jacobian inverses on
the right hand side to a Jacobian on the left hand side,
leading to simpler expressions. for solve().
The procedural template is
1) Form the general list of equations to solve for the Jacobian terms (A,B,C,D)
2) Append any constraints on the solutions.
3) Solve for A,B,C,D and any additional terms that are needed to
make solve() happy.
Note: that input equations, input variables and requested solution variables,
interact. Sometimes the requested solutions need to be modified to accommodate
the inputs.
*/

/* g2g() accepts an originating metric and a target metric and returns a
list of simultanious equations in (A,B,C,D) to be used in solve().
the (A,B,C,D) are the matrix elements for the Jacobian  of the
original coordinates to target coordinates.
i.e. J: (t,r)->(t',r')
*/;

J:matrix([A,B],[C,D]);
g2g(Gin,Gout):=(block[k],
k:transpose(J).Gout.J-Gin,
list_matrix_entries(k)
);

/* The Schwarzchild metric */
m:1-2*M/r;;
G:matrix([-m,0],[0,1/m]);

kill(q);
q: sqrt(2*M/r);
G_pg:matrix([-m,q],[q,1]);
g2g_pg: g2g(G,G_pg)$T_pg:append(g2g_pg,[A-1,D-1,C])$
J_pg:ratsimp(solve(T_pg,[A,B,C,D]));

kill(p,q);
G_lmp:matrix([-m,q],[q,p]);
q: sqrt(1-p*m);
T_lmp:append(g2g(G,G_lmp),[A-1,D-1])$J_lmp:ratsimp(solve(T_lmp,[A,B,C,D])); G_v:matrix([-m,1],[1,0]); T_v:append(g2g(G,G_v),[A-1,D-1])$
J_v:ratsimp(solve(T_v,[A,B,C,D]));

kill(u);
q:sqrt((2*M/r)+(u-1));
G_gh:matrix([-m/u,q/u],[q/u,1/u]);
T_gh:ratsimp(append(g2g(G,G_gh),[C,D-1]))$J_gh:ratsimp(solve(T_gh,[A,B,C,D])); kill(p,q); q:sqrt(p*(1-p*m)); G_df:matrix([-p*m,q],[q,p]); T_df:append(g2g(G,G_df),[C,D-1])$
J_df:ratsimp(solve(T_df,[A,B,C,D]));

kill(p,q);
q:sqrt(1-p*m);
G_lmpe:matrix([-m,q],[q,p]);
T_lmpe:append(g2g(G,G_lmpe),[C,D-1])$J_mpe:ratsimp(solve(T_lmpe,[A,B,C,D])); kill(p,u); u:sqrt(p*(1-p*m)); G_gh:matrix([-p*m,u],[u,p]); T_gh:append(g2g(G,G_gh),[C,D-1])$
J_gh:ratsimp(solve(T_gh,[A,B,C,D]));


-- The purpose of this exercise is to have code to investigate the nature of the various event horizons in the Kerr metric and to clarify some of the statements in
The Geometry of Kerr Black Holes
by: Barrett O'Neil

If anybody is interested in following along, let me know. I am thinking about starting a blog on what promises to be a long journey; the last two projects took two years each and nobody read either blog :)