1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.propagation.analytical.tle;
18
19 import java.util.List;
20
21 import org.hipparchus.analysis.differentiation.Gradient;
22 import org.orekit.attitudes.AttitudeProvider;
23 import org.orekit.frames.Frame;
24 import org.orekit.propagation.FieldSpacecraftState;
25 import org.orekit.propagation.analytical.AbstractAnalyticalGradientConverter;
26 import org.orekit.time.TimeScale;
27 import org.orekit.utils.ParameterDriver;
28 import org.orekit.utils.ParameterDriversProvider;
29
30
31
32
33
34
35
36 class TLEGradientConverter extends AbstractAnalyticalGradientConverter implements ParameterDriversProvider {
37
38
39 public static final int FREE_STATE_PARAMETERS = 6;
40
41
42 private final TLE tle;
43
44
45 private final TimeScale utc;
46
47
48 private final Frame teme;
49
50
51 private final AttitudeProvider provider;
52
53
54
55
56 TLEGradientConverter(final TLEPropagator propagator) {
57 super(propagator, TLEConstants.MU, FREE_STATE_PARAMETERS);
58
59 this.tle = propagator.getTLE();
60 this.teme = propagator.getFrame();
61 this.utc = tle.getUtc();
62 this.provider = propagator.getAttitudeProvider();
63 }
64
65
66 @Override
67 public FieldTLEPropagator<Gradient> getPropagator(final FieldSpacecraftState<Gradient> state,
68 final Gradient[] parameters) {
69
70
71 final Gradient zero = state.getA().getField().getZero();
72
73
74 final int satelliteNumber = tle.getSatelliteNumber();
75 final char classification = tle.getClassification();
76 final int launchYear = tle.getLaunchYear();
77 final int launchNumber = tle.getLaunchNumber();
78 final String launchPiece = tle.getLaunchPiece();
79 final int ephemerisType = tle.getEphemerisType();
80 final int elementNumber = tle.getElementNumber();
81 final int revolutionNumberAtEpoch = tle.getRevolutionNumberAtEpoch();
82 final double bStar = tle.getBStar(state.getDate().toAbsoluteDate());
83
84
85 final FieldTLE<Gradient> templateTLE = new FieldTLE<>(satelliteNumber, classification,
86 launchYear, launchNumber, launchPiece, ephemerisType, elementNumber, state.getDate(),
87 zero, zero, zero, zero, zero, zero, zero, zero,
88 revolutionNumberAtEpoch, bStar, utc);
89
90
91 final FieldTLE<Gradient> gTLE = TLEPropagator.getDefaultTleGenerationAlgorithm(utc, teme).generate(state, templateTLE);
92
93
94 return FieldTLEPropagator.selectExtrapolator(gTLE, provider, state.getMass(), teme, parameters);
95
96 }
97
98
99 @Override
100 public List<ParameterDriver> getParametersDrivers() {
101 return tle.getParametersDrivers();
102 }
103
104 }