CSSISpaceWeatherData.java using Adjusted and not Observed flux values

Hi all,

I am an astrodynamics engineer working on validating my own drag model results against Orekit. In my investigation, I have noticed the CSSI space weather data that are being used by the Orekit NRLMSISE-00 model implementation are the f107Adj and ctr81Adj values in the functions getDailyFluxOnDay and getAverageFlux. However, the NRLMSISE-00 model states:

f107 and f107A values used to generate the model correspond
to the 10.7 cm radio flux at the actual distance of the Earth
from the Sun rather than the radio flux at 1 AU.

which is a block of text that you can find at line 1804 of models/earth/atmosphere/NRLMSISE00.java. This appears to indicate that the Observed values, rather than the Adjusted values, should be used.

I was not able to locate a conversion function to readjust these values to their correct flux. The choice in setting these values causes significant deviations in my implementation, especially during periods of high solar activity. I wanted to bring this to your attention and either receive clarification on the choice to use these values, or perhaps be pointed to where a function call is converting them to the actual distance requested by the model.

Many thanks,

Hi Derek, welcome.

You are most probably right, thanks for the report.
Could you try to apply the attached patch to Orekit source and see if it improves the results.
Beware it is just an incomplete solution (it only patches getAverageFlux, not getDailyFluxOnDay), it is just a first attempt.
If it works for you, then you could open an issue, perhaps completing the patch if needed.
flux-correction.patch (4.4 KB)

Hi Luc, thank you for the patch. I will take some time this weekend to apply it and thoroughly test against my results and will report back here with my findings.

Wanted to give a small update. I am still getting drag force model discrepancies, but I receive the same density output for my NRLMSISE-00 as Orekit’s. So I will be developing a tool to probe the acceleration results from Orekit’s force models to compare one to one with my system. I am not a Java developer so I do not know how long this may take.

Hi Derek, hi Luc,

My bad, I was not sure which one to use between observed and adjusted.

There is a simpler fix I think Luc, as the CSSI Space weather file already contains observed values, we can just use them without having to convert the adjusted values.

However we need to be careful with changing the method getAverageFlux of the CSSI class, as it’s also used to in getMeanFlux for the DTM2000 model. I am not sure if the DTM2000 model expects observed or adjusted F10.7, I couldn’t find an answer in the code. This would be also good to know for the getInstantFlux method for the DTM2000 model, maybe we also need to change the adjusted F10.7 values to observed.
To be on the safe side and to not change anything for the DTM2000 model, I now splitted the getMeanFlux method from the getAverageFlux method.

Here is a proposal: Use observed solar flux instead of adjusted for NRLMSISE00 in CssiSpaceWeatherData (c3c05956) · Commits · Clément Jonglez / Orekit · GitLab

And here is the corresponding diff:
c3c0595677a4b3d5c293d98e235afb5a860e40c2.diff (6.1 KB)

I could open a merge request.


Hi @yzokras,

+1 for this

Agreed with being on the safe side.
Do you think it is worth opening an issue on the forge saying that we should verify if DTM2000 expects adjusted or observed F10.7?

+1 for the merge request.
I opened issue 817 that you can link to your MR.

Thank you Clément!

Alright, I opened merge request Use observed solar flux instead of adjusted for NRLMSISE00 in CssiSpaceWeatherData (!170) · Merge requests · Orekit / Orekit · GitLab

And for the DTM2000 model, I opened issue Verify if DTM2000 density model expects adjusted or observed solar flux (#818) · Issues · Orekit / Orekit · GitLab

I contacted Dr. Bruinsma and he told me that DTM-2000 uses to observed values.