Reference on kuibit.cactus_horizons¶
The cactus_horizons
module provides classes to access the
information about apparent horizons from QuasiLocalMeasures and AHFinderDirect
(including shape files).
The main class is HorizonsDir
which collects all available data
from a SimDir
. This is a dictionary-like object whose values can
be accessed providing two integers. The first is the QuasiLocalMeasures index,
the second is the AHFinderDirect (we need two indices because at the moment we
have no way to connect the two indexing systems). If only one of the two is
available, the other index can be a dummy.
Once an horizon is selected with a combination of QLM and AHFinderDirect
indices, the resulting object is a OneHorizon
.
OneHorizon
contains as attributes all the QLM variables.
Similarly, the attribute ah
contains all the variables read from
AHFinderDirect. All of these are represented as TimeSeries
.
OneHorizon
also contains the shapes of the horizons (if the files
are found), which can be accessed with the methods
shape_at_iteration()
and shape_outline_at_iteration()
. If
VTK data is available (in .vtk
files), it is processed and stored in the
vtk
attribute. :py:func:~.vtk_at_it` is a function that takes an iteration
and returns a dictionary that contains the variables defined on the horizon
(seen as a 3D mesh).
- class kuibit.cactus_horizons.HorizonsDir(sd)[source]¶
Class to collect information on apparent horizons available from thorns AHFinderDirect and QuasiLocalMeasures.
- Variables:
found_any – True if at least one horizon was found.
AHFinderDirect and QuasiLocalMeasures have different indexing. You must provide both when accessing a file. In the future, the map between the two indexing systems will be inferred from the paramter file.
Constructor.
- Parameters:
sd (SimDir) – SimDir object providing access to data directory.
- property available_apparent_horizons¶
Horizons in AH indexing with associated data.
- Returns:
Indices of the AH horizons found in the data.
- Return type:
list
- property available_qlm_horizons¶
Horizons in QLM indexing with associated data.
- Returns:
Indices of the QLM horizons found in the data.
- Return type:
list
- class kuibit.cactus_horizons.OneHorizon(qlm_vars, ah_vars, shape_files, vtk_files)[source]¶
This class represents properties of an apparent horizon computed from the quasi-isolated horizon formalism.
All the variables from QuasiLocalMeasures are available as
TimeSeries
as attributes. All the ones from AHFinderDirect are attributes of the attributeah
.- Variables:
formation_time – First time at which the horizon has been found (as from AHFinderDirect).
mass_final – QLM mass at the last iteration available.
spin_final – QLM spin (angular momentum) at the last iteration available.
dimensionless_spin_final – Dimensionless spin computed from QLM variables at the last iteration available.
shape_available – Whether the shape files are available.
shape_iterations – Iterations at which the shape is available.
shape_iterations_min – First iteration at which the shape is available.
shape_iterations_max – Last iteration at which the shape is available.
shape_times – Times at which the shape is available.
shape_times_min – First time at which the shape is available.
shape_times_max – Last time at which the shape is available.
vtk_available – Whether VTK files are available.
ah – All the variables from AHFinderDirect as
TimeSeries
.
Constructor.
- Parameters:
qlm_vars (dict) – Dictionary that maps the name of the QLM variable with the associated
TimeSeries
.ah_vars (dict) – Dictionary that maps the name of the AH variable with the associated
TimeSeries
.shape_files (dict) – Dictionary that maps the iteration to the files where to find the shape at that iteration.
vtk_files (dict) – Dictionary that maps the iteration to the files where to find the vtk information at that iteration.
- ah_origin_at_iteration(iteration)[source]¶
Return the AH origin at the given iteration.
- Parameters:
iteration (int) – Iteration number.
- Returns:
Origin of the horizon as from AHFinderDirect.
- Return type:
3D NumPy array
- available_vtk_variables_at_iteration(iteration)[source]¶
Return the variables available in the VTK file at the given iteration.
Most VTK variables are 1D arrays defined on the vertices of the horizon mesh (as in
QuasiLocalMeasures
). The only two special VTK variables arecoordiantes
, which is essentially a list of 3D coordinates of the vertices, andconnectivity
, which describes how the various faces are formed.The
connectivity
variables is a list of indices of the form4 i1 i2 i3 i4
, which means that the four vertices with indicesi1 i2 i3 i4
are connected by a face. InQuasiLocalMeasures
, faces are always quadrilateral, so the first value of each element inconnectivity
will always be 4.- Parameters:
iteration (int) – Desired iteration
- Returns:
List of variables available
- Return type:
list
- get_ah_property(key)[source]¶
Return a property from AHFinderDirect as timeseries.
- Parameters:
key (str) – AH property.
- Returns:
AH property as a function of time.
- Return type:
- shape_at_iteration(iteration)[source]¶
Return the shape of the horizon as 3 arrays with the coordinates of the points.
- Parameters:
iteration (int) – Iteration number.
- Returns:
Shape of the horizon.
- Return type:
three lists of 2D NumPy arrays, one for each coordinate. The list is over the different patches.
- shape_at_time(time, tolerance=1e-10)[source]¶
Return the shape of the horizon as 3 arrays with the coordinates of the points.
- Parameters:
time (float) – Time.
tolerance (float) – Tolerance in determining the time.
- Returns:
Shape of the horizon.
- Return type:
three lists of 2D NumPy arrays, one for each coordinate. The list is over the different patches.
- shape_outline_at_iteration(iteration, cut)[source]¶
Return the cut of the 3D shape on a specified plane.
cut
has to be a 3D tuple or list with None on the dimensions you want to keep, and the value of the other coordinates. For example, if you want the outline at z = 3 on the xy plane,cut
has to be(None, None, 3)
.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.
- Parameters:
iteration (int) – Iteration number.
cut (3D tuple) – How should the horizon be sliced?
- Returns:
Coordinates of AH outline.
- Return type:
tuple of two 1D NumPy arrays.
- shape_outline_at_time(time, cut, tolerance=1e-10)[source]¶
Return the cut of the 3D shape on a specified plane.
cut
has to be a 3D tuple or list with None on the dimensions you want to keep, and the value of the other coordinates. For example, if you want the outline at z = 3 on the xy plane,cut
has to be(None, None, 3)
.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.
- Parameters:
time (float) – Time.
tolerance (float) – Tolerance in determining the time.
cut (3D tuple) – How should the horizon be sliced?
- Returns:
Coordinates of AH outline.
- Return type:
tuple of two 1D NumPy arrays.
- shape_time_at_iteration(iteration)[source]¶
Return the time corresponding to the given iteration using the information from the shape files.
- Parameters:
iteration (int) – Iteration number.
- Returns:
Time at the given iteration.
- Return type:
float
- vtk_at_it(iteration)¶
Return a dictionary-like object containing all the VTK variables at the given iteration.
- Parameters:
iteration (int) – Desired iteration
- Returns:
Dictionary-like object with all the VTK variables.
- Return type:
AttributeDictionary
- vtk_at_iteration(iteration)[source]¶
Return a dictionary-like object containing all the VTK variables at the given iteration.
- Parameters:
iteration (int) – Desired iteration
- Returns:
Dictionary-like object with all the VTK variables.
- Return type:
AttributeDictionary
- property vtk_available_iterations: List[int]¶
Return the list of iterations at which VTK data is available.
- Returns:
List of iteration with associated VTK data
- Return type:
list
- vtk_variable_at_iteration(key, iteration)[source]¶
Return a variable from the VTK file at the given iteration.
See also docstring in
available_vtk_variables_at_iteration()
.- Parameters:
iteration (int) – Desired variable
iteration – Desired iteration
- Returns:
Variable
- Return type:
NumPy array
- kuibit.cactus_horizons.compute_horizons_separation(horizon1, horizon2, resample=True)[source]¶
Compute the coordinate separation between the centroids of two horizons.
The information from the apparent horizons is used (contained in the BHDiagnostics files).
Deprecated in favor of
compute_separation()
.- Parameters:
horizon1 (
OneHorizon
) – First horizon.horizon2 (
OneHorizon
) – Second horizon.
- Returns:
Coordinate distance between the two centroids, sampled over both the horizons are available.
- Return type: