Hello,
I am struggling to add integration variables in a numerical propagator (Field
version).
I am extending the PythonFieldAdditionalDerivativesProvider
and have implemented some functions:
class MyProvider(PythonFieldAdditionalDerivativesProvider):
def __init__(self, mu) -> None:
PythonFieldAdditionalDerivativesProvider.__init__(self)
self._mu = mu
def getName(self) -> str:
return "dummy"
def init(self, fieldSpacecraftState: FieldSpacecraftState, fieldAbsoluteDate: FieldAbsoluteDate) -> None:
pass
def getDimension(self) -> int:
return 7
def combinedDerivatives(self, sc: FieldSpacecraftState):
zero = self._mu.multiply(0.)
secondary_rates = [zero] * self.getDimension()
return FieldCombinedDerivatives(secondary_rates, None);
and I am trying to use it with my propagator:
coupled_propagator = FieldNumericalPropagator(field, hipparchus_field_integrator)
init_state = FieldSpacecraftState(init_orbit)
init_state.addAdditionalState("dummy", [self._mu.multiply(0.)] * 7)
additional_variables = MyProvider(mu)
coupled_propagator.addAdditionalDerivativesProvider(additional_variables)
coupled_propagator.setInitialState(init_state)
But Iām pretty sure that the propagation never goes inside combinedDerivatives
, and I cannot retrieve the final values of the additional variables, as this fails:
coupled_propagator.propagate(tf).getAdditionalState("dummy")
Cheers,
Romain.