DeepPeriodics compiles.
parent
9d11955cbf
commit
f13a2975a5
164
SGDP4.cpp
164
SGDP4.cpp
|
@ -443,7 +443,7 @@ void SGDP4::DeepSpaceInitialize(const double& eosq, const double& sinio, const d
|
||||||
double sgh = 0.0;
|
double sgh = 0.0;
|
||||||
double shdq = 0.0;
|
double shdq = 0.0;
|
||||||
|
|
||||||
double bfact;
|
double bfact = 0.0;
|
||||||
|
|
||||||
double ZNS = 1.19459E-5;
|
double ZNS = 1.19459E-5;
|
||||||
double C1SS = 2.9864797E-6;
|
double C1SS = 2.9864797E-6;
|
||||||
|
@ -775,6 +775,98 @@ void SGDP4::DeepSpaceInitialize(const double& eosq, const double& sinio, const d
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* entrances for lunar-solar periodic
|
||||||
|
* entry dpper(em, xinc, omgasm, xnodes, xll)
|
||||||
|
*/
|
||||||
|
void SGDP4::DeepPeriodics(const double& sinio, const double& cosio, const double& t, double& em,
|
||||||
|
double& xinc, double& omgasm, double& xnodes, double& xll) {
|
||||||
|
|
||||||
|
double ZES = 0.01675;
|
||||||
|
double ZNS = 1.19459E-5;
|
||||||
|
double ZNL = 1.5835218E-4;
|
||||||
|
double ZEL = 0.05490;
|
||||||
|
|
||||||
|
double sghs = 0.0;
|
||||||
|
double shs = 0.0;
|
||||||
|
double sghl = 0.0;
|
||||||
|
double shl = 0.0;
|
||||||
|
double pe = 0.0;
|
||||||
|
double pinc = 0.0;
|
||||||
|
double pl = 0.0;
|
||||||
|
|
||||||
|
double sinis = sin(xinc);
|
||||||
|
double cosis = cos(xinc);
|
||||||
|
|
||||||
|
if (fabs(d_savtsn_ - t) >= 30.0) {
|
||||||
|
d_savtsn_ = t;
|
||||||
|
|
||||||
|
double zm = d_zmos_ + ZNS * t;
|
||||||
|
double zf = zm + 2.0 * ZES * sin(zm);
|
||||||
|
double sinzf = sin(zf);
|
||||||
|
double f2 = 0.5 * sinzf * sinzf - 0.25;
|
||||||
|
double f3 = -0.5 * sinzf * cos(zf);
|
||||||
|
double ses = d_se2_ * f2 + d_se3_ * f3;
|
||||||
|
double sis = d_si2_ * f2 + d_si3_ * f3;
|
||||||
|
double sls = d_sl2_ * f2 + d_sl3_ * f3 + d_sl4_ * sinzf;
|
||||||
|
|
||||||
|
sghs = d_sgh2_ * f2 + d_sgh3_ * f3 + d_sgh4_ * sinzf;
|
||||||
|
shs = d_sh2_ * f2 + d_sh3_ * f3;
|
||||||
|
zm = d_zmol_ + ZNL * t;
|
||||||
|
zf = zm + 2.0 * ZEL * sin(zm);
|
||||||
|
sinzf = sin(zf);
|
||||||
|
f2 = 0.5 * sinzf * sinzf - 0.25;
|
||||||
|
f3 = -0.5 * sinzf * cos(zf);
|
||||||
|
double sel = d_ee2_ * f2 + d_e3_ * f3;
|
||||||
|
double sil = d_xi2_ * f2 + d_xi3_ * f3;
|
||||||
|
double sll = d_xl2_ * f2 + d_xl3_ * f3 + d_xl4_ * sinzf;
|
||||||
|
sghl = d_xgh2_ * f2 + d_xgh3_ * f3 + d_xgh4_ * sinzf;
|
||||||
|
shl = d_xh2_ * f2 + d_xh3_ * f3;
|
||||||
|
pe = ses + sel;
|
||||||
|
pinc = sis + sil;
|
||||||
|
pl = sls + sll;
|
||||||
|
}
|
||||||
|
|
||||||
|
double pgh = sghs + sghl;
|
||||||
|
double ph = shs + shl;
|
||||||
|
|
||||||
|
xinc += pinc;
|
||||||
|
em += pe;
|
||||||
|
|
||||||
|
if (Inclination() >= 0.2) {
|
||||||
|
/*
|
||||||
|
* apply periodics directly
|
||||||
|
*/
|
||||||
|
ph /= sinio;
|
||||||
|
pgh -= cosio * ph;
|
||||||
|
omgasm += pgh;
|
||||||
|
xnodes += ph;
|
||||||
|
xll += pl;
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
* apply periodics with lyddane modification
|
||||||
|
*/
|
||||||
|
double sinok = sin(xnodes);
|
||||||
|
double cosok = cos(xnodes);
|
||||||
|
double alfdp = sinis * sinok;
|
||||||
|
double betdp = sinis * cosok;
|
||||||
|
double dalf = ph * cosok + pinc * cosis * sinok;
|
||||||
|
double dbet = -ph * sinok + pinc * cosis * cosok;
|
||||||
|
|
||||||
|
alfdp += dalf;
|
||||||
|
betdp += dbet;
|
||||||
|
|
||||||
|
double xls = xll + omgasm + cosis * xnodes;
|
||||||
|
double dls = pl + pgh - pinc * xnodes * sinis;
|
||||||
|
|
||||||
|
xls += dls;
|
||||||
|
xnodes = atan2(alfdp, betdp);
|
||||||
|
xll += pl;
|
||||||
|
omgasm = xls - xll - cos(xinc) * xnodes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
SUBROUTINE DEEP
|
SUBROUTINE DEEP
|
||||||
COMMON / E1 / XMO, XNODEO, OMEGAO, EO, XINCL, XNO, XNDT2O,
|
COMMON / E1 / XMO, XNODEO, OMEGAO, EO, XINCL, XNO, XNDT2O,
|
||||||
|
@ -911,74 +1003,4 @@ XNI = XNQ
|
||||||
XLI = XLAMO
|
XLI = XLAMO
|
||||||
GO TO 125
|
GO TO 125
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ENTRANCES FOR LUNAR-SOLAR PERIODICS
|
|
||||||
*/
|
|
||||||
ENTRY DPPER(EM, XINC, OMGASM, XNODES, XLL)
|
|
||||||
SINIS = SIN(XINC)
|
|
||||||
COSIS = COS(XINC)
|
|
||||||
IF(DABS(SAVTSN - T).LT.(30.D0)) GO TO 210
|
|
||||||
SAVTSN = T
|
|
||||||
ZM = ZMOS + ZNS * T
|
|
||||||
205 ZF = ZM + 2. * ZES * SIN(ZM)
|
|
||||||
SINZF = SIN(ZF)
|
|
||||||
F2 = .5 * SINZF * SINZF - .25
|
|
||||||
F3 = -.5 * SINZF * COS(ZF)
|
|
||||||
SES = SE2 * F2 + SE3*F3
|
|
||||||
SIS = SI2 * F2 + SI3*F3
|
|
||||||
SLS = SL2 * F2 + SL3 * F3 + SL4*SINZF
|
|
||||||
SGHS = SGH2 * F2 + SGH3 * F3 + SGH4*SINZF
|
|
||||||
SHS = SH2 * F2 + SH3*F3
|
|
||||||
ZM = ZMOL + ZNL*T
|
|
||||||
ZF = ZM + 2. * ZEL * SIN(ZM)
|
|
||||||
SINZF = SIN(ZF)
|
|
||||||
F2 = .5 * SINZF * SINZF - .25
|
|
||||||
F3 = -.5 * SINZF * COS(ZF)
|
|
||||||
SEL = EE2 * F2 + E3*F3
|
|
||||||
SIL = XI2 * F2 + XI3*F3
|
|
||||||
SLL = XL2 * F2 + XL3 * F3 + XL4*SINZF
|
|
||||||
SGHL = XGH2 * F2 + XGH3 * F3 + XGH4*SINZF
|
|
||||||
SHL = XH2 * F2 + XH3*F3
|
|
||||||
PE = SES + SEL
|
|
||||||
PINC = SIS + SIL
|
|
||||||
PL = SLS + SLL
|
|
||||||
210 PGH = SGHS + SGHL
|
|
||||||
PH = SHS + SHL
|
|
||||||
XINC = XINC + PINC
|
|
||||||
EM = EM + PE
|
|
||||||
IF(XQNCL.LT.(.2)) GO TO 220
|
|
||||||
GO TO 218
|
|
||||||
C
|
|
||||||
C APPLY PERIODICS DIRECTLY
|
|
||||||
C
|
|
||||||
218 PH = PH / SINIQ
|
|
||||||
PGH = PGH - COSIQ*PH
|
|
||||||
OMGASM = OMGASM + PGH
|
|
||||||
XNODES = XNODES + PH
|
|
||||||
XLL = XLL + PL
|
|
||||||
GO TO 230
|
|
||||||
C
|
|
||||||
C APPLY PERIODICS WITH LYDDANE MODIFICATION
|
|
||||||
C
|
|
||||||
220 SINOK = SIN(XNODES)
|
|
||||||
67
|
|
||||||
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
|
|
||||||
230 CONTINUE
|
|
||||||
RETURN
|
|
||||||
END
|
|
||||||
#endif
|
#endif
|
2
SGDP4.h
2
SGDP4.h
|
@ -28,6 +28,8 @@ private:
|
||||||
void DeepSpaceInitialize(const double& eosq, const double& sinio, const double& cosio, const double& betao,
|
void DeepSpaceInitialize(const double& eosq, const double& sinio, const double& cosio, const double& betao,
|
||||||
const double& theta2, const double& sing, const double& cosg, const double& betao2,
|
const double& theta2, const double& sing, const double& cosg, const double& betao2,
|
||||||
const double& xmdot, const double& omgdot, const double& xnodot);
|
const double& xmdot, const double& omgdot, const double& xnodot);
|
||||||
|
void DeepPeriodics(const double& sinio, const double& cosio, const double& t, double& em, double& xinc,
|
||||||
|
double& omgasm, double& xnodes, double& xll);
|
||||||
|
|
||||||
bool first_run_;
|
bool first_run_;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue