Source code for einsteinpy.symbolic.predefined.vacuum_solutions

from sympy import cos, diag, pi, sin, symbols

from einsteinpy.symbolic import constants
from einsteinpy.symbolic.metric import MetricTensor


[docs]def Schwarzschild(c=constants.c, sch=symbols("r_s")): """ Schwarzschild exterior metric in curvature coordinates Schwarzschild, Sitz. Preuss. Akad. Wiss., p189, (1916) Stephani (13.19) p157 Parameters ---------- c : ~sympy.core.basic.Basic or int or float Any value to assign to speed of light. Defaults to ``c``. sch : ~sympy.core.basic.Basic or int or float Any value to assign to Schwarzschild Radius of the central object. Defaults to ``r_s``. """ coords = symbols("t r theta phi") t, r, theta, phi = coords val1, c2 = 1 - sch / r, c ** 2 metric = diag( val1, -1 / (val1 * c2), -(r ** 2) / c2, -((r * sin(theta)) ** 2) / c2 ).tolist() return MetricTensor(metric, coords, "ll", name="SchwarzschildMetric")
[docs]def Kerr(c=constants.c, sch=symbols("r_s"), a=symbols("a")): """ Kerr Metric in Boyer Lindquist coordinates. Parameters ---------- c : ~sympy.core.basic.Basic or int or float Any value to assign to speed of light. Defaults to ``c``. sch : ~sympy.core.basic.Basic or int or float Any value to assign to Schwarzschild Radius of the central object. Defaults to ``r_s``. a : ~sympy.core.basic.Basic or int or float Spin factor of the heavy body. Usually, given by ``J/(Mc)``, where ``J`` is the angular momentum. Defaults to ``a``. """ coords = symbols("t r theta phi") t, r, theta, phi = coords Sigma = r ** 2 + (a ** 2 * cos(theta) ** 2) Delta = r ** 2 - sch * r + a ** 2 c2 = c ** 2 metric = diag( 1 - (sch * r / Sigma), -Sigma / (Delta * c2), -Sigma / c2, -( (r ** 2 + a ** 2 + (sch * r * (a ** 2) * (sin(theta) ** 2) / Sigma)) * (sin(theta) ** 2) ) / c2, ).tolist() metric[0][3] = metric[3][0] = sch * r * a * (sin(theta) ** 2) / (Sigma * c) return MetricTensor(metric, coords, "ll", name="KerrMetric")
[docs]def KerrNewman( c=constants.c, G=constants.G, eps_0=constants.eps_0, sch=symbols("r_s"), a=symbols("a"), Q=symbols("Q"), ): """ Kerr-Newman Metric in Boyer Lindquist coordinates. Parameters ---------- c : ~sympy.core.basic.Basic or int or float Any value to assign to speed of light. Defaults to ``c``. G : ~sympy.core.basic.Basic or int or float Any value to assign to the Newton's (or gravitational) constant. Defaults to ``G``. eps_0 : ~sympy.core.basic.Basic or int or float Any value to assign to the electric constant or permittivity of free space. Defaults to ``eps_0``. sch : ~sympy.core.basic.Basic or int or float Any value to assign to Schwarzschild Radius of the central object. Defaults to ``r_s``. a : ~sympy.core.basic.Basic or int or float Spin factor of the heavy body. Usually, given by ``J/(Mc)``, where ``J`` is the angular momentum. Defaults to ``a``. Q: ~sympy.core.basic.Basic or int or float Any value to assign to eletric charge of the central object. Defaults to ``Q``. """ coords = symbols("t r theta phi") t, r, theta, phi = coords Sigma = r ** 2 + (a ** 2 * cos(theta) ** 2) rQsq = ((Q ** 2) * G) / (4 * pi * eps_0 * (c ** 4)) Delta = r ** 2 - sch * r + a ** 2 + rQsq c2 = c ** 2 metric = diag( 1 + ((rQsq - sch * r) / Sigma), -Sigma / (Delta * c2), -Sigma / c2, (Delta * a ** 2 * sin(theta) ** 2 - (r ** 2 + a ** 2) ** 2) * sin(theta) ** 2 / (Sigma * c2), ).tolist() metric[0][3] = metric[3][0] = (sch * r - rQsq) * a * (sin(theta) ** 2) / (Sigma * c) return MetricTensor(metric, coords, "ll", name="KerrNewmanMetric")
[docs]def ReissnerNordstorm( c=constants.c, G=constants.G, eps_0=constants.eps_0, sch=symbols("r_s"), Q=symbols("Q"), ): """ The Reissner–Nordström metric in spherical coordinates A static solution to the Einstein–Maxwell field equations, which corresponds to the gravitational field of a charged, non-rotating, spherically symmetric body of mass M. Parameters ---------- c : ~sympy.core.basic.Basic or int or float Any value to assign to speed of light. Defaults to ``c``. G : ~sympy.core.basic.Basic or int or float Any value to assign to the Newton's (or gravitational) constant. Defaults to ``G``. eps_0 : ~sympy.core.basic.Basic or int or float Any value to assign to the electric constant or permittivity of free space. Defaults to ``eps_0``. sch : ~sympy.core.basic.Basic or int or float Any value to assign to Schwarzschild Radius of the central object. Defaults to ``r_s``. Q: ~sympy.core.basic.Basic or int or float Any value to assign to eletric charge of the central object. Defaults to ``Q``. """ coords = symbols("t r theta phi") t, r, theta, phi = coords rQsq = ((Q ** 2) * G) / (4 * pi * eps_0 * (c ** 4)) Arn = 1 - sch / r + rQsq / r ** 2 c2 = c ** 2 metric = diag( Arn, -1 / (Arn * c2), -(r ** 2) / c2, -(r ** 2) * sin(theta) ** 2 / c2 ).tolist() return MetricTensor(metric, coords, "ll", name="ReissnerNordstormMetric")