1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.propagation.integration;
18
19 import org.hipparchus.analysis.differentiation.DSFactory;
20 import org.hipparchus.analysis.differentiation.DerivativeStructure;
21 import org.hipparchus.geometry.euclidean.threed.FieldRotation;
22 import org.hipparchus.geometry.euclidean.threed.FieldVector3D;
23 import org.orekit.propagation.numerical.NumericalPropagator;
24 import org.orekit.propagation.semianalytical.dsst.DSSTPropagator;
25
26
27
28
29
30
31 public abstract class AbstractDSConverter {
32
33
34 private final int freeStateParameters;
35
36
37
38
39 protected AbstractDSConverter(final int freeStateParameters) {
40 this.freeStateParameters = freeStateParameters;
41 }
42
43
44
45
46 public int getFreeStateParameters() {
47 return freeStateParameters;
48 }
49
50
51
52
53
54
55 protected DerivativeStructure extend(final DerivativeStructure original, final DSFactory factory) {
56 final double[] originalDerivatives = original.getAllDerivatives();
57 final double[] extendedDerivatives = new double[factory.getCompiler().getSize()];
58 System.arraycopy(originalDerivatives, 0, extendedDerivatives, 0, originalDerivatives.length);
59 return factory.build(extendedDerivatives);
60 }
61
62
63
64
65
66
67 protected FieldVector3D<DerivativeStructure> extend(final FieldVector3D<DerivativeStructure> original, final DSFactory factory) {
68 return new FieldVector3D<>(extend(original.getX(), factory),
69 extend(original.getY(), factory),
70 extend(original.getZ(), factory));
71 }
72
73
74
75
76
77
78 protected FieldRotation<DerivativeStructure> extend(final FieldRotation<DerivativeStructure> original, final DSFactory factory) {
79 return new FieldRotation<>(extend(original.getQ0(), factory),
80 extend(original.getQ1(), factory),
81 extend(original.getQ2(), factory),
82 extend(original.getQ3(), factory),
83 false);
84 }
85 }