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

PN inspiral quantities #41

Closed
nilsvu opened this issue Jun 4, 2024 · 6 comments · Fixed by #66
Closed

PN inspiral quantities #41

nilsvu opened this issue Jun 4, 2024 · 6 comments · Fixed by #66

Comments

@nilsvu
Copy link

nilsvu commented Jun 4, 2024

Hi Mike! I'm considering to use your new PN implementation to get good initial orbital parameters for eccentricity reduction in SpECTRE. Currently I use the SpEC scripts for this. Specifically, see here for the function in SpECTRE that calls the SpEC scripts and returns initial orbital parameters. My question is: does the Julia code already expose equivalents to the omegaAndAdot and nOrbitsAndTotalTime functions in SpEC's ZeroEccParamsFromPN.py script, or would those be easy to add?

@nilsvu
Copy link
Author

nilsvu commented Jun 5, 2024

Edit: I got the number of orbits and time to merger from sxs.julia.PNWaveform. So the only remaining question is if the PN approximation for Omega(r, q, chi1, chi2) and adot(r, q, chi1, chi2) is available as well somehow, ideally in Python? Here, r is the coordinate separation of the quasicircular binary.

@moble
Copy link
Owner

moble commented Jun 6, 2024

The output from sxs.julia.PNWaveform also has a field containing the PN expansion parameter v as a function of time, which is defined as $v := (M \Omega)^{1/3}$, so I think Omega = w.v**3 / (w.M1 + w.M2) would be what you want.

As for adot, I don't know that I've actually ever seen a PN approximation directly for that. It's certainly not involved in the standard (quasicircular) PN computation. I'm on vacation at the moment, so I'm afraid I won't be able to help much for the next couple weeks.

@nilsvu
Copy link
Author

nilsvu commented Jun 6, 2024

Ok thank you! Have a good vacation! We can talk more when you're back. For then:

PNWaveform takes Omega_i as input and integrates the orbital_evolution. That's great and we can use it for the number of orbits and the time to merger. But I'm also looking for just the approximation of Omega(r, q, chi1, chi2) and adot(r, q, chi1, chi2) without having to do the time integration. That's at least how SpEC determines these initial orbital parameters given an initial separation of the binary. Edit: looks like SpEC uses Eq. (4.2) in https://arxiv.org/abs/1212.5520v1 for Omega and Eq. (4.12) in http://arxiv.org/abs/gr-qc/9506022 for adot, according to the comments in the code. Or Eq. (369-370) in https://arxiv.org/pdf/1310.1528v5 plus spin effects.

@moble
Copy link
Owner

moble commented Aug 15, 2024

Version 2024.0.2 of the sxs package will now use version 0.10.2 of this package. I've added code to this package that will compute r from v, and also to compute separation_dot from v, which are what you need. I've tested these results against Larry's 1995 paper, and they agree to 2.5 pN, which is what we expect given Larry's 2.0 pN results.

So, once you update sxs (which is already out on PyPI, and will be out in a few hours on conda-forge), you should be able to use the following python code. However, I'M NOT SURE WHAT adot MEANS. Below, I've divided by the input separation; adjust as needed.

from sxs.julia import PostNewtonian

def Omega(r, q, chi1, chi2):
    pn = PostNewtonian.BBH(np.array([1/(1+q), q/(1+q), *chi1, *chi2, 1, 0, 0, 0, 1, 0]))
    v = PostNewtonian.separation_inverse(r, pn)
    pn.state[12] = v
    return PostNewtonian.Omega(pn)


def adot(r, q, chi1, chi2):
    pn = PostNewtonian.BBH(np.array([1/(1+q), q/(1+q), *chi1, *chi2, 1, 0, 0, 0, 1, 0]))
    v = PostNewtonian.separation_inverse(r, pn)
    pn.state[12] = v
    return PostNewtonian.separation_dot(pn) / r

@nilsvu
Copy link
Author

nilsvu commented Aug 15, 2024

Thanks @moble! I'll give this a try and see if we can get better zero-ecc estimates from it :)

@nilsvu
Copy link
Author

nilsvu commented Aug 15, 2024

Works very well as far as I can tell! Thanks for providing this :)

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

Successfully merging a pull request may close this issue.

2 participants