This is my propagator:
public void HPOPPropagator(String satelliteName, AbsoluteDate epoch, double a, double e, double i,
double raan, double pa, double anomaly, double gyfsxs, double dqznxs, String positionAngleType) {
this.satelliteName = satelliteName;
PositionAngle positionAngle = PositionAngle.MEAN;
Orbit initialOrbit = null;
OrbitType propagationType;
double cs = 20;
if (e <= 0.0001) {
propagationType = OrbitType.EQUINOCTIAL;// i=0 Or e=0
double u = Math.toRadians(pa) + Math.toRadians(anomaly);
initialOrbit = new CircularOrbit(
a, e * Math.cos(Math.toRadians(pa)), e * Math.sin(Math.toRadians(pa)), Math.toRadians(i), Math.toRadians(raan), u,
positionAngle, FramesFactory.getEME2000(), epoch, Constants.WGS84_EARTH_MU);
} else {
propagationType = OrbitType.KEPLERIAN;
initialOrbit = new KeplerianOrbit(
a, e, Math.toRadians(i), Math.toRadians(pa), Math.toRadians(raan), Math.toRadians(anomaly),
positionAngle, FramesFactory.getEME2000(), epoch, Constants.WGS84_EARTH_MU);
}
// Initial state definition
final SpacecraftState spacecraftState = new SpacecraftState(initialOrbit, 1000);
// attitude
AttitudeProvider attitude = new LofOffset(FramesFactory.getEME2000(), LOFType.VVLH);
final double minStep = 0.00001;
final double maxStep = 100.0;
final double positionTolerance = 1.00e-6;
final double[][] tolerance =
NumericalPropagator.tolerances(positionTolerance, initialOrbit, propagationType);
final AdaptiveStepsizeIntegrator integrator =
new DormandPrince853Integrator(minStep, maxStep, tolerance[0], tolerance[1]);
// Propagator
final NumericalPropagator propagator = new NumericalPropagator(integrator);
// Gravity
final NormalizedSphericalHarmonicsProvider provider = OrbitConstants.provider;
final ForceModel holmesFeatherStone =
new HolmesFeatherstoneAttractionModel(OrbitConstants.FRAME_ECF, provider);
propagator.addForceModel(holmesFeatherStone);
// Moon Sun
propagator.addForceModel(new ThirdBodyAttraction(CelestialBodyFactory.getSun()));
propagator.addForceModel(new ThirdBodyAttraction(CelestialBodyFactory.getMoon()));
// SPR
propagator.addForceModel(new SolarRadiationPressure(CelestialBodyFactory.getSun(), provider.getAe(),
new IsotropicRadiationSingleCoefficient(cs, gyfsxs)));
// Drag
UT1Scale ut1 = TimeScalesFactory.getUT1(IERSConventions.IERS_2010, false);
NRLMSISE00InputParameters inputData =
new CssiSpaceWeatherData("SpaceWeather-All-v1.2.txt");
NRLMSISE00 atmosphere = new NRLMSISE00(inputData, CelestialBodyFactory.getSun(), OrbitConstants.EARTH_SHAPE, ut1);
DragSensitive drag = new IsotropicDrag(cs, dqznxs);
propagator.addForceModel(new DragForce(atmosphere, drag));
propagator.setInitialState(spacecraftState);
propagator.setAttitudeProvider(attitude);
this.propagator = propagator;
}
My input data:
"t0": "2026-05-09 00:00:00",
"a": 6878140.0,
"e": 0.0,
"i": 35.0,
"w": 0.0,
"m": 152.0,
"raan": 100.0
"t0": "2026-05-09 00:00:00",
"a": 6878140.0,
"e": 0.012,
"i": 35.0,
"w": 0.0,
"m": 152.0,
"raan": 100.0
The only difference between these two data is the eccentricity.
And the result error is filled in this chart
I want to konw what can I do to fix the error when the eccentricity is not 0?