Gravity Engine 2 3.0
Loading...
Searching...
No Matches
GravityEngine2.SGP4unit Class Reference

Public Types

enum  Gravconsttype { wgs72old , wgs72 , wgs84 }
 

Static Public Member Functions

static double BrowerMeanToTLEMean (SGP4SatData satrec, double aE_km, double incl, double ecc)
 
static double[] getgravconst (Gravconsttype whichconst)
 
static double gstime (double jdut1)
 
static double[] initl (int satn, Gravconsttype whichconst, double ecco, double epoch, double inclo, SGP4SatData satrec)
 
static string Sgp4Error (int err)
 
static bool sgp4init (Gravconsttype whichconst, char opsmode, int satn, double epoch, double xbstar, double xecco, double xargpo, double xinclo, double xmo, double xno, double xnodeo, ref SGP4SatData satrec)
 
static int double3 double3 Orbital.COEStruct coe SGP4Prop (ref NativeArray< SGP4Propagator.PropInfo > propInfo, int index, double tsince)
 
static int double3 double3 Orbital.COEStruct coe SGP4Prop (ref SGP4SatData satrec, double tsince)
 

Static Public Attributes

static int error
 A (ick) copy to allow pass by reference and avoid struct copying in the job system.
 
static double pi = 3.14159265358979323846
 
static int double3 r
 
static int double3 double3 v
 

Detailed Description

Vallado/CSSI SGP4 propogator Converted to Java from C++ by: Shawn E. Gano, 19 June 2009 The goal of this conversion was to stick as closely to the orginal code as possible and not trying to convert it to OO design. This code has been compared using the verification TLEs and "SGP4verification.java" and the results were virtually identical to the c++ version.

Only rare differences were found in the results on the order of 0.001 cm.

                          sgp4unit.cpp

this file contains the sgp4 procedures for analytical propagation of a satellite. the code was originally released in the 1980 and 1986 spacetrack papers. a detailed discussion of the theory and history may be found in the 2006 aiaa paper by vallado, crawford, hujsak, and kelso.

                    companion code for
       fundamentals of astrodynamics and applications
                            2007
                      by david vallado

(w) 719-573-2600, email dvall.nosp@m.ado@.nosp@m.agi.c.nosp@m.om

current : 3 Nov 08 david vallado put returns in for error codes changes : 29 sep 08 david vallado fix atime for faster operation in dspace add operationmode for afspc (a) or improved (i) performance mode 16 jun 08 david vallado update small eccentricity check 16 nov 07 david vallado misc fixes for better compliance 20 apr 07 david vallado misc fixes for constants 11 aug 06 david vallado chg lyddane choice back to strn3, constants, misc doc 15 dec 05 david vallado misc fixes 26 jul 05 david vallado fixes for paper note that each fix is preceded by a comment with "sgp4fix" and an explanation of what was changed 10 aug 04 david vallado 2nd printing baseline working 14 may 01 david vallado 2nd edition baseline 80 norad

original baseline

19 June 2009 converted to Java by:

Author
Shawn E. Gano, shawn.nosp@m.@gan.nosp@m.o.nam.nosp@m.e

Member Function Documentation

◆ gstime()

static double GravityEngine2.SGP4unit.gstime ( double jdut1)
static

                     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

◆ initl()

static double[] GravityEngine2.SGP4unit.initl ( int satn,
Gravconsttype whichconst,
double ecco,
double epoch,
double inclo,
SGP4SatData satrec )
static

                     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
satnsatellite number
whichconstwhich constants set to use
eccoeccentricity (0,1)
epochepoch time in days from jan 0, 1950. 0 hr
incloinclination of satellite
satrecsatellite object that stores needed SGP4 data
Returns
double array with these values: [ainv, ao, con42, cosio, cosio2, eccsq, omeosq, posq, rp, rteosq, sinio]

◆ sgp4init()

static bool GravityEngine2.SGP4unit.sgp4init ( Gravconsttype whichconst,
char opsmode,
int satn,
double epoch,
double xbstar,
double xecco,
double xargpo,
double xinclo,
double xmo,
double xno,
double xnodeo,
ref SGP4SatData satrec )
static

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

Member Data Documentation

◆ error

static int GravityEngine2.SGP4unit.error
static

A (ick) copy to allow pass by reference and avoid struct copying in the job system.

This is the code path called from within the GEPhysicsJob.

I suspect there is much in here that could be improved but I am avoiding the rabbit hole since this is external code.

Parameters
propInfo
index
tsince
Returns

The documentation for this class was generated from the following file: