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
29
30
31
32
33
34
35 class TLEGradientConverter extends AbstractAnalyticalGradientConverter {
36
37
38 public static final int FREE_STATE_PARAMETERS = 6;
39
40
41 private final TLE tle;
42
43
44 private final TimeScale utc;
45
46
47 private final Frame teme;
48
49
50 private final AttitudeProvider provider;
51
52
53
54
55 TLEGradientConverter(final TLEPropagator propagator) {
56 super(propagator, TLEConstants.MU, FREE_STATE_PARAMETERS);
57
58 this.tle = propagator.getTLE();
59 this.teme = propagator.getFrame();
60 this.utc = tle.getUtc();
61 this.provider = propagator.getAttitudeProvider();
62 }
63
64
65 @Override
66 public FieldTLEPropagator<Gradient> getPropagator(final FieldSpacecraftState<Gradient> state,
67 final Gradient[] parameters) {
68
69
70 final Gradient zero = state.getA().getField().getZero();
71
72
73 final int satelliteNumber = tle.getSatelliteNumber();
74 final char classification = tle.getClassification();
75 final int launchYear = tle.getLaunchYear();
76 final int launchNumber = tle.getLaunchNumber();
77 final String launchPiece = tle.getLaunchPiece();
78 final int ephemerisType = tle.getEphemerisType();
79 final int elementNumber = tle.getElementNumber();
80 final int revolutionNumberAtEpoch = tle.getRevolutionNumberAtEpoch();
81 final double bStar = tle.getBStar();
82
83
84 final FieldTLE<Gradient> templateTLE = new FieldTLE<>(satelliteNumber, classification,
85 launchYear, launchNumber, launchPiece, ephemerisType, elementNumber, state.getDate(),
86 zero, zero, zero, zero, zero, zero, zero, zero,
87 revolutionNumberAtEpoch, bStar, utc);
88
89
90 final FieldTLE<Gradient> gTLE = FieldTLE.stateToTLE(state, templateTLE, utc, teme);
91
92
93 return FieldTLEPropagator.selectExtrapolator(gTLE, provider, state.getMass(), teme, parameters);
94
95 }
96
97
98 @Override
99 public List<ParameterDriver> getParametersDrivers() {
100 return tle.getParametersDrivers();
101 }
102
103 }