Compiles and DeepSecular is commented out
parent
7672ce2b56
commit
e271bb86c5
54
SGDP4.cpp
54
SGDP4.cpp
|
@ -185,6 +185,17 @@ void SGDP4::FindPosition(double tsince) {
|
||||||
double temp2;
|
double temp2;
|
||||||
double temp3;
|
double temp3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* if using deep space these variables get modified
|
||||||
|
*/
|
||||||
|
double local_x3thm1 = i_x3thm1_;
|
||||||
|
double local_x1mth2 = i_x1mth2_;
|
||||||
|
double local_x7thm1 = i_x7thm1_;
|
||||||
|
double local_cosio = i_cosio_;
|
||||||
|
double local_sinio = i_sinio_;
|
||||||
|
double local_xlcof = i_xlcof_;
|
||||||
|
double local_aycof = i_aycof_;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* local copies which we can safely modify
|
* local copies which we can safely modify
|
||||||
*/
|
*/
|
||||||
|
@ -220,7 +231,7 @@ void SGDP4::FindPosition(double tsince) {
|
||||||
tsince_eccentricity -= tempe;
|
tsince_eccentricity -= tempe;
|
||||||
double xmam = xmdf + RecoveredMeanMotion() * templ;
|
double xmam = xmdf + RecoveredMeanMotion() * templ;
|
||||||
|
|
||||||
DeepPeriodics(sinio_, cosio_, tsince, tsince_eccentricity,
|
DeepPeriodics(local_sinio, local_cosio, tsince, tsince_eccentricity,
|
||||||
tsince_inclination, tsince_arg_perigee, tsince_ascending_node, xmam);
|
tsince_inclination, tsince_arg_perigee, tsince_ascending_node, xmam);
|
||||||
|
|
||||||
xl = xmam + tsince_arg_perigee + xnode;
|
xl = xmam + tsince_arg_perigee + xnode;
|
||||||
|
@ -228,21 +239,21 @@ void SGDP4::FindPosition(double tsince) {
|
||||||
/*
|
/*
|
||||||
* re-compute the perturbed values
|
* re-compute the perturbed values
|
||||||
*/
|
*/
|
||||||
sinio_ = sin(tsince_inclination);
|
local_sinio = sin(tsince_inclination);
|
||||||
cosio_ = cos(tsince_inclination);
|
local_cosio = cos(tsince_inclination);
|
||||||
|
|
||||||
double theta2 = cosio_ * cosio_;
|
double theta2 = local_cosio * local_cosio;
|
||||||
|
|
||||||
x3thm1_ = 3.0 * theta2 - 1.0;
|
local_x3thm1 = 3.0 * theta2 - 1.0;
|
||||||
x1mth2_ = 1.0 - theta2;
|
local_x1mth2 = 1.0 - theta2;
|
||||||
x7thm1_ = 7.0 * theta2 - 1.0;
|
local_x7thm1 = 7.0 * theta2 - 1.0;
|
||||||
|
|
||||||
if (fabs(cosio_ + 1.0) > 1.5e-12)
|
if (fabs(local_cosio + 1.0) > 1.5e-12)
|
||||||
xlcof_ = 0.125 * i_a3ovk2_ * sinio_ * (3.0 + 5.0 * cosio_) / (1.0 + cosio_);
|
local_xlcof = 0.125 * i_a3ovk2_ * local_sinio * (3.0 + 5.0 * local_cosio) / (1.0 + local_cosio);
|
||||||
else
|
else
|
||||||
xlcof_ = 0.125 * i_a3ovk2_ * sinio_ * (3.0 + 5.0 * cosio_) / 1.5e-12;
|
local_xlcof = 0.125 * i_a3ovk2_ * local_sinio * (3.0 + 5.0 * local_cosio) / 1.5e-12;
|
||||||
|
|
||||||
aycof_ = 0.25 * i_a3ovk2_ * sinio_;
|
local_aycof = 0.25 * i_a3ovk2_ * local_sinio;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
double xmp = xmdf;
|
double xmp = xmdf;
|
||||||
|
@ -287,8 +298,8 @@ void SGDP4::FindPosition(double tsince) {
|
||||||
*/
|
*/
|
||||||
double axn = tsince_eccentricity * cos(tsince_arg_perigee);
|
double axn = tsince_eccentricity * cos(tsince_arg_perigee);
|
||||||
temp = 1.0 / (a * beta * beta);
|
temp = 1.0 / (a * beta * beta);
|
||||||
double xll = temp * xlcof_ * axn;
|
double xll = temp * local_xlcof * axn;
|
||||||
double aynl = temp * aycof_;
|
double aynl = temp * local_aycof;
|
||||||
double xlt = xl + xll;
|
double xlt = xl + xll;
|
||||||
double ayn = tsince_eccentricity * sin(tsince_arg_perigee) + aynl;
|
double ayn = tsince_eccentricity * sin(tsince_arg_perigee) + aynl;
|
||||||
double elsq = axn * axn + ayn * ayn;
|
double elsq = axn * axn + ayn * ayn;
|
||||||
|
@ -342,7 +353,7 @@ void SGDP4::FindPosition(double tsince) {
|
||||||
* f / (df - 0.5 * d2f * f/df)
|
* f / (df - 0.5 * d2f * f/df)
|
||||||
*/
|
*/
|
||||||
if (i == 0 && fabs(nr) > 1.25 * maxnr)
|
if (i == 0 && fabs(nr) > 1.25 * maxnr)
|
||||||
nr = fabs(maxnr, nr);
|
nr = nr >= 0.0 ? fabs(maxnr) : -fabs(maxnr);
|
||||||
else
|
else
|
||||||
nr = f / (df + 0.5 * esine * nr);
|
nr = f / (df + 0.5 * esine * nr);
|
||||||
|
|
||||||
|
@ -376,12 +387,12 @@ void SGDP4::FindPosition(double tsince) {
|
||||||
temp = 1.0 / pl;
|
temp = 1.0 / pl;
|
||||||
temp1 = Globals::CK2() * temp;
|
temp1 = Globals::CK2() * temp;
|
||||||
temp2 = temp1 * temp;
|
temp2 = temp1 * temp;
|
||||||
double rk = r * (1.0 - 1.5 * temp2 * betal * x3thm1_) + 0.5 * temp1 * x1mth2_ * cos2u;
|
double rk = r * (1.0 - 1.5 * temp2 * betal * local_x3thm1) + 0.5 * temp1 * local_x1mth2 * cos2u;
|
||||||
double uk = u - 0.25 * temp2 * x7thm1_ * sin2u;
|
double uk = u - 0.25 * temp2 * local_x7thm1 * sin2u;
|
||||||
double xnodek = xnode + 1.5 * temp2 * cosio_ * sin2u;
|
double xnodek = xnode + 1.5 * temp2 * local_cosio * sin2u;
|
||||||
double xinck = tsince_inclination + 1.5 * temp2 * cosio_ * sinio_ * cos2u;
|
double xinck = tsince_inclination + 1.5 * temp2 * local_cosio * local_sinio * cos2u;
|
||||||
double rdotk = rdot - xn * temp1 * x1mth2_ * sin2u;
|
double rdotk = rdot - xn * temp1 * local_x1mth2 * sin2u;
|
||||||
double rfdotk = rfdot + xn * temp1 * (x1mth2_ * cos2u + 1.5 * x3thm1_);
|
double rfdotk = rfdot + xn * temp1 * (local_x1mth2 * cos2u + 1.5 * local_x3thm1);
|
||||||
|
|
||||||
if (rk < 0.0) {
|
if (rk < 0.0) {
|
||||||
throw new SatelliteException("Error: satellite decayed (rk < 0.0)");
|
throw new SatelliteException("Error: satellite decayed (rk < 0.0)");
|
||||||
|
@ -489,7 +500,6 @@ void SGDP4::DeepSpaceInitialize(const double& eosq, const double& sinio, const d
|
||||||
/*
|
/*
|
||||||
* do solar terms
|
* do solar terms
|
||||||
*/
|
*/
|
||||||
d_savtsn_ = 1.0e20;
|
|
||||||
double zcosg = ZCOSGS;
|
double zcosg = ZCOSGS;
|
||||||
double zsing = ZSINGS;
|
double zsing = ZSINGS;
|
||||||
double zcosi = ZCOSIS;
|
double zcosi = ZCOSIS;
|
||||||
|
@ -854,6 +864,7 @@ void SGDP4::DeepPeriodics(const double& sinio, const double& cosio, const double
|
||||||
ENTRY DPSEC(XLL,OMGASM,XNODES,EM,XINC,XN,T)
|
ENTRY DPSEC(XLL,OMGASM,XNODES,EM,XINC,XN,T)
|
||||||
*/
|
*/
|
||||||
void SGDP4::DeepSecular() {
|
void SGDP4::DeepSecular() {
|
||||||
|
#if 0
|
||||||
/*
|
/*
|
||||||
* passed in
|
* passed in
|
||||||
*/
|
*/
|
||||||
|
@ -971,4 +982,5 @@ void SGDP4::DeepSecular() {
|
||||||
xll = xl + temp + temp;
|
xll = xl + temp + temp;
|
||||||
else
|
else
|
||||||
xll = xl - omgasm + temp;
|
xll = xl - omgasm + temp;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue