Isoradial

class luminet.isoradial.Isoradial(radius: float, incl: float, bh_mass: float, order: int = 0, angular_resolution: int | None = None)

Calculate and visualize isoradial lines.

Isoradials are lines of equal distance to the black hole. They appear however distorted on the observer plane.

The purpose of this class is not only to provide convenient access to such properties, but also to serve as an interface to most of the BlackHole’s computation. Many, if not all of the properties of the BlackHole class are solved on a line, and that line is almost always the isoradial line. Finding coordinates of a certain flux or redshift is done by finding it on the isoradial line. For this reason, this class implements a handful of solvers for these properties, and needs to inherit some of the parent black hole’s properties, such as mass and inclination.

bh_mass

mass of the black hole containing this isoradial

Type:

float

incl

inclination of observer’s plane

Type:

float

radius

Radius to the black hole in the black hole reference frame.

Type:

float

order = 0

order of the image this isoradial is associated with

Type:

int

angular_resolution

Amount of subdivisions in \(\alpha\)

impact_parameters = []

Radial coordinate of the isoradial in the observer plane \(b\).

Type:

np.ndarray

angles = []

Angular coordinate of the isoradial (in both black hole and observer frame) \(\alpha\).

Type:

np.ndarray

redshift_factors = None

Redshift factors of the isoradial \((1 + z)\).

Type:

np.ndarray

Methods

calculate_coordinates()

Calculates the angles \(alpha\) and radii \(b\) of the isoradial.

calc_redshift_factors(→ numpy.ndarray)

Calculates the redshift factor \((1 + z)\) over the isoradial

calculate()

Calculates the coordinates and redshift factors on the isoradial line.

get_b_from_angle(→ float | numpy.ndarray)

Get the impact parameter \(b\) for a given angle \(\alpha\) on the isoradial.

solve_for_b_from_angle(→ float)

Calculate the impact parameter \(b\) for a given angle \(\alpha\) on the isoradial.

plot(→ matplotlib.axes.Axes)

Plot the isoradial.

interpolate_redshift_locations(redshift)

Calculates which location on the isoradial has some redshift value (not redshift factor)