The SDP8 Model
The NORAD mean element sets can be used for prediction with SDP8. All symbols not defined below are defined in the list of symbols in Section Twelve. The original mean motion () and semimajor axis () are first recovered from the input elements by the equations
The ballistic coefficient ( term) is then calculated from the drag term by
where
is a reference value of atmospheric density.
Then calculate the constants
where all quantities are epoch values.
At this point SDP8 calls the initialization section of DEEP which calculates all initialized quantities needed for the deep-space perturbations (see Section Ten).
The secular effect of gravity is included in mean anomaly by
and the secular effects of gravity and atmospheric drag are included in argument of perigee and longitude of ascending node by
where
with
Next, SDP8 calls the secular section of DEEP which adds the deep-space secular effects and long-period resonance effects to the six classical orbital elements (see Section Ten).
The secular effects of drag are included in the remaining elements by
where , , are the values of , , after deep-space secular and resonance perturbations have been applied.
Here, SDP8 calls the periodics section of DEEP which adds the deep-space lunar and solar periodics to the orbital elements (see Section Ten). From this point on, it will be assumed that , , , , , and are the mean motion, eccentricity, inclination, argument of perigee, longitude of ascending node, and mean anomaly after lunar-solar periodics have been added.
Solve Kepler’s equation for by using the iteration equation
with
and
The following equations are used to calculate preliminary quantities needed for the short-period periodics.
The short-period periodics are added to give the osculating quantities
Unit orientation vectors are calculated by
where
Position and velocity are given by
A FORTRAN IV computer code listing of the subroutine SDP8 is given below.
FORTRAN Implementation
Section titled “FORTRAN Implementation”* SDP8 14 NOV 80 SUBROUTINE SDP8(IFLAG,TSINCE) COMMON/E1/XMO,XNODEO,OMEGAO,EO,XINCL,XNO,XNDT2O, 1 XNDD6O,BSTAR,X,Y,Z,XDOT,YDOT,ZDOT,EPOCH,DS50 COMMON/C1/CK2,CK4,E6A,QOMS2T,S,TOTHRD, 1 XJ3,XKE,XKMPER,XMNPDA,AE DOUBLE PRECISION EPOCH, DS50 DATA RHO/.15696615/C IF (IFLAG .EQ. 0) GO TO 100C* RECOVER ORIGINAL MEAN MOTION (XNODP) AND SEMIMAJOR AXIS (AODP)* FROM INPUT ELEMENTS --------- CALCULATE BALLISTIC COEFFICIENT* (B TERM) FROM INPUT B* DRAG TERMC A1=(XKE/XNO)**TOTHRD COSI=COS(XINCL) THETA2=COSI*COSI TTHMUN=3.*THETA2-1. EOSQ=EO*EO BETAO2=1.-EOSQ BETAO=SQRT(BETAO2) DEL1=1.5*CK2*TTHMUN/(A1*A1*BETAO*BETAO2) AO=A1*(1.-DEL1*(.5*TOTHRD+DEL1*(1.+134./81.*DEL1))) DELO=1.5*CK2*TTHMUN/(AO*AO*BETAO*BETAO2) AODP=AO/(1.-DELO) XNODP=XNO/(1.+DELO) B=2.*BSTAR/RHOC* INITIALIZATIONC PO=AODP*BETAO2 POM2=1./(PO*PO) SINI=SIN(XINCL) SING=SIN(OMEGAO) COSG=COS(OMEGAO) TEMP=.5*XINCL SINIO2=SIN(TEMP) COSIO2=COS(TEMP) THETA4=THETA2**2 UNM5TH=1.-5.*THETA2 UNMTH2=1.-THETA2 A3COF=-XJ3/CK2*AE**3 PARDT1=3.*CK2*POM2*XNODP PARDT2=PARDT1*CK2*POM2 PARDT4=1.25*CK4*POM2*POM2*XNODP XMDT1=.5*PARDT1*BETAO*TTHMUN XGDT1=-.5*PARDT1*UNM5TH XHDT1=-PARDT1*COSI XLLDOT=XNODP+XMDT1+ 2 .0625*PARDT2*BETAO*(13.-78.*THETA2+137.*THETA4) OMGDT=XGDT1+ 1 .0625*PARDT2*(7.-114.*THETA2+395.*THETA4)+PARDT4*(3.-36.* 2 THETA2+49.*THETA4) XNODOT=XHDT1+ 1 (.5*PARDT2*(4.-19.*THETA2)+2.*PARDT4*(3.-7.*THETA2))*COSI TSI=1./(PO-S) ETA=EO*S*TSI ETA2=ETA**2 PSIM2=ABS(1./(1.-ETA2)) ALPHA2=1.+EOSQ EETA=EO*ETA COS2G=2.*COSG**2-1. D5=TSI*PSIM2 D1=D5/PO D2=12.+ETA2*(36.+4.5*ETA2) D3=ETA2*(15.+2.5*ETA2) D4=ETA*(5.+3.75*ETA2) B1=CK2*TTHMUN B2=-CK2*UNMTH2 B3=A3COF*SINI C0=.5*B*RHO*QOMS2T*XNODP*AODP*TSI**4*PSIM2**3.5/SQRT(ALPHA2) C1=1.5*XNODP*ALPHA2**2*C0 C4=D1*D3*B2 C5=D5*D4*B3 XNDT=C1*( 1 (2.+ETA2*(3.+34.*EOSQ)+5.*EETA*(4.+ETA2)+8.5*EOSQ)+ 1 D1*D2*B1+ 1 C4*COS2G+C5*SING) XNDTN=XNDT/XNODP EDOT=-TOTHRD*XNDTN*(1.-EO) IFLAG=0 CALL DPINIT(EOSQ,SINI,COSI,BETAO,AODP,THETA2,SING,COSG, 1 BETAO2,XLLDOT,OMGDT,XNODOT,XNODP)C* UPDATE FOR SECULAR GRAVITY AND ATMOSPHERIC DRAGC 100 Z1=.5*XNDT*TSINCE*TSINCE Z7=3.5*TOTHRD*Z1/XNODP XMAMDF=XMO+XLLDOT*TSINCE OMGASM=OMEGAO+OMGDT*TSINCE+Z7*XGDT1 XNODES=XNODEO+XNODOT*TSINCE+Z7*XHDT1 XN=XNODP CALL DPSEC(XMAMDF,OMGASM,XNODES,EM,XINC,XN,TSINCE) XN=XN+XNDT*TSINCE EM=EM+EDOT*TSINCE XMAM=XMAMDF+Z1+Z7*XMDT1 CALL DPPER(EM,XINC,OMGASM,XNODES,XMAM) XMAM=FMOD2P(XMAM)C* SOLVE KEPLERS EQUATIONC ZC2=XMAM+EM*SIN(XMAM)*(1.+EM*COS(XMAM)) DO 130 I=1,10 SINE=SIN(ZC2) COSE=COS(ZC2) ZC5=1./(1.-EM*COSE) CAPE=(XMAM+EM*SINE-ZC2)* 1 ZC5+ZC2 IF(ABS(CAPE-ZC2) .LE. E6A) GO TO 140 130 ZC2=CAPEC* SHORT PERIOD PRELIMINARY QUANTITIESC 140 AM=(XKE/XN)**TOTHRD BETA2M=1.-EM*EM SINOS=SIN(OMGASM) COSOS=COS(OMGASM) AXNM=EM*COSOS AYNM=EM*SINOS PM=AM*BETA2M G1=1./PM G2=.5*CK2*G1 G3=G2*G1 BETA=SQRT(BETA2M) G4=.25*A3COF*SINI G5=.25*A3COF*G1 SNF=BETA*SINE*ZC5 CSF=(COSE-EM)*ZC5 FM=ACTAN(SNF,CSF) SNFG=SNF*COSOS+CSF*SINOS CSFG=CSF*COSOS-SNF*SINOS SN2F2G=2.*SNFG*CSFG CS2F2G=2.*CSFG**2-1. ECOSF=EM*CSF G10=FM-XMAM+EM*SNF RM=PM/(1.+ECOSF) AOVR=AM/RM G13=XN*AOVR G14=-G13*AOVR DR=G2*(UNMTH2*CS2F2G-3.*TTHMUN)-G4*SNFG DIWC=3.*G3*SINI*CS2F2G-G5*AYNM DI=DIWC*COSI SINI2=SIN(.5*XINC)C* UPDATE FOR SHORT PERIOD PERIODICSC SNI2DU=SINIO2*( 1 G3*(.5*(1.-7.*THETA2)*SN2F2G-3.*UNM5TH*G10)-G5*SINI*CSFG*(2.+ 2 ECOSF))-.5*G5*THETA2*AXNM/COSIO2 XLAMB=FM+OMGASM+XNODES+G3*(.5*(1.+6.*COSI-7.*THETA2)*SN2F2G-3.* 1 (UNM5TH+2.*COSI)*G10)+G5*SINI*(COSI*AXNM/(1.+COSI)-(2. 2 +ECOSF)*CSFG) Y4=SINI2*SNFG+CSFG*SNI2DU+.5*SNFG*COSIO2*DI Y5=SINI2*CSFG-SNFG*SNI2DU+.5*CSFG*COSIO2*DI R=RM+DR RDOT=XN*AM*EM*SNF/BETA+G14*(2.*G2*UNMTH2*SN2F2G+G4*CSFG) RVDOT=XN*AM**2*BETA/RM+ 1 G14*DR+AM*G13*SINI*DIWCC* ORIENTATION VECTORSC SNLAMB=SIN(XLAMB) CSLAMB=COS(XLAMB) TEMP=2.*(Y5*SNLAMB-Y4*CSLAMB) UX=Y4*TEMP+CSLAMB VX=Y5*TEMP-SNLAMB TEMP=2.*(Y5*CSLAMB+Y4*SNLAMB) UY=-Y4*TEMP+SNLAMB VY=-Y5*TEMP+CSLAMB TEMP=2.*SQRT(1.-Y4*Y4-Y5*Y5) UZ=Y4*TEMP VZ=Y5*TEMPC* POSITION AND VELOCITYC X=R*UX Y=R*UY Z=R*UZ XDOT=RDOT*UX+RVDOT*VX YDOT=RDOT*UY+RVDOT*VY ZDOT=RDOT*UZ+RVDOT*VZC RETURN END