52 #define UNUSED(arg) (void)arg;
57 double e3,
double ee2,
double peo,
double pgho,
double pho,
58 double pinco,
double plo,
double se2,
double se3,
double sgh2,
59 double sgh3,
double sgh4,
double sh2,
double sh3,
double si2,
60 double si3,
double sl2,
double sl3,
double sl4,
double t,
61 double xgh2,
double xgh3,
double xgh4,
double xh2,
double xh3,
62 double xi2,
double xi3,
double xl2,
double xl3,
double xl4,
63 double zmol,
double zmos,
double inclo,
65 double& ep,
double& inclp,
double& nodep,
double& argpp,
double& mp,
71 double epoch,
double ep,
double argpp,
double tc,
double inclp,
72 double nodep,
double np,
73 double& snodm,
double& cnodm,
double& sinim,
double& cosim,
double& sinomm,
74 double& cosomm,
double& day,
double& e3,
double& ee2,
double& em,
75 double& emsq,
double& gam,
double& peo,
double& pgho,
double& pho,
76 double& pinco,
double& plo,
double& rtemsq,
double& se2,
double& se3,
77 double& sgh2,
double& sgh3,
double& sgh4,
double& sh2,
double& sh3,
78 double& si2,
double& si3,
double& sl2,
double& sl3,
double& sl4,
79 double& s1,
double& s2,
double& s3,
double& s4,
double& s5,
80 double& s6,
double& s7,
double& ss1,
double& ss2,
double& ss3,
81 double& ss4,
double& ss5,
double& ss6,
double& ss7,
double& sz1,
82 double& sz2,
double& sz3,
double& sz11,
double& sz12,
double& sz13,
83 double& sz21,
double& sz22,
double& sz23,
double& sz31,
double& sz32,
84 double& sz33,
double& xgh2,
double& xgh3,
double& xgh4,
double& xh2,
85 double& xh3,
double& xi2,
double& xi3,
double& xl2,
double& xl3,
86 double& xl4,
double& nm,
double& z1,
double& z2,
double& z3,
87 double& z11,
double& z12,
double& z13,
double& z21,
double& z22,
88 double& z23,
double& z31,
double& z32,
double& z33,
double& zmol,
95 double cosim,
double emsq,
double argpo,
double s1,
double s2,
96 double s3,
double s4,
double s5,
double sinim,
double ss1,
97 double ss2,
double ss3,
double ss4,
double ss5,
double sz1,
98 double sz3,
double sz11,
double sz13,
double sz21,
double sz23,
99 double sz31,
double sz33,
double t,
double tc,
double gsto,
100 double mo,
double mdot,
double no,
double nodeo,
double nodedot,
101 double xpidot,
double z1,
double z3,
double z11,
double z13,
102 double z21,
double z23,
double z31,
double z33,
double ecco,
103 double eccsq,
double& em,
double& argpm,
double& inclm,
double& mm,
104 double& nm,
double& nodem,
106 double& atime,
double& d2201,
double& d2211,
double& d3210,
double& d3222,
107 double& d4410,
double& d4422,
double& d5220,
double& d5232,
double& d5421,
108 double& d5433,
double& dedt,
double& didt,
double& dmdt,
double& dndt,
109 double& dnodt,
double& domdt,
double& del1,
double& del2,
double& del3,
110 double& xfact,
double& xlamo,
double& xli,
double& xni
116 double d2201,
double d2211,
double d3210,
double d3222,
double d4410,
117 double d4422,
double d5220,
double d5232,
double d5421,
double d5433,
118 double dedt,
double del1,
double del2,
double del3,
double didt,
119 double dmdt,
double dnodt,
double domdt,
double argpo,
double argpdot,
120 double t,
double tc,
double gsto,
double xfact,
double xlamo,
122 double& atime,
double& em,
double& argpm,
double& inclm,
double& xli,
123 double& mm,
double& xni,
double& nodem,
double& dndt,
double& nm
129 double ecco,
double epoch,
double inclo,
double& no,
131 double& ainv,
double& ao,
double& con41,
double& con42,
double& cosio,
132 double& cosio2,
double& eccsq,
double& omeosq,
double& posq,
133 double& rp,
double& rteosq,
double& sinio ,
double& gsto,
char opsmode
205 double e3,
double ee2,
double peo,
double pgho,
double pho,
206 double pinco,
double plo,
double se2,
double se3,
double sgh2,
207 double sgh3,
double sgh4,
double sh2,
double sh3,
double si2,
208 double si3,
double sl2,
double sl3,
double sl4,
double t,
209 double xgh2,
double xgh3,
double xgh4,
double xh2,
double xh3,
210 double xi2,
double xi3,
double xl2,
double xl3,
double xl4,
211 double zmol,
double zmos,
double inclo,
213 double& ep,
double& inclp,
double& nodep,
double& argpp,
double& mp,
219 const double twopi = 2.0 *
M_PI;
220 double alfdp, betdp, cosip, cosop, dalf, dbet, dls,
221 f2, f3, pe, pgh, ph, pinc, pl ,
222 sel, ses, sghl, sghs, shll, shs, sil,
223 sinip, sinop, sinzf, sis, sll, sls, xls,
224 xnoh, zf, zm, zel, zes, znl, zns;
237 zf = zm + 2.0 * zes * sin(zm);
239 f2 = 0.5 * sinzf * sinzf - 0.25;
240 f3 = -0.5 * sinzf * cos(zf);
241 ses = se2* f2 + se3 * f3;
242 sis = si2 * f2 + si3 * f3;
243 sls = sl2 * f2 + sl3 * f3 + sl4 * sinzf;
244 sghs = sgh2 * f2 + sgh3 * f3 + sgh4 * sinzf;
245 shs = sh2 * f2 + sh3 * f3;
249 zf = zm + 2.0 * zel * sin(zm);
251 f2 = 0.5 * sinzf * sinzf - 0.25;
252 f3 = -0.5 * sinzf * cos(zf);
253 sel = ee2 * f2 + e3 * f3;
254 sil = xi2 * f2 + xi3 * f3;
255 sll = xl2 * f2 + xl3 * f3 + xl4 * sinzf;
256 sghl = xgh2 * f2 + xgh3 * f3 + xgh4 * sinzf;
257 shll = xh2 * f2 + xh3 * f3;
271 inclp = inclp + pinc;
288 pgh = pgh - cosip * ph;
298 alfdp = sinip * sinop;
299 betdp = sinip * cosop;
300 dalf = ph * cosop + pinc * cosip * sinop;
301 dbet = -ph * sinop + pinc * cosip * cosop;
302 alfdp = alfdp + dalf;
303 betdp = betdp + dbet;
304 nodep = fmod(nodep, twopi);
307 if ((nodep < 0.0) && (opsmode ==
'a')) {
308 nodep = nodep + twopi;
310 xls = mp + argpp + cosip * nodep;
311 dls = pl + pgh - pinc * nodep * sinip;
314 nodep = atan2(alfdp, betdp);
317 if ((nodep < 0.0) && (opsmode ==
'a')) {
318 nodep = nodep + twopi;
320 if (fabs(xnoh - nodep) >
M_PI) {
322 nodep = nodep + twopi;
325 nodep = nodep - twopi;
329 argpp = xls - mp - cosip * nodep;
406 double epoch,
double ep,
double argpp,
double tc,
double inclp,
407 double nodep,
double np,
408 double& snodm,
double& cnodm,
double& sinim,
double& cosim,
double& sinomm,
409 double& cosomm,
double& day,
double& e3,
double& ee2,
double& em,
410 double& emsq,
double& gam,
double& peo,
double& pgho,
double& pho,
411 double& pinco,
double& plo,
double& rtemsq,
double& se2,
double& se3,
412 double& sgh2,
double& sgh3,
double& sgh4,
double& sh2,
double& sh3,
413 double& si2,
double& si3,
double& sl2,
double& sl3,
double& sl4,
414 double& s1,
double& s2,
double& s3,
double& s4,
double& s5,
415 double& s6,
double& s7,
double& ss1,
double& ss2,
double& ss3,
416 double& ss4,
double& ss5,
double& ss6,
double& ss7,
double& sz1,
417 double& sz2,
double& sz3,
double& sz11,
double& sz12,
double& sz13,
418 double& sz21,
double& sz22,
double& sz23,
double& sz31,
double& sz32,
419 double& sz33,
double& xgh2,
double& xgh3,
double& xgh4,
double& xh2,
420 double& xh3,
double& xi2,
double& xi3,
double& xl2,
double& xl3,
421 double& xl4,
double& nm,
double& z1,
double& z2,
double& z3,
422 double& z11,
double& z12,
double& z13,
double& z21,
double& z22,
423 double& z23,
double& z31,
double& z32,
double& z33,
double& zmol,
428 const double zes = 0.01675;
429 const double zel = 0.05490;
430 const double c1ss = 2.9864797e-6;
431 const double c1l = 4.7968065e-7;
432 const double zsinis = 0.39785416;
433 const double zcosis = 0.91744867;
434 const double zcosgs = 0.1945905;
435 const double zsings = -0.98088458;
436 const double twopi = 2.0 *
M_PI;
440 double a1 , a2 , a3 , a4 , a5 , a6 , a7 ,
441 a8 , a9 , a10 , betasq, cc , ctem , stem ,
442 x1 , x2 , x3 , x4 , x5 , x6 , x7 ,
443 x8 , xnodce, xnoi , zcosg , zcosgl, zcosh , zcoshl,
444 zcosi , zcosil, zsing , zsingl, zsinh , zsinhl, zsini ,
457 rtemsq = sqrt(betasq);
465 day = epoch + 18261.5 + tc / 1440.0;
466 xnodce = fmod(4.5236020 - 9.2422029e-4 * day, twopi);
469 zcosil = 0.91375164 - 0.03568096 * ctem;
470 zsinil = sqrt(1.0 - zcosil * zcosil);
471 zsinhl = 0.089683511 * stem / zsinil;
472 zcoshl = sqrt(1.0 - zsinhl * zsinhl);
473 gam = 5.8351514 + 0.0019443680 * day;
474 zx = 0.39785416 * stem / zsinil;
475 zy = zcoshl * ctem + 0.91744867 * zsinhl * stem;
477 zx = gam + zx - xnodce;
491 for (lsflg = 1; lsflg <= 2; lsflg++)
493 a1 = zcosg * zcosh + zsing * zcosi * zsinh;
494 a3 = -zsing * zcosh + zcosg * zcosi * zsinh;
495 a7 = -zcosg * zsinh + zsing * zcosi * zcosh;
497 a9 = zsing * zsinh + zcosg * zcosi * zcosh;
499 a2 = cosim * a7 + sinim * a8;
500 a4 = cosim * a9 + sinim * a10;
501 a5 = -sinim * a7 + cosim * a8;
502 a6 = -sinim * a9 + cosim * a10;
504 x1 = a1 * cosomm + a2 * sinomm;
505 x2 = a3 * cosomm + a4 * sinomm;
506 x3 = -a1 * sinomm + a2 * cosomm;
507 x4 = -a3 * sinomm + a4 * cosomm;
513 z31 = 12.0 * x1 * x1 - 3.0 * x3 * x3;
514 z32 = 24.0 * x1 * x2 - 6.0 * x3 * x4;
515 z33 = 12.0 * x2 * x2 - 3.0 * x4 * x4;
516 z1 = 3.0 * (a1 * a1 + a2 * a2) + z31 * emsq;
517 z2 = 6.0 * (a1 * a3 + a2 * a4) + z32 * emsq;
518 z3 = 3.0 * (a3 * a3 + a4 * a4) + z33 * emsq;
519 z11 = -6.0 * a1 * a5 + emsq * (-24.0 * x1 * x7-6.0 * x3 * x5);
520 z12 = -6.0 * (a1 * a6 + a3 * a5) + emsq *
521 (-24.0 * (x2 * x7 + x1 * x8) - 6.0 * (x3 * x6 + x4 * x5));
522 z13 = -6.0 * a3 * a6 + emsq * (-24.0 * x2 * x8 - 6.0 * x4 * x6);
523 z21 = 6.0 * a2 * a5 + emsq * (24.0 * x1 * x5 - 6.0 * x3 * x7);
524 z22 = 6.0 * (a4 * a5 + a2 * a6) + emsq *
525 (24.0 * (x2 * x5 + x1 * x6) - 6.0 * (x4 * x7 + x3 * x8));
526 z23 = 6.0 * a4 * a6 + emsq * (24.0 * x2 * x6 - 6.0 * x4 * x8);
527 z1 = z1 + z1 + betasq * z31;
528 z2 = z2 + z2 + betasq * z32;
529 z3 = z3 + z3 + betasq * z33;
531 s2 = -0.5 * s3 / rtemsq;
533 s1 = -15.0 * em * s4;
534 s5 = x1 * x3 + x2 * x4;
535 s6 = x2 * x3 + x1 * x4;
536 s7 = x2 * x4 - x1 * x3;
564 zcosh = zcoshl * cnodm + zsinhl * snodm;
565 zsinh = snodm * zcoshl - cnodm * zsinhl;
570 zmol = fmod(4.7199672 + 0.22997150 * day - gam, twopi);
571 zmos = fmod(6.2565837 + 0.017201977 * day, twopi);
574 se2 = 2.0 * ss1 * ss6;
575 se3 = 2.0 * ss1 * ss7;
576 si2 = 2.0 * ss2 * sz12;
577 si3 = 2.0 * ss2 * (sz13 - sz11);
578 sl2 = -2.0 * ss3 * sz2;
579 sl3 = -2.0 * ss3 * (sz3 - sz1);
580 sl4 = -2.0 * ss3 * (-21.0 - 9.0 * emsq) * zes;
581 sgh2 = 2.0 * ss4 * sz32;
582 sgh3 = 2.0 * ss4 * (sz33 - sz31);
583 sgh4 = -18.0 * ss4 * zes;
584 sh2 = -2.0 * ss2 * sz22;
585 sh3 = -2.0 * ss2 * (sz23 - sz21);
590 xi2 = 2.0 * s2 * z12;
591 xi3 = 2.0 * s2 * (z13 - z11);
592 xl2 = -2.0 * s3 * z2;
593 xl3 = -2.0 * s3 * (z3 - z1);
594 xl4 = -2.0 * s3 * (-21.0 - 9.0 * emsq) * zel;
595 xgh2 = 2.0 * s4 * z32;
596 xgh3 = 2.0 * s4 * (z33 - z31);
597 xgh4 = -18.0 * s4 * zel;
598 xh2 = -2.0 * s2 * z22;
599 xh3 = -2.0 * s2 * (z23 - z21);
687 double cosim,
double emsq,
double argpo,
double s1,
double s2,
688 double s3,
double s4,
double s5,
double sinim,
double ss1,
689 double ss2,
double ss3,
double ss4,
double ss5,
double sz1,
690 double sz3,
double sz11,
double sz13,
double sz21,
double sz23,
691 double sz31,
double sz33,
double t,
double tc,
double gsto,
692 double mo,
double mdot,
double no,
double nodeo,
double nodedot,
693 double xpidot,
double z1,
double z3,
double z11,
double z13,
694 double z21,
double z23,
double z31,
double z33,
double ecco,
695 double eccsq,
double& em,
double& argpm,
double& inclm,
double& mm,
696 double& nm,
double& nodem,
698 double& atime,
double& d2201,
double& d2211,
double& d3210,
double& d3222,
699 double& d4410,
double& d4422,
double& d5220,
double& d5232,
double& d5421,
700 double& d5433,
double& dedt,
double& didt,
double& dmdt,
double& dndt,
701 double& dnodt,
double& domdt,
double& del1,
double& del2,
double& del3,
702 double& xfact,
double& xlamo,
double& xli,
double& xni
706 const double twopi = 2.0 *
M_PI;
708 double ainv2 , aonv=0.0, cosisq, eoc, f220 , f221 , f311 ,
709 f321 , f322 , f330 , f441 , f442 , f522 , f523 ,
710 f542 , f543 , g200 , g201 , g211 , g300 , g310 ,
711 g322 , g410 , g422 , g520 , g521 , g532 , g533 ,
712 ses , sgs , sghl , sghs , shs , shll , sis ,
713 sini2 , sls , temp , temp1 , theta , xno2 , q22 ,
714 q31 , q33 , root22, root44, root54, rptim , root32,
715 root52, x2o3 , xke , znl , emo , zns , emsqo,
716 tumin, mu, radiusearthkm, j2, j3, j4, j3oj2;
721 root22 = 1.7891679e-6;
722 root44 = 7.3636953e-9;
723 root54 = 2.1765803e-9;
724 rptim = 4.37526908801129966e-3;
725 root32 = 3.7393792e-7;
726 root52 = 1.1428639e-7;
732 getgravconst( whichconst, tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2 );
736 if ((nm < 0.0052359877) && (nm > 0.0034906585))
738 if ((nm >= 8.26e-3) && (nm <= 9.24e-3) && (em >= 0.5))
742 ses = ss1 * zns * ss5;
743 sis = ss2 * zns * (sz11 + sz13);
744 sls = -zns * ss3 * (sz1 + sz3 - 14.0 - 6.0 * emsq);
745 sghs = ss4 * zns * (sz31 + sz33 - 6.0);
746 shs = -zns * ss2 * (sz21 + sz23);
748 if ((inclm < 5.2359877e-2) || (inclm >
M_PI - 5.2359877e-2))
752 sgs = sghs - cosim * shs;
755 dedt = ses + s1 * znl * s5;
756 didt = sis + s2 * znl * (z11 + z13);
757 dmdt = sls - znl * s3 * (z1 + z3 - 14.0 - 6.0 * emsq);
758 sghl = s4 * znl * (z31 + z33 - 6.0);
759 shll = -znl * s2 * (z21 + z23);
761 if ((inclm < 5.2359877e-2) || (inclm >
M_PI - 5.2359877e-2))
767 domdt = domdt - cosim / sinim * shll;
768 dnodt = dnodt + shll / sinim;
773 theta = fmod(gsto + tc * rptim, twopi);
775 inclm = inclm + didt * t;
776 argpm = argpm + domdt * t;
777 nodem = nodem + dnodt * t;
791 aonv = pow(nm / xke, x2o3);
796 cosisq = cosim * cosim;
802 g201 = -0.306 - (em - 0.64) * 0.440;
806 g211 = 3.616 - 13.2470 * em + 16.2900 * emsq;
807 g310 = -19.302 + 117.3900 * em - 228.4190 * emsq + 156.5910 * eoc;
808 g322 = -18.9068 + 109.7927 * em - 214.6334 * emsq + 146.5816 * eoc;
809 g410 = -41.122 + 242.6940 * em - 471.0940 * emsq + 313.9530 * eoc;
810 g422 = -146.407 + 841.8800 * em - 1629.014 * emsq + 1083.4350 * eoc;
811 g520 = -532.114 + 3017.977 * em - 5740.032 * emsq + 3708.2760 * eoc;
815 g211 = -72.099 + 331.819 * em - 508.738 * emsq + 266.724 * eoc;
816 g310 = -346.844 + 1582.851 * em - 2415.925 * emsq + 1246.113 * eoc;
817 g322 = -342.585 + 1554.908 * em - 2366.899 * emsq + 1215.972 * eoc;
818 g410 = -1052.797 + 4758.686 * em - 7193.992 * emsq + 3651.957 * eoc;
819 g422 = -3581.690 + 16178.110 * em - 24462.770 * emsq + 12422.520 * eoc;
821 g520 =-5149.66 + 29936.92 * em - 54087.36 * emsq + 31324.56 * eoc;
823 g520 = 1464.74 - 4664.75 * em + 3763.64 * emsq;
827 g533 = -919.22770 + 4988.6100 * em - 9064.7700 * emsq + 5542.21 * eoc;
828 g521 = -822.71072 + 4568.6173 * em - 8491.4146 * emsq + 5337.524 * eoc;
829 g532 = -853.66600 + 4690.2500 * em - 8624.7700 * emsq + 5341.4 * eoc;
833 g533 =-37995.780 + 161616.52 * em - 229838.20 * emsq + 109377.94 * eoc;
834 g521 =-51752.104 + 218913.95 * em - 309468.16 * emsq + 146349.42 * eoc;
835 g532 =-40023.880 + 170470.89 * em - 242699.48 * emsq + 115605.82 * eoc;
838 sini2= sinim * sinim;
839 f220 = 0.75 * (1.0 + 2.0 * cosim+cosisq);
841 f321 = 1.875 * sinim * (1.0 - 2.0 * cosim - 3.0 * cosisq);
842 f322 = -1.875 * sinim * (1.0 + 2.0 * cosim - 3.0 * cosisq);
843 f441 = 35.0 * sini2 * f220;
844 f442 = 39.3750 * sini2 * sini2;
845 f522 = 9.84375 * sinim * (sini2 * (1.0 - 2.0 * cosim- 5.0 * cosisq) +
846 0.33333333 * (-2.0 + 4.0 * cosim + 6.0 * cosisq) );
847 f523 = sinim * (4.92187512 * sini2 * (-2.0 - 4.0 * cosim +
848 10.0 * cosisq) + 6.56250012 * (1.0+2.0 * cosim - 3.0 * cosisq));
849 f542 = 29.53125 * sinim * (2.0 - 8.0 * cosim+cosisq *
850 (-12.0 + 8.0 * cosim + 10.0 * cosisq));
851 f543 = 29.53125 * sinim * (-2.0 - 8.0 * cosim+cosisq *
852 (12.0 + 8.0 * cosim - 10.0 * cosisq));
855 temp1 = 3.0 * xno2 * ainv2;
856 temp = temp1 * root22;
857 d2201 = temp * f220 * g201;
858 d2211 = temp * f221 * g211;
859 temp1 = temp1 * aonv;
860 temp = temp1 * root32;
861 d3210 = temp * f321 * g310;
862 d3222 = temp * f322 * g322;
863 temp1 = temp1 * aonv;
864 temp = 2.0 * temp1 * root44;
865 d4410 = temp * f441 * g410;
866 d4422 = temp * f442 * g422;
867 temp1 = temp1 * aonv;
868 temp = temp1 * root52;
869 d5220 = temp * f522 * g520;
870 d5232 = temp * f523 * g532;
871 temp = 2.0 * temp1 * root54;
872 d5421 = temp * f542 * g521;
873 d5433 = temp * f543 * g533;
874 xlamo = fmod(mo + nodeo + nodeo-theta - theta, twopi);
875 xfact = mdot + dmdt + 2.0 * (nodedot + dnodt - rptim) - no;
883 g200 = 1.0 + emsq * (-2.5 + 0.8125 * emsq);
884 g310 = 1.0 + 2.0 * emsq;
885 g300 = 1.0 + emsq * (-6.0 + 6.60937 * emsq);
886 f220 = 0.75 * (1.0 + cosim) * (1.0 + cosim);
887 f311 = 0.9375 * sinim * sinim * (1.0 + 3.0 * cosim) - 0.75 * (1.0 + cosim);
889 f330 = 1.875 * f330 * f330 * f330;
890 del1 = 3.0 * nm * nm * aonv * aonv;
891 del2 = 2.0 * del1 * f220 * g200 * q22;
892 del3 = 3.0 * del1 * f330 * g300 * q33 * aonv;
893 del1 = del1 * f311 * g310 * q31 * aonv;
894 xlamo = fmod(mo + nodeo + argpo - theta, twopi);
895 xfact = mdot + xpidot - rptim + dmdt + domdt + dnodt - no;
984 double d2201,
double d2211,
double d3210,
double d3222,
double d4410,
985 double d4422,
double d5220,
double d5232,
double d5421,
double d5433,
986 double dedt,
double del1,
double del2,
double del3,
double didt,
987 double dmdt,
double dnodt,
double domdt,
double argpo,
double argpdot,
988 double t,
double tc,
double gsto,
double xfact,
double xlamo,
990 double& atime,
double& em,
double& argpm,
double& inclm,
double& xli,
991 double& mm,
double& xni,
double& nodem,
double& dndt,
double& nm
994 const double twopi = 2.0 *
M_PI;
996 double delt, ft, theta, x2li, x2omi, xl, xldot , xnddt, xndt, xomi, g22, g32,
997 g44, g52, g54, fasx2, fasx4, fasx6, rptim , step2, stepn , stepp;
1007 rptim = 4.37526908801129966e-3;
1014 theta = fmod(gsto + tc * rptim, twopi);
1017 inclm = inclm + didt * t;
1018 argpm = argpm + domdt * t;
1019 nodem = nodem + dnodt * t;
1042 if ((atime == 0.0) || (t * atime <= 0.0) || (fabs(t) < fabs(atime)) )
1055 while (iretn == 381)
1061 xndt = del1 * sin(xli - fasx2) + del2 * sin(2.0 * (xli - fasx4)) +
1062 del3 * sin(3.0 * (xli - fasx6));
1063 xldot = xni + xfact;
1064 xnddt = del1 * cos(xli - fasx2) +
1065 2.0 * del2 * cos(2.0 * (xli - fasx4)) +
1066 3.0 * del3 * cos(3.0 * (xli - fasx6));
1067 xnddt = xnddt * xldot;
1072 xomi = argpo + argpdot * atime;
1073 x2omi = xomi + xomi;
1075 xndt = d2201 * sin(x2omi + xli - g22) + d2211 * sin(xli - g22) +
1076 d3210 * sin(xomi + xli - g32) + d3222 * sin(-xomi + xli - g32)+
1077 d4410 * sin(x2omi + x2li - g44)+ d4422 * sin(x2li - g44) +
1078 d5220 * sin(xomi + xli - g52) + d5232 * sin(-xomi + xli - g52)+
1079 d5421 * sin(xomi + x2li - g54) + d5433 * sin(-xomi + x2li - g54);
1080 xldot = xni + xfact;
1081 xnddt = d2201 * cos(x2omi + xli - g22) + d2211 * cos(xli - g22) +
1082 d3210 * cos(xomi + xli - g32) + d3222 * cos(-xomi + xli - g32) +
1083 d5220 * cos(xomi + xli - g52) + d5232 * cos(-xomi + xli - g52) +
1084 2.0 * (d4410 * cos(x2omi + x2li - g44) +
1085 d4422 * cos(x2li - g44) + d5421 * cos(xomi + x2li - g54) +
1086 d5433 * cos(-xomi + x2li - g54));
1087 xnddt = xnddt * xldot;
1092 if (fabs(t - atime) >= stepp)
1104 xli = xli + xldot * delt + xndt * step2;
1105 xni = xni + xndt * delt + xnddt * step2;
1106 atime = atime + delt;
1110 nm = xni + xndt * ft + xnddt * ft * ft * 0.5;
1111 xl = xli + xldot * ft + xndt * ft * ft * 0.5;
1114 mm = xl - 2.0 * nodem + 2.0 * theta;
1119 mm = xl - nodem - argpm + theta;
1182 double ecco,
double epoch,
double inclo,
double& no,
1184 double& ainv,
double& ao,
double& con41,
double& con42,
double& cosio,
1185 double& cosio2,
double& eccsq,
double& omeosq,
double& posq,
1186 double& rp,
double& rteosq,
double& sinio ,
double& gsto,
1192 double ak, d1, del, adel, po, x2o3, j2, xke,
1193 tumin, mu, radiusearthkm, j3, j4, j3oj2;
1197 double ts70, tfrac, c1, thgr70, fk5r, c1p2p;
1198 const double twopi = 2.0 *
M_PI;
1202 getgravconst( whichconst, tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2 );
1206 eccsq = ecco * ecco;
1207 omeosq = 1.0 - eccsq;
1208 rteosq = sqrt(omeosq);
1210 cosio2 = cosio * cosio;
1213 ak = pow(xke / no, x2o3);
1214 d1 = 0.75 * j2 * (3.0 * cosio2 - 1.0) / (rteosq * omeosq);
1215 del = d1 / (ak * ak);
1216 adel = ak * (1.0 - del * del - del *
1217 (1.0 / 3.0 + 134.0 * del * del / 81.0));
1218 del = d1/(adel * adel);
1219 no = no / (1.0 + del);
1221 ao = pow(xke / no, x2o3);
1224 con42 = 1.0 - 5.0 * cosio2;
1225 con41 = -con42-cosio2-cosio2;
1228 rp = ao * (1.0 - ecco);
1236 ts70 = epoch - 7305.0;
1237 ds70 = floor(ts70 + 1.0e-8);
1238 tfrac = ts70 - ds70;
1240 c1 = 1.72027916940703639e-2;
1241 thgr70= 1.7321343856509374;
1242 fk5r = 5.07551419432269442e-15;
1244 gsto = fmod( thgr70 + c1*ds70 + c1p2p*tfrac + ts70*ts70*fk5r, twopi);
1246 gsto = gsto + twopi;
1249 gsto =
gstime(epoch + 2433281.5);
1339 gravconsttype whichconst,
char opsmode,
const int satn,
const double epoch,
1340 const double xbstar,
const double xecco,
const double xargpo,
1341 const double xinclo,
const double xmo,
const double xno,
1342 const double xnodeo,
elsetrec& satrec
1346 double ao, ainv, con42, cosio, sinio, cosio2, eccsq,
1347 omeosq, posq, rp, rteosq,
1348 cnodm , snodm , cosim , sinim , cosomm, sinomm, cc1sq ,
1349 cc2 , cc3 , coef , coef1 , cosio4, day , dndt ,
1350 em , emsq , eeta , etasq , gam , argpm , nodem ,
1351 inclm , mm , nm , perige, pinvsq, psisq , qzms24,
1352 rtemsq, s1 , s2 , s3 , s4 , s5 , s6 ,
1353 s7 , sfour , ss1 , ss2 , ss3 , ss4 , ss5 ,
1354 ss6 , ss7 , sz1 , sz2 , sz3 , sz11 , sz12 ,
1355 sz13 , sz21 , sz22 , sz23 , sz31 , sz32 , sz33 ,
1356 tc , temp , temp1 , temp2 , temp3 , tsi , xpidot,
1357 xhdot1, z1 , z2 , z3 , z11 , z12 , z13 ,
1358 z21 , z22 , z23 , z31 , z32 , z33,
1359 qzms2t, ss, j2, j3oj2, j4, x2o3, r[3], v[3],
1360 tumin, mu, radiusearthkm, xke, j3;
1366 const double temp4 = 1.5e-12;
1370 satrec.
con41 = 0.0; satrec.
cc1 = 0.0; satrec.
cc4 = 0.0;
1371 satrec.
cc5 = 0.0; satrec.
d2 = 0.0; satrec.
d3 = 0.0;
1372 satrec.
d4 = 0.0; satrec.
delmo = 0.0; satrec.
eta = 0.0;
1374 satrec.
t = 0.0; satrec.
t2cof = 0.0; satrec.
t3cof = 0.0;
1384 satrec.
del1 = 0.0; satrec.
del2 = 0.0; satrec.
del3 = 0.0;
1386 satrec.
domdt = 0.0; satrec.
e3 = 0.0; satrec.
ee2 = 0.0;
1387 satrec.
peo = 0.0; satrec.
pgho = 0.0; satrec.
pho = 0.0;
1388 satrec.
pinco = 0.0; satrec.
plo = 0.0; satrec.
se2 = 0.0;
1389 satrec.
se3 = 0.0; satrec.
sgh2 = 0.0; satrec.
sgh3 = 0.0;
1390 satrec.
sgh4 = 0.0; satrec.
sh2 = 0.0; satrec.
sh3 = 0.0;
1391 satrec.
si2 = 0.0; satrec.
si3 = 0.0; satrec.
sl2 = 0.0;
1392 satrec.
sl3 = 0.0; satrec.
sl4 = 0.0; satrec.
gsto = 0.0;
1394 satrec.
xgh4 = 0.0; satrec.
xh2 = 0.0; satrec.
xh3 = 0.0;
1395 satrec.
xi2 = 0.0; satrec.
xi3 = 0.0; satrec.
xl2 = 0.0;
1396 satrec.
xl3 = 0.0; satrec.
xl4 = 0.0; satrec.
xlamo = 0.0;
1398 satrec.
xli = 0.0; satrec.
xni = 0.0;
1404 satrec.
bstar = xbstar;
1405 satrec.
ecco = xecco;
1406 satrec.
argpo = xargpo;
1407 satrec.
inclo = xinclo;
1410 satrec.
nodeo = xnodeo;
1417 getgravconst( whichconst, tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2 );
1418 ss = 78.0 / radiusearthkm + 1.0;
1419 qzms2t = pow(((120.0 - 78.0) / radiusearthkm), 4);
1428 ainv, ao, satrec.
con41, con42, cosio, cosio2, eccsq, omeosq,
1442 if ((omeosq >= 0.0 ) || ( satrec.
no >= 0.0))
1445 if (rp < (220.0 / radiusearthkm + 1.0))
1449 perige = (rp - 1.0) * radiusearthkm;
1454 sfour = perige - 78.0;
1457 qzms24 = pow(((120.0 - sfour) / radiusearthkm), 4.0);
1458 sfour = sfour / radiusearthkm + 1.0;
1460 pinvsq = 1.0 / posq;
1462 tsi = 1.0 / (ao - sfour);
1463 satrec.
eta = ao * satrec.
ecco * tsi;
1464 etasq = satrec.
eta * satrec.
eta;
1465 eeta = satrec.
ecco * satrec.
eta;
1466 psisq = fabs(1.0 - etasq);
1467 coef = qzms24 * pow(tsi, 4.0);
1468 coef1 = coef / pow(psisq, 3.5);
1469 cc2 = coef1 * satrec.
no * (ao * (1.0 + 1.5 * etasq + eeta *
1470 (4.0 + etasq)) + 0.375 * j2 * tsi / psisq * satrec.
con41 *
1471 (8.0 + 3.0 * etasq * (8.0 + etasq)));
1474 if (satrec.
ecco > 1.0e-4)
1475 cc3 = -2.0 * coef * tsi * j3oj2 * satrec.
no * sinio / satrec.
ecco;
1476 satrec.
x1mth2 = 1.0 - cosio2;
1477 satrec.
cc4 = 2.0* satrec.
no * coef1 * ao * omeosq *
1478 (satrec.
eta * (2.0 + 0.5 * etasq) + satrec.
ecco *
1479 (0.5 + 2.0 * etasq) - j2 * tsi / (ao * psisq) *
1480 (-3.0 * satrec.
con41 * (1.0 - 2.0 * eeta + etasq *
1481 (1.5 - 0.5 * eeta)) + 0.75 * satrec.
x1mth2 *
1482 (2.0 * etasq - eeta * (1.0 + etasq)) * cos(2.0 * satrec.
argpo)));
1483 satrec.
cc5 = 2.0 * coef1 * ao * omeosq * (1.0 + 2.75 *
1484 (etasq + eeta) + eeta * etasq);
1485 cosio4 = cosio2 * cosio2;
1486 temp1 = 1.5 * j2 * pinvsq * satrec.
no;
1487 temp2 = 0.5 * temp1 * j2 * pinvsq;
1488 temp3 = -0.46875 * j4 * pinvsq * pinvsq * satrec.
no;
1489 satrec.
mdot = satrec.
no + 0.5 * temp1 * rteosq * satrec.
con41 + 0.0625 *
1490 temp2 * rteosq * (13.0 - 78.0 * cosio2 + 137.0 * cosio4);
1491 satrec.
argpdot = -0.5 * temp1 * con42 + 0.0625 * temp2 *
1492 (7.0 - 114.0 * cosio2 + 395.0 * cosio4) +
1493 temp3 * (3.0 - 36.0 * cosio2 + 49.0 * cosio4);
1494 xhdot1 = -temp1 * cosio;
1495 satrec.
nodedot = xhdot1 + (0.5 * temp2 * (4.0 - 19.0 * cosio2) +
1496 2.0 * temp3 * (3.0 - 7.0 * cosio2)) * cosio;
1500 if (satrec.
ecco > 1.0e-4)
1501 satrec.
xmcof = -x2o3 * coef * satrec.
bstar / eeta;
1502 satrec.
nodecf = 3.5 * omeosq * xhdot1 * satrec.
cc1;
1505 if (fabs(cosio+1.0) > 1.5e-12)
1506 satrec.
xlcof = -0.25 * j3oj2 * sinio * (3.0 + 5.0 * cosio) / (1.0 + cosio);
1508 satrec.
xlcof = -0.25 * j3oj2 * sinio * (3.0 + 5.0 * cosio) / temp4;
1509 satrec.
aycof = -0.5 * j3oj2 * sinio;
1510 satrec.
delmo = pow((1.0 + satrec.
eta * cos(satrec.
mo)), 3);
1512 satrec.
x7thm1 = 7.0 * cosio2 - 1.0;
1515 if ((2*
M_PI / satrec.
no) >= 225.0)
1520 inclm = satrec.
inclo;
1525 satrec.
no, snodm, cnodm, sinim, cosim,sinomm, cosomm,
1526 day, satrec.
e3, satrec.
ee2, em, emsq, gam,
1528 satrec.
plo, rtemsq, satrec.
se2, satrec.
se3,
1531 satrec.
sl2, satrec.
sl3, satrec.
sl4, s1, s2, s3, s4, s5,
1532 s6, s7, ss1, ss2, ss3, ss4, ss5, ss6, ss7, sz1, sz2, sz3,
1533 sz11, sz12, sz13, sz21, sz22, sz23, sz31, sz32, sz33,
1536 satrec.
xl3, satrec.
xl4, nm, z1, z2, z3, z11,
1537 z12, z13, z21, z22, z23, z31, z32, z33,
1546 satrec.
sl2, satrec.
sl3, satrec.
sl4, satrec.
t,
1561 cosim, emsq, satrec.
argpo, s1, s2, s3, s4, s5, sinim, ss1, ss2, ss3, ss4,
1562 ss5, sz1, sz3, sz11, sz13, sz21, sz23, sz31, sz33, satrec.
t, tc,
1564 satrec.
nodedot, xpidot, z1, z3, z11, z13, z21, z23, z31, z33,
1565 satrec.
ecco, eccsq, em, argpm, inclm, mm, nm, nodem,
1577 if (satrec.
isimp != 1)
1579 cc1sq = satrec.
cc1 * satrec.
cc1;
1580 satrec.
d2 = 4.0 * ao * tsi * cc1sq;
1581 temp = satrec.
d2 * tsi * satrec.
cc1 / 3.0;
1582 satrec.
d3 = (17.0 * ao + sfour) * temp;
1583 satrec.
d4 = 0.5 * temp * ao * tsi * (221.0 * ao + 31.0 * sfour) *
1585 satrec.
t3cof = satrec.
d2 + 2.0 * cc1sq;
1586 satrec.
t4cof = 0.25 * (3.0 * satrec.
d3 + satrec.
cc1 *
1587 (12.0 * satrec.
d2 + 10.0 * cc1sq));
1588 satrec.
t5cof = 0.2 * (3.0 * satrec.
d4 +
1589 12.0 * satrec.
cc1 * satrec.
d3 +
1590 6.0 * satrec.
d2 * satrec.
d2 +
1591 15.0 * cc1sq * (2.0 * satrec.
d2 + cc1sq));
1598 sgp4(whichconst, satrec, 0.0, r, v);
1697 double r[3],
double v[3]
1700 double am , axnl , aynl , betal , cosim , cnod ,
1701 cos2u, coseo1, cosi , cosip , cosisq, cossu , cosu,
1702 delm , delomg, em , emsq , ecose , el2 , eo1 ,
1703 ep , esine , argpm, argpp , argpdf, pl, mrt = 0.0,
1704 mvt , rdotl , rl , rvdot , rvdotl, sinim ,
1705 sin2u, sineo1, sini , sinip , sinsu , sinu ,
1706 snod , su , t2 , t3 , t4 , tem5 , temp,
1707 temp1, temp2 , tempa, tempe , templ , u , ux ,
1708 uy , uz , vx , vy , vz , inclm , mm ,
1709 nm , nodem, xinc , xincp , xl , xlm , mp ,
1710 xmdf , xmx , xmy , nodedf, xnode , nodep, tc , dndt,
1711 twopi, x2o3 , j2 , j3 , tumin, j4 , xke , j3oj2, radiusearthkm,
1719 const double temp4 = 1.5e-12;
1723 getgravconst( whichconst, tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2 );
1724 vkmpersec = radiusearthkm * xke/60.0;
1731 xmdf = satrec.
mo + satrec.
mdot * satrec.
t;
1736 t2 = satrec.
t * satrec.
t;
1737 nodem = nodedf + satrec.
nodecf * t2;
1738 tempa = 1.0 - satrec.
cc1 * satrec.
t;
1739 tempe = satrec.
bstar * satrec.
cc4 * satrec.
t;
1740 templ = satrec.
t2cof * t2;
1742 if (satrec.
isimp != 1)
1744 delomg = satrec.
omgcof * satrec.
t;
1745 delm = satrec.
xmcof *
1746 (pow((1.0 + satrec.
eta * cos(xmdf)), 3) -
1748 temp = delomg + delm;
1750 argpm = argpdf - temp;
1753 tempa = tempa - satrec.
d2 * t2 - satrec.
d3 * t3 -
1755 tempe = tempe + satrec.
bstar * satrec.
cc5 * (sin(mm) -
1757 templ = templ + satrec.
t3cof * t3 + t4 * (satrec.
t4cof +
1758 satrec.
t * satrec.
t5cof);
1763 inclm = satrec.
inclo;
1764 if (satrec.
method ==
'd')
1779 em, argpm, inclm, satrec.
xli, mm, satrec.
xni,
1791 am = pow((xke / nm),x2o3) * tempa * tempa;
1792 nm = xke / pow(am, 1.5);
1797 if ((em >= 1.0) || (em < -0.001) )
1807 mm = mm + satrec.
no * templ;
1808 xlm = mm + argpm + nodem;
1812 nodem = fmod(nodem, twopi);
1813 argpm = fmod(argpm, twopi);
1814 xlm = fmod(xlm, twopi);
1815 mm = fmod(xlm - argpm - nodem, twopi);
1829 if (satrec.
method ==
'd')
1849 nodep = nodep +
M_PI;
1850 argpp = argpp -
M_PI;
1852 if ((ep < 0.0 ) || ( ep > 1.0))
1862 if (satrec.
method ==
'd')
1866 satrec.
aycof = -0.5*j3oj2*sinip;
1868 if (fabs(cosip+1.0) > 1.5e-12)
1869 satrec.
xlcof = -0.25 * j3oj2 * sinip * (3.0 + 5.0 * cosip) / (1.0 + cosip);
1871 satrec.
xlcof = -0.25 * j3oj2 * sinip * (3.0 + 5.0 * cosip) / temp4;
1873 axnl = ep * cos(argpp);
1874 temp = 1.0 / (am * (1.0 - ep * ep));
1875 aynl = ep* sin(argpp) + temp * satrec.
aycof;
1876 xl = mp + argpp + nodep + temp * satrec.
xlcof * axnl;
1879 u = fmod(xl - nodep, twopi);
1885 while (( fabs(tem5) >= 1.0e-12) && (ktr <= 10) )
1889 tem5 = 1.0 - coseo1 * axnl - sineo1 * aynl;
1890 tem5 = (u - aynl * coseo1 + axnl * sineo1 - eo1) / tem5;
1891 if(fabs(tem5) >= 0.95)
1892 tem5 = tem5 > 0.0 ? 0.95 : -0.95;
1898 ecose = axnl*coseo1 + aynl*sineo1;
1899 esine = axnl*sineo1 - aynl*coseo1;
1900 el2 = axnl*axnl + aynl*aynl;
1911 rl = am * (1.0 - ecose);
1912 rdotl = sqrt(am) * esine/rl;
1913 rvdotl = sqrt(pl) / rl;
1914 betal = sqrt(1.0 - el2);
1915 temp = esine / (1.0 + betal);
1916 sinu = am / rl * (sineo1 - aynl - axnl * temp);
1917 cosu = am / rl * (coseo1 - axnl + aynl * temp);
1918 su = atan2(sinu, cosu);
1919 sin2u = (cosu + cosu) * sinu;
1920 cos2u = 1.0 - 2.0 * sinu * sinu;
1922 temp1 = 0.5 * j2 * temp;
1923 temp2 = temp1 * temp;
1926 if (satrec.
method ==
'd')
1928 cosisq = cosip * cosip;
1929 satrec.
con41 = 3.0*cosisq - 1.0;
1930 satrec.
x1mth2 = 1.0 - cosisq;
1931 satrec.
x7thm1 = 7.0*cosisq - 1.0;
1933 mrt = rl * (1.0 - 1.5 * temp2 * betal * satrec.
con41) +
1934 0.5 * temp1 * satrec.
x1mth2 * cos2u;
1935 su = su - 0.25 * temp2 * satrec.
x7thm1 * sin2u;
1936 xnode = nodep + 1.5 * temp2 * cosip * sin2u;
1937 xinc = xincp + 1.5 * temp2 * cosip * sinip * cos2u;
1938 mvt = rdotl - nm * temp1 * satrec.
x1mth2 * sin2u / xke;
1939 rvdot = rvdotl + nm * temp1 * (satrec.
x1mth2 * cos2u +
1940 1.5 * satrec.
con41) / xke;
1951 ux = xmx * sinsu + cnod * cossu;
1952 uy = xmy * sinsu + snod * cossu;
1954 vx = xmx * cossu - cnod * sinsu;
1955 vy = xmy * cossu - snod * sinsu;
1959 r[0] = (mrt * ux)* radiusearthkm;
1960 r[1] = (mrt * uy)* radiusearthkm;
1961 r[2] = (mrt * uz)* radiusearthkm;
1962 v[0] = (mvt * ux + rvdot * vx) * vkmpersec;
1963 v[1] = (mvt * uy + rvdot * vy) * vkmpersec;
1964 v[2] = (mvt * uz + rvdot * vz) * vkmpersec;
2011 const double twopi = 2.0 *
M_PI;
2015 tut1 = (jdut1 - 2451545.0) / 36525.0;
2016 temp = -6.2e-6* tut1 * tut1 * tut1 + 0.093104 * tut1 * tut1 +
2017 (876600.0*3600 + 8640184.812866) * tut1 + 67310.54841;
2018 temp = fmod(temp * deg2rad / 240.0, twopi);
2062 double& radiusearthkm,
2076 radiusearthkm = 6378.135;
2080 j3 = -0.00000253881;
2081 j4 = -0.00000165597;
2087 radiusearthkm = 6378.135;
2088 xke = 60.0 / sqrt(radiusearthkm*radiusearthkm*radiusearthkm/mu);
2091 j3 = -0.00000253881;
2092 j4 = -0.00000165597;
2098 radiusearthkm = 6378.137;
2099 xke = 60.0 / sqrt(radiusearthkm*radiusearthkm*radiusearthkm/mu);
2101 j2 = 0.00108262998905;
2102 j3 = -0.00000253215306;
2103 j4 = -0.00000161098761;
2107 fprintf(stderr,
"unknown gravity option (%d)\n",whichconst);
static void initl(int satn, gravconsttype whichconst, double ecco, double epoch, double inclo, double &no, char &method, double &ainv, double &ao, double &con41, double &con42, double &cosio, double &cosio2, double &eccsq, double &omeosq, double &posq, double &rp, double &rteosq, double &sinio, double &gsto, char opsmode)
static void dscom(double epoch, double ep, double argpp, double tc, double inclp, double nodep, double np, double &snodm, double &cnodm, double &sinim, double &cosim, double &sinomm, double &cosomm, double &day, double &e3, double &ee2, double &em, double &emsq, double &gam, double &peo, double &pgho, double &pho, double &pinco, double &plo, double &rtemsq, double &se2, double &se3, double &sgh2, double &sgh3, double &sgh4, double &sh2, double &sh3, double &si2, double &si3, double &sl2, double &sl3, double &sl4, double &s1, double &s2, double &s3, double &s4, double &s5, double &s6, double &s7, double &ss1, double &ss2, double &ss3, double &ss4, double &ss5, double &ss6, double &ss7, double &sz1, double &sz2, double &sz3, double &sz11, double &sz12, double &sz13, double &sz21, double &sz22, double &sz23, double &sz31, double &sz32, double &sz33, double &xgh2, double &xgh3, double &xgh4, double &xh2, double &xh3, double &xi2, double &xi3, double &xl2, double &xl3, double &xl4, double &nm, double &z1, double &z2, double &z3, double &z11, double &z12, double &z13, double &z21, double &z22, double &z23, double &z31, double &z32, double &z33, double &zmol, double &zmos)
bool sgp4(gravconsttype whichconst, elsetrec &satrec, double tsince, double r[3], double v[3])
double gstime(double jdut1)
bool sgp4init(gravconsttype whichconst, char opsmode, const int satn, const double epoch, const double xbstar, const double xecco, const double xargpo, const double xinclo, const double xmo, const double xno, const double xnodeo, elsetrec &satrec)
static void dsinit(gravconsttype whichconst, double cosim, double emsq, double argpo, double s1, double s2, double s3, double s4, double s5, double sinim, double ss1, double ss2, double ss3, double ss4, double ss5, double sz1, double sz3, double sz11, double sz13, double sz21, double sz23, double sz31, double sz33, double t, double tc, double gsto, double mo, double mdot, double no, double nodeo, double nodedot, double xpidot, double z1, double z3, double z11, double z13, double z21, double z23, double z31, double z33, double ecco, double eccsq, double &em, double &argpm, double &inclm, double &mm, double &nm, double &nodem, int &irez, double &atime, double &d2201, double &d2211, double &d3210, double &d3222, double &d4410, double &d4422, double &d5220, double &d5232, double &d5421, double &d5433, double &dedt, double &didt, double &dmdt, double &dndt, double &dnodt, double &domdt, double &del1, double &del2, double &del3, double &xfact, double &xlamo, double &xli, double &xni)
static void dpper(double e3, double ee2, double peo, double pgho, double pho, double pinco, double plo, double se2, double se3, double sgh2, double sgh3, double sgh4, double sh2, double sh3, double si2, double si3, double sl2, double sl3, double sl4, double t, double xgh2, double xgh3, double xgh4, double xh2, double xh3, double xi2, double xi3, double xl2, double xl3, double xl4, double zmol, double zmos, double inclo, char init, double &ep, double &inclp, double &nodep, double &argpp, double &mp, char opsmode)
static void dspace(int irez, double d2201, double d2211, double d3210, double d3222, double d4410, double d4422, double d5220, double d5232, double d5421, double d5433, double dedt, double del1, double del2, double del3, double didt, double dmdt, double dnodt, double domdt, double argpo, double argpdot, double t, double tc, double gsto, double xfact, double xlamo, double no, double &atime, double &em, double &argpm, double &inclm, double &xli, double &mm, double &xni, double &nodem, double &dndt, double &nm)
void getgravconst(gravconsttype whichconst, double &tumin, double &mu, double &radiusearthkm, double &xke, double &j2, double &j3, double &j4, double &j3oj2)