celestial_body_module.f90 Source File


This file depends on

sourcefile~~celestial_body_module.f90~~EfferentGraph sourcefile~celestial_body_module.f90 celestial_body_module.f90 sourcefile~base_class_module.f90 base_class_module.f90 sourcefile~celestial_body_module.f90->sourcefile~base_class_module.f90 sourcefile~kind_module.f90 kind_module.F90 sourcefile~celestial_body_module.f90->sourcefile~kind_module.f90 sourcefile~numbers_module.f90 numbers_module.f90 sourcefile~celestial_body_module.f90->sourcefile~numbers_module.f90 sourcefile~numbers_module.f90->sourcefile~kind_module.f90

Files dependent on this one

sourcefile~~celestial_body_module.f90~~AfferentGraph sourcefile~celestial_body_module.f90 celestial_body_module.f90 sourcefile~crtbp_module.f90 crtbp_module.f90 sourcefile~crtbp_module.f90->sourcefile~celestial_body_module.f90 sourcefile~ephemeris_module.f90 ephemeris_module.f90 sourcefile~ephemeris_module.f90->sourcefile~celestial_body_module.f90 sourcefile~fortran_astrodynamics_toolkit.f90 fortran_astrodynamics_toolkit.f90 sourcefile~fortran_astrodynamics_toolkit.f90->sourcefile~celestial_body_module.f90 sourcefile~fortran_astrodynamics_toolkit.f90->sourcefile~crtbp_module.f90 sourcefile~fortran_astrodynamics_toolkit.f90->sourcefile~ephemeris_module.f90 sourcefile~halo_orbit_module.f90 halo_orbit_module.f90 sourcefile~fortran_astrodynamics_toolkit.f90->sourcefile~halo_orbit_module.f90 sourcefile~jpl_ephemeris_module.f90 jpl_ephemeris_module.f90 sourcefile~fortran_astrodynamics_toolkit.f90->sourcefile~jpl_ephemeris_module.f90 sourcefile~standish_module.f90 standish_module.f90 sourcefile~fortran_astrodynamics_toolkit.f90->sourcefile~standish_module.f90 sourcefile~transformation_module.f90 transformation_module.f90 sourcefile~fortran_astrodynamics_toolkit.f90->sourcefile~transformation_module.f90 sourcefile~halo_orbit_module.f90->sourcefile~celestial_body_module.f90 sourcefile~halo_orbit_module.f90->sourcefile~crtbp_module.f90 sourcefile~jpl_ephemeris_module.f90->sourcefile~celestial_body_module.f90 sourcefile~jpl_ephemeris_module.f90->sourcefile~ephemeris_module.f90 sourcefile~spice_ephemeris_module.f90 spice_ephemeris_module.f90 sourcefile~spice_ephemeris_module.f90->sourcefile~celestial_body_module.f90 sourcefile~spice_ephemeris_module.f90->sourcefile~ephemeris_module.f90 sourcefile~standish_module.f90->sourcefile~celestial_body_module.f90 sourcefile~standish_module.f90->sourcefile~ephemeris_module.f90 sourcefile~transformation_module.f90->sourcefile~celestial_body_module.f90 sourcefile~transformation_module.f90->sourcefile~ephemeris_module.f90 sourcefile~transformation_module.f90->sourcefile~jpl_ephemeris_module.f90

Source Code

!*****************************************************************************************
!> author: Jacob Williams
!
!  Celestial body definitions

    module celestial_body_module

    use kind_module
    use numbers_module
    use base_class_module

    implicit none

    type,extends(base_class),public :: celestial_body
        !! A celestial body (Planet, moon, etc.)
        !! The `ID` from the [[base_class]] is the NAIF SPICE ID code for the body
        real(wp) :: mu = zero   !! gravitational parameter \( \mu \) [\(km^3/s^2\)]
    end type celestial_body

    !define some bodies:
    ! MU values from: https://naif.jpl.nasa.gov/pub/naif/generic_kernels/pck/gm_de431.tpc

    type(celestial_body),parameter,public :: body_sun = &
                    celestial_body(10, 'Sun',1.3271244004193938E+11_wp )
    type(celestial_body),parameter,public :: body_mercury = &
                    celestial_body(199,'Mercury',2.2031780000000021E+04_wp )
    type(celestial_body),parameter,public :: body_venus = &
                    celestial_body(299,'Venus',3.2485859200000006E+05_wp )
    type(celestial_body),parameter,public :: body_earth = &
                    celestial_body(399,'Earth',3.9860043543609598E+05_wp )
    type(celestial_body),parameter,public :: body_earth_moon_barycenter = &
                    celestial_body(3,'Earth-Moon Barycenter',4.0350323550225981E+05_wp )
    type(celestial_body),parameter,public :: body_moon = &
                    celestial_body(301,'Moon',4.9028000661637961E+03_wp )
    type(celestial_body),parameter,public :: body_mars = &
                    celestial_body(499,'Mars',4.282837362069909E+04_wp  )
    type(celestial_body),parameter,public :: body_jupiter = &
                    celestial_body(599,'Jupiter',1.266865349218008E+08_wp  )
    type(celestial_body),parameter,public :: body_saturn = &
                    celestial_body(699,'Saturn',3.793120749865224E+07_wp  )
    type(celestial_body),parameter,public :: body_uranus = &
                    celestial_body(799,'Uranus',5.793951322279009E+06_wp  )
    type(celestial_body),parameter,public :: body_neptune = &
                    celestial_body(899,'Neptune',6.835099502439672E+06_wp  )
    type(celestial_body),parameter,public :: body_pluto = &
                    celestial_body(999,'Pluto',8.696138177608748E+02_wp  )

!*****************************************************************************************
    end module celestial_body_module
!*****************************************************************************************