Working with horizonsΒΆ

The module cactus_horizon (Reference on kuibit.cactus_horizons) can read output data produced by AHFinderDirect and QuasiLocalMeasures.

The simplest way to access horizon data is via SimDir with the attribute horizons(), which returns an object of type HorizonsDir. HorizonsDir collects all the information available from the AHFinderDirect and QuasiLocalMeasures thorns, including the shape of the horizons.


AHFinderDirect and QuasiLocalMeasures use different indexing systems. At the moment, kuibit cannot connect the two automatically, so an horizon is identified by both the numbers.

To access horizon information, use the bracket notation, for example, if sim is a SimDir, sim.horizons[0, 1] will return the horizon with QLM index 0 and AH index 1. The result of this operation is a OneHorizon object. This contains all the variables from both QuasiLocalMeasures and AHFinderDirect (the BHdiagnostics files) as TimeSeries. To access the QLM variables, you canuse the bracket notation (e.g., hor['mass']), to access the AH ones you can access them via the ah attribute (e.g., hor.ah.area, or hor.ah['area']).

If you only need (or have) one of the two, you can access the relevant information with get_apparent_horizon() or get_qlm_horizon().

You can access the shape of an horizon from OneHorizon with the the method shape_at_iteration(). This returns three lists of with the various 3D patches that form each horizon. In case you are only interested in a project of the shape on a 2D plane or 1D axis, you can use shape_outline_at_iteration() and specify the cut. For example, if you want to look at the equatiorial plane, you would set cut=(None, None, 0).


No interpolation is performed, so results are not accurate when the cut is not along one of the major directions centered in the origin of the horizon.