We have the need at Airbus to perform propagation through maneuvers with variable thrust. We think this could be a contribution to Orekit. The idea would be to reuse most of the code that have been developed in ConstantThrustManeuver (for instance in term of event detectors, acceleration computation, and initialization). Therefore, it would avoid duplicating most of the code in ConstantThrustManeuver.
Instead of the thrust, the trust direction, and the isp, the constructor would take a generic interface as an input. This interface would demand to implements 4 methods in order to retrieve the thrust and the flow rate from the state, and their equivalent for fields parameters
In that case, the ConstantThrustManeuver would become a specific case of this new class, with an implementation of the interface that provides constant thrust and constant flow rate during the maneuver.
I think that it would be a great contribution to Orekit !!!
There is not a lot of maneuver model in Orekit (only 3…); I think it is a very good idea to extend the capabilities of the library in that direction !
Your proposition of using an interface seems good to me.
Beware that if this changes the API of ConstantThrustManeuver your contribution will have to wait for a major version of Orekit (version x.0) to be released.
Version 10.0 will be coming soon. So if you are fast enough to wrap up the code you can probably make it
But from what I understand you should be able to keep the old constructor of ConstantThrustManeuver so that the change can be transparent for the users.
The way I see it, the public constructor and methods of ConstantThrustManeuver should indeed not be changed.
We will start soon our internal process in Airbus to provide this contribution. It might take some time, so it could be difficult for us to deliver the change before the 10.0.0 release.
Sorry for my delayed response. As Orekit is a little bit poor in maneuver force model, introduce variable thrust maneuver can be a real asset for Orekit. In that respect, this is a very good contribution for Orekit.
I somehow inherited a simulator with a class called VaryingThrustManeuver written by Luc Maisonobe so I assumed it was already contained in Orekit, but apparently not. But if you integrate it, it would be interesting for me to see what differs and potentially change to your class.