Search in sources :

Example 1 with FieldContinueOnEvent

use of org.orekit.propagation.events.handlers.FieldContinueOnEvent in project Orekit by CS-SI.

the class FieldEcksteinHechlerPropagatorTest method doStopAtTargetDate.

private <T extends RealFieldElement<T>> void doStopAtTargetDate(Field<T> field) throws OrekitException {
    T zero = field.getZero();
    FieldAbsoluteDate<T> date = new FieldAbsoluteDate<>(field);
    final FieldKeplerianOrbit<T> orbit = new FieldKeplerianOrbit<>(zero.add(7.8e6), zero.add(0.032), zero.add(0.4), zero.add(0.1), zero.add(0.2), zero.add(0.3), PositionAngle.TRUE, FramesFactory.getEME2000(), date, 3.986004415e14);
    FieldEcksteinHechlerPropagator<T> propagator = new FieldEcksteinHechlerPropagator<>(orbit, provider);
    Frame itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
    propagator.addEventDetector(new FieldNodeDetector<>(orbit, itrf).withHandler(new FieldContinueOnEvent<FieldNodeDetector<T>, T>()));
    FieldAbsoluteDate<T> farTarget = orbit.getDate().shiftedBy(10000.0);
    FieldSpacecraftState<T> propagated = propagator.propagate(farTarget);
    Assert.assertEquals(0.0, FastMath.abs(farTarget.durationFrom(propagated.getDate()).getReal()), 1.0e-3);
}
Also used : Frame(org.orekit.frames.Frame) TopocentricFrame(org.orekit.frames.TopocentricFrame) FieldNodeDetector(org.orekit.propagation.events.FieldNodeDetector) FieldContinueOnEvent(org.orekit.propagation.events.handlers.FieldContinueOnEvent) FieldAbsoluteDate(org.orekit.time.FieldAbsoluteDate) FieldKeplerianOrbit(org.orekit.orbits.FieldKeplerianOrbit)

Example 2 with FieldContinueOnEvent

use of org.orekit.propagation.events.handlers.FieldContinueOnEvent in project Orekit by CS-SI.

the class FieldEventDetectorTest method doTestNoisyGFunction.

private <T extends RealFieldElement<T>> void doTestNoisyGFunction(Field<T> field) throws OrekitException {
    final T zero = field.getZero();
    // initial conditions
    Frame eme2000 = FramesFactory.getEME2000();
    TimeScale utc = TimeScalesFactory.getUTC();
    FieldAbsoluteDate<T> initialDate = new FieldAbsoluteDate<>(field, 2011, 5, 11, utc);
    FieldAbsoluteDate<T> startDate = new FieldAbsoluteDate<>(field, 2032, 10, 17, utc);
    @SuppressWarnings("unchecked") FieldAbsoluteDate<T>[] interruptDates = (FieldAbsoluteDate<T>[]) Array.newInstance(FieldAbsoluteDate.class, 1);
    interruptDates[0] = new FieldAbsoluteDate<>(field, 2032, 10, 18, utc);
    FieldAbsoluteDate<T> targetDate = new FieldAbsoluteDate<>(field, 2211, 5, 11, utc);
    FieldKeplerianPropagator<T> k1 = new FieldKeplerianPropagator<>(new FieldEquinoctialOrbit<>(new FieldPVCoordinates<>(new FieldVector3D<>(zero.add(4008462.4706055815), zero.add(-3155502.5373837613), zero.add(-5044275.9880020910)), new FieldVector3D<>(zero.add(-5012.9298276860990), zero.add(1920.3567095973078), zero.add(-5172.7403501801580))), eme2000, initialDate, Constants.WGS84_EARTH_MU));
    FieldKeplerianPropagator<T> k2 = new FieldKeplerianPropagator<>(new FieldEquinoctialOrbit<>(new FieldPVCoordinates<>(new FieldVector3D<>(zero.add(4008912.4039522274), zero.add(-3155453.3125615157), zero.add(-5044297.6484738905)), new FieldVector3D<>(zero.add(-5012.5883854112530), zero.add(1920.6332221785074), zero.add(-5172.2177085540500))), eme2000, initialDate, Constants.WGS84_EARTH_MU));
    k2.addEventDetector(new FieldCloseApproachDetector<>(zero.add(2015.243454166727), zero.add(0.0001), 100, new FieldContinueOnEvent<FieldCloseApproachDetector<T>, T>(), k1));
    k2.addEventDetector(new FieldDateDetector<>(zero.add(Constants.JULIAN_DAY), zero.add(1.0e-6), interruptDates));
    FieldSpacecraftState<T> s = k2.propagate(startDate, targetDate);
    Assert.assertEquals(0.0, interruptDates[0].durationFrom(s.getDate()).getReal(), 1.1e-6);
}
Also used : Frame(org.orekit.frames.Frame) FieldContinueOnEvent(org.orekit.propagation.events.handlers.FieldContinueOnEvent) TimeScale(org.orekit.time.TimeScale) FieldKeplerianPropagator(org.orekit.propagation.analytical.FieldKeplerianPropagator) FieldPVCoordinates(org.orekit.utils.FieldPVCoordinates) FieldAbsoluteDate(org.orekit.time.FieldAbsoluteDate)

Example 3 with FieldContinueOnEvent

use of org.orekit.propagation.events.handlers.FieldContinueOnEvent in project Orekit by CS-SI.

the class FieldKeplerianPropagatorTest method doTestStopAtTargetDate.

private <T extends RealFieldElement<T>> void doTestStopAtTargetDate(Field<T> field) throws OrekitException {
    T zero = field.getZero();
    final FieldKeplerianOrbit<T> orbit = new FieldKeplerianOrbit<>(zero.add(7.8e6), zero.add(0.032), zero.add(0.4), zero.add(0.1), zero.add(0.2), zero.add(0.3), PositionAngle.TRUE, FramesFactory.getEME2000(), new FieldAbsoluteDate<>(field), 3.986004415e14);
    FieldKeplerianPropagator<T> propagator = new FieldKeplerianPropagator<>(orbit);
    Frame itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
    propagator.addEventDetector(new FieldNodeDetector<>(orbit, itrf).withHandler(new FieldContinueOnEvent<FieldNodeDetector<T>, T>()));
    FieldAbsoluteDate<T> farTarget = orbit.getDate().shiftedBy(10000.0);
    FieldSpacecraftState<T> propagated = propagator.propagate(farTarget);
    Assert.assertEquals(0.0, FastMath.abs(farTarget.durationFrom(propagated.getDate()).getReal()), 1.0e-3);
}
Also used : Frame(org.orekit.frames.Frame) TopocentricFrame(org.orekit.frames.TopocentricFrame) FieldNodeDetector(org.orekit.propagation.events.FieldNodeDetector) FieldContinueOnEvent(org.orekit.propagation.events.handlers.FieldContinueOnEvent) FieldKeplerianOrbit(org.orekit.orbits.FieldKeplerianOrbit)

Aggregations

Frame (org.orekit.frames.Frame)3 FieldContinueOnEvent (org.orekit.propagation.events.handlers.FieldContinueOnEvent)3 TopocentricFrame (org.orekit.frames.TopocentricFrame)2 FieldKeplerianOrbit (org.orekit.orbits.FieldKeplerianOrbit)2 FieldNodeDetector (org.orekit.propagation.events.FieldNodeDetector)2 FieldAbsoluteDate (org.orekit.time.FieldAbsoluteDate)2 FieldKeplerianPropagator (org.orekit.propagation.analytical.FieldKeplerianPropagator)1 TimeScale (org.orekit.time.TimeScale)1 FieldPVCoordinates (org.orekit.utils.FieldPVCoordinates)1