ConstamtThrustManeuver problem
The attached code fragment (a slight modification of one of the Orekit tests) throws a null pointer exception. This problem only arises when using a propagator with PartialDerivativesEquation.
import org.apache.commons.math.geometry.Rotation;
import org.apache.commons.math.geometry.Vector3D;
import
org.apache.commons.math.ode.nonstiff.AdaptiveStepsizeIntegrator;
import
org.apache.commons.math.ode.nonstiff.DormandPrince853Integrator;
import org.apache.commons.math.util.FastMath;
import org.orekit.attitudes.AttitudeProvider;
import org.orekit.attitudes.InertialProvider;
import org.orekit.errors.OrekitException;
import org.orekit.forces.maneuvers.ConstantThrustManeuver;
import org.orekit.frames.FramesFactory;
import org.orekit.orbits.KeplerianOrbit;
import org.orekit.orbits.Orbit;
import org.orekit.orbits.PositionAngle;
import org.orekit.propagation.SpacecraftState;
import org.orekit.propagation.numerical.NumericalPropagator;
import org.orekit.propagation.numerical.PartialDerivativesEquations;
import org.orekit.time.AbsoluteDate;
import org.orekit.time.DateComponents;
import org.orekit.time.TimeComponents;
import org.orekit.time.TimeScalesFactory;
public class TESTConstantThrustManeuver {
public static void main(String[] args) throws OrekitException {
Autoconfiguration.configureOrekit();
Setup.Init();
// Body mu
final double mu = 3.9860047e14;
final double isp = 318;
final double mass = 2500;
final double a = 24396159;
final double e = 0.72831215;
final double i = FastMath.toRadians(7);
final double omega = FastMath.toRadians(180);
final double OMEGA = FastMath.toRadians(261);
final double lv = 0;
final double duration = 3653.99;
final double f = 420;
final double delta = FastMath.toRadians(-7.4978);
final double alpha = FastMath.toRadians(351);
final AttitudeProvider law = new InertialProvider(new Rotation(new
Vector3D(alpha, delta), Vector3D.PLUS_I));
final AbsoluteDate initDate = new AbsoluteDate(new DateComponents(2004,
01, 01),
new TimeComponents(23, 30, 00.000),
TimeScalesFactory.getUTC());
final Orbit orbit =
new KeplerianOrbit(a, e, i, omega, OMEGA, lv, PositionAngle.TRUE,
FramesFactory.getEME2000(), initDate, mu);
final SpacecraftState initialState =
new SpacecraftState(orbit, law.getAttitude(orbit, orbit.getDate(),
orbit.getFrame()), mass);
final AbsoluteDate fireDate = new AbsoluteDate(new DateComponents(2004,
01, 02),
new TimeComponents(04, 15, 34.080),
TimeScalesFactory.getUTC());
final ConstantThrustManeuver maneuver =
new ConstantThrustManeuver(fireDate, duration, f, isp,
Vector3D.PLUS_I);
double[] absTolerance = {
0.001, 1.0e-9, 1.0e-9, 1.0e-6, 1.0e-6, 1.0e-6, 0.001
};
double[] relTolerance = {
1.0e-7, 1.0e-4, 1.0e-4, 1.0e-7, 1.0e-7, 1.0e-7, 1.0e-7
};
AdaptiveStepsizeIntegrator integrator =
new DormandPrince853Integrator(0.001, 1000, absTolerance,
relTolerance);
integrator.setInitialStepSize(60);
final NumericalPropagator propagator = new
NumericalPropagator(integrator);
propagator.setInitialState(initialState);
propagator.setAttitudeProvider(law);
propagator.addForceModel(maneuver);
propagator.setPropagationParametersType(NumericalPropagator.PropagationParametersType.CARTESIAN);
PartialDerivativesEquations PDE = new
PartialDerivativesEquations(propagator);
PDE.selectParamAndStep("thrust", Double.NaN);
PDE.setInitialJacobians(7, 1);
final SpacecraftState finalorb =
propagator.propagate(fireDate.shiftedBy(3800));
System.out.println(finalorb.getPVCoordinates().toString());
}
}
(from redmine: issue id 18, created on 2011-03-30, closed on 2011-03-30)
- Changesets:
- Revision 68d06e04 on 2017-11-26T09:21:02Z:
Javadoc fix for TDMFile.ObservationsBlock::addObservation.
Github: fixes #18
- Revision 68d06e04 on 2017-11-26T09:21:02Z:
Javadoc fix for TDMFile.ObservationsBlock::addObservation.
Github: fixes #18
- Revision 68d06e04 on 2017-11-26T09:21:02Z:
Javadoc fix for TDMFile.ObservationsBlock::addObservation.
Github: fixes #18