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          // GIVEN
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          // WHEN
31          final Orbit orbit = averagedState.toOsculatingOrbit();
32          final CircularOrbit circularOrbit = (CircularOrbit) averagedState.getOrbitType().convertType(orbit);
33          // THEN
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  }