edu.wisc.ssec.mcidasv.data.adde.sgp4
Class SGP4unit

java.lang.Object
  extended by edu.wisc.ssec.mcidasv.data.adde.sgp4.SGP4unit

public class SGP4unit
extends Object

Author:
Shawn E. Gano, shawn@gano.name

Nested Class Summary
static class SGP4unit.Gravconsttype
           
 
Field Summary
static double pi
           
 
Constructor Summary
SGP4unit()
           
 
Method Summary
private static double[] 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)
          ----------------------------------------------------------------------------- Java version outputs double array: [ep,inclp,nodep,argpp,mp] ------------------------------------------------------------------------------- procedure dpper this procedure provides deep space long period periodic contributions to the mean elements.
private static double[] dscom(double epoch, double ep, double argpp, double tc, double inclp, double nodep, double np, SGP4SatData satrec)
           
private static double[] dsinit(SGP4unit.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, SGP4SatData satrec, double em, double argpm, double inclm, double mm, double nm, double nodem)
           
private static double[] 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 em, double argpm, double inclm, double mm, double nodem, SGP4SatData satrec, double nm)
           
static double[] getgravconst(SGP4unit.Gravconsttype whichconst)
           
static double gstime(double jdut1)
          ----------------------------------------------------------------------------- function gstime this function finds the greenwich sidereal time.
static double[] initl(int satn, SGP4unit.Gravconsttype whichconst, double ecco, double epoch, double inclo, SGP4SatData satrec)
          ----------------------------------------------------------------------------- procedure initl this procedure initializes the spg4 propagator. all the initialization is consolidated here instead of having multiple loops inside other routines.
static boolean sgp4(SGP4SatData satrec, double tsince, double[] r, double[] v)
           
static boolean sgp4init(SGP4unit.Gravconsttype whichconst, char opsmode, int satn, double epoch, double xbstar, double xecco, double xargpo, double xinclo, double xmo, double xno, double xnodeo, SGP4SatData satrec)
          ----------------------------------------------------------------------------- This method is called from within SGP4utils.readTLEandIniSGP4 and therefore not typically called elsewhere. ----------------------------------------------------------------------------- procedure sgp4init this procedure initializes variables for sgp4.
static boolean sgp4Prop2JD(SGP4SatData satrec, double jd, double[] r, double[] v)
          Similar to sgp4(..) but time parameter is the Julian Date to the propagated to.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

pi

public static double pi
Constructor Detail

SGP4unit

public SGP4unit()
Method Detail

dpper

private static double[] 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)
----------------------------------------------------------------------------- Java version outputs double array: [ep,inclp,nodep,argpp,mp] ------------------------------------------------------------------------------- procedure dpper this procedure provides deep space long period periodic contributions to the mean elements. by design, these periodics are zero at epoch. this used to be dscom which included initialization, but it's really a recurring function. author : david vallado 719-573-2600 28 jun 2005 inputs : e3 - ee2 - peo - pgho - pho - pinco - plo - se2 , se3 , sgh2, sgh3, sgh4, sh2, sh3, si2, si3, sl2, sl3, sl4 - t - xh2, xh3, xi2, xi3, xl2, xl3, xl4 - zmol - zmos - ep - eccentricity 0.0 - 1.0 inclo - inclination - needed for lyddane modification nodep - right ascension of ascending node argpp - argument of perigee mp - mean anomaly outputs : ep - eccentricity 0.0 - 1.0 inclp - inclination nodep - right ascension of ascending node argpp - argument of perigee mp - mean anomaly locals : alfdp - betdp - cosip , sinip , cosop , sinop , dalf - dbet - dls - f2, f3 - pe - pgh - ph - pinc - pl - sel , ses , sghl , sghs , shl , shs , sil , sinzf , sis , sll , sls xls - xnoh - zf - zm - coupling : none. references : hoots, roehrich, norad spacetrack report #3 1980 hoots, norad spacetrack report #6 1986 hoots, schumacher and glover 2004 vallado, crawford, hujsak, kelso 2006 ----------------------------------------------------------------------------


dscom

private static double[] dscom(double epoch,
                              double ep,
                              double argpp,
                              double tc,
                              double inclp,
                              double nodep,
                              double np,
                              SGP4SatData satrec)

dsinit

private static double[] dsinit(SGP4unit.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,
                               SGP4SatData satrec,
                               double em,
                               double argpm,
                               double inclm,
                               double mm,
                               double nm,
                               double nodem)

dspace

private static double[] 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 em,
                               double argpm,
                               double inclm,
                               double mm,
                               double nodem,
                               SGP4SatData satrec,
                               double nm)

initl

public static double[] initl(int satn,
                             SGP4unit.Gravconsttype whichconst,
                             double ecco,
                             double epoch,
                             double inclo,
                             SGP4SatData satrec)
----------------------------------------------------------------------------- procedure initl this procedure initializes the spg4 propagator. all the initialization is consolidated here instead of having multiple loops inside other routines. author : david vallado 719-573-2600 28 jun 2005 inputs : ecco - eccentricity 0.0 - 1.0 epoch - epoch time in days from jan 0, 1950. 0 hr inclo - inclination of satellite no - mean motion of satellite satn - satellite number outputs : ainv - 1.0 / a ao - semi major axis con41 - con42 - 1.0 - 5.0 cos(i) cosio - cosine of inclination cosio2 - cosio squared eccsq - eccentricity squared method - flag for deep space 'd', 'n' omeosq - 1.0 - ecco * ecco posq - semi-parameter squared rp - radius of perigee rteosq - square root of (1.0 - ecco*ecco) sinio - sine of inclination gsto - gst at time of observation rad no - mean motion of satellite locals : ak - d1 - del - adel - po - coupling : getgravconst gstime - find greenwich sidereal time from the julian date references : hoots, roehrich, norad spacetrack report #3 1980 hoots, norad spacetrack report #6 1986 hoots, schumacher and glover 2004 vallado, crawford, hujsak, kelso 2006 ----------------------------------------------------------------------------

Parameters:
satn - satellite number
whichconst - which constants set to use
ecco - eccentricity (0,1)
epoch - epoch time in days from jan 0, 1950. 0 hr
inclo - inclination of satellite
satrec - satellite object that stores needed SGP4 data
Returns:
double array with these values: [ainv, ao, con42, cosio, cosio2, eccsq, omeosq, posq, rp, rteosq, sinio]

sgp4init

public static boolean sgp4init(SGP4unit.Gravconsttype whichconst,
                               char opsmode,
                               int satn,
                               double epoch,
                               double xbstar,
                               double xecco,
                               double xargpo,
                               double xinclo,
                               double xmo,
                               double xno,
                               double xnodeo,
                               SGP4SatData satrec)
----------------------------------------------------------------------------- This method is called from within SGP4utils.readTLEandIniSGP4 and therefore not typically called elsewhere. ----------------------------------------------------------------------------- procedure sgp4init this procedure initializes variables for sgp4. author : david vallado 719-573-2600 28 jun 2005 inputs : opsmode - mode of operation afspc or improved 'a', 'i' whichconst - which set of constants to use 72, 84 satn - satellite number bstar - sgp4 type drag coefficient kg/m2er ecco - eccentricity epoch - epoch time in days from jan 0, 1950. 0 hr argpo - argument of perigee (output if ds) inclo - inclination mo - mean anomaly (output if ds) no - mean motion nodeo - right ascension of ascending node outputs : satrec - common values for subsequent calls return code - non-zero on error. 1 - mean elements, ecc >= 1.0 or ecc < -0.001 or a < 0.95 er 2 - mean motion less than 0.0 3 - pert elements, ecc < 0.0 or ecc > 1.0 4 - semi-latus rectum < 0.0 5 - epoch elements are sub-orbital 6 - satellite has decayed locals : cnodm , snodm , cosim , sinim , cosomm , sinomm cc1sq , cc2 , cc3 coef , coef1 cosio4 - day - dndt - em - eccentricity emsq - eccentricity squared eeta - etasq - gam - argpm - argument of perigee nodem - inclm - inclination mm - mean anomaly nm - mean motion perige - perigee pinvsq - psisq - qzms24 - rtemsq - s1, s2, s3, s4, s5, s6, s7 - sfour - ss1, ss2, ss3, ss4, ss5, ss6, ss7 - sz1, sz2, sz3 sz11, sz12, sz13, sz21, sz22, sz23, sz31, sz32, sz33 - tc - temp - temp1, temp2, temp3 - tsi - xpidot - xhdot1 - z1, z2, z3 - z11, z12, z13, z21, z22, z23, z31, z32, z33 - coupling : getgravconst- initl - dscom - dpper - dsinit - sgp4 - references : hoots, roehrich, norad spacetrack report #3 1980 hoots, norad spacetrack report #6 1986 hoots, schumacher and glover 2004 vallado, crawford, hujsak, kelso 2006 ----------------------------------------------------------------------------

Parameters:
whichconst -
opsmode -
satn -
epoch -
xbstar -
xecco -
xargpo -
xinclo -
xmo -
xno -
xnodeo -
satrec -
Returns:
if initialization was successful

sgp4Prop2JD

public static boolean sgp4Prop2JD(SGP4SatData satrec,
                                  double jd,
                                  double[] r,
                                  double[] v)
Similar to sgp4(..) but time parameter is the Julian Date to the propagated to. This method was not orgiinally in the CSSI C++ version.

Parameters:
satrec - satellite SGP4 data object
jd - Julian Date
r - position vector [km] return array (needs to be of size 3)
v - velocity [km/sec] return array (needs to be of size 3)
Returns:

sgp4

public static boolean sgp4(SGP4SatData satrec,
                           double tsince,
                           double[] r,
                           double[] v)

gstime

public static double gstime(double jdut1)
----------------------------------------------------------------------------- function gstime this function finds the greenwich sidereal time. author : david vallado 719-573-2600 1 mar 2001 inputs description range / units jdut1 - julian date in ut1 days from 4713 bc outputs : gstime - greenwich sidereal time 0 to 2pi rad locals : temp - temporary variable for doubles rad tut1 - julian centuries from the jan 1, 2000 12 h epoch (ut1) coupling : none references : vallado 2004, 191, eq 3-45 ---------------------------------------------------------------------------

Parameters:
jdut1 -
Returns:

getgravconst

public static double[] getgravconst(SGP4unit.Gravconsttype whichconst)