examples/integration/cosmology.rb in gsl-1.15.3 vs examples/integration/cosmology.rb in gsl-1.16.0.6
- old
+ new
@@ -16,37 +16,37 @@
zplus1 = z + 1.0
z12 = zplus1*zplus1
1.0/sqrt(k*z12 + lambda + matter*z12*zplus1 + radiation*z12*z12)
}
WSpace = GSL::Integration::Workspace.alloc(1000)
-
+
class Universe
H2H0 = 3.24e-18
G = GRAVITATIONAL_CONSTANT
RAD_DENSITY = 8.0*pow_5(PI)*pow_4(BOLTZMANN)/15.0/pow_3(PLANCKS_CONSTANT_H*SPEED_OF_LIGHT)
# p SPEED_OF_LIGHT/(0.71*100*1e5*1e3)*13
-
+
def initialize(matter = 0.3, lambda = 0.7, cmbT = 2.7, h = 0.7)
# Hubble parameter at present
@h = h
@H0 = H2H0*h
-
+
# Density parameters
@matter = matter
@lambda = lambda
rad = RAD_DENSITY*pow_4(cmbT)
@radiation = rad*8*PI*G/3/@H0/@H0/SPEED_OF_LIGHT/SPEED_OF_LIGHT
@Omega = @matter + @lambda + @radiation
@k = 1.0 - @Omega
@q = @matter/2.0 + @radiation - @lambda # Decceleration parameter
end
-
+
def comoving_distance(z)
InvHz.set_params(self)
InvHz.integration_qags([0.0, z], WSpace)[0]
end
-
+
# r: comoving distance
def conformal_factor(r)
tmp = sqrt(@k)
if @Omega > 1.0
sin(tmp*r)/tmp
@@ -54,16 +54,16 @@
sinh(tmp*r)/tmp
else
r
end
end
-
+
def luminosity_distance(z)
r = self.comoving_distance(z)
s = self.conformal_factor(r)
[r, (1.0 + z)*s] # comoving distance, luminosity distance
end
-
+
attr_reader :h
attr_reader :H0
attr_reader :matter
attr_reader :lambda
attr_reader :radiation