vilasini97

exponential-rk4

Jul 8th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.63 KB | None | 0 0
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import math
  4.  
  5.  
  6. def f(y1,y2,y3):
  7.     return y1*(omega_matter/(y1**3) + (H**2)*(y3**2)/(2.0*rho_c) + (v0*np.exp(-l*y2*k))/(rho_c))**(1.0/2.0)
  8.    
  9. def g(y3):
  10.     return y3
  11.    
  12. def h(y1,y2,y3):
  13.     return -3*y3*(H**2)*(omega_matter/(y1**3) + (H**2)*(y3**2)/(2.0*rho_c) + (v0*np.exp(-l*y2*k))/(rho_c))**0.5 + (l*k*v0*np.exp(-l*y2*k))/(H**2)
  14.  
  15.  
  16. a = np.linspace(start=1.0,stop=10**(-3),num=10001)
  17. N = np.log(a)
  18.  
  19. #constants used
  20. H = 2.27e-18
  21. l = 1.5
  22. G = 6.637*(10**(-11))
  23. k = (8*3.14*G)**0.5
  24. om_de = 0.75
  25. omega_matter = 1 - om_de
  26. w0 = -0.85
  27. rho_c = 3*(H**2)/(k**2)
  28. c = ((om_de*(1 + w0)*rho_c)/(H**2))**0.5
  29. v0 = (om_de*(1 - w0)*rho_c)/(2*np.exp(-l*k))
  30.  
  31. #initial conditions
  32. y1 = [1.0]
  33. y2 = [1.0]
  34. y3 = [c]
  35.  
  36. #the parameters for integration
  37. p = 0.0
  38. q = 1.0
  39. n = 10000.0
  40. dh = -(q-p)/n  
  41.  
  42. for i in range(0,int(n)):
  43.     k1 = f(y1[i],y2[i],y3[i])
  44.     r1 = g(y3[i])
  45.     s1 = h(y1[i],y2[i],y3[i])
  46.     k2 = f(y1[i] + k1*dh/2.0,y2[i] + r1*dh/2.0,y3[i] + s1*dh/2.0)
  47.     r2 = g(y3[i] + s1*dh/2.0)
  48.     s2 = h(y1[i] + k1*dh/2.0,y2[i] + r1*dh/2.0,y3[i] + s1*dh/2.0)
  49.     k3 = f(y1[i] + k2*dh/2.0,y2[i] + r2*dh/2.0,y3[i] + s2*dh/2.0)
  50.     r3 = g(y3[i] + s2*dh/2.0)
  51.     s3 = h(y1[i] + k2*dh/2.0,y2[i] + r2*dh/2.0,y3[i] + s2*dh/2.0)
  52.     k4 = f(y1[i] + dh*k3,y2[i] + dh*r3,y3[i] + dh*s3)
  53.     r4 = g(y3[i] + dh*s3)
  54.     s4 = h(y1[i] + dh*k3,y2[i] + dh*r3,y3[i] + dh*s3)
  55.     y1 == y1.append(y1[i] + (dh/6.0)*(k1 + 2.0*k2 + 2.0*k3 + k4))
  56.     y2 == y2.append(y2[i] + (dh/6.0)*(r1 + 2.0*r2 + 2.0*r3 + r4))
  57.     y3 == y3.append(y3[i] + (dh/6.0)*(s1 + 2.0*s2 + 2.0*s3 + s4))
  58.  
  59. #other calculations  
  60. A = [(H)*((omega_matter/(y1[i]**3) + (H**2)*(y3[i]**2)/(2.0*rho_c) + (v0*np.exp(-l*y2[i]*k))/(rho_c))**(1.0/2.0)) for i in range(len(y3))]
  61. B = [y2[i]/(10**4) for i in range(len(y2))]
  62. C = [y3[i]/(10**4) for i in range(len(y3))]
  63.  
  64. w = [((H**2)*y3[i]**2 - 2.0*v0*np.exp(-l*k*y2[i]))/((H**2)*y3[i]**2 + 2.0*v0*np.exp(-l*k*y2[i])) for i in range(len(y3))]
  65. omde = [(((H**2)*(y3[i]**2))/2.0 + (v0*np.exp(-l*k*y2[i]))/rho_c) for i in range(len(y3))]
  66. omnr = [(1 - omde[i]) for i in range(len(omde))]
  67. phi_dot = [y3[i]*H for i in range(len(y2))]
  68.  
  69. #plt.plot(N,phi_dot,'y',label='phi_dot')
  70. #plt.plot(N,omnr,'-r',label='matter density')
  71. #plt.plot(N,omde,'-b',label='scalar density')
  72. plt.plot(N,w,'-k',label='eos')
  73. #plt.plot(N,B,'-g',label='y2')
  74. #plt.plot(N,C,'-y',label='y3')
  75. #plt.plot(a,A,'-y',label='hubble parameter')
  76. #plt.plot(N,y1,'-g',label='y1')
  77. #plt.plot(N,y2,'-m',label='y2')
  78. #plt.plot(N,y3,'-y',label='y3')
  79. plt.xlabel('e-foldings')
  80. plt.title('exponential potential-b')
  81. plt.legend(loc='best')
  82. plt.show()
Add Comment
Please, Sign In to add comment