GNU Scientific Library - Bugs: bug #60635, physical constants may need...
You are not allowed to post comments on this tracker with your current authentication level.
bug #60635: physical constants may need updating
Submitter: | Patrick Alken <psa> | ||
Submitted: | Wed 19 May 2021 02:23:28 AM UTC | ||
Category: | Accuracy problem | Severity: | 3 - Normal |
Operating System: | Status: | None | |
Assigned to: | None | Open/Closed: | Open |
Release: |
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
Carbon-Copy List
No changes have been made to this item
from M. Galassi
I happened to come across a definition of the gravitational constant, which we have as:
usr/include/gsl/gsl_const_cgs.h:#define GSL_CONST_CGS_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */
/usr/include/gsl/gsl_const_cgsm.h:#define GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */
/usr/include/gsl/gsl_const_mksa.h:#define GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */
/usr/include/gsl/gsl_const_mks.h:#define GSL_CONST_MKS_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */
and the one I saw was different: 6.67430 m^3/(kg*s^2).
Looking it up, it turns out that since 1998 (when our number was valid), the measurement has been updated. You can see the history of updates at:
https://en.wikipedia.org/wiki/Gravitational_constant#Modern_value
and indeed the most recent is 6.67430.
We might want to do an audit to make sure that we follow the NIST or LBL or another standards body on all the physical constants, since you want to update them in lockstep to make sure that some identities still apply. Our constants were introduced around 2000 and have not been touched since some additions in 2006.
At the same time we might want to do a bit of soul searching on where our cutoff is for accepting constants into GSL. I do some work with earth parameters, and am shocked at the lack of a clear reference set of C header files (from NASA or whoever) with earth constants.
gsl currently has fundamental constants (boltzmann, gravitational, bohr radius, electron charge, ... But we also have some more solar-system bound ones, like the astronomical unit, and we even reach pedestrian earth with things like GSL_CONST_MKSA_GRAM_FORCE which relates to the acceleration of gravity on the earth's surface. In fact we also have GSL_CONST_MKSA_GRAV_ACCEL, which is 9.80665 m/s^2.
So I'd like to propose that we add a suite of earth radius values based on concepts from:
https://en.wikipedia.org/wiki/Earth_radius#Global_average_radii
https://gis.stackexchange.com/questions/25494/how-accurate-is-approximating-the-earth-as-a-sphere
and fact sheets like:
https://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html (and the references they give)
To start with the earth radius,
The International Union of Geodesy and Geophysics (IUGG) defines various types of mean earth radius, and they tend to stem from the definition of earth equatorial radius A and earth polar radius B. Setting R1 might be enough to cover what most people need.
A patch for the gravity constant and addition of the earth stuff I mentioned would be like below, and similar for mks, cgs, and cgsm.
At this point I'm just proposing it as food for thought - there is no urgency, and it might be best to apply this patch when we have audited all the physical constants we use, and possibly documented their provenance.
diff --git a/const/gsl_const_mksa.h b/const/gsl_const_mksa.h
index 5d91d1ca..4c82e272 100644
--- a/const/gsl_const_mksa.h
+++ b/const/gsl_const_mksa.h
@@ -22,12 +22,15 @@
#define _GSL_CONST_MKSA_
#define GSL_CONST_MKSA_SPEED_OF_LIGHT (2.99792458e8) /* m / s */
-#define GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */
+#define GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT (6.67430-11) /* m^3 / (kg s^2) */
#define GSL_CONST_MKSA_PLANCKS_CONSTANT_H (6.62606896e-34) /* kg m^2 / s */
#define GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR (1.05457162825e-34) /* kg m^2 / s */
#define GSL_CONST_MKSA_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */
#define GSL_CONST_MKSA_LIGHT_YEAR (9.46053620707e15) /* m */
#define GSL_CONST_MKSA_PARSEC (3.08567758135e16) /* m */
+#define GSL_CONST_MKSA_EARTH_EQUATORIAL_RADIUS_A (6378137.0) /* m */
+#define GSL_CONST_MKSA_EARTH_POLAR_RADIUS_B (6356752.3) /* m */
+#define GSL_CONST_MKSA_EARTH_MEAN_RADIUS_R1 ((2*GSL_CONST_MKS_EARTH_EQUATORIAL_RADIUS_A + GSL_CONST_MKS_EARTH_POLAR_RADIUS_B) / 3.0) /* m */
#define GSL_CONST_MKSA_GRAV_ACCEL (9.80665e0) /* m / s^2 */
#define GSL_CONST_MKSA_ELECTRON_VOLT (1.602176487e-19) /* kg m^2 / s^2 */
#define GSL_CONST_MKSA_MASS_ELECTRON (9.10938188e-31) /* kg */