Hello All,
I am new in using OREKIT. I was wondering if its possible to mimic
TLEPropagator by incorporating similar force models into a Numerical
propagator. Basically, I am trying to replicate the results of the "Satellite
Orbital Conjunction Reports Assessing Threatening Encounters in
Space" (SOCRATES) that are given in the celestrak
website :http://celestrak.com/cgi-bin/searchSOCRATES.pl?IDENT=NAME& NAME_TEXT1=&NAME_TEXT2=&ORDER= MINRANGE&MAX=10
I am able to get exact (very closer : +/-0.1 seconds) closest approach
results, but not with a Numerical Propagator (with J2 perturbations). I am
aware TLEprop is based on SGP4/SDP4 model but I wonder if it is possible to
bring that model into Numerical. Because I would like to experiment by
applying small delta-Vs to the state to increase the closest approach distance
which cannot be done within a TLEPropagator.
I used something like this(in Python):
objA_tle = TLE("1 40037U 14033AD 17085.78642693 .00000199 00000-0 28987-4
0 9998",
"2 40037 97.9175 354.9522 0013624 210.8425 149.1991 14.86189764149576")
objB_tle = TLE("1 16263U 85108B 17085.79797911 .00000114 00000-0 11121-4
0 9997",
"2 16263 82.5064 191.6062 0018606 258.6047 216.3527 14.82975072692179")
propagator_tleA = TLEPropagator.selectExtrapolator(objA_tle)
propagator_tleB = TLEPropagator.selectExtrapolator(objB_tle)
epo_objA = objA_tle.getDate()
epo_objB = objB_tle.getDate()
pvA_init = propagator_tleA.propagate(epo_objA).getPVCoordinates()
pvB_init = propagator_tleB.propagate(epo_objB).getPVCoordinates()
initialOrbitA = CartesianOrbit(pvA_init_, inertialFrame, epo_objA, mu)
initialOrbitB = CartesianOrbit(pvB_init_, inertialFrame, epo_objB, mu)
def NumProp(initialOrbit, orbitType):
#Setup Propagator
minStep = 0.001;
maxstep = 1000.0;
initStep = 10.0
positionTolerance = 1e-2
initialState = SpacecraftState(initialOrbit)
tol = NumericalPropagator.tolerances(positionTolerance, initialOrbit,
orbitType)
integrator = DormandPrince853Integrator(minStep, maxstep,
JArray_double.cast_(tol[0]), # Double
array of doubles needs to be casted in Python
JArray_double.cast_(tol[1]))
integrator.setInitialStepSize(initStep)
propagator_num = NumericalPropagator(integrator)
propagator_num.setOrbitType(orbitType)
propagator_num.setInitialState(initialState)
propagator_num.setEphemerisMode()
return propagator_num
propagator_numA = NumProp(initialOrbitA, orbitType)
propagator_numB = NumProp(initialOrbitB, orbitType)
itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, True)
gravityProvider = GravityFieldFactory.getNormalizedProvider(10,10)
gravity = HolmesFeatherstoneAttractionModel(itrf, gravityProvider)
propagator_numA.addForceModel(gravity)
propagator_numB.addForceModel(gravity)
Best,
Justin