Esempio n. 1
0
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
from sympy import lambdify, N, Function, Derivative, solve
from sympy.abc import a, b, c, d, e, f, g, h, i, j, k
from sympy.utilities.lambdify import lambdify, implemented_function

print '\n\n'

# m_earth = 6e24 #kilograms
# m = m_earth
# rs = 8.87e-3
rs = 2.95e3

t, r, theta, phi, tau = gp.symbols('t r \\theta \phi \\tau')
coordinates = gp.Coordinates('\chi', [t, r, theta, phi])
# Metric2D = gp.diag(-(1-2*m/r), 1/(1-2*m/r), r**2, gp.sin(theta)*r**2)
Metric2D = gp.diag(-(1 - rs / r), 1 / (1 - rs / r), r**2, gp.sin(theta) * r**2)

gtensor = gp.MetricTensor('g', coordinates, Metric2D)
w = gp.Geodesic('w', gtensor, tau)

d2t = lambda a, b, c, d, e, f, g, h: (solve(w(1), Derivative(t(tau), tau, tau))
                                      [0].subs({
                                          t(tau): a,
                                          r(tau): b,
                                          theta(tau): c,
                                          phi(tau): d,
                                          Derivative(t(tau), tau): e,
                                          Derivative(r(tau), tau): f,
                                          Derivative(theta(tau), tau): g,
Esempio n. 2
0
import gravipy
import numpy as np
import matplotlib.pyplot
import sympy
from scipy.integrate import odeint
from sympy import lambdify
from sympy.abc import a,b,c,d
import sys
t,r,theta,phi,tau = gravipy.symbols('t r \\theta \phi \\tau')
c = gravipy.Coordinates('\chi', [t, r, theta, phi])

m = 5

Metric2D = gravipy.diag(-(1-2*m/r), 1/(1-2*m/r), r**2, r**2)

g = gravipy.MetricTensor('g', c, Metric2D)

w = gravipy.Geodesic('w', g, tau)


d2t = sympy.solve(w(1),sympy.Derivative(t(tau),tau,tau))[0].subs({sympy.Derivative(t(tau),tau):a,sympy.Derivative(r(tau),tau):b,sympy.Derivative(phi(tau),tau):c,sympy.Derivative(theta(tau),tau):d})
d2r = sympy.solve(w(2),sympy.Derivative(r(tau),tau,tau))[0].subs({sympy.Derivative(t(tau),tau):a,sympy.Derivative(r(tau),tau):b,sympy.Derivative(phi(tau),tau):c,sympy.Derivative(theta(tau),tau):d})
d2theta = sympy.solve(w(3),sympy.Derivative(theta(tau),tau,tau))[0].subs({sympy.Derivative(t(tau),tau):a,sympy.Derivative(r(tau),tau):b,sympy.Derivative(phi(tau),tau):c,sympy.Derivative(theta(tau),tau):d})
d2phi = sympy.solve(w(4),sympy.Derivative(phi(tau),tau,tau))[0].subs({sympy.Derivative(t(tau),tau):a,sympy.Derivative(r(tau),tau):b,sympy.Derivative(phi(tau),tau):c,sympy.Derivative(theta(tau),tau):d})

d2tf = lambdify((a,b,c,d,t(tau),r(tau),theta(tau),phi(tau)),d2t,modules="numpy")
d2rf = lambdify((a,b,c,d,t(tau),r(tau),theta(tau),phi(tau)),d2r,modules="numpy")
d2thetaf = lambdify((a,b,c,d,t(tau),r(tau),theta(tau),phi(tau)),d2theta,modules="numpy")
d2phif = lambdify((a,b,c,d,t(tau),r(tau),theta(tau),phi(tau)),d2phi,modules="numpy")