This is a VOTE in order to release version 11.0 of the Orekit library.
Version 11.0 is a major release.
Highlights in the 11.0 release are:
Orbit determination using TLE orbit propagator
Sequential batch least squares orbit determination
New method signatures for IOD using directly the measurement classes
Writer and parser for all CCSDS Navigation Data Messages in both KVN and XML formats
Version 2 of CCSDS Tracking Data Messages
Version 3 of CCSDS Orbit Data Messages
Support for Rinex navigation files
Support for IGS clock files
Support for IGS real time data including both SSR and RTCM messages and Ntrip protocole
Consideration of eclipses by Moon in solar radiation pressure force
New API for analytical GNSS propagators
Addition of the finish
method to finalize propagation by step handlers. It replaces the previous isLast
parameter of the handleStep
method.
Removal of propagation modes (master, slave, and ephemeris)
Possibility to add several step handlers for the same orbit propagation
A lot of fixed bug
The release candidate 2 can be found on the GitLab repository as tag 11.0-RC2 in the release-11.0 branch:
https://gitlab.orekit.org/orekit/orekit/tree/11.0-RC2
The release notes can be read here:
https://test.orekit.org/site-orekit-11.0/changes-report.html
Maven artifacts are available at
https://oss.sonatype.org/content/repositories/orgorekit-1050/
The votes will be tallied in 120 hours for now, on 2021-09-13T08:40:00Z
(this is UTC time).
luc
September 8, 2021, 3:28pm
2
Checked everything I could (artifacts, signatures, matching between manifest and git SHA, source comparison, tests).
Everything looks good to me, except a few typos in the documentation I wrote myself and that can wait and be fixed later if I donβt forget.
+1 for the release.
+1 first iteration for python wrapping seems to work.
Lots of new stuff in there!!
+1 for me, Thatβs a promising release !
Hmm. Im having some errors in the test suite on my windows machine, the tests go fine on the linux but under win 10 i get some errors with absoultedate. The strings compared looks similar in the printout. Havent had time to investigate deeply.
[ERROR] testStandardEpochStrings(org.orekit.time.AbsoluteDateTest) Time elapsed: 0.018 s <<< FAILURE!
org.junit.ComparisonFailure: expected:<[-]4712-01-01T12:00:00β¦> but was:<[β]4712-01-01T12:00:00β¦>
at org.orekit.time.AbsoluteDateTest.testStandardEpochStrings(AbsoluteDateTest.java:68)
[ERROR] testToStringException(org.orekit.time.AbsoluteDateTest) Time elapsed: 0.025 s <<< FAILURE!
java.lang.AssertionError:
Expected: is β-5877490-03-03T00:00:00.000 TAIβ
but: was ββ5877490-03-03T00:00:00.000 TAIβ
at org.orekit.time.AbsoluteDateTest.testToStringException(AbsoluteDateTest.java:1313)
[ERROR] testToString(org.orekit.time.AbsoluteDateTest) Time elapsed: 0.017 s <<< FAILURE!
java.lang.AssertionError:
Expected: is β-0123-04-05T06:07:08.900Zβ
but: was ββ0123-04-05T06:07:08.900Zβ
at org.orekit.time.AbsoluteDateTest.checkToString(AbsoluteDateTest.java:1291)
at org.orekit.time.AbsoluteDateTest.testToString(AbsoluteDateTest.java:1273)
[ERROR] testInfinity(org.orekit.time.AbsoluteDateTest) Time elapsed: 0.014 s <<< FAILURE!
org.junit.ComparisonFailure: expected:<[-]5877490-03-03T00:00:β¦> but was:<[β]5877490-03-03T00:00:β¦>
at org.orekit.time.AbsoluteDateTest.testInfinity(AbsoluteDateTest.java:661)
surefire:
<?xml version="1.0" encoding="UTF-8"?>
<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="org.orekit.time.AbsoluteDateTest" time="0.719" tests="56" errors="0" skipped="0" failures="4">
<properties>
<property name="sun.desktop" value="windows"/>
<property name="awt.toolkit" value="sun.awt.windows.WToolkit"/>
<property name="java.specification.version" value="11"/>
<property name="sun.cpu.isalist" value="amd64"/>
<property name="sun.jnu.encoding" value="Cp1252"/>
<property name="java.class.path" value="C:\Users\phy\Development\orekit\Orekit\target\test-classes;C:\Users\phy\Development\orekit\Orekit\target\classes;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-core\2.0\hipparchus-core-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-geometry\2.0\hipparchus-geometry-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-ode\2.0\hipparchus-ode-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-fitting\2.0\hipparchus-fitting-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-optim\2.0\hipparchus-optim-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-filtering\2.0\hipparchus-filtering-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-stat\2.0\hipparchus-stat-2.0.jar;C:\Users\phy\.m2\repository\org\mockito\mockito-core\3.12.4\mockito-core-3.12.4.jar;C:\Users\phy\.m2\repository\net\bytebuddy\byte-buddy\1.11.13\byte-buddy-1.11.13.jar;C:\Users\phy\.m2\repository\net\bytebuddy\byte-buddy-agent\1.11.13\byte-buddy-agent-1.11.13.jar;C:\Users\phy\.m2\repository\org\objenesis\objenesis\3.2\objenesis-3.2.jar;C:\Users\phy\.m2\repository\junit\junit\4.13.2\junit-4.13.2.jar;C:\Users\phy\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\phy\Miniforge3\envs\openjdk\Library/../lib//tools.jar;"/>
<property name="java.vm.vendor" value="Azul Systems, Inc."/>
<property name="sun.arch.data.model" value="64"/>
<property name="user.variant" value=""/>
<property name="java.vendor.url" value="http://www.azulsystems.com/"/>
<property name="user.timezone" value="Europe/Berlin"/>
<property name="user.country.format" value="SE"/>
<property name="java.vm.specification.version" value="11"/>
<property name="os.name" value="Windows 10"/>
<property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="user.country" value="US"/>
<property name="sun.boot.library.path" value="C:\Users\phy\Miniforge3\envs\openjdk\Library\bin"/>
<property name="sun.java.command" value="C:\Users\phy\AppData\Local\Temp\surefire6658578688595441286\surefirebooter10071460842230276285.jar C:\Users\phy\AppData\Local\Temp\surefire6658578688595441286 2021-09-11T23-36-23_452-jvmRun1 surefire14210491328260489742tmp surefire_011053706785373523339tmp"/>
<property name="jdk.debug" value="release"/>
<property name="surefire.test.class.path" value="C:\Users\phy\Development\orekit\Orekit\target\test-classes;C:\Users\phy\Development\orekit\Orekit\target\classes;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-core\2.0\hipparchus-core-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-geometry\2.0\hipparchus-geometry-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-ode\2.0\hipparchus-ode-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-fitting\2.0\hipparchus-fitting-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-optim\2.0\hipparchus-optim-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-filtering\2.0\hipparchus-filtering-2.0.jar;C:\Users\phy\.m2\repository\org\hipparchus\hipparchus-stat\2.0\hipparchus-stat-2.0.jar;C:\Users\phy\.m2\repository\org\mockito\mockito-core\3.12.4\mockito-core-3.12.4.jar;C:\Users\phy\.m2\repository\net\bytebuddy\byte-buddy\1.11.13\byte-buddy-1.11.13.jar;C:\Users\phy\.m2\repository\net\bytebuddy\byte-buddy-agent\1.11.13\byte-buddy-agent-1.11.13.jar;C:\Users\phy\.m2\repository\org\objenesis\objenesis\3.2\objenesis-3.2.jar;C:\Users\phy\.m2\repository\junit\junit\4.13.2\junit-4.13.2.jar;C:\Users\phy\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\phy\Miniforge3\envs\openjdk\Library/../lib//tools.jar;"/>
<property name="sun.cpu.endian" value="little"/>
<property name="user.home" value="C:\Users\phy"/>
<property name="user.language" value="en"/>
<property name="java.specification.vendor" value="Oracle Corporation"/>
<property name="java.version.date" value="2018-10-16"/>
<property name="java.home" value="C:\Users\phy\Miniforge3\envs\openjdk\Library"/>
<property name="file.separator" value="\"/>
<property name="basedir" value="C:\Users\phy\Development\orekit\Orekit"/>
<property name="java.vm.compressedOopsMode" value="Zero based"/>
<property name="line.separator" value=" "/>
<property name="java.specification.name" value="Java Platform API Specification"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="java.awt.graphicsenv" value="sun.awt.Win32GraphicsEnvironment"/>
<property name="surefire.real.class.path" value="C:\Users\phy\AppData\Local\Temp\surefire6658578688595441286\surefirebooter10071460842230276285.jar"/>
<property name="user.script" value=""/>
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
<property name="java.runtime.version" value="11.0.1+13-LTS"/>
<property name="user.name" value="PHY"/>
<property name="path.separator" value=";"/>
<property name="os.version" value="10.0"/>
<property name="java.runtime.name" value="OpenJDK Runtime Environment"/>
<property name="file.encoding" value="Cp1252"/>
<property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/>
<property name="java.vendor.version" value="Zulu11.2+3"/>
<property name="localRepository" value="C:\Users\phy\.m2\repository"/>
<property name="java.vendor.url.bug" value="http://www.azulsystems.com/support/"/>
<property name="java.io.tmpdir" value="C:\Users\phy\AppData\Local\Temp\"/>
<property name="idea.version" value="2021.2.1"/>
<property name="java.version" value="11.0.1"/>
<property name="user.dir" value="C:\Users\phy\Development\orekit\Orekit"/>
<property name="os.arch" value="amd64"/>
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
<property name="java.awt.printerjob" value="sun.awt.windows.WPrinterJob"/>
<property name="user.language.format" value="sv"/>
<property name="sun.os.patch.level" value=""/>
<property name="java.library.path" value="C:\Users\phy\Miniforge3\envs\openjdk\Library\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Users\phy\Miniforge3\condabin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Sennheiser\SoftphoneSDK\;C:\Users\phy\AppData\Local\Microsoft\WindowsApps;C:\Users\phy\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\phy\AppData\Local\Polycom\RealPresence Desktop\;C:\Users\phy\AppData\Local\GitHubDesktop\bin;C:\Users\phy\AppData\Local\Programs\Git\cmd;."/>
<property name="java.vendor" value="Azul Systems, Inc."/>
<property name="java.vm.info" value="mixed mode"/>
<property name="java.vm.version" value="11.0.1+13-LTS"/>
<property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
<property name="java.class.version" value="55.0"/>
</properties>
<testcase name="testOffsets" classname="org.orekit.time.AbsoluteDateTest" time="0.014"/>
<testcase name="testWrapBeforeLeap" classname="org.orekit.time.AbsoluteDateTest" time="0.013"/>
<testcase name="testStandardEpochStrings" classname="org.orekit.time.AbsoluteDateTest" time="0.018">
<failure message="expected:<[-]4712-01-01T12:00:00....> but was:<[β]4712-01-01T12:00:00....>" type="org.junit.ComparisonFailure"><![CDATA[org.junit.ComparisonFailure: expected:<[-]4712-01-01T12:00:00....> but was:<[β]4712-01-01T12:00:00....>
at org.orekit.time.AbsoluteDateTest.testStandardEpochStrings(AbsoluteDateTest.java:68)
]]></failure>
</testcase>
<testcase name="testUtcGpsOffset" classname="org.orekit.time.AbsoluteDateTest" time="0.009"/>
<testcase name="testSymmetry" classname="org.orekit.time.AbsoluteDateTest" time="0.011"/>
<testcase name="testJulianEpochRate" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testCCSDSUnsegmentedWithExtendedPreamble" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testTimeZoneDisplay" classname="org.orekit.time.AbsoluteDateTest" time="0.011"/>
<testcase name="testUTC" classname="org.orekit.time.AbsoluteDateTest" time="0.011"/>
<testcase name="testAccuracy" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testIsEqualTo" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testBesselianEpochRate" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testScalesOffset" classname="org.orekit.time.AbsoluteDateTest" time="0.011"/>
<testcase name="testIssueTimesStampAccuracy" classname="org.orekit.time.AbsoluteDateTest" time="0.02"/>
<testcase name="testJ2000" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testMonth" classname="org.orekit.time.AbsoluteDateTest" time="0.013"/>
<testcase name="testParse" classname="org.orekit.time.AbsoluteDateTest" time="0.011"/>
<testcase name="testParseLeap" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testComponents" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="test1970" classname="org.orekit.time.AbsoluteDateTest" time="0.012"/>
<testcase name="testToStringException" classname="org.orekit.time.AbsoluteDateTest" time="0.025">
<failure message=" Expected: is "-5877490-03-03T00:00:00.000 TAI" but: was "β5877490-03-03T00:00:00.000 TAI"" type="java.lang.AssertionError">java.lang.AssertionError:
Expected: is "-5877490-03-03T00:00:00.000 TAI"
but: was "β5877490-03-03T00:00:00.000 TAI"
at org.orekit.time.AbsoluteDateTest.testToStringException(AbsoluteDateTest.java:1313)
</failure>
</testcase>
<testcase name="testToString" classname="org.orekit.time.AbsoluteDateTest" time="0.017">
<failure message=" Expected: is "-0123-04-05T06:07:08.900Z" but: was "β0123-04-05T06:07:08.900Z"" type="java.lang.AssertionError">java.lang.AssertionError:
Expected: is "-0123-04-05T06:07:08.900Z"
but: was "β0123-04-05T06:07:08.900Z"
at org.orekit.time.AbsoluteDateTest.checkToString(AbsoluteDateTest.java:1291)
at org.orekit.time.AbsoluteDateTest.testToString(AbsoluteDateTest.java:1273)
</failure>
</testcase>
<testcase name="testFraction" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testCompareTo" classname="org.orekit.time.AbsoluteDateTest" time="0.011"/>
<testcase name="testIterationAccuracy" classname="org.orekit.time.AbsoluteDateTest" time="0.017"/>
<testcase name="testExpandedConstructors" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testMJDDate" classname="org.orekit.time.AbsoluteDateTest" time="0.009"/>
<testcase name="testIsBetween" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testStandardEpoch" classname="org.orekit.time.AbsoluteDateTest" time="0.014"/>
<testcase name="testIsBefore" classname="org.orekit.time.AbsoluteDateTest" time="0.012"/>
<testcase name="testToStringRfc3339" classname="org.orekit.time.AbsoluteDateTest" time="0.012"/>
<testcase name="testIsBetweenOrEqualTo" classname="org.orekit.time.AbsoluteDateTest" time="0.013"/>
<testcase name="testIsAfterOrEqualTo" classname="org.orekit.time.AbsoluteDateTest" time="0.013"/>
<testcase name="testCCSDSUnsegmentedNoExtension" classname="org.orekit.time.AbsoluteDateTest" time="0.012"/>
<testcase name="testCCSDSCalendarSegmented" classname="org.orekit.time.AbsoluteDateTest" time="0.018"/>
<testcase name="testCCSDSDaySegmented" classname="org.orekit.time.AbsoluteDateTest" time="0.016"/>
<testcase name="testHashcode" classname="org.orekit.time.AbsoluteDateTest" time="0.013"/>
<testcase name="testInfinity" classname="org.orekit.time.AbsoluteDateTest" time="0.014">
<failure message="expected:<[-]5877490-03-03T00:00:...> but was:<[β]5877490-03-03T00:00:...>" type="org.junit.ComparisonFailure"><![CDATA[org.junit.ComparisonFailure: expected:<[-]5877490-03-03T00:00:...> but was:<[β]5877490-03-03T00:00:...>
at org.orekit.time.AbsoluteDateTest.testInfinity(AbsoluteDateTest.java:661)
]]></failure>
</testcase>
<testcase name="testLocalTimeParsing" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testTimeZoneLeapSecond" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testIsCloseTo" classname="org.orekit.time.AbsoluteDateTest" time="0.014"/>
<testcase name="testLocalTimeLeapSecond" classname="org.orekit.time.AbsoluteDateTest" time="0.021"/>
<testcase name="testBeforeAndAfterLeap" classname="org.orekit.time.AbsoluteDateTest" time="0.011"/>
<testcase name="testIsBeforeOrEqualTo" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testWrapAtMinuteEnd" classname="org.orekit.time.AbsoluteDateTest" time="0.012"/>
<testcase name="testEquals" classname="org.orekit.time.AbsoluteDateTest" time="0.01"/>
<testcase name="testIssue142" classname="org.orekit.time.AbsoluteDateTest" time="0.013"/>
<testcase name="testIssue148" classname="org.orekit.time.AbsoluteDateTest" time="0.013"/>
<testcase name="testIssue149" classname="org.orekit.time.AbsoluteDateTest" time="0.012"/>
<testcase name="testJDDate" classname="org.orekit.time.AbsoluteDateTest" time="0.011"/>
<testcase name="testGetComponentsIssue681and676and694" classname="org.orekit.time.AbsoluteDateTest" time="0.026"/>
<testcase name="testLieske" classname="org.orekit.time.AbsoluteDateTest" time="0.012"/>
<testcase name="testLastLeapOutput" classname="org.orekit.time.AbsoluteDateTest" time="0.012"/>
<testcase name="testOutput" classname="org.orekit.time.AbsoluteDateTest" time="0.014"/>
<testcase name="testIsAfter" classname="org.orekit.time.AbsoluteDateTest" time="0.013"/>
<testcase name="testMjdInLeap" classname="org.orekit.time.AbsoluteDateTest" time="0.014"/>
</testsuite>
Thank you @petrus.hyvonen for reporting this issue. I will work on it and propose an RC3.
I tested on my Windows 10 machine and the tests run properly.
I donβt know if other Windows users have the same problem.
luc
September 13, 2021, 8:20am
13
It is the minus sign that is different. We expect unicode hyphen-minus (code 0x2d) but your results use minus-sign β0x2212β.
Maybe the formatting should something like Locale.US ?
1 Like
luc
September 13, 2021, 8:21am
14
Is your machine configured with a specific language?
luc
September 13, 2021, 8:24am
16
Answering my own question. You have
<property name="user.country.format" value="SE"/>
and perhaps also
<property name="sun.jnu.encoding" value="Cp1252"/>
So, is it an Orekit bug that must be fixed for the release?
luc
September 13, 2021, 8:38am
18
I think so, and it has been there for a long time.
We should probably change the
private static final DecimalFormat FOUR_DIGITS = new DecimalFormat("0000");
and similar fields that appear in DateComponents
so they use DecimalFormatSymbols US_SYMBOLS
, just as TimeComponents
.
It is a very rare bug indeed, since it affects only years before year 0β¦
Ok, I will try to have an environment able to reproduce this issue in order to fix it.
1 Like
Iβm definitely unable to reproduce the problem. I tried tens of solution to try reproducing it but nothing works.
@petrus.hyvonen (or anybody else) can you try using te following patch (date-format.patch (1.3 KB)
) and tell me if it works now?
Thank you,
Bryan