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.frames.FramesFactory;
8   import org.orekit.orbits.KeplerianOrbit;
9   import org.orekit.orbits.Orbit;
10  import org.orekit.orbits.PositionAngleType;
11  import org.orekit.propagation.conversion.averaging.SGP4OrbitalState;
12  import org.orekit.time.AbsoluteDate;
13  import org.orekit.utils.Constants;
14  import org.orekit.utils.PVCoordinates;
15  
16  class OsculatingToSGP4ElementsConverterTest {
17  
18      @BeforeEach
19      public void setUp() {
20          Utils.setDataRoot("regular-data:potential");
21      }
22  
23      @Test
24      void testConvertToAveragedElements() {
25          // GIVEN
26          final KeplerianOrbit osculatingOrbit = new KeplerianOrbit(1e7, 0.1, 1., 1., 2., -3.,
27                  PositionAngleType.MEAN, FramesFactory.getGCRF(), AbsoluteDate.ARBITRARY_EPOCH,
28                  Constants.EGM96_EARTH_MU);
29          final OsculatingToSGP4Converter converter = new OsculatingToSGP4Converter();
30          converter.setEpsilon(1e-12);
31          converter.setMaxIterations(100);
32          // WHEN
33          final SGP4OrbitalState averagedElements = converter
34                  .convertToAveraged(osculatingOrbit);
35          // THEN
36          final Orbit recomputedOsculatingOrbit = averagedElements.toOsculatingOrbit();
37          final PVCoordinates relativePV = new PVCoordinates(osculatingOrbit.getPVCoordinates(),
38                  recomputedOsculatingOrbit.getPVCoordinates(osculatingOrbit.getFrame()));
39          final double expectedDifference = 0.;
40          Assertions.assertEquals(expectedDifference, relativePV.getPosition().getNorm(), 1e-5);
41          Assertions.assertEquals(expectedDifference, relativePV.getVelocity().getNorm(), 3e-3);
42      }
43  
44  }