Advertisement
Guest User

Untitled

a guest
Sep 24th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.00 KB | None | 0 0
  1. import pylab as pl
  2.  
  3. Nit      = int(1e6) # no. of iterations
  4. H0       = 1.#2.269e-18 # /s
  5.  
  6.  
  7. H_f          = lambda a, Omg_m0: H0*( 1. + Omg_m0/(a**3.) - Omg_m0 )**0.5
  8.  
  9. delta_ddt_f  = lambda a, H, Omg_m0, delta, delta_dt:                \
  10.                       1.5*(H**2.)*(1. + Omg_m0 / (a**3.) - Omg_m0 ) \
  11.                     - 2.*H*delta_dt
  12.  
  13. def sse2():
  14.     """
  15.    second sub exercise:
  16.    """
  17.     constant = 1.
  18.     dt       = 1e12                           # 1. / (Nit-1.) # for example?
  19.     counter  = pl.zeros(3, dtype=int)
  20.     Omg_0s   = pl.array([ [1., 0.], [0.3, 0.7], [0.8, 0.2] ]) # 3 cases
  21.    
  22.     a_list     = []
  23.     delta_list = []
  24.    
  25.     for u in pl.arange(0, 3):
  26.         " for every case of the densities "
  27.  
  28.         Omg_m0 = Omg_0s[u,0]
  29.         H_A           = pl.zeros( Nit )
  30.        
  31.         a_A           = pl.zeros( Nit )
  32.         adot_A        = pl.zeros( Nit )
  33.         a_A[0]        = 1.e-3
  34.         adot_A[0]     = a_A[0] * H_f(a_A[0], Omg_m0)
  35.  
  36.         delta_A       = pl.zeros( Nit )
  37.         delta_dt_A    = pl.zeros( Nit )
  38.         delta_dt_A[0] = constant*a_A[0]
  39.  
  40.         for i in pl.arange(0, Nit-1):
  41.             " integrating in time "
  42.  
  43.             if a_A[i] <= 1:
  44.                 " not reached today yet "
  45.                 H_A[i+1]    = H_f(a_A[i], Omg_m0)
  46.                 a_A[i+1]    = a_A[i] \
  47.                                 + dt*adot_A[i] # Forward-Euler
  48.                 adot_A[i+1] = a_A[i+1] * H_A[i+1]
  49.  
  50.                 delta_dt_A[i+1] = delta_dt_A[i] \
  51.                 + dt*delta_ddt_f(a_A[i], H_A[i], Omg_m0, delta_A[i], delta_dt_A[i])
  52.  
  53.                 delta_A[i+1] = delta_A[i] \
  54.                                 + dt*delta_dt_A[i+1]  # Euler-Cromer
  55.                 pass
  56.             else:
  57.                 " a > 1 "
  58.                 a_list.append(     a_A [:i]    )
  59.                 delta_list.append( delta_A[:i] )
  60.                 break # breaks out of innermost for-loop
  61.  
  62.             continue
  63.        
  64.         continue
  65.  
  66.     return a_list, delta_list
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement