1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.estimation.leastsquares;
18
19 import java.util.List;
20
21 import org.orekit.estimation.measurements.ObservedMeasurement;
22 import org.orekit.orbits.Orbit;
23 import org.orekit.propagation.PropagationType;
24 import org.orekit.propagation.Propagator;
25 import org.orekit.propagation.SpacecraftState;
26 import org.orekit.propagation.conversion.OrbitDeterminationPropagatorBuilder;
27 import org.orekit.propagation.integration.AbstractJacobiansMapper;
28 import org.orekit.propagation.semianalytical.dsst.DSSTJacobiansMapper;
29 import org.orekit.propagation.semianalytical.dsst.DSSTPartialDerivativesEquations;
30 import org.orekit.propagation.semianalytical.dsst.DSSTPropagator;
31 import org.orekit.utils.ParameterDriversList;
32
33
34
35
36
37
38
39
40
41
42
43
44
45 public class DSSTBatchLSModel extends AbstractBatchLSModel {
46
47
48 private PropagationType propagationType;
49
50
51 private PropagationType stateType;
52
53
54
55
56
57
58
59
60
61 public DSSTBatchLSModel(final OrbitDeterminationPropagatorBuilder[] propagatorBuilders,
62 final List<ObservedMeasurement<?>> measurements,
63 final ParameterDriversList estimatedMeasurementsParameters,
64 final ModelObserver observer,
65 final PropagationType propagationType,
66 final PropagationType stateType) {
67
68 super(propagatorBuilders, measurements, estimatedMeasurementsParameters,
69 new DSSTJacobiansMapper[propagatorBuilders.length], observer);
70 this.propagationType = propagationType;
71 this.stateType = stateType;
72 }
73
74
75 @Override
76 protected DSSTJacobiansMapper configureDerivatives(final Propagator propagator) {
77
78 final String equationName = DSSTBatchLSModel.class.getName() + "-derivatives";
79
80 final DSSTPartialDerivativesEquations partials = new DSSTPartialDerivativesEquations(equationName, (DSSTPropagator) propagator, propagationType);
81
82
83 final SpacecraftState rawState = propagator.getInitialState();
84 final SpacecraftState stateWithDerivatives = partials.setInitialJacobians(rawState);
85 ((DSSTPropagator) propagator).setInitialState(stateWithDerivatives, stateType);
86
87 return partials.getMapper();
88
89 }
90
91
92 @Override
93 protected Orbit configureOrbits(final AbstractJacobiansMapper mapper,
94 final Propagator propagator) {
95
96 final DSSTPropagator dsstPropagator = (DSSTPropagator) propagator;
97
98 final SpacecraftState initial = dsstPropagator.initialIsOsculating() ?
99 DSSTPropagator.computeMeanState(dsstPropagator.getInitialState(), dsstPropagator.getAttitudeProvider(), dsstPropagator.getAllForceModels()) :
100 dsstPropagator.getInitialState();
101
102 ((DSSTJacobiansMapper) mapper).setShortPeriodJacobians(initial);
103 return initial.getOrbit();
104 }
105
106 }