Astro-Cosmology
view release on metacpan or search on metacpan
t/cosmology2.t view on Meta::CPAN
# This "module" is written so Doug has something to test against
# for his Astro::Cosmology package
my $nstep = 1e6;
my $_tol = 1/$nstep;
# this routine determines whether or not you have flat universe or
# if you have to use the correction when going between the comoving
# distance and the interesting distances (lum, ang, etc.)
sub _not_flat {
my $matter = shift;
my $lambda = shift;
my $tot = $matter+$lambda;
if (abs(1-$tot) < $_tol) {
return(0);
} elsif ($tot > 1) {
return(-1); # negative curvature
t/cosmology2.t view on Meta::CPAN
$matter = shift if(@_);
$lambda = shift if(@_);
$nsteps = shift if(@_);
# here I have to "correct" the comoving distance depending on the
# the curvature of the universe. So, I calculate the curvature,
# calculate the comoving distance along the line of sight and
# only then do compute whether the curvature is positive, negatuve
# or "zero", which means less than the tolerance variable $_tol
#
# _not_flat is the routine that checks the curvature, is uses the
# input lambda and matter, not the computed curvature
my $curve = 1.0- ($lambda+$matter);
my $dc = d_c($z,$matter,$lambda,$nsteps);
if (!_not_flat($matter,$lambda)) {
return($dc);
} elsif (_not_flat($matter,$lambda) < 0) {
# negative curvature
$curve = abs($curve);
return(sin($dc*sqrt($curve))/sqrt($curve));
} else {
return(sinh($dc*sqrt($curve))/sqrt($curve));
}
}
=pod
t/cosmology2.t view on Meta::CPAN
my $curve = 1.0 - ($lambda + $matter);
my $sacurve = sqrt(abs($curve));
my $dm = d_m($z,$matter,$lambda,$nsteps);
my $vc;
# this formula is from Carrol, Press and Turner, ARA&Ap, 1992, 30, 499
# however, it seems odd, as the volume will be negative for negative
# curvature.
if (!_not_flat($matter,$lambda)) {
$vc = $dm**3;
$vc /= 3.0;
} elsif (_not_flat($matter,$lambda) < 0) {
# negative curvature
$vc = $dm*sqrt(1+$curve*$dm**2) - asin($dm*$sacurve)/$sacurve;
$vc /= 2*$curve;
} else {
$vc = $dm*sqrt(1+$curve*$dm**2) - asinh($dm*$sacurve)/$sacurve;
$vc /= 2*$curve;
( run in 0.359 second using v1.01-cache-2.11-cpan-0a987023a57 )