use of org.orekit.propagation.integration.AbstractIntegratedPropagator in project Orekit by CS-SI.
the class NumericalPropagatorTest method testNotInitialised2.
@Test(expected = OrekitException.class)
public void testNotInitialised2() throws OrekitException {
final AbstractIntegratedPropagator notInitialised = new NumericalPropagator(new ClassicalRungeKuttaIntegrator(10.0));
notInitialised.propagate(AbsoluteDate.J2000_EPOCH, AbsoluteDate.J2000_EPOCH.shiftedBy(3600));
}
use of org.orekit.propagation.integration.AbstractIntegratedPropagator in project Orekit by CS-SI.
the class NumericalPropagatorTest method testNotInitialised1.
@Test(expected = OrekitException.class)
public void testNotInitialised1() throws OrekitException {
final AbstractIntegratedPropagator notInitialised = new NumericalPropagator(new ClassicalRungeKuttaIntegrator(10.0));
notInitialised.propagate(AbsoluteDate.J2000_EPOCH);
}
use of org.orekit.propagation.integration.AbstractIntegratedPropagator in project Orekit by CS-SI.
the class PartialDerivativesTest method testPropagationTypesElliptical.
@Test
public void testPropagationTypesElliptical() throws OrekitException {
NormalizedSphericalHarmonicsProvider provider = GravityFieldFactory.getNormalizedProvider(5, 5);
ForceModel gravityField = new HolmesFeatherstoneAttractionModel(FramesFactory.getITRF(IERSConventions.IERS_2010, true), provider);
Orbit initialOrbit = new KeplerianOrbit(8000000.0, 0.01, 0.1, 0.7, 0, 1.2, PositionAngle.TRUE, FramesFactory.getEME2000(), AbsoluteDate.J2000_EPOCH, provider.getMu());
double dt = 900;
double dP = 0.001;
for (OrbitType orbitType : OrbitType.values()) {
for (PositionAngle angleType : PositionAngle.values()) {
// compute state Jacobian using PartialDerivatives
NumericalPropagator propagator = setUpPropagator(initialOrbit, dP, orbitType, angleType, gravityField);
PartialDerivativesEquations partials = new PartialDerivativesEquations("partials", propagator);
final SpacecraftState initialState = partials.setInitialJacobians(new SpacecraftState(initialOrbit));
propagator.setInitialState(initialState);
final JacobiansMapper mapper = partials.getMapper();
PickUpHandler pickUp = new PickUpHandler(mapper, null);
propagator.setMasterMode(pickUp);
propagator.propagate(initialState.getDate().shiftedBy(dt));
double[][] dYdY0 = pickUp.getdYdY0();
// compute reference state Jacobian using finite differences
double[][] dYdY0Ref = new double[6][6];
AbstractIntegratedPropagator propagator2 = setUpPropagator(initialOrbit, dP, orbitType, angleType, gravityField);
double[] steps = NumericalPropagator.tolerances(1000000 * dP, initialOrbit, orbitType)[0];
for (int i = 0; i < 6; ++i) {
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, -4 * steps[i], i));
SpacecraftState sM4h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, -3 * steps[i], i));
SpacecraftState sM3h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, -2 * steps[i], i));
SpacecraftState sM2h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, -1 * steps[i], i));
SpacecraftState sM1h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, 1 * steps[i], i));
SpacecraftState sP1h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, 2 * steps[i], i));
SpacecraftState sP2h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, 3 * steps[i], i));
SpacecraftState sP3h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, 4 * steps[i], i));
SpacecraftState sP4h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
fillJacobianColumn(dYdY0Ref, i, orbitType, angleType, steps[i], sM4h, sM3h, sM2h, sM1h, sP1h, sP2h, sP3h, sP4h);
}
for (int i = 0; i < 6; ++i) {
for (int j = 0; j < 6; ++j) {
double error = FastMath.abs((dYdY0[i][j] - dYdY0Ref[i][j]) / dYdY0Ref[i][j]);
Assert.assertEquals(0, error, 6.0e-2);
}
}
}
}
}
use of org.orekit.propagation.integration.AbstractIntegratedPropagator in project Orekit by CS-SI.
the class PartialDerivativesTest method testPropagationTypesHyperbolic.
@Test
public void testPropagationTypesHyperbolic() throws OrekitException {
NormalizedSphericalHarmonicsProvider provider = GravityFieldFactory.getNormalizedProvider(5, 5);
ForceModel gravityField = new HolmesFeatherstoneAttractionModel(FramesFactory.getITRF(IERSConventions.IERS_2010, true), provider);
Orbit initialOrbit = new KeplerianOrbit(new PVCoordinates(new Vector3D(-1551946.0, 708899.0, 6788204.0), new Vector3D(-9875.0, -3941.0, -1845.0)), FramesFactory.getEME2000(), AbsoluteDate.J2000_EPOCH, provider.getMu());
double dt = 900;
double dP = 0.001;
for (OrbitType orbitType : new OrbitType[] { OrbitType.KEPLERIAN, OrbitType.CARTESIAN }) {
for (PositionAngle angleType : PositionAngle.values()) {
// compute state Jacobian using PartialDerivatives
NumericalPropagator propagator = setUpPropagator(initialOrbit, dP, orbitType, angleType, gravityField);
PartialDerivativesEquations partials = new PartialDerivativesEquations("partials", propagator);
final SpacecraftState initialState = partials.setInitialJacobians(new SpacecraftState(initialOrbit));
propagator.setInitialState(initialState);
final JacobiansMapper mapper = partials.getMapper();
PickUpHandler pickUp = new PickUpHandler(mapper, null);
propagator.setMasterMode(pickUp);
propagator.propagate(initialState.getDate().shiftedBy(dt));
double[][] dYdY0 = pickUp.getdYdY0();
// compute reference state Jacobian using finite differences
double[][] dYdY0Ref = new double[6][6];
AbstractIntegratedPropagator propagator2 = setUpPropagator(initialOrbit, dP, orbitType, angleType, gravityField);
double[] steps = NumericalPropagator.tolerances(1000000 * dP, initialOrbit, orbitType)[0];
for (int i = 0; i < 6; ++i) {
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, -4 * steps[i], i));
SpacecraftState sM4h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, -3 * steps[i], i));
SpacecraftState sM3h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, -2 * steps[i], i));
SpacecraftState sM2h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, -1 * steps[i], i));
SpacecraftState sM1h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, 1 * steps[i], i));
SpacecraftState sP1h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, 2 * steps[i], i));
SpacecraftState sP2h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, 3 * steps[i], i));
SpacecraftState sP3h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
propagator2.resetInitialState(shiftState(initialState, orbitType, angleType, 4 * steps[i], i));
SpacecraftState sP4h = propagator2.propagate(initialState.getDate().shiftedBy(dt));
fillJacobianColumn(dYdY0Ref, i, orbitType, angleType, steps[i], sM4h, sM3h, sM2h, sM1h, sP1h, sP2h, sP3h, sP4h);
}
for (int i = 0; i < 6; ++i) {
for (int j = 0; j < 6; ++j) {
double error = FastMath.abs((dYdY0[i][j] - dYdY0Ref[i][j]) / dYdY0Ref[i][j]);
Assert.assertEquals(0, error, 1.0e-3);
}
}
}
}
}
Aggregations