1   package org.orekit.propagation.conversion.averaging.converters;
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.DSST6X0OrbitalState;
14  import org.orekit.time.AbsoluteDate;
15  import org.orekit.utils.Constants;
16  import org.orekit.utils.PVCoordinates;
17  
18  class OsculatingToDSST6X0ElementsConverterTest {
19  
20      @BeforeEach
21      public void setUp() {
22          Utils.setDataRoot("regular-data:potential");
23      }
24  
25      @Test
26      void testConvertToAveragedElements() {
27          // GIVEN
28          final EquinoctialOrbit osculatingOrbit = new EquinoctialOrbit(1e7, 0.1, -0.2, 0.2, -0.1, -3.,
29                  PositionAngleType.MEAN, FramesFactory.getGCRF(), AbsoluteDate.ARBITRARY_EPOCH,
30                  Constants.EGM96_EARTH_MU);
31          final OsculatingToDSST6X0Converter converter = new OsculatingToDSST6X0Converter(getProvider());
32          converter.setEpsilon(1e-12);
33          converter.setMaxIterations(100);
34          // WHEN
35          final DSST6X0OrbitalState averagedElements = converter
36                  .convertToAveraged(osculatingOrbit);
37          // THEN
38          final Orbit recomputedOsculatingOrbit = averagedElements.toOsculatingOrbit();
39          final PVCoordinates relativePV = new PVCoordinates(osculatingOrbit.getPVCoordinates(),
40                  recomputedOsculatingOrbit.getPVCoordinates(osculatingOrbit.getFrame()));
41          final double expectedDifference = 0.;
42          Assertions.assertEquals(expectedDifference, relativePV.getPosition().getNorm(), 2e-5);
43          Assertions.assertEquals(expectedDifference, relativePV.getVelocity().getNorm(), 1e-8);
44      }
45  
46      private UnnormalizedSphericalHarmonicsProvider getProvider() {
47          return DataContext.getDefault().getGravityFields().getUnnormalizedProvider(6, 0);
48      }
49  
50  }