Inconsistency with firing date in ConstantThrustManeuver class
In ConstantThrustManeuver#getEventDetectors method, the "firing" parameter is updated when the start or end date of the maneuver is detected.
And this tells the acceleration
method whether the maneuver is currently firing or not.
But, before the event is detected, if the acceleration is evaluated during maneuver, the parameter "firing" is set to "false". This can lead to inconsistency in acceleration computation.
A proper way to fix this would be to add a method isFiring(SpacecraftState s)
that would compute the boolean s.getDate().isBetweenOrEqualTo(startDate, endDate);
.
The "firing" attribute can be dropped. The detectors must be kept to reset the derivatives at maneuver start and stop time.
Attached to this report is a ConstantThrustManeuver
class that has this isFiring
method and performs some prints in the acceleration
method to detect the inconsistencies. You can see these prints when running the ConstantThrustManeuverTest
class.