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 org.hipparchus.analysis.differentiation.Gradient;
20 import org.orekit.attitudes.AttitudeProvider;
21 import org.orekit.attitudes.FieldAttitude;
22 import org.orekit.orbits.FieldEquinoctialOrbit;
23 import org.orekit.orbits.FieldOrbit;
24 import org.orekit.orbits.PositionAngleType;
25 import org.orekit.propagation.FieldSpacecraftState;
26 import org.orekit.propagation.SpacecraftState;
27 import org.orekit.propagation.integration.AbstractGradientConverter;
28 import org.orekit.time.AbsoluteDate;
29 import org.orekit.time.FieldAbsoluteDate;
30
31
32
33
34
35
36 class DSSTGradientConverter extends AbstractGradientConverter {
37
38
39 private static final int FREE_STATE_PARAMETERS = 6;
40
41
42
43
44
45 DSSTGradientConverter(final SpacecraftState state, final AttitudeProvider provider) {
46
47 super(FREE_STATE_PARAMETERS);
48
49
50 final Gradient sma = Gradient.variable(FREE_STATE_PARAMETERS, 0, state.getA());
51 final Gradient ex = Gradient.variable(FREE_STATE_PARAMETERS, 1, state.getEquinoctialEx());
52 final Gradient ey = Gradient.variable(FREE_STATE_PARAMETERS, 2, state.getEquinoctialEy());
53 final Gradient hx = Gradient.variable(FREE_STATE_PARAMETERS, 3, state.getHx());
54 final Gradient hy = Gradient.variable(FREE_STATE_PARAMETERS, 4, state.getHy());
55 final Gradient l = Gradient.variable(FREE_STATE_PARAMETERS, 5, state.getLM());
56
57 final Gradient gMu = Gradient.constant(FREE_STATE_PARAMETERS, state.getMu());
58
59
60 final AbsoluteDate date = state.getDate();
61 final FieldAbsoluteDate<Gradient> dateField = new FieldAbsoluteDate<>(sma.getField(), date);
62
63
64 final Gradient gM = Gradient.constant(FREE_STATE_PARAMETERS, state.getMass());
65
66 final FieldOrbit<Gradient> gOrbit =
67 new FieldEquinoctialOrbit<>(sma, ex, ey, hx, hy, l,
68 PositionAngleType.MEAN,
69 state.getFrame(),
70 dateField,
71 gMu);
72
73 final FieldAttitude<Gradient> gAttitude;
74
75 gAttitude = provider.getAttitude(gOrbit, gOrbit.getDate(), gOrbit.getFrame());
76
77
78 initStates(new FieldSpacecraftState<>(gOrbit, gAttitude, gM));
79
80 }
81
82 }