Discrepancy in SP3 propagator initial state results in python vs java

I have been converting an SP3 file reader algorithm from java to python, and I have encountered a strange discrepancy in the propagator initial state. The file name, satellite key value,
sp3 coordinate values, and initial date are all the same; only the position and velocity for the initial state are different.

Java code:

file sp3File = new File(filePath, "IGS0OPSULT_20233190000_02D_15M_ORB.SP3");

            DataSource source = new DataSource(file.getName(), () -> new FileInputStream(sp3File));
            for (final DataFilter filter : Arrays.asList(new GzipFilter(),
                                                        new UnixCompressFilter(),
                                                        new HatanakaCompressFilter())) {
                source = filter.filter(source);

            final SP3Parser parserSp3 = new SP3Parser();
            final SP3 sp3 = parserSp3.parse(source);

            Map<String, SP3Ephemeris> satMap = sp3.getSatellites();

            for (Map.Entry<String, SP3Ephemeris> sat : satMap.entrySet()) {

                SP3Ephemeris ephem = sat.getValue();
                BoundedPropagator prop = ephem.getPropagator();
                SpacecraftState state = prop.getInitialState()

Python code:

        from org.orekit.files.sp3 import SP3Parser
        from org.orekit.data import DataSource as OrekitDataSource

        # Retrieve Java SP3 object
        sp3Parser = SP3Parser()
        sp3File = os.path.join(gpsFolder, "IGS0OPSULT_20233190000_02D_15M_ORB.SP3")
        sp3DataSource = OrekitDataSource(sp3File)
        sp3 = sp3Parser.parse(sp3DataSource)
        # Go through each GPS satellite in the file
        for satKey in sp3.getSatellites().keySet() :
            satEphem = sp3.getSatellites().get(satKey)
            satProp = satEphem.getSegments().get(0).getPropagator()
            state = satProp.getInitialState()

SP3 file:
IGS0OPSULT_20233190000_02D_15M_ORB.SP3 (493.3 KB)

Java state value: P(2.497060425079706E7, -1987644.8941127844, -8626500.762193203), V(1159.413893786791, 2165.489949288346, 3008.3040816768453)

Python state value: P(2.4970588127697874E7, -1987666.2709255107, -8626542.507136647), V(1159.4208096827388, 2165.488851065712, 3008.302262962948)

Hi there,

I think the first questions are:

  • are you using the exact same Orekit version?
  • is your Orekit data also exactly the same?


@Serrof you’re right it was the orekit-data file. My bad.