Search in sources :

Example 76 with Orbit

use of org.orekit.orbits.Orbit in project Orekit by CS-SI.

the class EcksteinHechlerPropagatorTest method sameDateCartesian.

@Test
public void sameDateCartesian() throws OrekitException {
    // Definition of initial conditions with position and velocity
    // ------------------------------------------------------------
    // with e around e = 1.4e-4 and i = 1.7 rad
    Vector3D position = new Vector3D(3220103., 69623., 6449822.);
    Vector3D velocity = new Vector3D(6414.7, -2006., -3180.);
    AbsoluteDate initDate = AbsoluteDate.J2000_EPOCH.shiftedBy(584.);
    Orbit initialOrbit = new EquinoctialOrbit(new PVCoordinates(position, velocity), FramesFactory.getEME2000(), initDate, provider.getMu());
    // Extrapolator definition
    // -----------------------
    EcksteinHechlerPropagator extrapolator = new EcksteinHechlerPropagator(initialOrbit, provider);
    // Extrapolation at the initial date
    // ---------------------------------
    SpacecraftState finalOrbit = extrapolator.propagate(initDate);
    // positions match perfectly
    Assert.assertEquals(0.0, Vector3D.distance(initialOrbit.getPVCoordinates().getPosition(), finalOrbit.getPVCoordinates().getPosition()), 1.0e-8);
    // velocity and circular parameters do *not* match, this is EXPECTED!
    // the reason is that we ensure position/velocity are consistent with the
    // evolution of the orbit, and this includes the non-Keplerian effects,
    // whereas the initial orbit is Keplerian only. The implementation of the
    // model is such that rather than having a perfect match at initial point
    // (either in velocity or in circular parameters), we have a propagated orbit
    // that remains close to a numerical reference throughout the orbit.
    // This is shown in the testInitializationCorrectness() where a numerical
    // fit is used to check initialization
    Assert.assertEquals(0.137, Vector3D.distance(initialOrbit.getPVCoordinates().getVelocity(), finalOrbit.getPVCoordinates().getVelocity()), 1.0e-3);
    Assert.assertEquals(125.2, finalOrbit.getA() - initialOrbit.getA(), 0.1);
}
Also used : SpacecraftState(org.orekit.propagation.SpacecraftState) EquinoctialOrbit(org.orekit.orbits.EquinoctialOrbit) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) Orbit(org.orekit.orbits.Orbit) CircularOrbit(org.orekit.orbits.CircularOrbit) Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) EquinoctialOrbit(org.orekit.orbits.EquinoctialOrbit) TimeStampedPVCoordinates(org.orekit.utils.TimeStampedPVCoordinates) PVCoordinates(org.orekit.utils.PVCoordinates) FieldAbsoluteDate(org.orekit.time.FieldAbsoluteDate) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 77 with Orbit

use of org.orekit.orbits.Orbit in project Orekit by CS-SI.

the class EcksteinHechlerPropagatorTest method tooEllipticalOrbit.

@Test(expected = OrekitException.class)
public void tooEllipticalOrbit() throws OrekitException {
    // for an eccentricity too big for the model
    Vector3D position = new Vector3D(7.0e6, 1.0e6, 4.0e6);
    Vector3D velocity = new Vector3D(-500.0, 8000.0, 1000.0);
    AbsoluteDate initDate = AbsoluteDate.J2000_EPOCH;
    Orbit initialOrbit = new EquinoctialOrbit(new PVCoordinates(position, velocity), FramesFactory.getEME2000(), initDate, provider.getMu());
    // Extrapolator definition
    // -----------------------
    EcksteinHechlerPropagator extrapolator = new EcksteinHechlerPropagator(initialOrbit, provider);
    // Extrapolation at the initial date
    // ---------------------------------
    double delta_t = 0.0;
    AbsoluteDate extrapDate = initDate.shiftedBy(delta_t);
    extrapolator.propagate(extrapDate);
}
Also used : EquinoctialOrbit(org.orekit.orbits.EquinoctialOrbit) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) Orbit(org.orekit.orbits.Orbit) CircularOrbit(org.orekit.orbits.CircularOrbit) Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) EquinoctialOrbit(org.orekit.orbits.EquinoctialOrbit) TimeStampedPVCoordinates(org.orekit.utils.TimeStampedPVCoordinates) PVCoordinates(org.orekit.utils.PVCoordinates) FieldAbsoluteDate(org.orekit.time.FieldAbsoluteDate) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 78 with Orbit

use of org.orekit.orbits.Orbit in project Orekit by CS-SI.

the class EcksteinHechlerPropagatorTest method equatorialOrbit.

@Test(expected = OrekitException.class)
public void equatorialOrbit() throws OrekitException {
    AbsoluteDate initDate = AbsoluteDate.J2000_EPOCH;
    Orbit initialOrbit = new CircularOrbit(7000000, 1.0e-4, -1.5e-4, 0.0, 1.2, 2.3, PositionAngle.MEAN, FramesFactory.getEME2000(), initDate, provider.getMu());
    // Extrapolator definition
    // -----------------------
    EcksteinHechlerPropagator extrapolator = new EcksteinHechlerPropagator(initialOrbit, provider);
    // Extrapolation at the initial date
    // ---------------------------------
    double delta_t = 0.0;
    AbsoluteDate extrapDate = initDate.shiftedBy(delta_t);
    extrapolator.propagate(extrapDate);
}
Also used : EquinoctialOrbit(org.orekit.orbits.EquinoctialOrbit) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) Orbit(org.orekit.orbits.Orbit) CircularOrbit(org.orekit.orbits.CircularOrbit) CircularOrbit(org.orekit.orbits.CircularOrbit) FieldAbsoluteDate(org.orekit.time.FieldAbsoluteDate) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 79 with Orbit

use of org.orekit.orbits.Orbit in project Orekit by CS-SI.

the class EphemerisTest method setUp.

@Before
public void setUp() throws IllegalArgumentException, OrekitException {
    Utils.setDataRoot("regular-data");
    initDate = new AbsoluteDate(new DateComponents(2004, 01, 01), TimeComponents.H00, TimeScalesFactory.getUTC());
    finalDate = new AbsoluteDate(new DateComponents(2004, 01, 02), TimeComponents.H00, TimeScalesFactory.getUTC());
    double a = 7187990.1979844316;
    double e = 0.5e-4;
    double i = 1.7105407051081795;
    double omega = 1.9674147913622104;
    double OMEGA = FastMath.toRadians(261);
    double lv = 0;
    double mu = 3.9860047e14;
    inertialFrame = FramesFactory.getEME2000();
    Orbit initialState = new KeplerianOrbit(a, e, i, omega, OMEGA, lv, PositionAngle.TRUE, inertialFrame, initDate, mu);
    propagator = new KeplerianPropagator(initialState);
}
Also used : Orbit(org.orekit.orbits.Orbit) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) DateComponents(org.orekit.time.DateComponents) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) AbsoluteDate(org.orekit.time.AbsoluteDate) Before(org.junit.Before)

Example 80 with Orbit

use of org.orekit.orbits.Orbit in project Orekit by CS-SI.

the class EphemerisTest method testProtectedMethods.

@Test
public void testProtectedMethods() throws OrekitException, SecurityException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
    propagator.setAttitudeProvider(new LofOffset(inertialFrame, LOFType.VVLH));
    List<SpacecraftState> states = new ArrayList<SpacecraftState>();
    for (double dt = 0; dt >= -1200; dt -= 60.0) {
        final SpacecraftState original = propagator.propagate(initDate.shiftedBy(dt));
        final SpacecraftState modified = new SpacecraftState(original.getOrbit(), original.getAttitude(), original.getMass() - 0.0625 * dt);
        states.add(modified);
    }
    final Propagator ephem = new Ephemeris(states, 2);
    Method propagateOrbit = Ephemeris.class.getDeclaredMethod("propagateOrbit", AbsoluteDate.class);
    propagateOrbit.setAccessible(true);
    Method getMass = Ephemeris.class.getDeclaredMethod("getMass", AbsoluteDate.class);
    getMass.setAccessible(true);
    SpacecraftState s = ephem.propagate(initDate.shiftedBy(-270.0));
    Orbit o = (Orbit) propagateOrbit.invoke(ephem, s.getDate());
    double m = ((Double) getMass.invoke(ephem, s.getDate())).doubleValue();
    Assert.assertEquals(0.0, Vector3D.distance(s.getPVCoordinates().getPosition(), o.getPVCoordinates().getPosition()), 1.0e-15);
    Assert.assertEquals(s.getMass(), m, 1.0e-15);
}
Also used : SpacecraftState(org.orekit.propagation.SpacecraftState) Orbit(org.orekit.orbits.Orbit) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) Propagator(org.orekit.propagation.Propagator) ArrayList(java.util.ArrayList) Method(java.lang.reflect.Method) LofOffset(org.orekit.attitudes.LofOffset) Test(org.junit.Test)

Aggregations

Orbit (org.orekit.orbits.Orbit)211 KeplerianOrbit (org.orekit.orbits.KeplerianOrbit)161 Test (org.junit.Test)153 AbsoluteDate (org.orekit.time.AbsoluteDate)153 SpacecraftState (org.orekit.propagation.SpacecraftState)129 Vector3D (org.hipparchus.geometry.euclidean.threed.Vector3D)99 EquinoctialOrbit (org.orekit.orbits.EquinoctialOrbit)94 CartesianOrbit (org.orekit.orbits.CartesianOrbit)88 FieldAbsoluteDate (org.orekit.time.FieldAbsoluteDate)74 CircularOrbit (org.orekit.orbits.CircularOrbit)68 PVCoordinates (org.orekit.utils.PVCoordinates)66 Frame (org.orekit.frames.Frame)51 NumericalPropagator (org.orekit.propagation.numerical.NumericalPropagator)51 DateComponents (org.orekit.time.DateComponents)48 FieldSpacecraftState (org.orekit.propagation.FieldSpacecraftState)46 Propagator (org.orekit.propagation.Propagator)46 TimeComponents (org.orekit.time.TimeComponents)44 OneAxisEllipsoid (org.orekit.bodies.OneAxisEllipsoid)43 AbstractLegacyForceModelTest (org.orekit.forces.AbstractLegacyForceModelTest)41 FieldKeplerianOrbit (org.orekit.orbits.FieldKeplerianOrbit)39