void DLL_FUNC SGP4_init( double *params, const tle_t *tle) { deep_arg_t deep_arg; init_t init; double eeta, etasq; sxpx_common_init( params, tle, &init, &deep_arg); p_aodp = deep_arg.aodp; p_cosio = deep_arg.cosio; p_sinio = deep_arg.sinio; p_omgdot = deep_arg.omgdot; p_xmdot = deep_arg.xmdot; p_xnodot = deep_arg.xnodot; p_xnodp = deep_arg.xnodp; p_eta = deep_arg.aodp*tle->eo*init.tsi; // p_eta = init.eta; eeta = tle->eo*p_eta; /* For perigee less than 220 kilometers, the "simple" flag is set */ /* and the equations are truncated to linear variation in sqrt a */ /* and quadratic variation in mean anomaly. Also, the c3 term, */ /* the delta omega term, and the delta m term are dropped. */ simple_flag = ((p_aodp*(1-tle->eo)/ae) < (220./earth_radius_in_km+ae)); if( !simple_flag) { const double c1sq = c1*c1; double temp; simple_flag = 0; delmo = 1. + p_eta * cos(tle->xmo); delmo *= delmo * delmo; d2 = 4*p_aodp*init.tsi*c1sq; temp = d2*init.tsi*c1/3; d3 = (17*p_aodp+init.s4)*temp; d4 = 0.5*temp*p_aodp*init.tsi*(221*p_aodp+31*init.s4)*c1; t3cof = d2+2*c1sq; t4cof = 0.25*(3*d3+c1*(12*d2+10*c1sq)); t5cof = 0.2*(3*d4+12*c1*d3+6*d2*d2+15*c1sq*(2*d2+c1sq)); sinmo = sin(tle->xmo); if( tle->eo < MINIMAL_E) omgcof = xmcof = 0.; else { const double c3 = init.coef * init.tsi * a3ovk2 * p_xnodp * ae * p_sinio / tle->eo; xmcof = -two_thirds * init.coef * tle->bstar * ae / eeta; omgcof = tle->bstar*c3*cos(tle->omegao); } } /* End of if (isFlagClear(SIMPLE_FLAG)) */ etasq = p_eta * p_eta; c5 = 2*init.coef1*p_aodp * deep_arg.betao2*(1+2.75*(etasq+eeta)+eeta*etasq); } /* End of SGP4() initialization */
void DLL_FUNC SDP4_init( double *params, const tle_t *tle) { init_t init; sxpx_common_init( params, tle, &init, deep_arg); deep_arg->sing = sin(tle->omegao); deep_arg->cosg = cos(tle->omegao); /* initialize Deep() */ Deep_dpinit( tle, deep_arg); #ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH /* initialize lunisolar perturbations: */ deep_arg->t = 0.; /* added 30 Dec 2003 */ deep_arg->solar_lunar_init_flag = 1; Deep_dpper( deep_arg); deep_arg->solar_lunar_init_flag = 0; #endif } /*End of SDP4() initialization */