Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
dpspce

Table of contents
Procedure
Abstract
Required_Reading
Keywords
Declarations
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version

Procedure

     DPSPCE ( Evaluate "two-line" element data, deep-space )

     SUBROUTINE DPSPCE ( ET, GEOPHS, ELEMS, STATE )

Abstract

     Deprecated: This routine has been superseded by the SPICELIB
     routine EVSGP4. *ALL* TLE evaluations should use that routine.
     NAIF supports DPSPCE only for backward compatibility.

     Evaluate NORAD two-line element data for deep-space, earth
     orbiting spacecraft (that is spacecraft with orbital periods
     greater-than 225 minutes). This evaluator uses algorithms as
     described in Hoots 1980 [1].

Required_Reading

     None.

Keywords

     DEEP SPACE PROPAGATOR
     EPHEMERIS
     TWO LINE ELEMENTS

Declarations

     IMPLICIT NONE

     DOUBLE PRECISION      ET
     DOUBLE PRECISION      GEOPHS ( 8  )
     DOUBLE PRECISION      ELEMS  ( 10 )
     DOUBLE PRECISION      STATE  ( 6  )

Brief_I/O

     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     ET         I   Time for state evaluation in seconds past ephemeris
                    epoch J2000.
     GEOPHS     I   The array of geophysical constants.
     ELEMS      I   Array of orbit elements.
     STATE      O   State vector at ET.

Detailed_Input

     ET       is the epoch in TDB seconds past ephemeris epoch J2000
              to produced a state from the input elements.

     GEOPHS   is a collection of 8 geophysical constants needed
              for computing a state. The order of these
              constants must be:

                 GEOPHS(1) = J2 gravitational harmonic for Earth.
                 GEOPHS(2) = J3 gravitational harmonic for Earth.
                 GEOPHS(3) = J4 gravitational harmonic for Earth.

              These first three constants are dimensionless.

                 GEOPHS(4) = KE: Square root of the GM for Earth where
                             GM is expressed in Earth radii cubed per
                             minutes squared.

                 GEOPHS(5) = QO: High altitude bound for atmospheric
                             model in km.

                 GEOPHS(6) = SO: Low altitude bound for atmospheric
                             model in km.

                 GEOPHS(7) = RE: Equatorial radius of the earth in km.

                 GEOPHS(8) = AE: Distance units/earth radius
                             (normally 1)

              Below are currently recommended values for these
              items:

                 J2 =    1.082616D-3
                 J3 =   -2.53881D-6
                 J4 =   -1.65597D-6

              The next item is the square root of GM for the Earth
              given in units of earth-radii**1.5/Minute

                 KE =    7.43669161D-2

              The next two items define the top and bottom of the
              atmospheric drag model used by the type 10 ephemeris
              type. Don't adjust these unless you understand the full
              implications of such changes.

                 QO =  120.0D0
                 SO =   78.0D0

              The ER value is the equatorial radius in km of the Earth
              as used by NORAD.

                 ER = 6378.135D0

              The value of AE is the number of distance units per
              Earth radii used by the NORAD state propagation
              software. The value should be 1 unless you've got a very
              good understanding of the NORAD routine SGP4 and the
              affect of changing this value.

                 AE =    1.0D0

     ELEMS    is an array containing two-line element data
              as prescribed below. The elements NDD6O and BSTAR
              must already be scaled by the proper exponent stored
              in the two line elements set. Moreover, the
              various items must be converted to the units shown
              here.

                 ELEMS (  1 ) = NDT20 in radians/minute**2
                 ELEMS (  2 ) = NDD60 in radians/minute**3
                 ELEMS (  3 ) = BSTAR
                 ELEMS (  4 ) = INCL  in radians
                 ELEMS (  5 ) = NODE0 in radians
                 ELEMS (  6 ) = ECC
                 ELEMS (  7 ) = OMEGA in radians
                 ELEMS (  8 ) = M0    in radians
                 ELEMS (  9 ) = N0    in radians/minute
                 ELEMS ( 10 ) = EPOCH of the elements in seconds
                                past ephemeris epoch J2000.

Detailed_Output

     STATE    is the state produced by evaluating the input elements
              at the input epoch ET. Units are km and km/sec relative
              to the TEME reference frame.

Parameters

     None.

Exceptions

     Error free.

Files

     None.

Particulars

     This subroutine is an extensive rewrite of the SDP4
     routine as described in the Spacetrack 3 report. All common
     blocks were removed and all variables are explicitly defined.

     The removal of common blocks causes the set of routines to
     execute slower than the original version of SDP4. However the
     stability improves especially as concerns memory and
     expanded internal documentation.

     Trivial or redundant variables have been eliminated.

        R         removed, occurrence replaced with RK
        E6A       renamed TOL
        THETA4    removed, relevant equation recast in Horner's form
                  i.e. something like x^4 + x^2 -> x^2 ( x^2 + 1 )
        U         renamed UANG, U is now a euclidean 3 vector.
        Ux,Uy,Uz  removed, replaced with 3-vector U
        Vx,Vy,Vz  removed, replaced with 3-vector V
        OMEGAQ    removed, usage replaced with OMEGAO
        OMGDT     removed, same variable as OMGDOT, so all occurrences
                  replaced with OMGDOT
        SSL,SSG   replaced with the 5-vector SSX
        SSH,SSE
        SSI

     Three functions present in the original Spacetrack report, ACTAN,
     FMOD2P and THETAG, have been either replaced with an intrinsic
     FORTRAN function (ACTAN -> DATAN2, FMOD2P -> DMOD) or recoded
     using SPICELIB calls (THETAG).

     The code at the end of this subroutine which calculates
     orientation vectors, was replaced with a set of calls to
     SPICELIB vector routines.

     A direct comparison of output from the original Spacetrack 3 code
     and these NAIF routines for the same elements and time parameters
     will produce unacceptably different results.

Examples

     The numerical results shown for this example may differ across
     platforms. The results depend on the SPICE kernels used as
     input, the compiler and supporting libraries, and the machine
     specific arithmetic implementation.

     1) Suppose that you have collected the two-line element data
        for the TDRS 4 geosynchronous satellite. The following example
        code demonstrates how you obtain its state at an epoch of
        interest.

        Use the meta-kernel shown below to load the required SPICE
        kernels.


           KPL/MK

           File name: dpspce_ex1.tm

           This meta-kernel is intended to support operation of SPICE
           example programs. The kernels shown here should not be
           assumed to contain adequate or correct versions of data
           required by SPICE-based user applications.

           In order for an application to use this meta-kernel, the
           kernels referenced here must be present in the user's
           current working directory.

           The names and contents of the kernels referenced
           by this meta-kernel are as follows:

              File name           Contents
              ---------           ------------------------------------
              naif0012.tls        Leapseconds
              geophysical.ker     geophysical constants for evaluation
                                  of two-line element sets.

           \begindata

              KERNELS_TO_LOAD = ( 'naif0012.tls',
                                  'geophysical.ker'  )

           \begintext

           End of meta-kernel


        Example code begins here.


              PROGRAM DPSPCE_EX1
              IMPLICIT NONE

        C
        C     Local parameters.
        C
              INTEGER               PNAMLN
              PARAMETER           ( PNAMLN = 2  )

              INTEGER               TIMSLN
              PARAMETER           ( TIMSLN = 25 )

              INTEGER               TLELLN
              PARAMETER           ( TLELLN = 69 )

        C
        C     The TDRS-4 satellite is an Earth orbiting object; set
        C     the center ID to the Earth ID.
        C
              INTEGER               CENTER
              PARAMETER           ( CENTER  = 399     )

        C
        C     Local variables.
        C
              CHARACTER*(PNAMLN)    NOADPN ( 8  )
              CHARACTER*(TIMSLN)    TIMSTR
              CHARACTER*(TLELLN)    TLE    ( 2  )

              DOUBLE PRECISION      DELT
              DOUBLE PRECISION      ELEMS  ( 10 )
              DOUBLE PRECISION      EPOCH
              DOUBLE PRECISION      GEOPHS ( 8  )
              DOUBLE PRECISION      STATE  ( 6  )
              DOUBLE PRECISION      ET
              DOUBLE PRECISION      TF

              INTEGER               I
              INTEGER               N

        C
        C     These are the variables that will hold the constants
        C     required by DPSPCE. These constants are available from
        C     the loaded PCK file, which provides the actual values
        C     and units as used by NORAD propagation model.
        C
        C        Constant   Meaning
        C        --------   ------------------------------------------
        C        J2         J2 gravitational harmonic for Earth.
        C        J3         J3 gravitational harmonic for Earth.
        C        J4         J4 gravitational harmonic for Earth.
        C        KE         Square root of the GM for Earth.
        C        QO         High altitude bound for atmospheric model.
        C        SO         Low altitude bound for atmospheric model.
        C        ER         Equatorial radius of the Earth.
        C        AE         Distance units/earth radius.
        C
              DATA          NOADPN  /  'J2', 'J3', 'J4', 'KE',
             .                         'QO', 'SO', 'ER', 'AE'  /

        C
        C     Define the Two-Line Element set for TDRS-4.
        C
              TLE(1)  = '1 19883U 89021B   97133.05943164 -.00000277'
             .      //                   '  00000-0  10000-3 0  3315'
              TLE(2)  = '2 19883   0.5548  86.7278 0001786 312.2904 '
             .      //                   '172.2391  1.00269108202415'

        C
        C     Load the PCK file that provides the geophysical
        C     constants required for the evaluation of the two-line
        C     elements sets. Load also an LSK, as it is required by
        C     GETELM to perform time conversions. Use a meta-kernel for
        C     convenience.
        C
              CALL FURNSH ( 'dpspce_ex1.tm' )

        C
        C     Retrieve the data from the kernel, and place it on
        C     the GEOPHS array.
        C
              DO I = 1, 8

                 CALL BODVCD ( CENTER, NOADPN(I), 1, N, GEOPHS(I) )

              END DO

        C
        C     Convert the Two Line Elements lines to the element sets.
        C     Set the lower bound for the years to be the earliest
        C     first year for the elements.
        C
              CALL GETELM ( 1988, TLE, EPOCH, ELEMS )

        C
        C     Define the final time past epoch, 1400 mins (in seconds),
        C     the step size for elements output, 360 mins (in seconds),
        C     and the start time keyed off epoch.
        C
              TF   = 1440.D0 * 60.D0
              DELT = 360.D0  * 60.D0
              ET   = EPOCH - 4.D0 * DELT

        C
        C     Display the reference epoch for the elements.
        C
              CALL ET2UTC ( EPOCH, 'C', 3, TIMSTR )
              WRITE(*,'(2A)') 'Reference epoch: ', TIMSTR

        C
        C     Obtain the state at different epochs around the
        C     reference epoch.
        C
              DO WHILE ( DABS(TIME - EPOCH) .LE. DABS(TF) )

                 CALL DPSPCE ( ET, GEOPHS, ELEMS, STATE  )
                 CALL ET2UTC ( ET, 'C',    3,     TIMSTR )

                 WRITE(*,*)
                 WRITE(*,'(2A)')       'Time    : ', TIMSTR
                 WRITE(*,'(A,3F16.8)') 'Position: ', (STATE(I), I=1,3)
                 WRITE(*,'(A,3F16.8)') 'Velocity: ', (STATE(I), I=4,6)

                 ET = ET + DELT

              END DO

              END


        When this program was executed on a Mac/Intel/gfortran/64-bit
        platform, the output was:


        Reference epoch: 1997 MAY 13 01:25:34.894

        Time    : 1997 MAY 12 01:25:34.894
        Position:  -36415.06027922 -21268.27678598    324.63292275
        Velocity:       1.55019424     -2.65462811     -0.01618361

        Time    : 1997 MAY 12 07:25:34.894
        Position:   21403.92800065 -36329.04571718   -223.49047558
        Velocity:       2.64861127      1.56125103     -0.02363616

        Time    : 1997 MAY 12 13:25:34.894
        Position:   36222.44396185  21565.83478418   -323.53517502
        Velocity:      -1.57313376      2.64235356      0.01642601

        Time    : 1997 MAY 12 19:25:34.894
        Position:  -21736.44940088  36128.44906628    226.92953877
        Velocity:      -2.63481828     -1.58473777      0.02355544

        Time    : 1997 MAY 13 01:25:34.894
        Position:  -36048.19799634 -21884.57697027    322.54133293
        Velocity:       1.59511867     -2.62787056     -0.01665374

        Time    : 1997 MAY 13 07:25:34.894
        Position:   22018.52968309 -35959.79405656   -229.86590206
        Velocity:       2.62168498      1.60606852     -0.02347795

        Time    : 1997 MAY 13 13:25:34.894
        Position:   35850.58313589  22178.69474099   -321.27968318
        Velocity:      -1.61782447      2.61522408      0.01688604

        Time    : 1997 MAY 13 19:25:34.894
        Position:  -22347.26148339  35754.07411618    233.17456026
        Velocity:      -2.60750172     -1.62927167      0.02338424

        Time    : 1997 MAY 14 01:25:34.894
        Position:  -35671.56713967 -22493.50518477    320.10323846
        Velocity:       1.63950543     -2.60040084     -0.01710490

Restrictions

     None.

Literature_References

     [1]  F. Hoots and R. Roehrich, "Spacetrack Report #3: Models for
          Propagation of the NORAD Element Sets," U.S. Air Force
          Aerospace Defense Command, Colorado Springs, CO, 1980.

     [2]  F. Hoots, "Spacetrack Report #6: Models for Propagation of
          Space Command Element Sets,"  U.S. Air Force Aerospace
          Defense Command, Colorado Springs, CO, 1986.

     [3]  F. Hoots, P. Schumacher and R. Glover, "History of Analytical
          Orbit Modeling in the U. S. Space Surveillance System,"
          Journal of Guidance, Control, and Dynamics. 27(2):174-185,
          2004.

     [4]  D. Vallado, P. Crawford, R. Hujsak and T. Kelso, "Revisiting
          Spacetrack Report #3," paper AIAA 2006-6753 presented at the
          AIAA/AAS Astrodynamics Specialist Conference, Keystone, CO.,
          August 21-24, 2006.

Author_and_Institution

     J. Diaz del Rio    (ODC Space)
     W.L. Taber         (JPL)
     E.D. Wright        (JPL)

Version

    SPICELIB Version 2.1.0, 01-NOV-2021 (JDR) (EDW)

        Declared routine as deprecated.

        Changed input argument name "TIME" to "ET" for consistency
        with other routines.

        Corrected the description of QO and SO constants in the
        detailed description of the input argument GEOPHS and the input
        element names in ELEMS.

        Edited the header to comply with NAIF standard. Added complete
        code example based on existing fragments.

    SPICELIB Version 2.0.0, 23-JAN-2013 (EDW)

        Corrected initialization block error. The ZZDPINIT call
        causes a side-effect required for each DPSPCE call.
        The ZZDPINIT call now occurs outside the initialization
        block. Note from designer, side-effects are bad.

        Added proper citation for Hoots paper.

    SPICELIB Version 1.2.2, 22-AUG-2006 (EDW)

        Replaced references to LDPOOL with references
        to FURNSH.

    SPICELIB Version 1.2.1, 27-DEC-2000 (EDW)

        Corrected error in header documentation. Horner's Rule
        not Butcher's.

    SPICELIB Version 1.2.0, 24-MAR-1999 (EDW)

        Documentation expanded to include modifications made
        to private routines. Some English errors corrected.

        Alphabetized variable declaration lists.

        Temporary variable TEMP removed. OMGDOT argument added to
        ZZDPSEC call.

    SPICELIB Version 1.1.0, 05-OCT-1998 (WLT)

        Forced initialization section until we can figure out
        why it doesn't work on SUNs.

    SPICELIB Version 1.0.1, 11-MAR-1998 (EDW)

        Corrected error in header describing GEOPHS array.

    SPICELIB Version 1.0.0, 11-NOV-1998 (EDW)
Fri Dec 31 18:36:14 2021