Closed znasipak closed 4 years ago
Thanks for this. One nice thing with the existing implementation is that it is consistent with the small-omega limit of the non-static solutions. Do you know if that's the case with this new version also? If so, then it would definitely be better to replace the existing version with this.
Unless I do not have the latest version of the Toolkit, the radial Teukolsky solutions given by TeukolskyRadial do not appear to be consistent with the small-omega limit of the non-static solutions. I know how to change the normalization of my expression for the inner solution to get it to match with the non-static case. As for the outer solutions, I thought the outer solutions just had a different structure. After factoring the r^{-(2s+1)} dependence, the static solutions decay as r^{-l+s} while the non-static solutions oscillate. So I am not sure how to normalize them in a way that is consistent with the non-static case.
@znasipak Can you refactor your solution such that kappa does not appear in the denominator, anywhere? This breaks the a->1 limit.
Nevermind those will be broken in any case.
@MvdMeent yes everything breaks with the extremal case. It might be worth someone eventually coding up the MST solutions for the extremal case, but that will probably need to be done separately from the general a/M<1 case. @barrywardell I have included new normalizations so that the "In" solutions should match the small-omega limit, while "Up" solutions should match up to the additional factor of r^{-l + s}. If you evaluate the static case near the horizon, the "In" solutions go like \Delta^{-s} e^{ima/(2Mr+)r*} and if you evaluate the static case near infinity, the "Up" solutions go like r^{-l - s -1}.
With[{[Tau] = -((m a)/Sqrt[1-a^2]), [Kappa] = Sqrt[1 - a^2]}, normIn = (2[Kappa])^(-2s) Exp[-I[Tau]/2[Kappa](1+2Log[[Kappa]]/(1+[Kappa]))] If[s >= 1&&[Tau]==0, 1, Gamma[1 - s - I[Tau]]]; normUp = (2[Kappa])^(-s - l- 1); solFuncs = <|"In" :> Function[{r}, normIn (-(1 + [Kappa] - r)/(2 [Kappa]))^(-s - I[Tau]/2) (1 - (1 + [Kappa] - r)/(2 [Kappa]))^(-I[Tau]/2) Hypergeometric2F1Regularized[-l - I[Tau], l + 1 - I[Tau], 1 - s - I[Tau], (1 + [Kappa] - r)/(2 [Kappa])]], "Up" :> Function[{r}, normUp (-(1 + [Kappa] - r)/(2 [Kappa]))^(-s - (I [Tau])/2) (1 - (1 + [Kappa] - r)/(2 [Kappa]))^((I [Tau])/2 - l - 1) Hypergeometric2F1[l + 1 - I*[Tau], l + 1 - s, 2 l + 2, 1/(1 - (1 + [Kappa] - r)/(2 [Kappa]))]] |>; ];
These new versions are much better than what we had before, thanks. I've checked that they satisfy the field equations for all possible cases (in/up, s=-2,-1,0,1,+2, m=0/m!=0, a=0/a!=0, various l values). The only potential improvement is if we had continuity in omega for the "Up" solutions by getting rid of the r^{-l+s} factor, but it's not clear how to achieve that so I have committed this version.
For the scalar case (s = 0) the static "Up" solutions evaluate to 0 if m = 0. Additionally for arbitrary spin-weight the static "Up" solutions for m != 0 but a = 0 return "Indeterminate." Lastly, the linear combination of hypergeometric functions for the static "Up" solutions when m != 0 and a !=0 experience large cancellations. I have included a snippet of code below that should solve all of these issues. (Hopefully it copied over correctly.) Additionally, these expressions should apply for the static case when am = 0 or am != 0. There should be no need for a switch like the current if statement in the code. I chose the normalizations so that the "In" solution go like (r - r_+)^(- s - i \tau / 2) / \Gamma[1 - s - i\tau] at the horizon and the "Up" solutions should go like r^(- l - 1 - s). Obviously this is somewhat arbitrary and this slightly differs from the current normalization used in the toolkit. However I found the Gamma factor is necessary so that the "In" solution remains well-defined when \tau = 0 (i.e., a*m = 0).
With[{[Tau] = -((m a)/Sqrt[1-a^2]), [Kappa] = Sqrt[1 - a^2]}, solFuncs = <|"In" :> Function[{r},(2[Kappa])^(-s - I[Tau]/2) (-(1 + [Kappa] - r)/(2 [Kappa]))^(-s - I[Tau]/2) (1 - (1 + [Kappa] - r)/(2 [Kappa]))^(-I[Tau]/2) Hypergeometric2F1Regularized[-l - I[Tau], l + 1 - I[Tau], 1 - s - I[Tau], (1 + [Kappa] - r)/(2 [Kappa])]], "Up" :> Function[{r}, (2[Kappa])^(-s - l - 1) (-(1 + [Kappa] - r)/(2 [Kappa]))^(-s - (I [Tau])/2) (1 - (1 + [Kappa] - r)/(2 [Kappa]))^((I [Tau])/2 - l - 1) Hypergeometric2F1[l + 1 - I*[Tau], l + 1 - s, 2 l + 2, 1/(1 - (1 + [Kappa] - r)/(2 [Kappa]))]] |>; ];