Astro-Cosmology

 view release on metacpan or  search on metacpan

Cosmology.pm  view on Meta::CPAN

  my $z   = sequence(10) / 10;
  my $eds = Astro::Cosmology->new;
  my $sn  = Astro::Cosmology->new( matter => 0.3, lambda => 0.7 );

  my $de  = 1.0e6 * PARSEC * $eds->lum_dist($z);
  my $ds  = 1.0e6 * PARSEC * $sn->lum_dist($z);

  # let's change the parameters of the $sn cosmology
  $sn->setvars( lambda=>0.6, matter=>0.2 );

=head1 UNITS

If H0 is set to 0, then the units used are the Hubble
distance, volume per steradian, or time. If greater than zero,
distances are measured in Mpc, volumes in Mpc^3/steradian,
and time in years.

=head1 NOTES

=over 4

=item *

The comoving volume routine gives a slightly smaller answer than
Figure 6 of Carroll, Press & Turner for z ~ 100. It could be due to
differences in the numerical methods, but I've not yet investigated
it thoroughly.

=item *

A year is defined to be YEAR_TROPICAL seconds.
Let me know if this is wrong.

=back

=head1 THEORY

The following calculations were cobbled together from a number
of sources, including the following (note that errors in the
documentation or code are mine, and are not due to these authors):

  Distance measures in cosmology, Hogg, D.W., astro-ph/9905116
  Perlmutter et al. 1997, ApJ, 483, 565
  Carroll, Press & Turner 1992, ARAA, 30, 499
  Weinberg, S., sections 14.6.8, 15.3.25
  Sandage, A. 1961, ApJ, 133, 355-392

In the following all values are in "natural" units:
Hubble distance, volume, or time.

Symbols used in the following:

  om    is omega_matter
  ol    is omega_lambda
  ok    is 1 - om - ol
  kappa is sqrt( abs(ok) )

=head2 Distances

For cosmologies with no lambda term, the luminosity distances
(C<dl>) are calculated by the standard formulae:

  empty:     dl = 0.5 * z * (2+z)
  flat:      dl = 2 * ( 1+z - sqrt(1+z) )
  otherwise: dl = (2 / (om*om)) *
                  ( om*z + (om-2) * (sqrt(1+om*z)-1) )

For non-zero lambda cosmologies, the luminosity distance is
calculated using:

  closed:  dl = (1+z) * sin( kappa * dc ) / kappa
  open:    dl = (1+z) * sinh( kappa * dc ) / kappa
  flat:    dl = (1+z) * dc

where C<dc> is the comoving distance, calculated by numerical
integration of the following from 0 to C<z>:

  1.0 / sqrt( (1+z)^2 * (1+om*z) - z*(2+z)*ol )

The comoving distance is always calculated by numerical
integration of the above formula. The angular diameter and
proper motion distances are defined as
C<dl/(1+z)^2> and C<dl/(1+z)> respectively.

=head2 Volumes

If C<dm> is the proper motion distance, then the
comoving volume C<vc> is given by

 flat:   vc = dm^3 / 3
 open:   vc = dm * sqrt(1+ok*dm^2) - asinh(dm*kappa) /
              ( 2 * kappa * ok )
 closed: vc = dm * sqrt(1+ok*dm^2) - asin(dm*kappa) /
              ( 2 * kappa * ok )

The differential comoving volume, C<dvc>, is calculated using
the proper motion distance, C<dm>, and the differential
proper motion distance, C<ddm>, by

  dvc = dm^2 * ddm / sqrt( 1 + ok*dm^2 )

where

  ddm = dc * sqrt( 1 + abs(ok) * dm^2 )

=head2 Times

The lookback time is calculated by integration of the following
formula from 0 to C<z>:

 1.0 / ( (1+z) * sqrt( (1+z)^2 * (1+om*z) - z*(2+z)*ol ) )

=head2 Flux and Magnitudes

The conversion between absolute and apparent magnitudes is
calculated using:

  $app_mag = $abs_mag + 25 + 5 * $cosmo->lum_dist($z)->log10();

The conversion between flux and luminosity is calculated using

  $lumin = FOURPI * $dl * $dl * $flux

where

  $dl = $cosmo->lum_dist($z) * 1.0e8 * PARSEC

Note that these equations do not include any pass-band
or evolutionary corrections.

=head2 Integration Technique

All integrations are performed using Romberg's method, which
is an iterative scheme using progressively higher-degree
polynomial approximations. The method stops when the answer
converges (ie the absolute difference in the values from the
last two iterations is smaller than the C<ABSTOL>
parameter, which is described in the L<new|/new> method).

Typically, the romberg integration scheme produces greater
accuracy for smooth functions when compared to simpler
methods (e.g. Simpson's method) while having little extra
overhead for badly-behaved functions.

=head1 CONSTANTS

Currently the following constants are available via
C<use Astro::Cosmology qw( :constants )>:

=over 4

=item *

LIGHT - the speed of light in m/s.

=item *

PARSEC - one parsec in metres.

=item *

STERADIAN - one steradian in degrees^2.

=item *

YEAR_TROPICAL - one tropical year in seconds.

=item *



( run in 0.610 second using v1.01-cache-2.11-cpan-2398b32b56e )