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.CircularOrbit;
11 import org.orekit.orbits.Orbit;
12 import org.orekit.orbits.PositionAngleType;
13 import org.orekit.propagation.conversion.averaging.elements.AveragedCircularWithMeanAngle;
14 import org.orekit.time.AbsoluteDate;
15
16 class EcksteinHechlerOrbitalStateTest {
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();
27 final EcksteinHechlerOrbitalState averagedState = new EcksteinHechlerOrbitalState(AbsoluteDate.ARBITRARY_EPOCH,
28 new AveragedCircularWithMeanAngle(1e7, -0.01, 0., 0.01, 0.,
29 0.), FramesFactory.getGCRF(), provider);
30
31 final Orbit orbit = averagedState.toOsculatingOrbit();
32 final CircularOrbit circularOrbit = (CircularOrbit) averagedState.getOrbitType().convertType(orbit);
33
34 Assertions.assertEquals(averagedState.getDate(), circularOrbit.getDate());
35 compareOrbitalElements(averagedState.getAveragedElements(), circularOrbit,
36 averagedState.getPositionAngleType());
37 }
38
39 private void compareOrbitalElements(final AveragedCircularWithMeanAngle elements,
40 final CircularOrbit circularOrbit,
41 final PositionAngleType positionAngleType) {
42 Assertions.assertEquals(elements.getAveragedSemiMajorAxis(), circularOrbit.getA(), 1e4);
43 Assertions.assertEquals(elements.getAveragedCircularEx(), circularOrbit.getCircularEx(), 1e-3);
44 Assertions.assertEquals(elements.getAveragedCircularEy(), circularOrbit.getCircularEy(), 1e-3);
45 Assertions.assertEquals(elements.getAveragedInclination(), circularOrbit.getI(), 1e-3);
46 Assertions.assertEquals(elements.getAveragedRightAscensionOfTheAscendingNode(),
47 circularOrbit.getRightAscensionOfAscendingNode(), 1e-3);
48 Assertions.assertEquals(elements.getAveragedMeanLatitudeArgument(),
49 circularOrbit.getAlpha(positionAngleType), 1.1e-3);
50 }
51
52 private UnnormalizedSphericalHarmonicsProvider getProvider() {
53 return DataContext.getDefault().getGravityFields().getUnnormalizedProvider(6, 0);
54 }
55
56 }