Do custom drag models require custom DragSensitive model?

Hi all,

I’m trying to create a drag model in Orekit that uses a custom function for the drag coefficient as a function of various atmospheric properties. I’ve been able to create an Atmosphere class that returns the properties I need but am not sure about the correct way to model the drag. In some of the online tutorials, I’ve seen the combination of DragSensitive + DragForce, such as this when using the NRLMSIS atmosphere:

DragSensitive spacecraft = new IsotropicDrag(crossSection, dragCoefficient);

DragForce dragForce = new DragForce(nrlmsisAtmosphere, spacecraft);

Following the templates for the DragForce class, it makes sense to me how I would create a custom drag model using my Cd function. However, do I need a DragSensitive object to correctly model/account for the drag on the spacecraft when using NumericalPropagator + DormandPrince54Integrator or is it enough to just to create my own DragForce class?

Thanks in advance for any help/comments/suggestions!

Hi @sswen20,

Welcome back to the forum!

If you can model the drag force on your own, then you don’t need a DragSensitive object, it’s only used in Orekit DragForce class.

Hope this helps,
Maxime

Thank you, that is extremely helpful!

As a follow-on question, I’m currently only specifying the drag force model (extending the AbstractDragForceModel class) and am not specifying any thrust force. I’m specifying the initial state using a Keplerian orbit. Over a couple orbits, I’m not seeing the orbit degrade or the spacecraft’s altitude drop. Does that mean I’m just not simulating long enough or does Orekit assume a force balance if none is provided?

I guess so yes, but you should see at least a small drop of the semi-major axis with time.

No, only the forces you’ve added will be taken into account.