Using Geodesics (Back-ends & Plotting)¶

[1]:

import numpy as np

from einsteinpy.geodesic import Geodesic, Timelike, Nulllike
from einsteinpy.plotting import GeodesicPlotter, StaticGeodesicPlotter, InteractiveGeodesicPlotter


Example 1: Exploring Schwarzschild Time-like Spiral Capture, using Python Backend and GeodesicPlotter¶

Defining initial conditions¶

[2]:

# Initial Conditions
position = [4, np.pi / 3, 0.]
momentum = [0., 0., -1.5]
a = 0. # Schwarzschild Black Hole


Calculating Geodesic¶

[4]:

geod = Timelike(
metric = "Schwarzschild",
metric_params = (a,),
position=position,
momentum=momentum,
steps=400,
delta=0.5,
return_cartesian=True
)

geod

[4]:

Geodesic Object:(
Type : (Time-like),
Metric : (Schwarzschild),
Metric Parameters : ((0.0,)),
Initial 4-Position : ([0.         4.         1.04719755 0.        ]),
Initial 4-Momentum : ([-0.77055175  0.          0.         -1.5       ]),
Trajectory = (
(array([  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,
13,  14,  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,
26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,  38,
39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,
65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,
78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,
91,  92,  93,  94,  95,  96,  97,  98,  99, 100, 101, 102, 103,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
390, 391, 392, 393, 394, 395, 396, 397, 398, 399]), array([[ 7.70622333e-01,  3.45411342e+00, -2.16191162e-01, ...,
-4.96437144e-02,  5.39525141e-02, -1.50000000e+00],
[ 1.54397385e+00,  3.42343630e+00, -4.31266206e-01, ...,
-1.01622699e-01,  1.08094115e-01, -1.49998229e+00],
[ 2.32260992e+00,  3.37072519e+00, -6.43622163e-01, ...,
-1.56759496e-01,  1.62468831e-01, -1.49992947e+00],
...,
[ 1.80486718e+02, -6.89214455e+05,  1.38752253e+06, ...,
-4.64281174e+03,  7.64712871e-01, -1.48158516e+00],
[ 1.73709904e+02, -7.11739769e+05,  1.37399595e+06, ...,
-6.51564334e+03,  7.77254181e-01, -1.48743067e+00],
[ 1.66222414e+02, -7.21275617e+05,  1.37811115e+06, ...,
-1.08518449e+04,  7.87320505e-01, -1.50483237e+00]]))
),
Output Position Coordinate System = (Cartesian)
))


Plotting using GeodesicPlotter¶

Note that, GeodesicPlotter automatically switches between “Static” and “Interactive” plots. Since, we are in a Jupyter Notebook or Interactive Environment, it uses the “Interactive” backend.

[5]:

gpl = GeodesicPlotter()

[6]:

gpl.plot(geod, color="green")
gpl.show()