Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KerrGeoOrbit produces error messages at Schwarzschild ISCO #50

Open
barrywardell opened this issue Jul 6, 2023 · 5 comments
Open

KerrGeoOrbit produces error messages at Schwarzschild ISCO #50

barrywardell opened this issue Jul 6, 2023 · 5 comments
Assignees
Labels

Comments

@barrywardell
Copy link
Member

KerrGeoOrbit produces errors relating to a divide by zero when run at the Schwarzschild ISCO:

KerrGeoOrbit[0, 6.0`32, 0, 1]
@barrywardell
Copy link
Member Author

This appears to be coming from line 54 of KerrGeoFourVelocity.m. At the ISCO three of the roots are equal so we encounter a divide by zero.

@nielsw2
Copy link
Member

nielsw2 commented Jul 8, 2023

Interestingly no issue is error is encountered when using machine precision, i.e., KerrGeoOrbit[0, 6.0, 0, 1] as the roots are not found to be equal to within machine precision.

This difference in behavior means it is probably difficult to detect when we're on the ISCO/ISSO. Maybe best to check if the roots are equal and then in that case run a different piece of code to get the right result.

@Philip-Lynch
Copy link
Collaborator

Philip-Lynch commented Jul 11, 2023

I'm having a look at this now. It seems like a lot of functions, like the frequencies for example, are singular on the separatrix for generic Kerr.

atest = 0.9`32;
etest = 0.3`32;
xtest = 0.7`32;
ptest = KerrGeoSeparatrix[atest, etest, xtest];
KerrGeoFrequencies[atest, ptest, etest, xtest, "Time" -> "Mino"]

This shows that $\Upsilon_\phi$ and $\Upsilon_t$ (and thus all of the $\Omega_\alpha$) are indeterminant.

I can fix the Schwarzschild circular case by using simplified functions for the velocities that don't have these divergences.

For everywhere else, a temporary fix would be checking if r1 = r2 = r3 and returning an error message.

Trying to find well defined limits for all of the functions that are divergent on the separatrix in generic Kerr would be quite a bit of work for what is a fairly niche edge case. But if someone requests it, I'm sure it can be done.

@MvdMeent
Copy link
Collaborator

To stamp out errors like these, I think it would be a good idea to implement a more modular structure for some of the internal functions, the same way i did for the OrbitalFrequencies subpackage. Currently, we have many pieces of code that are repeated many time in different function (e.g. to determine the roots of the radial equations). Currently, when we fix an error in some edge case, this does not propagate to the other pieces of code.

@barrywardell
Copy link
Member Author

I agree with Maarten's suggestion. It seems like the same problem is cropping up in several places for the same reason (repeated roots of the radial equation), and there's probably a fairly straightforward limit that can be taken and used in all cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants