Drag or SRP coefficient as DerivativeStructure

Hi there,

Looking at the IsotropicDrag class for example, I see there is Field version of the acceleration, but not the constructors. So is the implementation of isotropic drag (same question for SRP actually) with the coefficient as a DerivativeStructure not exposed? It must be available indirectly though, as I assume that it is what is used by estimators e.g. the batch least squares to get partial derivatives w.r.t. parameters?

Cheers,
Romain.

Hi Romain,

I think the following topic could help you:

Best regards,
Bryan

Hi Bryan,

thanks for the link.
So from what I understand, I would need to create a Field class for SRP and/or drag enabling a coefficient as a DerivativeStructure.
But out of curiosity within Orekit’s least squares how are the partial derivatives of observations computed w.r.t. to the drag coefficient if part of the estimated parameters?

Cheers,
Romain.

Hi,

If P denotes the propagation parameters (e.g., drag coefficient) and Y the orbital parameters, it is computed like that : d(observation)/d(P) = d(observation)/d(Y) * d(Y)/d(P)

With d(observation)/d(Y) computed using
d(observation)/d(Y) = d(observation)/d(cartesian) * d(cartesian)/d(Y)

d(observation)/d(cartesian) is computed during the evaluation of the measurement using automatic differentiation.

d(cartesian)/d(Y) is defined for each OrbitType available in Orekit.

d(Y)/d(P) is computed using automatic differentiation and variational equations.

Best regards,
Bryan