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