예제 #1
0
    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);
      }
    }
예제 #2
0
 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()];
 }