Unable to propagate DSST for 100 years

Dear Orekit team,

I’m performing orbit propagations with the DSST propagator tutorials implemented by Luc Maisonobe on your Orekit DSST Orbit Determination GitLab repository with orekit 10.1. I managed to perform some propagation up to 20 years without problems to test the tool. But, right now I’m struggling with some errors when trying to propagate the same orbit for 100 years.

My initial epoch is 2020-01-01T11:57:20.000 and when I propagate over 100 years a message appears: unable to generate new data after 2070-01-08T23:58:50.816.

I’m running it in Eclipse IDE and I thought it would be a “GC overhead limit exceeded” issue but I changed the heap size on eclipse.ini and the message remains the same.

I saw that it might be a problem related with the ImmutableTimeStampedCache class, but since I am not really familiar neither with Java nor Orekit I hope you can help me with this issue to improve my tests.

Thanks in advance

Kind regards,

Felix


Input:

body.frame = GTOD/2010 simple EOP
inertial.frame = EME2000

orbit.date = 2020-01-01T11:57:20.000
orbit.keplerian.a = 26000
orbit.keplerian.e = 0.0005
orbit.keplerian.i = 56
orbit.keplerian.raan = 180
orbit.keplerian.pa = 0
orbit.keplerian.anomaly = 0
orbit.angle.type = MEAN

initial.orbit.is.osculating = false
output.orbit.is.osculating = true

central.body.rotation.rate = 7.2921e-05
central.body.degree = 4
central.body.order = 4

max.degree.zonal.short.periods = 4
max.eccentricity.power.zonal.short.periods = 3
max.frequency.true.longitude.zonal.short.periods = 9
max.degree.tesseral.short.periods = 4
max.order.tesseral.short.periods = 4
max.eccentricity.power.tesseral.short.periods = 3
max.frequency.mean.longitude.tesseral.short.periods = 7
max.degree.tesseral.m.dailies.short.periods = 4
max.order.tesseral.m.dailies.short.periods = 4
max.eccentricity.power.tesseral.m.dailies.short.periods = 2

third.body.moon = true
third.body.sun = true

drag = false
drag.cd = 2
drag.sf = 10

solar.radiation.pressure = true
solar.radiation.pressure.cr = 1.2
solar.radiation.pressure.sf = 25

duration.in.days = 36500
output.step = 86400

output.Keplerian = true
output.equinoctial = false
output.Cartesian = false
output.short.period.coefficients = none

min.variable.integration.step = 6000
max.variable.integration.step = 86400
position.tolerance.variable.integration.step = 1

max.time.gap.between.interpolation.points = 86400

numerical.comparison = false

In order to propagate in general out that far (I haven’t tried this with DSST) I had to update my DE ephemeris files to be the full DE-430 from the JPL website. We ship with a shorter duration one in the standard Orekit Data zip file. You can find it here. In your Orekit Data folder replace the existing file with this one. The out of the box name isn’t discoverable by Orekit (I’m not sure if that’s expected) but if you rename it to something like what I did like lnxp1550p2650.430 it works perfectly. I’m doing propagation out to 2120 regularly.

1 Like

Hello, Hank,

Thanks for your advice. I saw that the default lnxp1990.430 range is from 1990 to 2069. I think that’s why I cannot go over 2070. I downloaded the DE340 from JPL naif generic kernel website, but even by replacing it in the orekit-data folder with the name you did (lnxp1550p2650.430), I get the message: no JPL ephemerides binary files found. And if I name it either lnxp1550.340 or lnxp2650.430, I get the message: Exception in thread “main” java.lang.OutOfMemoryError: Java heap space.

Did you have any similar issues when you implemented the same ephemerides file?

Thanks in advance.
kind regards,

Felix

I have updated the default orekit-data files so the JPL ephemerides cover up to 2149. This may be more user-friendly than the whole ephemeris that covers thousands of years.

2 Likes

For me personally I’m only doing 1850 to 2150 at most and usually more like 1990s through 2120.