Compiles and DeepSecular is commented out

feature/19
Daniel Warner 2011-03-27 14:52:13 +01:00
parent 7672ce2b56
commit e271bb86c5
1 changed files with 33 additions and 21 deletions

View File

@ -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
} }