1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.propagation.conversion;
18
19 import org.hipparchus.Field;
20 import org.hipparchus.complex.Complex;
21 import org.hipparchus.complex.ComplexField;
22 import org.hipparchus.geometry.euclidean.threed.Vector3D;
23 import org.hipparchus.ode.FieldODEIntegrator;
24 import org.hipparchus.ode.nonstiff.ClassicalRungeKuttaFieldIntegrator;
25 import org.junit.jupiter.api.Assertions;
26 import org.junit.jupiter.api.Test;
27 import org.orekit.frames.FramesFactory;
28 import org.orekit.orbits.CartesianOrbit;
29 import org.orekit.orbits.FieldCartesianOrbit;
30 import org.orekit.orbits.OrbitType;
31 import org.orekit.time.AbsoluteDate;
32 import org.orekit.utils.AbsolutePVCoordinates;
33 import org.orekit.utils.FieldAbsolutePVCoordinates;
34
35 class AbstractFieldIntegratorBuilderTest {
36
37 @Test
38 void testBuildIntegrator() {
39
40 final AbsolutePVCoordinates absolutePVCoordinates = new AbsolutePVCoordinates(FramesFactory.getGCRF(),
41 AbsoluteDate.ARBITRARY_EPOCH, Vector3D.MINUS_I, Vector3D.MINUS_K);
42 final double step = 10;
43 final Field<Complex> field = ComplexField.getInstance();
44 final FieldAbsolutePVCoordinates<Complex> fieldAbsolutePVCoordinates = new FieldAbsolutePVCoordinates<>(field, absolutePVCoordinates);
45 final ClassicalRungeKuttaFieldIntegratorBuilder<Complex> builder = new ClassicalRungeKuttaFieldIntegratorBuilder<>(field.getOne().newInstance(step));
46
47 final FieldODEIntegrator<Complex> integrator = builder.buildIntegrator(fieldAbsolutePVCoordinates);
48
49 final ClassicalRungeKuttaFieldIntegrator<Complex> actualIntegrator = (ClassicalRungeKuttaFieldIntegrator<Complex>) integrator;
50 final CartesianOrbit orbit = new CartesianOrbit(absolutePVCoordinates.getPVCoordinates(), absolutePVCoordinates.getFrame(),
51 absolutePVCoordinates.getDate(), 1.);
52 final FieldCartesianOrbit<Complex> fieldOrbit = new FieldCartesianOrbit<>(field, orbit);
53 final ClassicalRungeKuttaFieldIntegrator<Complex> expectedIntegrator = (ClassicalRungeKuttaFieldIntegrator<Complex>) builder.buildIntegrator(fieldOrbit, OrbitType.CARTESIAN);
54 Assertions.assertEquals(expectedIntegrator.getCurrentSignedStepsize(), actualIntegrator.getCurrentSignedStepsize());
55 }
56
57 }