Hi all,
This is my first post as I have recently started using orekit for my master thesis, I hope the community can provide some advice, and I thank you in advance for that.
I am planning on propagating using Eckstein-hechler (EH) propagator, my intention is to have a fast propagation with custom stephandlers which I have already implemented. I could make-do with a simple J2, but in orekit I found that EH was the simplest that included Earth oblateness effect (which I definitely need to consider).
I run Orekit from Matlab, and have tested my orbit propagation using Keplerianpropagator against STK successfully. However, when I cross check the results of orekit's EH propagator with STK's J2 or J4, I see a huge discordance that I cannot attribute to nominal differences in the propagators margins of error. I am talking of about 51 km of error (ground track projection) after just 24 hours.
Since the 2-body problem matches the results of STK, I assume my model and my synchronization of orekit and STK are correct. I assume I am having issues with orekit's EH propagator but I cannot see why or where. There's some more info below. *Any suggestions will be appreciated!*
Thank you!
Alvaro
------------------------------------
I am attaching two images with the ground tracks after 5 days:
- EH.png : the propagation of orekit/EH vs STK/J2.
- Kepler.png : the propagation of orekit/Kepler and STK/2-body propagation
Here are the parameters of my orbit.
Propagation for 5 days starts on 2004-jan-01 at 01:30:00 UTC.
semimajor axis 7578137 m.
eccentricity 0.
inclination 98.8 deg.
argument of perigee 90 deg.
RAAN 0.
true anomaly 0.
My initializations (note matlab's syntax to use java objects):
initialDate = AbsoluteDate(2004, 01, 01, 01, 30, 00.000,...
TimeScalesFactory.getUTC());
inertialFrame = FramesFactory.getEME2000();
orbit = KeplerianOrbit(a, e, i, omega, raan, lv,...
PositionAngle.TRUE,...
inertialFrame, initialDate, ...
Constants.EIGEN5C_EARTH_MU);
EcksteinHechlerPropagator(orbit,...
Constants.EIGEN5C_EARTH_EQUATORIAL_RADIUS,...
Constants.EIGEN5C_EARTH_MU, ...
Constants.EIGEN5C_EARTH_C20,...
Constants.EIGEN5C_EARTH_C30, ...
Constants.EIGEN5C_EARTH_C40,...
Constants.EIGEN5C_EARTH_C50,...
Constants.EIGEN5C_EARTH_C60);
and my transformations to ECEF (these happen in the fixedstephandler, coded in java):
this.ECEFframe = FramesFactory.getITRF(IERSConventions.IERS_2010, true)
...
Transform fromJ2000toITRFtransform =
currentState.getFrame().getTransformTo(this.ECEFframe, currentState.getDate());
// Obtain satellite position vector
Vector3D satelliteVector = fromJ2000toITRFtransform.transformVector(
currentState.getPVCoordinates().getPosition());
satLatitudes.add(satelliteVector.getDelta());
satLongitudes.add(satelliteVector.getAlpha() > FastMath.PI ? satelliteVector.getAlpha()-2*FastMath.PI : satelliteVector.getAlpha()); // To change representation from [0, 2pi] to [-pi, pi].