/** {@inheritDoc} */ @Override protected StateMapper createMapper( final AbsoluteDate referenceDate, final double mu, final OrbitType orbitType, final PositionAngle positionAngleType, final AttitudeProvider attitudeProvider, final Frame frame) { // create a mapper with the common settings provided as arguments final MeanPlusShortPeriodicMapper newMapper = new MeanPlusShortPeriodicMapper(referenceDate, mu, attitudeProvider, frame); // copy the specific settings from the existing mapper if (mapper != null) { for (final DSSTForceModel forceModel : mapper.getForceModels()) { newMapper.addForceModel(forceModel); } newMapper.setSatelliteRevolution(mapper.getSatelliteRevolution()); newMapper.setInitialIsOsculating(mapper.initialIsOsculating()); } mapper = newMapper; return mapper; }
/** * Replace the deserialized data transfer object with a {@link MeanPlusShortPeriodicMapper}. * * @return replacement {@link MeanPlusShortPeriodicMapper} */ private Object readResolve() { final MeanPlusShortPeriodicMapper mapper = new MeanPlusShortPeriodicMapper(referenceDate, mu, attitudeProvider, frame); for (final DSSTForceModel forceModel : forceModels) { mapper.addForceModel(forceModel); } mapper.setSatelliteRevolution(satelliteRevolution); mapper.setInitialIsOsculating(initialIsOsculating); return mapper; }
/** * Add a force model to the global perturbation model. * * <p>If this method is not called at all, the integrated orbit will follow a keplerian evolution * only. * * @param force perturbing {@link DSSTForceModel force} to add * @see #removeForceModels() */ public void addForceModel(final DSSTForceModel force) { mapper.addForceModel(force); force.registerAttitudeProvider(getAttitudeProvider()); }