[feat] CO Peters equation integration variable change#814
[feat] CO Peters equation integration variable change#814
Conversation
|
We can consider an alternative choice: the analytical fits to Peters given by Mandel 2021: https://ui.adsabs.harvard.edu/abs/2021RNAAS...5..223M/abstract The accuracy is within 3% (see Fig. 1). |
|
We can't use that here sadly, because we have to find the properties (orbit) of living double CO systems as well. For example, LISA populations of double WD or BNS systems. We also need to have an "interpolated" output to be able to request specific moments in time (in |
|
Here are the test binaries And v2.3 from today for comparison. There are some differences in the time calculation of systems that reach |
| # State vector: [e, tau, secondary.omega, primary.omega] | ||
| # Independent variable: s = −ln(a/a0), from 0 to s_contact | ||
| try: | ||
| res = solve_ivp(self.evo.rhs, |
There was a problem hiding this comment.
It would be good to have this mirror the other detached_step procedures as much as possible I think.
Here, I'd suggest writing self.evo in such a way that you override the __call__ method of that class for example, so that we just pass and call
res = solve_ivp(self.evo,
...
here, as in detached_step and its other children classes. Along these lines, I suggest constructing double_CO_evolution to mirror the format of the parent class as well. In the __call__ method, check
if do_gravitational_radiation:
# call rhs() here
...
return result
I think this will help maintain modularity and a cohesive format, for example, if others intend to create variations of the detached_step.
We use Peters' equations to find if a system merges in the Hubble time or find their final orbital configuration.
Due to the large change required in orbit and time, we need to solve the equations several times to "converge" on our wanted state (for example, contact between Schwarzschild radii for BHs). These multiple steps messes with the other parts of our code, where we set the time and orbital configuration at different moments in DCO evolution.
A change to dimensionless variables only partly solve this, because we're still left with a$1/\alpha^3$ and $1/\alpha^4$ dependencies in the new ODEs, where $\alpha=a/a_0$ (See notes). Thus, as $\alpha \rightarrow 0$ these terms blow up and a very small $\tau$ is required ($\tau=t/t_0$ ), essentially requiring one below machine precision.
A full change of integration variable is required to get closer to the moment of inspiral. This can be achieved by substituting$s=- \ln(\alpha)$ . We want to get close to the moment of merger (contact), which means we never reach $a =0$ but only get as close as possible. As such, we can rewrite our ODEs using this to get close to the final merger and have the solver converge correctly.
Original Peters equations
Dimensionless Equations
These are nearly the same as Andrews+19 with a factor 1/4 not embedded in$t_0$
Substituted Equations
This makes the$de/ds$ independent of $s$ as well.