1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.propagation.semianalytical.dsst;
18
19 import java.io.IOException;
20 import java.text.ParseException;
21 import java.util.Arrays;
22
23 import org.hipparchus.Field;
24 import org.hipparchus.CalculusFieldElement;
25 import org.hipparchus.util.Decimal64Field;
26 import org.hipparchus.util.FastMath;
27 import org.hipparchus.util.MathArrays;
28 import org.junit.Assert;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.orekit.Utils;
32 import org.orekit.frames.Frame;
33 import org.orekit.frames.FramesFactory;
34 import org.orekit.orbits.FieldEquinoctialOrbit;
35 import org.orekit.orbits.PositionAngle;
36 import org.orekit.propagation.FieldSpacecraftState;
37 import org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel;
38 import org.orekit.propagation.semianalytical.dsst.forces.DSSTNewtonianAttraction;
39 import org.orekit.propagation.semianalytical.dsst.utilities.FieldAuxiliaryElements;
40 import org.orekit.time.FieldAbsoluteDate;
41 import org.orekit.time.TimeScalesFactory;
42
43 public class FieldDSSTNewtonianAttractionTest {
44
45 private static final double eps = 1.0e-19;
46
47 @Test
48 public void testGetMeanElementRate() {
49 doTestGetMeanElementRate(Decimal64Field.getInstance());
50 }
51
52 private <T extends CalculusFieldElement<T>> void doTestGetMeanElementRate(final Field<T> field) {
53
54 final T zero = field.getZero();
55
56 final Frame earthFrame = FramesFactory.getEME2000();
57
58 final FieldAbsoluteDate<T> date = new FieldAbsoluteDate<>(field, 2007, 04, 16, 0, 46, 42.400,
59 TimeScalesFactory.getUTC());
60
61 final double mu = 3.986004415E14;
62 final FieldEquinoctialOrbit<T> orbit = new FieldEquinoctialOrbit<>(zero.add(2.655989E7),
63 zero.add(2.719455286199036E-4),
64 zero.add(0.0041543085910249414),
65 zero.add(-0.3412974060023717),
66 zero.add(0.3960084733107685),
67 zero.add(FastMath.toRadians(44.2377)),
68 PositionAngle.MEAN,
69 earthFrame,
70 date,
71 zero.add(mu));
72
73 final FieldSpacecraftState<T> state = new FieldSpacecraftState<>(orbit);
74
75 final FieldAuxiliaryElements<T> auxiliaryElements = new FieldAuxiliaryElements<>(state.getOrbit(), 1);
76
77 final DSSTForceModel newton = new DSSTNewtonianAttraction(mu);
78
79 final T[] elements = MathArrays.buildArray(field, 7);
80 Arrays.fill(elements, zero);
81
82 final T[] daidt = newton.getMeanElementRate(state, auxiliaryElements, newton.getParameters(field));
83 for (int i = 0; i < daidt.length; i++) {
84 elements[i] = daidt[i];
85 }
86
87 Assert.assertEquals(0.0, elements[0].getReal(), eps);
88 Assert.assertEquals(0.0, elements[1].getReal(), eps);
89 Assert.assertEquals(0.0, elements[2].getReal(), eps);
90 Assert.assertEquals(0.0, elements[3].getReal(), eps);
91 Assert.assertEquals(0.0, elements[4].getReal(), eps);
92 Assert.assertEquals(1.4585773985530907E-4, elements[5].getReal(), eps);
93
94 }
95
96 @Before
97 public void setUp() throws IOException, ParseException {
98 Utils.setDataRoot("regular-data");
99 }
100
101 }