Comments on some functions in integrate_ode_prec.py
In this issue we want to address some of the questions raised during the code inspection of integrate_ode_prec.py
here. Essentially the questions are related to the functions:
-
compute_dynamics_prec_opt
: Why the distinction adiabatic/post-ad? -
transition_dynamics_v2
: What does it do? -
parabolaExtrema
: If called many times could be optimized (same denominator computed 3 times)
In the following we try to answer some of the questions and comments provided by the reviewers.
-
compute_dynamics_prec_opt
: I think that the question is related to why there are adiabatic and post-adiabatic initial conditions. The reason why these two option are in the code is based on the development process of the model as first we developed a SEOBNRv5PHM model without the post-adiabatic approximation to evaluate the inspiral evolution, which was used the adiabatic initial conditions developed in Buonanno et al and implemented in SEOBNRv4PHM. Afterwards, we implemented the post-adabiatic approximation, which iterates over different adiabatic orders (in the current code up to 8), and the initial conditions for the EOB evolution thus are different from the adiabatic one. As in the precessing-spin case the spins evolve with time small differences in the initial conditions may lead to different values of the spins and thus slightly different evolutions, thus, at some point we wanted to tested the differences between the post-adiabatic model and non-postadiabatic model using the same initial conditions so that we could factor out the differences coming from the initial conditions being slightly different. Note that part of this comparisons have been also part of the review. Let me paste some plots of the comparisons between the post-adiabatic and the non-postadiabatic model below for10^5
cases
One can see that the differences in mismatch (optimized only over a global phase offset and timeshift using the pycbc match function and the script here) the maximum mismatch is 0.008 and there are only 12 cases with mismatch above 10^{-4}
. So, in the end we decided that the default model would be the post-adiabatic one, but we keep the code to produce adiabatic initial conditions as they may be useful for the development of future extensions of the model.
-
transition_dynamics_v2
: This function applies a smooth transition in timestep from the fine timestep of 0.1M needed to have a smooth attachment of the merger ringdown and robust computation of the non-quasicircular correction, and the coarse timestep of the ODE integrator in the early inspiral, where the window starts. The code applies a time window of 50M and this is very similar to for instance what is done in the precessing post-adiabatic routine here to have a smooth transition from the coarse timestep of the post-adiabatic inspiral to the finer timestep of the ODE integration. -
parabolaExtrema
: It is true that the function could be further optimized, but this function is just applied once here as a refinement procedure to compute the peak of omega in case the peak of omega is previously found.
@riccardo-sturani @geraint.pratten let me know if this information is useful to complete the review of these functions or if you have further comments or you would like further explanations. Thanks!