Changing mass flow rate

Hi folks,

In ScaledConstantThrustPropulsionModel, shouldn’t the mass flow rate depend on the scaling factors? Right no it only uses the so called initial vector. I mean if the thrust magnitude is 10 times bigger than this value, the mass consumption is also 10 fold right?

Cheers,
Romain.

Hey @Serrof,

I agree :slight_smile:

Cheers,
Vincent

EDIT :
After discussing with @MaximeJ, the following assumption is not necessarily true :

The propulsion system may be more/less efficient than planned so this is not as trivial as initially thought.

Hi,

I think this was coded like this to imitate the BasicConstantThrustPropulsionModel’s behavior.
In this last, you can choose to estimate either the thrust or the flow rate but not both. Otherwise, you have an indetermination (in the context of Orbit Determination) since both parameters have a dependency. So when thrust is estimated, the flow rate is constant.

Regarding the ScaledConstantThrustPropulsionModel, it’s not possible to estimate the flow rate so changing the flow rate consequently to a change a thrust should not be an issue.
The way it is done right now means that this is the ejection velocity of the fuel (i.e. the Isp) that is impacted by a change in thrust.

I think in the end it’s a technical choice depending on the context:

  • For OD, the change in thrust should generally be small, and having a smaller thrust does not always mean the flow rate is smaller, it could mean the Isp is smaller than expected
  • For control, if you want to steer a thrust vector with variation from 1 to 10 orders of magnitude, then it makes sense to change the flow rate and the thrust at the same time since it is probably representative of the reality of your propulsion system. In that case, the Isp will be constant. though.

I don’t know if I’m clear, but overall changing the flow rate with thrust will change the trajectory (because of mass depletion) while changing Isp will not. So I think we should add a boolean for controlling this, like constantFlowRate or something along this line; users can then decide the type of model they want to use or not.

Cheers,
Maxime

Hi Maxime,

Thanks a lot for this clarification.
I assumed that the ScaledConstantThrustPropulsionModel was designed for OD, I didn’t have control in mind.
Anyway, given the name, I would expect the flow rate to depend on the parameters. Rather than a boolean, I would create another class for the other option.
I’m curious to have more users insight here, does anyone care to comment?

Cheers,
Romain.

Regarding the OD application actually, it can happen than one of the three nominal component is zero. In that case the scale is useless then and the model cannot capture any contribution on this axis. Am I wrong in saying there is no better class natively in Orekit for that? If not then any suggestions of implementation?

Hi @Serrof,

I don’t think there’s a better class, unfortunately.
Other potential implementations :

  • Parameter the thrust vector X, Y, and Z values directly. Easy to implement but difficult to constrain.
  • Parameter the thrust with an error in magnitude and a deviation angle with respect to the initial thrust vector. This one has been asked already in the past, I think it would be nice to have it. It’s harder to implement but closer to the physics of the thrusters.

Cheers,
Maxime

Hi @Serrof and @MaximeJ,
I’m currently using a modified version of ScaledConstantThrustPropulsionModel where the scale factors are simply replaced by additive offsets, specifically to cope with the case of a thrust direction with two zero components. It works fine in the OD process.
Cheers - Glauco

2 Likes