Initial Acceleration For Propagator


I was wondering if it is possible to get the initial acceleration for an initial spacecraft state that has all of the force models taken into account for a given numerical propagator without actually propagating. The initial state would only be defined by a position and velocity (and attitude, satellite mass, coefficients of drag, etc.).

From what I see, if I get the acceleration of the initial state of the propagator outright (before any propagation has happened), I only get a Newtonian attraction acceleration, even though I didn’t input that directly into the state. However, if I propagate by a miniscule amount then the acceleration reflects all the force models. I checked this by computing the acceleration separately for all the different force models I’m using using the initial state.

Is there a way to get the correct acceleration for all the force models at once for a given state that only has position and velocity (and attitude, satellite mass, coefficients of drag, etc.) defined initially? Or do I need to compute the accelerations for all the different force models separately and add them or propagate the numerical propagator by a very small amount?

Thank you for your time,

Hi @Sam

The simplest way is probably to call directly the acceleration method from all force models. Something like this:

  Vector3D acceleration = Vector3D.ZERO;
  for (ForceModel forceModel : models) {
    acceleration = acceleration.add(forceModel.acceleration(state, forceModel.getParameters());

The fact the you need to get the force models parameters from the force model itself just to feed it back to it for computing the acceleration looks weird, but this design was needed for some specific computation (basically when the caller wants to modify the parameters in between, for example during orbit determination where the force model parameters may themselves be estimated)

1 Like