SDP4 algorithm

Curtis Haase (73007.2024@CompuServe.COM)
27 Mar 97 20:21:10 EST

Rainer Kracht wrote (1997 Mar 27):

>There is one more problem with the code of SDP4.
>
>Predictions with this elset
>
>GEO347
>1 99347U          95265.00000000  .00000000  00000-0  00000+0 0    01
>2 99347   8.2811 331.8258 1446848 258.4393 117.4767  1.00271834    02
>
>for my site (Elmshorn, +53.7695, +9.6626, 9m) are good for the night
>of 1995 Sep 21/22 (that is the time of the epoch) with SGP/SGP4, but
>they are about 4 degrees off with SDP4.
>
>I have now found, that this is due to flawed code at the end of the
>DEEP routine (DEEP.FOR in Spacetrack Report #3 or Procedure Deep in
>SGP4SDP4.PAS from TS Kelso). DEEP.FOR has there:
>

I was somewhat surprised by the large disagreement between SGP and the      
supposedly more accurate SDP4 model that was reported by Rainer. I tried
to reproduce the discrepancy using my own software, but I could find no
great difference between the output using SGP or SDP4 for the case he
mentioned.  But when I looked closely at Ranier's analysis of the problem
in the DEEP.FOR code, I ran across an inconsistency.  He stated,

>This causes an error of about 4 deg in the predictions, because
>XNODES and ACTAN(ALFDP,BETDP) are taken from different quadrants!
>
>XNODES is derived from the RAAN of the elset (331.8258), which is
>in the range of 0 to 360 deg. The ACTAN-function yields angles in
>the range of -180 to 180 deg.

Actually, the ACTAN function used in Space Track Report No. 3 "is a
two argument (quadrant preserving) arctangent subroutine which has been
specifically designed to return the angle within the range 0 to 2 pi",
i.e., 0 to 360 deg, not -180 to 180 deg.  I found that when the ACTAN 
function called by DEEP behaves in this manner, the correct value of 
OMGASM is computed (without any modifications to the DEEP code).
For reference, here is the FORTRAN code for ACTAN from SPACETRK.FOR:
      FUNCTION  ACTAN(SINX,COSX)
      COMMON/C2/DE2RA,PI,PIO2,TWOPI,X3PIO2
      ACTAN=0.
      IF (COSX.EQ.0.  ) GO TO 5
      IF (COSX.GT.0.  ) GO TO 1
      ACTAN=PI
      GO TO 7
    1 IF (SINX.EQ.0.  ) GO TO 8
      IF (SINX.GT.0.  ) GO TO 7
      ACTAN=TWOPI
      GO TO 7
    5 IF (SINX.EQ.0.  ) GO TO 8
       IF (SINX.GT.0.  ) GO TO 6
      ACTAN=X3PIO2
      GO TO 8
    6 ACTAN=PIO2
      GO TO 8
    7 TEMP=SINX/COSX
      ACTAN=ACTAN+ATAN(TEMP)
    8 RETURN
      END

The question of problems with SDP4 (and DEEP) is an interesting one.  I am
not a professional programmer and not connected with the aerospace industry,
but I wonder if any of the "insiders" in US Space Command might tell us if
they really are using a "corrected" version that differs from the code
published in Spacetrack Report No. 3 in 1980?

Thanks,

Curtis Haase
73007.2024@compuserve.com
Dallas, Texas