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?

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?

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.