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
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
33 final SGP4OrbitalState averagedElements = converter
34 .convertToAveraged(osculatingOrbit);
35
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 }