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.EquinoctialOrbit;
11  import org.orekit.orbits.Orbit;
12  import org.orekit.orbits.PositionAngleType;
13  import org.orekit.propagation.conversion.averaging.elements.AveragedEquinoctialWithMeanAngle;
14  import org.orekit.time.AbsoluteDate;
15  
16  class DSST6X0OrbitalStateTest {
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 DSST6X0OrbitalState averagedState = new DSST6X0OrbitalState(AbsoluteDate.ARBITRARY_EPOCH,
28                  new AveragedEquinoctialWithMeanAngle(1e7, 0.1, 0., 0.2, -0.3,
29                  -1.), FramesFactory.getGCRF(), provider);
30          // WHEN
31          final Orbit orbit = averagedState.toOsculatingOrbit();
32          final EquinoctialOrbit equinoctialOrbit = (EquinoctialOrbit) averagedState.getOrbitType().convertType(orbit);
33          // THEN
34          Assertions.assertEquals(averagedState.getDate(), equinoctialOrbit.getDate());
35          compareOrbitalElements(averagedState.getAveragedElements(), equinoctialOrbit,
36                  averagedState.getPositionAngleType());
37      }
38  
39      private void compareOrbitalElements(final AveragedEquinoctialWithMeanAngle elements,
40                                          final EquinoctialOrbit equinoctialOrbit,
41                                          final PositionAngleType positionAngleType) {
42          Assertions.assertEquals(elements.getAveragedSemiMajorAxis(), equinoctialOrbit.getA(), 1.6e4);
43          Assertions.assertEquals(elements.getAveragedEquinoctialEx(),
44                  equinoctialOrbit.getEquinoctialEx(), 1.e-3);
45          Assertions.assertEquals(elements.getAveragedEquinoctialEy(),
46                  equinoctialOrbit.getEquinoctialEy(), 2.5e-3);
47          Assertions.assertEquals(elements.getAveragedHx(),
48                  equinoctialOrbit.getHx(), 4.e-3);
49          Assertions.assertEquals(elements.getAveragedHy(),
50                  equinoctialOrbit.getHy(), 1.e-3);
51          Assertions.assertEquals(elements.getAveragedMeanLongitudeArgument(),
52                  equinoctialOrbit.getL(positionAngleType), 1.e-3);
53      }
54  
55      private UnnormalizedSphericalHarmonicsProvider getProvider() {
56          return DataContext.getDefault().getGravityFields().getUnnormalizedProvider(6, 0);
57      }
58  
59  }