Rob Matson wrote (1997 Mar 20): >I've just completed coding and initial debugging of the SDP4 algorithm for >inclusion in SkyMap. A word of warning to anyone who used Spacetrack Report >#3 to code the Deep Space routines -- the code is flawed! 4 variables are >passed to the deep space routines which the programmer obviously intended to >retain their values upon subsequent calls. Trouble is, these variables are >DUMMY variables within DEEP. Thus on subsequent calls, the variables will >have random, unpredictable values. >I have corrected this problem, and cleaned up the code somewhat to make it >easier to follow. I ran the SDP4 test cases from SR3 and the results differed >slightly from those published. However, my variables are all >double-precision, so I would expect differences. Plus, the test cases are >very close to epoch, so they're not good tests anyway. Presumably Space >Command long ago discovered this problem and fixed their code. 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: 220 SINOK=SIN(XNODES) COSOK=COS(XNODES) ALFDP=SINIS*SINOK BETDP=SINIS*COSOK DALF=PH*COSOK+PINC*COSIS*SINOK DBET=-PH*SINOK+PINC*COSIS*COSOK ALFDP=ALFDP+DALF BETDP=BETDP+DBET XLS = XLL+OMGASM+COSIS*XNODES DLS=PL+PGH-PINC*XNODES*SINIS XLS=XLS+DLS XNODES=ACTAN(ALFDP,BETDP) XLL = XLL+PL OMGASM = XLS-XLL-COS(XINC)*XNODES The last six lines can be rewritten as: OMGASM = OMGASM + PGH - PINC*XNODES*SINIS OMGASM = OMGASM + COSIS*XNODES - COS(XINC)*ACTAN(ALFDP,BETDP) With the above elset this evaluates at 1995 Sep 22.0 to: (with angles in degrees) OMGASM = OMGASM - 0.26 + 0.01 OMGASM = OMGASM + COS(8.2812)*331.8258 - COS(8.2637)*(-28.1842) = OMGASM + 328.3659 + 27.8916 = OMGASM + 356.2575 = OMGASM - 3.7425 deg 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. If we take both angles from the same quadrant, the change of OMGASM is COS(8.2812)*(-28.1742) - COS(8.2637)*(-28.1842) = +0.0111 deg! I have added XNODES=ACTAN(SINOK,COSOK) to DEEP.FOR to force XNODES to the same quadrant as ACTAN(ALFDP,BETDP). The new code is: 220 SINOK=SIN(XNODES) COSOK=COS(XNODES) ALFDP=SINIS*SINOK BETDP=SINIS*COSOK DALF=PH*COSOK+PINC*COSIS*SINOK DBET=-PH*SINOK+PINC*COSIS*COSOK ALFDP=ALFDP+DALF BETDP=BETDP+DBET XNODES=ACTAN(SINOK,COSOK) XLS = XLL+OMGASM+COSIS*XNODES DLS=PL+PGH-PINC*XNODES*SINIS XLS=XLS+DLS XNODES=ACTAN(ALFDP,BETDP) XLL = XLL+PL OMGASM = XLS-XLL-COS(XINC)*XNODES Predictions for GEO347 are now correct with the modified code. Rob Matson has pointed out to me that this is only a partial fix, we have to dig up the original paper(s): Hujsak, R.S. "A Restricted Four Body Solution for Resonating Satellites with an Oblate Earth", AIAA Paper No. 79-136, June 1979 and Hujsak, R.S. and Hoots, F.R., "Deep Space Perturbations Ephemeris Generation", Aerospace Defense Command Space Computational Center Program Documentation, DCD 8, Section 3, 82-104, September 1977. Perhaps someone can provide the URL's of these documents? Rainer