Astro::Constants - this library provides physical constants for use in Astronomy
version 0.11_95
use strict; # important! use Astro::Constants::MKS qw/:long/; # to calculate the gravitational force of the Sun on the Earth in Newtons, use GMm/r^2 my $force_sun_earth = GRAVITATIONAL * MASS_SOLAR * MASS_EARTH / ASTRONOMICAL_UNIT**2;
This module provides physical and mathematical constants for use in Astronomy and Astrophysics. The two metric systems of units, MKS and CGS, are kept in two separate modules and are called by name explicitly. It allows you to choose between constants in units of centimetres /grams /seconds with Astro::Constants::CGS and metres /kilograms /seconds with Astro::Constants::MKS.
The :long tag imports all the constants in their long name forms (i.e. GRAVITATIONAL). Useful subsets can be imported with these tags: :fundamental :conversion :mathematics :cosmology :planetary :electromagnetic or :nuclear. Alternate names such as LIGHT_SPEED instead of SPEED_LIGHT or HBAR instead of H_BAR are imported with :alternates. I'd like to move away from their use, but they have been in the module for years. Short forms of the constant names are included to provide backwards compatibility with older versions based on Jeremy Bailin's Astroconst library and are available through the import tag :short.
:long
:fundamental
:conversion
:mathematics
:cosmology
:planetary
:electromagnetic
:nuclear
:alternates
:short
The values are stored in Physical_Constants.xml in the data directory and are mostly based on the 2014 CODATA values from NIST.
Long name constants are constructed with the constant pragma and are not interpolated in double quotish situations because they are really inlined functions. Short name constants are constructed with the age-old idiom of fiddling with the symbol table using typeglobs, e.g. *PI = \3.14159, and may be slower than the long name constants.
*PI = \3.14159
You are tired of typing in all those numbers and having to make sure that they are all correct. How many significant figures is enough or too much? Where's the definitive source, Wikipedia? And which mass does "$m1" refer to, solar or lunar?
The constant values in this module are protected against accidental re-assignment in your code. The test suite protects them against accidental finger trouble in my code. Other people are using this module, so more eyeballs are looking for errors and we all benefit. The constant names are a little longer than you might like, but you gain in the long run from readable, sharable code that is clear in meaning. Your programming errors are a little easier to find when you can see that the units don't match. Isn't it reassuring that you can verify how a number is produced and which meeting of which standards body is responsible for its value?
Trusting someone else's code does carry some risk, which you should consider, but have you also considered the risk of doing it yourself with no one else to check your work?
2.99792458e8 MKS 2.99792458e10 CGS
speed of light in a vacuum
This constant is also available using the short name $A_c as well as the alternate name LIGHT_SPEED (imported using the :alternate tag for backwards compatibility)
$A_c
LIGHT_SPEED
1.38064852e-23 MKS 1.38064852e-16 CGS
Boltzmann's constant
This constant is also available using the short name $A_k
$A_k
6.67408e-11 MKS 6.67408e-8 CGS
universal gravitational constant
This constant is also available using the short name $A_G
$A_G
1.6021766208e-19 MKS 1.6021766208e-12 CGS
electron volt
This constant is also available using the short name $A_eV
$A_eV
6.626070040e-34 MKS 6.626070040e-27 CGS
Planck constant
This constant is also available using the short name $A_h
$A_h
1.054571800e-34 MKS 1.054571800e-27 CGS
Planck's constant /2pi
This constant is also available using the short name $A_hbar as well as the alternate name HBAR (imported using the :alternate tag for backwards compatibility)
$A_hbar
HBAR
1.6021766208e-19 MKS 4.8032046729e-10 CGS
electron charge (defined positive)
This constant is also available using the short name $A_e as well as the alternate name CHARGE_ELEMENTARY (imported using the :alternate tag for backwards compatibility)
$A_e
CHARGE_ELEMENTARY
5.670367e-8 MKS 5.670367e-5 CGS
Stefan-Boltzmann constant
This constant is also available using the short name $A_sigma
$A_sigma
7.565723e-16 MKS 7.565723e-15 CGS
radiation density constant, 4 * sigma / c
This constant is also available using the short name $A_arad as well as the alternate name A_RAD (imported using the :alternate tag for backwards compatibility)
$A_arad
A_RAD
2.8977729e-3 MKS 2.8977729e-1 CGS
Wien wavelength displacement law constant
This constant is also available using the short name $A_Wien
$A_Wien
7.2973525664e-3 MKS 7.2973525664e-3 CGS
fine structure constant
This constant is also available using the short name $A_alpha
$A_alpha
376.730313461
characteristic impedance of vacuum
This constant is also available using the short name $A_Z0 as well as the alternate name VACUUM_IMPEDANCE (imported using the :alternate tag for backwards compatibility)
$A_Z0
VACUUM_IMPEDANCE
8.854187817e-12 MKS 1 CGS
permittivity of free space, epsilon_0, the electric constant
This constant is also available using the short name $A_eps0 as well as the alternate name PERMITIVITY_0 (imported using the :alternate tag for backwards compatibility)
$A_eps0
PERMITIVITY_0
1.2566370614e-6 MKS 1 CGS
permeability of free space, mu_0, the magnetic constant
This constant is also available using the short name $A_mu0 as well as these alternate names (imported using the :alternate tag): PERMEABILITY_0, CONSTANT_MAGNETIC
$A_mu0
3.14159265358979324
trig constant pi
This constant is also available using the short name $A_pi
$A_pi
12.5663706143592
trig constant pi times 4 (shorthand for some calculations)
This constant is also available using the short name $A_4pi as well as the alternate name FOURPI (imported using the :alternate tag for backwards compatibility)
$A_4pi
FOURPI
57.2957795130823
a measure of solid angle in square degrees
This constant is also available using the short name $A_ster
$A_ster
2.71828182846
base of natural logarithm
This constant is also available using the short name $A_exp
$A_exp
1.660539040e-27 MKS 1.660539040e-24 CGS
atomic mass unit, 1 u
This constant is also available using the short name $A_amu
$A_amu
3.08567758149e16 MKS 3.08567758149e18 CGS
parsec
This constant is also available using the short name $A_pc
$A_pc
149_597_870_700 MKS 1.496e13 CGS
astronomical unit
This constant is also available using the short name $A_AU
$A_AU
9_460_730_472_580_800 MKS 9.4607304725808e17 CGS
the distance that light travels in vacuum in one Julian year
This constant is also available using the short name $A_ly
$A_ly
1e-10 MKS 1e-8 CGS
Angstrom
This constant is also available using the short name $A_AA
$A_AA
1e-26 MKS 1e-23 CGS
Jansky
This constant is also available using the short name $A_Jy
$A_Jy
6.022140857e23
Avogadro's number
This constant is also available using the short name $A_NA
$A_NA
31_557_600
defined as exactly 365.25 days of 86400 SI seconds
This constant is also available using the short name $A_yr as well as the alternate name YEAR_JULIAN (imported using the :alternate tag for backwards compatibility)
$A_yr
YEAR_JULIAN
31_556_925.1
the period of time for the ecliptic longitude of the Sun to increase 360 degrees, approximated by the Gregorian calendar
31_558_149.8
the period of revolution of the Earth around the Sun in a fixed reference frame
31_558_432.6
the period between successive passages of the Earth through perihelion
29_947_974.3
the period between successive passages of the Sun (as seen from the geocenter) through the same lunar node
1.9884e30 MKS 1.9884e33 CGS
solar mass
This constant is also available using the short name $A_msun as well as the alternate name SOLAR_MASS (imported using the :alternate tag for backwards compatibility)
$A_msun
SOLAR_MASS
3.846e26 MKS 3.846e33 CGS
solar luminosity
This constant is also available using the short name $A_Lsun as well as the alternate name SOLAR_LUMINOSITY (imported using the :alternate tag for backwards compatibility)
$A_Lsun
SOLAR_LUMINOSITY
1.8791e-26 MKS 1.8791e-29 CGS
critical density /h^2
This constant is also available using the short name $A_rhoc as well as the alternate name RHO_C (imported using the :alternate tag for backwards compatibility)
$A_rhoc
RHO_C
3.0853056e17
Hubble time *h, the inverse of Hubble's constant valued at 100 km/s/Mpc (DEPRECATED - see ChangeLog)
This constant is also available using the short name $A_tH
$A_tH
2.725
cosmic microwave background temperature in Kelvin
This constant is also available using the short name $A_TCMB as well as the alternate name CMB_TEMPERATURE (imported using the :alternate tag for backwards compatibility)
$A_TCMB
CMB_TEMPERATURE
-26.74
solar V magnitude
This constant is also available using the short name $A_Vsun as well as the alternate name SOLAR_V_MAG (imported using the :alternate tag for backwards compatibility)
$A_Vsun
SOLAR_V_MAG
4.83
solar absolute V magnitude
This constant is also available using the short name $A_MVsun as well as the alternate name SOLAR_V_ABS_MAG (imported using the :alternate tag for backwards compatibility)
$A_MVsun
SOLAR_V_ABS_MAG
6.96e8 MKS 6.96e10 CGS
solar radius
This constant is also available using the short name $A_rsun as well as the alternate name SOLAR_RADIUS (imported using the :alternate tag for backwards compatibility)
$A_rsun
SOLAR_RADIUS
5.9722e24 MKS 5.9722e27 CGS
mass of Earth
This constant is also available using the short name $A_mearth as well as the alternate name EARTH_MASS (imported using the :alternate tag for backwards compatibility)
$A_mearth
EARTH_MASS
6.378_136_6e6 MKS 6.378_136_6e8 CGS
radius of Earth
This constant is also available using the short name $A_rearth as well as the alternate name EARTH_RADIUS (imported using the :alternate tag for backwards compatibility)
$A_rearth
EARTH_RADIUS
5778
surface temperature of sun
This constant is also available using the short name $A_Tsun as well as the alternate name SOLAR_TEMPERATURE (imported using the :alternate tag for backwards compatibility)
$A_Tsun
SOLAR_TEMPERATURE
1408 MKS 1.408 CGS
mean solar density
This constant is also available using the short name $A_dsun as well as the alternate name SOLAR_DENSITY (imported using the :alternate tag for backwards compatibility)
$A_dsun
SOLAR_DENSITY
5514 MKS 5.514 CGS
mean Earth density
This constant is also available using the short name $A_dearth as well as the alternate name EARTH_DENSITY (imported using the :alternate tag for backwards compatibility)
$A_dearth
EARTH_DENSITY
274.0 MKS 27400 CGS
solar surface gravity
This constant is also available using the short name $A_gsun as well as the alternate name SOLAR_GRAVITY (imported using the :alternate tag for backwards compatibility)
$A_gsun
SOLAR_GRAVITY
9.78 MKS 978 CGS
Earth surface gravity
This constant is also available using the short name $A_gearth as well as the alternate name EARTH_GRAVITY (imported using the :alternate tag for backwards compatibility)
$A_gearth
EARTH_GRAVITY
1.7381e6 MKS 1.7381e8 CGS
lunar radius
This constant is also available using the short name $A_rmoon as well as the alternate name LUNAR_RADIUS (imported using the :alternate tag for backwards compatibility)
$A_rmoon
LUNAR_RADIUS
7.342e22 MKS 7.342e25 CGS
lunar mass
This constant is also available using the short name $A_mmoon as well as the alternate name LUNAR_MASS (imported using the :alternate tag for backwards compatibility)
$A_mmoon
LUNAR_MASS
3.844e8 MKS 3.844e10 CGS
lunar orbital semi-major axis
This constant is also available using the short name $A_amoon as well as the alternate name LUNAR_SM_AXIS (imported using the :alternate tag for backwards compatibility)
$A_amoon
LUNAR_SM_AXIS
0.0549
lunar orbital eccentricity
This constant is also available using the short name $A_emoon as well as the alternate name LUNAR_ECCENTRICITY (imported using the :alternate tag for backwards compatibility)
$A_emoon
LUNAR_ECCENTRICITY
6.6524587158e-29 MKS 6.6524587158e-25 CGS
Thomson cross-section
This constant is also available using the short name $A_sigmaT as well as the alternate name THOMSON_XSECTION (imported using the :alternate tag for backwards compatibility)
$A_sigmaT
THOMSON_XSECTION
9.10938356e-31 MKS 9.10938356e-28 CGS
mass of electron
This constant is also available using the short name $A_me as well as the alternate name ELECTRON_MASS (imported using the :alternate tag for backwards compatibility)
$A_me
ELECTRON_MASS
1.672621898e-27 MKS 1.672621898e-24 CGS
mass of proton
This constant is also available using the short name $A_mp as well as the alternate name PROTON_MASS (imported using the :alternate tag for backwards compatibility)
$A_mp
PROTON_MASS
1.674927471e-27 MKS 1.674927471e-24 CGS
neutron mass
This constant is also available using the short name $A_mn as well as the alternate name NEUTRON_MASS (imported using the :alternate tag for backwards compatibility)
$A_mn
NEUTRON_MASS
1.6738e-27
mass of Hydrogen atom -- This value is from the IUPAC and is a little smaller than MASS_PROTON + MASS_ELECTRON, but within the uncertainty given here. The current value is 1.008u +/- 0.0002 derived from a range of terrestrial materials. If this is for precision work, you had best understand what you're using. See https://iupac.org/what-we-do/periodic-table-of-elements/
This constant is also available using the short name $A_mH as well as the alternate name HYDROGEN_MASS (imported using the :alternate tag for backwards compatibility)
$A_mH
HYDROGEN_MASS
6.644_657_230e-27
mass of alpha particle
This constant is also available using the short name $A_ma
$A_ma
2.8179403227e-15 MKS 2.8179403227e-13 CGS
classical electron radius
This constant is also available using the short name $A_re as well as the alternate name ELECTRON_RADIUS (imported using the :alternate tag for backwards compatibility)
$A_re
ELECTRON_RADIUS
5.2917721067e-11 MKS 5.2917721067e-9 CGS
Bohr radius
This constant is also available using the short name $A_a0 as well as the alternate name BOHR_RADIUS (imported using the :alternate tag for backwards compatibility)
$A_a0
BOHR_RADIUS
This is a helper function that rounds a value or list of values to 5 significant figures.
Give this method the string of the constant and it returns the precision or uncertainty listed.
$rel_precision = precision('GRAVITATIONAL'); $abs_precision = precision('MASS_EARTH');
At the moment you need to know whether the uncertainty is relative or absolute. Looking to fix this in future versions.
Nothing is exported by default, so the module doesn't clobber any of your variables. Select from the following tags:
:long (use this one to get the most constants)
I've gotten rid of list_constants and describe_constants because they are now in the documentation. Use perldoc Astro::Constants for that information.
list_constants
describe_constants
perldoc Astro::Constants
Astro::Cosmology
Perl Data Language
NIST
Astronomical Almanac
Neil Bower's review on providing read-only values
Test::Number::Delta
Test::Deep::NumberTolerant for testing values within objects
Reference Documents:
IAU 2009 system of astronomical constants
Astronomical Constants 2016.pdf
IAU recommendations concerning units
Re-definition of the Astronomical Unit
* https://github.com/duffee/Astro-Constants
File issues/suggestions at the Github repository https://github.com/duffee/Astro-Constants. The venerable RT is the canonical bug tracker that is clocked by meta::cpan.
Using strict is a must with this code. Any constants you forgot to import will evaluate to 0 and silently introduce errors in your code. Caveat Programmer.
strict
If you are using this module, drop me a line using any available means at your disposal, including *gasp* email (address in the Author section), to let me know how you're using it. What new features would you like to see? If you've had an experience with using the module, let other people know what you think, good or bad, by rating it at cpanratings.
If you want to add in your own constants or override the factory defaults, run make, edit the PhysicalConstants.xml file and then run dzil build again. If you have a pre-existing PhysicalConstants.xml file, drop it in place before running dzil build.
dzil build
the original astroconst sites have disappeared
I plan to deprecate the short names and change the order in which long names are constructed, moving to a noun_adjective format. LIGHT_SPEED and SOLAR_MASS become SPEED_LIGHT and MASS_SOLAR. This principle should make the code easier to read with the most important information coming at the beginning of the name.
(Gleaned from the Astroconst home page - astroconst.org )
Astroconst is a set of header files in various languages (currently C, Fortran, Perl, Java, IDL and Gnuplot) that provide a variety of useful astrophysical constants without constantly needing to look them up.
The generation of the header files from one data file is automated, so you can add new constants to the data file and generate new header files in all the appropriate languages without needing to fiddle with each header file individually.
This package was created and is maintained by Jeremy Bailin. It's license states that it is completely free, both as in speech and as in beer.
No warranty expressed or implied. This is free software. If you want someone to assume the risk of an incorrect value, you better be paying them.
(What would you want me to test in order for you to depend on this module?)
from Jeremy Bailin's astroconst header files
The Astroconst values have been gleaned from a variety of sources, and have quite different precisions depending both on the known precision of the value in question, and in some cases on the precision of the source I found it from. These values are not guaranteed to be correct. Astroconst is not certified for any use whatsoever. If your rocket crashes because the precision of the lunar orbital eccentricity isn't high enough, that's too bad.
Jeremy Balin, for writing the astroconst package and helping test and develop this module.
Doug Burke, for giving me the idea to write this module in the first place, tidying up Makefile.PL, testing and improving the documentation.
Boyd Duffee <duffee@cpan.org>
This software is copyright (c) 2017 by Boyd Duffee.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Astro::Constants, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Astro::Constants
CPAN shell
perl -MCPAN -e shell install Astro::Constants
For more information on module installation, please visit the detailed CPAN module installation guide.