1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.propagation.conversion;
18
19 import org.orekit.annotation.DefaultDataContext;
20 import org.orekit.attitudes.AttitudeProvider;
21 import org.orekit.attitudes.FrameAlignedProvider;
22 import org.orekit.data.DataContext;
23 import org.orekit.propagation.Propagator;
24 import org.orekit.propagation.analytical.tle.TLE;
25 import org.orekit.propagation.analytical.tle.TLEPropagator;
26 import org.orekit.propagation.analytical.tle.generation.TleGenerationAlgorithm;
27 import org.orekit.utils.ParameterDriversList;
28
29
30
31
32
33
34 public class TLEPropagatorBuilder
35 extends AbstractAnalyticalPropagatorBuilder<TLEPropagator, TLE, TleGenerationAlgorithm> {
36
37
38 private final DataContext dataContext;
39
40
41 private final TleGenerationAlgorithm generationAlgorithm;
42
43
44
45
46
47
48
49
50 @DefaultDataContext
51 public TLEPropagatorBuilder(final TleGenerationAlgorithm generationAlgorithm) {
52 this(DataContext.getDefault(), generationAlgorithm);
53 }
54
55
56
57
58
59
60
61 public TLEPropagatorBuilder(final DataContext dataContext,
62 final TleGenerationAlgorithm generationAlgorithm) {
63 this(dataContext, generationAlgorithm,
64 FrameAlignedProvider.of(dataContext.getFrames().getTEME()));
65 }
66
67
68
69
70
71
72
73 public TLEPropagatorBuilder(final DataContext dataContext,
74 final TleGenerationAlgorithm generationAlgorithm,
75 final AttitudeProvider attitudeProvider) {
76 super(generationAlgorithm, false, attitudeProvider, Propagator.DEFAULT_MASS);
77 this.dataContext = dataContext;
78 this.generationAlgorithm = generationAlgorithm;
79 }
80
81
82 @Override
83 public TLEPropagatorBuilder clone() {
84
85 final TLEPropagatorBuilder clonedBuilder = (TLEPropagatorBuilder) super.clone();
86
87
88 final TLEPropagatorBuilder builder =
89 new TLEPropagatorBuilder(clonedBuilder.dataContext,
90 clonedBuilder.generationAlgorithm.clone(),
91 clonedBuilder.getAttitudeProvider());
92
93
94 builder.setMass(getMass());
95
96
97 final ParameterDriversList propDrivers = clonedBuilder.getPropagationParametersDrivers();
98 builder.getPropagationParametersDrivers().getDrivers().
99 forEach(driver -> driver.setSelected(propDrivers.findByName(driver.getName()).isSelected()));
100 return builder;
101 }
102
103
104 @Override
105 public TLEPropagator buildPropagator(final double[] normalizedParameters) {
106
107
108 setParameters(normalizedParameters);
109
110
111 final TLE tle = getOrbitalParameterFactory().createFromDrivers();
112
113
114 final TLEPropagator propagator = TLEPropagator.selectExtrapolator(tle, getAttitudeProvider(), getMass(),
115 getOrbitalParameterFactory().getFrame());
116
117 final boolean bStarSelected = this.getPropagationParametersDrivers().getDrivers().getFirst().isSelected();
118 propagator.getParametersDrivers().getFirst().setSelected(bStarSelected);
119 propagator.setTleGenerationAlgorithm(generationAlgorithm);
120 getImpulseManeuvers().forEach(propagator::addEventDetector);
121 return propagator;
122 }
123
124 }