Hi everyone,
Opening this merge request to close issue #970 (closed) & close issue #1067 (closed).
To briefly re-introduce the issue, the goal of this issue is to implement the possibility to interpolate state covariances using the blending method introduced in "EFFICIENT COVARIANCE INTERPOLATION USING BLENDING OF APPROXIMATE STATE ERROR TRANSITIONS" by Sergei Tanygin. Ultimately, this will be used inside the Ephemeris
class through a "getCovariance(interpolating date)" method.
To do so cleanly, I created a completely new architecture for interpolation through the addition of a TimeInterpolator
interface as well as its field equivalent. It is then implemented by classes specialized in interpolating specific objects. This new architecture is very modular and also redefine the architecture of Ephemeris
.
I think that with this addition, we could completely delete the existing TimeInterpolable
interface. I already talked about this with @pascal and @MaximeJ but I would like to hear your thoughts on this @luc, @bryan and @Serrof please TimeInterpolable
interface but I will not delete it until I have your go.
Finally, this merge request needs Hipparchus issue 244 in order to be implemented.
You'll also find attached a short technical paper explaining the implementation and results obtained using this blending method compared to standard interpolation : Implementation_of_covariance_interpolation_in_Orekit-1.pdf
Cheers, Vincent
UPDATE: This merge request is almost done. In addition to the review of @Jasquier (many thanks to him for this tremendous task !), i'll put below a task list of what i've personally checked :
-
Added TimeInterpolator interface and its implementations for all classes implementing the TimeInterpolable
interface (except forTransform
andFieldTransform
). -
Added warning about Runge's phenomenon to all Hermite interpolators -
Copy specific javadoc of old interpolate methods to the interpolate method of new equivalent interpolator classes. -
Moved tests of old interpolate methods to their new equivalent interpolator tests classes. -
Removed TimeInterpolable
Interface and associated interpolate method in implementing classes (except forTransform
andFieldTransform
). -
Ensure a test coverage of > 95% for added code -
Fix state covariance (velocity part) interpolation expressed in local orbital frame that are not considered pseudo-inertial. EDIT : It turns out that it was not an issue but the normal behaviour after investigation.