Search in sources :

Example 86 with AbsoluteDate

use of org.orekit.time.AbsoluteDate in project Orekit by CS-SI.

the class EOPHistory method getUT1MinusUTC.

/**
 * Get the UT1-UTC value.
 * <p>The data provided comes from the IERS files. It is smoothed data.</p>
 * @param date date at which the value is desired
 * @param <T> type of the field elements
 * @return UT1-UTC in seconds (0 if date is outside covered range)
 * @since 9.0
 */
public <T extends RealFieldElement<T>> T getUT1MinusUTC(final FieldAbsoluteDate<T> date) {
    // check if there is data for date
    final AbsoluteDate absDate = date.toAbsoluteDate();
    if (!this.hasDataFor(absDate)) {
        // no EOP data available for this date, we use a default 0.0 offset
        return (tidalCorrection == null) ? date.getField().getZero() : tidalCorrection.value(date)[2];
    }
    // we have EOP data -> interpolate offset
    try {
        final FieldDUT1Interpolator<T> interpolator = new FieldDUT1Interpolator<>(date, absDate);
        getNeighbors(absDate).forEach(interpolator);
        T interpolated = interpolator.getInterpolated();
        if (tidalCorrection != null) {
            interpolated = interpolated.add(tidalCorrection.value(date)[2]);
        }
        return interpolated;
    } catch (TimeStampedCacheException tce) {
        // this should not happen because of date check above
        throw new OrekitInternalError(tce);
    }
}
Also used : TimeStampedCacheException(org.orekit.errors.TimeStampedCacheException) OrekitInternalError(org.orekit.errors.OrekitInternalError) FieldAbsoluteDate(org.orekit.time.FieldAbsoluteDate) AbsoluteDate(org.orekit.time.AbsoluteDate)

Example 87 with AbsoluteDate

use of org.orekit.time.AbsoluteDate in project Orekit by CS-SI.

the class ConstantThrustManeuver method init.

/**
 * {@inheritDoc}
 */
@Override
public void init(final SpacecraftState s0, final AbsoluteDate t) {
    // set the initial value of firing
    final AbsoluteDate sDate = s0.getDate();
    final boolean isForward = sDate.compareTo(t) < 0;
    final boolean isBetween = startDate.compareTo(sDate) < 0 && endDate.compareTo(sDate) > 0;
    final boolean isOnStart = startDate.compareTo(sDate) == 0;
    final boolean isOnEnd = endDate.compareTo(sDate) == 0;
    firing = isBetween || (isForward && isOnStart) || (!isForward && isOnEnd);
}
Also used : FieldAbsoluteDate(org.orekit.time.FieldAbsoluteDate) AbsoluteDate(org.orekit.time.AbsoluteDate)

Example 88 with AbsoluteDate

use of org.orekit.time.AbsoluteDate in project Orekit by CS-SI.

the class NumericalPropagatorTest method testEphemerisDates.

@Test
public void testEphemerisDates() throws OrekitException {
    // setup
    TimeScale tai = TimeScalesFactory.getTAI();
    AbsoluteDate initialDate = new AbsoluteDate("2015-07-01", tai);
    AbsoluteDate startDate = new AbsoluteDate("2015-07-03", tai).shiftedBy(-0.1);
    AbsoluteDate endDate = new AbsoluteDate("2015-07-04", tai);
    Frame eci = FramesFactory.getGCRF();
    KeplerianOrbit orbit = new KeplerianOrbit(600e3 + Constants.WGS84_EARTH_EQUATORIAL_RADIUS, 0, 0, 0, 0, 0, PositionAngle.TRUE, eci, initialDate, mu);
    OrbitType type = OrbitType.CARTESIAN;
    double[][] tol = NumericalPropagator.tolerances(1e-3, orbit, type);
    NumericalPropagator prop = new NumericalPropagator(new DormandPrince853Integrator(0.1, 500, tol[0], tol[1]));
    prop.setOrbitType(type);
    prop.resetInitialState(new SpacecraftState(new CartesianOrbit(orbit)));
    // action
    prop.setEphemerisMode();
    prop.propagate(startDate, endDate);
    BoundedPropagator ephemeris = prop.getGeneratedEphemeris();
    // verify
    TimeStampedPVCoordinates actualPV = ephemeris.getPVCoordinates(startDate, eci);
    TimeStampedPVCoordinates expectedPV = orbit.getPVCoordinates(startDate, eci);
    MatcherAssert.assertThat(actualPV.getPosition(), OrekitMatchers.vectorCloseTo(expectedPV.getPosition(), 1.0));
    MatcherAssert.assertThat(actualPV.getVelocity(), OrekitMatchers.vectorCloseTo(expectedPV.getVelocity(), 1.0));
    MatcherAssert.assertThat(ephemeris.getMinDate().durationFrom(startDate), OrekitMatchers.closeTo(0, 0));
    MatcherAssert.assertThat(ephemeris.getMaxDate().durationFrom(endDate), OrekitMatchers.closeTo(0, 0));
    // test date
    AbsoluteDate date = endDate.shiftedBy(-0.11);
    Assert.assertEquals(ephemeris.propagate(date).getDate().durationFrom(date), 0, 0);
}
Also used : SpacecraftState(org.orekit.propagation.SpacecraftState) FieldSpacecraftState(org.orekit.propagation.FieldSpacecraftState) Frame(org.orekit.frames.Frame) CartesianOrbit(org.orekit.orbits.CartesianOrbit) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) OrbitType(org.orekit.orbits.OrbitType) DormandPrince853Integrator(org.hipparchus.ode.nonstiff.DormandPrince853Integrator) TimeStampedPVCoordinates(org.orekit.utils.TimeStampedPVCoordinates) TimeScale(org.orekit.time.TimeScale) BoundedPropagator(org.orekit.propagation.BoundedPropagator) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 89 with AbsoluteDate

use of org.orekit.time.AbsoluteDate in project Orekit by CS-SI.

the class NumericalPropagatorTest method testParallelismIssue258.

@Test
public void testParallelismIssue258() throws OrekitException, InterruptedException, ExecutionException, FileNotFoundException {
    Utils.setDataRoot("regular-data:atmosphere:potential/grgs-format");
    GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true));
    final double mu = GravityFieldFactory.getNormalizedProvider(2, 2).getMu();
    // Geostationary transfer orbit
    // semi major axis in meters
    final double a = 24396159;
    // eccentricity
    final double e = 0.72831215;
    // inclination
    final double i = FastMath.toRadians(7);
    // perigee argument
    final double omega = FastMath.toRadians(180);
    // right ascension of ascending node
    final double raan = FastMath.toRadians(261);
    // mean anomaly
    final double lM = 0;
    final Frame inertialFrame = FramesFactory.getEME2000();
    final TimeScale utc = TimeScalesFactory.getUTC();
    final AbsoluteDate initialDate = new AbsoluteDate(2003, 1, 1, 00, 00, 00.000, utc);
    final Orbit initialOrbit = new CartesianOrbit(new KeplerianOrbit(a, e, i, omega, raan, lM, PositionAngle.MEAN, inertialFrame, initialDate, mu));
    final SpacecraftState initialState = new SpacecraftState(initialOrbit, 1000);
    // initialize the testing points
    final List<SpacecraftState> states = new ArrayList<SpacecraftState>();
    final NumericalPropagator propagator = createPropagator(initialState, OrbitType.CARTESIAN, PositionAngle.TRUE);
    final double samplingStep = 10000.0;
    propagator.setMasterMode(samplingStep, (state, isLast) -> states.add(state));
    propagator.propagate(initialDate.shiftedBy(5 * samplingStep));
    // compute reference errors, using serial computation in a for loop
    final double[][] referenceErrors = new double[states.size() - 1][];
    for (int startIndex = 0; startIndex < states.size() - 1; ++startIndex) {
        referenceErrors[startIndex] = recomputeFollowing(startIndex, states);
    }
    final Consumer<SpacecraftState> checker = point -> {
        try {
            final int startIndex = states.indexOf(point);
            double[] errors = recomputeFollowing(startIndex, states);
            for (int k = 0; k < errors.length; ++k) {
                Assert.assertEquals(startIndex + " to " + (startIndex + k + 1), referenceErrors[startIndex][k], errors[k], 1.0e-9);
            }
        } catch (OrekitException oe) {
            Assert.fail(oe.getLocalizedMessage());
        }
    };
    // serial propagation using Stream
    states.stream().forEach(checker);
    // parallel propagation using parallelStream
    states.parallelStream().forEach(checker);
}
Also used : ParameterDriver(org.orekit.utils.ParameterDriver) CoreMatchers(org.hamcrest.CoreMatchers) ApsideDetector(org.orekit.propagation.events.ApsideDetector) TimeStampedPVCoordinates(org.orekit.utils.TimeStampedPVCoordinates) AdaptiveStepsizeIntegrator(org.hipparchus.ode.nonstiff.AdaptiveStepsizeIntegrator) ForceModel(org.orekit.forces.ForceModel) Frame(org.orekit.frames.Frame) DragForce(org.orekit.forces.drag.DragForce) IERSConventions(org.orekit.utils.IERSConventions) PVCoordinates(org.orekit.utils.PVCoordinates) EquinoctialOrbit(org.orekit.orbits.EquinoctialOrbit) GRGSFormatReader(org.orekit.forces.gravity.potential.GRGSFormatReader) SpacecraftState(org.orekit.propagation.SpacecraftState) FieldEventDetector(org.orekit.propagation.events.FieldEventDetector) After(org.junit.After) StopOnEvent(org.orekit.propagation.events.handlers.StopOnEvent) ThirdBodyAttraction(org.orekit.forces.gravity.ThirdBodyAttraction) PositionAngle(org.orekit.orbits.PositionAngle) DateDetector(org.orekit.propagation.events.DateDetector) ParseException(java.text.ParseException) Utils(org.orekit.Utils) CartesianOrbit(org.orekit.orbits.CartesianOrbit) FramesFactory(org.orekit.frames.FramesFactory) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) FileNotFoundException(java.io.FileNotFoundException) SHMFormatReader(org.orekit.forces.gravity.potential.SHMFormatReader) List(java.util.List) Stream(java.util.stream.Stream) MatcherAssert(org.hamcrest.MatcherAssert) DataProvidersManager(org.orekit.data.DataProvidersManager) RealFieldElement(org.hipparchus.RealFieldElement) EventDetector(org.orekit.propagation.events.EventDetector) Action(org.orekit.propagation.events.handlers.EventHandler.Action) SolarRadiationPressure(org.orekit.forces.radiation.SolarRadiationPressure) DormandPrince853Integrator(org.hipparchus.ode.nonstiff.DormandPrince853Integrator) ContinueOnEvent(org.orekit.propagation.events.handlers.ContinueOnEvent) OrekitStepHandler(org.orekit.propagation.sampling.OrekitStepHandler) AdditionalStateProvider(org.orekit.propagation.AdditionalStateProvider) AbstractIntegratedPropagator(org.orekit.propagation.integration.AbstractIntegratedPropagator) TimeScale(org.orekit.time.TimeScale) Orbit(org.orekit.orbits.Orbit) FieldSpacecraftState(org.orekit.propagation.FieldSpacecraftState) ArrayList(java.util.ArrayList) NormalizedSphericalHarmonicsProvider(org.orekit.forces.gravity.potential.NormalizedSphericalHarmonicsProvider) IsotropicRadiationSingleCoefficient(org.orekit.forces.radiation.IsotropicRadiationSingleCoefficient) ODEIntegrator(org.hipparchus.ode.ODEIntegrator) OrbitType(org.orekit.orbits.OrbitType) FieldVector3D(org.hipparchus.geometry.euclidean.threed.FieldVector3D) ClassicalRungeKuttaIntegrator(org.hipparchus.ode.nonstiff.ClassicalRungeKuttaIntegrator) OrekitStepInterpolator(org.orekit.propagation.sampling.OrekitStepInterpolator) FastMath(org.hipparchus.util.FastMath) AdditionalEquations(org.orekit.propagation.integration.AdditionalEquations) Before(org.junit.Before) Constants(org.orekit.utils.Constants) DTM2000(org.orekit.forces.drag.atmosphere.DTM2000) BoundedPropagator(org.orekit.propagation.BoundedPropagator) Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) OrekitMatchers(org.orekit.OrekitMatchers) IOException(java.io.IOException) Test(org.junit.Test) GravityFieldFactory(org.orekit.forces.gravity.potential.GravityFieldFactory) MarshallSolarActivityFutureEstimation(org.orekit.forces.drag.atmosphere.data.MarshallSolarActivityFutureEstimation) ExecutionException(java.util.concurrent.ExecutionException) Consumer(java.util.function.Consumer) Field(org.hipparchus.Field) OrekitMessages(org.orekit.errors.OrekitMessages) EventHandler(org.orekit.propagation.events.handlers.EventHandler) OneAxisEllipsoid(org.orekit.bodies.OneAxisEllipsoid) OrekitException(org.orekit.errors.OrekitException) CelestialBodyFactory(org.orekit.bodies.CelestialBodyFactory) TimeScalesFactory(org.orekit.time.TimeScalesFactory) IsotropicDrag(org.orekit.forces.drag.IsotropicDrag) LocalizedCoreFormats(org.hipparchus.exception.LocalizedCoreFormats) Assert(org.junit.Assert) AbstractDetector(org.orekit.propagation.events.AbstractDetector) HolmesFeatherstoneAttractionModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel) AbsoluteDate(org.orekit.time.AbsoluteDate) Frame(org.orekit.frames.Frame) CartesianOrbit(org.orekit.orbits.CartesianOrbit) EquinoctialOrbit(org.orekit.orbits.EquinoctialOrbit) CartesianOrbit(org.orekit.orbits.CartesianOrbit) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) Orbit(org.orekit.orbits.Orbit) ArrayList(java.util.ArrayList) TimeScale(org.orekit.time.TimeScale) AbsoluteDate(org.orekit.time.AbsoluteDate) GRGSFormatReader(org.orekit.forces.gravity.potential.GRGSFormatReader) SpacecraftState(org.orekit.propagation.SpacecraftState) FieldSpacecraftState(org.orekit.propagation.FieldSpacecraftState) KeplerianOrbit(org.orekit.orbits.KeplerianOrbit) OrekitException(org.orekit.errors.OrekitException) Test(org.junit.Test)

Example 90 with AbsoluteDate

use of org.orekit.time.AbsoluteDate in project Orekit by CS-SI.

the class NumericalPropagatorTest method createEllipticOrbit.

private CartesianOrbit createEllipticOrbit() throws OrekitException {
    final AbsoluteDate date = new AbsoluteDate("2003-05-01T00:00:20.000", TimeScalesFactory.getUTC());
    final Vector3D position = new Vector3D(6896874.444705, 1956581.072644, -147476.245054);
    final Vector3D velocity = new Vector3D(166.816407662, -1106.783301861, -7372.745712770);
    final TimeStampedPVCoordinates pv = new TimeStampedPVCoordinates(date, position, velocity);
    final Frame frame = FramesFactory.getEME2000();
    final double mu = Constants.EIGEN5C_EARTH_MU;
    return new CartesianOrbit(pv, frame, mu);
}
Also used : Frame(org.orekit.frames.Frame) CartesianOrbit(org.orekit.orbits.CartesianOrbit) FieldVector3D(org.hipparchus.geometry.euclidean.threed.FieldVector3D) Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) TimeStampedPVCoordinates(org.orekit.utils.TimeStampedPVCoordinates) AbsoluteDate(org.orekit.time.AbsoluteDate)

Aggregations

AbsoluteDate (org.orekit.time.AbsoluteDate)840 Test (org.junit.Test)632 Vector3D (org.hipparchus.geometry.euclidean.threed.Vector3D)321 FieldAbsoluteDate (org.orekit.time.FieldAbsoluteDate)283 SpacecraftState (org.orekit.propagation.SpacecraftState)279 KeplerianOrbit (org.orekit.orbits.KeplerianOrbit)204 PVCoordinates (org.orekit.utils.PVCoordinates)193 Orbit (org.orekit.orbits.Orbit)157 Frame (org.orekit.frames.Frame)152 OrekitException (org.orekit.errors.OrekitException)141 DateComponents (org.orekit.time.DateComponents)134 TimeStampedPVCoordinates (org.orekit.utils.TimeStampedPVCoordinates)106 CartesianOrbit (org.orekit.orbits.CartesianOrbit)104 EquinoctialOrbit (org.orekit.orbits.EquinoctialOrbit)97 ArrayList (java.util.ArrayList)96 Propagator (org.orekit.propagation.Propagator)90 TimeScale (org.orekit.time.TimeScale)90 OneAxisEllipsoid (org.orekit.bodies.OneAxisEllipsoid)88 TimeComponents (org.orekit.time.TimeComponents)88 FieldVector3D (org.hipparchus.geometry.euclidean.threed.FieldVector3D)87