I have had a few questions I hope you can help clear up.
Over the past few days I have been messing around with the Batch Least Squares estimator, and I noticed for every satellite I tested when adding Relativity I was getting a worse chi squared, this occurred consistently.
From playing around with it I found that by adding the force models in a different order suddenly fixed this issue.
Looking into the source code of Orekit I found out why. When setting Relativity I was using: Constants.JPL_SSD_EARTH_GM For it’s value for GM. This seemed to be overriding my value for Mu throughout the program.
I understand GM and Mu are the same thing fundamentally, however the fact Relativity specified a parameter “GM” rather than “Mu” like elsewhere implied to me they were separate constants and thus wouldn’t override each other.
Upon further investigation I found that if you add Newtonian Attraction it’s mu is always the mu the program uses regardless of what other forces set as mu.
So my questions are this:
Why does Relativity use GM as a parameter name rather than Mu? Does it use it’s value for GM when calculating the acceleration even if the Central Attraction Coefficient Parameter Driver is overwritten?
Is there a recommended order to add force models?
In General, what are the best practices for adding force models (e.g. should I always explicitly add Newtonian Attraction?)
That’s my fault. Just a difference in naming convention. GM is updated by the parameter driver.
For numerical reasons it’s better to add smaller forces first, larger forces last. NumericalPropagator enforces that NewtonianAttraction is always last, even if it was not added last, since it is the largest force.
That’s a safe way to explicitly set the force models used. There is also the setMu(...) method. If you don’t call either of those then the propagator will automatically add a NewtonianAttraction based on a default GM.
Thanks Evan, that has cleared up pretty much everything.
Can I just ask when you say “For Numerical Reasons” what kind of numerical issues I’ll come up with if I do not. Or more precisely what order of magnitude will the differences will I be seeing on average?
The numerical issue is that of summing many numbers of different magnitudes can cause the smaller numbers to be ignored. It’s better to sort the array first so that you add the smaller numbers first because floating point numbers have limited precision, which means that addition is no longer associative.
In practice we just check that the central attraction force is added last because it is usually several orders of magnitude larger than the other forces.