53 #define UNUSED(arg) (void)arg;
58 double e3,
double ee2,
double peo,
double pgho,
double pho,
59 double pinco,
double plo,
double se2,
double se3,
double sgh2,
60 double sgh3,
double sgh4,
double sh2,
double sh3,
double si2,
61 double si3,
double sl2,
double sl3,
double sl4,
double t,
62 double xgh2,
double xgh3,
double xgh4,
double xh2,
double xh3,
63 double xi2,
double xi3,
double xl2,
double xl3,
double xl4,
64 double zmol,
double zmos,
double inclo,
66 double& ep,
double& inclp,
double& nodep,
double& argpp,
double& mp,
72 double epoch,
double ep,
double argpp,
double tc,
double inclp,
73 double nodep,
double np,
74 double& snodm,
double& cnodm,
double& sinim,
double& cosim,
double& sinomm,
75 double& cosomm,
double& day,
double& e3,
double& ee2,
double& em,
76 double& emsq,
double& gam,
double& peo,
double& pgho,
double& pho,
77 double& pinco,
double& plo,
double& rtemsq,
double& se2,
double& se3,
78 double& sgh2,
double& sgh3,
double& sgh4,
double& sh2,
double& sh3,
79 double& si2,
double& si3,
double& sl2,
double& sl3,
double& sl4,
80 double& s1,
double& s2,
double& s3,
double& s4,
double& s5,
81 double& s6,
double& s7,
double& ss1,
double& ss2,
double& ss3,
82 double& ss4,
double& ss5,
double& ss6,
double& ss7,
double& sz1,
83 double& sz2,
double& sz3,
double& sz11,
double& sz12,
double& sz13,
84 double& sz21,
double& sz22,
double& sz23,
double& sz31,
double& sz32,
85 double& sz33,
double& xgh2,
double& xgh3,
double& xgh4,
double& xh2,
86 double& xh3,
double& xi2,
double& xi3,
double& xl2,
double& xl3,
87 double& xl4,
double& nm,
double& z1,
double& z2,
double& z3,
88 double& z11,
double& z12,
double& z13,
double& z21,
double& z22,
89 double& z23,
double& z31,
double& z32,
double& z33,
double& zmol,
96 double cosim,
double emsq,
double argpo,
double s1,
double s2,
97 double s3,
double s4,
double s5,
double sinim,
double ss1,
98 double ss2,
double ss3,
double ss4,
double ss5,
double sz1,
99 double sz3,
double sz11,
double sz13,
double sz21,
double sz23,
100 double sz31,
double sz33,
double t,
double tc,
double gsto,
101 double mo,
double mdot,
double no,
double nodeo,
double nodedot,
102 double xpidot,
double z1,
double z3,
double z11,
double z13,
103 double z21,
double z23,
double z31,
double z33,
double ecco,
104 double eccsq,
double& em,
double& argpm,
double& inclm,
double& mm,
105 double& nm,
double& nodem,
107 double& atime,
double& d2201,
double& d2211,
double& d3210,
double& d3222,
108 double& d4410,
double& d4422,
double& d5220,
double& d5232,
double& d5421,
109 double& d5433,
double& dedt,
double& didt,
double& dmdt,
double& dndt,
110 double& dnodt,
double& domdt,
double& del1,
double& del2,
double& del3,
111 double& xfact,
double& xlamo,
double& xli,
double& xni
117 double d2201,
double d2211,
double d3210,
double d3222,
double d4410,
118 double d4422,
double d5220,
double d5232,
double d5421,
double d5433,
119 double dedt,
double del1,
double del2,
double del3,
double didt,
120 double dmdt,
double dnodt,
double domdt,
double argpo,
double argpdot,
121 double t,
double tc,
double gsto,
double xfact,
double xlamo,
123 double& atime,
double& em,
double& argpm,
double& inclm,
double& xli,
124 double& mm,
double& xni,
double& nodem,
double& dndt,
double& nm
130 double ecco,
double epoch,
double inclo,
double& no,
132 double& ainv,
double& ao,
double& con41,
double& con42,
double& cosio,
133 double& cosio2,
double& eccsq,
double& omeosq,
double& posq,
134 double& rp,
double& rteosq,
double& sinio ,
double& gsto,
char opsmode
206 double e3,
double ee2,
double peo,
double pgho,
double pho,
207 double pinco,
double plo,
double se2,
double se3,
double sgh2,
208 double sgh3,
double sgh4,
double sh2,
double sh3,
double si2,
209 double si3,
double sl2,
double sl3,
double sl4,
double t,
210 double xgh2,
double xgh3,
double xgh4,
double xh2,
double xh3,
211 double xi2,
double xi3,
double xl2,
double xl3,
double xl4,
212 double zmol,
double zmos,
double inclo,
214 double& ep,
double& inclp,
double& nodep,
double& argpp,
double& mp,
220 const double twopi = 2.0 *
M_PI;
221 double alfdp, betdp, cosip, cosop, dalf, dbet, dls,
222 f2, f3, pe, pgh, ph, pinc, pl ,
223 sel, ses, sghl, sghs, shll, shs, sil,
224 sinip, sinop, sinzf, sis, sll, sls, xls,
225 xnoh, zf, zm, zel, zes, znl, zns;
238 zf = zm + 2.0 * zes * sin(zm);
240 f2 = 0.5 * sinzf * sinzf - 0.25;
241 f3 = -0.5 * sinzf * cos(zf);
242 ses = se2* f2 + se3 * f3;
243 sis = si2 * f2 + si3 * f3;
244 sls = sl2 * f2 + sl3 * f3 + sl4 * sinzf;
245 sghs = sgh2 * f2 + sgh3 * f3 + sgh4 * sinzf;
246 shs = sh2 * f2 + sh3 * f3;
250 zf = zm + 2.0 * zel * sin(zm);
252 f2 = 0.5 * sinzf * sinzf - 0.25;
253 f3 = -0.5 * sinzf * cos(zf);
254 sel = ee2 * f2 + e3 * f3;
255 sil = xi2 * f2 + xi3 * f3;
256 sll = xl2 * f2 + xl3 * f3 + xl4 * sinzf;
257 sghl = xgh2 * f2 + xgh3 * f3 + xgh4 * sinzf;
258 shll = xh2 * f2 + xh3 * f3;
272 inclp = inclp + pinc;
289 pgh = pgh - cosip * ph;
299 alfdp = sinip * sinop;
300 betdp = sinip * cosop;
301 dalf = ph * cosop + pinc * cosip * sinop;
302 dbet = -ph * sinop + pinc * cosip * cosop;
303 alfdp = alfdp + dalf;
304 betdp = betdp + dbet;
305 nodep = fmod(nodep, twopi);
308 if ((nodep < 0.0) && (opsmode ==
'a')) {
309 nodep = nodep + twopi;
311 xls = mp + argpp + cosip * nodep;
312 dls = pl + pgh - pinc * nodep * sinip;
315 nodep = atan2(alfdp, betdp);
318 if ((nodep < 0.0) && (opsmode ==
'a')) {
319 nodep = nodep + twopi;
321 if (fabs(xnoh - nodep) >
M_PI) {
323 nodep = nodep + twopi;
326 nodep = nodep - twopi;
330 argpp = xls - mp - cosip * nodep;
407 double epoch,
double ep,
double argpp,
double tc,
double inclp,
408 double nodep,
double np,
409 double& snodm,
double& cnodm,
double& sinim,
double& cosim,
double& sinomm,
410 double& cosomm,
double& day,
double& e3,
double& ee2,
double& em,
411 double& emsq,
double& gam,
double& peo,
double& pgho,
double& pho,
412 double& pinco,
double& plo,
double& rtemsq,
double& se2,
double& se3,
413 double& sgh2,
double& sgh3,
double& sgh4,
double& sh2,
double& sh3,
414 double& si2,
double& si3,
double& sl2,
double& sl3,
double& sl4,
415 double& s1,
double& s2,
double& s3,
double& s4,
double& s5,
416 double& s6,
double& s7,
double& ss1,
double& ss2,
double& ss3,
417 double& ss4,
double& ss5,
double& ss6,
double& ss7,
double& sz1,
418 double& sz2,
double& sz3,
double& sz11,
double& sz12,
double& sz13,
419 double& sz21,
double& sz22,
double& sz23,
double& sz31,
double& sz32,
420 double& sz33,
double& xgh2,
double& xgh3,
double& xgh4,
double& xh2,
421 double& xh3,
double& xi2,
double& xi3,
double& xl2,
double& xl3,
422 double& xl4,
double& nm,
double& z1,
double& z2,
double& z3,
423 double& z11,
double& z12,
double& z13,
double& z21,
double& z22,
424 double& z23,
double& z31,
double& z32,
double& z33,
double& zmol,
429 const double zes = 0.01675;
430 const double zel = 0.05490;
431 const double c1ss = 2.9864797e-6;
432 const double c1l = 4.7968065e-7;
433 const double zsinis = 0.39785416;
434 const double zcosis = 0.91744867;
435 const double zcosgs = 0.1945905;
436 const double zsings = -0.98088458;
437 const double twopi = 2.0 *
M_PI;
441 double a1 , a2 , a3 , a4 , a5 , a6 , a7 ,
442 a8 , a9 , a10 , betasq, cc , ctem , stem ,
443 x1 , x2 , x3 , x4 , x5 , x6 , x7 ,
444 x8 , xnodce, xnoi , zcosg , zcosgl, zcosh , zcoshl,
445 zcosi , zcosil, zsing , zsingl, zsinh , zsinhl, zsini ,
458 rtemsq = sqrt(betasq);
466 day = epoch + 18261.5 + tc / 1440.0;
467 xnodce = fmod(4.5236020 - 9.2422029e-4 * day, twopi);
470 zcosil = 0.91375164 - 0.03568096 * ctem;
471 zsinil = sqrt(1.0 - zcosil * zcosil);
472 zsinhl = 0.089683511 * stem / zsinil;
473 zcoshl = sqrt(1.0 - zsinhl * zsinhl);
474 gam = 5.8351514 + 0.0019443680 * day;
475 zx = 0.39785416 * stem / zsinil;
476 zy = zcoshl * ctem + 0.91744867 * zsinhl * stem;
478 zx = gam + zx - xnodce;
492 for (lsflg = 1; lsflg <= 2; lsflg++)
494 a1 = zcosg * zcosh + zsing * zcosi * zsinh;
495 a3 = -zsing * zcosh + zcosg * zcosi * zsinh;
496 a7 = -zcosg * zsinh + zsing * zcosi * zcosh;
498 a9 = zsing * zsinh + zcosg * zcosi * zcosh;
500 a2 = cosim * a7 + sinim * a8;
501 a4 = cosim * a9 + sinim * a10;
502 a5 = -sinim * a7 + cosim * a8;
503 a6 = -sinim * a9 + cosim * a10;
505 x1 = a1 * cosomm + a2 * sinomm;
506 x2 = a3 * cosomm + a4 * sinomm;
507 x3 = -a1 * sinomm + a2 * cosomm;
508 x4 = -a3 * sinomm + a4 * cosomm;
514 z31 = 12.0 * x1 * x1 - 3.0 * x3 * x3;
515 z32 = 24.0 * x1 * x2 - 6.0 * x3 * x4;
516 z33 = 12.0 * x2 * x2 - 3.0 * x4 * x4;
517 z1 = 3.0 * (a1 * a1 + a2 * a2) + z31 * emsq;
518 z2 = 6.0 * (a1 * a3 + a2 * a4) + z32 * emsq;
519 z3 = 3.0 * (a3 * a3 + a4 * a4) + z33 * emsq;
520 z11 = -6.0 * a1 * a5 + emsq * (-24.0 * x1 * x7-6.0 * x3 * x5);
521 z12 = -6.0 * (a1 * a6 + a3 * a5) + emsq *
522 (-24.0 * (x2 * x7 + x1 * x8) - 6.0 * (x3 * x6 + x4 * x5));
523 z13 = -6.0 * a3 * a6 + emsq * (-24.0 * x2 * x8 - 6.0 * x4 * x6);
524 z21 = 6.0 * a2 * a5 + emsq * (24.0 * x1 * x5 - 6.0 * x3 * x7);
525 z22 = 6.0 * (a4 * a5 + a2 * a6) + emsq *
526 (24.0 * (x2 * x5 + x1 * x6) - 6.0 * (x4 * x7 + x3 * x8));
527 z23 = 6.0 * a4 * a6 + emsq * (24.0 * x2 * x6 - 6.0 * x4 * x8);
528 z1 = z1 + z1 + betasq * z31;
529 z2 = z2 + z2 + betasq * z32;
530 z3 = z3 + z3 + betasq * z33;
532 s2 = -0.5 * s3 / rtemsq;
534 s1 = -15.0 * em * s4;
535 s5 = x1 * x3 + x2 * x4;
536 s6 = x2 * x3 + x1 * x4;
537 s7 = x2 * x4 - x1 * x3;
565 zcosh = zcoshl * cnodm + zsinhl * snodm;
566 zsinh = snodm * zcoshl - cnodm * zsinhl;
571 zmol = fmod(4.7199672 + 0.22997150 * day - gam, twopi);
572 zmos = fmod(6.2565837 + 0.017201977 * day, twopi);
575 se2 = 2.0 * ss1 * ss6;
576 se3 = 2.0 * ss1 * ss7;
577 si2 = 2.0 * ss2 * sz12;
578 si3 = 2.0 * ss2 * (sz13 - sz11);
579 sl2 = -2.0 * ss3 * sz2;
580 sl3 = -2.0 * ss3 * (sz3 - sz1);
581 sl4 = -2.0 * ss3 * (-21.0 - 9.0 * emsq) * zes;
582 sgh2 = 2.0 * ss4 * sz32;
583 sgh3 = 2.0 * ss4 * (sz33 - sz31);
584 sgh4 = -18.0 * ss4 * zes;
585 sh2 = -2.0 * ss2 * sz22;
586 sh3 = -2.0 * ss2 * (sz23 - sz21);
591 xi2 = 2.0 * s2 * z12;
592 xi3 = 2.0 * s2 * (z13 - z11);
593 xl2 = -2.0 * s3 * z2;
594 xl3 = -2.0 * s3 * (z3 - z1);
595 xl4 = -2.0 * s3 * (-21.0 - 9.0 * emsq) * zel;
596 xgh2 = 2.0 * s4 * z32;
597 xgh3 = 2.0 * s4 * (z33 - z31);
598 xgh4 = -18.0 * s4 * zel;
599 xh2 = -2.0 * s2 * z22;
600 xh3 = -2.0 * s2 * (z23 - z21);
688 double cosim,
double emsq,
double argpo,
double s1,
double s2,
689 double s3,
double s4,
double s5,
double sinim,
double ss1,
690 double ss2,
double ss3,
double ss4,
double ss5,
double sz1,
691 double sz3,
double sz11,
double sz13,
double sz21,
double sz23,
692 double sz31,
double sz33,
double t,
double tc,
double gsto,
693 double mo,
double mdot,
double no,
double nodeo,
double nodedot,
694 double xpidot,
double z1,
double z3,
double z11,
double z13,
695 double z21,
double z23,
double z31,
double z33,
double ecco,
696 double eccsq,
double& em,
double& argpm,
double& inclm,
double& mm,
697 double& nm,
double& nodem,
699 double& atime,
double& d2201,
double& d2211,
double& d3210,
double& d3222,
700 double& d4410,
double& d4422,
double& d5220,
double& d5232,
double& d5421,
701 double& d5433,
double& dedt,
double& didt,
double& dmdt,
double& dndt,
702 double& dnodt,
double& domdt,
double& del1,
double& del2,
double& del3,
703 double& xfact,
double& xlamo,
double& xli,
double& xni
707 const double twopi = 2.0 *
M_PI;
709 double ainv2 , aonv=0.0, cosisq, eoc, f220 , f221 , f311 ,
710 f321 , f322 , f330 , f441 , f442 , f522 , f523 ,
711 f542 , f543 , g200 , g201 , g211 , g300 , g310 ,
712 g322 , g410 , g422 , g520 , g521 , g532 , g533 ,
713 ses , sgs , sghl , sghs , shs , shll , sis ,
714 sini2 , sls , temp , temp1 , theta , xno2 , q22 ,
715 q31 , q33 , root22, root44, root54, rptim , root32,
716 root52, x2o3 , xke , znl , emo , zns , emsqo,
717 tumin, mu, radiusearthkm, j2, j3, j4, j3oj2;
722 root22 = 1.7891679e-6;
723 root44 = 7.3636953e-9;
724 root54 = 2.1765803e-9;
725 rptim = 4.37526908801129966e-3;
726 root32 = 3.7393792e-7;
727 root52 = 1.1428639e-7;
733 getgravconst( whichconst, tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2 );
737 if ((nm < 0.0052359877) && (nm > 0.0034906585))
739 if ((nm >= 8.26e-3) && (nm <= 9.24e-3) && (em >= 0.5))
743 ses = ss1 * zns * ss5;
744 sis = ss2 * zns * (sz11 + sz13);
745 sls = -zns * ss3 * (sz1 + sz3 - 14.0 - 6.0 * emsq);
746 sghs = ss4 * zns * (sz31 + sz33 - 6.0);
747 shs = -zns * ss2 * (sz21 + sz23);
749 if ((inclm < 5.2359877e-2) || (inclm >
M_PI - 5.2359877e-2))
753 sgs = sghs - cosim * shs;
756 dedt = ses + s1 * znl * s5;
757 didt = sis + s2 * znl * (z11 + z13);
758 dmdt = sls - znl * s3 * (z1 + z3 - 14.0 - 6.0 * emsq);
759 sghl = s4 * znl * (z31 + z33 - 6.0);
760 shll = -znl * s2 * (z21 + z23);
762 if ((inclm < 5.2359877e-2) || (inclm >
M_PI - 5.2359877e-2))
768 domdt = domdt - cosim / sinim * shll;
769 dnodt = dnodt + shll / sinim;
774 theta = fmod(gsto + tc * rptim, twopi);
776 inclm = inclm + didt * t;
777 argpm = argpm + domdt * t;
778 nodem = nodem + dnodt * t;
792 aonv = pow(nm / xke, x2o3);
797 cosisq = cosim * cosim;
803 g201 = -0.306 - (em - 0.64) * 0.440;
807 g211 = 3.616 - 13.2470 * em + 16.2900 * emsq;
808 g310 = -19.302 + 117.3900 * em - 228.4190 * emsq + 156.5910 * eoc;
809 g322 = -18.9068 + 109.7927 * em - 214.6334 * emsq + 146.5816 * eoc;
810 g410 = -41.122 + 242.6940 * em - 471.0940 * emsq + 313.9530 * eoc;
811 g422 = -146.407 + 841.8800 * em - 1629.014 * emsq + 1083.4350 * eoc;
812 g520 = -532.114 + 3017.977 * em - 5740.032 * emsq + 3708.2760 * eoc;
816 g211 = -72.099 + 331.819 * em - 508.738 * emsq + 266.724 * eoc;
817 g310 = -346.844 + 1582.851 * em - 2415.925 * emsq + 1246.113 * eoc;
818 g322 = -342.585 + 1554.908 * em - 2366.899 * emsq + 1215.972 * eoc;
819 g410 = -1052.797 + 4758.686 * em - 7193.992 * emsq + 3651.957 * eoc;
820 g422 = -3581.690 + 16178.110 * em - 24462.770 * emsq + 12422.520 * eoc;
822 g520 =-5149.66 + 29936.92 * em - 54087.36 * emsq + 31324.56 * eoc;
824 g520 = 1464.74 - 4664.75 * em + 3763.64 * emsq;
828 g533 = -919.22770 + 4988.6100 * em - 9064.7700 * emsq + 5542.21 * eoc;
829 g521 = -822.71072 + 4568.6173 * em - 8491.4146 * emsq + 5337.524 * eoc;
830 g532 = -853.66600 + 4690.2500 * em - 8624.7700 * emsq + 5341.4 * eoc;
834 g533 =-37995.780 + 161616.52 * em - 229838.20 * emsq + 109377.94 * eoc;
835 g521 =-51752.104 + 218913.95 * em - 309468.16 * emsq + 146349.42 * eoc;
836 g532 =-40023.880 + 170470.89 * em - 242699.48 * emsq + 115605.82 * eoc;
839 sini2= sinim * sinim;
840 f220 = 0.75 * (1.0 + 2.0 * cosim+cosisq);
842 f321 = 1.875 * sinim * (1.0 - 2.0 * cosim - 3.0 * cosisq);
843 f322 = -1.875 * sinim * (1.0 + 2.0 * cosim - 3.0 * cosisq);
844 f441 = 35.0 * sini2 * f220;
845 f442 = 39.3750 * sini2 * sini2;
846 f522 = 9.84375 * sinim * (sini2 * (1.0 - 2.0 * cosim- 5.0 * cosisq) +
847 0.33333333 * (-2.0 + 4.0 * cosim + 6.0 * cosisq) );
848 f523 = sinim * (4.92187512 * sini2 * (-2.0 - 4.0 * cosim +
849 10.0 * cosisq) + 6.56250012 * (1.0+2.0 * cosim - 3.0 * cosisq));
850 f542 = 29.53125 * sinim * (2.0 - 8.0 * cosim+cosisq *
851 (-12.0 + 8.0 * cosim + 10.0 * cosisq));
852 f543 = 29.53125 * sinim * (-2.0 - 8.0 * cosim+cosisq *
853 (12.0 + 8.0 * cosim - 10.0 * cosisq));
856 temp1 = 3.0 * xno2 * ainv2;
857 temp = temp1 * root22;
858 d2201 = temp * f220 * g201;
859 d2211 = temp * f221 * g211;
860 temp1 = temp1 * aonv;
861 temp = temp1 * root32;
862 d3210 = temp * f321 * g310;
863 d3222 = temp * f322 * g322;
864 temp1 = temp1 * aonv;
865 temp = 2.0 * temp1 * root44;
866 d4410 = temp * f441 * g410;
867 d4422 = temp * f442 * g422;
868 temp1 = temp1 * aonv;
869 temp = temp1 * root52;
870 d5220 = temp * f522 * g520;
871 d5232 = temp * f523 * g532;
872 temp = 2.0 * temp1 * root54;
873 d5421 = temp * f542 * g521;
874 d5433 = temp * f543 * g533;
875 xlamo = fmod(mo + nodeo + nodeo-theta - theta, twopi);
876 xfact = mdot + dmdt + 2.0 * (nodedot + dnodt - rptim) - no;
884 g200 = 1.0 + emsq * (-2.5 + 0.8125 * emsq);
885 g310 = 1.0 + 2.0 * emsq;
886 g300 = 1.0 + emsq * (-6.0 + 6.60937 * emsq);
887 f220 = 0.75 * (1.0 + cosim) * (1.0 + cosim);
888 f311 = 0.9375 * sinim * sinim * (1.0 + 3.0 * cosim) - 0.75 * (1.0 + cosim);
890 f330 = 1.875 * f330 * f330 * f330;
891 del1 = 3.0 * nm * nm * aonv * aonv;
892 del2 = 2.0 * del1 * f220 * g200 * q22;
893 del3 = 3.0 * del1 * f330 * g300 * q33 * aonv;
894 del1 = del1 * f311 * g310 * q31 * aonv;
895 xlamo = fmod(mo + nodeo + argpo - theta, twopi);
896 xfact = mdot + xpidot - rptim + dmdt + domdt + dnodt - no;
985 double d2201,
double d2211,
double d3210,
double d3222,
double d4410,
986 double d4422,
double d5220,
double d5232,
double d5421,
double d5433,
987 double dedt,
double del1,
double del2,
double del3,
double didt,
988 double dmdt,
double dnodt,
double domdt,
double argpo,
double argpdot,
989 double t,
double tc,
double gsto,
double xfact,
double xlamo,
991 double& atime,
double& em,
double& argpm,
double& inclm,
double& xli,
992 double& mm,
double& xni,
double& nodem,
double& dndt,
double& nm
995 const double twopi = 2.0 *
M_PI;
997 double delt, ft, theta, x2li, x2omi, xl, xldot , xnddt, xndt, xomi, g22, g32,
998 g44, g52, g54, fasx2, fasx4, fasx6, rptim , step2, stepn , stepp;
1008 rptim = 4.37526908801129966e-3;
1015 theta = fmod(gsto + tc * rptim, twopi);
1018 inclm = inclm + didt * t;
1019 argpm = argpm + domdt * t;
1020 nodem = nodem + dnodt * t;
1043 if ((atime == 0.0) || (t * atime <= 0.0) || (fabs(t) < fabs(atime)) )
1056 while (iretn == 381)
1062 xndt = del1 * sin(xli - fasx2) + del2 * sin(2.0 * (xli - fasx4)) +
1063 del3 * sin(3.0 * (xli - fasx6));
1064 xldot = xni + xfact;
1065 xnddt = del1 * cos(xli - fasx2) +
1066 2.0 * del2 * cos(2.0 * (xli - fasx4)) +
1067 3.0 * del3 * cos(3.0 * (xli - fasx6));
1068 xnddt = xnddt * xldot;
1073 xomi = argpo + argpdot * atime;
1074 x2omi = xomi + xomi;
1076 xndt = d2201 * sin(x2omi + xli - g22) + d2211 * sin(xli - g22) +
1077 d3210 * sin(xomi + xli - g32) + d3222 * sin(-xomi + xli - g32)+
1078 d4410 * sin(x2omi + x2li - g44)+ d4422 * sin(x2li - g44) +
1079 d5220 * sin(xomi + xli - g52) + d5232 * sin(-xomi + xli - g52)+
1080 d5421 * sin(xomi + x2li - g54) + d5433 * sin(-xomi + x2li - g54);
1081 xldot = xni + xfact;
1082 xnddt = d2201 * cos(x2omi + xli - g22) + d2211 * cos(xli - g22) +
1083 d3210 * cos(xomi + xli - g32) + d3222 * cos(-xomi + xli - g32) +
1084 d5220 * cos(xomi + xli - g52) + d5232 * cos(-xomi + xli - g52) +
1085 2.0 * (d4410 * cos(x2omi + x2li - g44) +
1086 d4422 * cos(x2li - g44) + d5421 * cos(xomi + x2li - g54) +
1087 d5433 * cos(-xomi + x2li - g54));
1088 xnddt = xnddt * xldot;
1093 if (fabs(t - atime) >= stepp)
1105 xli = xli + xldot * delt + xndt * step2;
1106 xni = xni + xndt * delt + xnddt * step2;
1107 atime = atime + delt;
1111 nm = xni + xndt * ft + xnddt * ft * ft * 0.5;
1112 xl = xli + xldot * ft + xndt * ft * ft * 0.5;
1115 mm = xl - 2.0 * nodem + 2.0 * theta;
1120 mm = xl - nodem - argpm + theta;
1183 double ecco,
double epoch,
double inclo,
double& no,
1185 double& ainv,
double& ao,
double& con41,
double& con42,
double& cosio,
1186 double& cosio2,
double& eccsq,
double& omeosq,
double& posq,
1187 double& rp,
double& rteosq,
double& sinio ,
double& gsto,
1193 double ak, d1, del, adel, po, x2o3, j2, xke,
1194 tumin, mu, radiusearthkm, j3, j4, j3oj2;
1198 double ts70, tfrac, c1, thgr70, fk5r, c1p2p;
1199 const double twopi = 2.0 *
M_PI;
1203 getgravconst( whichconst, tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2 );
1207 eccsq = ecco * ecco;
1208 omeosq = 1.0 - eccsq;
1209 rteosq = sqrt(omeosq);
1211 cosio2 = cosio * cosio;
1214 ak = pow(xke / no, x2o3);
1215 d1 = 0.75 * j2 * (3.0 * cosio2 - 1.0) / (rteosq * omeosq);
1216 del = d1 / (ak * ak);
1217 adel = ak * (1.0 - del * del - del *
1218 (1.0 / 3.0 + 134.0 * del * del / 81.0));
1219 del = d1/(adel * adel);
1220 no = no / (1.0 + del);
1222 ao = pow(xke / no, x2o3);
1225 con42 = 1.0 - 5.0 * cosio2;
1226 con41 = -con42-cosio2-cosio2;
1229 rp = ao * (1.0 - ecco);
1237 ts70 = epoch - 7305.0;
1238 ds70 = floor(ts70 + 1.0e-8);
1239 tfrac = ts70 - ds70;
1241 c1 = 1.72027916940703639e-2;
1242 thgr70= 1.7321343856509374;
1243 fk5r = 5.07551419432269442e-15;
1245 gsto = fmod( thgr70 + c1*ds70 + c1p2p*tfrac + ts70*ts70*fk5r, twopi);
1247 gsto = gsto + twopi;
1250 gsto =
gstime(epoch + 2433281.5);
1340 gravconsttype whichconst,
char opsmode,
const int satn,
const double epoch,
1341 const double xbstar,
const double xecco,
const double xargpo,
1342 const double xinclo,
const double xmo,
const double xno,
1343 const double xnodeo,
elsetrec& satrec
1347 double ao, ainv, con42, cosio, sinio, cosio2, eccsq,
1348 omeosq, posq, rp, rteosq,
1349 cnodm , snodm , cosim , sinim , cosomm, sinomm, cc1sq ,
1350 cc2 , cc3 , coef , coef1 , cosio4, day , dndt ,
1351 em , emsq , eeta , etasq , gam , argpm , nodem ,
1352 inclm , mm , nm , perige, pinvsq, psisq , qzms24,
1353 rtemsq, s1 , s2 , s3 , s4 , s5 , s6 ,
1354 s7 , sfour , ss1 , ss2 , ss3 , ss4 , ss5 ,
1355 ss6 , ss7 , sz1 , sz2 , sz3 , sz11 , sz12 ,
1356 sz13 , sz21 , sz22 , sz23 , sz31 , sz32 , sz33 ,
1357 tc , temp , temp1 , temp2 , temp3 , tsi , xpidot,
1358 xhdot1, z1 , z2 , z3 , z11 , z12 , z13 ,
1359 z21 , z22 , z23 , z31 , z32 , z33,
1360 qzms2t, ss, j2, j3oj2, j4, x2o3, r[3], v[3],
1361 tumin, mu, radiusearthkm, xke, j3;
1367 const double temp4 = 1.5e-12;
1371 satrec.
con41 = 0.0; satrec.
cc1 = 0.0; satrec.
cc4 = 0.0;
1372 satrec.
cc5 = 0.0; satrec.
d2 = 0.0; satrec.
d3 = 0.0;
1373 satrec.
d4 = 0.0; satrec.
delmo = 0.0; satrec.
eta = 0.0;
1375 satrec.
t = 0.0; satrec.
t2cof = 0.0; satrec.
t3cof = 0.0;
1385 satrec.
del1 = 0.0; satrec.
del2 = 0.0; satrec.
del3 = 0.0;
1387 satrec.
domdt = 0.0; satrec.
e3 = 0.0; satrec.
ee2 = 0.0;
1388 satrec.
peo = 0.0; satrec.
pgho = 0.0; satrec.
pho = 0.0;
1389 satrec.
pinco = 0.0; satrec.
plo = 0.0; satrec.
se2 = 0.0;
1390 satrec.
se3 = 0.0; satrec.
sgh2 = 0.0; satrec.
sgh3 = 0.0;
1391 satrec.
sgh4 = 0.0; satrec.
sh2 = 0.0; satrec.
sh3 = 0.0;
1392 satrec.
si2 = 0.0; satrec.
si3 = 0.0; satrec.
sl2 = 0.0;
1393 satrec.
sl3 = 0.0; satrec.
sl4 = 0.0; satrec.
gsto = 0.0;
1395 satrec.
xgh4 = 0.0; satrec.
xh2 = 0.0; satrec.
xh3 = 0.0;
1396 satrec.
xi2 = 0.0; satrec.
xi3 = 0.0; satrec.
xl2 = 0.0;
1397 satrec.
xl3 = 0.0; satrec.
xl4 = 0.0; satrec.
xlamo = 0.0;
1399 satrec.
xli = 0.0; satrec.
xni = 0.0;
1405 satrec.
bstar = xbstar;
1406 satrec.
ecco = xecco;
1407 satrec.
argpo = xargpo;
1408 satrec.
inclo = xinclo;
1411 satrec.
nodeo = xnodeo;
1418 getgravconst( whichconst, tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2 );
1419 ss = 78.0 / radiusearthkm + 1.0;
1420 qzms2t = pow(((120.0 - 78.0) / radiusearthkm), 4);
1429 ainv, ao, satrec.
con41, con42, cosio, cosio2, eccsq, omeosq,
1443 if ((omeosq >= 0.0 ) || ( satrec.
no >= 0.0))
1446 if (rp < (220.0 / radiusearthkm + 1.0))
1450 perige = (rp - 1.0) * radiusearthkm;
1455 sfour = perige - 78.0;
1458 qzms24 = pow(((120.0 - sfour) / radiusearthkm), 4.0);
1459 sfour = sfour / radiusearthkm + 1.0;
1461 pinvsq = 1.0 / posq;
1463 tsi = 1.0 / (ao - sfour);
1464 satrec.
eta = ao * satrec.
ecco * tsi;
1465 etasq = satrec.
eta * satrec.
eta;
1466 eeta = satrec.
ecco * satrec.
eta;
1467 psisq = fabs(1.0 - etasq);
1468 coef = qzms24 * pow(tsi, 4.0);
1469 coef1 = coef / pow(psisq, 3.5);
1470 cc2 = coef1 * satrec.
no * (ao * (1.0 + 1.5 * etasq + eeta *
1471 (4.0 + etasq)) + 0.375 * j2 * tsi / psisq * satrec.
con41 *
1472 (8.0 + 3.0 * etasq * (8.0 + etasq)));
1475 if (satrec.
ecco > 1.0e-4)
1476 cc3 = -2.0 * coef * tsi * j3oj2 * satrec.
no * sinio / satrec.
ecco;
1477 satrec.
x1mth2 = 1.0 - cosio2;
1478 satrec.
cc4 = 2.0* satrec.
no * coef1 * ao * omeosq *
1479 (satrec.
eta * (2.0 + 0.5 * etasq) + satrec.
ecco *
1480 (0.5 + 2.0 * etasq) - j2 * tsi / (ao * psisq) *
1481 (-3.0 * satrec.
con41 * (1.0 - 2.0 * eeta + etasq *
1482 (1.5 - 0.5 * eeta)) + 0.75 * satrec.
x1mth2 *
1483 (2.0 * etasq - eeta * (1.0 + etasq)) * cos(2.0 * satrec.
argpo)));
1484 satrec.
cc5 = 2.0 * coef1 * ao * omeosq * (1.0 + 2.75 *
1485 (etasq + eeta) + eeta * etasq);
1486 cosio4 = cosio2 * cosio2;
1487 temp1 = 1.5 * j2 * pinvsq * satrec.
no;
1488 temp2 = 0.5 * temp1 * j2 * pinvsq;
1489 temp3 = -0.46875 * j4 * pinvsq * pinvsq * satrec.
no;
1490 satrec.
mdot = satrec.
no + 0.5 * temp1 * rteosq * satrec.
con41 + 0.0625 *
1491 temp2 * rteosq * (13.0 - 78.0 * cosio2 + 137.0 * cosio4);
1492 satrec.
argpdot = -0.5 * temp1 * con42 + 0.0625 * temp2 *
1493 (7.0 - 114.0 * cosio2 + 395.0 * cosio4) +
1494 temp3 * (3.0 - 36.0 * cosio2 + 49.0 * cosio4);
1495 xhdot1 = -temp1 * cosio;
1496 satrec.
nodedot = xhdot1 + (0.5 * temp2 * (4.0 - 19.0 * cosio2) +
1497 2.0 * temp3 * (3.0 - 7.0 * cosio2)) * cosio;
1501 if (satrec.
ecco > 1.0e-4)
1502 satrec.
xmcof = -x2o3 * coef * satrec.
bstar / eeta;
1503 satrec.
nodecf = 3.5 * omeosq * xhdot1 * satrec.
cc1;
1506 if (fabs(cosio+1.0) > 1.5e-12)
1507 satrec.
xlcof = -0.25 * j3oj2 * sinio * (3.0 + 5.0 * cosio) / (1.0 + cosio);
1509 satrec.
xlcof = -0.25 * j3oj2 * sinio * (3.0 + 5.0 * cosio) / temp4;
1510 satrec.
aycof = -0.5 * j3oj2 * sinio;
1511 satrec.
delmo = pow((1.0 + satrec.
eta * cos(satrec.
mo)), 3);
1513 satrec.
x7thm1 = 7.0 * cosio2 - 1.0;
1516 if ((2*
M_PI / satrec.
no) >= 225.0)
1521 inclm = satrec.
inclo;
1526 satrec.
no, snodm, cnodm, sinim, cosim,sinomm, cosomm,
1527 day, satrec.
e3, satrec.
ee2, em, emsq, gam,
1529 satrec.
plo, rtemsq, satrec.
se2, satrec.
se3,
1532 satrec.
sl2, satrec.
sl3, satrec.
sl4, s1, s2, s3, s4, s5,
1533 s6, s7, ss1, ss2, ss3, ss4, ss5, ss6, ss7, sz1, sz2, sz3,
1534 sz11, sz12, sz13, sz21, sz22, sz23, sz31, sz32, sz33,
1537 satrec.
xl3, satrec.
xl4, nm, z1, z2, z3, z11,
1538 z12, z13, z21, z22, z23, z31, z32, z33,
1547 satrec.
sl2, satrec.
sl3, satrec.
sl4, satrec.
t,
1562 cosim, emsq, satrec.
argpo, s1, s2, s3, s4, s5, sinim, ss1, ss2, ss3, ss4,
1563 ss5, sz1, sz3, sz11, sz13, sz21, sz23, sz31, sz33, satrec.
t, tc,
1565 satrec.
nodedot, xpidot, z1, z3, z11, z13, z21, z23, z31, z33,
1566 satrec.
ecco, eccsq, em, argpm, inclm, mm, nm, nodem,
1578 if (satrec.
isimp != 1)
1580 cc1sq = satrec.
cc1 * satrec.
cc1;
1581 satrec.
d2 = 4.0 * ao * tsi * cc1sq;
1582 temp = satrec.
d2 * tsi * satrec.
cc1 / 3.0;
1583 satrec.
d3 = (17.0 * ao + sfour) * temp;
1584 satrec.
d4 = 0.5 * temp * ao * tsi * (221.0 * ao + 31.0 * sfour) *
1586 satrec.
t3cof = satrec.
d2 + 2.0 * cc1sq;
1587 satrec.
t4cof = 0.25 * (3.0 * satrec.
d3 + satrec.
cc1 *
1588 (12.0 * satrec.
d2 + 10.0 * cc1sq));
1589 satrec.
t5cof = 0.2 * (3.0 * satrec.
d4 +
1590 12.0 * satrec.
cc1 * satrec.
d3 +
1591 6.0 * satrec.
d2 * satrec.
d2 +
1592 15.0 * cc1sq * (2.0 * satrec.
d2 + cc1sq));
1599 sgp4(whichconst, satrec, 0.0, r, v);
1698 double r[3],
double v[3]
1701 double am , axnl , aynl , betal , cosim , cnod ,
1702 cos2u, coseo1, cosi , cosip , cosisq, cossu , cosu,
1703 delm , delomg, em , emsq , ecose , el2 , eo1 ,
1704 ep , esine , argpm, argpp , argpdf, pl, mrt = 0.0,
1705 mvt , rdotl , rl , rvdot , rvdotl, sinim ,
1706 sin2u, sineo1, sini , sinip , sinsu , sinu ,
1707 snod , su , t2 , t3 , t4 , tem5 , temp,
1708 temp1, temp2 , tempa, tempe , templ , u , ux ,
1709 uy , uz , vx , vy , vz , inclm , mm ,
1710 nm , nodem, xinc , xincp , xl , xlm , mp ,
1711 xmdf , xmx , xmy , nodedf, xnode , nodep, tc , dndt,
1712 twopi, x2o3 , j2 , j3 , tumin, j4 , xke , j3oj2, radiusearthkm,
1720 const double temp4 = 1.5e-12;
1724 getgravconst( whichconst, tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2 );
1725 vkmpersec = radiusearthkm * xke/60.0;
1732 xmdf = satrec.
mo + satrec.
mdot * satrec.
t;
1737 t2 = satrec.
t * satrec.
t;
1738 nodem = nodedf + satrec.
nodecf * t2;
1739 tempa = 1.0 - satrec.
cc1 * satrec.
t;
1740 tempe = satrec.
bstar * satrec.
cc4 * satrec.
t;
1741 templ = satrec.
t2cof * t2;
1743 if (satrec.
isimp != 1)
1745 delomg = satrec.
omgcof * satrec.
t;
1746 delm = satrec.
xmcof *
1747 (pow((1.0 + satrec.
eta * cos(xmdf)), 3) -
1749 temp = delomg + delm;
1751 argpm = argpdf - temp;
1754 tempa = tempa - satrec.
d2 * t2 - satrec.
d3 * t3 -
1756 tempe = tempe + satrec.
bstar * satrec.
cc5 * (sin(mm) -
1758 templ = templ + satrec.
t3cof * t3 + t4 * (satrec.
t4cof +
1759 satrec.
t * satrec.
t5cof);
1764 inclm = satrec.
inclo;
1765 if (satrec.
method ==
'd')
1780 em, argpm, inclm, satrec.
xli, mm, satrec.
xni,
1792 am = pow((xke / nm),x2o3) * tempa * tempa;
1793 nm = xke / pow(am, 1.5);
1798 if ((em >= 1.0) || (em < -0.001) )
1808 mm = mm + satrec.
no * templ;
1809 xlm = mm + argpm + nodem;
1813 nodem = fmod(nodem, twopi);
1814 argpm = fmod(argpm, twopi);
1815 xlm = fmod(xlm, twopi);
1816 mm = fmod(xlm - argpm - nodem, twopi);
1830 if (satrec.
method ==
'd')
1850 nodep = nodep +
M_PI;
1851 argpp = argpp -
M_PI;
1853 if ((ep < 0.0 ) || ( ep > 1.0))
1863 if (satrec.
method ==
'd')
1867 satrec.
aycof = -0.5*j3oj2*sinip;
1869 if (fabs(cosip+1.0) > 1.5e-12)
1870 satrec.
xlcof = -0.25 * j3oj2 * sinip * (3.0 + 5.0 * cosip) / (1.0 + cosip);
1872 satrec.
xlcof = -0.25 * j3oj2 * sinip * (3.0 + 5.0 * cosip) / temp4;
1874 axnl = ep * cos(argpp);
1875 temp = 1.0 / (am * (1.0 - ep * ep));
1876 aynl = ep* sin(argpp) + temp * satrec.
aycof;
1877 xl = mp + argpp + nodep + temp * satrec.
xlcof * axnl;
1880 u = fmod(xl - nodep, twopi);
1886 while (( fabs(tem5) >= 1.0e-12) && (ktr <= 10) )
1890 tem5 = 1.0 - coseo1 * axnl - sineo1 * aynl;
1891 tem5 = (u - aynl * coseo1 + axnl * sineo1 - eo1) / tem5;
1892 if(fabs(tem5) >= 0.95)
1893 tem5 = tem5 > 0.0 ? 0.95 : -0.95;
1899 ecose = axnl*coseo1 + aynl*sineo1;
1900 esine = axnl*sineo1 - aynl*coseo1;
1901 el2 = axnl*axnl + aynl*aynl;
1912 rl = am * (1.0 - ecose);
1913 rdotl = sqrt(am) * esine/rl;
1914 rvdotl = sqrt(pl) / rl;
1915 betal = sqrt(1.0 - el2);
1916 temp = esine / (1.0 + betal);
1917 sinu = am / rl * (sineo1 - aynl - axnl * temp);
1918 cosu = am / rl * (coseo1 - axnl + aynl * temp);
1919 su = atan2(sinu, cosu);
1920 sin2u = (cosu + cosu) * sinu;
1921 cos2u = 1.0 - 2.0 * sinu * sinu;
1923 temp1 = 0.5 * j2 * temp;
1924 temp2 = temp1 * temp;
1927 if (satrec.
method ==
'd')
1929 cosisq = cosip * cosip;
1930 satrec.
con41 = 3.0*cosisq - 1.0;
1931 satrec.
x1mth2 = 1.0 - cosisq;
1932 satrec.
x7thm1 = 7.0*cosisq - 1.0;
1934 mrt = rl * (1.0 - 1.5 * temp2 * betal * satrec.
con41) +
1935 0.5 * temp1 * satrec.
x1mth2 * cos2u;
1936 su = su - 0.25 * temp2 * satrec.
x7thm1 * sin2u;
1937 xnode = nodep + 1.5 * temp2 * cosip * sin2u;
1938 xinc = xincp + 1.5 * temp2 * cosip * sinip * cos2u;
1939 mvt = rdotl - nm * temp1 * satrec.
x1mth2 * sin2u / xke;
1940 rvdot = rvdotl + nm * temp1 * (satrec.
x1mth2 * cos2u +
1941 1.5 * satrec.
con41) / xke;
1952 ux = xmx * sinsu + cnod * cossu;
1953 uy = xmy * sinsu + snod * cossu;
1955 vx = xmx * cossu - cnod * sinsu;
1956 vy = xmy * cossu - snod * sinsu;
1960 r[0] = (mrt * ux)* radiusearthkm;
1961 r[1] = (mrt * uy)* radiusearthkm;
1962 r[2] = (mrt * uz)* radiusearthkm;
1963 v[0] = (mvt * ux + rvdot * vx) * vkmpersec;
1964 v[1] = (mvt * uy + rvdot * vy) * vkmpersec;
1965 v[2] = (mvt * uz + rvdot * vz) * vkmpersec;
2012 const double twopi = 2.0 *
M_PI;
2016 tut1 = (jdut1 - 2451545.0) / 36525.0;
2017 temp = -6.2e-6* tut1 * tut1 * tut1 + 0.093104 * tut1 * tut1 +
2018 (876600.0*3600 + 8640184.812866) * tut1 + 67310.54841;
2019 temp = fmod(temp * deg2rad / 240.0, twopi);
2063 double& radiusearthkm,
2077 radiusearthkm = 6378.135;
2081 j3 = -0.00000253881;
2082 j4 = -0.00000165597;
2088 radiusearthkm = 6378.135;
2089 xke = 60.0 / sqrt(radiusearthkm*radiusearthkm*radiusearthkm/mu);
2092 j3 = -0.00000253881;
2093 j4 = -0.00000165597;
2099 radiusearthkm = 6378.137;
2100 xke = 60.0 / sqrt(radiusearthkm*radiusearthkm*radiusearthkm/mu);
2102 j2 = 0.00108262998905;
2103 j3 = -0.00000253215306;
2104 j4 = -0.00000161098761;
2108 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)