1 package org.orekit.propagation.conversion;
2
3 import org.hipparchus.Field;
4 import org.hipparchus.ode.nonstiff.DormandPrince54FieldIntegrator;
5 import org.hipparchus.util.Binary64;
6 import org.junit.jupiter.api.Assertions;
7 import org.junit.jupiter.api.Test;
8 import org.orekit.frames.FramesFactory;
9 import org.orekit.orbits.KeplerianOrbit;
10 import org.orekit.orbits.Orbit;
11 import org.orekit.orbits.PositionAngleType;
12 import org.orekit.propagation.ToleranceProvider;
13 import org.orekit.time.AbsoluteDate;
14 import org.orekit.utils.Constants;
15
16 import java.util.Arrays;
17
18 class AbstractVariableStepFieldIntegratorBuilderTest {
19
20 @Test
21 void testGetTolerances() {
22
23 final Orbit orbit = new KeplerianOrbit(7e6, 0.1, 1, 2, 3, 4, PositionAngleType.ECCENTRIC, FramesFactory.getGCRF(),
24 AbsoluteDate.ARBITRARY_EPOCH, Constants.EGM96_EARTH_MU);
25 final double expectedAbsoluteTolerance = 1.;
26 final double expectedRelativeTolerance = 2;
27 final TestIntegratorBuilder integratorBuilder = new TestIntegratorBuilder(0., 1.,
28 ToleranceProvider.of(expectedAbsoluteTolerance, expectedRelativeTolerance));
29
30 final double[][] actualTolerances = integratorBuilder.getTolerances(orbit, orbit.getType(), PositionAngleType.TRUE);
31
32 final double[] expectedAbsolute = new double[7];
33 Arrays.fill(expectedAbsolute, expectedAbsoluteTolerance);
34 final double[] expectedRelative = new double[7];
35 Arrays.fill(expectedRelative, expectedRelativeTolerance);
36 final double [][] expectedTolerances = new double[][] {expectedAbsolute, expectedRelative};
37 Assertions.assertArrayEquals(expectedTolerances[0], actualTolerances[0]);
38 Assertions.assertArrayEquals(expectedTolerances[1], actualTolerances[1]);
39 }
40
41 private static class TestIntegratorBuilder extends AbstractVariableStepFieldIntegratorBuilder<Binary64, DormandPrince54FieldIntegrator<Binary64>> {
42
43 protected TestIntegratorBuilder(double minStep, double maxStep, ToleranceProvider toleranceProvider) {
44 super(minStep, maxStep, toleranceProvider);
45 }
46
47 @Override
48 protected DormandPrince54FieldIntegrator<Binary64> buildIntegrator(Field field, double[][] tolerances) {
49 return null;
50 }
51
52 @Override
53 public ODEIntegratorBuilder toODEIntegratorBuilder() {
54 return null;
55 }
56 }
57 }