1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.utils;
19
20 import org.hipparchus.Field;
21 import org.hipparchus.linear.FieldMatrix;
22 import org.hipparchus.linear.MatrixUtils;
23 import org.hipparchus.linear.RealMatrix;
24 import org.hipparchus.util.Binary64;
25 import org.hipparchus.util.Binary64Field;
26 import org.junit.jupiter.api.Assertions;
27 import org.junit.jupiter.api.BeforeAll;
28 import org.junit.jupiter.api.Test;
29 import org.orekit.Utils;
30 import org.orekit.frames.LOFType;
31 import org.orekit.propagation.FieldStateCovariance;
32 import org.orekit.propagation.StateCovariance;
33 import org.orekit.time.AbsoluteDate;
34
35 class FieldifierTest {
36
37 final Field<Binary64> field = Binary64Field.getInstance();
38
39 @BeforeAll
40 static void setUp() {
41 Utils.setDataRoot("regular-data");
42 }
43
44 @Test
45 void testMatrix() {
46
47
48 final RealMatrix m = MatrixUtils.createRealMatrix(new double[][] {
49 { 1.0, 2.0, 3.0 },
50 { -3.0, -2.0, -1.0 }
51 });
52
53
54 final FieldMatrix<Binary64> fieldMatrix = Fieldifier.fieldify(field, m);
55
56
57
58
59 Assertions.assertEquals(m.getRowDimension(), fieldMatrix.getRowDimension());
60 Assertions.assertEquals(m.getColumnDimension(), fieldMatrix.getColumnDimension());
61
62
63 for (int i = 0; i < m.getRowDimension(); ++i) {
64 for (int j = 0; j < m.getColumnDimension(); ++j) {
65 Assertions.assertEquals(m.getEntry(i, j), fieldMatrix.getEntry(i, j).getReal());
66 }
67 }
68
69 }
70
71 @Test
72 void testStateCovariance() {
73
74
75 final RealMatrix rowVector = MatrixUtils.createRealMatrix(new double[][] {
76 { 1.0, 2.0, 3.0, -3.0, -2.0, -1.0 }
77 });
78 final StateCovariance stateCovariance =
79 new StateCovariance(rowVector.transposeMultiply(rowVector),
80 AbsoluteDate.QZSS_EPOCH,
81 LOFType.LVLH_CCSDS);
82
83
84 final FieldStateCovariance<Binary64> fieldStateCovariance =
85 Fieldifier.fieldify(field, stateCovariance);
86
87
88
89
90 Assertions.assertEquals(0.0,
91 fieldStateCovariance.getDate().durationFrom(stateCovariance.getDate()).getReal(),
92 1.0e-15);
93
94
95 final RealMatrix m = stateCovariance.getMatrix();
96 final FieldMatrix<Binary64> fieldMatrix = fieldStateCovariance.getMatrix();
97 Assertions.assertEquals(m.getRowDimension(), fieldMatrix.getRowDimension());
98 Assertions.assertEquals(m.getColumnDimension(), fieldMatrix.getColumnDimension());
99
100
101 for (int i = 0; i < m.getRowDimension(); ++i) {
102 for (int j = 0; j < m.getColumnDimension(); ++j) {
103 Assertions.assertEquals(m.getEntry(i, j), fieldMatrix.getEntry(i, j).getReal());
104 }
105 }
106
107
108 Assertions.assertEquals(stateCovariance.getLOF(), fieldStateCovariance.getLOF());
109
110 }
111
112 }