Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Orekit Orekit
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 76
    • Issues 76
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 17
    • Merge requests 17
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Orekit
  • OrekitOrekit
  • Issues
  • #921
Closed
Open
Created Apr 22, 2022 by Luc Maisonobe@lucOwner

non-bracketing issue due to numerical noise for events at end of interval

The issue corresponds to this forum discussion.

It can be reproduced by the following test case:

    @Test
    public void testNumericalNoiseAtIntervalEnd() {

        Frame eme2000 = FramesFactory.getEME2000();
        TimeScale utc = TimeScalesFactory.getUTC();
        final AbsoluteDate initialDate   = new AbsoluteDate(2011, 5, 11, utc);
        final Orbit orbit = new EquinoctialOrbit(new PVCoordinates(new Vector3D(4008462.4706055815, -3155502.5373837613, -5044275.9880020910),
                                                                   new Vector3D(-5012.9298276860990, 1920.3567095973078, -5172.7403501801580)),
                                                 eme2000, initialDate, Constants.WGS84_EARTH_MU);
        Propagator propagator = new KeplerianPropagator(orbit);
        double base  = 3600.0;
        double noise = FastMath.scalb(base, -60);
        // introduce some numerical noise by using two separate shifts
        AbsoluteDate finalTime = initialDate.shiftedBy(base).shiftedBy(2 * noise);
        AbsoluteDate eventTime = finalTime.shiftedBy(-noise);
        propagator.addEventDetector(new DateDetector(eventTime).withMaxCheck(base).withThreshold(noise / 2));
        SpacecraftState finalState = propagator.propagate(finalTime);
        Assert.assertEquals(0.0, finalState.getDate().durationFrom(eventTime), noise / 2);

    }
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking