sxs-collaboration / sxs

Python code for manipulating data from the SXS collaboration
MIT License
23 stars 17 forks source link

The time of merger of BBH in sxs #44

Closed Sunnnsh closed 3 years ago

Sunnnsh commented 3 years ago

Hi, I want to know the time when two black holes begin merger, so how could I know the time when two black holes begin merger of a waveform in sxs catalog? Thank you!

moble commented 3 years ago

The problem is that "merger" isn't really well defined. There are several different things you can look at.

First is the time when a "common apparent horizon" forms — that is, a horizon that surrounds both of the black holes at the same time. You can get this from the data by loading the metadata for a simulation, and asking for the "common_horizon_time":

import sxs

metadata = sxs.load("SXS:BBH:0004v1/Lev6/metadata.json")
common_horizon_time  = metadata["common_horizon_time"]

This represents the first time step in the data for horizon "C", which is the apparent horizon that surrounds both black holes, and only shows up once they are close enough. (Horizons "A" and "B" represent the initial black holes, and usually end around the time "C" begins to exist, but not precisely.) The value you get out of the metadata should be precisely the same as the first time step of the data for horizon "C" in the Horizons.h5 file.

Unfortunately, this number depends on the coordinates used in the simulation, so while it may give you a reasonable approximation for something that you're interested in, you shouldn't think of this number as being very precise in any meaningful way. And in particular, this time may not be very precisely related to any features you see in the gravitational waves.

A second thing you can look at is the waveform itself, which is a little more meaningful because you get away from the crazy dynamical part of the spacetime, and out into the region where things are more nearly Minkowski, so coordinates make a little more sense. Again, there's no single definition of "merger" that everyone can agree on, but when you're looking at waveforms, there's one feature that is pretty meaningful: the peak of the waveform. Some people just the time at which the (2,2) mode has its largest amplitude, but this is useless for precessing systems because you can change that just by rotating your coordinates. A better approach is to use the maximum "norm" of the waveform, which is rotationally invariant, so it's useful for both non-precessing and precessing systems. Here's an example:

h = sxs.load("SXS:BBH:0002/Lev/rhOverM", extrapolation_order="Extrapolated_N2.dir")
max_norm_time = h.max_norm_time()

Note that the common_horizon_time for this example is about 11120, while the max_norm_time is about 11811. This gives you an idea of how different these definitions are. But you can't say that one is "right" more than the other.

Sunnnsh commented 3 years ago

Thank you!