1 package org.orekit.propagation.conversion.averaging;
2
3 import org.junit.jupiter.api.Assertions;
4 import org.junit.jupiter.api.BeforeEach;
5 import org.junit.jupiter.api.Test;
6 import org.orekit.Utils;
7 import org.orekit.frames.Frame;
8 import org.orekit.frames.FramesFactory;
9 import org.orekit.orbits.KeplerianOrbit;
10 import org.orekit.orbits.Orbit;
11 import org.orekit.orbits.PositionAngleType;
12 import org.orekit.propagation.analytical.tle.TLE;
13 import org.orekit.propagation.conversion.averaging.elements.AveragedKeplerianWithMeanAngle;
14 import org.orekit.time.AbsoluteDate;
15
16 class SGP4OrbitalStateTest {
17
18 @BeforeEach
19 public void setUp() {
20 Utils.setDataRoot("regular-data");
21 }
22
23 @Test
24 void testToOsculating() {
25 final SGP4OrbitalState averagedState = new SGP4OrbitalState(AbsoluteDate.ARBITRARY_EPOCH,
26 new AveragedKeplerianWithMeanAngle(1e7, 0.1, 1., 2., 3., -1.));
27
28 final Orbit orbit = averagedState.toOsculatingOrbit();
29 final KeplerianOrbit keplerianOrbit = (KeplerianOrbit) averagedState.getOrbitType().convertType(orbit);
30
31 Assertions.assertEquals(averagedState.getDate(), keplerianOrbit.getDate());
32 Assertions.assertEquals(averagedState.getFrame(), keplerianOrbit.getFrame());
33 compareOrbitalElements(averagedState.getAveragedElements(), keplerianOrbit,
34 averagedState.getPositionAngleType());
35 }
36
37 private void compareOrbitalElements(final AveragedKeplerianWithMeanAngle elements,
38 final KeplerianOrbit keplerianOrbit,
39 final PositionAngleType positionAngleType) {
40 Assertions.assertEquals(elements.getAveragedSemiMajorAxis(), keplerianOrbit.getA(), 1e3);
41 Assertions.assertEquals(elements.getAveragedEccentricity(), keplerianOrbit.getE(), 1e-3);
42 Assertions.assertEquals(elements.getAveragedInclination(), keplerianOrbit.getI(), 1e-3);
43 Assertions.assertEquals(elements.getAveragedPerigeeArgument(),
44 keplerianOrbit.getPerigeeArgument(), 1e-2);
45 Assertions.assertEquals(elements.getAveragedRightAscensionOfTheAscendingNode(),
46 keplerianOrbit.getRightAscensionOfAscendingNode(), 1e-3);
47 Assertions.assertEquals(elements.getAveragedMeanAnomaly(),
48 keplerianOrbit.getAnomaly(positionAngleType), 1e-2);
49 }
50
51 @Test
52 void testOf() {
53
54 final String line1SPOT = "1 22823U 93061A 03339.49496229 .00000173 00000-0 10336-3 0 133";
55 final String line2SPOT = "2 22823 98.4132 359.2998 0017888 100.4310 259.8872 14.18403464527664";
56 final TLE tle = new TLE(line1SPOT, line2SPOT);
57 final Frame teme = FramesFactory.getTEME();
58
59 final SGP4OrbitalState orbitalState = SGP4OrbitalState.of(tle, teme);
60
61 final AveragedKeplerianWithMeanAngle elements = orbitalState.getAveragedElements();
62 Assertions.assertEquals(tle.getE(), elements.getAveragedEccentricity());
63 Assertions.assertEquals(tle.getI(), elements.getAveragedInclination());
64 Assertions.assertEquals(tle.getRaan(), elements.getAveragedRightAscensionOfTheAscendingNode());
65 Assertions.assertEquals(tle.getPerigeeArgument(), elements.getAveragedPerigeeArgument());
66 Assertions.assertEquals(tle.getMeanAnomaly(), elements.getAveragedMeanAnomaly());
67 }
68
69 }