public void handleStep(OrekitStepInterpolator interpolator, boolean isLast) throws PropagationException { try { if (pickUpDate == null) { // we want to pick up the Jacobians at the end of last step if (isLast) { interpolator.setInterpolatedDate(interpolator.getCurrentDate()); } } else { // we want to pick up some intermediate Jacobians double dt0 = pickUpDate.durationFrom(interpolator.getPreviousDate()); double dt1 = pickUpDate.durationFrom(interpolator.getCurrentDate()); if (dt0 * dt1 > 0) { // the current step does not cover the pickup date return; } else { interpolator.setInterpolatedDate(pickUpDate); } } Assert.assertEquals(1, interpolator.getInterpolatedState().getAdditionalStates().size()); Assert.assertTrue( interpolator .getInterpolatedState() .getAdditionalStates() .containsKey(mapper.getName())); SpacecraftState state = interpolator.getInterpolatedState(); mapper.getStateJacobian(state, dYdY0); mapper.getParametersJacobian(state, dYdP); } catch (PropagationException pe) { throw pe; } catch (OrekitException oe) { throw new PropagationException(oe); } }
public PickUpHandler(JacobiansMapper mapper, AbsoluteDate pickUpDate) { this.mapper = mapper; this.pickUpDate = pickUpDate; dYdY0 = new double[mapper.getStateDimension()][mapper.getStateDimension()]; dYdP = new double[mapper.getStateDimension()][mapper.getParameters()]; }