Implementing the JR2008 atmospheric model


I’m stuck on how to implement the Jacchia-Bowman 2008 atmosphere model using the JB2008 class.
The constructor indicates ‘JB2008InputParameters parameters’ is required - but what exactly is this, and how to format the parameters (and which parameters, exactly)?

The documentation isn’t clear enough to me. I’ve found the source for the latest space weather files here, but not sure where to go from there.


Hi @ShikaDing

Currently, there is no implementation of the JB2008InputParameters interface in Orekit. You have to build your own implementation. For instance, you can look at the InputParams private class in the JB2008 test class (
src/test/java/org/orekit/models/earth/atmosphere/ · develop · Orekit / Orekit · GitLab)

However, this test only uses few data on a specific epoch to initialize the model. The whole data needed by the model are available in .txt files provided by the JB2008 official website (JB2008 - Space Weather). Everything is explained in the “Indices” window. The advantage is that these data are continuously updated.

So, your implementation of the interface can be a loader that read the JB2008 files and provide the relevant coefficients to the different methods of the interface.

Best regards

I have to check the licenses associated with these data but it could be very interesting to add in Orekit the JB2008InputParameters implementation that uses the official data.

Thank you for the info, I will look into that. For now I’ve tried the simple exponential atmospheric model but this would be a big improvement if I can get it working.

Maybe you could also try to use NRLMSISE00 or DTM2000 models using CSSI space weather data as input to initialize the Atmosphere model. CSSI space weather data very interesting because they are updated each day. Here an example of code:

# Body
itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, True)
earth = OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS, Constants.WGS84_EARTH_FLATTENING,  itrf)

# Atmosphere model
inputData = CssiSpaceWeatherData("SpaceWeather-All-v1.2.txt")
atmosphere = DTM2000(inputData, CelestialBodyFactory.getSun(), earth)

# It is also possible to use NRLMSISE00 model as below
# atmosphere = NRLMSISE00(inputData, CelestialBodyFactory.getSun(), earth)

Please note that you need at least Orekit 10.2 to use the CSSI space weather data. The “SpaceWeather-All-v1.2.txt” file is available in the orekit-data. You can update it each day by using the script also available in the orekit-data folder.


Thanks again for those suggestions - I had not heard of those and thus didn’t know to look for them in Orekit!

Either would be more than adequate, and I was able to implement the CSSI model in lieu of the simplified exponential model I started with. Both gave VERY similar results for the orbit I am testing (~970km altitude).


Could you open an issue, with a Feature label, on the Orekit issue tracker in order not to forget to add support for JB2008 input data? I think it is a very interesting new feature to add.

Thank you very much,

Hi Bryan - done.
However, I don’t seem to have the ability to add the Feature label - no options for labels seemed available to me (permission thing?)

Thank you very much.
I think that only Orekit developers can add labels for issues.
I will add it.