# Visualizing event horizon and ergosphere of Kerr black hole¶

## Importing required modules¶

[1]:

import numpy as np
import astropy.units as u
import matplotlib.pyplot as plt


## Defining the black hole charecteristics¶

[2]:

M = 4e30
# for nearly maximally rotating black hole
a1 = 0.499999*scr
# for ordinary black hole
a2 = 0.3*scr


## Calculating the ergosphere and event horizon for spherical coordinates¶

[3]:

ergo1, ergo2, hori1, hori2 = list(), list(), list(), list()
thetas = np.linspace(0, np.pi, 720)
for t in thetas:
hori1.append(kerr_utils.event_horizon(M, a1, t, "Spherical"))
hori2.append(kerr_utils.event_horizon(M, a2, t, "Spherical"))
ergo1, ergo2, hori1, hori2 = np.array(ergo1), np.array(ergo2), np.array(hori1), np.array(hori2)


## Calculating the X, Y coordinates for plotting¶

[4]:

Xe1, Ye1 = ergo1[:,0] * np.sin(ergo1[:,1]), ergo1[:,0] * np.cos(ergo1[:,1])
Xh1, Yh1 = hori1[:,0] * np.sin(hori1[:,1]), hori1[:,0] * np.cos(hori1[:,1])
Xe2, Ye2 = ergo2[:,0] * np.sin(ergo2[:,1]), ergo2[:,0] * np.cos(ergo2[:,1])
Xh2, Yh2 = hori2[:,0] * np.sin(hori2[:,1]), hori2[:,0] * np.cos(hori2[:,1])


## Plot for maximally rotating black hole¶

[5]:

%matplotlib inline
fig, ax = plt.subplots()
# for maximally rotating black hole
ax.fill(Xh1, Yh1, 'b', Xe1, Ye1, 'r', alpha=0.3)
ax.fill(-1*Xh1, Yh1, 'b', -1*Xe1, Ye1, 'r', alpha=0.3)

[5]:

[<matplotlib.patches.Polygon at 0x7fa4665277b8>,
<matplotlib.patches.Polygon at 0x7fa466527dd8>]


## Plot for rotating(normally) black hole¶

[6]:

%matplotlib inline
fig, ax = plt.subplots()
ax.fill(Xh2, Yh2, 'b', Xe2, Ye2, 'r', alpha=0.3)
ax.fill(-1*Xh2, Yh2, 'b', -1*Xe2, Ye2, 'r', alpha=0.3)

[6]:

[<matplotlib.patches.Polygon at 0x7fa466598160>,
<matplotlib.patches.Polygon at 0x7fa438289ba8>]

• The inner body represents event horizon and outer one represents ergosphere. It can be concluded that with decrease in angular momentum, radius of event horizon increases, and that of ergosphere decreases.