astcon Subroutine

public subroutine astcon(name, factor, const)

THIS SUBROUTINE SUPPLIES THE VALUES OF ASTRONOMICAL CONSTANTS.

NAME   = NAME OF CONSTANT WHOSE VALUE IS DESIRED (IN)
         'C'         SPEED OF LIGHT IN METERS/SECOND
         'C(AU/DAY)' SPEED OF LIGHT IN AU/DAY
         'AU'        LENGTH OF ASTRONOMICAL UNIT IN METERS
         'AU(SEC)'   LENGTH OF ASTRONOMICAL UNIT IN SECONDS
         'GS'        HELIOCENTRIC GRAVITATIONAL CONSTANT
                        IN METERS**3/SECOND**2
         'GE'        GEOCENTRIC GRAVITATIONAL CONSTANT
                        IN METERS**3/SECOND**2
         'ERAD'      EQUATORIAL RADIUS OF EARTH IN METERS
         'F'         FLATTENING FACTOR OF EARTH
         'ANGVEL'    NOMINAL MEAN ROTATIONAL ANGULAR VELOCITY
                        OF EARTH IN RADIANS/SECOND
         'MASS_SUN'  RECIPROCAL MASS OF THE SUN
         'MASS_EAR'  RECIPROCAL MASS OF THE EARTH
         'MASS_MOO'  RECIPROCAL MASS OF THE MOON
         'MASS_MER'  RECIPROCAL MASS OF MERCURY
             :             :      :        :
         'MASS_PLU'  RECIPROCAL MASS OF PLUTO
FACTOR = FACTOR BY WHICH CONSTANT VALUE IS TO BE MULTIPLIED
         (IN)
CONST  = CONSTANT VALUE AFTER MULTIPLICATION BY FACTOR (OUT)

Arguments

Type IntentOptional Attributes Name
character(len=1) :: name*(*)
real(kind=wp) :: factor
real(kind=wp) :: const

Called by

proc~~astcon~~CalledByGraph proc~astcon novas_module::astcon proc~aberat novas_module::aberat proc~aberat->proc~astcon proc~catran novas_module::catran proc~catran->proc~astcon proc~dlight novas_module::dlight proc~dlight->proc~astcon proc~geocen novas_module::geocen proc~geocen->proc~astcon proc~geopos novas_module::geopos proc~geopos->proc~astcon proc~terra novas_module::terra proc~geopos->proc~terra proc~grvd novas_module::grvd proc~grvd->proc~astcon proc~grvdef~2 novas_module::grvdef proc~grvdef~2->proc~astcon proc~grvdef~2->proc~dlight proc~grvdef~2->proc~geocen proc~grvdef~2->proc~grvd proc~limang novas_module::limang proc~limang->proc~astcon proc~place novas_module::place proc~place->proc~astcon proc~place->proc~aberat proc~place->proc~dlight proc~place->proc~geocen proc~place->proc~geopos proc~place->proc~grvdef~2 proc~place->proc~limang proc~radvl novas_module::radvl proc~place->proc~radvl proc~vectrs novas_module::vectrs proc~place->proc~vectrs proc~littim novas_module::littim proc~place->proc~littim proc~radvl->proc~astcon proc~terra->proc~astcon proc~vectrs->proc~astcon proc~gethip novas_module::gethip proc~gethip->proc~catran proc~littim->proc~geocen proc~mpstar novas_module::mpstar proc~mpstar->proc~place proc~mpstar->proc~vectrs proc~places novas_module::places proc~places->proc~place

Source Code

subroutine astcon (name,factor,const)

real(wp) :: factor,const
character name*(*)

!     NOTE:  THESE CONSTANT VALUES ARE BASED ON THE TDB SECOND WHERE
!     APPLICABLE.

real(wp),parameter :: c = 299792458.0_wp  !! speed of light in meters/second is a defining physical constant
real(wp),parameter :: ausec = 499.0047838061_wp  !! light-time for one astronomical unit in seconds, from DE-405

!     SPEED OF LIGHT IN METERS/SECOND
if ( name == 'C' ) then
    const = c

!     SPEED OF LIGHT IN AU/DAY
else if ( name == 'C(AU/DAY)' ) then
    const = 86400.d0 / ausec

!     LENGTH OF ASTRONOMICAL UNIT IN METERS
else if ( name == 'AU' ) then
    const = ausec * c

!     LENGTH OF ASTRONOMICAL UNIT IN SECONDS
else if ( name == 'AU(SEC)' ) then
    const = ausec

!     HELIOCENTRIC GRAVITATIONAL CONSTANT IN METERS**3/SECOND**2, FROM
!     DE-405
else if ( name == 'GS' ) then
    const = 1.32712440017987d20

!     GEOCENTRIC GRAVITATIONAL CONSTANT IN METERS**3/SECOND**2, FROM
!     DE-405
else if ( name == 'GE' ) then
    const = 3.98600433d14

!     EQUATORIAL RADIUS OF EARTH IN METERS, FROM IERS CONVENTIONS (2003)
else if ( name == 'ERAD' ) then
    const = 6378136.6d0

!     FLATTENING FACTOR OF EARTH, FROM IERS CONVENTIONS (2003)
else if ( name == 'F' ) then
    const = 1.d0 / 298.25642d0

!     NOMINAL MEAN ROTATIONAL ANGULAR VELOCITY OF EARTH
!     IN RADIANS/SECOND, FROM IERS CONVENTIONS (2003)
else if ( name == 'ANGVEL' ) then
    const = 7.2921150d-5

!     RECIPROCAL MASSES OF SOLAR SYSTEM BODIES, FROM DE-405
!     (SUN MASS / BODY MASS)
else if ( name(1:4) == 'MASS' ) then

    const = 1.d0
    if ( name(6:8) == 'SUN' ) const =         1.d0
    if ( name(6:8) == 'MOO' ) const =  27068700.387534d0
    if ( name(6:8) == 'MER' ) const =   6023600.d0
    if ( name(6:8) == 'VEN' ) const =    408523.71d0
    if ( name(6:8) == 'EAR' ) const =    332946.050895d0
    if ( name(6:8) == 'MAR' ) const =   3098708.d0
    if ( name(6:8) == 'JUP' ) const =      1047.3486d0
    if ( name(6:8) == 'SAT' ) const =      3497.898d0
    if ( name(6:8) == 'URA' ) const =     22902.98d0
    if ( name(6:8) == 'NEP' ) const =     19412.24d0
    if ( name(6:8) == 'PLU' ) const = 135200000.d0
    if ( name(6:8) == 'EMB' ) const =    328900.561400d0

end if

const = const * factor

end subroutine astcon