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.data.DataContext;
8 import org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider;
9 import org.orekit.frames.FramesFactory;
10 import org.orekit.orbits.KeplerianOrbit;
11 import org.orekit.orbits.Orbit;
12 import org.orekit.orbits.PositionAngleType;
13 import org.orekit.propagation.conversion.averaging.elements.AveragedKeplerianWithMeanAngle;
14 import org.orekit.time.AbsoluteDate;
15
16 class BrouwerLyddaneOrbitalStateTest {
17
18 @BeforeEach
19 public void setUp() {
20 Utils.setDataRoot("regular-data:potential");
21 }
22
23 @Test
24 void testToOsculating() {
25
26 final UnnormalizedSphericalHarmonicsProvider provider = getProvider(5);
27 final BrouwerLyddaneOrbitalState averagedState = new BrouwerLyddaneOrbitalState(AbsoluteDate.ARBITRARY_EPOCH,
28 new AveragedKeplerianWithMeanAngle(1e7, 0.1, 1., 2., 3.,
29 -1.), FramesFactory.getGCRF(), provider);
30
31 final Orbit orbit = averagedState.toOsculatingOrbit();
32 final KeplerianOrbit keplerianOrbit = (KeplerianOrbit) averagedState.getOrbitType()
33 .convertType(orbit);
34
35 Assertions.assertEquals(averagedState.getDate(), keplerianOrbit.getDate());
36 compareOrbitalElements(averagedState.getAveragedElements(), keplerianOrbit,
37 averagedState.getPositionAngleType());
38 }
39
40 private void compareOrbitalElements(final AveragedKeplerianWithMeanAngle elements,
41 final KeplerianOrbit keplerianOrbit,
42 final PositionAngleType positionAngleType) {
43 Assertions.assertEquals(elements.getAveragedSemiMajorAxis(), keplerianOrbit.getA(), 1e4);
44 Assertions.assertEquals(elements.getAveragedEccentricity(), keplerianOrbit.getE(), 1e-3);
45 Assertions.assertEquals(elements.getAveragedInclination(), keplerianOrbit.getI(), 1e-3);
46 Assertions.assertEquals(elements.getAveragedPerigeeArgument(),
47 keplerianOrbit.getPerigeeArgument(), 1e-2);
48 Assertions.assertEquals(elements.getAveragedRightAscensionOfTheAscendingNode(),
49 keplerianOrbit.getRightAscensionOfAscendingNode(), 1e-3);
50 Assertions.assertEquals(elements.getAveragedMeanAnomaly(),
51 keplerianOrbit.getAnomaly(positionAngleType), 1e-2);
52 }
53
54 private UnnormalizedSphericalHarmonicsProvider getProvider(final int maxDegree) {
55 return DataContext.getDefault().getGravityFields().getUnnormalizedProvider(maxDegree, 0);
56 }
57
58 }